iToto's Blog

A Montreal based full-stack web developer who loves learning and trying out new things. This blog is my attempt to document my work as well as a place to discuss ideas or topics that I find interesting. Feel free to follow me on linked social networks.

The Evolution of Web Applications

I have been developing web sites/apps for almost a decade now. The thing I love most about web development is that it's universal. The majority of web applications are supported on almost any platform. In a world where people are more openly using their platform of choice, this is a huge advantage. It ultimately allows us to have one code base that be executed on any platform. This is the general idea behind things like PhoneGap. All a web app needs to run is a decent and recent browser.

The Modern Web Application

Web applications have come a long way in recent years. In the beginning, applications only had interface with one client - the web client. This meant that developers only handling web requests that came from the views they developed (usually in the same framework). These days however, it's all about applications interfacing with other applications. And with the addition of mobile, web applications are more in demand as ever!

To adapt to this change, web applications are now broken up into two parts: an API and a Web Client. This modularization exposes a generic server-side application that can essentially communicate with any client-side application. I call this a service/client model. When I first started to develop with this model, I began to appreciate web applications a whole lot more. These days, if I'm making a web application, I try my best to fit the application in the service/client model.

The Move To JavaScript

Most of the web applications that I have written have been in PHP with frameworks like CakePHP, CodeIgniter and Laravel 4. The issue with these frameworks is that while the server-side scripting is all in PHP, the client-side scripting is done in JavaScript. This forces developers to either learn both languages, or leave the JS part to developers that are stronger in it (which is where the front-end/back-end developer division starts). I personally believe that any good web application developer should be able to work in both.

What would be great is if web applications used the same language throughout the stack. Well, if you're a JS developer, you're in luck!

With a server side application running on node.js and client-side applications running in frameworks such as backbone or angular you can now switch between back-end and front-end development without changing languages. Furthermore, if you use MongoDB as your data store, you can now have a full stack running on JS!

On top of that, node also introduced something else to web applications that wasn't really possible before (or at least not as easily achieved) Web Sockets! This allows for full duplex communication between the clients and server (no more polling!). Web sockets takes web applications to a whole new level. With it, it's now possible for clients to get updates in real time.

To further on this, I came across Meteor - which essentially is a web application platform that allows real-time communication between clients and the server. When I saw this, it furthered my belief that this is the future of web applications. The age of clients polling the web server for updates will soon be a thing of the past.

Another example of this is emberjs. Man, there are so many new JavaScript platforms it's a little overwhelming lol.

Further Reading

This blog post goes through the evolution of web applications as I tried to depict in this blog post.