A Roslyn analyser for expensive EF Core query shapes. It catches N+1 queries, client-side evaluation and early materialisation while the code is still in the editor.
OrdersQuery.cs:42Roslyn · live analysis
× error
✓ fixed
LINQ001 Materialising before filtering pulls the whole table into memory. The database does the filtering. The editor flags the expensive shape before review. 1 quick fix available
A Roslyn analyser for captive dependencies, leaked scopes and lifetime mismatches. It checks the container graph at compile time and adds no runtime code.
ServiceRegistration.cs:18Roslyn · live analysis
× error
✓ fixed
DILIFETIME001 A singleton captures a scoped dependency and quietly extends its lifetime. The lifetime mismatch is flagged in the editor before it reaches production. 1 quick fix available
Checks that CancellationToken is passed through handlers, EF Core, HTTP and Minimal APIs. The code fixes wire a missing token into the call.
OrderHandler.cs:27Roslyn · live analysis
× error
✓ fixed
CANCEL001 A cancellation token reaches the handler, then disappears at the database call. The code fix passes the token through the call chain. 1 quick fix available
3 apps are live on the App Store, with 2 more in
TestFlight or private builds. I design them, write the code, make the
store art and handle the releases myself.
Live now
03
In progress
02
/01
Cascade systemPower gems · v2.1
Shipped iOS game · Match-3
GemGame: Cosy Match 3 Puzzle
App Storev2.1.6
My match-3 game with ten galaxy worlds, power gems and no ad sludge. Version 2.1 tightened the boards, sharpened the artwork and made the specials feel properly explosive.
A small space strategy game about expanding across a connected galaxy, researching upgrades and choosing the right tactical gambit. Built in Swift and shipped on the App Store.
These are rougher around the edges, but they show what I’m
working on.
TestFlightbuild 23
My Lumina
A TestFlight recovery companion built around guided body scans, mood palettes and an on-device chat. Conversations stay on the phone; private progress can sync through the user’s own iCloud account.
SwiftUI
SwiftData
Foundation Models
CloudKit
Private buildPlayable build
Tiny Transit Jam
A one-screen transit puzzle with generated levels, accessible gameplay actions and a heavily tested rules engine. Load matching passengers before the station locks itself solid.
INFLU is a fashion intelligence platform. It scores looks as they start to rise, so you can see what is about to take off. I collaborate on the live product, including the Style Index and the scoring UI.
I’m George. I’ve spent more than ten years building software in London
fintech: C# engines that price pension liabilities, Kafka services, and frontends
built from scratch with React and TypeScript. When the numbers involve people’s
pensions, correctness is not optional. That has shaped the rest of my work.
I like working across the stack. That might mean the Kafka consumer, the C#
calculation engine, the React grid on top, or a SwiftUI app I take all the way
through App Store review. I also build the bits that stop mistakes repeating:
analysers, source generators and migration tools.