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
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
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
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
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
Amazon’s Web Services
- 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
underscore.JS
$
characters by default, underscore maps to the _
character. Check out the site for a full rundown of the utility functions it contains.mustache.JS
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
FireUnit
JsUnit
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
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
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
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.
0 comments:
Post a Comment