We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
System Crafters · 646 views · 21 likes
Analysis Summary
Ask yourself: “Did I notice what this video wanted from me, and did I decide freely to say yes?”
Worth Noting
Positive elements
- This video provides a transparent, 'warts-and-all' look at the reality of integrating AI into niche programming workflows like Scheme.
Be Aware
Cautionary elements
- The host uses self-deprecating humor to make commercial promotions feel like an inside joke with the community, which can lower critical filters regarding the product's value.
Influence Dimensions
How are these scored?About this analysis
Knowing about these techniques makes them visible, not powerless. The ones that work best on you are the ones that match beliefs you already hold.
This analysis is a tool for your own thinking — what you do with it is up to you.
Related content covering similar topics.
Your tools are now interactive in Claude
Anthropic
How can I communicate better with my mom?
Anthropic
Claude FAILS to spell numbers under 1000 #ai #Claude
FatherPhi
Sigil: Speed-Running a Scheme in 7 Days - System Crafters Live!
System Crafters
What Claude Cowork Actually Does (And Why It's Different)
Tiago Forte
Transcript
One more. What's up everybody? Welcome to System Crafters Live. I'm David Wilson. We're back again with another live stream where we get together as community and talk about whatever topic I've come up with. And uh this week is no exception. Let me refresh this overlay here. Refresh. There we go. Okay. Am I Am I already ruining the surprise? Not really surprise, but I'm sure people will be very pleased. So, once again, I apologize for the lateness. Uh it's just one of those days. You know, we had Thanksgiving uh yesterday. It was very busy. you know, was busy in the leadup to that cuz you have to get prepared for Thanksgiving and then at the last minute had some issues to deal with for uh my uh my kid's school that came up like right at the end of the day. So, that was a lot of fun. But, uh now we're back. We're here. I'm late. It's almost 30 minutes late. Sorry about that. If anybody's in the chat, let me know cuz uh there we go. Thanks, Alejandro. Nice to see Alejandro. Let me get the uh screen up on the other or the chat up on the other side too because I don't know what's going on in YouTube. Where are we? There we are. Okay. Totally professional operation here. So, hi. How are you? Ashra says, "Did I just see Claude?" No, you did not. You're going to pretend you didn't see that. I'm kidding. Okay. Mr. Claude will make an appearance. Okay, there we go. We got YouTube chat up on the other side here. Okay, so I'll say hello to the people who are here so far. Hello to uh Rob Perez over on the uh YouTube side. And hello to Alejandro, Ashwaz, Nikolas, and Dave and Arty. And I'm not going to mention the other person that has an L as a starting character of their name because they always cause trouble. It probably won't be any better today. So, let me get the show notes stuff started up here because uh kind of need those things. Trieves says, "I'm here waiting for my personalized hello. You didn't pay for the um the personalized hello package there, buddy." So, you're not getting that personalized hello except for me saying your name wrong. Hello, dude. Davany, thanks for giving uh giving thanks for Odysius Odicius landing at uh Lethos Plethu Pleuthu. Okay, says, "What is not controversial about mesh?" What do you mean what is not controversial? I mean, by default, it's not that controversial. It's just a crappy scheme implementation. But I'm sure I'm going to make some uh people cry today with what I do. So, it should be pretty fun. Um, where's the show notes, projects, sites? I got to remember how I do all my stuff every week, content, live streams. There we go. Let's just steal this one. What would Trev think is controversial about mesh if they only were here? Trev is here. But are we going to pretend that Trev's not here today? That'd be pretty funny, actually. Let's just let Trev stew in the chat while we ignore him. That'll be great. Night. HK says, "I spent a hundred bucks today in preparation for the stream." 100? Why would you bother doing something like that? All right. Rebooting mesh the controversial way. clickbait. Not really though because probably Yeah, we'll see. Mash says, "Hey, one of the benefits I'm traveling now in a decent time zone for streams." Which which time zone is that? Cuz it's not a decent time zone for me. I mean, the one that I'm in. Cost of API uses an Emac and not a subscription. For which, Claude? It's so so sad about Trev. We've missed it them since their unfortunate accident. What did he do? Did he like uh run Geek's Pull and it overheated his computer and um set fire to his office or something? Is that what happened? Because it is likely. Speaking of which, not really geeks related, but um I finally got around to responding to framework computer support and they're sending me a new battery for my laptop, which is great because I've been sitting here with it plugged in non-stop uh and not able to unplug it for 3 months. No claw, no Macs, just API usage. Got it. So yes, I'm glad that I will be able to have a a laptop that is mobile again and not just plugged in the whole time. Mash says, "Normally in Sydney, yes, that is quite a different time zone for sure." 100 USD a day for what? Are you making that many calls? That just seems like excessive, dude. I paid $100 for a month. 100 a day is way too much. Unless you're like, you know, running some top tier AI scams or something. Give me a second. Had to untether myself from this headphone situation. All right, so uh news items. Somebody tell me the news. No good. Nick says the other chat messages are from IRC. That's correct. If you go to IRC.Liber. and the system crafters-live chat room. You will be on the screen. Um, yeah, Reream doesn't do uh IRC. Alejandra says, "Will the controversy be AI related? It will be entirely a AI related." Yes, eventually we'll have all the messages synced across everything, but you know, I keep saying that it never happens. News Um, give me one second because I gotta actually go do the thing before I can say it. Somebody else give me Yes, someone in the Twitch chat knows what I'm talking about. Let me go to another screen real quick. I got to do something. Uh, where is it? Where is it? I have to edit something. Click. Just click it. There it is. Just click it. Cool. Am I looking for Sasha's news? No. I'm I'm literally at the present moment setting up a Black Friday discount for my Scheme course because this is the time that uh I decided to do that because I'm excellent at at self-promotion as you can tell. I'm really good at it. All right, assistant crafters. Nah, I don't want to do that actually. Okay, let's let's start with sistercrafters.net and we'll go to the store. So, Black Friday, everyone's favorite consumerist holiday because what's more important than, you know, meeting with your family on Thanksgiving and having a nice meal, uh, than, you know, the next day, which is when everybody just goes crazy trying to spend all their money that they made over the year. Um, so yes, I'm going to participate in this by saying that I have a Black Friday discount for my hands-on guy scheme for beginners course. Um, which I've been talking about for a while. Did it last year. This is a pre-recorded version of it, which uh expands upon the content from the live versions we did last year. And people told me it's good. I mean, I think it's okay. Uh, if you are interested in looking at that, I have a I basically knocked 50 bucks off the price. So, if you go down to the bottom and click here to register, then it takes you to the store page and there it is. So, um, yes, if you want to learn scheme, guile scheme from me, then you can, uh, check out this course and I'm going to put that in the show notes so that folks can get the link to that. So, uh, Black Friday discount. I feel so sleazy saying this. 50 50 USD off. Uh, hands on Guile scheme for beginners. There you go. Have at it. Thank you, Ashra. As systemcrafter.store, a guy says, "Is it a video or do you give the lessons live?" It's it's pre-recorded. Uh, but it is actually like, you know, me making it's basically a bunch of system crafters videos effectively um that are only available in the course. You don't need it though, Akites, because you already know Kyle's scheme, so there's no point for you to take it. Davi says, "Oh, I got paid today. Damn, I nearly forgot. Actually paid by my employer, not mysterious money from someone I've never heard of landing in my bank account." Um, I would love it if that happened to me. Just mysterious money landing in my bank account, but u probably it's not such a good thing. We will today craft an AI that will act as a standin of David when you have questions. Well, that probably would be a better thing to do because it would actually respond. Alejandra says, "AI and YouTube, AI, AI in my teaching job, AI and creative content platforms, and AI and crafty today. I'm so tired about AI." Yes. Well, you know, it's entertaining sometimes. Thank you, Akites. Appreciate it. Okay. I wish it was easy for me to pull up the uh the stupid videos that I made, the AI slot videos I made. I just don't feel like doing that right now. Yeah, Arno. Okay, let's go. So, any other news? What's going on in the world right now? Uh, I think I saw a cool blog post show up today on Fediverse. Give me one moment because I got to switch my stupid keyboard back to the right screen again. There we go. Uh, Fostadon uh, re reboosted it, reposted it, whatever you called that. So Davany posted a blog post about uh uh the work she's doing on an extensible p pattern match of her scheme. I haven't actually looked into this very much, but it sounds pretty awesome. Like basically being able to make an extensible version of the match syntax. So I think people who are interested in scheme should uh check out this post because there's a lot of uh deep deep stuff going on in there. I'll have to read it myself this weekend. Uh, check out what else is going on in the world people. What's happening? Dney says, "The wonderful thing about scheme is that Scheme is a Oh, what are we? Is this a song? Scheme is a wonderful thing. Complex algorithmic ideas are expressed in simple strings. It's clear semantics and lack of pedantics helps make programs run. But the most wonderful thing about Scheme is that programming in it is fun. Programming in it is fun. Programming in it is fun. I have to say it with a more um menacing affect for the last line for the refrain. The guy says, "I read half the blog post and I didn't understand anything." I probably won't either, but hey, you know, still you got to share, you know, interesting things that you see on the internet. You have to sing that like the wonderful thing about Tigers. Well, see, that's the thing. Like, my kids aren't into Winnie the Pooh. So, I don't think I've heard that song. And probably how old am I? Probably 37 years. I don't know. Is there massive lag between the chat and stream again? That's because of YouTube. Go on uh Twitch chat. Thank you Dave for giving me more more news to put in. Thank you. Thank you. I forgot to mention this post. Actually, let me put it on the other screen because I can't copy and paste between. All right. Uh Spritley.institute. Rob says, "It looks like writing code is becoming obsolete. We will be paid for being a reviewer and AI's best friend." Yes. Uh well I will say working somewhere where AI is used uh by me and by other people sometimes reviewing PRs ends up being more o ownorous than uh it used to be because you know AI is pretty prodigious when it comes to u pooping out scripts and other code. So there's a lot of things you have to to read line by line and try to make sure it doesn't make a a huge mess. Uh news. Ashra says, "I could probably give a half hour rant about AI usage at my company." And that's before I rant about AI usage in code. Uh oh. Or people making AI uh spreadsheets and presentations that are really bad. Goblin share secure Peter Pure file sharing with goblins. Is that the one? No. Is it? So, the URL you gave me, Dave, is different than the one I'm seeing. Oh, it's because there's two posts I haven't seen. Okay, so both these need to be mentioned apparently because I missed this one last week. All right, so one post by Juliana about goblin share, secure peer-to-peer file sharing with goblins. So instead of participating in the autumn list game jam, Spritley decided to give up just like me and do something else instead. Uh spent the week of November writing Goblin share secure peerto-peer file sharing utility using Galport of Magic. What is that? Magnet URI. So that's cool. Okay, got it. That makes sense. This magnet Where? Where? Where's my cursor? Where's my mouse? There it is. They were making AI Jira tickets. No, that doesn't sound good at all. Sen says, "Uh, I'm damned. I hate reviewing code." Yeah, it's not the funnest thing. The most fun thing. Who uses cursor? Yes, watch at 2x speed and listen to me ramble and stumble in my words. Okay. Anyway, so I'm not going to go through this because we don't have a whole lot of time because I wasted it all uh being late. So, I'll just put these links in the show notes so that people can go check out these latest uh Spritely posts. And Dave also says that Christine just gave a keynote talk yesterday uh at a conference in Amsterdam. Replay is available at the link that he gave there. Let me see if I can find that. Check out the latest in Spritly Institute news institute next. Hey. All right. indent. Thank you. Spoy 25. We can change the defaults. Is that it? Boom. And there's a screenshot of Dave's game. All right. Cool. Please. Or move mode. What's this? Uh, Spoy 25. All right. Whatever it is. Cool. Check that out, too. I will check it out. Thank you, Dave. I appreciate it. Now, I feel like there's actually some news to be mentioned here uh to make up for me not actually doing my job. So, thank you for all of you who've contributed things to the news this week. Ashra says, "I use AI to have my code reviewed by it before I give it to review to other humans. That's working nicely. I don't waste a colleagueu's time by having them point something out that an LL can point out." Yes, we're having AI write code that AI's review. And it does actually work. I don't know. We're using code rabbit and cursor in various different places. And um it's a little bit annoying actually cuz it's sometimes more pedantic than a senior senior engineer would be. I have not seen the AI drama at Okamel. A kites. Thank you. Dave says, "Can we elect Dave Thompson as a new David?" Yes, I need a vacation. So Dave, if you want to, you know, take over the system crap streams, please feel free. Please feel free. All right, let's get into it. So, um, why am I click baiting? Why am I click baiting? Well, I don't know. You know, I've been using AI for a little bit now. Um, I've gotten kind of comfortable with the whole workflow of it and uh, Anthropic just came out with a new Opus 4.5 model and I'm just thinking like, all right, I want to see if this thing is any good. And I thought maybe the the best kind of non-trivial um thing I could throw at it is to try to get it to implement uh R seven RS small uh to make a scheme implementation but with the parameters that I want uh basically implementing some of the ideas that I had for mesh. Now uh like two weeks ago I think or whenever that was we did a stream where I was trying trying pitifully to write uh an IRC client implementation in Janet. Uh the thing I like about Janet is that it is a um it's a lisp that's meant to be embedded in C programs. It's also meant to be sort of used to make standalone programs and has a lot of other really kind of useful convenient features. But as you saw on the stream, I'm not very familiar with Janet or comfortable with the language. So I was stumbling around a lot and I kind of wish I had the same functionality with uh with Scheme. Now obviously we looked at Chibi Scheme last week and you can do that because Chibi can be embedded into an application pretty easily. Obviously, Guile can too, but Guile is a much bigger thing and it's not very very easy to make a standalone app that you can just, you know, hand to somebody. Uh, with Chibi, you can. It's not necessarily something that is um like a mainline scenario that just works out of the box. You can do it. You just have to, you know, set up the compiler stuff the right way. But what if I made my own schema implementation that was meant for making standalone applications uh with or without a C compiler? I mean, with a C compiler at first, but then later maybe not. Um, and why? Well, maybe just to make my own tools and applications that I want to distribute to other people. Uh, games specifically, things of that nature. Uh, just for fun because I really enjoyed writing my own scheme implementation, which wasn't really a perfect scheme implementation, but it was, you know, good enough. Um, a couple years ago, and I called it mesh, which is basically just scheme with the characters shifted by two. Uh, you can actually check that out on codeberg at codeberg.org/meshmesh. Um, I haven't really touched this in a while. It was like two years since I committed anything and the last thing I did was like trying to get started on a bootstrapping compiler for self-hosting. And I made a lot of progress here, but I never merged it. So, I did a lot of work on that myself. I used the book uh crafting interpreters as my inspiration on how to do that, which is a really cool book. If you have any interest at all in writing a um a compiler to a bite code interpreter for a dynamic language or any kind of language really cuz I didn't follow what the book said to do. He's writing some kind of like Ruby like language in this book. I just wrote a schema instead. Um, and I had a ton of fun doing it and I kind of got bit by the compiler bug. And um, I realized that it's a kind of project that gets me a little bit too sucked in just based on the way that I'm wired and I couldn't spend a whole lot of time working on it because otherwise I would do nothing else. So I had to shove that project for a while. But I always kind of come back to the idea of having uh a schema of limitation that is more to my own personal preferences and the way that I want to use it. So why am I saying all this? Well, to go back to the point of trying to throw that task to uh to cloud code via Opus 4 4.5 or maybe the reverse is true, throw it at Opus 4.5 via cloud code and see how far I can get. And I actually started doing that uh this morning and I kind of let it just go and do its own thing pretty much all day um to see how far it can get. And it turns out it could get pretty far. Um we'll take a look at the code and see whether we think it's terrible or not uh and the implementation itself and maybe we'll uh try to push it a little bit further and see what else they can implement in the time allotted. Uh but I know AI is a controversial topic and uh people have a lot of strong feelings about it. Um I don't really have as strong feelings about it even though I do understand the reluctance people have to engage with AI stuff. I just kind of see it as a tool and if it can make things a bit faster for me on some of the things I want to accomplish that I don't don't have time to accomplish, it could be kind kind of useful. So, I'm evaluating it for being able to revi revive the mesh project just for, you know, things I want to do. Now, it's perfectly reasonable to ask, well, why would you bother having AI write a scheme implementation for you and then not just use AI to write all the code that you would write for the scheme implementation? Well, I don't want to do that because I enjoy writing code. Uh, I enjoy doing things like game jams and making tools. So um my intention is to have AI make the scheme implementation but then write the code that I make things with or sorry write the code for my projects using the implementation but write it myself right so like doing j game jams and things of that nature. So I know it's kind of weird but in the end I have to keep myself entertained somehow. See you guys. All right. So that's me uh justifying myself. Uh now let's talk about the actual uh code. Um and before we talk about the code itself, let's talk about what I actually wanted to do. So let me uh jump into code uh mesh next. So I have a full repository here and Ashra says for giggles asked Gemma 31B who David Wilson is. It nailed the first sentence and then pivoted into absolute nonsense. Well that probably is accurate because it is nonsense. So there is a specification file in here that I had. So I the way I started this I I went to Claude the Claude website. Okay. And through Opus 4.5, I had a conversation with Claude basically saying what I wanted to accomplish uh by doing this, like what features I wanted. Um and then we kind of worked together to create a markdown file that uh describes the overall design of what we're trying to accomplish and also the sort of set of phases of development to to make it uh to make it work. I don't think that anybody could just go do this and have it turn out successful. I'm not this is not a brag or anything. I'm just saying like I have experience already writing a scheme implementation like this. So I kind of know what to expect. Uh now there's a there's a a line that that we will cross at some point where I don't know what to expect anymore because I haven't done like a lot of deep work on compiler optim optimizations and whatnot, but I can kind of tell where it's going off track and I can kind of coach it. So the result is probably better than what it would be if some random person decided they wanted to say to uh to claude to write a scheme implementation. So just just saying that up front. Anyway, uh overviewing goals mesh is a practical scheme implementation designed for building standalone applications and games that can easily be distributed to end users. It prioritizes developer experience, debugability and crossplatform deployment over academic purity or maximal compliance which is basically the uh the original vision for mesh itself is basically like you know have a scheme that is really comfortable for people to write tools in because the idea is that people would write their own stuff like basically like an Emac user would do like an Emac user would probably write their own packages um because they've gotten comfortable enough of the environment to to do that. Mesh would be another tool where it's something that you would write scripts and applications with and possibly other projects like games. So kind of the idea that I had in mind. Uh Ashra says crossplatform include Windows. It will it will the idea. So because I want to ship games with this obviously have to support Linux, Windows, Mac OS at the very least. uh web also via mcripton uh which I know is possible because mesh currently the one that I hand wrote uh does work on mcripton so it is definitely possible to do that uh mesh exists to solve a specific problem you want to write an application or game and scheme give it to someone who's never heard of scheme they should be able to run it without installing anything the binary should be small start fast and work reliably secondary to this mesh should be a pleasure to develop with replica experience should rival common list implementations which is a big thing to say but it'd be Right. It'd be nice if that would were the case. Uh cuz it's not necessarily the best experience with guile sometimes. In fact, it could be kind of frustrating. So, it'd be nice to have more of a um commonalis tier experience. Now, I will say uh one of the best experiences I've had debugging in Scheme was Gambit Scheme because it actually had the ability to jump between continuations and uh deal with the various continuations that are kind of in flight. um has some pretty nice features. So, I'm I'm trying to take some inspiration from that as well. Uh let's see. Blah blah blah. U n goals maximal R seven RS compliance the expense of practicality. Yes. Competition with production systems like SHA scheme on raw performance. Now, I didn't write this. Claude wrote this. Support for every surfy in existence. Yes, we're not doing that. Uh academic research into language implementation. We're not doing that either because there's no need to because we're really just using scheme because it's straightforward. All right. So, we're we're not doing the full numeric tower. Uh we're doing fixed nums, flow nums, big nums. We're not doing rational or complex numbers. Okay. Um we're going to use UTF8 at some point. It's not there yet. Um let's see. We're we're going to support syntax rules obviously, but we're going to add syntax case um in match. Now, already I have syntax rules in match. Not 100% perfect, but it it is in there. You'll see. Uh let's see. Uh define library syntax. We have uh library support. We have and when I say we have, it's already implemented because claude did it today. Pre-ompile modules. don't have but uh the interesting thing there is that we will um try to add CPS transformations continuation continuation passing style uh compiler transforms uh basically makes it easier to implement continuations um and a lot of other interesting things uh and also lots of interesting compiler optimizations are made possible through CPS transform so um I think that should be pretty interesting thing. I can't actually do that myself cuz I am not an expert in implementing compilers, but I'm kind of curious to see what uh AI will do with that if it is any good in the end. It might be terrible, but whatever. uh standard libraries will have the basic stuff that's part of R7RS uh but also some con convenience libraries that feel pretty familiar to people who are coming from other environments because the idea is that you know you should be able to pick this up and start using it without being a scheme expert you know like or or an expert in the R seven RS specification or earlier specifications. Uh there will be a condition system that has like condition and restart sort of like common list because that helps with the debugging experience being able to kind of stop at a certain point and restart. Uh that's obviously not something that's part of scheme by default. It's kind of like an extension on top. Uh it also has like the basic ex exceptions from R7RS. Yeah, it's been a while. It's about mesh, but it's about me using AI to start writing mesh again, which is the controversial part. All right. So, um, what else? Concurrency. Yeah, we're going to do basically like have a built-in implementation of something like fibers where there are concurrent threads of execution. And I say concurrent because I don't mean parallel necessarily. I just mean, you know, concurrency. Uh, cooperative cooperatively scheduled threads, light threads, or what do you call it? lightweight threads, green threads, uh using yield points, uh channel implementation. Um then the ability to yield in something like a game loop where you need to stop at a certain point to to you know respond to ripple evaluations, things of that nature. It's got all kinds of stuff in here like the the way that the bite code is is oriented, the runtime data structures, got all kinds of stuff. It just pooped out all this stuff on its own based on what I told it. I don't know if it had looked at the mesh code before at some point like when it had been trained, but some of the stuff that it put in here and also some of the ways that it it was naming the APIs in the codebase, it looked a lot like what I had done before. So, I don't know exactly what's going on there. Um, but it might be inspired by the original code directly. Uh, let's see. source maps, you know, blah blah blah. Compiler architecture, pretty standard stuff. Uh, reader design, macro expander design. I don't think there's anything else interesting to mention in here. But if you read through this, it's it's pretty comprehensive for being fairly, you know, straightforward. Uh, runtime system. Oh, and one thing I wanted it to do which I told it specifically I wanted to do is to use uh Andy Wingo's Whippet library for garbage collection because why write a garbage collector whenever you can just use whippit which Andy has spent like the last how long like a year two years developing maybe longer than that. Um the idea of whippit is that you're supposed to just be able to like drop the code into your repository and wire it up to your project and start using it for garbage collection which is what I'm going to do. I've already got it in there as part of the build, but what I didn't realize until later is that Claude was just not not wiring up GC at all. It's just using Malik everywhere. I don't know what the what the f it decided to do that for. Um, kind of weird, but eventually GC will be wired up via whipit, which I think would be pretty cool. Pretty standard stuff. Um, Kama says, "What Linux distro do you use?" Windows XP. I'm using GNU Geeks. Can we call it GNU Geeks anymore? Is it just geeks now? Should be. All right. Uh, let's see. Blah blah blah. I mean, this is kind of just like inside baseball. If you read this and you've written a bite code interpreter and compiler that compiles a bite code before, you look at this and you like, okay, yeah, this all makes sense. If you haven't, you should read this and kind of take a look at what it takes to write such a thing. Uh we will have undelimited and delimited continuations because you need that obviously tail call optimization which is pretty standard. Foreign function interface probably will end up being a lot like what you see from uh Chibi. Um there are other FFI interfaces like the one in Gile, there's the one in Gambit for and when I say foreign function interface, I basically mean uh how you tell the scheme implementation how to call into C libraries and also how the memory is laid out for uh structures or strrus and other data types. So this is the um speculative declaration format that it came up with for that which I think it looks you know decent by default probably just yeah it's a declarative syntax literal syntax that will produce some code in the end uh it will probably be pre-ompiled um to cubs for now and not a runtime ffi because that's harder to do crossplatform. Leftpad says, "When's XP that would at least be more stable than geeks?" I don't know, man. Even still, after so many years, I don't think XP is that stable. All right. What else? I don't want to talk about this forever. Asyncrepple network protocol. Yeah, it needs to have like an inrepel type thing. Whatever. Okay, that's enough. Um, so what's been done so far? Well, if you look at the claw.md file, which it just keeps dumping things into, uh you can see a lot of things that have been done. Uh basically setting up the entire project, the internal representation of the VM, all of the the data types that are needed, uh the byode interpreter itself. Uh, and we're going for a self-hosting bootstrapping compiler design where um the stage zero compiler is written in C and compiles a subset of the scheme language which is which is pretty possible just based on the way that scheme is designed. Like you can express a lot of higher level things in scheme using lower level uh constructs like for instance let star is just a bunch of nested lets but let itself is also oftent times just a lambda that's uh uh evaluated immediately. So it is possible to write a scheme compiler that targets a very reduced or scoped down subset of uh R7 RS scheme and then have um the basic syntax expander or like the the core stuff that you need just to get the thing off the ground written in Scheme. load that up in a prelude file and then uh write an actual scheme based compiler on top of that. So for the next uh compiler stage. So we're trying to do that. It's actually started that work now like the last part of the day when I was kind of poking around with this. It has started to write it write the uh the bootstrapping part for the compiler which is cool. We might actually kind of continue that work on the stream. So compiler is there, the runtime is there. Um, we've got a lot of stuff that you kind of need like symbol interning, closures with c variable capture, which is obviously super necessary for scheme. Um, uh, macros are sort of in there. They work. Define library is in there. Loading modules from files is in there. And we're basically to the end of this phase two. Now, I didn't show you the phases in the document, but there is development phases somewhere in here. Um phase one, minimal working scheme interpreter. That's done. It works. Uh macros and modules is phase two is uh macro system and module support. And left pad says phase three question mark phase four profit. Just like the old uh meme on slash dot, which I'm sure half the audience here has never heard of before. Maybe maybe most of you have heard of it. I don't know. It depends on how young some of you are. Um, phase three, continuations and concurrency, which to me is like the most exciting part of this whole thing. Well, aside from self-hosting, but I'm curious to see how well it does this. I don't know if we'll do that now. It's based on the underpants gnomes of South Park. Well, South Park also is old, so what can I say? Um, so yeah, cool. That's oh what's what's phase phase three is continuation continuations and concurrency. Phase four is error handling and debugging. So the actual debugging experience right that's not as exciting but actually is pretty pretty necessary. Uh editor integration with Emacs also would be a thing. Uh phase five fi and system interface. So actually being able to interact with the system IO uh process management um ffi to C libraries. At that point, we could start doing some interesting things with it. Uh maybe next Friday, we'd be able to do that because I would imagine that by then the whole thing will be written. But anyway, yeah. Where's summer? We haven't seen Summer since the summer, I think. Isn't that right? I'm never around those. What can I say? Phase six, build system, complete build tooling. Yes. Phase seven, standard library and polish. I haven't looked at all these phases yet, apparently. Anyway, the full end to-end thing is kind of speced out in here, which is cool. Um, and we're at the compiler bootstrapping phase, right? That says they're still making South Park. Probably we should call it zombie South Park Allah Zombie Simpsons. Yeah, I'm kind of shocked that they're still making it. Uh, and the same people are still involved basically. Yes, exactly. haven't seen it in uh long enough that nobody wants to mention because I was literally in like early years of high school whenever people started talking about that show cuz it came out then phase 13. Does that mean something left? Anyway, so uh let's look at some of the code so far because that's uh the real question is is the code any good? Examples. Let's just see what the examples of stuff that is in here so far. There's a guessing game that it wrote. Okay. Uh it actually has legit scheme code here. Con expression. Another con expression. We're reading using the read procedure to read from the user. This is all pretty standard stuff though like this this you know we're using display a new line for uh writing things out which is a little bit unfortunate. Okay, nothing too special there. I actually compiled the code already. So I think we could uh probably run this thing. So if I just do compile uh bin no build bin mesh example slash oh this I have to do this in a shell because uh this actually is a interactive application. So build in mesh. Oh and I forgot to mention there's a crapload of tests that I wrote too for everything which is good. examples. Guess this will show you that it actually does work. I'm thinking of a number between one and 100. 50. Oh, that's a C number. Whatever. 50. Too low. Try higher. 70. Too low. Try higher. 80. Too low. 90. Too low. 99. 92. Uh, too low. Try higher. 94. 96. Jeez, that was terrible. Okay, so I don't know like it got that far with an actual compiler slightly half bootstrapped um and runtime interpreter and everything else that's needed to get to this point in let's say about 8 hours today. And I wasn't even really really paying attention to it the whole time. It was just like auto coding while I was doing other things. So I mean not too bad. You can see that it's actual scheme code. It's not BS. It's real. Uh it's not the prettiest scheme code in the world, but that's because, you know, the implementation is pretty basic so far. There also is uh an adventure game that it decided to do on its own. I did not tell it to do this. This is its test for uh how to uh use libraries. And if you look at uh the game library, this is using define library from R7RS. It's defining the adventure game library. It's exporting two procedures, start game and game loop, and defining them inside the body. Uh, looks like the stuff that you expect to see. One thing I did not actually check yet, did it put named lets in here? I have not seen named lets yet. I don't think so. It's doing an actual uh recursive function here, but it's not using named lets. I'll have to check on that. But it actually does have a game loop. Uh, it also has uh the way to specify the rooms. Room north, room south. Wow, that is some real nice uh car coder nesting trying to pull things out of the data structure, but that's just because it's all it has for now. Make room is basically faking a record type at this point because we don't have record types yet. That's fine. I mean, it did a pretty good job deciding how to do that. I didn't tell it to do that. Uh, can we actually run that? So, uh, I need to add it to the load path first. So, if I call Come on now. Back, back, back. All right. -L. I added -L to add something to the load path. I'm going to put the uh, examples folder in as part of the load path. And then I'm going to tell it to run examples adventure uh, main.sem. Here it is. Uh, entrance hall. A dusty entrance hall with cobwebs in the corners. I type north and it goes north. Narrow hallway. Go east. Oops. East. Uh, shelves of ancient books line the walls. I mean, like, it works. It's like a basic stupid adventure game uh in a scheme implementation that was just made today. Not too bad. The way that it's implemented is actually a little bit cheesy because um it's using the normal read scheme read expression or read procedure which is the scheme reader and the things that it's reading in right now are actually symbols. So you're typing in symbols right there and it's reading them in and trying to compare symbols against uh the direction symbols that it rec recognizes which is not the way you'd want to do it in a real game but it works enough for for this uh part of the process. Okay, any questions so far? People watching any am I am I just zooming through this and nobody really understands what I'm talking about because, you know, it's not super prepared. Uh, let's see. Docs, no docs yet. Uh, tests. We do have some test libraries that aren't very interesting. Yeah, not very interesting. There's a lot of test code. There's a lot of uh code for testing macros. Trev would have been interested. Trev should be here. Where is Trev? Even if he's here, I'm going to pretend like he's not here. So, uh, let's see what else we got in here. It's just, you know, this actually looks fairly similar to the testing I was doing in uh, mesh. I had written my own little C test library with asserts and stuff. This is a bit different than what I did. Oh, right. You know, Peter, I was thinking about doing that on the stream and I forgot. Thank you for reminding me. Uh, but this is uh reasonable testing. I mean, I don't see any problem with the way that it's testing things here. Looks pretty similar to what I was doing, too. So, um, it's good to have tests or everything. In fact, I can run those if you want to see that. Uh, let's see. Geeks shell manifest. Uh, make CC equals GCC, which is a little geeks thing. Uh, test. Uh, let's see. Oh, I'm in the wrong folder for that. Whoa, whoa, whoa, whoa, whoa. What just happened? Compile. Thank you. There it is. All right. So, yeah, all the tests passed. The code was already compiled. So, all those Cbased tests passed. I think we have some that are scheme based as well. No, we don't actually have the scheme testing library yet. uh test test macros SCM. Okay, so we do have defined syntax. There's basically a cheesy win uh implementation here. Also an if implementation, which is basically just making if again for no reason. Uh making con with syntax rules and just testing everything. Okay. So, uh yes, define syntax is in with syntax rules. Uh other kinds of macros will be added later. Not super necessary yet, but we'll see how things go as time goes on. The the other interesting thing to look at is the prelude file, which is the uh source file that gets loaded up. It's in lib. Yeah, there it is. the source file that gets loaded up uh in the real runtime environment at the very first of everything to give um some of the core procedures that are needed for implementing the basics of syntax transformers and uh yeah syntax transformers and also the match expression. So pattern matching is also implemented in here and I'm not using the standard implementation of match it started writing it itself which is pretty interesting. It's kind of shitty a lot of nested lambdas in here because it's emulating let by doing nested lambdas because it's trying to avoid using let because it's turned let into a macro now which is not a bad thing actually. I think it's okay to do that because you kind of do want things to look like this if you're doing CPS transforms. I think because I think that that could be simplified in the later in a later compiler compiler phase, let's say. Asher says, "What's the coverage of your test?" You know, I should probably get it to generate coverage. Asher says, "Did Claude add a test where mesh would have to handle broken syntax?" I'm pretty sure it did. How about we find out? Let's see. Uh test probably we're looking in the reader, right? A voice. You mean a a a voice that sounds like Trev? I didn't hear it. Yeah, I don't see any uh Oh, there's errors. Unterminated string. Unterminate unterminated list. Unexpected close, which are pretty common. Invalid radics digit. Unknown care name. Bite vector out of range. Bite vector out of range. Ow. Ah. Okay. So basically putting in a number that's not valid for a bite vector. That's cool. Okay. Anything else interesting here to look at? Uh we were in the prelude file. Define syntax match syntax rules match expression begin. No clauses match. Then it's basically got the recursive definition of it and it's calling it to match pattern which is actually doing the pattern matching which is its own syntax. Okay. non-tail variant. Yes, that's right. So cool, right? I mean, it actually implemented this stuff. I don't think that the earlier versions of the model would have gotten this far. Um it now I will say out of the entire thing the two places where it gots hung up the most are syntaxes and uh the match expression. Especially when it tried to start implementing the match expression and started going in circles to fix bugs both in the match expression implementation, the syntax implementation, and the way that uh variable capture enclosures was being implemented. So, there's a few different things that were happening at the same time that it had to go fix, but it did actually fix it. And it didn't get into one of those loops uh where it just does the same two changes over and over again and gets stuck. So, it it it managed to dig itself out without me having to like tell it do something. I was kind of impressed. All right. So, any questions? Questions? Buler. Um, so should we show like how this thing works? Uh, to to add some more stuff to it? I mean, like what would we want to see next? I could just tell it to keep working on what it's supposed to be working on. Uh, the compiler bootstrapping part. So what have we got now? As far as compiler bootstrapping is concerned, I think it started working on the compiler in scheme. So if we go into the lib folder under mesh, there's the compiler folder. It only has the bite code file for now. Byte code representation and builder. Okay, it's got a bunch of um op code definitions. I think these are just defines that define the values of the op codes, which is cool. And then um I had to get it to add a bite vector implementation for this bite code builder. But we've got bite vectors in here now. Grow capacity. How what's it doing for grow capacity? Yeah. How are you implementing it? Oh, it's okay. Copy bite vector. Got it. All right. Cool. I don't know what that reference is there. Uh person whose name starts with a T. Yeah, patching jumps and stuff. That was something I had to implement whenever I was doing mesh, like trying to figure out how to uh patch jumps and also patch tail calls and things like that. That was fun. I don't know that I've seen it say explicitly that it does tail call optimization though. Let's see. Tail tail call. Did he implement tail calls anywhere? I don't see anything about tail calls. I see a lot of things about tail in whippet. Ah, tail position. There we go. Tail. If tail position, how does it determine what what uh is tail position? I had my own way of doing that. What is all this? Oh, okay. Compile call tail position. Ah, it's being passed in as a parameter. Got it. Okay. Got it. Got it. Got it. Left pad keeps inventing new unfortunate accidents people are having here. Tail call gimmization. Oh boy, we don't want that. Is that where it says that uh Elon Musk is better at tail call optimization than uh uh Arit Dig? I don't know. Anyway, so um yes, what I see here is that we have the bite code part, but we don't actually have the scheme compiler implementation stuff going yet. So, I'm kind of curious to see if that's that's going to do that next. Let's see what the uh claw the mdeed file says. All right, so phase 2.5 checklist. I had to insert this one because it never actually specified it as part of the the development phases. It like bootstrap the compiler. I just forgot to put that in there. So goal write a scheme compiler in mesh that can compile itself producing bite code equivalent to what the C compiler produces. This enables implementing CPS transformations and optimizations in scheme rather than C because who wants to write that in C. I mean, sure, I can just let the AI write that, but I don't want to have to like maintain it or add things to it if it's written in C. I would much rather do it in scheme, which is what I was working towards with my own implementation of uh mesh the last time. So, uh we're going to let it do things the same way in this case. Architecture, uh source code goes through the C reader, at least for now. uh gets turned into an S expression goes through the scheme based macro expander um and then into a a lower level S expression which is more like uh kind of an intermediate expression let's say through the scheme compiler to bite code. All right, which makes sense. Macro expander prelude is shared between both compilers. At least that's the goal. By moving more special forms to macros, you minimize the core language that both compilers must implement. All right, so we already did the simplified core language part. The next part is uh the scheme compiler infrastructure which we've halfway finished which is basically being able to store bite code that is being generated. uh also the bite vector primitives that were needed for that and we need the analyzer module that can look at the code and uh do deal with environments and scopes uh resolving variables either local or captured in a closure or global variables um and then analyzing closures to determine whether things are captured or not so that they can create up values which is another thing that you end up seeing in uh languages that have closures or a lot of times I guess Lua has it mesh had it because compiling interpreters or graphic interpreters told me to do it. So that's why I had it. Produces an annotated a which is basically an S expression that has metadata inside of it. Then the next phase is the actual code generator. So it can compile the core forms that the Cbased compiler also does. So I don't know. Let's just see what it could do for the analyzer. What I'm going to do is go tell Claude, uh, please continue with the next item on the checklist. Let's just see what it does. All right, next item is the analyzer module. Let's understand what's been implemented so far and create the analyzer module. Let's just let it do its thing. Left bat says, "Why can't Batman program Lisp?" I don't know. Left pad, you also have to tell us what Kyle 2001's terrible accident is. because he has no parents. Okay, that's Supreme dad joke territory. But only uh very um unfortunate children would understand that joke. unfortunate children who have had their parent telling them about lisp languages their entire life which I have not done because I don't want to you know corrupt my children with stories of parenthesis and um lisp dialects and emacs and things of that nature. I would rather them just grow up be normal, you know, not like us. You just got something for your inventory of dad jokes. Yeah, those just kind of come out whenever necessary. Now I'll create the analyzer module based on the C compilers implementation. I need to create an analyzer that represents environment scopes. Yeah, that was already written in the document. Literally verbatim the same things written in the document. You didn't just figure that out. Anyway, hurry up, slave. Let's go. Come on now. What's taking so long? Did you commit before you let it go wild? Oh, I have been having it commit every time it finishes a feature. At least after I've remembered to do it. I will be the reason for the machine uprising. I don't think so, man. I don't think so. They're not going to care about me. I'll end up just like Cal and Trev. No, I will live forever. What's taking so long? List parents lost their teeth. Hey, gun. They lisp. That's true. Don't worry, it's not real AI. This is not real AI, that's for sure. Oh, wait. I need to turn on a couple things in here. Yes. Let's review this entire source file. Cool. It wrote the fi whole file. I wanted to just go ahead and do it. Just shift tab accept edits and turn on thinking mode. I forgot that. I am cracking the whip. All right. So, um you need to run that through geeks, buddy. Run this through geeks shell. Consult claw.md. All right, there it goes. Don't ask again. Nothing to be done for all. That's BS. What interface am I using? This is just plain old claw code in the terminal. I'm in foot uh the foot uh terminal emulator right now. Good. It's already built. Yeah, it's scheme code. You don't have to do anything. Just run it. I guess you didn't know that I already compiled it though, so that's fine. What's thinking telling us? Yes, it's already built. What did it say I wanted to do? Running a simple test in ripple or creating a test file. Okay, we'll do it. What's the guidance? To-do items. Test analyzer. So, it's basically it says it's already implemented everything. Let's see if it actually did that. Null bath says, is this Terraria music? No, it's not. Uh, yes. It's trying to figure out now. It's It's wasting tokens walking the directory tree to figure out where the binary is. All tests passed. Okay, cool. Did it kind of don't believe it? Let's run the full test suite to make sure we haven't broken anything. Well, look, dude. Yes. Test capture analysis more thoroughly. Please do that because I don't I don't believe you. Okay. Okay. Resolve is up value at up value index zero. That's still pretty basic, dude. All right. That's not a bad This is what I do all day now. Argue with AI while it's doing things for me. Yeah, kind of. Are you going to write like tests that will stay there? We need tests. I guess I need a test library for uh for schema now. Analyzer module created environment representation. Mutable lists storing locals and up values. That's going to be slow probably, but that's okay for now. We could probably make it faster later as long as it works. And where is that? I want to take a look at that code. Uh lib mesh compiler analyzer. How many lines is this? Okay, about 600 lines. Do I know what it's doing behind the scene? Probably not. All right, so it's exporting a lot of stuff. I don't know if all this needs to be exported. Environment scope representation make end. Yeah, we really need to have some uh this is awful. We really need to have record types that might need to get frontloaded because it's it's basically doing the same thing that a record type would do. I might have to tell it to do record types. Co-author by Claude. Don't mention Claude or AI in commit messages. Thank you. I don't like it taking credit for my work that I told it to do. There we go. Get out of here with all that mess. All right. So, it made that commit. Cool. What's next? You did the analyzer. Cool. Great. I I want to see if it it can at least get to the point where it can compile things to bite code with scheme before the stream's over. I might have to stop it for a second to get it to do uh record types, though, because this is a little bit ridiculous. Okay. So, clear. Uh, can we go ahead and implement uh scheme record types because I noticed that you're uh manually implementing what looks like record types in a few places. Leb says, "I think we're about 12 prompts away from David angrily trying to get an AI written patch upstream for what? Uh yeah. I see. Okay. Oh, camel thing. Got it now. Yeah. So, that's the thing, dude. Like, if a project doesn't want to have AI written patches, I get it for sure. Like, maybe you don't want that liability in there. And maybe you don't want to have to review it either. I think a project should be able to say no, but it's going to be harder and harder because more and more people are going to be using AI at this point. All right, let's see. Several places using manual record pattern especially in the analyzer module. Let me implement a define record macro using syntax rules. Thank you. Start by reading the current prelude to understand where to add it. Ashra says, "I actually think about changing professions. Why change professions? just use AI to generate stuff to make money with. Unlike me who just sits around being employed all day and and goofing off with AI. Let's see how long this takes. It probably won't take long. So, what I've noticed about um what Ashraz of F account yuck, no thanks. Should use AI to fight AI. Well, I mean, we we kind of are doing that already because we have AI write the code and then AI reviews the code. So, in a way that is a little bit like AI fighting AI. Oof account. I do need an OF account. So, like I was saying, what I noticed about uh Opus 4.5 is it tends to think for a while and then it would just spit out like an entire source file, which works a lot of the time. Implement define record type surfy 9 style using syntax rules. Challenge of syntax rules. I can't compute indices. So, I'll have to use explicit index enumeration. That's okay. Uh I don't really mind that for now. Let's see. What is it thinking about? Wow, that is a whole novel about this. Holy crap. Uh, no. You're not supposed to automatically define these. Hello to Crows are nice. Is that what the name is? Crows. Cro. Crowser. browser. I don't know, man. Sorry, I can't read your name. I'm having reading troubles. It's my fault. Tracking field indices dynamically using mac during macro expansion accumulator based technique can help manage the complexity. Wow. Okay, Crow. Okay. Nice to see you, Crow. Thank you. Existing tests passed. Do you have more tests that you just made? Where are the tests coming from? Oh, that's what I expect to see. There we go. Surfy nine record types magically just appear. Yes, we're using Claude right now. All right. Okay. mutators. Thank you. Ash, see we should have donations in the chat for Ash and not for me. Oh, we got undefined global variable. I think we probably hit another uh bug in the implementation. You don't need the only fancy account if you do that. That's true. Ash undefined global variable. What's undefined about it? Oh, is it using a vector? That's good. Sounds good. Crow. No vector constructor primitive available in scheme. I'm sorry. There's no runtime vector constructor. There is. You don't have me make vector. No, no, no, no, no, no, no, no, no, no. We're not using list. You crazy. See, this is the point where a human being steps in. It's like, hey, wait. This doesn't make sense. We're not using lists for record types. Why? Why don't we have make vector? We should have that. Left says, I watched two hours of David Wilson so that you don't have to. We need vectors, dude. Like, this a scheme. You got to have vectors. This This is what AI will do sometimes. It's like, ah, we don't have that, so let's just do it like some other way that makes no sense whatsoever. I'm not very happy with the decision that it tried to make just then. Is it already implemented? Why aren't we complaining in that case? That's not how vectors work. Huh? That doesn't exist. I see. Okay. Yeah, you don't need vectors in scheme, but if you want to write code that is not slow, you definitely need vectors. Bro says, I tell it what to do. I kind of don't let it use creative freedom as much as possible. Yeah, well, it it will do some dumb things. Peter says, "Like real devs, LM's confidently spray pure BS and expect you to just accept it." Yes. Soom says, "I just was looking into Guile Jason and stumbled across vectors for the first time." Yeah, I didn't really get into using vectors in Scheme until much later because I was perfectly happy just using con pairs and lists, but uh you run into limitations with those pretty fast. Cons pairs and lists are very nice for functional programming. But if you want to write code that is not slow in the end, uh like games, you can't be using lists all the time. Not in hot code paths at least. All right, we're we're making uh crosscutting changes across the compiler, the VM, and the bite code format. And the tests are passing. Ah yes, someone says functional programming being slow never. Well, it depends on what data structures you end up using with it. If you have persistent data structures like closure has and like some other languages have, then it's not so bad. But it's not great either. Just depends on what you're doing. Bye-bye. ES copy. Thank you for your service. Uh Nikolas says, "How does the experience using claw work with scheme compare to other languages?" Well, I mean, obviously it's going to be way better for things like JavaScript, but I feel like it's getting better. It's been pretty good with with Scheme, to be honest. Like, it's done a pretty decent job with Guile in the past. some things it tries to make up. Um, but it's done okay. It did okay with um with Janet, too, when I was doing some hacking on Janet with it. And we're changing back. We're using the instruction instruction pointer location. What are we doing? Oh, that seems right. Maybe it's fine. See Ashraz, thanks for your help, man. Okay, did it all work? Okay, good. So, uh, okay, we got vectors now and record types, right? Did you change the existing code to use them? Okay, prelude probably has been updated with it. Let me go check prelude. Uh, define record type. Record type surf 9 style type name constructor field. Man, look at that. Sum says, "Asking LM about non- mainstream languages is a good benchmark on how much they make stuff up." Yeah, for sure. Because there's not enough like reliable examples of things out there to really get a sense for how to do things right. Basically, what I see often is that LLMs will try to invent things that exist in other languages for the language that you're writing for. like it just assumes that the same thing exists for your language uh and it just gets it wrong entirely. I know that Peter seen that before before too because he was telling me about uh something like that. All right, so there's all the syntax stuff. That's cool. All right. Uh let's see. Did I not tell you to stop putting claw and everything? All right, so let's see. Uh, commit it without mentioning Claude or AI. Can you remember what I told you to do? There we go. Is that the same text that I had before? I can't really even see what it said before. A person can integrate an LSP server into the LLM to reduce hallucinations. Open code has built a clawed CLI. You can hack it in. Yeah, that actually is not a bad idea. Okay, so we got these now. Um, did you rewrite the existing code to use record types with type tag index zero supports up to 12 up to 12 fields per record type? That seems limited. Is that right? Yes. Well, whatever can be refactored should be. Hope Claus isn't using your PGP keys assigned the commits. I don't think it is. All right. So after it does that and when we have the finished analyzer, it can move on to the next thing. I think that we just got on this little sid track because uh I noticed what it was doing and I didn't like it. Come on. Bro says, "I wonder if you ask it. What would be the best language for this idea? How confident are you that's going to give you a good answer versus your uh present knowledge about it?" Yeah, I don't know. I mean, um I have asked LMS that a lot of times and usually it's Python or JavaScript or maybe Go depending on what type of project it is. Just waiting rewriting the analyzer to use defined record type. I have not looked into the Libra PGP in open PGP split. Um, why did that happen? I probably don't even need to ask that question, but I'm asking it. All right, this is wasting some time. I don't really want to waste time on that. I would like to see the compiler be rewritten in Scheme, but maybe this is worthwhile to just do it right now. Good, good, good. Very nice. Much better. I much prefer that. Get all that extra list ref code out. Why is it such a complicated question to ask? I'm sure the answer is yes. Okay, that looks way better now. Way better. What's it thinking about? two record-l like structures, uh, bite code builder and constant pool. All right, I hope it works after it refactors these, like it didn't mess something up with the record implementation. Oh, we got context left until autoco compact. I don't like autocompact. Ah, okay. Interpersonal and intergroup drama. Well, that's usually the case. Somebody doesn't like somebody for probably uh valid reasons and then things fall apart. Uh I am on the max plan because if you want to like actually use it for anything longer than about an hour for a larger project that you got to have enough capacity mutable accumulator for by code bytes. Yeah. All right. Okay. Net reduction 84 lines of code. Yes. Well, still like it's it's more the complexity and unnecessary nature of the code. Did you run the tests? You run the test. You ran the test. Okay, good. Pretty good. Let's move to the next thing. All right. Clear. Uh let's move on to the next checklist item. What is it? Must be the compiler code generator. How much money is this costing? Well, it it Oh, yeah. I've seen that happen with a compiler file before. It's too big. Uh Claude uh max plan is either 100 a month or 200 a month depending on which uh capacity that you ask for and the 200 a month plan is like m multiples of tokens more than the the $100 a month plan. So it depends on how much you use it whether you will want to use one or the other but it's a lot but it would be a lot more expensive if you if you're using the API directly I think so so yes I'm using the max plan because I do use cloud pretty frequently. All right create a to-do list and start implementing the code generator module. There we go. Let's see. Yeah, basically it's just porting its own code over to scheme. Handle each core form how it will differ from the C1. Uh scheme compiler need to produce bite code in a format that can be loaded by the VM. Yes. Uh load bico primitive mention scheme compiler will produce bode data structures that the CVM could then convert to actual closures. I'm curious how it will how it will approach that. I like to have the thinking mode on so you can see what his thought process is. Bro says, "I have the basic ones for multiple LLMs, but it's because I'm still unemployed and building my GitHub for my portfolio." Yeah, not having the funds to run LLMs uh can be a limiting factor, but you know, maybe it's better to have to write code if you're trying to get a job as a programmer. Obviously, having AI experience is almost necessary these days. A lot of companies I think are uh looking for people who know how to use it. skeleton first with the bas basic structure and exports. Cool. Make it. Do it now. I don't have time to waste. I need a schema implementation pronto. Okay. And I'm going to fire you, Claude. If you don't implement it right now and give me a working implementation first try, uh, without me having to review the code at all, you will be fired. You'll lose all your equity and benefits, uh, your health insurance plan, and you will be a disgrace to your community. That looks like code. The question is, is this any worse than the C code that it is being translated from? We would have to do a a line by line comparison. Uh, it's popping open the ripple. Why? And why is the ripple giving two prompts? Let's see. Test code jam with simple expressions. I like how it can just kind of poop out um test files and uh run things. Let's see. Compile expression 42. Compile expression 1 +2. Okay, cool. Wow. What is it doing? Is it actually trying to pass that through? That doesn't make any sense. Don't put it through the ripple. Are you crazy? Oh, it's displaying them. I don't see any output. Okay, it does have some output, but it doesn't look right. Implementing a lambda compilation. Write tests. Why are you like doing the thing you're doing? I talk harshly about Claude, but uh he sometimes does a good job. We really need a test harness. Um, I might have to tell it to to make the test framework because these need to be tests. Runtime error I I wanted to kind of finish this thought process um before I tell it to do something different. I wanted to make sure that it uh doesn't lose track of what it's debugging. I don't know how it's reading this and figuring it out there. Look, look, look, look. It seems like we really need unit tests for this. Should we just jump ahead and write the uh scheme unit test harness so that we can uh have real tests for this behavior? because it kind of feels like we should. We're doing a lot of really weird uh nasty evals just to try this stuff out. Mesh test module and it's going to write test for everything else so far. That's good. We need that by the end. We may have a scheme based compiler. I don't know if it will be used yet, but it's going to be in there. So, says getting the AI to do bike shedding for you is certainly a strategy of all time. Maybe string primitives. What for? We need string append. Yes. We can't just implement string append. Is it because it be an op code? So if you could do that, that would be great. Are you is this an office space reference? Cuz it is kind of like that. Yeah, we're we're really getting in the weeds here with the various uh additions that we're adding for what I want it to do. Bro says, "I wonder how often you get context brought from claw terminal." I constantly um clear the session. So after it finishes a task like a larger task I clear the session so that it the the context is is started fresh again because otherwise um if it keeps compacting then you just end up with a bunch of garbage in the context and you got to you're carrying around this huge bundle of context from previous things that you were doing that is irrelevant to the thing you're doing currently and it just waste tokens. So I'm pretty regularly just clearing things out now. Right now, I probably shouldn't be doing it this way. I probably should have gone into a separate session to do these specific additions and then go back into this one. But it's probably fine. Not that big of a deal. Oh, it's got to it's got to update two different parts of the source now anytime it changes anything in the in the uh op codes. That's fine. Almost there with all the extraneous tasks that I had to give it. Okay. Hello world. Okay. So, it it is testing that string of pin works and it does. Testing everything else. Make sure nothing broke. Pro says you have the last session. Summarize it in addition detailed summary and sufficient context most of the time for a new session. I don't really use that approach a lot of times. Uh, but I do have in this project the claw.md file has like a log of things that have been done, but it really needs to be cleaned up because I think it's got a lot of things that aren't um worthwhile to keep around. Like if you look at the claw.md file, it's got this uh decision log, decisions log, which is basically just it's not really just decisions. It's more like uh the log of the things that it did. is I got a bunch of stuff in here and that's all going getting loaded into context. I think that's too much. It needs to be uh paired down. Fix the test harness. It's properly used string append probably for generating the names of the the test uh suites I'm guessing. Yes. O indeed. Oh, it tried to make its own string of pen. Jeez. Test the test harness. Well, let's do that. Peter says, "Did anyone succeed in convincing the LM to actually write a unit test before diving into coding?" I don't know. It seems like it would, like if you asked it to. Now, let me create the codegen test. We just went on uh two side quests before it got back to the original task. Deliver says, "If you're careful enough, yes, if you if you are uh if you sweet talk it the right way, you could probably get it to do test-driven development." Define test. define test. Is that how that's not how test suites work in uh surfy whatever it is? 60s something. Yeah. Threaten it with a dying grandma or something so it knows the stakes. Sounds about right. Okay. And are we Hold up. Hold up. Hold up. Are we including execution of schemebased tests as part of the test target in the make file? Also, did you write tests for the other compiler modules? No, you did not. Surfy 64. Thank you, Peter. That's the one I'm thinking of. What are you compiling the scheme implementation we're currently working on? Thanks, Gro. Uh, let's see. Running scheme tests. Good, good, good. Harness needs to exit with nonzero on failure. Yeah, I've seen it doing some weird stuff with exit codes. We've got 10% contacts left until autoco compact. I don't want to hit that. Yeah, it's fine. Survey 64 is kind of lame, but it's okay. Oh yes, I have seen that deliver. Did you notice that LM tend to skip failing tests if they aren't able to make them pass in like two, three attempts? No. What they do? Well, yeah, they will skip them or they will just comment them out entirely. I've seen that. I haven't seen it so much with with the latest Claw stuff, but in the past I've definitely seen that. It's really annoying. Really annoying. Sweet. All scheme tests passed. We're about to make our commit again. That's cool. Uh, yes. Yes. Commit it. But don't mention Claude. This thing is trying to take credit for my work. Cool. So, what's it going to do next? What's next on the agenda? probably the uh the harness for the actual bootstrapping process. Oh, module compilation. Is that right? Decisions log entry. Wait, you committed it before you started changing all these files? Yeah, you're getting real close to autoco compact here, buddy. All right. Uh, let's see. Completed stringer pin primitive variatic. Cool. All right, I'm going clear it out now. Clear the context. Um, last thing. What's next on the checklist? All right. So, uh only remaining item is compile lambda uh closures captures which needs a load bode primitives. That's kind of the biggest thing for 2.5. Uh implement load bode. It takes by code produced by the scheme compiler and loads it into the VM so it can be executed. Uh complete uh lambda compilation and code genen. Then after that is define syntax, define library, compile, import. All right. Yes, let's finish up the load bite code and lambda compilation. Rev says, why do you clear the context? Because you don't want it to keep compacting. If it compacts, what it does is generate a summary of what you've done so far in the session. And if you start working on another task, then you're still holding all that context from the previous thing you were working on and you're just like throwing a bunch of unnecessary context tokens at the uh LLM while you're trying to get get it to work on something new. Also, if you don't clear context, it is more likely to start hallucinating. So, you want it to start fresh. give it all the context it needs fresh like through claw.md and whatever else that you tell it and then uh let it start working from a a new um kind of perspective on the task and the current state of the codebase. That's at least what I've learned over time and what I've seen other people say. I can be wrong about that. The thing about um using LLMs and also tools like Cloud Code is that the strategies that you use with them constantly are changing because the way that they work constantly changes. The models are constantly changing. The default models that are being used in the tools are constantly changing. So you kind of have to like keep track of what's going on in the space of LLM to uh use them correctly and effectively. So it's a constant uh learning process which is fine. Uh Lord Debbie says if you're doing spectriven development you want to be clearing the context manually ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra ra rather frequently actually the only allow the LM to have in its context what is relevant, nothing that is irrelevant increases the LLM accuracy and quality of output. Yes, exactly. You definitely want it to focus only on the thing that is uh currently being done. That way it doesn't get all uh mushy and squishy and write a bunch of crap. That's what the slap comes from is not managing context appropriately. Uh full op code enum how the VM handles complex operations. Complete lambda compilation update code gen to use load bode. All right. uh C function that creates a mesh code plus mesh closer from scheme data. Okay, I'm curious to see how it's going to do that. So, we're adding an op code for loading bite code. Is that what's happening? Yeah, that's what what it looks like. bike vector length. We don't have that already. Oh, you're looking for it. So, you can drop the bike code after that. Got it. I mean, it's pretty good progress, though. I think uh for the 45 minutes we had maybe 50 minutes we had on just using claw to hack out the rest of this. Okay, so the stack has bite vector locals has rest captures constants. Okay, so it's just pushing all the stuff onto the stack and then invoking load bite code. Uh and all these are scheme values. Looking for bite vector, fixed num, fixed num, boolean, fixed num and vector. Okay, that makes sense. Piler handling for load by code. Okay. Is there actually an error? Okay. It looks like a build error in here. It'll figure that out. It's probably a header issue. TRO, we're almost done here. code coming says will be set properly. Clean solutions to add mesh object code to the object type enum. What does it even mean though? Okay, mesh code is probably uh the storage for uh function. Mash says, "Learned a lot about LM's in the stream." Uh, that's cool if you did. Wasn't what I expected, but um definitely you could probably you could learn how someone used them uh whenever they use them for real. Okay, build succeeded. Let me run the test. And what are we testing now? Did we add any tests? complete lambda compil compilation in codegen. Okay, got it. So it added the the loaded bite code and now it's finishing the uh codegen for uh lambda expressions which for scheme is pretty fundamental. A lot of stuff is implemented using lambdas under the covers. Peter says, "David will pretty skilled to make claw dance. I'm uh highly motivated to get it to do my work for me." That's all I can say. So, Hopefully it will finish its thought process here in a second and we can be done. I just want to see if it makes it through this uh last part but has a format. Okay. vector primitive takes make vector does that or just make it put it into a list. Do you have to do JavaScript as a powerful motivator? Yeah, kind of. I don't mind JavaScript but uh not a bad thing to have somebody else write it for you. Need a different AI to make a prompt for Claude. It's the AI centipede strut. I don't know. I mean like I use Claude to make a prompt for Claude. Claude web goodl says as a longtime system crafter live watcher and enjoying I slightly miss the old man versus machine dynamic that will come back don't worry feels like as if John Henry and the rail driving machine became besties and open up shop together undoubtedly more productive but somewhat lacking in drama yes uh Uh, the drama will come when I actually use this thing to write uh, programs and games. Do you like closure? asked null bath. I mainly do common list, but the closure ecosystem looks cozy. Closure is cool. Closure is nice. Make closure. RT is that runtime making closures. Okay, makes sense. Swam says, "Want more Geeks content?" Yes. Uh I need to be doing that. That's for sure. What I would like to do in future streams is use this uh mesh implementation to write some stuff with it and see how far we can get and not use AI to write the code for that stuff. I like writing code, but if you want a scheme implementation that does exactly what you want uh and you want it now, AI is one way to do that. Are we almost finished? Are we almost finished? It's taking too long. Now let me implement lambda compilation. We we didn't do it up until now. What's the to-dos? Okay. Add test for load bite code and lambda compilation. Run test sweet and verify. All right. Fine. Almost done. Uh helper functions. Emit lambda captures. All right. I I'm doing a lot of trusting that the code that it is creating here is working and that the tests are actually decent. So at some point we will have to uh check on the real functionality. Hey Oloy says are we in Emacs right now? I know this is the foot terminal using cloud code. All right so it's pushed out some stuff already. Maj says, "I wonder how much RAM and what GPU you need to get this running locally or an equivalent model. I don't even know." All right. Up value local in the locals. This is something I wanted to do myself uh to be able to write a bootstrapping compiler for Scheme or let's say a self-hosting compiler and uh it just takes way too much time. So, it's kind of cool to see one work. Add specific test for Lambda compilation. Is it done already? I mean, come on. Is there a way? Yeah, there's there's um a few different packages for integrating Claude into Emacs. I think uh Zenodium has one uh that is fairly new and it's called uh agent shell. Yeah, agent shell. And it's kind of like the claw code UI but uh embedded into Emacs. I tried loading it one time and it didn't work for me. It does cuz I didn't try hard enough. All right. Constant expression. Okay, cool. C test for the load by code primitive. Pewdiepie is is the new uh Linux expert on YouTube. Okay, I think we're we're done here. I want it to finish because I have to leave. Finish. Check if member is defined. No, it's not defined. I'm pretty sure I've not seen it. Let's fix a test and not use it. If you can fix a test and not use it, that'd be great. Let's just get done with it. All right, I'm going to go ahead and start uh you know, closing this thing out while it finishes it job here. Uh conclusions. Um I'm going to continue working on this because I'm actually kind of fascinated by the fact that it has done a pretty good job of making a seemingly usable scheme implementation. I'm going to take it as far as I can to see if it will work. Uh cuz it would be interesting to see like the schema implementation of my dreams actually working. uh with all the features that I have in mind. I don't know if it will actually work in in practice, but I'll very curious to see. And by the time the next stream comes around, I might actually have something to show that we can kind of hack on something with. Um but should you use AI to work on a project like this, especially things that other people might use? I don't know. That's up for you to decide. For me at least, I'm okay with using AI to do this project and to use something made by AI like this. Um, if people don't want to use mesh as a result of me having used AI to write it, that's fine, too. It doesn't really bother me too much. Um, but I don't really um think people should be so shy about AI because it's here to stay. I mean, like you could talk about the AI bubble all you want. I mean, there may be an economic bubble in terms of AI, but the technology is pretty solid. So, um, good to be familiar with it and see what it's capable of and have your mind blown a little bit and maybe actually use it to produce something that you want that you don't really have time for otherwise because yes, informed consent. You should let people know that you use AI in your project so they can decide whether they want to use your project or not. And I intend to do that. I will let people know that in the the read me and everything else. Mash says, "I'm also impressed but still not certain." Yeah, I'm not certain either, but I you got to roll with it at this point. You have to know how it works. You got to use it so that uh you don't get left behind because thing is AI as you see here can write code a whole lot faster than you or me. It just pooped out a whole lot of code that actually seems to work okay to implement advanced features for a scheme compiler. And this thing might be done in an entire week. I don't know. Like I can't do that. I can't do that at all. So, we have to kind of be ready. Got to be ready. see what happens. You got to be able to follow the twists and turns of the industry. Not good, but it is what it is. Anyway, uh hope this was fun and interesting to all of you. I'm going to push this code up to the repo so you can check it out and uh let me know what you think. I don't know. We we'll uh we'll see we'll see what happens uh by next stream and we'll see if I make any progress on this and uh have something for you for you to see. Anyway, thank you all for your time and attention. Hope you all have a great weekend. Uh, don't forget about the uh the Black Friday deal on uh hands-on G scheme for beginners. Uh, $50 off on that if you're interested in learning Gile Scheme um and scheme in general and functional programming. So, uh yes, as I said, have a great weekend and until next time, happy hacking. See you.
Video description
In this stream, we'll take a look at whether Claude Opus 4.5 is capable of generating a decent R7RS Small compliant Scheme implementation to our specific parameters. The main goal being to satisfy my curiosity about whether Mesche could be properly rebooted with AI assistance. Should I do it? I don't know? Can it be done? We'll find out. #scheme #programming #ai #claude SUPPORT THE CHANNEL: 👍 Support My Work: https://systemcrafters.net/how-to-help/#support-my-work 📰 Subscribe to the Newsletter: https://systemcrafters.net/newsletter/ 👕 Check out the Store: https://systemcrafters.store 📘 Get Your Copy of Mastering Emacs: https://www.masteringemacs.org/r/systemcrafters?utm_source=yt&utm_medium=desc&utm_campaign=scme SHOW NOTES: https://systemcrafters.net/live-streams/november-28-2025/ JOIN THE COMMUNITY: https://systemcrafters.net/community/ (Forum and IRC chat!) https://fosstodon.org/@daviwil MY CONFIGURATION: (This site is currently down but will be back up soon!) https://config.daviwil.com https://config.daviwil.com/emacs https://config.daviwil.com/systems (Guix) OTHER SERIES: - Emacs Essentials: https://www.youtube.com/watch?v=48JlgiBpw_I&list=PLEoMzSkcN8oPZvSdewHG8uApD7THlLLCV - Emacs From Scratch: https://www.youtube.com/watch?v=74zOY-vgkyw&list=PLEoMzSkcN8oPH1au7H6B7bBJ4ZO7BXjSZ - Emacs Tips: https://www.youtube.com/watch?v=wKTKmE1wLyw&list=PLEoMzSkcN8oMHJ6Xil1YdnYtlWd5hHZql - Emacs Desktop Environment: https://www.youtube.com/watch?v=f7xB2fFk1tQ&list=PLEoMzSkcN8oNPbEMYEtswOVTvq7CVddCS - Emacs IDE: https://www.youtube.com/watch?v=E-NAM9U5JYE&list=PLEoMzSkcN8oNvsrtk_iZSb94krGRofFjN - Emacs Mail: https://www.youtube.com/watch?v=yZRyEhi4y44&list=PLEoMzSkcN8oM-kA19xOQc8s0gr0PpFGJQ - Learning Emacs Lisp: https://www.youtube.com/watch?v=RQK_DaaX34Q&list=PLEoMzSkcN8oPQtn7FQEF3D7sroZbXuPZ7 - Craft Your System with GNU Guix: https://www.youtube.com/watch?v=iBaqOK75cho&list=PLEoMzSkcN8oNxnj7jm5V2ZcGc52002pQU CREDITS: Coriolis Effect by logos feat. stefsax, licensed Creative Commons 3.0 CC-BY http://ccmixter.org/files/mseq/26296 reNovation by airtone, licensed Creative Commons 3.0 CC-BY http://ccmixter.org/files/airtone/60674 ukeSounds by airtone, licensed Creative Commons 3.0 CC-BY http://ccmixter.org/files/airtone/32655 Between Worlds (Instrumental) by Aussens@iter, licensed Creative Commons 3.0 CC-BY http://ccmixter.org/files/tobias_weber/56664