Writing 13
- Building the myfl.uk PS5 homebrew directory
A searchable resource directory with prerendered pages, GitHub release metadata and checks that keep the published content consistent.
- Porting Nuvio TV to the PS5
Connecting Nuvio's browser interface to EVO Player, fixing controller focus and seeking, and serving the interface from the console.
- PocketWiki: an offline library on an ESP32
An ESP32-C3 serving a searchable, Wikipedia-derived library over its own Wi-Fi, and the pack format that puts 825 articles in 1.9 MB without spending static RAM.
- LLM fundamentals: pretraining, fine-tuning and evaluation
How language models generate text, how training methods differ, and how to interpret results from LoRA, QLoRA, LIMA, DPO and reasoning-model research.
- RAG: diagnosing retrieval and answer failures
A practical guide to checking ingestion, retrieval, context, citations and permissions in a retrieval-augmented generation system.
- PetLM: teaching a tiny language model to be a virtual pet
A 25M parameter model, a strict little DSL, and a browser toy that runs locally with WebGPU or WASM.
- Self-hosted SMS gateway with an old Android phone
How I built a self-hosted SMS gateway using a spare Android phone, a custom FastAPI relay, and Tailscale for secure, zero-cost text messaging from my AI agent.
- educated.space — AI-Powered Educational Resource Generation
AI-powered K-12 educational platform. Generates curriculum-aligned worksheets, quizzes, and info sheets. Live at https://educated.space
- Fixing Quran Audio Segment Timings with WhisperX
How I used WhisperX forced alignment to fix inconsistent word timings in a Quran reading app.
- QuranZen: A Hybrid Architecture Quran App
Building a full-stack Quran exploration app with React 19, FastAPI, and a hybrid database design.
- Running LLMs on a Steam Deck in 5 minutes
A step-by-step guide to setting up your Steam Deck to run local Large Language Models (LLMs) using llama.cpp and a Distrobox container.
- Fine-tuning a 3B Model for Transcript Analysis: Better Than 70B Models?
How I fine-tuned Llama 3.2 3B to process transcripts locally, achieving better results than models 5-8x larger through specialized training.
- ToddlerTones: offline, toddler-proof soundboard
Designing and building a distraction-free Android app in Kotlin/Compose with low-latency audio and a gentle 'Find it' game.
Projects
educated.space
AI-generated worksheets, quizzes and info sheets aligned to the K-12 curriculum.
PocketWiki
A searchable offline reference library that runs on an ESP32-C3 and serves its own Wi-Fi.
QuranZen
A Quran exploration app with word-level audio timings fixed by forced alignment.
myfl.uk
A searchable directory of PS5 homebrew built from GitHub release metadata.
PetLM
A 25M-parameter language model that plays a virtual pet, running locally in the browser with WebGPU or WASM.
ToddlerTones
An offline Android soundboard a toddler can't escape from.