$ cat /var/log/blog

Blog

Thoughts on terminal UIs, developer tools, and building open-source software.

$ cat blog/attyx-gpu-rendering
attyx gpu rendering zig internals

How Attyx Renders Every Frame on the GPU

A deep dive into Attyx's GPU rendering pipeline — Metal on macOS, OpenGL on Linux, glyph atlases, shaders, dirty tracking, and the seqlock that holds it all together.

$ cat blog/building-attyx
attyx zig terminal gpu semos

Building Attyx: A GPU-Accelerated Terminal in Zig, from Scratch

How a weekend experiment turned into a sub-1MB terminal emulator with Metal and OpenGL rendering, a zero-allocation VT parser, and a deterministic architecture that's fully testable without a GPU.

$ cat blog/glyph-perf
glyph performance rendering optimization

Making Glyph 20× Faster

How I took Glyph's render loop from 50ms/frame down to 2.4ms — persistent Yoga nodes, dirty subtree tracking, clip culling, text caching, and a lot of profiling.

$ cat blog/how-glyph-works
glyph react terminal internals rendering

How Glyph Works Under the Hood

A look inside Glyph's render pipeline — how a React reconciler, Yoga flexbox, a double-buffered framebuffer, and character-level diffing come together to draw UIs in your terminal.

$ cat blog/no-longer-google-only
aion epist caldav imap update

Aion and Epist Are No Longer Google-Only

Aion now supports CalDAV (iCloud, Fastmail, Nextcloud, and more). Epist now supports IMAP/SMTP alongside Gmail. Your terminal, your provider.

$ cat blog/why-glyph
glyph react terminal semos

Why I Built a React Renderer for the Terminal

The story behind Glyph — how a dumb experiment with React's reconciler turned into a terminal UI framework that actually works.