A new year is here, and it's time for that annual post. A lot happened in 2014 for me, and I suspect this year will be equally busy. I'll take a quick look back at my 2014 goals for the blog, and touch on whats to come.

I've recently taken a liking to Go, and after an evening cruising through the Go Tour and various best practice docs, I wanted to put my knowledge to the test. Since web development is where I'm most at home, I decided to seek out a web framework. One of the first to catch my eye was Revel, which aims to be the "batteries included" web framework for Go. Being a fan of Python (the batteries included language), this felt unusually welcoming. In noticing that Revel has websocket support out of the box, I imagined this could provide an opportunity to do something interesting. However, anyone whose worked with raw websocket messaging knows it can get messy fast. In order to do anything substantial you'll find yourself re-creating similar features found in Socketio–which conveniently enough is made available via the go-socketio project. The final part of this puzzle is the focus of this month's brief blog post: combining revel and socketio into the same project, without running separate servers.

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.