Technical Notes

Browse technical notes, course breakdowns, and debugging writeups organized by topic.

PostgreSQL backups: what pg_dump, WAL, and PITR actually do

Supabase RLS Beyond the Policy UI: Make Authorization SQL Testable

PostgreSQL RLS is not an automatic WHERE clause: four boundaries for multi-tenant data

PgBouncer does not make PostgreSQL infinite: budget connections before choosing a pool mode

LeetCode 198: House Robber with take-or-skip rolling states

LeetCode 70: Climbing stairs from repeated recursion to two rolling states

A retry is not a second attempt: the real boundaries of API idempotency keys

LeetCode 152: Why maximum product subarray needs both extremes

LeetCode 53: Maximum subarray without rescanning every starting point

LeetCode 238: Product of array except self with prefix and suffix products

Why does the next page repeat a row? OFFSET and keyset pagination

ArtInt Reading Notes: Intelligent Agents and the AI Basics I Mixed Up

The site is deployed. Why am I still seeing the old version?

LeetCode 15: 3Sum in TypeScript, Why Skipping Duplicates Does Not Lose Answers

LeetCode 11: Container With Most Water in TypeScript, Why Move the Shorter Side?

LeetCode 125: Valid Palindrome in TypeScript, From Cleaning to In-Place Two Pointers

Don't block first: use CSP Report-Only to find real dependencies, then tighten safely

LeetCode 424: Longest Repeating Character Replacement in TypeScript

LeetCode 3: Longest Substring Without Repeating Characters in TypeScript

A schema migration is not one SQL statement: expand, backfill, and observe before you contract

LeetCode 49: Group Anagrams in TypeScript, From Sorting Keys to Count Signatures

LeetCode 347: Top K Frequent Elements in TypeScript, From Frequency Sorting to Buckets

LeetCode 242: Valid Anagram in TypeScript, From Sorting to Character Counts

Do not add an index first: use EXPLAIN, statistics, and ANALYZE to see what PostgreSQL is guessing

LeetCode 1: Two Sum in TypeScript with a Map

LeetCode 217: Contains Duplicate in TypeScript with a Set

LeetCode 121: Best Time to Buy and Sell Stock in TypeScript

Indexes follow query shape, not a column checklist

Transaction Boundaries for Orders, Inventory, and ACID

LeetCode 2574: Left and Right Sum Differences in TypeScript

LeetCode 724: Find a Pivot Index in TypeScript

LeetCode 1732: Find the Highest Altitude in TypeScript

LeetCode 1480: Running Sum in TypeScript

Before JOIN Syntax, Count the Relationship

LeetCode 128: Longest Consecutive Sequence in TypeScript

LeetCode 56: Merge Intervals in TypeScript

A SELECT Needs Four Decisions: Columns, Rows, Order, Limit

A Database Is Not a JSON Blob: Let Constraints Protect Data

AbortController: Cancel Stale Work, Not Every Error

Navigation API: A Router Primitive, Not an SPA Mandate

Speculation Rules: Faster Navigation Must Not Do Things Early

Browser Scheduler: Classify Work Before You Queue It

MCP Tool Results: Decisions, Not API Dumps

<details> Is Disclosure, Not an Accordion System

Popover API: Less UI State, Not Free Accessibility

PostgreSQL SKIP LOCKED: Job Queue, Not Magic Broker

Native CSS Carousels Are an Enhancement, Not a Rewrite

Cloudflare OS: Sandboxes Are Not the Security Model

PostgreSQL 18 Skip Scan: The Leftmost Rule, Revisited

A Green Build Is Not a Live Release

MCP Apps Put UI in Chat, Not in Every Tool

Your SSR Data Is Part of the Page Weight

View Transitions Make MPAs Smoother, Not SPAs

Cloudflare Containers: When a Worker Is Not Enough

UUIDv7 for Primary Keys: Better, Not Universal

Agent Skills: Build Verifiable Workflows

Caveman: Terse AI Agents, Same Accuracy

Git Merge vs Rebase: Which Should You Use?