every software engineer has a specific place where their worst ideas are born. for me, it was a crowded hallway in belgium. i was at fosdem a few months ago, trying to figure out where the hell i was supposed to be next.

fosdem has a lot going on. like, a lot. different buildings, different rooms, talks overlapping, and me pretending i had a plan.

to keep track of the agenda and figure out where i needed to be, i was using an ai model (openclaw) piped through a telegram bot. it was cool. it technically worked. but the more i used it, the more obvious the problem became: telegram is still telegram.
it doesn’t matter how smart the thing behind it is. at the end of the day, it’s still a chat box.
and chat is a weird interface for a schedule.

you ask what’s next, it gives you text. you ask what you’re missing, text.
you ask where you should go, more text.
and like, fine. technically that answers the question.

but i’m standing between buildings, half lost, trying to decide if i should go to another room or give up and get coffee.
i don’t need a paragraph.
i need something my brain can scan in two seconds.
like a list. a timeline. or EVEN a calendar. literally anything with a shape.

i was standing there thinking: like hmmm this would be infinitely cooler if the interface actually morphed based on the task. if i want to browse an agenda, give me a list with focus states. if i want to review a pull request, give me a diff viewer. if i want to manage infrastructure, give me a control panel.

don't just give me the text. generate the actual app.

the tui obsession

around this exact same time, i was developing an unhealthy obsession with terminal user interfaces (tuis). i don’t even know how to explain it without sounding like someone who needs to go outside more. i love vibe of the terminal. its kinda honest. no css bloat, no absolute positioning nightmares, just pure functional grid logic(dont tell anyone, but half of it is because it’s a huge part of the cool dev aesthetic, and i am not immune to propaganda).

so, my brain smashed the two concepts together: what if we built an ai assistant that doesn't just chat, but actually dynamically renders a native tui for whatever you ask it to do?

and then i had the thought that has ruined the weekends of millions of software engineers before me: "honestly, since it’s just the terminal, it will probably be way easier to build than a full web app."

the reality check

turns out: no. lol this was, of course, complete bullshit.

building a dynamic, ai-generated react/ink component runtime inside a terminal that handles local state, focus management, and mouse tracking is not "easier" than building a web app. it is a nightmare. it is a dark art(thank god the genie(s/o kent beck),my dear friend was here).

but by the time i realized i was in over my head, the idea had already taken root.

name-driven development

and then, the final nail in the coffin happened. i was brainstorming what to call this dynamic, shape-shifting terminal tool, and my brain handed me a gift:

ShapeshifTUI.

that was it. game over. in software engineering, there is a fundamental law (don't look it up i invented it): if you come up with an s-tier pun for a side project, you are legally and morally obligated to finish building it, even if it kills you.

i had the name. so yeah. now i had to build the thing.