Engineering Journal
Notes & Explorations
Problems I've thought through, decisions I've had to make, and things I'm still figuring out. All drafts — written as I go.
01Realtime Systems
DraftT20 Arena
Realtime auction state: what I learned building T20 Arena
How auction state gets corrupted when two users bid at the same millisecond — and why pushing bid logic into PostgreSQL RPC functions was the right call.
- ↳Race conditions in concurrent bidding — two users clicking bid at the exact same time
- ↳Why server-authoritative state beats optimistic UI for auction systems
- ↳Supabase Realtime broadcast vs. PostgreSQL NOTIFY — when to use each
- ↳Room recovery: what happens when the host disconnects mid-auction
- ↳Mobile responsiveness in a game-like auction interface
02Data Pipelines
DraftTalent Intelligence AI
Building evidence-based candidate ranking
Standard ATS systems filter out qualified candidates who don't keyword-stuff. Here's the different approach we took — scoring contextual evidence instead of term frequency.
- ↳Why keyword overlap is a poor ranking signal at scale
- ↳Extracting contextual evidence from unstructured resume text with Python
- ↳Designing a deterministic, explainable scoring formula
- ↳CPU-only constraints and what they force you to prioritize
- ↳Testing on 100K official dataset vs. 1M synthetic stress data
03Product Engineering
DraftIPOCraft
IPOCraft: building for discoverability, not just data
Dense financial data spread across poorly designed websites is a product problem, not just a data problem. What I learned designing for discoverability and SEO.
- ↳Why SSR matters for financial data — search engines need to index it
- ↳Structuring messy IPO data into clean, queryable Supabase schemas
- ↳Next.js ISR caching tradeoffs: when stale-while-revalidate breaks live data
- ↳Product thinking: what information do users actually need vs. what's available
04Backend Architecture
DraftDevicely
Switching to Java Spring Boot from Node.js: what I noticed
Coming from TypeScript/Node.js, picking up Java Spring Boot for Devicely and Prompt2Craft surfaced interesting differences in how you think about API design.
- ↳Layered architecture: why Controllers → Services → Repositories actually matters
- ↳Typed request/response DTOs vs. ad-hoc JS objects — the difference shows at scale
- ↳Dependency injection — strange at first, makes sense after you try to test without it
- ↳Deploying a Spring Boot JAR to Render vs. a Next.js app to Vercel
05AI Systems
DraftPrompt2Craft
AI generation without user control is just a demo
Prompt2Craft taught me that pure AI generation produces output that's 'almost right' but unusable. The interesting engineering challenge is in the editing layer.
- ↳Structured JSON generation vs. freeform text — why you want the former from an LLM
- ↳Prompt engineering to enforce schema-consistent output reliably
- ↳Building editable React state over AI-generated content without losing structure
- ↳Where the AI/human handoff should actually happen in a workflow product
These are personal engineering notes — not polished articles. They reflect things I'm actively learning, problems I've encountered, and decisions I've had to make while building real projects.