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.

Realtime SystemsData PipelinesProduct EngineeringBackend ArchitectureAI Systems
01Realtime Systems
Draft

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
Draft

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
Draft

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
Draft

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
Draft

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.