First post
First post
This site used to be 176 files and 29K lines of TypeScript. Supabase, API routes, middleware, admin panel, analytics, auth, rate limiters, inline editors, CI/CD safety nets. For a personal site.
I deleted all of it.
What's left
Five pages. A handful of markdown files. JSON for config and projects. A snake SVG on the /about page. No database. No login. No backend.
Builds in 30 seconds. Deploys to Vercel in two.
Why
I spent more time maintaining the site than writing for it. Every dependency was another thing to update. Every API route was another thing to break. Every supabase table was another thing to migrate.
It's just a site. It should ship without worrying.
What's coming
Android Binder internals I've been digging into. Rust CLI tools I actually use. AI agent loops that don't fall over. Probably more stuff I'll build and write about along the way.
More Essays
Building c2proof: C to Rust Migration with Verification
A verifier-first c2rust wrapper. Give it a flat C repo, and it outputs a compiling Rust port PR alongside a mathematical proof artifact.
systemsBuilding code2paper: Turn Any Codebase into an Academic Paper
A stdlib Python CLI and Claude Agent Skill to convert an entire codebase into a readable academic paper in Typst, LaTeX, PDF, and HTML.
projectsBuilding Kharcha: India's Zero-Friction UPI Expense Tracker
How I built a native Android expense tracker that automatically captures UPI payments from GPay, PhonePe, and Paytm with zero AI and 100% data ownership.