At the end of December, you read Andrew’s list of the hottest technologies, tools, and resources to come from 2010. Today, we’re going to look forward, and take a peek at some exciting emerging technologies and trends.
A Word from the Author
The tools and technologies that we, as web developers, work with is in a state of constant flux, much like every other industry. What separates us from the rest is that we have to learn, unlearn and relearn new developments at a much faster rate, much more frequently.
Today, I’d like to talk about a few technologies and trends that I think are going to be quite important in the coming year: a pseudo prediction/wish list/what we’re going to cover this year post of sorts.
The technologies listed below weren’t exactly hatched recently. In fact, some are quite old and have been in use for a while now, in their insular niches. That said, I do feel that this is the year they gain even more mainstream awareness. As a great man once said, An invasion of armies can be resisted, but not an idea whose time has come. Let’s get started!
1. noSQL

Why are people excited about noSQL? And by people, I mean some of the big fishes including Google, Facebook and Twitter. For one, the concept of noSQL has redefined the way we perceive databases and the corresponding interactions.
Sometimes, you simply want to store and have access to your data, with low latency and excellent scalability.
Databases, historically, have almost always been about implementing the relational model and being fully ACID-compliant. If your transactions weren’t ACID, or your database wasn’t relational, people scoffed at you for being a “kiddie” database.
The issue is the relational model isn’t really necessary everywhere. Neither is ACID, though many noSQL implementations enforce some sort of data integrity and consistency. Sometimes, you simply want to store and have access to your data, with low latency and excellent scalability. Applications with massive amounts of read/write operations are an excellent choice.
Another big factor for me is the simplicity it brings to my schema: your data models can now become a lot more sane. I can’t wait to not muck around with my models just to make it fit into the relational model.
Implementations of Interest
noSQL at Facebook

There maybe no better example than Facebook when it comes to how to handle enormous traffic. It’s no surprise that traditional methods of scaling won’t quite work for Facebook.
Now part of the Apache Foundation, Cassandra, a noSQL implementation, was developed in-house to help with searching data. Currently, it powers Facebook’s inbox search.
Facebook also makes use of another noSQL solution, HBase, for its messaging platform.
noSQL at Twitter

Twitter’s reliability used to be, well, infamous. On of the main reasons was that their setup wasn’t really scaling all that well. Twitter now uses a mix of SQL and noSQL to manage their data.
Just like Facebook, Twitter uses a mix of Cassandra and HBase. Cassandra is used for all the front facing applications while HBase is used to data mining, analysis and analytics.
2. Serverside JavaScript
JavaScript is, arguably, the most important language for the next few years — and for good reason. Much of the cruft and idiosyncrasies associated with the language is more due to browser quirks, and less due to the design of the language itself.
It has been satisfied with residing merely in the browser for a long time, however, this trend is changing. Implementations and interest in server side JavaScript has been growing over the past year and I fully expect it to explode even further this year, thanks to the screamingly fast JavaScript engines to run your code on.
To the people questioning the need for JavaScript on the server side, I present you with this single situation, among lots of others.
Whatever your backend language of choice is, you’re ultimately going to come back to JavaScript for constructing the frontend. Wouldn’t it be easier to simply use JavaScript universally?
Technologies of Interest
node.js

node.js makes creating real-time, high performance, scalable applications a cinch. It’s primarily event-driven and runs on V8, the JavaScript engine that powers Chrome and makes it freakishly fast.
It doesn’t spawn a separate thread for each connection like most others. Instead it works through asynchronous operation which significantly minimizes latency. If it has stopped making sense, remember to read a primer on node.js published right here on Nettuts+. We’ll also be covering this topic extensively over the next few months so stay tuned!
3. Easier Hosting, Deployment and Scaling

Bottom line, scaling is a pain.
The rise of as a service businesses have only helped developer tangentially in the past. Most of them were ports of functionality that we required, with the exception of maybe project and bug tracking. Recently, a number of services have opened up that significantly ease up a developer’s life.
Deployment has always been an issue with non-trivial web applications since you need to do more than copy over the files to the server. Scaling, too, has been an issue — not just in bandwidth, but in computing capacity as well. We must setup load balancers, a caching system, maybe even a lightweight server to serve up static content. Bottom line, scaling is a pain. It’s a rather involved activity, especially when you’re strapped for time.
Platforms as a service, as they’re popularly called, remove almost all of the hassle for a developer. Deploying? Merely push to a git repo and everything is handled for you. Expecting a massive rush of traffic and worried whether your application will buckle down? Merely add more nodes or workers to your instance and you’re done.
Services of Interest
Heroku

Heroku is a perfect example of the simplicity services like these can bring to the table. Deploying to my app is really just pushing code to my github repo. Computing capacity and memory, among others, can be dynamically allocated as well. As an added incentive, a lot of noSQL solutions are available as well to be used, including Redis and MongoDB.
Amazon’s Web Services

Amazon Web Services is an umbrella term for a number of awesome services they run. The ones of interest today are:
- Amazon Elastic Compute Cloud [EC2] let’s you create virtual servers that are incredibly scalable. You just need to choose the amount of power you require.
- Amazon Simple Storage Service [S3] provides cheap, reliable web based storage. All Envato sites and marketplaces use S3 almost exclusively to store and serve content.
4. Utility JS Libraries
Even though we have a massive number of JavaScript libraries that abstract away some of the more mundane tasks, like DOM manipulation and AJAX, they leave a lot of functionality untouched.
We saw a number of utility libraries, such as Modernizr that gained immense popularity last year — a sign that developers are always looking for nifty libraries that let them use cutting edge technology whilst saving time. This year should be even. Here are a few tools that might pique your interest.
Libraries of Interest
Head.JS

This library is a true powerhouse. It takes care of loading your scripts in a parallel nature, mimics Modernizr by adding specific classes to your document and much more. Definitely a much watch!
underscore.JS

This is pure utility library that brings a powerful set of utility methods to JavaScript without extending the native types underneath. Similar to how jQuery maps to the $ characters by default, underscore maps to the _ character. Check out the site for a full rundown of the utility functions it contains.
mustache.JS
This is a simple templating library that should make handling data much more simpler. You simply need to create a custom template, map it to your data and run the code. If you’re even the least bit interested, you should check out a quick tip we published a couple of months ago!
5. Better Unit Testing for JavaScript
Testing is an integral, intrinsic part of the software development process.
Unit testing, specifically, is the testing of individual software components.
The difference is that these tests are performed by the developer, since writing tests, in general, requires knowledge of the source.
JavaScript has lagged behind other development platforms when it comes to proper testing. Even now, unit testing is not an oft heard statement among typical JavaScript developers and part of the reason is the lack of proper tools to do so. Here are a few tools that should make it significantly easier for you to test your code:
Tools of Interest
QUnit

Made by the jQuery team and used as the official test suite for the platform, QUnit is a powerful unit testing framework. It can test any generic piece of JavaScript code, even code that needs to be executed inside a JavaScript engine.
FireUnit
FireUnit is implemented as a Firefox extension and requires Firebug. This may be good or bad depending on your perspective. For me, since Firebug already is a big part of my development workflow, this is a boon. FireUnit adds an additional test tab to Firebug through which you can access your tests and results.
JsUnit

JsUnit is an open source testing framework for JavaScript. Inspired by JUnit, it’s written entirely in JavaScript and runs inside your browser. It also includes a platform for automating the execution of tests.
6. Raphael-esque Libraries for Canvas
HTML5 brought us the canvas element which opened up new vistas for us. It provided low level, per pixel control over the drawing area which was unheard of before. Previously, you’d usually have to resort to either rendering an image in the backend and relay it or using a browser plugin.
Canvas is a game changer in that aspect.
The issue here is that it is truly low level. Per pixel control is nice but when you’re trying to create something bigger, you’ll want these details abstracted from you. Kind of like how Raphael abstracts the details from the SVG element. And mind you, SVG is a lot more easier to work with.
Libraries like the one I’m looking for aren’t really limited to merely providing interfaces for shapes and so on. A number of game libraries have even been released which let you work at an ever higher level.
Libraries of Interest
Processing.JS

Processing.JS is an excellent library that provides a high level interface to the canvas element. It’s a JavaScript port of the Processing, a fun, little language to help non-programmers understand programming.
The library completely abstracts you from the initialization and other trivialities of the canvas element and let’s you create incredibly suave content.
Akihabara
Akihabara is an extensive library that let’s you create games rapidly. As expected, it makes use of the canvas element.
It helps you with a large number of tasks including rendering, collisions and input. Even, relatively, esoteric features like z-indexed objects and double buffering* are supported.
* If you understand what this means, you get a cookie!
7. True JavaScript Frameworks
Server side development has it good.
Server side development has it good. You have plenty of choices, regardless of which language you’ve chosen to work with; you can choose anything between a modular pick-your-component frameworks, to all encompassing full stack frameworks, to everything in between.
In the front end though, we’ve had to work with libraries instead of frameworks, even though there is only one language to deal with: JavaScript. DOM manipulation and other assorted functionalities are abstracted away, sure, but when building a complete UI for an application, low level functions like these are but a fraction of your worries.
Usually, you’d have to choose something for your templating needs, UI and widgets, dependency management, DOM manipulation, MVC and other assorted functionalities. A number of frameworks have been slowly gaining momentum that, even though aren’t quite all encompassing, promise a much better front end development experience.
Technologies of Interest
SproutCore

SproutCore is a JavaScript framework, originating from Apple, that lets users create desktop like web applications rapidly. Needless to say, the entire frontend requires only JavaScript.
The framework consists of a number of parts including a widget system to handle different parts of the UI and a key value observing system to wire up each part which significantly reduces the amount of glue code in your application.
One of the most public facing applications of SproutCore is Apple’s MobileMe.
Cappucino

Cappucino, developed by 20North which is now owned by Motorola, takes a completely different approach to such a framework. Cappuccino introduces a focused, small superset of JavaScript called Objective-J.
The platform itself consists of the language itself, Objective-J, and a comprehensive library which is a port of the Cocoa frameworks on OS X.
And That’s a Wrap!
And there we go. I’ve listed seven trends that I’m hoping truly gains mainstream awareness this year. Did I miss anything important? Let us know in the comments. Thank you so much for reading

Hey Sid you missed this one :) http://daverupert.com/2010/09/lettering-js/
Doh! I didn’t read the title, this is web dev trends lol.
Great article, definitely need to try out head.js. I’ve heard good things but have yet to put it into my base framework…
Nice & Interesting Article.
Thank You.
Awesome – looking forward to 2011
very interesting! tnx!
Check out http://easeljs.com/ …. developed by (primarily flash?) guy Grant Skinner. I think it will be widely used this year.
Yep, there are tons of truly exciting libraries out there. I just chose to go with three for the sake of brevity. Look for a full round of such libraries in the near future.
Thank you for reading. :)
For those who want to keep up with what’s happening in NoSQL land, check out http://www.nosqlweekly.com/. NoSQL Weekly is a free weekly newsletter, which features curated news, articles, new releases, tools and libraries, events, jobs etc related to NoSQL.
Awesome Post. Familiar with some, not so much with others. Looks like some awesome tools for front-end dev.
I’d add Microsoft Azure cloud platform to that list, especially considering the mention of the pain of deployment. I find it to be very powerful, and easier to deploy than EC2 because the load balancing is automatically taken care of as you expand / contract resources.
I had a lot of trouble with Azure when I tried it out.. I think .net is just not in my blood
Thanks Siddharth, this is nice window into what we can expect in 2011. It’s exciting year ahead of us.
Definitely agreed. Don’t forget about JavascriptMVC and Backbone.js for other Js MVC framework. :)
Absolutely. In fact, look for an article on JS libraries that you’ll need for a complete web application which will include all these sub categories.
Thanks for reading!
Good article… Even in just the last 12 months building a complex web application in something like Ruby on Rails has become childs play to deploy. I think the next couple of years should be very exciting.
I am not sold on using JavaScript server-side yet.. as I don’t actually enjoy writing in that language. I am more interested to see the ruby community continue to speed ruby up.. one day it should be as fast as running C.. OR to see the python community develop a better MVC framework more like rails than Django currently is.
I can’t see Ruby running as fast as C for obvious reasons but I can definitely see it running fast enough to not matter.
And yep, agree with the Django stance. There was a time when Django was easily superior to Rails. Now, not so much.
I was more figuratively talking about ruby running as fast as C.. The language needs to continue to evolve to run as fast as its ever going to.
I like a lot of things about python, but every time I consider using Django I remember I can do that exact thing in Rails faster/easier. Its nice to see Heroku doing so well.. and making my life easier. I can remember having a lot of trouble deploying to heroku when it was in private beta.. but today its so easy I push code to heroku every day. It makes transfering a wordpress site from development to production look hard!
Hi!
The screenshot under “Akihabara” is an early version of Onslaught! Arena, a game we launched recently: http://www.lostdecadegames.com/onslaught_arena
Interestingly we didn’t build it on Akihabara, but thanks for posting our screenshot regardless :)
Sorry, my bad. I mistook it for another game. Either way, I’m just going to add a link back to you. :)
Nice game, I tried the demo. The only comment I might have is, I’m from Belgium Europe and we type on azerty keyboards here and the running controls are all messed up for me…
OT: I would like to see some more info on point 3. Also Content Delivery Networks and such. Yslow is always complaining about that, I don’t really know how to take care of it.
Thanks for the article. I am looking forward to testing out Akihabara. Years ago, I used YoYo game development software which also made game creation easy, though, it required their player installed for users to play the games.
Hoping this is similar!
Thanks!
I want my cookie!
Trend? lol!
You know, if you had actually expanded on that comment, we’d have been able to indulge in some witty, intellectual banter. Now?
Meh. :)
Oh no, not that NoSQL thing again. I have nothing against NoSQL per se – it makes sense to use it if you’re Twitter – but I do have a problem with the hype surrounding it.
The reason for the hype is basically the flawed idea that relational databases such as MySQL, PostgreSQL, and Microsoft SQL Server don’t scale very well. And that is simply not true: Google AdWords uses MySQL. Facebook (whose pages usually aren’t cached and so must retrieve data from the database very often) uses MySQL. A multitude of other high-traffic sites use MySQL.
Granted, Facebook is trying to switch to a NoSQL database now. But keep in mind that Facebook has 500 million users and that the other big players who use NoSQL are sites that have an absolutely extreme amount of dynamic page views (Twitter, e.g.).
The point here is this: NoSQL lacks a lot of features that relational databases such as MySQL have, so you should only use it if – and only if – you have an obscene amount of page views like Twitter has. From reading tech blogs I get the idea that the majority of current NoSQL users are tiny startups that think they’re gonna be bigger than Facebook. If they start out with MySQL and don’t know how to configure it properly for high traffic, they get the false idea that MySQL doesn’t scale, and then they switch to NoSQL which lacks features, is less stable, and has a smaller community than MySQL, PostgreSQL, etc. What they should have done is read a couple of books on how to configure MySQL for high traffic.
Bottom line: Unless you’re Twitter, stick with relational databases. The notable exception is if you use Google App Engine where you don’t have a choice in the matter: You’re stuck with its (currently very unstable) NoSQL database.
There’s also the added usefull of a much more simpler scheme. You don’t have to get locked in. This may or may not be a feature, from your perspective though. :)
With regards to the quote above: “What they should have done is read a couple of books on how to configure MySQL for high traffic.”
Do you have any recommendations?
Thanks,
Ian
Can’t remember the book I read on that subject, but here are a couple of books that might be useful: http://goo.gl/RJl4O (Amazon).
As an alternative to mustache.js I recommend the jQuery Templates plugin which is now an official part of jQuery.
http://api.jquery.com/category/plugins/templates/
I can’t say whether it’s better than mustache.js (they seem pretty similar), but since most people already use jQuery, it’s only a small step to include the jQuery Templates plugin in your code.
It is also getting added to the jQuery core so as of the next version you will not have to add it as a plugin.
Thanks for such great information..
Recently i tried to implement the nodejs in project.
Nice Article i am impress here…………..
Interesting analysis, I agree that unit testing is big and should be an interesting field this year. However, I wouldn’t put JSUnit as one of my Tools of Interest for it. JSUnit is an old project that is no longer actively maintained, and there are several other xUnit frameworks that are being actively maintained and developed (such as QUnit and FireUnit which you mentioned).
Instead, I would include a non-xUnit style tool such as Jasmine. There has been a lot of discussion lately around BDD, and Jasmine is a tool that embraces both the practice and the nomenclature.
After evaluating many frameworks, including QUnit, FireUnit, Dojo DOH, and some others, I recently started using Jasmine for unit testing my JS applications and have been very pleased with the results.
I saw a presentation on NoSQL (Not only SQL) last year and it was one of the most interesting/confusing concepts to date. Fantastic at the same time though – it basically saved twitter when their standard database couldn’t handle the load..!
Please let us have more about data structures.
I cannot wait to try some of these the noSQL seems promising!
There are a plethora of server-side languages that do their jobs really well. JS on the server would likely be underplayed because it would be so late to the game and the language itself “does” have many improper features because it wasn’t well tested as it was being crafted.
I think JS is best used where it excels, no language is designed to do everything. A language is designed to handle a specific suite of problems.
For me, I’m interested in PHP/Python/Ruby for ss development.
You’re absolutely right. node.js gets the current attention mainly because 1) it’s new, and so it’s easy to create a hype around it, and 2) because it’s JavaScript. JavaScript isn’t a particularly nice language compared to, say, Python, but what it has is a lot of frontend developers who maybe aren’t that skilled in serverside languages and so would like to use JS on the backend.
http://nodejs.org/#about suggests that node.js is somehow more scalable than current web servers, and that’s laughable, given that Apache, nginx, etc. power the biggest sites in the world, are stable pieces of software with years behind them, and have a large community.
Also, normal webservers don’t require me to write code to handle the actual HTTP server process. With normal servers you put a file – be it static or dynamic – in a folder, and the web server takes care of serving that content to the user.
That doesn’t mean that people shouldn’t use node.js. It just means that people should recognize it for what it is: Something fun to play around with – a new way of doing what you already do with normal web browsers. But to pretend that node.js is somehow more scalable (particularly at this point where it’s unstable software) is laughable.
node.js *is* more scalable. I’m not sure how you don’t see that.
@Siddharth: “node.js *is* more scalable. I’m not sure how you don’t see that.”
All language preferences aside, if you were about to build a serious business with paying customers in the tens of thousands, would you want to base it on a piece of alpha software such as node.js rather than proven software such as Apache?
I love playing with new technology, but more than a decade in this business has taught me to distinguish between things that are hyped, but as of yet not-so-usable from a business standpoint (this includes node.js, NoSQL (unless you’re as big as Twitter), and Google App Engine) and things that seem a bit “old” and boring, but are usuable and stable.
There’s a fine line between alpha software and unusable software. True, node.js is new and shiny but that’s not the reason people are fawning about it. Trust me, it really isn’t.
I do agree with your bit from a business perspective. It’s not rigorously tested, yet, so I’d be a little trepidatious. I would absolutely choose noSQL today. The current offerings, mongoDB and Cassandra specifically, are extremely mature, stable offerings.
Wow! it’s really an exciting trend for 2011. noSQL is gonna be exciting thing to learn and majority are all javascript frameworks.
Very interesting article!
I just would like to add “mobile web” as an other really exciting point for 2011.
Especially because the Web is facing big competitors with native application, and mobile is inevitable now.
wow! thanks for another great blog post!
I have bookmarked this blog. …
Great work! Keep adding more posts as you have time!
Where’s Backbone.js ? (From the same people of Underscore).
I wish somebody would write an expanded tutorial about it…
Hmm… I thought that Twitter used their own FlockDB a simplified more streamlined child of the neo4j project.
Seriously? That’s it? The 2011 trends are dev trends? Hmmmm……was expecting much more
The title said web development trends. I can’t see how much more transparent I could have been. :)
Another noteworthy JavaScript and HTML5 mobile framework is Sencha Touch
http://www.sencha.com/products/touch/
Thanks for this great list. Look forward to spending a few good days getting catching up with these trends.
what about extjs?
I’d add CoffeeScript: http://jashkenas.github.com/coffee-script/
It’s like GWT, but compiles Python-like code into fast JavaScript. A must-watch for Python back-end devs.
If you’re interested, we did an intro to CoffeeScript article which you can read at http://net.tutsplus.com/tutorials/javascript-ajax/rocking-out-with-coffeescript/
how do you leave out the HTML5 Boilerplate?
Nice article.
But i don’t really like the fact that you mentionned two mac-ish tools (Cappucinno and SproutCore) instead of grouping them together and give more emphasis to more robust and already recognized tools like jQuery UI or even more powerful ExtJS.
Neither are Mac-specific. Sure, their default widgets resemble those of OS X but I don’t think they cater to that specific OS. You’re more than free to whip up a new skin.
Also, jQuery UI and SproutCore don’t even cater to the same market. jQ UI is just a set of widgets while SproutCore is almost a full stack front end framework. Apples and oranges, mate.
blonde girls != blonde beers
Mac-ish != Mac-specific
Thanks
Good information.
I should preview all. I had headache. haha
If you don’t have a degree in computer science (i.e. I don’t), ACID stands for:
* Atomicity,
* Consistency,
* Isolation,
* Durability
Source: http://en.wikipedia.org/wiki/ACID
This year promises great advances in web development. Now is find time to learn all this.
noSQL maybe is one real interesting trend for db, but not very sure. just watching.
Dojo Tookit was left out thats obviously another powerful framework
Erm, twitter uses a flatfile sollution combined with a bittorrent-based implementation to “transport” data across their network… constantly updating and sharing information between servers.
I had the scalability pains just this past week. My web service The Easy API – http://theeasyapi.com – is now doing over 250,000 requests a day. Initially I had a 256MB Mosso server and our clients just killed that little box. I had to upgrade the server and do a lot of code changes to make Apache and MySQL work more efficiently. The next phase of our infrastructure will be to look into Cassandra and other techniques to make the server work smarter. For the time being though we are putting through a lot of requests for some of the top companies on the net and we are just grateful to be given the opportunity to expand our offerings. Scaling is a pain, but in our case it was a good pain. In less than a year we went from around 1,000 requests a month to 250,000 a day.
Amazing!
Ok, let me make sure I got this right: Javacript, Javascript….bla bla bla…Javascript. Cool.
1 technology that might be worth adding, also by 280 North is Atlas.
280atlas.com
Although Amazon web services is good for scalability, its a little pricey for me when starting out than shared hosting due to being charged for each second of use.
Very good collection of things to be looking forward to from this.
I had never seen Akihabara before, but I’m bookmarking it to look into a bit. The idea of fast, easy game development in a browser is something that is of interest to me.