This interactive essay teaches about system design using a “ladder of abstraction” paradigm. Two things about it are notable.
The first is the fact that his interactive teaching simulations are built using the web platform, and that’s awesome.
The second is the point he makes in the first appendix:
If a language requires a “compile” or “refresh” to show the results of a change, it even denies us interactive control. Some languages are marketed as “sketchbooks”, but a real sketching environment would, at the very least, offer basic interactive adjustment … .
Perhaps someday this will change. Perhaps IDE makers will focus on dynamic exploration instead of static analysis, rich visualization instead of line debugging. Perhaps language theorists will stop messing around with arrows and dependent types, and start inventing languages suitable for interactive development and discovery.
Until that glorious day, it is our sad but unavoidable responsibility as system designers to build our own tools.