ECMAScript 6–otherwise known as "Harmony"–packs a plethora of new exciting features for Javascript. Several browsers have been sneaking in these additions under the hood for quite some time as specifications have reached consensus. Most of these language updates aren't anything unique to Javascript–in fact, most of the syntax and APIs closely mirror other mature languages and preprocessors like Python, Ruby, and CoffeeScript. The most impressive support so far comes from Firefox, whose Javascript engine SpiderMonkey is leaps and bounds ahead of the competition. In this post we'll benchmark the Harmony-way, and the "old way" with just a handful of these new language additions.

Javascript development has become increasingly complex and has grown into areas these past few years that many never would have predicted. It's racing to become the language for web application development, whether it be client or server side. What some once considered slow and lacking in features is now explosive and frequently evolving. Much of this success is thanks to its pivotal position in the performance marketing arena of well funded browser vendors. Unlike other programming languages who have only one interested party and investor, Javascript has many. However, with growth has come the demand for tools to automate common tasks such as compiling, testing, minifying, packaging, and much more. Though several tools have emerged to fill this hole, we'll be taking a closer look at gulp.js–a simple yet powerful stream driven task runner.

The gevent project has allowed us to transparently bolt on asynchronous functionality to otherwise synchronous python WSGI based web frameworks and servers. However, piecing together this puzzle for yourself may prove less than convenient as libraries and tutorials remain incomplete, skipping over many pertinent details. To remedy this confusion we'll put together a starter project combining gevent, django and socket.io to build a simple asynchronous application, pausing along the journey to discuss the relevant details. But first we'll detour to discuss event loops, in particular how gevent's implementation runs.

There was a time when Python's various virtualization tools were enough to fit my needs. However, as I continued to build increasingly complex applications which relied on a variety of other system services, I started to notice moving from project to project was difficult. Each project required unique service configurations, and moving between them was a headache. What I needed was a way to virtualize the entire system, which is when I turned to Vagrant. After using Vagrant for the past few years, I've developed a simple template that helps me spin up new Django environments quickly.

Data processing is a common task in development which can often be solved through processing pipelines. Like the name implies, a pipeline is made up of a series of pipes where the output type of one pipe is the input type for its adjacent pipe. A simple, light weight, and powerful language construct for building pipes are coroutines, which can suspend and resume operation while maintaining state. If you're developing in a language with native coroutine support—like Python—then you can put that scaffolding to work developing the processing pipeline of your dreams. However, if you're not fortunate enough to have access to a native coroutine construct, they still serve as a great source for inspiration when developing your own solution.