How do you prototype a nice language?

https://news.ycombinator.com/rss Hits: 5
Summary

I’ve spent the past month prototyping my codeCAD language. However, while I’ve made tons of zero-to-one-type progress (an EBNF grammar, parser, function definitions, evaluation, and numeric solving!), the current possible demos are all terribly underwhelming — think the game programmer’s “triangle with color gradient” or the hardware engineer’s “PCB with a single blinking LED”. However, even once I’m further along I suspect the demos will be fairly underwhelming — I’m not one-shot prompting my way to production G-code or building a slick augmented reality, Minority Report UI. Rather, I’m after a particular kind of software hygge: Loads instantly, doesn’t crash, and fits nicely in the hand. The objective is a feeling, and there’s no point trying to convince people — either the software exists and evokes the feeling, or it doesn’t. Pitching it feels as nonsensical to me as pitching the deliciousness of an unbaked cake (which is why you haven’t heard about my crunchy tiramisu). Unfortunately, this perspective makes prototyping tricky: How much baking is required to test an idea? For example: One idea I’m exploring is “bidirectional editing”, so geometry can be manipulated using either: a purpose-built graphical UI, or the textual codeCAD language If you graphically drag a point around, the coordinates in the source code should automatically update. If you edit the source code, the graphical UI should automatically update. A simple way to test this idea is to throw a <textarea> in the UI that displays the corresponding source code. But to me, that feels terrible because I never want to be coding in some janky, in-browser <textarea> — I want to be working with source code in Emacs, with all of my familiar key bindings, color schemes, autocomplete, and decades of cozy practice. That’s the core appeal of a textual programming language. But doing this properly is an absolute boatload of work: How does the system rewrite source code? Is it mediated by files on disk with relo...

First seen: 2025-06-09 22:20

Last seen: 2025-06-10 02:21