Projects
This page is a collection of my ongoing and previous projects.
Redlines

I am the maintainer of the free and open source python library, redlines. Redlines produces a text showing the differences between two strings/text. The changes are represented with strike-throughs and underlines, which looks similar to Microsoft Word's track changes. This method of showing changes is more familiar to lawyers and is more compact for long series of characters.

It started out as a side project of a side project, but has grown from strength to strength for over three years. Now as Benevolent Dictator for Life (BDFL), I plan where this package goes, listen to feedback and fix bugs. Unpaid.
I don't know why it is downloaded several thousand times a day. It must be very useful.
You can read my posts on redlines in this blog.
zeeker.sg

Ever since law school, I dreamt of a world where Singapore's legal information was data — structured, searchable, accessible to everyone. That dream survived Wordpress, MongoDB, ckan, and several false starts. When GenAI made solo infrastructure feasible, I built it. 150+ hours of evenings and weekends. Then I never told anyone about it.
data.zeeker.sg is Singapore's first public legal news API. Python scrapers check legal news sources daily, store articles in SQLite with full-text search, and serve them as structured JSON through Datasette — all for $6–12/month. The first source took 150 hours; the second took 2–4. That's what infrastructure does. 500+ articles collected, automatic daily updates.
The full vision is still years ahead: data → apps → AI services → whatever comes next. data.zeeker.sg can try weird things — command-line agents, experimental formats, ideas that might fail. That's what solo builders can do. If you're building something in the Singapore legal data space, the API is open. Come build something strange.