Blog
All posts
Long‑form notes on web development, backend systems and real-world engineering decisions.
Mar 26, 2026By imkyssa11 min read
Your Database Is the Bottleneck. Not Your Code
Switching runtimes and adding Redis won't fix a slow app if the database is the problem. N+1 queries, missing indexes, wrong pool size — these are where the time actually goes. Covers EXPLAIN ANALYZE, index strategy, connection pool sizing, slow query logging, and when caching makes sense. Node.js and PostgreSQL examples throughout.
Mar 19, 2026By imkyssa5 min read
Bun is Fast. Your Event Loop is Not.
Bun wins benchmarks. Your app still bottlenecks on DB connections, blocking CPU work, and N+1 queries. Fix those first. Runtime is the last variable to change — not the first.
Mar 14, 2026By imkyssa4 min read
Microservices: Shackles on your feet
Microservices aren't wrong — they're just overused. Learn when splitting your monolith actually pays off, when it creates more problems than it solves, and why a modular monolith is the answer most teams skip.
Mar 12, 2026By imkyssa5 min read
Why Headless Browsers Get Detected: A Technical Breakdown
Modern bot detection is a multi-layer scoring system. The TLS handshake leaks your identity before any JavaScript runs. Canvas and WebGL fingerprints identify the render environment. Behavioral signals catch automation that moves too cleanly. Most scraping guides address only the JavaScript layer — the easiest to detect and the last thing a serious system relies on.
Mar 11, 2026By imkyssa4 min read
Refactor: When It Actually Changes Things
Refactor when code resists change — not when it looks messy. Covers React separation of concerns, CSS specificity flattening, DOM batching, bundle tree-shaking, and class conflict resolution with tailwind-merge. Includes browser support tables and real performance impact data.
Mar 10, 2026By imkyssa4 min read
CSS Grid vs Flexbox: Which One Should You Use to Center a Div?
Flexbox is best for component-level centering, Grid for page layouts and two-axis control. Both are valid — they just run different layout algorithms.