Employment & Experience
Full-Stack Developer, Toumetis (2016 - 2017)
Toumetis are a small digital agency based in Bristol. Half of their business is focused hybrid mobile apps, and the other half is making an analytics product. In my time with the company I experienced both halves of the business.
Cascadence: Analytics Dashboards (2017)
Angular 2 based web dashboard frontend for Toumetis’s analytics product “Cascadence”.
- Backend consisted of REST APIs written in Python using AioHttp, connecting to Redshift as the backing datasource.
- Frontend built on Angular2, TypeScript, SASS, and Webpack, unit tested using Karma and Jasmine, and e2e tested using protractor under headless chrome.
- Build and test automated through Gitlab CI. Built Docker containers deployed to AWS.
Cascadence: High-Performance Data Pipeline (2017)
A high performance data pipeline designed to process 100s of GB of analytics data from a proprietory log format into a CSVs suitable for loading into a Redshift data warehouse.
- Built in the Rust language. A new language from Mozilla which allows for C++ performance while being memory safe and providing modern conveniences such as iterators and sum types.
- Designed to allow for incremental processing, to avoid reprocessing large batches of data, and to allow for online processing of incoming data. Stores all state in S3 to allow individual instances to be treated as stateless
- Validates and filters out bad data, making use of Rust’s powerful type system to ensure correct logic at compile time where possible.
Toucan 2: Build/Dev Tool (2016)
A new web-based to modernise a legacy QT based in-house build tool "Toucan". Allowed developers on Toucan based apps to use the devtools from the latest version of Chrome (or browser of their choice) rather than buggy devtools from an ancient version of QTWebView.
AngelScholars: Hybrid App (2016)
A hybrid web app written using Angular 1 and TypeScript on top of Toumetis's in-house hybrid web framework, with TypeScript and NodeJS being used on the backend. I only worked on this project briefly (~4 weeks) as it was cancelled shortly after I joined.
Summer Work (2014 - 2015)
I worked the summer holidays during my time at university. Technically these were 'internships', but unlike a typical internship these were projects where I was working independently as the sole developer on the project.
Customised Journals E-Shop, Goram & Vincent (3 months, 2015)
Brought in to finish off a project after their previous developer left the company, I worked at G & V for 2 months in their office on Park Street.
- Took over a large (30k LoC), well-written but complex codebase.
- Implemented PDF rendering logic, and updated integration with Magento store.
- Setup a staging environment and automated deployment.
- Added documentation and prepared the codebase for the next developer.
IdeaSquares Website, IdeaSquares (3 months, 2014)
Hired for the summer period to refactor an unstructured and increasingly difficult to maintain code base, and to update the functionality of the website to meet new business requirements.
- Ported existing "spaghetti code" code base to the Laravel framework.
- Implemented new front-end designs.
- Carried out general website maintenance and updates
- Advised on development plan and technology choices.
- Worked remotely, communicating regularly via email and skype.
Mobile Web Developer, Mubaloo (most of 2013)
My first proper job, I worked as part of Mubaloo's Web Team for 8 months between university courses. Mubaloo are an award winning agency who specialise in iOS, Android and Mobile Web apps.
HP Top Value App (2013)
A responsive web app for HP's sales team.
- I worked as part of a team of three to develop the app. Git and Trello were used to coordinate development.
- The app was built as a single page web app using Backbone.js with a RESTful API backend.
- AppCache and Local Storage were used to enable the app to work offline.
- View code was shared between mobile and desktop where possible.
- The app was deployed as a responsive web app, and tested on Android, iOS, Windows Phone, and Desktop Web (down to IE9) platforms.
The app was very well received by the client:
"The app has been a huge success and has become a global benchmark for HP by seeing this rolled out across EMEA and beyond." - Daniel Kiaie, Account Manager, HP
HTML5 Showcase App (2013)
An experimental hybrid web app to demonstrate the capabilities of HTML5.
- A series of minigames were created using HTML5 technologies such as Canvas, Touch Events, and the Device Orientation Api.
- The project was used as an opportunity to conduct experiments into the boundaries of the HTML5 platform, and in particular rendering performance.
- Performance was tested on physical mobile devices.
- A performant animation framework for view-transitions was developed.
- The final app was wrapped using PhoneGap for iOS and Android at both phone and tablet sizes.
Always Be Cycling Website (2011)
Informational website and booking system for a local cycling charity.
This project for a local cycling charity involved creating an entire web presence from scratch, including visual design and layout, photography, content creation, WYSIWYG page editing, and a course booking system.
Visually, the focus was on having a clean, bike-orientated design, and on making it easy for visitors to navigate around the site, especially to the booking section. The site also features an admin area which provides a simple interface from which my client can post news, edit pages, and manage course bookings. It runs on my own PHP based CMS, with the course booking module developed specifically for the project.
Tony Coll Website (2009)
My first paid web development project. It involved fixing the previously IE-only CSS to standard conformant code which would work cross-browser, design and layout changes, and content updates. The site is now showing it's age, but still renders accurately in the latest browsers.
GhostEdit: WYSIWYG Editor (2010)
It takes interface cues from Microsoft’s Ribbon UI, which is both simple to navigate, and familiar to users. In addition to this, it tries to make editing actions intuitive and discoverable (e.g. placing the remove link button right next to the link), and to do as much as possible automatically (e.g. if no text is selected when ‘bold’ is pressed, then current word will be bolded).
GhostEdit was particularly challenging from a technical point of view, due to the incredibly buggy nature of browsers’ contenteditable implementations. This necessitated the overriding of browser default actions when the ‘enter’ and ‘backspace’ keys are pressed, among other things. Adding to the complexity was the fact that older versions of IE have a completely different range implementation.
FunkyFootie: Fantasy Football Website (2007)
FunkyFootie was a fantasy football website, and my first significant project. Despite having a number of technical issues (e.g. lack of security, code duplication rather than abstraction, non-normalised database structure), it was a fully featured product, boasted around 50 users and ran for several months.