13 Jan

Current Location

Cambridgeshire

13 Jan

Current Status

Senior Developer at Government Digital Service

26 Dec

3D Solar System

3D Solar System in WebGL
Application | Report | GitHub

3D visualisation of our solar system, written in WebGL. Uses RequireJS, custom OpenGL shaders, progressive enhancement.

This was made for an Advanced Computer Graphics assignment and achieved a mark of 89%.

21 Nov

VoiceCouncil Magazine

VoiceCouncil Magazine is an online magazine for vocalists that has now been running for over six years.

I joined the VoiceCouncil team as a subcontractor in 2012 while at university, editing articles and scouting for talent to enter their biannual singing competition. Over time, my duties branched out to include running advertising campaigns for them; I generated over 13,000 Facebook likes over the course of a series of monthly campaigns. I also did some web development for them, editing the theme and creating a ‘VoiceCouncil Utilities’ plugin defining custom taxonomies such as singing competition entries, to enable us to develop a more feature-rich website.

In 2014 I headed the development of a new, responsive WordPress theme from scratch, through my company. This was Webdapper’s first commission. The stakeholders were so pleased with the quality of work that they commissioned me to develop a further four websites for them.

VoiceCouncil Magazine

28 Dec

reff.it

reff.it is a fully responsive web app that allows you to share snippets of pages, rather than the entire web page itself. Uses Bootstrap on the front end, with a MySQL & PDO PHP back-end.

20 Dec

Industrial Year Report

Read it here: Industrial Year Report

Context
This 5,000 word report was a graded part of my industrial year at the BBC and counted towards 50% of my industrial year marks.

I achieved 81% for this report, and 88% from my employer’s feedback report, meaning the overall mark for my industrial year was 84.5%.

20 Dec

Exploring the suitability of the Viola-Jones framework for counting people

Read it here: Exploring the suitability of the Viola-Jones framework for counting people

Abstract
This paper explores the effectiveness of the Viola-Jones algorithm for detecting faces and the suitability of applying the algorithm to the problem of counting people, concluding that a viable solution may be possible by combining classifiers and/or by training classifiers for specific installations.

Context
This paper was written for a Computer Vision assignment. It was graded 76% (a first).

05 Oct

Orthodontic Refactoring

Refactoring, in its purest form, is the improvement of the underlying workings of an application (or cohesiveness of its structure) without negatively affecting the end user experience. It involves making an application more maintainable and robust without having a detrimental effect on the application functionality. Put simply, traditional refactoring should be sleuthy – the user of the application should not notice any difference in the program before and after the refactor.

I find that, sometimes, when I attempt to refactor something in this way I hit a brick wall, because the program I started with was so broken – so tightly coupled, copied and pasted, and untested – that it simply isn’t possible to refactor without overlooking some of the smaller details in the user experience.

I’ll give you an example. One of the WordPress sites I’ve been given the task of managing has well over 30 template files tied to specific WordPress categories, e.g. single-32.php, single-35.php, and so on. They all have much the same code and markup, apart from a different category ID which is passed into the query string to retrieve the latest posts from that category. Changing the appearance of the site’s category pages requires making the same tweaks to a great number of files.

When I started refactoring the site, I created a generic single.php with category handling logic to remove the need to have all of these separate template files. But then I noticed that a few of the templates had subtle differences – an extra div here, a missing classname there, and so on. Conditionally incorporating these specifics into my generic template would be confusing, messy, and would do nothing to mitigate the original problem.

It’s possible that these subtle differences were the result of configuration drift; the requirement to apply updates to so many template files could no doubt lead to human errors where updates are applied incorrectly, or not at all. But it’s also just possible that all of these little design differences were in fact intentional, and by discarding them I’d be having a negative and noticeable impact on the user experience.

I’d like to quote an extract of The Zen of Python, by Tim Peters.

Special cases aren’t special enough to break the rules.

By attempting to get all of the category pages to adhere to the rules of one common template, I’d be breaking the special cases. But good programming practice suggests that we should be more concerned that we might be breaking the rules to accommodate the special cases.

So I had a dilemma: do I continue with my refactoring step? It would significantly improve the site’s maintainability, and would cut the development time of future updates to a fraction of what they would otherwise be. On the other hand, going ahead would mean cutting out the intricate details of a minority of category pages.

I decided to continue. But by doing so, I realised I wasn’t refactoring in the traditional sense of the word, as the user experience wasn’t being left untouched. What I was doing instead was something I like to call orthodontic refactoring.

Sometimes, you have to break things before you can improve them. Take, for example, a teenager with slightly wonky teeth. Their incisors are misaligned, they don’t feel comfortable smiling. What happens? For a short while, an orthodontist will make them look worse by giving them braces: not only do they have a wonky smile, but their mouth is now packed to the rafters with metal scaffolding.

In a few months time, the braces come off and they can smile confidently for the first time. The orthodontist made things worse for a short while, but in the end it all paid off.

Where possible, you should still attempt to refactor without breaking application functionality. But if going from 100% functionality to 97% significantly simplifies, optimises and further protects the system, can’t we worry about reintroducing the other 3% later?

12 Jul

Hover-Bike

Hover-Bike

http://www.hover-bike.com/MA/

Freelance work for Malloy Aeronautics Ltd. Built the new website entirely from scratch.

  • Fully responsive – dynamically scaling menu, images and video
  • Image swipe – swipe through image gallery on your device
  • Custom WordPress theme
  • WooCommerce integration – e-commerce WordPress plugin customised to the client’s requirements
  • In-page AJAX updatessee the Hoverbike page

12 Jul

Alice Holmes – anthropomorphism

http://aliceholmes.org.uk/

Based on an open-source BBC iFrame scaffold quiz, I built a questionnaire for third-year design student Alice Holmes, which calculates the ideal chair for the individual based on their personality traits.

Loading...