Concepts & practices

Once by the book.
Once in the choices you make.

Understand an idea once, then recognize it wherever it matters. Explore how languages run, how we model and store data, how we handle failure and coordinate work, and how we check that it all behaves as intended.

Work in progress. Lessons and examples are still being refined.

Starting with TypeScript, Go, and Python Go is the default comparison. Python is also available.
74 articles

Ready articles Showing lessons that are ready to explore. Choose Drafting articles for works in progress, or All topics for the full catalog.

Design principles and language mechanisms

The ideas underneath the patterns and the tools each language gives you.

Language and runtime models

What a value means, where state lives, and what happens when the code runs.

Data modeling and type design

Make the shape of the data carry part of the argument.

Errors, results, and recovery

What failure looks like, how it travels, and what a caller can do next.

Concurrency, scheduling, and delivery

Work happening over time, and the bugs each execution model lets through.

Boundaries and contracts

What crosses a line, in what shape, and who checks it.

Testing, debugging, and measurement

Make a claim about behavior, check it, and investigate what the evidence shows.

Data and persistence

Keep stored state useful and correct as reads, writes, and failures overlap.