Writing
Essays, engineering reflections, and notes on software culture, problem-solving, and continuous learning.
Why Vector Search Alone Fails in Production (And How Hybrid RAG Fixes It)
Why cosine similarity on embeddings misses exact keywords and part numbers, and how combining BM25 with dense vectors using Reciprocal Rank Fusion (RRF) creates reliable RAG systems.
Why I Write: Turning Scattered Ideas into Reliable Foundations
Why thinking in your head keeps you trapped in familiar comfort zones, and how writing for an external reader finishes the construction of an idea.
Why Open Source?
Why open source caught my attention, from the history of free software to the people and communities building software together.
The Hardest Part of Building an AI SaaS Was Google OAuth
Building a multi-language book generation engine in FastAPI and Celery took six weeks. Getting Google Cloud to approve our Drive scopes took almost three months.
Rebuilding a Reporting Engine Inside a Legacy SaaS
What happened when I took ownership of reporting on an active nonprofit platform running React 16, raw SQL, and AWS SAM without breaking live client workflows.
Scraping 90,000 Financial Symbols Daily Without Blowing the Proxy Budget
When you have 90,000 tickers to update every day, running a headless browser for everything is too expensive. Here is how a dual-mode engine solved it.
Scraping Hotel Reviews by Intercepting Browser API Traffic
Standard headless scrapers fail against modern anti-bot setups. Here is how headed Playwright, network request interception, and asset blocking extracted Expedia reviews on a budget.
What Makes Multi-Vendor Checkout Surprisingly Hard to Build
Splitting delivery classes across multiple sellers, applying coupon rules, and chasing down hydration race conditions in a live Next.js marketplace.