Edge-Free Programming
summary
Argues that many bugs vanish when error handling is moved to the outer layer and the core runs straight‑line; demonstrates with a guitar‑tablature converter written in Ruby that uses ARGF trick to avoid missing‑file checks, a transpose + arithmetic‑encoding column builder, a validation pipeline that either returns errors or data, and a saturate cap at 99 frets. Covers null‑object, option/monad patterns and swapping requirements (shuffle by shuffling the list) to eliminate conditionality and simplify code.
AI-written summary · about
chapters (20)
- 0:00Introduction to edge-free programming
- 2:06Designing systems to throw off information
- 3:53What is an edge in software
- 5:38Converting text to guitar tablature
- 8:03Writing straight-line code without conditionals
- 10:51Removing error checks with domain extension
- 12:18Domain extension as a design tool
- 14:27Validating input at the edges
- 16:10Using saturation to handle extreme values
- 17:56Protective shell around trusted core
- 19:46Error handling mechanisms compared
- 21:10Exceptions and IO operations
- 23:40Null object pattern explained
- 26:47The problem with null checks
- 28:54Removing conditionality with tunneling
- 29:56Monadic error handling in Ruby
- 30:38Naive shuffle implementation flaws
- 32:41Reframing requirements to reduce complexity
- 34:49Simplicity and long-term durability
- 35:32Q&A on edge-free programming








