As we all know, it is Steve Jobs’ world and we just live in it. On 6th June he announced the iCloud and the death of the “PC centric model”, moving us or rather upgrading his ardent followers to the “Cloud model”. This is an end of a decade long strategy at Apple to create consumer devices and services where iTunes on Mac acts like a hub - or the point of contact for all your electronic devices like iPods, Cameras etc. In the new cloud model, the Apple iCloud will act as the hub for all your other devices. There is indeed some validity to this model, although it remains to be seen how successful this strategy will play out in the long run. I certainly believe that the technology world has significantly changed to warrant calling this a Post-PC era, and that was primarily driven by innovation from Apple, though one could argue that there were already significant shifts underway (like the growth of mobile data, lowering component costs etc) that Apple took advantage of.
Apple has a lot to gain from moving to this model, since all of the current crop of popular Post-PC devices are developed by them (iPhone and iPad), and this strategy would lock in customers on their platform, creating future exit barriers for customers who wish discontinue using the Apple platform. This ensures that the gains made in this wave of technological change will remain with Apple for a long time to come. This radical turn in how people actually use technology, should likewise demand developers to rethink their toolkits and re-look at how they create services.
One helpful way to think about technology in this “Post-PC era” is that each single piece of technology does not bring about transformative and disruptive change by and in itself, but contributes to the whole, and through the whole there comes a significant shift in the way we work/play/live (philosophers tend to call it “moments” in a “rhizome”). It could be described as an entire web of different technologies, that is connected to each other and contributes to each other, and these working together sustains the entire ecosystem.
These changes in our behaviour and technology suggest that the tools that we have used to develop services for the past decade - like the LAMP tools (Linux, Apache, MySQL, Perl, PHP, Python) may not be enough to develop new services. There are all sorts of interesting technologies introduced in the last few years, that developers need to investigate.
When I refer to “technology” I do not mean one tool or programming language or platform, but a cluster of different tools that make that domain possible. For example, PHP is a programming language that enables the technological category of dynamic web pages. I’m more interested in this category as a whole than the individual programming language or tool. PHP could have been the best source for creating dynamic web pages back in the early 2000s, but there were several offshoots in this domain that continued to challenge each other like perl-cgi, python etc.
So what are the big changes that have happened and new trends that have cropped up in the past few years that developers need to think about?
1. Increasing Consumption Channels - Desktop Applications, Web Applications, Mobile Web Applications, Mobile Applications, Tablet Applications, Browser Apps
Supported by three converging trends - increasing sophistication of devices, commodification of smartphones and related components, and the growth of mobile data (3G enhancements, development of LTE & changing mobile data consumption patterns). We as likely to consume any web service, on our desktop, our mobile or tablet almost as equally. Which means that we cannot simply develop a web service and forget about those who would visit us through our mobile channel.
The new tools are the iOS SDK, Android SDK, & HTML5.
2. The Social - crowd fueled growth of services
Social networks like Facebook & Twitter continues to impact how we interact with services online. It’s interesting that both companies refuse to call themselves a social network; Facebook calls itself a social graph & twitter calls itself a messaging platform. Yet, both of these services have created enormous virtual communities, that are woven together so closely that “word of mouth” messages could spread over the entire network in a matter of days or sometimes hours. Marketers have known for quite sometime that “word of mouth” marketing as one of the best forms of marketing. Indeed, nothing could beat a friend you trust, telling you that he or she loves a service. Being able to utilize APIs provided by these social platforms effectively can give you vital, viral edge over your competitors - just ask Zynga.
The new tools are the Facebook API, Twitter API and knowing how to use notifications, messages, wall posts, tweets and retweets to drive new user acquisition.
3. Rapid Growth of Services - requiring scalable technologies
A good example of this is Empires & Allies by Zynga, which had 39 million users in 25 days. I do not know of any other product or service (offline or online) that went from 0 to 39 million users in less than a month. Highly scalable programming languages and frameworks are required to develop services that challenge these services. It is very easy to create a Facebook app, but the real challenge is to keep the application performing as well as when it had 10 users, as when it gets to 10 million in a few short days - or you could end up losing your entire base in that same period because the product was sub par.
The new tool is Node.js - highly efficient, simple to program and easy to scale. Node.js is an event driven programming language used to create mostly web services, performs incredibly well against standard httpd servers like Apache. Scala is another programming language aimed at scalable services, that too is growing in popularity - Twitter said that they will be moving their entire backed to Scala eventually.
4. Rich Client Side Interfaces
The new tools are jQuery and frameworks like Ext js (interesting this came out of code that was originally created by Yahoo as a challenger to the Google framework).
5. The NoSQL movement
A fairly recent phenomenon that is growing in strength, which basically argues that the traditional databases have way too much overhead for most applications, and that the strict row-column-table format can no longer be the only format available to developers. Some of the databases are JSON document stores, that are hierarchical in nature. Others are pure hash-key stores. All of these seem fairly simple compared to the bells and whistles available with a database like Oracle (transactions, ACID, UNIONS, JOINS oh my). But their strength lies in other functions, like speed, scalability, auto-sharding etc. For example, Redis is a simple hash-key store, that stores its entire database in RAM providing super speed responses - excellent for indexes, caching, or any application with predictable size databases. Foursquare famously uses MongoDB to hold all of its location based check in data.
The new tools are CouchDB, MongoDB, Redis etc
6. The Open Cloud
Mark Suster makes a difference between Cloud service providers like Apple and Amazon. He describes Apple’s cloud services (and others like Salesforce) as a “Platform Cloud” where they sell services which can be built upon by 3rd party developers, but the cloud infrastructure is not open to developers. He contrasts this with “Open Clouds” like Amazon’s AWS and Rackspace where cloud infrastructure is available to developers to build on - and these are the cloud services that are providing so many new startups the essential infrastructure for their applications at a very affordable price. If your business model allows, you can keep your entire infrastructure on the cloud indefinitely without incurring any colocation costs - services like DropBox is built on this model. Amazon EC2 was launched in 2006, but it was fairly recently that they’ve picked up steam (partly with the introduction of several related services like Cloudfront and Route 53, and better pricing like the Free tier on AWS).
The new platforms are AWS, Rackspace and Heroku. Heroku is a special case, as it does not provide pure virtual servers ( as AWS and Rackspace ) rather provides a programming platform (either Ruby on Rails or Node.js currently) that you could build on. This is similar to Google App Engine and Microsoft Azure, but much more popular because it hosts Ruby on Rails apps.
7. Big Data
Big Data refers to the recent trend in technology clustered around technologies that process huge amounts of data - sometimes several hundreds of terabytes in size. These data come from mostly analytics and financial processors that generate usage data on how people use services or conduct transactions. The reduction of computing prices and with the availability of cloud services, have enabled ordinary startups to process huge data blocks, which could not have been simply possible before. Mostly used in advertising, financial modeling, and processing log files.
The new tools are Google’s MapReduce, and Apache’s Hadoop, both of which are distributed & parallel data processors. A famous example of this is The New York Times who used 100 Amazon EC2 instances running Hadoop to process 4TB of raw TIFF images to create 11 million pdf files in 24 hours, for the cost of just $240.
In conclusion, if you are developer you may want to look at existing toolset and ask yourself - is the LAMP toolset enough? Or could Heroku, Node.js, MongoDB serve to create a better solution for your problem?
Coincidently, while I was writing this article GigaOM did two pieces, one on Node.js and another on Hadoop which you might find interesting.