Lab note #045 From Database to Notebook
I spent the last month doing some contract work, both to pay the bills and get some perspective on how web devs are working nowadays. I've been away for about two years and some things have changed.
I worked on a Next.js stack, and I'm honestly a little horrified by how slow the Next.js dev server is. There is an experimental "turbo" flag, where they just rewrote the server in Rust. And React has turned into this weird conceptual monstrosity with server actions and server components. My spidey-sense is saying it's a lot of complexity to take on for just waiting on the server to return stuff before rendering everything. I can see why there's a large contingent that recognizes this as well and champions HtmlX. As far as taste goes, Rails is still top-notch.
Most of the last couple of months before this month had focused on putting out issue 1 of the Forest Friends Zine. Now that's done, I have some things on the table.
First, I've been thinking about what to put for issue 2. I have a couple of ideas, but the approach I'll take this time is different. I'll write to the Forest Friends subscriber base and tweet out different topics to test what might resonate. So if you're curious about building RAG applications and LLM-driven apps, go subscribe. Candidate topics include, UI for collecting user feedback, function calling and tool use, or
Second, I need to put together a marketing plan to get the word out about Forest Friends. The reception had been positive, and I think it's mostly a matter of letting people know about it. This will be exercising a muscle I haven't used as much, but it's been more exciting to make a sale of the zine than anything else that I've done so far. So if you have any interest in how to do system evals for LLM-driven apps, go buy Issue 1: Large Language Model System Evals in the Wild and tell all your friends!
Third, I am going to put the immutable database in the browser work on hold. After pglite was announced, I felt like the only reason to keep going was learning or the immutable aspect. I think immutability is pretty key to solving a lot of different problems in local-first web dev and distributed systems, but I was always working on it in service of building something else. Now that some of the local-first sync is maturing, I hope to leverage them to build on top it. I'll swing back to the immutable database if I need to, but for now, it'll on the back burner.
Fourth, I've been using LLMs in my programming in my last year. Despite the hype, I think it still doesn't quite live up to the work that I've been doing. I've used AI with theorem proving, systems programming, and web dev. In a lot of different ways, it fails. However, it does point to a future that's markedly different from what we have today.
Therefore fifth, I'm reviving an idea I didn't know how to pitch and formulate before: a Factorio for company processes. But that's quite far away. I'm going to start with a deployable notebook for AI engineers. Notebooks have come a long way, but the only headway the field seems to have made is that it's more collaborative. Notebook users still can't deploy them easily, still has to wrestle with the execution order of the cells, and still don't have much visibility into them.
I've come to think notebooks should
- have pure functional cells
- yet, can run side-effects
- with implicit dependencies tracking between cells
- and visualization of hidden state
- that is versioned and easily deployable
To that end, I'm reimplementing clox from Crafting Interpreters, I'm loading all the research I did into reactive systems back into my head, such as Building a la Carte and others. I also have quite a few videos/posts to watch/read about building RAG apps and from Performance Aware Programming.
My ask: If any of you out there have experience with building pure functional reactive systems or pure functional compilers and runtimes, let me know what sort of resources you consulted, or any tips you might have when constructing such a thing.