What is the purpose of ASCII diagramming today? Seems like graphics are supported by every document and communications medium that I use. Is it for including directly in code?

Well I can’t speak to ASCII in particular, but I create a lot of mermaid UML diagrams specifically because unlike an image, they are:

- Text searchable

- Easy to adjust

- Supported by a surprising number of markdown viewers.

LLMs can understand ASCII diagrams

LLMs nowadays can understand png diagrams too.

But not all CLIs handle pngs as easily as a text diagram. Syncing images is also multiple times slower.

png diagrams should never be the default.

They can’t update it though. In docs it makes sense to use that as a basis and have the Llm update it when needed

Mermaid diagrams are even better because you don't waste characters on the visual representation but rather the relationships between them. It's the difference between

    graph TD
            User -->|Enters Credentials| Frontend[React App]
            Frontend -->|POST /auth| API[NodeJS Service]
            API -->|Query| DB[(PostgreSQL)]
            API --x|Invalid| Frontend
            DB -->|User Object| API
            API -->|JWT| Frontend
and

    +-------+           +-------------+           +---------+
    |  User |           | React App   |           | NodeJS  |
    +-------+           +-------------+           +---------+
        |                      |                       |
        |  Enters Creds        |       POST /auth      |
        |--------------------->|---------------------->|
        |                      |                       |
        |      Invalid         |    <-- [X] Error -----|
        |<---------------------|                       |
        |                      |       Query DB        |
        |                      |---------------------->| [ DB ]
Plus while an LLM can understand relationships via pure ASCII or an image, it's just easier to give it the relationship data directly.

But the point is to have something easy to read both for humans and LLM, no?

It’s harder to read mermaid in a terminal or a markdown file…

Mermaid diagrams automatically render on Markdown and IDE chat windows as in VSCode or Cursor. So you get the best of both worlds, a graph you can look at a ND manipulate with the mouse but also in a format LLMs can read.

more tokens, less reliable, dont work in all CLI agent harnesses

Is it common for graphics to be supported in the terminal?

ASCII to me represents something that can work in my term, in my source code, checks into git a bit more sanely than binary does, etc.

I still quite like it

agents can understand them. and you can view them in the terminal

My unpopular opinion is that programming is stuck in the 1970s: a lot of programmers use a 1970s-style terminal window to enter 1970s OS commands, which run on a 1970s processor architecture (which is slowly getting replaced by a 1980s architecture). They use a 1970s editor (which is much superior to the other 1970s editor) to write programs in a 1970s language. ASCII diagrams are just a symptom of this. Hardware is millions of times better than in the 1970s, but programming is stuck in local optimums for historical reasons.

(Not to take anything away from Monosketch, which is cool.)

What is there to improve? Very genuinely.

A car has had largely the same shape since its creation, indeed since antiquity.

Sometimes, a problem space is explored to most humans' needs, and no more innovation is needed.

(edit: this said, I'm hopeful there is something new, and people like Bret Victor may show the way with things like https://dynamicland.org/ )

I was thinking about this the other day - I watched a video about the acme editor and it was showing off text editing in a shell buffer, much like M-x shell. I realized I haven’t yet found a terminal emulator that will let you select text with a mouse while you’re editing in the shell. It’s such a simple thing that would be so useful, especially on a Mac where CUA bindings don’t conflict with terminal escape codes. iTerm lets you Option+click to position the cursor but you can’t select a word with the mouse and press ‘delete’. Why? It seems like such a simple thing to do.

Because we are yet to invent a more efficient data transformation system as a shell, or a more efficient text editing interface as vi, but its not like there is no innovation in the space, we have `jq` now.

I wish it were stuck in the 1970s! (Although the mouse had been invented by then.) I do not want the mouse and I do not want all these windows. If I am using agents I want the mouse even less.

This is not historical reasons, this is just that moving my hands from the keyboard to the mouse is inefficient and technically unnecessary. I prefer mouse only on niche (for me) tasks like screenshot cropping or something.

I am about to test out Niri on my laptop and I expect to be quite pleased with the change.

This is what I like about programming

And yet here we are communicating over a network from the 1970s.

I use this for traking change with git.

Same reason people love and swear by games like nethack. ASCII art is cool af.

That "seems" is doing so much heavy lifting I got a hernia just from looking at it.