Back to All Events

Visibility in Program Design

We spend lots of time and effort creating information displays for users, since *knowledge* is a big part of what makes software empowering.  And yet we don't often extend the same respect to ourselves, even though we are often fighting to figure out what's going on internally.  Of course, we can't afford to build special displays for every application's internals.  So we need to look at powerful abstractions that support visibility as a first-class property.  In this respect, some of our most beloved tools, including Observables and even functional composition itself, are working against general-purpose reflection tools when used in conventional ways.  A good test of whether a model treats visibility as first-class is to ask: can you monitor one of these systems with language-level constructs *without taking it apart*? In general, the key to building such systems is to prefer information over machinery—in other words, metaprogramming.  I demonstrate examples of applying this principle in practice, including a simple but powerful reactive data flow designed for a variety of applications, from interfaces to build systems.