Marcus Downing


Full stack developer

with experience in system administration and open source.

I've taken projects from concept to completion.

Experience working on user interfaces for desktop and web, databases, system architecture, deployment, hosting and maintenance.

I have an eye for detail and a commitment to quality. Understanding the full stack allows me to anticipate and solve problems.

Work Experience

Bang Communications

May 2010 - Sep 2021

Website Developer

WordPress PHP Git   MySQL Node.js HTML CSS JavaScript Drupal Laravel Scala Visual Design

Created and maintained websites and intranet sites.

Clients included HM Criminal Justice Inspectorates, HM Revenue and Customs, Hackney & City of London Council, NHS Careers and the World Energy Council.

Made key decisions on technology, structure and workflow. Worked with clients to understand their requirements.

Oversaw transition from an in-house CMS written in Scala to WordPress, and established company standards for making WordPress sites.

Created and open sourced themes, plugins and modules, and took over development of abandoned plugins.


Teamwork

Strove to introduce better practices and improve communication. Pushed for long term concerns, such as security and backups, in the face of short term priorities.

Introduced new hires to the business. Trained my colleagues in various subjects.

Took time to train my successors, write documentation and cut excess complexity to ensure a smooth handover of responsibilities.

Hosting / Sysadmin

Linux Ansible   Apache AWS Cloud hosting DNS Digital Ocean DRBD Nagios Nginx Perl Tomcat Ubuntu Vagrant Varnish Xen

Deployed and managed hosting for websites.

Maintained and improved in-house hosting with Xen and DRBD, then led transition from that to cloud hosting platforms – AWS and Digital Ocean.

Pushed the adoption of Ansible for reliable deployments. Introduced a layered stack for resilience and security, and monitoring with Icinga. Maintained an in-house library of Ansible roles for deploying mixed-technology servers. Looked after DNS, mail etc.

Worked with clients and their suppliers on unique hosting requirements, including client-specific platforms and secure hosting.

Mitigated the effects of GDPR and security issues raised in ITHCs.


Legacy Application Support

Java Zend Framework Ruby on Rails

Maintained and hosted a variety of inherited applications. Improved security and performance, fixed bugs, added features and maintained hosting.

Minotaur IT

May 2005 - Apr 2010

CRM Developer

Java Tomcat   Subversion MySQL XML PDF iText

Created a web-based CRM portal for invoicing and customer management, used by both Minotaur and their clients.

Included support for multiple currencies, changing tax rates, reseller accounts, credit reports and bespoke customisations such as billing for Asterisk phonecalls.

Import/export including PDF generation, CSV, Postgres and various XML formats.

Solved issues related to granular permissions, deployment, caching, performance, UI design and synchronisation.

Web Developer

Java   MySQL Visual Design

Created websites for clients.

Worked with clients to understand their needs, design and implement a site. Configured hosting for these websites.

Integrated websites with the CRM portal for sales.

Dealt with general IT support.

Nexus Alpha

Oct 2001 - Feb 2005

Database Developer

Java   Firebird SQL Temporal Databases API design

Developed the database access layer as part of a team creating a transport scheduling application.

Made the database available through an API. Wrote code to generate complex SQL stored procedures for detailed queries made possible through the API. Worked with the team to understand their needs and educate them where needed.

Solved issues related to temporal database design, schema migration, serialization, version compatibility, performance and threading.

Education

University of Exeter

2001

BSc Computer Science

Java Perl Objective-C

Portfolio

Dyslexic Character Sheets

2009 -

dyslexic-charactersheets.com, github.com/dyslexic-charactersheets

A rich, customisable set of character sheets for Dungeons & Dragons and Pathfinder.

Users select options for the character they wish to play, as well as picking a colour and uploading a portrait. The website builds them a unique character sheet.

With thousands of options, and used by tens of thousands of players, this project is still growing. It's been translated into Spanish, Italian, Portuguese, German, French, Polish and Russian.

Every part of this project is free and open source. Worked with game publishers and third parties to ensure the project is 100% legal.


New Edition (2020-)

Open source JavaScript (ES6)   Babel Node.js YAML BEM Patreon

A complete rewrite for Pathfinder Second Edition, addressing issues with the original process.

The process of creating this new edition was done entirely in public, to a published schedule, with regular engagement with patrons and followers.

Uses a data-driven design, with a YAML-based DSL for describing page layouts based on inversion-of-control. These are composited by a JavaScript library into a unique character sheet.

The library is written in modern ES6 and transpiled with Babel. It's published on NPM for any other project wishing to create character sheets.

Old Edition (2009-)

Scala Adobe Illustrator   PDF iText

The original version supports three games: Pathfinder First Edition, Starfinder, and D&D 3.5.

Consists of hundreds of Illustrator / PDF files, a JSON data file and a Scala-based website which joins them together based on user input.


Translator App

Go   Bootstrap MySQL JavaScript (Illustrator)

A web app allowing volunteer translators for each language to work together.

Complented by a set of scripts for extracting strings from Illustrator files, and for editing files to substitute translations in bulk.

Basingstoke Anime Society

2006 -

basingstokeanimesociety.com, github.com/basingstoke-anime-society

Ran a successful anime society for more than a decade.

Kept running every week for 15 years despite broken hardware, unreliable venues, inclement weather, a pandemic, the death of key members, and shifting market trends.

 

Currently learning

Rust

I'm constantly learning new things and enjoy teaching others. I'm currently learning Rust, a low-level systems language with a unique memory model.

This document

Node.js Sass Handlebars

This CV was made with Sass and Handlebars templates, compiled with Node.js. It embeds CSS, fonts and images into a single file for a convenient download.

Other examples

github.com/marcus-downing

stackoverflow.com/users/1000

profiles.wordpress.org/marcusdowning

References

Available on request.