I Built CLI Tools for Claude Code. Here's What I Learned About Designing for AI Users
I built agent-friendly interfaces for my Python library following every recommended pattern—JSON output, discovery commands, enhanced errors. Then Claude hallucinated flags that don't exist and ignored the documentation I wrote for it.
What Top 10% Actually Means (For a Lawyer Who Codes)
177K monthly downloads. Top 10% of 700K packages. Zero revenue, one maintainer, weekend work. Here's what "success" actually means for open source maintainers—and what I'd tell anyone considering building their own tools.
Open Source, AI, and Why October Matters
This Hacktoberfest, I'm not contributing code—I'm maintaining my own. Two years after redlines went viral, I'm adapting it for AI agents. The lesson: tools that don't work with AI will fade. Open source needs to evolve with how people actually work.
Building SG Law Cookies: Insights and Reflections
I share my experience and process of generating daily newsletters from Singapore Law Watch using ChatGPT, serverless functions and web technologies.
Augmenting ChatGPT with Your Data Can Improve Its Performance
I discuss how ChatGPT can be augmented with custom data to improve its performance using Singapore law as an example.
Take your web scraping to a new level: Let's play with scrapy
Changing my code to scrapy, a web scraping framework for Python, was challenging but reaped many dividends.
Happy holidays
I muse about my latest holiday project - explaining why some primary schools are not popular schools.
[Part 5] Do more with docassemble: Provide an audio file for your user to download 💾
In the final part of this docassemble, Google TTS tutorial, we provide an audio file for the user to download.
[Part 4] Do more with docassemble: Calling Google Text To Speech 🎺
In this part of my docassemble tutorial, we work with an external service, Google Text to Speech's client library.