Only Real-Time will Remain Standing

Saturday, 21 November 2015

The Internet has changed tremendously over the past few years. What started off as a platform to share research has become the hub of communication, commerce and entertainment. However, we are at the verge of the next stage in the evolution of web applications: the normalization of real-time applications.

This transition will not only see real-time web applications become ubiquitous but rather, and more fundamentally, become the de-facto standard for a web application. This eventual change is a result of a myriad of things, but mostly as a result of increased computing power, faster and cheaper storage as well as javascript becoming ridiculously more powerful.

There have been dramatic changes in technology in order for change to happen. With the advent of SSDs and multi-core processors as well as architectural shift towards distributed systems, we suddenly have a lot more processing power at our disposal. These changes did not happen solely because we wanted to build real-time applications but rather, they arose out of a need to scale our sites to monolithic proportions.

As such, consequences will be dire for languages, frameworks and implementations that do not have first-class support for creating asynchronous or concurrent applications. Many will claim that non-real time web applications will survuive, but they will survuive the way that static html pages (with little to no styling) do. In other words, they will become artifacts of a bygone era.

The underlying technology has become powerful enough to support this, but the rise of modern javascript libraries such as react, angular and others will only catalyze the eventual rise and dominance of such applications. RESTful web services are merely a precursor to full blown sites running mostly using websockets. In other words, we are in for a lot more single page applications.

Language-wise, golang and scala will become much more popular than they already are.[1] Languages like Python and Ruby will no longer remain in the positions they currently hold until and unless they get their acts together to support this new paradigm or find another use case entirely.[2] Although both Python and Ruby have their asynchronous frameworks and/or libraries, they are not powerful enough to face off against go, scala and nodejs as they do not have an implementation fast enough to compete with the likes of go, which has concurrency primitives and Scala which has many libraries for paralell code execution.

But languages alone will not face the consequences of this change; databases will need to evolve as well. One example of a database built solely for real-time applications is rethinkdb, which already has many adherents. Rethinkdb started off as a MySQL engine, but has evolved to become an independent database in and of itself, touting features like atomic changfeeds in its latest release.

So, when trying to master language, framework or database, make sure to take into consideration the eventual rise of real-time applications and do your best to avoid languages, frameworks and databases that do not support this new paradigm. Otherwise, the skills that you're building might eventually have very little value in the near future.

[1]If you're asking why javascript isn't on that list, that's because its not possible for javascript to get more popular than it already is.
[2]Python has already found a good niche in the realm of education and data-science, so I feel that it will still remain quite relevant or even as popular as it is now in the years ahead simply because data is blowing up in everyone's face.