Skip to content

tutorials

The reading behind the practice.

Written walkthroughs of the ideas the exercises drill — with fill-in-the-blank checkpoints inline, graded as you read. Each one ends where reading should: at the exercises that make it yours.

36 walkthroughs · 3 tracks · checkpoints graded in-page, free

The last three of each language — reviewing generated code, the three-message budget, and buying context — are the same craft, written against that language's actual defects.

ReactTypeScriptVue

start here

  1. How to Learn Programming Effectively

    beginner · 7 min

    How retrieval practice, typing instead of copying, spaced review, and real debugging combine into a method for learning to code, and where that method breaks down.

  1. 01React FundamentalsJSX compiles to function calls, components are functions that return them, and props are read-only — the three ideas everything else in React sits on.beginner · 8 min
  2. 02Hooks in DepthuseState batches more aggressively than people expect, most useEffect calls solve a problem render could handle directly, and useContext re-renders every consumer on every change.intermediate · 8 min
  3. 03State ManagementuseReducer, Context, and lifting state up cover nearly everything client state needs — the real argument for a state library is usually about caching server data, not about React running out of room.intermediate · 7 min
  4. 04Advanced Patternsmemo, useMemo, compound components, code splitting, and error boundaries — what each one actually buys you, and the specific case where reaching for it makes things worse instead of faster.advanced · 8 min
  5. 05Reviewing Code You Did Not WriteGenerated code fails where the spec was silent, and its tests inherit the same blind spots — review the inputs a passing suite never used, not the style of the code.intermediate · 4 min
  6. 06The Three-Message BudgetCap the conversation at three messages and each one gets a job: buy the whole shape, correct one reading you actually verified, and know when to stop steering and edit the code yourself.intermediate · 3 min
  7. 07Context Is a PurchaseA model missing a local fact does not fail — it invents, fluently. The skill is naming the fact you need, buying the cheapest source that states it, and refusing the sources that merely look relevant.intermediate · 3 min
  1. 01Getting Started with TypeScriptWhat to annotate versus what to let TypeScript infer, why const narrows to a literal type, and why a literal union usually beats an enum.beginner · 7 min
  2. 02Understanding TypeScript GenericsHow a type parameter differs from any, what a constraint actually promises, and when to let inference pick the type instead of writing it yourself.intermediate · 6 min
  3. 03Async/Await Patterns in TypeScriptPromises, async/await, and structured error handling — and why Promise.all doesn't cancel the requests it stops waiting for.intermediate · 6 min
  4. 04Type Narrowing in TypeScriptHow typeof, instanceof, in, discriminated unions, and assertion functions each narrow a type, and why narrowing can silently evaporate across a function call.intermediate · 7 min
  5. 05Mastering TypeScript Utility TypesThe built-in utility types are ordinary generic aliases you can read and rebuild yourself — knowing which one to reach for beats memorizing the list.advanced · 6 min
  6. 06Working with unknown safelyUse unknown at the boundaries of your program, narrow it deliberately, and understand why a single any spreads further than you expect.intermediate · 7 min
  7. 07Reviewing Code You Did Not WriteGenerated code fails where the spec was silent, and its tests inherit the same blind spots — review the inputs a passing suite never used, not the style of the code.intermediate · 5 min
  8. 08The Three-Message BudgetCap the conversation at three messages and each one gets a job: buy the whole shape, correct one reading you actually verified, and know when to stop steering and edit the code yourself.intermediate · 5 min
  9. 09Context Is a PurchaseA model missing a local fact does not fail — it invents, fluently. The skill is naming the fact you need, buying the cheapest source that states it, and refusing the sources that merely look relevant.intermediate · 4 min
  10. 10Two Pointers and the WindowThe two patterns that answer most array questions — walking a sorted array from both ends, and keeping an invariant about a stretch of it — plus the prefix sum that makes range questions constant time.intermediate · 5 min
  11. 11Binary Search Is an InvariantBinary search is not about finding a thing fast — it is about maintaining a sentence that is true of a range. Get the sentence right and the loop bounds, the midpoint moves, and the off-by-ones decide themselves.intermediate · 5 min
  12. 12The Stack That RemembersA stack is the structure for work you cannot finish yet — unclosed brackets, days still waiting for warmth — and a hash map is the structure for places you have already been. Most linear-time tricks are one of these two.intermediate · 5 min
  13. 13Breadth-First for DistanceDFS finds whether something is reachable; only BFS finds it in fewest steps, because it finishes everything at distance d before touching anything at distance d+1. The grid, the tree row, and the shortest path are one algorithm.intermediate · 5 min
  14. 14Backtracking: Three BeatsChoose, explore, unchoose — the skeleton that generates subsets, permutations and combinations. The unchoose is not cleanup, it is the algorithm, and the loop's start index is the deduplication machine.advanced · 5 min
  15. 15The Recurrence FirstDynamic programming is one sentence about a prefix — best ending here, best through here — written before any code. Memoization is that sentence plus a cache, and greedy is the heuristic that fails exactly when a locally-bad choice is globally necessary.advanced · 5 min
  16. 16The K Smallest ThingsTop-k questions are not sorting questions — a heap of size k holds the current podium and exposes exactly the kth largest, in logarithmic time per arrival, without ever sorting the stream.advanced · 5 min
  17. 17Words as PathsA trie stores words as paths from the root, one character per edge — autocomplete, prefix lookup and wildcard search all become walks. The one flag that matters says where words end, because every word is also the prefix of words that do not exist.advanced · 5 min
  18. 18Caches, Limits, BreakersEvery system design interview bottoms out in five small machines — an LRU, a TTL, a token bucket, a debouncer, a circuit breaker — each one an invariant you can hold in your head, with the clock injected and every decision made lazily on read.advanced · 5 min
  19. 19Linked Lists Without Losing the RestA linked list is pointers you wire yourself — the one rule is never lose the rest of it. Reversal with three variables, the tortoise and the hare, and the dummy head that deletes the first case.intermediate · 5 min
  20. 20Tables With Two DimensionsWhen the recurrence's sentence mentions prefixes of two things at once, the table grows a second dimension — edit distance, longest common subsequence, knapsack. Plus the state that indexes by where a run can end, not where it started.advanced · 6 min
  21. 21The Wire's ContractHTTP semantics are not trivia — the status century decides who retries, idempotency decides what may be re-sent, and a retry loop is three small decisions: how many attempts, how long to wait, and whose error survives.intermediate · 6 min
  1. 01Vue Component PatternsProps, emits, v-model, and slots as the real contract between a Vue component and everything that calls it — plus why defineProps and defineEmits are not functions you can pass around.beginner · 5 min
  2. 02Vue Reactivity Deep DiveHow Proxy-based dependency tracking actually decides what to re-run, why ref beats reactive as the default, and the synchronous-tracking rule that breaks watchEffect after an await.intermediate · 6 min
  3. 03State Management with PiniaWhat actually belongs in a Pinia store instead of component state, why setup stores are the better default, and the reactivity trap that storeToRefs exists specifically to avoid.intermediate · 5 min
  4. 04Building ComposablesWhen a function actually earns the use prefix, the MaybeRefOrGetter/toValue contract that makes one reusable, and why calling a composable after an await silently breaks its lifecycle hooks.advanced · 5 min
  5. 05Reviewing Code You Did Not WriteGenerated code fails where the spec was silent, and its tests inherit the same blind spots — review the inputs a passing suite never used, not the style of the code.intermediate · 5 min
  6. 06The Three-Message BudgetCap the conversation at three messages and each one gets a job: buy the whole shape, correct one reading you actually verified, and know when to stop steering and edit the code yourself.intermediate · 3 min
  7. 07Context Is a PurchaseA model missing a local fact does not fail — it invents, fluently. The skill is naming the fact you need, buying the cheapest source that states it, and refusing the sources that merely look relevant.intermediate · 3 min