Projects.
142 things I've built, in chronological order. [x] shipped · [~] work in progress.
2026
19 entries
-
TypeScriptNode.jsSQLiteSMTPIMAP4rev2DKIM/SPF/DMARC
-
cutibrowser — a from-scratch desktop browser for the document web, with zero runtime dependenciesTypeScriptNode.js FFImacOS frameworks
-
RADAR — an air-traffic-control scope over live ADS-B dataNode.jsSQLitevanilla JSHTML CanvasADS-B Exchange
-
What's that flight? — the aircraft overhead right now, as a map of your skyTypeScriptCloudflare Workersvanilla JSADS-B Exchange
-
world — an infinite, procedurally generated natural world to walk and fly throughTypeScriptThree.jsWebGPUViteWeb Workers
-
tiny-hn — the Hacker News front page as one tiny, no-JS HTML fileCloudflare WorkersHTMLRewriterHacker News API
-
paint — a from-scratch GPU oil-painting engine and autonomous painterTypeScriptWebGPUWGSLVite
-
HTMLCSSvanilla JSCloudflare Workers→ write-up
-
Daily film guessing game (Spotle-style)React 18TypeScriptXStateTailwind CSSViteCloudflare Pages
-
trolli — budget-aware weekly meal planner and shopping listReact 19TypeScriptViteHonoCloudflare Workers
-
Carcassonne-style procedural tile landscape generatorTypeScriptViteWave Function CollapseHTML Canvas
-
Rummikub with a twist — browser game with move suggestionsReact 19TypeScriptVite
-
Cusp — a WordPress-class CMS that runs entirely on CloudflareTypeScriptCloudflare WorkersD1R2KVDurable ObjectsWorkflowsHonoAstroReact
-
TypeScriptCloudflare WorkersD1R2QueuesWorkflowsCron TriggersHono
-
AI-powered UK employment policy compliance platformSvelteKitTypeScriptCloudflare WorkersD1R2Workers AIWorkflowsAI Gateway
-
AI-assisted cloud configuration auditing toolkitTypeScriptSQLiteAzure SDKCloudflare APIClaude CodeMCP
-
Alternative Hacker News reader with local cachingReact 19TypeScriptViteIndexedDBHacker News API
-
ADS-B receiver and data archiverRaspberry Pi 5RTL-SDR V4readsbtar1090PythonSQLite
2025
5 entries
-
AI-assisted UK primary school SATs marking toolNext.js 15React 19TypeScriptCloudflare WorkersOpenNextKVAI GatewayAnthropic API
-
Serverless website change monitor with email alertsCloudflare WorkersKVCron TriggersEmail Routing
-
Absurdist LLM-powered blogJekyllAnthropic API
-
Camera and lens comparison dataset and websiteCloudflare PagesR2Vuesql.js-httpvfs
-
Next-generation HR platformCloudflare WorkersPagesR2D1AccessHonoNuxtOpenAI API
2024
3 entries
-
LLM-powered codebase documentation generatorC#Anthropic API
-
Cloudflare-powered photo sharing siteWorkersHonoD1R2Drizzle
-
Fastest bulk Hacker News downloaderC#
2023
4 entries
-
.NET MAUIAngleSharp
-
HTML Canvas window managerHTML Canvasvanilla JS
-
Anonymous Twitter clientC#Razor
-
Automated technology journalistC#OpenAI APIWordPress
2022
4 entries
-
Desktop UI on HTML CanvasHTML Canvas
-
Camera and lens price trackerC#BlazorSQLite
-
Micro blog generatorIonicAngularGitHub API
-
Military aircraft tracker — the first version of what became MilMovC# .Net 6Entity FrameworkSQLite
2021
8 entries
-
JavaScript
-
Shipping vessel downloaderC# .Net 6Entity FrameworkSQLite
-
Watching for website changes with GitHub ActionsGitHub Actionsurlwatch
-
.Net browser engineC#
-
C#Notion APIGitHub API
-
Content management system and blog engineServer-side BlazorEntity FrameworkRazor Pages
-
Server-side BlazorSystem.ReactiveEntity Framework
-
No-code app creatorServer-side Blazor
2020
12 entries
-
SQLite JSON document storeC#
-
Custom Jira clientC#NSwag
-
Playing with PulumiPulumiC#
-
JavaScript
-
Simple API GatewayC#
-
Learning F#F#
-
Unregistered domain finderC#Hetzner VPS cluster
-
Goodreads review scraperC#EF CoreAzure FunctionsAzure SQL
-
World Cup of Tube Lines 2020C#Azure FunctionsTwitter API v2GitHub Pages
-
C# .Net 5EF CoreRazor PagesSQLite
-
Bardcore BlogJekyllGitHub Pages
2019
14 entries
-
Micro-blogging platformC# .Net CoreAzure SQLEF CoreIdentity ServerLiquid
-
Vue.jsBulmaGitHub API
-
UK train / locomotive databaseSQLiteC# .Net Core
-
Document DatabaseSQLiteC# .Net CoreAzure App Service
-
Vue Component-based CMSVue.jsC# .Net Core
-
Tiny Work Order web appCouchDBPouchDBVue.jsTypeScript
-
Generate relational database from spreadsheetAzure SQLC# .Net Core
-
gRPCBlazor WebAssemblyC# .Net Core
-
Unofficial Parkrun APIC# .Net Core
-
Indexing all GitHub repositoriesC# .Net CoreLucene.NetAzure Blob StorageMessagePack
-
RSS feed ingesterAzure FunctionsCosmos DBC# .Net Core
-
Auto-generate REST API from SQL database at runtimeAzure SQLC# .Net CoreSqlKataAzure App Service
-
Vue.jsAzure FunctionsAzure Table StorageAzure SQLEF CoreGoogle Places API
-
End-to-end encrypted social networkVue.jsAzure Table Storage.Net Core Web APITweetNaCl.js
2018
20 entries
-
Listing / cataloguing social networkVue.jsAzure SQL.Net Core Web API
-
Natural-language recipe ingredient parserC#Sprache
-
Recipe social networkC#.Net CoreCosmos DBBlazor Razor components
-
Highly parallel web crawlerC#.Net CoreAzure FunctionsCosmos DBStorage Queues
-
C#.Net Core
-
Food Hygiene Twitter BotC#TweetinviSQLiteAzure FunctionsAzure File Storage
-
BlazorMono via Wasm
-
C#.Net Core
-
Web API for SQLiteC#.Net Core
-
Decentralised social network using email as transportXamarin FormsMailKitSQLite
-
C#.Net CoreUIKit
-
BlazorMono via Wasm
-
Microsoft Bot FrameworkAzure SQLGiphy API
-
C#.Net CoreCouchDB
-
C#.Net CoreCouchDB
-
C#.Net CoreAzure Web Service
-
C#.Net Core
-
Reverse engineering the Logi Circle APIC#.Net CoreMPEG-DASH
-
JekyllGitHub Pages
-
C#.Net CoreGitJSON
2017
8 entries
-
C#.Net Core
-
C#.Net CorePostgres
-
Live global flight data gathering and statisticsC#Entity Framework 6MSSQL
-
WordPress
-
C#Entity Framework 6MSSQL
-
ASP.NET Web APIEntity FrameworkXamarin Forms
-
HTML5JavaScriptBootstrap
-
Hyperspace route calculatorC#
2016
8 entries
-
Date / outing finder Android appGoogle Places APIC#ASP.NET Web API 2Entity Framework 6MSSQL
-
iOS Hacker News client with offline cachingXcodeSwift
-
Wordr.xyz — a collection of poems written by a computerPythonWordPress
-
Classifying liver lesions using machine learningWEKAMATLAB
-
Microsoft Azure authentication mobile serviceAzure Mobile ServiceGoogle Auth APIAndroid Studio
-
TurtlebotPythonROSOpenCV
-
Automatic detection of rivers in RGB satellite imagery (MComp research)PythonOpenCVscikit-learn
-
Analysis of historical weather records for LincolnshireC++OpenCL
2015
11 entries
-
HACK24 (2015) — Pusher real-time demoAndroid StudioPusher
-
Braitenberg vehicle demonstrating a 'fear' of spherical objectsTurtlebotPythonROSOpenCV
-
IaaS cloud service for inventory managementPythonTornadoMicrosoft Azure
-
WordPress
-
Statistical analysis of Yellowhammer populationIBM SPSS
-
C++OpenGL
-
Lung image analysis projectMATLAB
-
Lincoln SoCS Postgraduate Management System (UROS 2015)LaravelMySQL
-
Global public FTP indexingPythonMySQL
-
WordPressBootstrap
-
Wildlife Conservation — Help NatureWordPress
2014
17 entries
-
PHP content management system in under 100 linesPHPHTML5CSS3
-
Distributed website mapping systemRubyMongoDB
-
Real-time cloud messaging serviceMicrosoft AzureAzure Table StorageAMS SSOWindows Phone 8.1
-
Networked traffic light junction simulatorJava
-
Intelligent news aggregator (undergraduate dissertation)RubySinatraRedisBootstrap
-
WordPress
-
Twitter-mood-controlled music appWindows Phone 8.1Microsoft Azure
-
WordPressBootstrap
-
Pro Logs Ltd.WordPress
-
WordPress
-
Lincoln SoCS Student Management System (UROS 2014)PHPMySQLBootstrapCouchCMS
-
Head-movement computer control systemC++Microsoft Kinect
-
Designing a £250,000 campus networkCisco hardware
-
A* algorithm maze solverC++
-
Geographic semantic network generatorProlog
2013
9 entries
-
WordPress
-
AutoInvoiceC#
-
Where's Wally solverC++
-
Puzzle solving using a sum of squares algorithmC++
-
WordPress
-
Ghost
-
C#
-
WordPress
Not all of these are live — I build a lot of things to learn, then move on. Source for most lives on GitHub.
142 entries · 2013–2026
— jl