People tend to be visual: we use pictures to understand problems. Mainstream programming languages, on the other hand, operate in an almost completely different kind of abstract space, leaving a big gap between programs and pictures. This piece is about pictures drawn using a text character set and then embedded in source code. I love these! The other day I asked around on Twitter for more examples and the responses far exceeded expectations (thanks everyone!). There are a ton of great examples in the thread; here I’ve categorized a few of them. Click on images go to the repositories.

Data Structures

One of the most common kinds of ASCII art in code is illustrating the shape of a data structure.

The example I started with comes from LLVM:



The layout of a data structure in the Jikes RVM:



A tree rotate in Musl:



Double-ended queue from the Rust library:



Swift compiler internals:



Malloc header layout:



State Machines

JavaScript profiling:



RPCs in Cloud Spanner:



I/O stream states:



Logical Structure in the Problem Domain

Control flow in an NWScript program being decompiled:



ECC internals:



Formatting numbers:



A quantum circuit:



Balancing memory management objectives in an OS kernel:



Subtyping relations (this is a very cool special case where the ASCII art is also code):



The format of a DBF file:



A lookup table for image processing:



Shape of a color function:



Structure of a URI:



A very quick tutorial on undo systems from emacs:



Geometry

Attitude control in the Apollo Guidance Computer (!!!):



Image tiling:



Boomerang trajectories in Nethack:



Rendering CSS borders:



Quadtrees:



Speed control in a milling machine:



Scrolling web pages:



I hope you enjoyed these as much as I did!