Topic domain

Developer Tools

The instruments that make programming tractable.

Articles
80
Clusters
8
Foundational
24
Intermediate
32
Advanced
24

Objects, refs, and merge algorithms.

  1. Git's Object Model: Content-Addressed Blobs, Trees, and Commits
  2. The Git Index: A Sorted Path Table Between Worktree and Commit
  3. Refs, Symbolic HEAD, and the Reflog as an Append-Only Log
  4. Packfiles and Delta Chains: How Git Stores Similar Objects Once
  5. Commit-Graph Files and Generation Numbers
  6. How Diff Produces Hunks: Myers, Patience, and Hunk Sliding
All 10 in this cluster →

Graphs, incrementality, and hermeticity.

  1. Build Graph Construction and Topological Ordering
  2. Timestamp-Based Incrementality and Its Failure Modes
  3. Content-Hash Caching and Early Cutoff
  4. Hermetic Actions and Undeclared Inputs
  5. Action Cache Keys and Shared Build Caches
  6. Scheduling Actions Across a Dependency Graph
All 10 in this cluster →

Language servers and editing models.

  1. Piece Tables, Gap Buffers, and Ropes in Editor Buffers
  2. Byte Offsets, UTF-16 Code Units, and Editor Positions
  3. Incremental Parsing and Tree Reuse in Editor Syntax Engines
  4. JSON-RPC Framing and the LSP Initialize Handshake
  5. Incremental Document Synchronization Between Client and Server
  6. Diagnostics Delivery: Push, Pull, and Stale Results
All 10 in this cluster →

Breakpoints, unwinding, and remote targets.

  1. Software Breakpoints: Replacing an Instruction with a Trap Byte
  2. Hardware Breakpoints and Watchpoints in the Debug Registers
  3. DWARF Line Tables: Turning an Address into a File and Line
  4. Stack Unwinding: Rebuilding the Call Stack from Frame Rules
  5. ptrace and the Stop-Notify Model Behind a Debugger
  6. Single-Stepping: One Flags Bit and Its Cost per Instruction
All 10 in this cluster →

Linters, dataflow, and false positives.

  1. Why Linters Parse: Token Streams, Syntax Trees, and the Cost of Losing Layout
  2. Scope Chains and Name Resolution: Why Spelling Is Not Identity
  3. Diagnostic Spans and the Encoding Problem
  4. Control-Flow Graphs and the Dominance Relation
  5. Monotone Dataflow: Lattices, Transfer Functions, and Fixpoints
  6. Path Sensitivity and the Cost of Remembering Branch Conditions
All 10 in this cluster →

Runners, fixtures, and coverage.

  1. Test Discovery, Collection Order, and Import Side Effects
  2. How Assertion Libraries Recover Operands From a Failed Comparison
  3. Fixture Scoping and the Lifetime of Shared Test State
  4. Isolation Boundaries: In-Process, Subprocess, and Sandboxed Tests
  5. Distributing Tests Across Workers Without Losing Determinism
  6. How Coverage Tools Count Executed Lines and Branches
All 10 in this cluster →

Resolution algorithms and lockfiles.

  1. Version Ranges as Sets of Versions
  2. Building the Dependency Graph from Manifests
  3. What a Lockfile Records and What It Leaves Out
  4. Conflict-Driven Backtracking in Dependency Resolution
  5. Diamond Dependencies and Duplicate Versions
  6. Minimal Version Selection and Its Compatibility Assumption
All 10 in this cluster →

Shell design and automation interfaces.

  1. From Command Name to Process: The execve Argument Contract
  2. Exit Status Semantics and the Limits of set -e
  3. What a Pipe Holds: Kernel Buffering, Atomic Writes, and SIGPIPE
  4. Field Splitting, IFS, and the Difference Between "$@" and $*
  5. Option Parsing Contracts and the Ambiguities of Command-Line Syntax
  6. Buffering Modes and Why Pipeline Output Appears Out of Order
All 10 in this cluster →

All Developer Tools articles