about
posts
- Building a node editor on a grid of terminal cells: everything the browser does for youIt started as one question: what would a node editor feel like if the only primitive I had was a terminal cell? I quickly realized every capability the browser hands you for free is one you build by hand. Here's each one.
- Negative pixels don't exist: three coordinate systems behind a terminal flow graphA node scrolled off the left edge is at column -4. The terminal buffer is indexed by u16. That gap is the whole post.
- Rounded turns, sharp crossings: drawing flow-graph edges in a terminalThe browser gives you an SVG bezier. A terminal gives you 128 box-drawing characters and a grid. Where two edges cross, you can't just draw a line.
- Three mouse bytes and a state machine: drag and connect in a terminalThe browser hands you pointer events, drag capture, and an event target. A terminal hands you three: down, move, up, each a bare (column, row). The gesture model is yours to build.
- Locked, open, honest: the three contracts of a Rust widget APIA library exposes three surfaces: what you can change, what you can render, and how it tells you what happened. Each needs a different stance, and one rule ties them together: the library never acts behind your back.
