I'm a programmer, software engineer and architect based in Cambridge, UK.
Right now Node.js and Go are the languages I use the most. These days I generally deliver and manage various projects as well as writing some code.
I get involved in data processing, software architecture, CI, deployments and cross-platform applications. I aim to deliver the best possible solutions to problems big and small, as well as to create the tools to facilitate that.
In short: I write code, I manage Linux servers, I build and deploy code and I try to learn something new every day. I try to automate everything and I create some hobby projects in the meantime.
I also write some cross-platform GUI apps, I created a binary delivery service for ffmpeg suite, I make some music every now and then, I try to play with Raspberry Pi but never have enough time. I follow the software news, with a bias towards Open Source, Free Software, networking and security.
I started getting into web development around the year 2000.
Over time I've developed a taste for elegance, reliability, functionality and simplicity in code. The simpler the codebase the easier it is to maintain and guarantee its functionality. To a large extent I am a perfectionist who cares about making the right choices and doing the job correctly (and sometimes just prototyping things to unblock yourself or explore a concept). I write lots of code. I contribute to Open Source and I experiment a lot.
I started moving to the server-side in mid-2000s. I've already picked up some fairly basic PHP a long time ago and I moved on to professionally develop applications around 2009. After evaluating various frameworks I started working with CodeIgniter. It was very well documented and had a great community. From 2013 my remaining PHP work revolved mostly around Laravel.
I moved primarily to Node.js around 2014 and have been using it ever since.
My past projects
For over a decade I have worked on a huge range and variety of projects.
This is some of what I've been doing professionally for the past few years.
- Cambridge Core
- ProQuest Search
- Queen Victoria's Journals
As you've probably noticed by now, I tend to create and maintain a few small projects on the side.
TL;DR: downloads ffmpeg, ffprobe, ffplay and ffserver binaries, cross-platform
I created this API and a Node.js client lib to facilitate downloading of prebuilt binaries of ffmpeg, ffplay, ffprobe and ffserver for Windows, Linux and Mac platforms.
I decided to repackage the binaries to allow shipping of individual components and to ensure a consistent format. I got a domain and shared it as there appears to be a fair group of people who needed the same thing.
Started off as a weekend project to be implemented in my other app but it gained some traction and after a while it managed to deliver over 1 million binaries to users worldwide. Needless to say I still haven't got around to implementing it in my other app.
TL;DR: I liked old WinAMP and I got tired of waiting for a Mac/Linux versions.
This project is currently suspended.
Cross-platform audio player, written in Electron.
- Represents track as a waveform (SoundCloud style)
- window resizes well from a tiny player to a full screen app
- allows playback of audio from YouTube (with caching to prevent unnecessary waste of bandwidth).
A service to proxy files from media hosting websites to avoid trackers (youtube-dl as a service).
Doesn't log any personal information.
An online service allowing conversion between media file formats (ffmpeg as a service).
Doesn't log any personal information.
Memorable password generator
Maps EC2 instances and S3 buckets from multiple AWS accounts
Simple command line argument parser
Skills and experience
- HTML / XHTML
- CodeIgniter, Laravel
- Bootstrap, Foundation
- Photoshop and the Adobe suite
- LESS & SASS
- MySQL, Active Record, ORM
- Design patterns
- Unit testing
- Search Engine Optimisation (SEO)
- Version Control (Git, SVN)
- Agile, Scrum, Kanban workflow
- Visualising data
- End-to-end application design
- Amazon Web Services
- Design and development of User Interface and Experience & back-end
- Coding for accessibility and responsiveness
- RESTful APIs
- Network infrastructure and architecture
- Linux administration
- Service integration, Online payments, PCI Compliance
- Continous Integration
Some experience with
- Web Components/Polymer
- AngularJS, Backbone
- Data indexing
- Data extraction
- Natural language processing (NLP)