I got into software by making operations less painful.

That still shapes how I build: useful first, polished second, maintainable before it becomes someone else's problem.

Manual work became scripts

Started in operations and used VBA, then Python, Selenium and Pandas to remove recurring reporting work. This was the practical beginning: messy workflows, real users, and immediate feedback when automation helped or hurt.

Scripts became systems

Built the first serious internal platforms at GiveTel: MySQL/RDS databases, AWS API Gateway/Lambda endpoints, TypeScript interfaces, batch exports, call-recording ETL, OAuth and security controls.

Systems became products

Founded Sound Systems and joined FeeWise, moving deeper into production product work: AI support agents, automated refunds, payment reporting, client portals, phishing simulation platforms, migrations and founder-led product builds.

Parallelising development

Agentic coding changed the shape of my workflow. A lot of recent public work is about making autonomous changes easier to isolate and review: worktrees, tmux, Neovim plugins, Go CLIs and small tools that make iteration cheaper.

  • Ship the smallest useful version, then make it observable.
  • Prefer boring infrastructure until the problem proves it needs drama.
  • Automate operational drag before it becomes team culture.
  • Keep local development fast enough that experimentation is cheap.
  • Make systems understandable to the people who have to operate them.