Things I have built or am in the process of building
(approximately in reverse chronological order)
+ Blitz
Same framework as X Blitz, adapted for addition and tuned for a younger kid: small numbers to start, more time per round, and wrong guesses don’t end the round so she can keep trying. Part of the kids’ games collection.
Play the Game | See the Source Code
Letters
A phonics game for my youngest, who’s five and just starting on letter sounds - too young for the others. An animal emoji with its name missing the first letter, four letters to pick from. Says the animal name out loud, cheers when you get it right. Part of the kids’ games collection.
Play the Game | See the Source Code
Word Spotter
A child I know was starting to get the hang of nouns, verbs and adjectives, so his mom asked if a game could exist to help him practice. I reused the x-blitz framework and just replaced the question format.
Play the Game | See the Source Code
Wordie
A blatant Wordle ripoff, adapted to make it easy for younger kids. Tap letters instead of typing, a few are pre-filled to give a head start, and once you’ve found a letter it stays locked in on every future guess. Confetti on every good tile.
Play the Game | See the Source Code
X Blitz
An arcade-style game for my son to help him learn times tables. Show an x × y problem and a 3x3 grid of answers. Added some gamification to make it more fun.
Play The Game | See the Source Code
Haha Host
A single Go CLI for publishing local HTML files to private, optionally password-protected links - built so Claude (or I) can turn a report or writeup into a shareable page without reaching for a full hosting setup. Backed by S3 + CloudFront, single-operator, deliberately minimal - no accounts, no analytics, no expiry.
https://github.com/ckritzinger/hahahost
FocusOn
Started as a super simple task tracker: no cloud, no cruft, just a little widget that floats above your windows showing what you’re meant to be working on. It’s grown into a local-first time-tracking and invoicing tool. The widget logs your sessions, and a companion CLI (focuson) turns that logged time into client invoices with rates, PDF generation, and double-billing prevention, all backed by plain CSV/TOML files in a git repo you control.
https://github.com/ckritzinger/focus_on
Shelf Help
My wife is an avid reader of parenting and other self-help books, but she said she struggles to apply their teachings in every day life. Shelf help lets you vent about something that has happened, listens empathically and then allows you to choose an appropriate famous thinker to give you feedback on the situation, from Marcus Aurelius to Dr Becky Kennedy
https://shelfhelp-inky.vercel.app/
Mr Burns
I’ve always been a big fan of Dr David Burns and of CBT, but the paper worksheets have always been a hassle, and I find it quite hard to do effective CBT completely solo - having a sounding board seems really useful. The new TEAM CBT is even better, but even more of a process to manage, which is particularly hard when you have the blues. This is an attempt to make the process more manageable in an online format, and with AI coaching you and providing feedback.
https://mister-burns.vercel.app/
Daily Maverick App (2021)
Discovered and used an undocumented API to build an app to read my Daily Maverick news. Shared the app with a few friends and it went quietly viral. When DM eventually found out about it, they were very understanding - they supported me to properly launch the app under their brand and eventually purchased it.
https://www.dailymaverick.co.za/daily-maverick-app/
Turtology (2016)
Having learned to code in Logo as a kid (I’m that old) I wanted to see if Logo still had a place in the world, and whether it could be used to create a sort of social coding environment for kids - something between Replit (which didn’t exist at the time) and Tiktok (which didn’t exist at the time). Doesn’t really need to exist any more, but I still think Logo is a great language for learning. When I moved to other languages I was very surprised to learn that most didn’t treat functions as first class objects (which has fortunately changed over the years, thanks Ruby/Python!).