Since coding agents came on the scene, a subset of programmers panic about AI replacing their jobs, but I think they're panicking about the wrong thing. The fear seems focused on the mechanical aspects—will AI write better functions than me? Will it debug faster? Will it| Interjected Future
I bounced off of Cursor a couple of months ago. It was good having code in context in the sidebar, a leg up from cutting and pasting, but I found its agent UI confusing and it made odd edits. In addition, when I left it open for a week, it&| Interjected Future
Having been a fan of functional programming and following the breadcrumbs of reactive systems, it's not surprising that I'm a fan of Elm, and had experience building different systems in it. It's too bad that enthusiasm for Elm didn't last until vibe coding came on the scene, because it seems| Interjected Future
I ended up deciding on SolidJs. For one, I spent way too much time deliberating on a choice that wouldn't matter as much at the end of the day. But I think I wanted to give functional programming a good shake, since it's aligned with my| Interjected Future
This week was a little stalled. Had some daily life administrivia to take care of, but I did manage to focus on one question: what, if any difference was there to the choice of language for vibe coding? After looking into some of the other reactive systems, React stopped being| Interjected Future
Switched gears this week to start a new, but related project. I started a prototype on an app that helps users make buying decisions with an AI agent. Lately, I've been using ChatGPT to help me make buying decisions, but I found some aspect of the experience wanting.| Interjected Future
I've been doing an implementation of DBSP, which is a way of doing incremental computation built up from some basic concepts from digital signal processing. While I use LLMs in my daily work to ask it questions, spitball with it, and do some basic stuff, I hardly ever ask it| Interjected Future
It's been two or three weeks since the last lab note. I've been on vacation with my family for two weeks, and then caught a cold this last week when I got back. I've been doing two things: * Continuing the implementation of DBSP * Trying to see if generating a prompt| Interjected Future
Had bunch of distractions like doing taxes this week, so I fell behind with the weekly update. However there's been progress these past two weeks. * Generated Deep Research report on the strengths and weaknesses of different notebooks * Learned about E-graphs and Interaction Nets * Read papers on Incremental Lambda Calculus * Read| Interjected Future
Wrapped type computing Despite resisting the draw for writing an interpreter/compiler, I did think about it some more, and find it almost inevitable, given the properties and constraints that I have. I went back to the three things I want the notebook to do: reactivity, collaboration, and observability. Under| Interjected Future
I bit the bullet and went towards re-doing the effects system implementation with the native async/await, to see if I can get a baseline implementation. I was successful, but not without roadblocks along the way. This version is much simpler and handicapped than what I wanted originally, but I| Interjected Future
These weeks are passing by faster and faster. I too would like to work faster, but I didn't think vibe coding was going to be it. I work with AI everyday, and I mostly have it do basic debugging or explaining Python minutiae to me. I know what| Interjected Future
❓ This is a conversation with GPT o3-mini 💬 What is a Kleisli Category? Explain it to me as someone that knows functional programming well. A Kleisli category provides a way to encapsulate and compose effectful computations, which is especially appealing if you're familiar with functional programming and| Interjected Future
The work on the scheduler is to support async effect handlers. It won't do at all, if a network request always blocks the evaluation of the computational graph. So I embarked on it about two weeks ago. Right now, the API looks like this (subject to change). There&| Interjected Future
This was a tough past week. I was working on supporting async handlers, even if the reactive part was synchronous. I didn't want the graph to have to wait on network requests. This turned out to be tough. Also I got food poisoning this past week. The design tension was| Interjected Future
I pulled down Llama 3.1 7B for a long flight recently. It seemed magical in the same way downloading all of Wikipedia seems--like taking an entire universe with you. The missing piece is the context to steer the LLM. We need a Microsoft Access of RAG and LLM system| Interjected Future
I was watching Casey Muratori and the Primeagen the other day, and they were talking about the high-level architectural design of the core data inside of Primeagen's game. What Casey says sounds counter-intuitive for anyone from a traditional OOP software background. He suggests not committing to an organization of data| Interjected Future
Just like CAD didn't make everyone an industrial designer, visual programming isn't going to make everyone a programmer. Whether textual or visual, there'd still be a lot of underlying concepts (and how they are composed) to learn. But still, I think it's underexplored. Most visual programming paradigms focus on coding--the| Interjected Future
🔰If CRDTs are new to you, here are some introductory links. - An interactive intro to CRDTs [https://jakelazaroff.com/words/an-interactive-intro-to-crdts/] - An introduction to state-based CRDTs [https://www.bartoszsypytkowski.com/the-state-of-a-state-based-crdts/] - CRDTs for non-academics [https://www.youtube.com/watch?v=vBU70EjwGfw] - CRDT: The Hard Parts [https:| Interjected Future
🔰If CRDTs are new to you, here are some introductory links. - An interactive intro to CRDTs - An introduction to state-based CRDTs - CRDTs for non-academics - CRDT: The Hard Parts - Readings in CRDTs - crdt.tech What are the trade-offs between different kinds of CRDTs (Conflict-free Replicated| Interjected Future
This is a review of all the resources I found and learned about persistent data structures in the course of looking for a solution for maintaining state. Complexity from maintaining state One of the hard things about programming is how to maintain and manage state [https://interjectedfuture.com/the-broken-half-of-interactive-programs/], especially| Interjected Future
State is a cross-cutting concern. Weak equivalence hinders re-rendering. Distance between code and data breeds complexity. State transitions need linear traces.| Interjected Future
I was surprised to learn that different stacks of software all do some type of computational analysis to better do its job. The CPU does it to figure out how to pipeline instructions. Compilers do it to feed CPUs better set of instructions. Front-end frameworks do it to figure out| Interjected Future
As an exercise to see what the developer experience might look like, I outlined what it might look like for a React-like single-page app. The app that's outlined below is a variation on the TodoMVC.| Interjected Future
While most front-ends today have largely agreed on the design of the rendering subsystem, we seem to be grappling with design of the interactive subsystem.| Interjected Future
Shared mutable state invites complexity into our programs. Programming languages help with this complexity inside a program, but not across network boundaries between programs.| Interjected Future