Blog
Updates on what I'm building, technical learnings, and insights from my engineering journey.
- Running Multiple AI Agents on the Same Repo with Git Worktrees
How git worktrees give each AI agent its own branch and directory, eliminating the file conflicts and clobbered state that happen when two agents share a working tree.
building-in-public engineering ai-agents fish-shell git-worktrees - How NRIs Can Find Their Family's Land Records in India for Free
A log of digging through Punjab's free but painful land record systems as an NRI: what the records actually show, where the data is locked, and how to access it without paying a middleman.
Land Records engineering land-records - Upgrading a Legacy React Widget from Node 12 to 18 with Multi-Agent Claude
How running three specialized AI agents — Lead, Frontend Dev, and QA — turned a tedious Node version migration into a focused, fast, and surprisingly painless process.
building-in-public engineering ai-agents node-upgrade react - How Effective Dev Teams Produce Quality Work
Lessons from building a food truck catering marketplace in a single session: why decisions made upfront compound, and how small feedback loops keep teams moving.
building-in-public engineering foodatruck product - Adding Interactive API Documentation to Rails with Swagger and rswag
How we added OpenAPI 3.0 documentation to a Rails app using rswag, with admin-protected access and interactive testing for customers.
building-in-public engineering rails api - Sunday Experiment: Building a Private Claude Code Alternative
A weekend deep-dive into self-hosting LLMs for coding assistance, what worked, what failed, and why gpt-oss emerged as the best option.
building-in-public engineering ollama llm self-hosted - LLM Failed to convert a WordPress website to Static HTML/CSS
A journey through the hidden complexity of WordPress migrations, LLM limitations, and why sometimes the 'simple' solution isn't actually simpler.
building-in-public engineering wordpress static-sites - Rails Upgrade Series: From Rails 4.2 to Rails 8.0
A complete guide to upgrading a legacy Rails application from version 4.2 to 8.0, covering test infrastructure, Zeitwerk migration, gem compatibility, and lessons learned across 8 phases.
building-in-public engineering rails rails-upgrade legacy-code - Rails Upgrade Phase Five: Rails 6.0 to 6.1
Navigating the upgrade from Rails 6.0 to 6.1, dealing with Sprockets 4 incompatibilities, cattr_accessor changes, and Sass deprecations.
building-in-public engineering rails-upgrade ruby - Rails Upgrade Phase Six: Rails 6.1 to 7.0
Navigating Zeitwerk timing issues, Airbrake gem incompatibilities, and fixture path changes in the Rails 7.0 upgrade.
building-in-public engineering rails-upgrade ruby - Rails Upgrade Phase Seven: Rails 7.0 to 7.1
Navigating PaperTrail compatibility, Zeitwerk's stricter autoloading, ActionController::Parameters enforcement, and secrets.yml deprecation in Rails 7.1.
building-in-public engineering rails-upgrade ruby - Rails Upgrade Phase Eight: Rails 7.1 to 8.0 - The Final Milestone
Completing the Rails upgrade journey from 4.2 to 8.0: navigating Ruby 3.2 requirements, PaperTrail updates, Minitest incompatibilities, controller test state changes, and Devise lazy loading.
building-in-public engineering rails-upgrade ruby - Rails Upgrade Phase Four: Rails 6 Upgrade, Surviving Zeitwerk, Apple Silicon, and Ruby 3
A detailed account of upgrading a Rails 5.2 app to 6.0 and Ruby 3.1, navigating Zeitwerk autoloading, Apple Silicon compilation issues, and test infrastructure challenges.
building-in-public engineering rails ruby upgrade - Adding Stripe Subscriptions to a Phoenix/LiveView App: Lessons from CloudNori
A deep dive into integrating Stripe subscription billing with Phoenix/Elixir, including webhook handling, rate limiting, and the mistakes I made along the way.
building-in-public engineering elixir phoenix liveview stripe - Rails Upgrade Phase Two, Three, :Rails Upgrade, The Hidden Costs of Rails 5.2
Ten production-breaking changes we hit upgrading from Rails 5.0 to 5.2, from belongs_to requirements to DataTables incompatibilities
building-in-public engineering rails rails-upgrade - Rails Upgrade Phase One: of Upgrading a Legacy Rails App: Test Coverage First
How we improved test coverage from 30% to 80% before upgrading a Rails 4.2 application, and why that foundation made all the difference.
building-in-public engineering rails testing legacy-code - Building in Public: Starting a New Chapter
Launching a new portfolio site and committing to building projects in public. Here's what I'm working on and why.
meta projects building-in-public - Migrating My Portfolio from Static HTML to Astro
How I rebuilt my engineering portfolio using Astro, content collections, and modern tooling - while learning what matters in a developer site.
building-in-public engineering astro web-development - How I Built an AI Agent to Automatically Write My Engineering Blog Posts
Here's how I built an AI-driven workflow to automatically generate developer documentation without interrupting coding flow.
engineering meta ai automation - Lidger: From Rails + React to Phoenix LiveView
Why I rebuilt my personal dashboard from a separate Rails API and React frontend into a unified Phoenix LiveView application, and how it's transformed my development speed.
elixir phoenix liveview rails react architecture lidger