About me

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.

Backstory

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.

Through years of working on the client-side code I've learned a huge amount about HTML, CSS and JavaScript. I've used iframes in IE, I copy-pasted scripts in the early 2000s, I made Flash movies, I used MooTools, Prototype, jQuery, Bootstrap and Foundation.

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


Open Source

As you've probably noticed by now, I tend to create and maintain a few small projects on the side.

ffbinaries

ffbinaries.com | Node module

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.

RemoteStack Player

GitHub repo

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

URLGent

Website | GitHub repo

A service to proxy files from media hosting websites to avoid trackers (youtube-dl as a service).
Doesn't log any personal information.

Great Converto

Website | GitHub repo

An online service allowing conversion between media file formats (ffmpeg as a service).
Doesn't log any personal information.

xkpasswd

NPM package | GitHub repo (Node.js) | GitHub repo (GoLang)

Memorable password generator

awsmap

NPM package | GitHub repo

Maps EC2 instances and S3 buckets from multiple AWS accounts

clarg

NPM package | GitHub repo

Simple command line argument parser



Skills and experience

  • HTML / XHTML
  • CSS
  • JavaScript
  • Node.js
  • Go
  • PHP
  • CodeIgniter, Laravel
  • Bootstrap, Foundation
  • Photoshop and the Adobe suite
  • LESS & SASS
  • MySQL, Active Record, ORM
  • MongoDB
  • 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
  • D3.js
  • Python
  • Perl
  • C++
  • Data indexing
  • Data extraction
  • Natural language processing (NLP)