George Wall
George Wall London Products in public · protection in code

Product engineering · 10+ years in fintech

Build the thing. Then build what protects it.

production fault caught in the editor

I build React and .NET systems, ship my own iOS apps, then turn what I learn into analysers, source generators and CLIs.

Build output · live trace

Ship the product. Encode the lesson.
main protected
01 / ship App Store

Real products

  • NoBooze v1.6.1
  • GemGame v2.1.6
  • Fleet Commander v1.0.5
02 / encode NuGet

Reusable guardrail

active diagnostic INCIDENT-827 A user finds it.
LINQ001 DI0001 CPM

Failure distance

Move the catch closer to the thought.

A user finds it.

The fault is live, someone is blocked and the useful context is already fading.

user report → triage
NuGet reach
195K+ downloads
Products shipped
3 live on the App Store
Production depth
10+ years in fintech

Latest on main

What changed recently.

What I’ve released or fixed recently, with versions and links.

16 repos updated since the last site refresh · checked 9 August 2026

  1. 09 Aug 2026 tooling

    LinqContraband

    v5.7.52

    Finished the LC045 fix cases. More unsafe query shapes now come with a safe one-click fix.

    NuGet
  2. 09 Aug 2026 tooling

    DI Lifetime Analysers

    v3.7.6 live

    Fixed mixed event-subscriber lifetimes being reported as safe. The follow-up patch is already on main.

    NuGet
  3. 09 Aug 2026 tooling

    CPMigrate

    v3.57.2

    CPMigrate now checks that the restored dependency graph is equivalent after migration, including filesystem-aware path checks.

    Product site
  4. 09 Aug 2026 tooling

    NotifyGen

    v1.9.0

    Added typed post-change hooks and target-side dependencies. It is still generated at compile time, with no reflection.

    NuGet
  5. 09 Aug 2026 product

    Fleet Commander

    151 playability passes

    I’ve made 151 post-launch playability passes, covering onboarding, battle clarity, Dynamic Type, VoiceOver and the return flow.

    App Store
  6. 30 Jul 2026 product

    NoBooze

    v1.6.1 · shipped

    Shipped v1.6.1 with the new progress dashboard, journal updates and an accessibility pass.

    App Store
  7. 30 Jul 2026 product

    GemGame

    v2.1.6

    Shipped persistent records, milestones, reminder controls and a weekly relic rotation in v2.1.6.

    App Store

Selected tools

Three problems these tools catch at build time.

Most of my open-source work is developer tooling: analysers, source generators and CLIs that catch common mistakes in the editor or CI.

LINQ001 diagnostic

Compile-time safety · EF Core

LinqContraband

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.

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
OrdersQuery.cs Ln 42
db.Orders .ToList() .Where(o => o.Total > 1_000)
db.Orders .Where(o => o.Total > 1_000) .ToList()

Caught before the build. The database does the filtering. The editor flags the expensive shape before review.

diagnostic active 0 errors
Install package GitHub
DILIFETIME001 diagnostic

Compile-time safety · DI

DI Lifetime Analysers

A Roslyn analyser for captive dependencies, leaked scopes and lifetime mismatches. It checks the container graph at compile time and adds no runtime code.

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
ServiceRegistration.cs Ln 18
AddSingleton<ReportService>() AddScoped<AppDbContext>()
AddScoped<ReportService>() AddScoped<AppDbContext>()

Caught before the build. The lifetime mismatch is flagged in the editor before it reaches production.

diagnostic active 0 errors
Install package GitHub
CANCEL001 diagnostic

Compile-time safety · async

CancelCop

Checks that CancellationToken is passed through handlers, EF Core, HTTP and Minimal APIs. The code fixes wire a missing token into the call.

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
OrderHandler.cs Ln 27
Task Handle(CancellationToken ct) => db.SaveChangesAsync();
Task Handle(CancellationToken ct) => db.SaveChangesAsync(ct);

Caught before the build. The code fix passes the token through the call chain.

diagnostic active 0 errors
Install package GitHub

iOS products

I build and ship iOS apps too.

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
GemGame App Store artwork showing a large cascade on the redesigned jewel board
Cascade system
GemGame App Store artwork showing striped, wrapped, seeker, and rainbow power gems
Power gems · v2.1

Shipped iOS game · Match-3

GemGame: Cosy Match 3 Puzzle

App Store v2.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.

  • SpriteKit
  • SwiftUI
  • Game Center
  • StoreKit 2
Fleet Commander App Store artwork showing the connected galaxy frontier map
Connected galaxy
Fleet Commander App Store artwork showing tactical gambits before a border battle
Tactical gambits

Shipped iOS game · Strategy

Fleet Commander

App Store v1.0.5

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.

  • Swift
  • Game Center
  • StoreKit
  • iOS 17+
NoBooze showing a 128-day alcohol-free streak, savings, achievements and daily support actions
Today · live product
NoBooze journal showing a private reflection prompt, searchable entries and mood context
Reflection-first journal

Shipped iOS product · Health & Fitness

NoBooze

App Store v1.6.1

A private sobriety companion built around streaks, health milestones, check-ins and journalling. A slip is handled with support rather than a lecture.

  • SwiftUI
  • Core Data
  • HealthKit
  • CloudKit

In progress

TestFlight and private builds.

These are rougher around the edges, but they show what I’m working on.

My Lumina TestFlight home screen with a friendly yellow mascot, body scan and mood palette actions
TestFlight build 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
Tiny Transit Jam iPhone screenshot showing the level map and daily challenge cardTiny Transit Jam iPhone screenshot showing the onboarding puzzle board and booster tray
Private build Playable 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.

  • SwiftUI
  • SpriteKit
  • SwiftData
  • Fastlane

Collaborations

I also collaborate.

Not just the analysers and the App Store apps. I collaborate on INFLU, a fashion intelligence platform and Dansu, premium quick-dry towels for raves, gym and travel.

Sect. I

The Fashion Issue

INFLU homepage, with the fashion intelligence feed and look scores
  • Virality
  • Velocity
  • Phase

Live signal · rising looks

Collaboration · Fashion intelligence

INFLU

Role Collaborator

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.

  • Product
  • Web
  • Fashion
Visit influ.site

England

Terrace issue

Dansu homepage, with the brand mark and a shop now link
  • England
  • Brazil
  • France

Raves, gym and travel

Collaboration · Brand and storefront

Dansu

Role Collaborator

Dansu sells premium quick-dry towels for raves, gym and travel. I collaborate on the brand site and the storefront.

  • Brand site
  • Storefront
  • Product
Visit dansu.co.uk

About

I like owning the whole thing.

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.

I also collaborate on a couple of live products: INFLU, a fashion intelligence platform and Dansu, premium quick-dry towels for raves, gym and travel.

I’d rather catch a mistake in the editor than explain it in production.

Working with

  • C#
  • .NET
  • Roslyn
  • Kafka
  • EF Core
  • TypeScript
  • React
  • RTK Query
  • Swift
  • SwiftUI
  • Rust
  • Azure
  • Docker
main
London · 51.5°N
--:--