Skip to content

Kingston, Jamaica · Available

I build the instrument
before I trust
the reading.

Full-stack engineer. I build trading systems that measure themselves, AI products that hold their shape when the model misbehaves, and platforms that stay correct as they grow.

Live signalσ ← cursor height
random walk · 22-period mean

5+

Years building for the web

20+

Projects shipped

8

Sites live in production

200k+

Lines of TypeScript in current work

How I work

Anyone can ship. The question is whether you would know if it were wrong.

  1. 01

    Measure before you believe

    My trading work journals the state of the world at the moment of every decision, so a result can be audited later instead of assumed. Every number carries a label saying whether it was measured live, measured in simulation, derived or modelled — because pooling those four is how you fool yourself.

  2. 02

    Write the decision down

    Every project I run keeps a notes directory of one-fact files: what was tried, what the evidence said, and what was decided. It means the next session cannot quietly relitigate a settled question from memory, and it means someone else could pick the work up.

  3. 03

    Kill your own ideas

    I have deleted more trading strategies than I have kept, each with a written verdict explaining the evidence that retired it. One looked strong across 441 samples and vanished at 1,423 — it was noise from counting the wrong unit. Finding that out is the job.

  4. 04

    Design for the real user

    A merchant on a prepaid phone with patchy signal is not an edge case in Jamaica, it is the median. So the marketplace is local-first with a durable outbox, and the bus tracker polls rather than holding a socket open. The right architecture depends on whose hands it lands in.

  5. 05

    Learn in public, fast

    I was using Zod to coerce structured JSON out of OpenAI before it was a documented pattern, and moved to building whole systems with Claude as soon as that was better. New tools do not intimidate me; I read the source and find out.

  6. 06

    Own it in production

    Most of what I have built runs on Linux VPS boxes I configured, behind nginx, under PM2, with the backups and the deploy scripts written. Shipping is not the same as running, and I do both.

Selected work

Four I would defend in an interview.

Each of these has a hard part — a problem where the obvious solution was wrong, and the right one took real thought.

Track record

Things I have actually shipped.

2026

Autonomous trading systems with honest accounting

Built market-making and prediction engines for Polymarket that reconcile against the exchange, contain their own failures with circuit breakers, and refuse to go live until the books balance. The reward estimator went from capturing 14–21% of what was actually paid to 93% after an accounting rewrite. Several strategies were retired on the evidence, each with a written verdict.

  • TypeScript
  • Next.js 16
  • ethers
  • viem
  • WebSockets
  • PM2

2026

Offline-first systems for unreliable networks

A vendor marketplace and a live bus tracker, both built on the assumption that the device loses signal. Durable IndexedDB outboxes, idempotent sync keyed on client-generated ids, a pure conflict reducer that respects when the user actually acted, and route corridors derived from GPS traces with PostGIS.

  • Next.js 16
  • PostGIS
  • IndexedDB
  • Redis
  • Drizzle
  • MapLibre

2025—2026

Multi-tenant website platform

A hosted builder where each placed component instance owns its own data, so a business can swap a section's design without losing its content. 28 component categories in a typed discriminated union, per-instance style overrides with properly scoped CSS, custom-domain rendering, and billable add-ons for booking, notifications and inventory.

  • Next.js 16
  • React 19
  • Drizzle
  • PostgreSQL
  • Tailwind 4
  • Zod 4

2025

Dynamic story-to-video system

Architected a platform that generates characters, locations and scenes from a chosen theme, keeping the AI consistent about characters by feeding it the relevant details — sometimes as images. Integrated ElevenLabs for voice synthesis and scripted Adobe After Effects to compile dialogue, assets and audio into fully rendered videos.

  • Next.js
  • TypeScript
  • OpenAI
  • ElevenLabs
  • After Effects scripting

2025

YouTube automation platform

A full-stack app that scraped trending topics, generated video scripts through GPT, and automatically produced ready-to-publish videos. One of the first places I leaned on schema validation to make model output safe to act on.

  • Next.js
  • TypeScript
  • Zod
  • PostgreSQL
  • GPT

2025

Interactive AI narrative engine

A GPT-powered story platform with persistent world-building, branching dialogue and real-time character interaction. The narrator emits a typed mutation array the server validates before applying, which turns open-ended storytelling into state a database can hold.

  • Next.js
  • OpenAI
  • Zod
  • Drizzle
  • PostgreSQL

2023

Real-time comms platform inside a live NOC

As a NOC engineer, designed and deployed a WebSocket-based platform connecting internal departments directly to clients, replacing a paper-based tracking system that the business already depended on. Also wrote VBA automations that compiled reporting information out of email.

  • Node.js
  • WebSockets
  • VBA

2023—2026

Production sites, deployed and maintained

Designed and deployed secure, high-performance sites for couriers, property services, care providers and dental practices — backend logic, authentication flows and frontend performance, running on custom Linux VPS systems I set up and keep running.

  • Next.js
  • PostgreSQL
  • nginx
  • Linux VPS
  • Stripe

Playground

And some things built purely because I wanted to know if I could.

Procedural worlds, a chess engine, audio-reactive visualisers, and a character who runs along the headings of the page. No client asked for any of it.