2015 in Review

I've never written an annual review before, but because this year has been a turnaround year for me, and because I've been inspired by Chad's writing, now seems like a good time to start.

Cool Things

In February, First Play Sheffield raised £500 for Special Effect by taking part in GameBlast, a twenty-four hour videogame marathon. I almost completed a full run of Ocarina of Time.

My album of the year and film of the year are both space-related, being The Race for Space and The Martian. Both are love letters to the golden age of space exploration and capture all of the drama and euphoria.

I starting diving lessons at Ponds Forge. It was a hobby that I'd dipped my toe into when I was young, and I have always wanted to take it seriously. Diving is unique; the excitement and focus shakes a difficult week of work out of you, and it's the best thing that has happened to me in a long time.

The Lead Experiment

I've been trying out the lead developer role in 2014 and 2015. I've helmed two projects, I'm very proud to have guided them to completion and to have worked such talented, hard working people.

I've enjoyed many of the challenges that the lead position brings. We replaced a clumsy desktop / mobile site with a single responsive site, simplifying the technology while introducing a crisp, modern design. We also introduced Sass, Grunt, Patternlab and SVG graphics. The key to the success of the project was a close relationship between designers and developers, involving both in planning meetings and pairing up to make sure the design worked as well as it looked.

Staying on top of such large changes with a geographically divided team was hard work, and although planning everything was an interesting experience, I regretted spending such a long time away from programming. I was very unhappy with the direction my career was taking, and losing out in several interviews for development jobs I wanted very much because of a lack of recent experience hurt.

Back to the Old Ways

I left behind many good friends at Inviqa and took a full-time Javascript role at Sky Betting and Gaming. I've since been working on a cutting-edge React app, with lots of new ideas such as Flux, functional programming and immutable data structures. The last six months have made me realise how rusty I'd become, and how much I enjoyed writing code again.

I've also had two pull requests merged into Ghost, and I'm working on another for Chrome DevTools. The warmth these communities have shown me has convinced me to increase participation in community development in 2016. This will be at the expense of solo efforts like Parker, but I think I will be a lot happier being part of something bigger.

Part of Something Big

The highlight of 2015 has been visiting and speaking at some amazing events (in rough chronological order):

  • Leeds JS*
  • Sheffield JS*
  • Scotland JS*
  • Up Front
  • Manchester JS*
  • Manchester Girl Geeks Barcamp **
  • McrFRED*
  • Reject JS **
  • JS Conf EU
  • CSS Conf EU
  • Frontend London*

* Speaking ** Speaking (lightning talk)

The community continues to be the most fulfilling thing about being a developer. There are many cool people out there who are doing some incredible work. It makes me proud to have spoken at some of those events.

My hope for 2016 is to write more articles, write more talks, and write more pull requests.

Merry Christmas, and Happy New Year.

A New Website

Since last year, I have been taking a keen interest in Ghost, the new blogging platform built on Node.JS. I've been fortunate to contribute to the project, and I'm planning on continuing to donate some of my time and experience.

Migrating my website to Ghost is a great way of getting to know it a bit better, as well as providing an opportunity to write extensions and supporting tools.

At the same time, an audit of my old website showed it was significantly behind-the-times. An early attempt at building a high-dpi design did not go as well as planned. Here are the figures:

Total requests: 18
Total requests size: 1.6MB
Time to load (fiber): 582ms

Ouch. Not good.

Since then, I've learned how great SVGs are to work with, so I decided a ground-up redesign with Adobe Illustrator was necessary.


Smaller filesizes and great looking images on high-dpi displays make SVGs a good choice for developers.

More than this, I found Adobe Illustrator a surprisingly good tool for creating graphics for the web. Vector graphics packages are good at creating the clean lines and bold shapes that are common on the web. Being able to adjust vector shapes is really useful when tweaking and optimising designs, which is an important part of designing great web sites.

Data URI Images

Embedding images into stylesheets reduces the number of HTTP requests, meaning faster loading sites. The smaller size of SVG images means embedding them inside stylesheets places a smaller burden on their overall filesize.

I've also chosen to make the main heading an SVG image instead of adding an extra request to a web font for just a single element.

Responsive Web Design

I've paid extra-special attention to how the design responds to mobile devices. On medium devices, the decoration becomes static to make better use of the space. On mobiles, the decorative elements are hidden and the content and typography takes precedence.

I've been using Instapaper to save articles for later reading, and love the focused reading experience it gives. It was this experience I wanted to give all readers of my site on mobiles.


Ghost makes a change from my previous platform of choice. I liked the simplicity of Jekyll, particularly its support for generating pages from Markdown source files.

My choice of Ghost is primarily made to support my contributions to the platform, but its support for Markdown authoring leaves the door open for importing content from files or services in the future.


Even after all of this, a significant effort has been made to completely re-platform my site.

I decided to use Ansible to provision a Digital Ocean droplet. Using automated provisioning gives a useful interface for making incremental changes to your setup, which is especially useful when you have a lot to learn about devops like I have.

I'm using the combination of CentOS and nginx for the base OS and web server. I've been working with both for four years, and both have proven to be dependable and easy to work with for those with limited time to spend.


Here's what impact the improvements have made to the performance:

Total requests: 8
Total requests size: 109KB
Time to load (fiber): 445ms


I'm pleased with the improvement in performance, and happy to finally put the site to work. The re-platforming took longer than expected but paid off with a set of Ansible playbooks I can re-use and build on. Deciding when a project is done is always a problem, and this site is not done. But it is ready, and I am pleased to show not only a website that looks good but also works well.

Should disabling JavaScript be an option in the UI?

In its latest release of its web browser, Firefox 23, Mozilla has removed the option to disable JavaScript from the user interface. It's still a configurable option that can be changed in the browser's about:config interface, so professional and enthusiast users shouldn't have a problem.

A debate is unfolding at Ars Technica regarding this decision, and the wider merits of JavaScript on the web.

Some are claiming JavaScript is unnecessary, that "pure HTML with CSS is sufficient for the functional needs of about 95% of the web". Others support the use of JavaScript as its capabilities can be used to design more sophisticated interfaces and deliver an effective user experience. One person even slams web developers' use of JavaScript as a "divine right to execute scripts in my browser" that should be resisted.

I'm sure that 95% of the internet doesn't need JavaScript. After all, a significant proportion of the internet is porn, and that certainly can't be made better with JavaScript. I'm also a huge proponent of the power of the web to spread news and empower communities; custom-designed select boxes sure as hell aren't necessary for that.

However, I'd argue that JavaScript has become very important for 95% of the web by traffic: Facebook, Twitter, Google Mail. JavasScript is used on these websites to meaningfully enhance the user experience. Such enhancements are routinely required by people paying for websites, although they are also often paying for the guidance to use JavaScript wisely.

JavaScript is and should be an integral part of the web, and Mozilla is right to withdraw this option from the consumer user. User stories rarely state legacy devices as the reason for supporting the absence of JavaScript. In fact the last time I was given this requirement it was specified in the context of users disabling JavaScript in otherwise functional browsers. I won't deny that there are use cases for devices that do not support JavaScript, but those use cases are now rare.

Custom-design select boxes are still entirely unnecessary, though.

A-Level Computing students using BBC Micros to learn computer programming

An interesting report on BBC News on A-Level Computing students using BBC Micros to learn computer programming.

I think BBC Micros made excellent computers to learn to program on because learning to program was always a central function of the product. The relative simplicity of contemporary computer game software and a well-documented BASIC interpreter were also important features.

It is these qualities that remind me of Google Android, Apple’s IOS and the Web. These devices seem to carry on the tradition of the bedroom coder; to go beyond owning a product and to begin learning how it works and how to write your own software. These devices are often fondly remembered by their owners and leave an important legacy. The BBC Micro was that device for me.

People Don’t Buy Why You Do It, They Buy Your Products

I was recently introduced to Simon Sinek’s TEDx talk, Start With Why, a perceptive and passionate talk about how companies influence consumers. While thought provoking, I felt that his talk was not entirely accurate.

Sinek’s point about Apple’s motivation, “to think differently”, has not been the case for many years. He is referring to the Think Different campaign of the late nineteen-nineties, which used evocative photographs and film of iconic figures of the 20th century to cast Apple as the self-styled “Crazy One” that would change the computer world. I don’t think Think Different has ever been Apple’s core motivation, I think this is one of their tools – a “How”, in Sinek’s words. Apple routinely applies divergent strategies in their business, their marketing and their products, but it is not their reason for being.

So, what is Apple’s “Why”? Apple makes consumer appliances. Therefore, is motivated by producing the best products from the perspective of consumers. This has been true of Apple since the beginning, and is true of all of their greatest successes even today. A hallmark of every Apple competitor in an established market is the re-invention of a specialist device as a marketable consumer product. People don’t buy why you do it, they buy your products.

However, when he comes around to apply the reasoning to attracting talent, he does correctly state that prospective employees are attracted by the identity of a company. Identity is a key part of a company’s market, its products, its employees. Identity defines how employees are trained, it defines which markets it chooses to expand into, it defines how new ideas are developed and how they are sold. Identity is a key part of building a company as a system, and plays an important part in everything you’ve ever done and all that you are going to do next.

What makes Apple’s example so compelling is not that they have had one super-successful product in iPod alone. It is that they have managed to launch successful products consistently, often in markets that they have little experience in and against considerable opposition. Apple uses Think Different, stylish design and intuitive interfaces to build a new product, and then uses unrivalled customer support and service to win the long-term support of those that they win over. It is this long-term success that is so remarkable.

Apple will stop being successful one day. It may come sooner or later, but when it does happen it will be because its identity is irrelevant or because its processes have ceased to create products that its customers want. That is what is troubling Microsoft, RIM and now Nintendo. Identity and relevance are key factors in the long-term successes and failures of any company. If you get it wrong, you will have hard questions to ask about your future. Get it right, however, your products stand a great chances of striking a chord with all who make them and, crucially, all who buy them.