Saturday, February 11, 2012

Constraints are the mother of invention

I suppose the title of this post is rhetorical, because there is no aspect of our existence that is truly unconstrained. But even in a more narrow application of the term constraint to business and technology, innovation feeds more from a limited environment--often severely limited--than one where resources are abundant, knowledge is pre-existent, and capabilities are easily devised. We often blame our inability to innovate on lack of resources, lack of experience, and unforeseen challenges of execution, but these very conditions produce our most profound inventions. And for me personally, it's these conditions that bring out my best. Granted, I may kick and scream during the process, but if I can muster the courage to rise to the occasion and persevere, in retrospect they are the most fulfilling of times.

You may have read the Inc. article about the best definition of an entrepreneur. Having worked with a number of entrepreneurs, the definition rings true with me: "Entrepreneurship is the pursuit of opportunity without regard to resources currently controlled." Over the course of my career, I frequently find myself acquiring, applying, and "controlling" resources to achieve the goals of the entrepreneur's pursuit. In the most constrained environments, we must gain knowledge, devise capabilities, and figure out a way to succeed while the sands of our investors' money slip through the hourglass.  It's this environment where we learn how to experiment, take chances, and challenge our assumptions.  Sometimes this leads to significant breakthroughs.

Looking beyond the world of technology and business, constraint appears to be a necessary ingredient in human creativity. We impose constraints as a way to foster creativity, a way to express rich emotion and feelings with a subset of the full language we have at our disposal.  Traditional Blues has the AAB lyric constraint and three chords played over a 12 bar scale. Poetic verse is often constrained to a specific meter, form or structure.  Haiku is limited to the 5 - 7 - 5.  Maybe we impose these constraints to challenge our imagination and express something new while fixing certain fundamental variables.

An article in Psychology Today states that you are more creative if you don't allow your mind to roam free. That's counter-intuitive to say the least, but research indicates this to be the case. After all, Science Fiction writers describe alien life forms as similarly humanoid with remarkable consistency. The article mentions work presented in the book Creativity from Constraints: The Psychology of Breakthrough, suggesting that certain types of constraints promote novel thinking and innovation.  Without these constraints, we tend to fall back to past examples, and the variability of our creations are limited.  Constraints can rule out specific solutions that have worked before, and foster novel approaches.  

This ties back to business, technology and innovation.  Without a constrained environment, in a mythical world where all possible solutions were available, you will tend to pick an approach with which you're most comfortable or familiar. While this could result in success (assuming the same conditions for success exist with the new and previous situation), it will not result in a breakthrough. I've seen entrepreneurs fail because they apply the same patterns they used successfully in the past to a new challenge. The presence of constraints is no guarantee for creativity, and creativity is no guarantee for success, but those who support and invest in entrepreneurs often use creativity as an indicator of potential success.  They chastise those whose ideas are overly-constrained without realizing that constraint is at the core of creativity.  Alas, there are different kinds of constraints.

As innovators, we must learn to embrace constraints.  We must be cognizant of the constrained environment in which we operate and explore the full range of possibilities within that field of play. Sometimes you only have 17 syllables to express the wonder of a sunset or the crisp air of a winter morning. Sometimes the limitations you feel are crushing your creativity and suppressing your best work are in fact providing you the opportunity of a lifetime.


Friday, September 02, 2011

Old ideas about interactive, distributed apps reimagined in a mobile context

Over ten years ago, my colleagues and I at Kenamea had some ideas about lightweight desktop apps and event-driven communication models that would allow them to interact with other apps over the internet. Here are some of the considerations that shaped our thinking.

  1. HTML and javascript are pretty powerful, and developers who know how to build user interfaces in HTML and manipulate markup using a browser-based scripting language are more plentiful than developers who know how to write server-side code to implement business logic. We wanted to leverage the growing pool of front-end web developers who might be more accessible to the marketing and business functions within organizations funding web development. 
  2. To enable truly interactive applications that communicate with other instances of themselves and other applications/services on the internet, the request/response model of the web is insufficient.  We need a reliable messaging infrastructure that provides event-driven communication (i.e. apps that can send and receive messages asynchronously), but do so in a way compatible with the protocols and scale of the web.
  3. One reason web apps succeed is because they are more-or-less client-agnostic (browser compatibility not withstanding), and issues about version control and updates are virtually non-existent.
  4. Web apps often use a lot of bandwidth re-delivering UI elements that don't change from page to page.  I'm not talking about graphical assets that get cached by the browser, I'm talking about web servers resending page markup containing new data when really only the data has changed.  A more efficient model for interactive apps is to only send new data to the client, and let client-side logic implement how that data is presented in the UI.
  5. To be really useful, networked applications should continue to work, albeit in a limited capacity, when there is no network connection.  Web applications typically fail in this regard.
  6. Particularly in conjunction with the above, and to enable store-and-forward messaging, applications need to have non-trivial local persistence.  An application-scoped local store of key/value pairs can go a long way to building really interesting client-side apps.
Back in the day, we addressed these considerations by building internet-scale messaging infrastructure (to accomodate issues 2, 4 and 5 above), along with a client-side app environment that allowed developers to build interesting apps in HTML+javascript, with access to services that address issues 1, 3, 5 and 6.  Namely, these services included:

  1. A platform-specific framework that runs applications built using HTML and javascript.  Apps have access to javascript objects and events that provide bi-directional messaging services (e.g. send a message to an individual app instance, send a message to a topic to which all app instances listen, receive a message from an app or topic).
  2. A facility for installing, registering, and updating apps.  Once installed, the app instance is registered with the messaging platform so it can send and receive both point-to-point and topic-based messages.  App updates are delivered as system messages, and the client-side framework manages the installation and data migration seamlessly.
  3. App-scoped local store of key/value pairs, accessible via javascript.
  4. Offline functionality—apps within this framework work offline since the HTML, javascript, and other assets associated with the app are stored locally, and the local store is always accessible.  Outbound messages are queued for delivery when connectivity is restored, and inbound messages are queued in the cloud until the app reconnects.
Today, I read a lot of articles that state how HTML5 is revolutionizing mobile app development, because it addresses several of the same concerns we had back in the day.  With the promotion of media objects as first class citizens in the markup, and the corresponding events and methods accessible via javascript, you can build some pretty interesting web apps without using platform-specific plugins.  Also, HTML5 gives you real local storage.  As HTML5 becomes broadly supported in mobile environments, I expect to see more sophisticated mobile apps using these features to implement functionality that was formally implemented using platform-specific compiled code.  

I've seen some mobile app frameworks that allow you to build your app UI and business logic in HTML5 and javascript, then wrap that in a platform-specific (i.e. iOS and Android) container so it behaves like a native mobile app.  This affords the features associated with native apps, such as presence in the app store, stickiness on the mobile desktop, and offline functionality.  It removes the cross-platform burden from the app developer since the UI and logic are implemented in a cross-platform language.  In many ways, this combination of a platform-specific container combined with platform-independent UI and logic is very similar to the framework we built prior to the advent of mobile apps.

I think there's still plenty of room for innovation in this area.  Many of the concerns we had in 1999 about interactive, distributed applications are even more valid in the world of connected mobile devices. There is still a need for services such as:
  • an easily accessible, internet scalable, bandwidth-friendly messaging infrastructure, 
  • a robust client-side app framework that provides store-and-forward messaging, app version management, and offline functionality, 
  • a programming model that promotes bi-directional data exchange between applications and client-side control of presentation (vs. page-oriented request/response).
I can't help but think about how the lessons we learned building a desktop-oriented app framework back then could be applied to the eerily similar mobile app environments of today.

Monday, August 01, 2011

Thoughts on bubbles and cycles

I was reading a post by Om Malik suggesting that our current bubble is about to burst, and it got me thinking about the former bubble and the times we are in today.

The bubble that peaked at the beginning of the millennium was marked by the transition of the web from a technology used to present content to a platform on which applications were built. People began using the web differently--they went from reading and watching to actually doing stuff. Companies emerged that built websites that allowed you to do things like manage your sales prospects and make purchases for digital and physical goods. There was no one single technology breakthrough that enabled this (although you could argue that J2EE and the app server was fundamental), but enough technology existed so a small team of reasonably skilled developers could implement relatively sophisticated web sites and apps. Once the bar was lowered on the true innovation and technical know-how required to launch a web business, the flood gates opened. And boy did it flood! Some of the businesses that emerged were pretty clever, but a lot were just plain stupid. Many had no basis for a sustainable business and relied on the heady buzz around all things web to gain momentum. That buzz fueled (and was fueled by) public and private investors who poured in absurd amounts of money to inflate the bubble. I count as friends a number of people who profited from this, but many more who did not.

During the bubble, I noticed the effect popularization of technology had on the make-up of the industry. People entered the tech arena from the edges, taking advantage of the growing surface area of the expanding sphere that had emerged. Companies where I worked prior to the bubble were made up of people who studied computer science in school and had been technologists their entire careers. Increasingly, I found myself working with people who had moved into technology from other areas, who had no previous tech experience but found themselves managing projects, designing websites, testing software, and promoting the capabilities we implemented.

I don't have any real insight on the web 1.0 bubble burst that you don't already know. Perhaps it was the realization by investors that even in a very optimistic world, many of these businesses were not sustainable. Expectations were beyond unrealistic, and investors made a bee line for the same flood gates through which they came. At the same time, our country was in sudden turmoil and the population in general had doubts about the future and withdrew from speculative investment and spending. When the burst occurred, many of the people that came into the industry from the outside were the first to leave (willfully or not). The icons that represented the era were now the butt of many jokes.

So here we are in a situation that many liken to those days ten years ago. The current bubble, in my estimation, is fueled by a few things. MySpace helped popularize a newish category of website that did a pretty good job of bringing in a population of users that had only used the web previously to shop and do occasional tasks. Social networks became an everyday habit for moms, dads, kids, grandparents and people wanting to hook up tonight. There were technological developments required to sustain this, like the ability to scale data-rich websites to ridiculous numbers of concurrent users, but these were mostly incremental developments rather than true breakthroughs. Many sites discovered their bottlenecks the hard way, and the successful ones quickly figured out how to cope. Cloud services made it easy for minimally-funded startups to build out a presence without any capital investment.

The other development that fueled the current situation is the advent of mobile. Smartphones and high-speed, affordable data plans let everyone interact on social platforms always. This isn't just a convenience, it opens up a whole new modality. Many clever applications of socal+mobile (and location awareness) have emerged, built by small teams of reasonably skilled developers. We are past the point where truly specialized knowledge is required to launch a business capitalizing on these capabilities. There are both clever and stupid ideas out there getting funded, even though experts are quick to point out that the IPO market and valuations pale in comparison to bubble 1.0. So this must be different, right? Investors demand to see revenue and a business model that sustains it, don't they?

The makeup of the industry, while still absorbing people from non-tech backgrounds, is more mature. The first bubble created career opportunities that dried up after the burst, but the underlying infrastructure in education and vocational awareness persists, so the character of the workforce doesn't seem as "green". People now have several years of experience doing jobs that didn't exist prior to bubble 1.0.

I anticipate there will be a peak and a fall of the current bubble. Maybe that time is now. I think that much of the gas of this bubble is the same that inflated the previous one (we are only human), but perhaps it isn't as volatile this time around. The technical underpinnings that helped fuel this round have broad applications, and the effect this technology has had on human behavior is profound. I imagine many businesses will cease when the this bubble deflates, and people I consider friends will be hurt. I trust those with aptitude, skill, and experience will quickly find new avenues for their talents. I hope sufficient real value has been created so even in a trough, new opportunities will arise quickly. I also don't expect this to be the last bubble I see in my career.