Portfolio
Web Development
Open-Core, Provider-Agnostic Publishing Engine
An open-core, provider-agnostic publishing server designed to automate the lifecycle of filesystem-based content assets, ranging from blogs and documentation to AI datasets. It manages the pipeline from raw file submission to consolidated daily release batches, strictly isolating core domain rules from external storage and VCS providers through pluggable strategy drivers. Built as a monorepo, it supports both lightweight, cloud-native serverless deployments and dedicated multi-tenant server setups. Read the blog post about it.
Template-First Publishing CLI
A transaction-safe, modular CLI designed to automate content creation and template rendering workflows. Built with a pluggable "Lego set" architecture, it features a blueprint-driven pipeline that supports interchangeable template engines, custom JavaScript middleware stacks, and dynamic frontmatter generation. It manages the local content lifecycle from initial draft rendering to Git-integrated dispatch workflows with atomic rollbacks, deep event-bus observability, and extensible toolpack utilities. Read the blog post about it.
Automated RSS Content Syndication Engine
A self-contained GitHub Actions solution built to syndicate RSS feed content across multiple social platforms in strict chronological order. Features an isolated, sequential matrix strategy that broadcasts new posts to platforms like Mastodon, X, Nostr, Bluesky, and LinkedIn while isolating provider failures. Manages persistent tracking state via GitHub Actions cache primitives, supporting both self-contained automated execution and caller-repository workflow integration. Read the blog post about it.
Local GPU-Accelerated LLM Workflows
A local AI development setup utilizing hardware acceleration to run open-weights Large Language Models locally. Focused on building reproducible, containerized local AI environments via Devcontainers, passing local GPU compute directly into isolated development spaces for offline inference, prompt engineering, and LLM-assisted software development without external API dependencies or cloud latency. Read the blog post about it.
OAuth 2.0 REST API & React Web Client
A full-stack, end-to-end TypeScript application featuring a custom OAuth 2.0 REST API backend and a responsive React frontend. Built to demonstrate secure authentication standards, clean API architecture, and seamless state management across the stack. Features structured token handling, strongly typed request/response schemas, and a modular client interface optimized for scalable user session workflows. Read the blog post about it.
Static site generator
I upgraded my Nodejs based static site generator to be a much more generalised website generator. It's extremely flexible and customizable.
Some of it’s major features include renderers, middleware & renderer pipelines, server side components, incremental progressive rendering, plugins and packaging and data loading utilities.
I wrote a blog series that describes it's functionality, as well as a longer term vision plan for the project.
Making a Squarespace website dynamic with a serverless API, frontend page hydration and search
I built some serverless API endpoints that pull data from Monday.com, and a javascript frontend that inserts the API data into the page and also provides search functionality with filtering and date sorting of results. Deep Tech Jobs has since successfully launched.
Jamstack Architecture Content Sites
I built a NodeJS static site generator for my blog website, notes website, linkblog website and podcasts website.
Contributions can be easily created using a browser bookmarklet. New content gets added to a Github repo feature branch. Backend processing is done using Serverless functions. The feature branch is merged into the main branch on a schedule and the site is automatically rebuilt and deployed.
Eleventy Agile Blog
eleventy-agile-blog - Blog template that implements a simple agile development workflow, so you can manage a backlog of stories, getting them done over the course of sprints
Serverless books API
serverless-books-api - Implements a Books API for a Library, intended to be run on AWS Lambda/DynamoDB using serverless
- Functions run on AWS Lambda
- Data is stored in AWS DynamoDB
- Uses domain driven design techniques with handlers/utilities/adapters layers
Internet of Things App
internet-of-things-app - System to collect and process realtime data of devices in an iot fleet
This project is an MVP of an Internet of Things (IOT) application. The scenario is one where there are devices that are geographically distributed and are moving, so could be delivery or perhaps passenger vehicles. The application receives data updates from devices, proceses the data and then displays the data. In this specific example the device speed is calculated. Generally speaking it is a way to collect and process realtime data.
Freelancer
freelancer - Website for freelancers with homepage and payments pages to securely receive payments for services.
Website for freelancers that runs sites. Each site can be static and/or dynamic, you can easily associate domain names to each site and adding a site is as simple as creating an express app and adding it to the apps folder. Payments are handled by Stripe and email notifications are via Mailgun.
Linkblog.io
Linkblog.io was the minimalist link curation tool, a cloud/SAAS NodeJS web application for managing your daily links. I created the infrastructure, the automated server provisioning system, the code build and deployment system, developed the website and REST API, and the fault tolerant backend that processed jobs using a scheduler, message queues and webhooks. There were robust unit and integration test suites for all the NodeJS code.
More information in these blog posts:
- Looking back at linkblog.io - A look back at the project goals, application level features and automation systems.
- Robust NodeJS Deployment Architecture - A writeup of the tech stack.
- Building the foundations for the future of linkblog - Describes the redesigned billing system that I implemented.
Minimals
These are minimal apps created for the purpose of learning a specific feature.
- minimal-modern-node-http-mocking - A research and diagnostic suite designed to isolate, document, and resolve the complexities of HTTP mocking in modern Node.js environments.
- minimal-syntax-highlighting - Minimal example demonstrating code syntax highlighting.
- action-jobs-in-series - Minimal workflow demonstrating using artefacts to pass data between jobs in series.
- minimal-express-typescript - Minimal express app written in typescript with npm scripts to run the app in the vscode debugger.
- ejs-layouts-using-includes - Minimal express app implementing layouts using ejs includes.
- nockback-test - Minimal test suite demonstrating nock's nockback feature that records 3rd party api test fixtures into separate files.
- passport-tests - Minimal express app and api that implement website authentication.
- vanilla-mvc - Minimal examples of client-side mvc patterns using plain old boring vanilla javascript.
- react-webpack-project-template - Boilerplate for React projects.
- erm-flow - Minimal restify app using express-restify-mongoose module.
- restify-tdd-template - Template for building apis using restify and tdd.
- react-tdd-project-template - Boilerplate/template for building React apps with TDD.
- fluxxor-flux-comparison-app - Working example of the Fluxxor flux-comparison app that uses webpack, webpack-dev-server and has a mocha test environment configured.
- app-server-demo - An express app for running express apps - drop express apps in the lib folder and start the server.
- app-server - Node.js module for building servers that run express apps.
Workflow Development
Broadcast
I architected and/or built the following workflow solutions from the below workflow portfolio document:
- ProsiebenSat – Ingest via Mx/Agent/Smartjog/Ftp, automated validation then manual validation, checking into MAM, export via Mx/Agent/Smartjog/Ftp.
- Canal Plus - Ingest via FTP Pull/MX, media check, Agility transcoding, import into Sonaps and Avid editors.
- Chellomedia - Ingest via Agent, movement of file bundles, Antivirus check, splitting of bundle on arrive in Lan, delivery of each piece to the right place.
- TPC – Swiss Television - Avid export, transcoding, Sound recording, manual steps offered via Mx GUI, delivery to Playout.
- Media City UK - Avid Gateway - easy ingest and outgest of avid projects.
- Discovery UK - VOD preparation with automatic adding of bumpers, logos and subtitles, and automated quality assurance check.
Digital Intermediate
- Development of Arriscanner automated ingest pipeline for scanning reels of motion picture film, scan tracking, automated digital IR map dust bust and scratch removal using Pixel Farm’s PFClean.
- D-Cinema KDM generation.
- File ingest and processing solutions using Shake, edit decision lists (EDLs), FTP, Linux, for films including Children of Men, Happy Feet, Charlie and the Chocolate Factory, The Golden Compass.
Render farm optimisation
Optimisation of a render farm, operational logistics, liaising with producers, artists and software developers to troubleshoot problems and implement improvements in the render pipeline (RenderMan, Maya, Shake, Houdini).