Memory allocators divide up memory into pieces. But how can an allocator's author allocate memory to track the pieces?

The shells used in terminals – Bash, zsh, etc. – are little compilers wrapped in a loop. We build one with working pipes.

Data compression can be simple. Huffman coding, as used in ZIP, MPEG, and MP3, is built around one clever use of a tree.

We build six fundamental programming tools from scratch in about thirty minutes each. Each focuses on understanding the core behavior of the tool, rather than the esoteric details and legacy concerns of real-world implementations.


The 90 classic Destroy All Software screencasts explain advanced programming practices via concrete examples: testing, design, fluency with tools like Unix shells, and other topics. Customers rave about their density, concision, breadth of scope, and depth of detail.

"One of the DAS screencasts (tarpipe) just taught what took a few weeks in my Operating Systems II back in college."

"The screencasts @garybernhardt makes are the kind you can rewatch every few months and learn more from each time."

"This week's Destroy All Software screencast by @garybernhardt is one of the best lessons on just testing one thing ever."

Execute Program is a learning platform that teaches you programming tools quickly, using spaced repetition to ensure that you remember them. Courses are made up primarily of code examples, not text, and all code examples are interactive. A typical course contains hundreds of small examples, slowly increasing in complexity.

Full access to Execute Program is included with all Destroy All Software subscriptions.

Destroy All Software subscriptions cost $29 per month, which grants access to both the back catalog and new releases.

The format may change over time: screencasts, text, or maybe something entirely new. This is the outlet for Gary's thoughts about software development in whatever form they take.

If the schedule or the format change in ways that you don't like, don't worry: Destroy All Software has a permissive refund policy. You can always cancel from the website; we won't make you send an awkward email to support. You can also email support for a refund within a month of your most recent charge.

I'm Gary Bernhardt. You know me from Wat and, with luck, from Boundaries or The Birth & Death of JavaScript.

These screencasts are the ones that I wish I'd had for myself: dense, brief, concrete demonstrations of topics that we usually only talk about in the abstract.