Avismara Hugoppalu
> ls ~/musings # 21 entries · field notes to first principles

Notes from the workbench.

War stories from thirteen years of shipping iOS, the algorithms I teach as a guest lecturer, and notes from learning how AI models actually work — written as I go, weak spots and all. Some are deep first-principles builds, some are five-minute confessions, and a few are drafts published before they were ready, on purpose. Filter by what you're here for.

AII didn't learn LangGraph. I interrogated it.What a graph-execution framework looks like rebuilt from a Swift systems bias — typed state overlays, edges as projection layers, and context selection as a retrieval problem solved on the edge. A 6/10 design, published honestly.Jun 2026
7 min
METAThe golden age of engineeringLLMs are the first abstraction layer that's non-deterministic — and the cure is the exact discipline senior engineers already carry. An argument I derived myself, with its bias named and its weak flanks left open.Jun 2026
11 min
METAI built my own Socratic tutor instead of taking a courseWhy courses and even a raw chatbot get learning wrong, the science of what fixes it, and the open-source Socratic tutor I built to do it — it designs your curriculum, refuses to let you self-report, and derives mastery from evidence you can't fudge.Jun 2026
18 min
AIDRAFTWhy the same prompt at temp=0 still returns two different answersGreedy decoding isn't determinism. A short tour of where the randomness actually hides.Jun 2026
4 min
DS&AI kept solving everything with dynamic programmingA confession, and the one question that fixed it — do the choices interact? The spine for a series on reaching for the lighter pattern instead of reflexively reaching for DP.Jun 2026
4 min
DS&AGreedy is easy to code and hard to justifyThe local choice is only safe if you can prove it. The choices-interact test, the exchange argument, and deriving the Gas Station proof from scratch instead of memorizing the rule.Jun 2026
8 min
DS&ASliding window: the prerequisite nobody mentionsA window is only legal when the quantity you track is monotonic. The need-counter as elegant state, and the record-placement bug that silently decides minimum vs maximum.Jun 2026
10 min
FIELD NOTESA/B testing from first principles (the 95% tutorials skip)Deterministic bucketing, sticky assignment, exposure vs conversion, and the statistics that decide whether you actually learned anything — the part the tutorials never reach.May 2026
12 min
DS&ABinary search has nothing to do with sorted arraysIt searches a monotonic answer space, not an array. Why min/max isn't always DP, and the isValid + monotonic-boundary checklist that tells you when to bisect a range.May 2026
7 min
DS&APrefix sum: turning a range query into a lookupO(n) range queries become O(1) differences. Why map[0] = 1 seeds the empty prefix, the sum−k trick, and the frequency-vs-first-index fork — the tool I kept mis-reaching for.May 2026
8 min
DS&ATwo pointers is a family, not a techniqueConverging vs read-write — they share nothing but two indices. Why all sliding windows are two-pointer but not the reverse, and the Trapping Rain Water insight that only needs which side is shorter.May 2026
7 min
FIELD NOTESHow one SDK blew our launch budget — and how we got it backAn analytics SDK quietly multiplied our pre-main time. Splitting dylib cost from initializer cost with DYLD_PRINT_STATISTICS, deferring init past first-interactive, and a CI gate so it can't regress again.May 2026
9 min
DS&ADynamic programming is recursion with a cacheDefining the state is the whole game; the recurrence falls out. Top-down by default, the Int.max sentinel bug, and why bottom-up is a space optimization, not the honest form.May 2026
10 min
DS&AThe monotonic stack is a waiting roomUnresolved elements waiting for the thing that answers them; amortized O(n) because each is pushed once and popped once. And why the leftovers aren't a bug — they're the answer.May 2026
10 min
DS&ACarry history or start fresh: Kadane in one decisionMaximum subarray as a single per-step choice — and why sliding window can't do it: the same symptom needs the opposite fix, so there's no consistent shrink rule.May 2026
5 min
FIELD NOTESKilling a scripted promo-abuse attack with App AttestSomeone disassembled our IPA, rebuilt the API in Python, and farmed promos at scale. Per-request App Attest assertions, a DeviceCheck flag that survives reinstall, and leading-indicator scoring broke the economics.May 2026
9 min
DS&AA heap is an array pretending to be a treeParent/child is pure index arithmetic; two repair operations derive everything else. When a heap beats sorting, and two bugs that looked helpful while quietly breaking the invariant.May 2026
9 min
FIELD NOTESRouting as architecture: resolution is data, navigation is a side effectA first-principles build-up of an iOS deep-link and navigation layer — why the routing engine and the coordinator are two orthogonal layers, what each one actually buys, and the lifecycle leaks nobody warns you about.May 2026
32 min
FIELD NOTESOne UI, two platforms: a shared Rust core for server-driven UIiOS and Android were re-implementing the same parse-and-validate logic and drifting. A UniFFI Rust core makes the rule set single-source, ships flows without app releases, and old clients degrade instead of crashing.Apr 2026
13 min
FIELD NOTESMake a malformed deep link impossible to crash onThree hand-rolled entry points, inconsistent auth, crashes on attacker URLs. Separating resolution from execution — the engine returns a decision as data, never navigates — collapsed three bug classes into one testable gate.Apr 2026
8 min
METAMEDIUM ↗(Im)permanence in a digital worldWriting was always permanent — until WhatsApp let us un-send and Facebook let us edit. An older essay on what we give up when the written word stops being final.Nov 2019
5 min