Category: Portfolio

  • GitHooks.io

    I came up with the idea for GitHooks.io back in January 2016. A complex technical project I persevered with on the side, I only felt it was ready in December 2016 almost a year later, when I presented the idea to the BBC’s internal monthly Web Developer Gathering (see slide deck) – the first presentation I have ever volunteered to do!

    GitHooks.io is three things:

    1. A framework in which to write reusable webhooks
    2. A hosted environment to serve your webhook endpoints
    3. A platform to share your webhooks with other people

    In short, GitHooks.io can be described as “webhooks as a service”.

    Architecture

    GitHooks.io was designed to scale, so runs on AWS infrastructure. The main website runs on an EC2 micro instance, and the computation that happens on a webhook endpoint is all executed within AWS Lambdas.

    The database was originally a MySQL database running on a private network via AWS’ RDS infrastructure, but to reduce costs I have temporarily terminated this and use an SQLite database instead. Switching to the lighter database was trivial as all database communications are proxied through PDO and the database configuration is entirely YAML-config-driven (as is much of the site functionality, taking inspiration from BBC News).

    I have documented in detail how GitHooks.io works here: http://githooks.io/how-it-works

    Security

    GitHooks.io allows developers to use the GitHub access tokens of the people who install their GitHooks (for communication with the GitHub API), without having to explicitly hand over the access token to the GitHook itself and trust them with it. It does this via an in-house authRequest Node module which automatically appends the access token only to requests made to the GitHub API.

    GitHooks.io runs GitHook code inside Node virtual machines on AWS Lambda infrastructure, to sandbox arbitrary code away from the main site as much as possible.

    It also has built-in infinite loop protection, by detecting how many Lambdas are requested by the same installation and over what period of time, and automatically disabling the installation if it exceeds a reasonable limit.

  • Olympic Body Match

     

    I was the lead developer for the BBC Olympic Body Match, which takes your physical attributes and matches you to your three closest Olympian counterparts.

    It went out in 21 different languages including Persian and Russian, and was consumed across BBC Sport, BBC News, the BBC Sport and News Apps, and the bbc.com ad-enabled equivalents, which each had their own requirements.

    Delivering these to a tight, immovable deadline whilst supporting all browsers required careful planning, stakeholder management, following agile processes effectively, and considered pair programming and work delegation.

  • Magazine Parent/Child Themes

    After the success of the new responsive VoiceCouncil theme, my company was commissioned to develop four new websites, on a tight budget and deadline.

    Given these limitations, I decided to architect this in such a way as to minimise the duplication of effort (the DRY principle) across the four sites. Certain elements, such as social media icons, footer, search form, and so on, were largely similar across the different themes. I pulled these together in a parent theme, then developed child themes which defined and overrode the templates and CSS that were unique to any given site.

    This was definitely a good decision – style tweaks and bug fixes only needed applying in one central place. Every child theme only contains the absolutely essential overriding components. Even more advanced features, such as a slideshow on the homepage, were built into the core theme, switched on via a config option in the child theme so that the JavaScript assets are only loaded if the slideshow is required.

    Looping Live:

    Looping Live

    The Mobile Musician:

    The Mobile Musician

    The Vintage Musician:

    The Vintage Musician

    Music Maker Apps:

    Music Maker Apps

  • 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

  • SmartResolution

    SmartResolution is open-source, extensible Online Dispute Resolution software. It was developed as part of my Major Project (dissertation) and won the Best Major Project award in my year.

    Skills demonstrated: BDD/TDD, Continuous Integration, Ruby & Cucumber regression tests, modular development, state pattern, publish-subscribe pattern, detailed documentation, continuous and automated deployment, AWS.

    Read more about my Major Project here.

  • 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.

  • Commonwealth Games Quiz

    http://www.bbc.co.uk/news/uk-28062001

    A calculator that matches you to your top (and bottom) Commonwealth sports, based on your personal attributes. This was featured on the bbc.co.uk/ index for two days and promoted on BBC Breakfast. “Shout” singer Lulu completed the test for BBC Breakfast and got badminton as her top sport.

    Viewed 2 million times in its first 24 hours, with 80% of people completing the test and reaching the results page. Simultaneously the most Read and Shared story the day it was published, and famous on Reddit. Rigorous time management meant I was ahead of schedule, so I took the initiative to translate the calculator into Welsh. It was promoted on the BBC Cymru homepage.

    The quiz has been shared on social media almost 40,000 times to date.

    You can view the code at https://github.com/BBCVisualJournalism/newsspec_7954

  • 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%.

  • 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
  • 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.