What I build.
Custom software, written by the person you talk to. No account manager and no team of five billing against your project. If you want to see the work before the pitch, the work is here.
Web applications rendered on the server
Grails, htmx and Postgres. Pages that arrive complete, stay fast on a bad connection, and do not need a megabyte of JavaScript to show a form.
Most of what I build works this way. The server owns the state and sends HTML, htmx swaps the piece that changed, and there is no separate frontend app to keep in sync. It means fewer moving parts, and it means the thing still works on a phone in a car park with one bar of signal.
- Grails 6 on GORM 7 and Hibernate 5, Spring Security for access
- Postgres full text search with generated tsvector columns and GIN indexes
- Server sent events over Servlet async for live updates, no polling
- Tailwind for the interface, no build step to babysit
Built this in TimeMemoir · Korean School House · OBT Portal
Applications that keep working offline
Progressive web apps for people who are not always in range of a signal, installable on a phone and useful without one.
Field work does not wait for connectivity. I have built this for translation workshops running in places where the network comes and goes, and for a school where parents check the calendar on a phone. The pattern is the same: make it installable, make it work from cache, and reconcile when the connection returns.
- Installable PWAs with an offline cache, no app store required
- Multilingual interfaces where the audience is not all English speaking
- Built for a phone first, then made to work on a desktop
Built this in OBT Portal · Vineyard of God
Odoo development and integration
Custom modules, and getting Odoo to talk to the systems around it rather than sitting on its own.
Odoo is where a lot of businesses already keep their work, and the interesting problems are usually at the edges: getting it to talk to version control, to reporting, or to whatever else the business actually runs on.
- Custom modules and model extensions
- Integration with GitLab, external APIs and reporting
- Migration and data work between Odoo and other systems
Terminal tools and command line software
Rust and Python for people who would rather not open a browser to get something done.
Some work belongs in a terminal. It starts instantly, it runs over SSH, and it does not need a desktop session. I have built a digital audio workstation, a chess platform and a Soulseek client this way, all of them things people would normally expect to be a browser app.
- Rust for anything that has to be quick or run for a long time
- TUIs that work over SSH on a machine you do not own
- Single binary distribution, published to crates.io and PyPI
Built this in Phosphor · Cheshire Chess · slskd-cli
Data work and machine learning
Datasets that maintain themselves, and models trained on data that is actually yours.
This ranges from a dataset of real network attacks that updates itself every hour, to training a model on how one specific person talks so that what comes back sounds like them.
- Automated collection pipelines that keep running without you
- LoRA fine tuning on your own data, on hardware you control
- Visualisation and reporting on top of it
Bigger than one developer?
Everything above is work I take on myself. For engagements that need a team behind them, my professional work is at Zelifcam, and that is where those projects belong.
Start a conversation
Tell me what you are trying to build and I will tell you honestly whether I am the right person for it.