und aus dem Chaos kam eine Stimme, und die Stimme sprach zu mir
"Lächle und sei fröhlich, denn es könnte schlimmer kommen."
und ich lächelte und war fröhlich
und es kam schlimmer.

For every tesselation, we can give a graph, which contains the edges and nodes of this tesselation. For example, the graph of the dodecahedron is

It is a graph of the kind 5 3, where every surface has 5 edges, and at every node, 3 edges meet. For 5 3, this graph is finite. For 4 4, this graph is the regular tesselation of the euclidean space:

But, for example, for 3 8, there is no regular tesselation on the euclidean space anymore, and none on the sphere. But there is a regular tesselation of that kind on the hyperbolic space.

Now, I was inspired by HyperRogue to try to produce some code, without any direct goal. I created a program that generates such graphs. And for debugging, I wrote a method that creates a GraphViz definition. GraphViz is a program for layouting graphs; it has several methods to find good starting points for several types of graph. When trying the sfdp method (and tuning a bit), I got the following output:

The documentation says that sfdp tries to arrange the nodes by reducing force (whatever force exactly is in this case). It cannot arrange the outer nodes anymore, so we get a curly outer line – which reminds me of lettuce (Image Source: Wikimedia Commons):

Lettuce also approximates hyperbolic surfaces. I am not sure why exactly, but probably to maximize the surface of its leaves. Maybe some similar process is going on in both cases. Or maybe it is just coincidence.

Anyway, I think it is beautiful. :3