Software engineer. Full-stack systems in TypeScript and Postgres, built on boring, well-understood architecture.

I work where the app meets the database — Next.js, Payload and Postgres — and spend the rest of my time on the CS and ML research side. Projects and writing below.

Based in

Colombo, Sri Lanka

Working in

TypeScript, Next.js, Postgres

Writing about

Full-stack systems and CS/ML research

Reach me

Selected work

3 projects
  • 01

    Portfolio v3

    The site you are reading. Payload CMS + Next.js, Supabase for data and media, deployed on Vercel with functions pinned near the database.

    Migrations are the source of truth. `db.push` is false in every environment, dev included, so each schema change is an explicit generated migration that is committed and applied before deploy — and Vercel never migrates on its own.

    1 deployment

    the Payload admin and the public site ship from a single Next.js app, with the schema committed ahead of every deploy

  • 02

    doc-sync

    A Claude Code skill that keeps a repository’s documentation honest — by making it impossible to claim a document is current unless something actually checked it.

    Certify per document rather than per run: each verified doc carries its own stamp, and the global baseline is demoted to a scheduling hint that asserts nothing. Anything never checked stays visibly stale forever.

    0 model calls

    the staleness audit is a shell script — cited paths existence-checked, stamps read back — so it can fail a build with no API key

  • 03

    editorial-svg

    A Claude Code skill that draws editorial illustrations for articles — and spends almost all of its words on the decision before the drawing, because that is the step a model skips.

    Put the skill’s weight on finding the abstraction, then compose it from a fixed set of verbs under a hard budget — seven objects, four colours, no text, legible at 160px. It refuses to draw what it cannot say in seven marks.

    10 illustrations

    every post and project on this site, each rendered byte-identical from a source committed beside it

About

Software engineer in Colombo, Sri Lanka. I build full-stack systems in TypeScript, Next.js and Postgres, and write about the parts that turned out harder than expected.

Get in touch

Happy to talk about full-stack work, infrastructure, or anything on the research side.