Back to blog

Year in Review

It may have been 15 months since I last touched this blog, but that's the result of hard work as opposed to extreme laziness. Here's a brief overview of everything I've done in 2017.

Web Audio API Mini-Course

Last year, I published a blog entry about a 5-episode series on the Web Audio API that I was authoring for SitePoint. After gradually producing new episodes and ultimately reworking it into a short course with the editing team, it was released a few months ago to a handful of positive reviews. It's only available to Premium customers, but there are some deals that one may find enticing.


I've continued to write various tutorials and ramblings this year.

Learning JavaScript Test-Driven Development by Example

I wrote a tutorial covering Test-Driven Development in JavaScript that was published by SitePoint. It demonstrates how to use TDD in the context of implementing and refactoring a HTML form validator.

What I’ve Learned Over 5 Years as a Software Developer

July of this year marked the 5-year anniversary of the beginning of my commercial software engineering career, so I summarised my key takeaways thus far.

Getting Into Software Development

I received a LinkedIn message asking how one can pursue software development as a career, and decided to pen an open response. It went somewhat viral.


At the beginning of this year, I set myself the goal of giving a talk at a meetup; I ended up giving two.

ECMAScript Proxies in Node.js

Capture of ECMAScript Proxies video

I first encountered the Proxy API when developing a visualisation tool for the Web Audio API; it's currently residing in the projects graveyard, but I do want to ressurect it at some point. I thought it was a powerful capability that could be applied to a variety of scenarios and discussed some that were specific to Node.js. The talk took place at The JS Roundabout.

Implementing a Worker Queue using Child Processes

Capture of ECMAScript Proxies video

The concept of offloading work to additional Node.js processes (read: clustering) is nothing new, and yet it isn't commonly employed (due to either pragmatic reasoning or lack of prioritisation.) This was initially brought to my attention at NET-A-PORTER, but it unfortunately didn't progress past an initial investigation by a colleague. I nonetheless applied these learnings to a new library and captured some benchmarks, discussing my findings and demonstrating substantial performance improvements. I was hosted by the London Node.js Meetup that's run by YLD, the consultancy through which I developed for Trainline. They're a smart bunch working on some interesting projects; check them out!


I spent most of this year volunteering at CodeYourFuture, an initiative that teaches refugees how to code in preparation for securing employment in a software engineering role. It was an absolute pleasure to give back after having focused on myself and my own development; I primarily concentrated on leading the database module.

Open-Source Projects

Between all of this, I somehow found the time to contribute to and author some open-source projects.


At the time of writing, Request is arguably still the most popular HTTP client abstraction for Node.js. I contributed a small change that provided a shorthand method for making OPTIONS requests.

React Animation Frame

React Animation Frame is a React higher-order component that invokes a callback in a wrapped component via requestAnimationFrame. I created this as a proof-of-concept, but its moderate popularity resulted in further development and contributions from other GitHub users.

Maze Generator

In a bid to improve my algorithmic capability, I programmed a real-time maze generator using the depth-first search algorithim. I highly enjoyed this project and have an itch to create similar tidbits.

GitHub Autoresponder

GitHub Autoresponder is an ASP.NET Core webhook that automatically responds to issues and pull requests opened against any configured GitHub repositories. The rationale for this was to handle potential interactions with my projects while I am travelling.

Reason VM

I spent the beginning of December writing a virtual machine and accompanying assembly language with Reason, a new language from Facebook based upon JavaScript and OCaml. It's still a work in progress using a young language, but I've wanted to tackle this for a long time and I'm covering a lot of low-level areas of interest.

A final key highlight of 2017 is that I left London. I adore the city but detest its crowded, expensive, and busy nature. I plan to spend the beginning of 2018 travelling around Asia before relocating to Manchester to be closer to my origins.

I wish you all a happy and healthy 2018!