Portfolio
Projects
A few things I've designed, built, and shipped end to end — across AI, full-stack web, security tooling, and scientific computing. Code is on GitHub; some run live.
Tydskrif — It's About Time Live
An interactive almanac for the book It's About Time: 20 articles on temporal being, the quantum self, and the geometry where physics meets language — each grown from a source essay or paper, mapped across a night sky of 34 hand-drawn sketchbook plates.
Read the collection 🖼️Sketchbook Backdrop Live
All 34 hand-drawn It's About Time plates as a fullscreen, self-running backdrop — slow crossfades, an auto-advancing slideshow, keyboard, touch and click controls. The sketchbook, turned into ambient motion.
the backdrop 🤖Grok Export, mined Live
A year of Grok chats came back as 36MB of JSON. A shared read-only loader turns the useful threads into four working things: a Japanese spaced-repetition deck, a Japanese-Afrikaans-French conlang, a quantum "personality qubit" toy, and a sketchbook reflection wing. Private chats stay encrypted and offline.
View project 🎨Sketchbook, Reinterpreted Live
34 pages of art-brut sketchbook, each read by a machine and redrawn from scratch as a deterministic generative SVG — original beside reflection. Plus an "entangle my drawings" hot-thread graph that links the pages by shared motif.
View project 🖼️The Codex of Thom Live
A generative museum: 28 original animated canvas artworks in one self-contained page — no libraries, no network — each themed on a project here and hand-coded by a separate AI agent, then stitched into one gallery.
View project 🖼️AI Art & Research Live
A CRT-terminal gallery: 64 AI-generated frames in an accessible masonry lightbox, beside the research documents behind the ideas — essays, papers and certificates as one-click PDFs.
Open gallery ⚛️Quantum Computing Live
A Qiskit project that runs on a real 156-qubit IBM quantum processor — a Bell state, a quantum-kernel SVM, and generative art driven by 600k true-random bytes from the QPU itself. Includes two live in-browser quantum simulators: a statevector circuit lab and a quantum-kernel classifier.
View project 🧵weft — a new internet Live
A from-scratch alternative internet: its own TCP protocol, terminal browser, and an application-layer firewall with a live in-browser rule simulator. Pure Python stdlib, zero dependencies.
View project あAfurigana — Afrikaans in hiragana Live
Afrikaans written phonetically in Japanese kana. A rule-based transliterator ("Goeie more" → ふいー もれ), an af_JP system locale, and a live browser trainer with a reading quiz and a timed reading-speed drill.
Taalpakke — Afrikaans in ~40 scripts Live
Sibling of Afurigana: Afrikaans (and English) written in ~40 systems — scripts (Greek χουι μορε, Arabic خُإِي مُرِ, Hangul 후이 모레, Ge'ez, Devanagari…), glosses, text-effects (leet, vaporwave, emoji…) and accents (Kaaps, pirate, Scots). ~40 system locales plus a live trainer with the spelling rules and a sound map for each, and a floating picker that re-skins the whole site.
View project 🎌Japanese Tutor Live
An AI Japanese language companion, powered by Gemini: ask about grammar, get vocabulary breakdowns with kanji/hiragana/romaji readings, practice reading, or just hold a conversation in Japanese. A server-side key pool rotates through free-tier keys and fails over when one is exhausted.
Open the tutor 🗣️jalang — bilingual Linux
A localisation toolchain that makes the whole GNOME desktop bilingual — every string shown as Primary (Bracket) — by merging gettext catalogs into brand-new, fully reversible system locales.
RAG Document-Chat App Live
An "Ask my documents" assistant that answers from a private PDF library with grounded, cited answers. Python · FastAPI · Gemini, deployed in Docker.
View project 🛡️Cisco Syslog Triage
A fast Python CLI that turns raw Cisco syslog into actionable triage: severity breakdowns, interface flaps, routing instability, and Markdown reports.
View project 🌀5D Manifold Solver
A small, tested Python solver for the curvature of a five-dimensional metric — analytic Einstein tensor, scalar-field reconstruction, CI-backed.
View project 🕹️Browser Arcade Live
Ten classic and original games rebuilt in vanilla JavaScript and HTML5 Canvas — no frameworks — with accounts and a MySQL leaderboard.
View project 🎮Desktop Games
Three native Python games — a 2D vector-physics Asteroids in pygame, plus two 3D titles with assets authored in Blender and rendered in raylib.
View project 📨Job Application Pipeline
A Python pipeline that searches official job APIs and uses Gemini to draft a grounded, tailored cover letter per role — with a human-review gate, never auto-submit.
View project 📄CV Builder
One master profile → four role-tailored CVs in five formats each (Markdown, HTML, PDF, DOCX, LaTeX), generated by a single build script.
View project 📊Token Usage Widget
A GNOME Shell top-bar extension that surfaces the real, meaningful Claude Code token usage — 5-hour window, daily breakdown, and an hourly sparkline.
View project 🃏No-Script CSS Arcade Live
Eight browser games with zero JavaScript — navigation, scoring and win states built entirely from CSS state machines (:target, :has(), the checkbox hack).
Security+ Study Lab Admin
An interactive CompTIA Security+ (SY0-701) study tool: a cheat-sheet of commonly-confused term pairs, flip flashcards, and a scored, domain-tagged practice quiz. Vanilla JS, zero dependencies.
View project 🔐Password & Breach Auditor Live
A privacy-first credential checker: a from-scratch strength/entropy estimator with crack-time, plus a HaveIBeenPwned k-anonymity breach check where only a 5-char SHA-1 prefix leaves the browser.
View project 🌲Etheric Grove — 3D shooter
A three-chapter first-person explorer-shooter in pure Python: raylib rendering, procedural Blender worlds, a GLSL day/night shader, six enemy types, bosses and an endless mode.
View project 🗡️AFGROND — browser action-RPG Live
A Diablo II-style isometric ARPG in one zero-dependency vanilla-JS canvas app: three classes, procedural dungeons across three biomes, loot with affixes and gem sockets, champion packs, a mercenary companion, difficulty tiers and a story finale — playable live in the page.
View project 🎼WEEFSEL — generative music in ChucK Live
An album that composes itself: six algorithmic études in ChucK — no samples, every note chosen at run time by stochastic processes, a Markov chord walk and self-mutating patterns. Play them in the page, with a loom visualiser driven by the program's own note events — plus a live in-browser ChucK interpreter.
View project ⌨️Simulated ChucK runtime Live
A from-scratch lexer, parser and tree-walking interpreter for the ChucK language, in pure JavaScript — synthesising live on Web Audio. It demos ChucK's strongly-timed model (1::second => now blocks a shred) and concurrency (spork ~ green-threads on a priority scheduler). Edit the code and run it in the page.
MURKFALL — browser FPS Live
A true-3D first-person shooter in one self-contained HTML file: Three.js / WebGL, a maze with collision and gravity, hitscan combat, five waves, a projectile-lobbing boss, collectibles and a minimap — playable live in the page.
View project 🥚Tiny Tamagotchi Live
A browser virtual pet built spec-first: ticking vitals, a care loop, a sick/evolved state machine and personality — vanilla JS on a tiny observer store, no framework.
View project 🛡️CCIE Security Quiz Live
An interactive CCIE Security study quiz in Vue 3 — 31 questions loaded from JSON, single- and multi-answer scoring, and a results breakdown. Built with Vite, deployed static.
View project 🎨Vibe — writing & art showcase
A hand-built single-page showcase driven by a content manifest, with a small Python build step that curates media into deployable assets and ships it over FTP.
View project