D&D - Aider AI Code Helper - S2025 E06

Transcript

Mar 28, 2025

D\&D - Transcript

00:00:00

David Busby: Recording will start soon. Thought it was supposed to beep. Bing bong or something like this. Anyways, it feels like it's live now. david raistrick: Looks like David Busby: Um, david raistrick: it. David Busby: yeah, I'm in a pretty good mood, man. So, uh, bunch of my dev environment stuff for this one project that has, um, a lot of traditional web servicey things fronted by currently fronted by Apache, but then also has some stuff it wants to integrate with that you've got a reverse proxy and that stuff wants websocket. This is all stuff, you know, we had chatted about right now. Caddy slides in and solves all my problems. I'm not running two web servers or in some cases, you know, I'm not running engine X in the front then Apache and stuff like this. So, it's all just like one thing much easier. But I had this I had this problem and this seemed not intuitive to me at all. But Caddy uses the reverse proxy before it tries files in the file system.

00:01:15

david raistrick: Interesting. Okay. David Busby: So the directive reverse proxy takes precedence over the directive file server. Yeah. So and then I found like a bunch of blog posts about this, this, and this on how to handle it. And so I mean my case was very simple. I had to I only wanted I wanted it to handle the root of the server request to my local index.html HTML and I had three other routes that all start with the same prefix that I wanted to route into these like three different PHP scripts, you know, that just the service that exists that's running, you know, behind there that we're proxying to. uh we're trying to have like a nice integrated one-click link to get in there, but you need to authenticate to it with the right host name and all the s***. So, what we have is these little PHP scripts. You go and you get routed in from our existing service with your fancy JWT that we know and trust. Boom. It bounces you over there with one of those tokens.

00:02:32

David Busby: We know who you are. We then use some quick PHP to make sort of the same looking web requests to the proxy service itself that looks like your browser from your IP because it's all well not from your IP but you know from this uh to establish a session to that backend machine and it gives us a bunch of cookies. Then we use the PHP to set the cookie in the browser. Then we route them over to the normal landing page of that service and they're in and they're like, "Oh, everything works awesomely, right? It's seamless to the end user." And so those off scripts were easy. I just said, "Oh, everything that's slash off goes to, you know, and I so I put some rewrite rules or a thing in there, so it goes to the FC CGI thingamajig sorted." Uh but then just the root of the site was always going into the reverse proxy. So I had to just make another handle path. I said handle path slash. So if you just hit slash it just does file server.

00:03:44

David Busby: And then I have another handle block after that. That is handle wax star and wax star gets all reverse proxy. And that was like a bit easier than some of the girrations that other folks had to go through. And then I also did find in the global config of of Caddy there's an option for order and you can say oh try files before reverse proxy and you can like reorder how it does that rules evaluation but david raistrick: Good. David Busby: it's like it's basically like oh we have this it has to be done in a certain way and we've sort of hardcoded that into the system you know it's not like what I really wish it was doing was interpreting it in the order it was listed in the config file. david raistrick: right? David Busby: You know, you had a file server david raistrick: Yeah. David Busby: above reverse proxy. That means do the file server and try files before doing reverse proxy. david raistrick: Right. Yeah. I think it it seemed pretty pretty clear when we were looking in the configs that it was not following order.

00:04:54

david raistrick: You could just put them in whatever order it was going to have its own determination for for order because you know otherwise well it's either one or the other. It's either deterministic or it's not. And it's Yeah, it's not. David Busby: Yeah, I kind of I kind of like, you know, it's a bit of a turnoff david raistrick: Yeah. David Busby: because every because I mean pretty much everything else I look at, you know, you read it top down and it runs basically runs top down. Lots of config files work that way and you define something early and then you can use it later, david raistrick: Yeah, I've gotten David Busby: you know. david raistrick: so used to, you know, working with Chef and Puppet over the years, right, where you cannot make that assumption because it has its own, you know, like, you know, Chef and Puppet both have some version of a three pass. um you know there's there's a variable fill out stage, there's a compilation stage, and then there's another, you know, then there's kind of an execution stage, and there might be a fourth pass.

00:05:57

david raistrick: And so that config that you look at is never the thing that's actually run and rendered. So I got I've gotten so used to that, I never assume it. David Busby: Just another little thing to frustrate you. I think david raistrick: And you know, and it's like there's all good reasons for it to happen that way, but it it does it does create frustration. Um, sometimes it makes me want want a nice go-to to uh control flow. David Busby: just put a goto in there. What could possibly go wrong? david raistrick: Yep. David Busby: What the f*** is this? Sorry. Trying to click through some stuff. So, show off some Ader, man. How does Ader work? What does it do? Why would I want to use it? david raistrick: Well, so I mean there's lots of talk about cursor and some of the other tools giving you an IDE getting giving you the LLM, I hate to call it AI tooling, but available inside your IDE, right? Um David Busby: Yeah,

00:07:02

david raistrick: I'm not a huge IDE fan. I use lots of different editors. I'm heavily in Sublime, which I suppose is probably an IDE, but it's not. And David Busby: it's david raistrick: No. David Busby: just a I don't like IDE either. I'm I'm sort of with you. But I do like having a super fancy text editor. david raistrick: Yes. Exactly right. And Sublime gives me a super fancy text editor. I can do I can use VS Code and get the same super fancy text editor stuff, but it it tends to lend more toward IDE. And then you have stuff like cursor who says, "Well, we're going to give you our own custom build of VS Code that does our stuff because we couldn't do enough." But it's tidy. David Busby: Is that david raistrick: It's David Busby: what it david raistrick: tightly David Busby: does? david raistrick: integrating it into your development workflow, right? Um, and that's probably good for the c for the right kinds of people and the right kinds of projects.

00:07:52

david raistrick: Um, it's just not me. Uh, I'd like to do a lot of control of my own tools. Um, and uh, when I'm writing code with LLMs, a lot of the times I'm doing the bad thing where I'm just copy and pasting stuff from the from the chat windows. David Busby: right in there. david raistrick: Um, partly because I'm always doing a lot of different things. Something I that I recognize that when true software engineers are using these tools, they're sitting there in a project of one type of one type of code. And I any particular day I might be working in seven different languages. David Busby: Well, I mean, I don't know. I work on I work on Web Stack stuff. And so my daily is shell scripts for tooling, Pearl scripts for tooling, Python scripts for tooling, Python scripts for the app, PHP scripts for the app. Um, Golang for the app. f****** JavaScript everywhere. david raistrick: Exactly right. David Busby: So that's that's five or six, right? david raistrick: because you're stuck in full stack land.

00:09:06

David Busby: I mean, I try to tell people that, you know, I mean, I guess that's that's what I've been doing the whole time is I'm working on small teams. So you know like at a big company the last time I was there which was quite some time ago right I worked on one component or sets of components in one app stack like I worked at a bank and occasionally I would get drawn into some other project on some other part of the thing a processing for a little bit you go, oh, help out with this project. But you're there for like three or four weeks just providing some technical assistance to another to another team or to, you know, other technical people who are just, you know, not having david raistrick: Yep. David Busby: enough experience. So, you hang out, right? Guide them up on on getting the whatever. But I spent like three years every day in uh ASP 3.0 ASP classic moving to.net uh web app for reverse loan origination. Like that's all it was like. david raistrick: Yeah.

00:10:29

David Busby: And so that was my big co-experience. Oh, I'm working on one app and I'm actually only working on a few components of the one app, right? like who david raistrick: Heat. David Busby: knows all about its flood integration with like HUD and the other thing. Ah hell yeah you know so david raistrick: Yep. David Busby: uh but you know for the last 15 years it's been working at a small business or working at an early stage business where you know where everything you have to do is the 300% problem. Oh help us deploy. Well, we got to do this and we got to david raistrick: Yeah. David Busby: do this and we got to do this, david raistrick: Well, David Busby: you know. david raistrick: and so the other side of it is that when you're in that like development life cycle where you're working inside a product, inside a project continuously and consistently, you set up your tooling, you're sitting there local, you have test environments, test tooling, you know, all of this stuff's already built and existing for you.

00:11:27

david raistrick: Um, a lot of what I do is not in those types of situations. I suspect you too, right? I might be sshed into somebody else's server and then SSH into another server past that and another server past that just to get to the thing that I'm trying to work on David Busby: Sometimes david raistrick: and David Busby: you david raistrick: and David Busby: have to david raistrick: so David Busby: like david raistrick: that David Busby: fly to the facility to go because david raistrick: yeah and so that idea of let me fire up my IDE I mean even with VS code with its SSH connection stuff which I have used heavily before if you it still requires work to integrate it and tie it to that and and in fact sort you know, permission to execute it and do all these things. A lot of times we'll just SSH in and use VI or Emacs or Nano or whatever your favorite command line editor is, you know, shellbased editor is, and you don't have access to any of that stuff. What Ador gives you is that LLM integration functionality in the shell.

00:12:27

David Busby: So show Yes. david raistrick: So, this is not a web project. This is the thing that that that I'm currently wanting to build. So, this is what I uh what I tackled as an example here. Let's see if I can present this here. Uh David Busby: Well, tell us what's this fancy thing you want to build. david raistrick: this screen. So, what I've been working on recently is so I built a tool for extracting the data from a wideband sensor. So, it's oxygen uh an oxygen sensor for cars, right? And it's used for testing and tuning car well fuel injection or carburetors in this case carbureation right um so measuring me measuring the actual output of the exhaust and using that to uh to reject the carburetors. Um there the tool comes with some really old really crappy Windows software that does stuff and gives you some really ugly graphs. And I ended up I I'm I'm on Mac, so I don't even have a Windows machine. So I ended up building a wine pipeline in Docker to run their tool to do a data export into CSV.

00:13:38

david raistrick: So now I have the CSV, but I don't have any graphing tools for it. So I had to build a custom graphing tool because it's got its own format, right? The CSV has multiple sessions in it, all this stuff. Not going to show that. Imagine a tool that does graphing, right? It shows graphs. Um, but I also realized that I'm as I go out, make a pull, come back with data, make some notes, I really want to I need to and then I take some screenshots and then of course I pass this over to my custom GPT that I'm using for that has a lot of knowledge about how to tune these specific cars and engines. And so I'm back and David Busby: GPT. Do that. david raistrick: because I created a custom GPT with all of that information. Um, so I loaded in a bunch of forum threads, you know, the last 20 25 years of forum threads and web posts that have uh that information in the GPT. So I'm kind of going back and forth between my graph.

00:14:33

david raistrick: So my tool allows me to easy copy paste my screenshot or screenshot my graph, feed it back into the GPT. But now I really need something to manage the larger scope of this. Now I have lots of log files. I have the original source log files, the D32 files. I have the the CSV files that are output from that. And then I have notes associated with each of these runs like what did I do? How did it feel? What what does the interpretation of the graph data show us? Right? And so I would like to have a tool to kind of manage that. Say here I'm working on my 66 bus. We're doing this in March of 20 of 2025 and you know this is the carburetor that I'm running at the moment and here are the passes. So we can see that evolution of change in one place right as I go from it's way rich and now it's way lean and now maybe we get it on target.

00:15:30

david raistrick: Um so I want a tool to just manage all of that stuff. And so that's where I started. So I started with GPT just wrote down some ideas of what I wanted to do right it's going to be Python it's going to guey a lot of Python guey tools I've never written any kind of guey so this is the first time for me David Busby: Really? david raistrick: um except for that graphing tool which was really just using mat lab um David Busby: That doesn't count. david raistrick: so I've I've never built any guey tools ever in my life David Busby: All david raistrick: I mean unless you count HTML and who who counts HTML um but I didn't want to build as a web interface because this is David Busby: right. david raistrick: you know a it's an experiment and um so a lot of Python stuff with gueies tends to require a special builds of Python. So it meant it would mean going and rebuilding pi rebuilding Python getting pi pyiver to rebuild it or doing a custom build of the homebrew install or something to have the thing.

00:16:28

david raistrick: So I found with some GPT experimentation that there was a you know and this is a prototype in this chat of just a single button layout but using PI 6 PIDEID6 I guess I didn't David Busby: Mhm. david raistrick: have to install anything um other than you know PIDE 6 I guess but um so that was kind of my constraint is I wanted to be a guey I wanted to be able to use this and I want to not have to install anything that I can't just pip install. Um I actually use a custom runner for Python that will look at a requirements file or look at the imports and do the installs. So it makes it a lot faster to iterate around this stuff. It sets up all the virtual environment for me in on its completely on its own. So then I kind of describe you know what we were talking about. It needs to ingest CSV files. It's got more than one session or more than one file per session because there might be two or three runs that I want to consolidate as a single discussion.

00:17:25

david raistrick: have my notes around it. Um, and that's some of that's because of the eccentricities of the physical tool and how it writes data out. Um, and so you know there's a chat tpt conversation where we kind of come up with some ideas of what it should do and eventually get through some experiments, come out with a what what I think is a spec that I can give back to GP to another GPT to create this, but it turns out it really ignored it. So I had to come back um and GPT suggested the idea of calling it a functional spec and building out more less assumption right about what it should have and we ended up with this much larger let's see what was the last one here we end up with this larger spec here um that tries to kind of boil it down gives us a gooey gives us a representation of what it ought to look like um David Busby: All david raistrick: where David Busby: right. david raistrick: is right I didn't want to use a database so I just wanted to put files in dump file system because hey, why not?

00:18:30

david raistrick: We David Busby: Database david raistrick: can always we David Busby: just david raistrick: can David Busby: file file system anyway. david raistrick: we can always SQL light it or Berkeley DB it later if we wanted to. Um and but this this gives me that flexibility of I don't have to have the tool to explore the data later. So if I just stick it in my notes folder, it's fine. Um because one of the when I did the last time I did this 13 years ago, I f I realized I have no data. I I had a few very sketchy notes and that was all that survived. So I'm wanting this to last longer. So when I do this in in 10 years again, I can come back to this and look at it. So that's sort of the goal. Um so built out this spec. So what I've done just created a simple repo. Um, this has got my proof of concept guey in it um requirements file for that and drop the spec in here.

00:19:24

david raistrick: So, we'll fire up Ader. Actually, I'm going to use the slightly slower um the lot slower 03 mini model here. Could David Busby: So so david raistrick: use cloud model David Busby: this is Ader. You're just in a terminal with Ader. david raistrick: just in a terminal with ADER. David Busby: Love it. And is david raistrick: Um, David Busby: it local or it's going to make API calls out david raistrick: it is David Busby: to 03? david raistrick: It is going to make API calls. I'm using GPT for this. Um, it works with Claude. It works with Gemini. I believe you can use local LLMs. Um, if David Busby: Is david raistrick: you David Busby: it david raistrick: find the right David Busby: is david raistrick: setup David Busby: it like using is it reading your whole repo? david raistrick: it right now, it's looking at it. All it's done is looked at what in basically the getit file. Um, I'm going to add now there's lots of config. I am not an expert with this tool.

00:20:13

david raistrick: Um, so let's see my PC, my requirements. David Busby: I think david raistrick: Oops. David Busby: so. david raistrick: All right. So now it knows it has those three files in its context plus knowledge of the general structure of the file system and what's in git. Right? So I'm just going to tell it to uh, you know, view the spec build the implementation. My prompts are easy. I just tell it to do things. It does not have a spinner. And with these with the the models that talk to themselves, so they're a lot slower to respond this, you know, like 01 03. Um, then this lack of spender gets a little annoying because you're like, did it break? So now we wait. And David Busby: Oh, now we're doing the waiting. david raistrick: now we're doing the waiting. And now it's doing the coding. David Busby: It is barfing out like a lot of code. david raistrick: and create new file. So, we'll go ahead and let it run the file.

00:21:22

david raistrick: So you notice it did use David Busby: Hello david raistrick: my record David Busby: manager david raistrick: and David Busby: gooey. Wait a second. Did that the thing it produced david raistrick: this is the thing it just produced David Busby: from? And what was your it barf? That is all of the david raistrick: that that is produced from this spec file David Busby: spec. david raistrick: right here. David Busby: You just wrote spec and Okay. So, and that was like some of the files that you already had. david raistrick: And there were no files. David Busby: Well, where did spec come from? david raistrick: I created the spec file. Sorry. I created the spec file and I had that proof of concept which was just a button guey. Right? So David Busby: Uhhuh. david raistrick: it knew that this is the way we want the but the implementation of the guey to start from. David Busby: Okay. Okay. And then go back to your terminal there. So you did that.

00:22:06

David Busby: Did you tell it like load spec or something? Sorry. david raistrick: Yeah. So we added back to the right place here. Um David Busby: Add spec something something something. david raistrick: yeah, too far back in shell history. Here we go. Um yeah, so basically we just added the spec. So we add spec, add PC, guey, David Busby: Add david raistrick: add David Busby: some david raistrick: requirements. David Busby: files. david raistrick: Yep. David Busby: Below is the proposed. Oh, now then you told So you added the stuff, it added the stuff. It barfed out some info. Then you said, "Do some work. Review david raistrick: Red. David Busby: the spec. Build my s***." david raistrick: Yep. David Busby: And then it went blah blah blah. Told you something nice. And then has some weird uh delimiter it looks like. david raistrick: Yeah, it uses a it uses a patch file style. It's similar to a patch file type implementation David Busby: Yeah, sure. That's david raistrick: in its

00:23:00

David Busby: not enough. david raistrick: structure of response. So that way it can update files. Um and it applies that back to to get. I have autocommit turned off. Um autocommit's kind of useful. It's kind of bad depending on how you feel about it changing your stuff all the time. Um, David Busby: I hate changing my stuff all the time. david raistrick: so I can manually commit instead. Um, this this is what it created. I don't really know where logs came from. It's not really a car. Um, if we look in the David Busby: probably mentioned that you want some log files somewhere, man. david raistrick: uh, I see what's happened. It's looked at the existing logs directory which is not committed. I'm guessing that's what happened and decided maybe that that's a thing. But it's supposed to create in theory it should be creating a directory that has the tree underneath it, right? Um, but let's see if we add a car. What happens?

00:23:55

david raistrick: Yeah, it's it's just creating the it's just doing the directory. It it ignored some of it and it just did it here. So, inside test one, we have an empty session. Let's add a session. David Busby: Okay. So, this is neat. Do you think it's going to actually work? david raistrick: Some of it's going to work. Let's see if it did anything. So, it it hasn't actually saved any of this. So, this is something I saw when I was doing the prototypes that it didn't necessarily remember that the stuff's supposed to get saved. Um, so I will just close this. Now, one of the things I'm going to ask it to do is to add logs so that everything that I do in the guey gets logged. That way, when it runs it, it can consume the output. It can see what I'm doing because I haven't found a way to give aer unlike chat GPT, I can't give aer screenshots because otherwise I could just give it a screenshot, throw some arrows on it, and say, "Hey, this is stupid.

00:24:57

david raistrick: This should do this. This should do this." Right? That's what I would do inside chat GPT. Um, I David Busby: So david raistrick: do that David Busby: a david raistrick: when David Busby: doesn't do that. david raistrick: but ader I don't haven't it might have a way. I honestly haven't even looked. Um, so there's no point in adding this output. So, okay, a few updates. Let's add print logging everywhere the guey is interfaced with so that you can see what I'm doing. Also, the data tree is supposed to be in its own directory. David Busby: I've noticed that with these things too, you can like typo all kinds of stuff and it still knows what you're on about. david raistrick: It does David Busby: I found david raistrick: um David Busby: that like to be very very helpful and and still seems to be and this may just be the engine that you decided to use, but it comes around and is saying things like, you know, uh I don't know, it's generating all the stuff that I've asked it to do.

00:26:14

David Busby: It seems to be able to get around it without too much BS. I can't believe really david raistrick: So, those are the things that I noticed. We need to add some logging so it knows what I'm doing. Um, that the data was supposed to be creating a tree. It was supposed to be creating a tree, a directory tree for all of that stuff. It didn't do that. So, let's call it an LMT data. And that, you know, the text fields did not update. Like, I added notes and I added a session title. It didn't create the session JSON that I sort of expected from the spec. Um, so probably it needed it wanted a save button, but it didn't bother to implement the save button. Let's see what it does next. Interesting. It added something in logs, too. Oh, it did. It stuck it down there. Oh, because it treated that. Ah, I created a new car, added notes to the car, but it didn't associate it with the right one.

00:27:17

david raistrick: It put left it with that logs car because it's just looking at directories, right? Because it's not looking the right. Let's see what happens. I have used this tool in an existing codebase where I really didn't feel like spending the time to explore it. So, here it created some stuff. It lented it. It failed the lint. It says, "Okay, I'll go fix the lint." Um, let's see what happens when it runs. Oh, that's funny. It launches a shell. So, it gets my login gets my little fortune from my login script. Um, okay. What did I do with it? There it is. And so, there's no cars, no sessions. Let's see. We created LM2 data folder. Awesome. Add a car. Okay. Add a car. Add a session. Oops. Select a car. Ah, good. It made me select a car. Good.

00:28:23

david raistrick: Not really sure on why we have a name and a title, but we'll run with it. Notes. David Busby: It's david raistrick: It's David Busby: because david raistrick: not David Busby: your spec's terrible. david raistrick: Yeah, I know, right? David Busby: I mean, I don't know, man. When the project doesn't work out, the the UI doesn't match what you think it should do, go back and look at the spec. You david raistrick: All right. David Busby: know, this david raistrick: So, David Busby: this is why all really good managers don't write anything down. That way, they're never wrong. david raistrick: so it doesn't seem to be saving the data here. Oh, because it Oh, because it was it allowed me to fill out these fields, but I didn't have a session selected. Uh, title notes, and it still didn't give me a way to add these files. So, that's a whole another thing. But, uh, okay. So now I added notes and it did save them. More notes. More notes. So it is that parts working.

00:29:25

david raistrick: All right. So okay, add that to the chat. shouldn't be able to fill out third panel, but sessions not selected and there's no way to add D32 CSV files. I mean, and then like this is, let's call it 70% of what I need, right? And now it's just go through, figure it out, iterate on it. I've never even touched the code, looked at the code, right? I haven't even had to debug a problem yet. David Busby: Wow, that's wild. david raistrick: I mean, this is 03 mini, so it's pretty good. This isn't 03 high, 03 mini high or 03 high or whatever. David Busby: Uhhuh. david raistrick: Um, and it's a pretty decent coder. It's better than the GPTs and than like, you know, 40 and stuff and but it's slower, but mostly because you end up with a couple of different uh developers to do it. All right, so I'm going to go and run that tool. Python which it didn't prompt me. Sometimes it prompts me for and sometimes it doesn't and I don't feel like typing this.

00:30:46

david raistrick: All right, so now it runs it. Okay, cool. No. So session selected test session. Add a file. Grab one of our CSVs. So now we have it here. Double click to run it. So it would run the graphing tool, which I don't have, but this is the pro proof of concept. it would run that graph. Um, okay. We're missing a way to add screenshots. Uh, okay. It's not letting me update some of these fields, but I mean, this is this is programming in today's world. David Busby: Maybe. david raistrick: I mean, and I'm not a programmer. So, you know, David Busby: Well, I mean, I think that that was a pretty good use of the tool. I was looking around at Ader. Um, it turns out Paul Gothier Gothier something uh makes these Docker images so you can do the thing in Docker. david raistrick: Ah, cool. David Busby: Uh, so you don't have to get a uh contaminated Python environment contaminated, david raistrick: Yeah,

00:31:53

David Busby: you know, for lack of better term. david raistrick: sure. which which is what I'm so from a executing all the code that's where I use a Python for that does all the virtual environment stuff set up for me automatically so similar but it just does it in a VM um David Busby: So if I go to CD project touch test G uh whoops maker test GTK No it's not that it's called TK9. Have you uh ever seen do you like the Golang? david raistrick: I I mean I I use Go when I need to. It's not one of my go-tos. David Busby: Oops, I pasted the link into the chat two times for you. Package DK 9.0 is a sego free platform GUI tool kit for Go. Gives you like TK stuff. david raistrick: Yeah, I thought, you know, and I thought about doing this with Go, David Busby: That's the one. david raistrick: but I I was like, let me just let me just go start with Python because that's how I built that's how I built the graphing side of it already.

00:33:02

david raistrick: So um and what I want to do is I want to integrate the graphing stuff into this like so like next step whereas right now it just runs a shell script or would run a shell script run a shell command wi with the CSV file to graph it. I'd like it to integrate that functionality into it especially because now since I have a guey framework I can control the graphing guey better than just using I think it's mat lab that it's using um which provides its own guey but it's fairly constrained in what I can do with it. Um but David Busby: H. david raistrick: it does give me zoom functionality and you know backing up and forth and scaling and labels and all the things you would want to see in a graphing tool. Um but uh but yeah, I mean it's certainly possible to uh actually you know what let's let's be painful. David Busby: Okay. So, I've actually tried this TK9 in GPT, Chad GPT, and I got nothing. david raistrick: Yeah. David Busby: It it ended up telling me how to do it didn't pick this thing, but it was telling me how to do a bunch of other GTK stuff,

00:34:26

david raistrick: Okay. David Busby: which wasn't this thing. TK9 david raistrick: I mean, David Busby: is david raistrick: this is published in March 2025, so right, we might have to like go give it some document. David Busby: very new. david raistrick: Yeah. David Busby: Yeah. david raistrick: And and this is where when this is the nice thing about documentation that is on in one file is that means that if I need to I can but it has gone gone and it's writing something. Um if I need to I can just take this whole thing and go feed it back to the LLM and say here's the documentation for that thing. Um, when they break it up into a bunch of files, that's painful, right? Uh, okay. So, it says I can go build now. I don't remember. David Busby: Wait, it says, "Do you want to create the new file?" david raistrick: Oh. Oh, yes. I David Busby: You david raistrick: guess David Busby: got david raistrick: I David Busby: to create the file. david raistrick: Yep. David Busby: Run

00:35:16

david raistrick: Surely David Busby: the shell command. Why not? david raistrick: run the build and no record mode. Let's add the output. Um, let's see what David Busby: So, let's see. Hold on. And then it barfed something out. david raistrick: Yeah, it's because it's it's doing a login shell, so it's firing up my fortune every time. My fortune triggers on login shells. I don't know why it's using a login shell, but there it is. David Busby: Oh, Anders. david raistrick: I'm sure that's not going to contaminate my chat history at all. David Busby: I feel like it might david raistrick: Uh let's see. But yeah, I mean it suggested we should just go build and then we should run it, but it hadn't paid attention to the output. Let's see. Go mod go tidy and David Busby: go mod download TK9 TK dude. Uh, is that the right thing.org david raistrick: get TK9. Where's the There's the repository. Nope, it's here. David Busby: TK9 david raistrick: We can go scrape web.

00:36:41

david raistrick: Let's see. David Busby: Playright? I noticed that on the docker download you can do regular or you can do ader full that comes with a whole bunch of stuff. david raistrick: Ah, yeah. And I just have a pip installed. So that's all I did with this one. And it's not this this this isn't running inside its own virtual environment or anything. I probably could have should have, but actually no, this is this is a homebrew install. It was a homebrew install. It's updated a couple of times. Um on a customer machine where I was using this heavily for a project, I did something more more isolated, wrapped it inside a virtual environment, did everything there. it and I think the ader team have released some tooling around dynamic virtual environments specifically for use with ader so that you can run ader in that isolated environment with your own version of python and all the things um but I haven't explored it David Busby: Well, I just ran Ader from the Docker and it said, "Here's the thing. Open

00:37:46

David Busby: documentation." I hit yes, but it didn't do anything. probably because it's like trying to silently launch a browser on the back end david raistrick: Yeah, could be David Busby: connecting to a thing configuring API keys. The easiest way is to say ader model something david raistrick: so proposed changes to switch to go over to TK90 from the GitLab repository imported from which removes the old GitLab TK9 NTK dependency. So there we go. See what happens. And some failures. Repository not found because let's not gonna work. Come on. David Busby: chat has LLM leader boards uh to tell you like who's working uh benchmark 225 coding exercises. is they were picked to be hard. A strong coding challenge. It's telling you like who's doing the best. Gemini 2.5 Pro EXP0325 is performing the best. followed by Claude 37 Sonnet, followed by Deep Seek, followed by 03 Mini High. Who's the worst? GPT40 Mini. david raistrick: Oh yeah, well that makes sense. David Busby: 100% using the correct edit format.

00:39:45

David Busby: 3% actually correct. david raistrick: It's doing some sort of conversion on D32s which is not actually happening. So I don't know what it's doing. David Busby: Cool. david raistrick: That's David Busby: Rocket ship icon and everything is in there. This is neat. david raistrick: all right. Okay, let's see how's the go happening. Go build. See what happens. David Busby: I'm I'm very surprised that this thing grabbed up TK90 though, which is pretty awesome. I'm I mean I'm david raistrick: We had to feed it a little bit, right? It we had to we had to know enough to tell it to try this thing. We had to know enough to tell it where the uh where the repo was, but it was able to go look at the David Busby: All david raistrick: repo. So, that was kind of awesome. All right, let's see. We got some more fails, but the uh the Python version is I David Busby: right. david raistrick: mean like this is if if this if my screenshot thing would open my screenshots and show them to me.

00:40:43

david raistrick: Um, it's my import for the CSVs is converting the D30, sorry, converting the D32s to CSV, which was in a spec at some point, but I tried to remove it. Um, because the idea was that it would run the tool. Um, but I don't So, it's trying to run the tool. I don't know exactly what the hell it's doing, where what what it's coming up with to do this. Um, because that that really kind of shouldn't happen. But, uh, Oops, lost my window. and that. But that's some good functionality. Some notes. It's updating it every time. Switch over to the other one. More notes. David Busby: Wow. david raistrick: Add a CSV file. I mean, that's that's a lot of what I wanted. I mean, I want the notes field to be big beggar. I want, you know, or a pop out. Maybe I have some full markdown support. Um, but this gives me one place. And now if I look at my data, there's the sessions.

00:41:55

david raistrick: I think that might need some help. I don't know why it's I think those session folders need to be named based on their actual session. It's like creating names for them. What? Oh yeah. Yeah. And then note screenshots session JSON files. So did it actually put files in there into RAW? Okay. It did retain the D32 even though it convert tried to convert it. Um, David Busby: H. david raistrick: and that one, this is probably the conversion, the one it converted because these are the real things about 147K or 1.4 megs. Go build. Yeah, it's not as good at Go as it is Python, but we kind of know that. David Busby: these folks at whoever this modernc.org or is also has TK9 david raistrick: That was it. David Busby: BNC and you can basically like build one of these TK9 apps and then uh client uses a web page no VNC david raistrick: Why is it keep getting giving me a slash? I'm not copying that with a slash.

00:43:45

David Busby: modern C isn't a real website david raistrick: Yeah, apparently it just redirects back David Busby: you david raistrick: here David Busby: over david raistrick: and fails. David Busby: to there, but its redirector is like not the right query string in there. There's like a Twitter and a GitLab. That's like all you have. Yeah, that's not the right link. david raistrick: goes to go do, right? Yeah. And then go do takes you to uh David Busby: package.go.dev dev/ search question mark equals modern C. david raistrick: so whoever these guys are, they've got some stuff, but also David Busby: It's called modern C, but it's all in go, which I think is fantastic. Got a bunch of different themes. Like you can do a lot with this thing. david raistrick: Why is the modern sea the name is coming to mind? Like somebody else was talking about this recently I think. Is it is it part of it's part of the let's replace C or let's replace C++ let's rework C++. David Busby: I have no idea about that.

00:45:04

David Busby: You know, there's very little detail about whoever modernc.org is. david raistrick: Yeah. David Busby: The GitLab page for this stuff is light on details. Um, I mean, I don't know if you pay attention to uh, No, it's going to be CZ david raistrick: Oh yeah. David Busby: Nick. CZ N I C. david raistrick: And I'm going to be stuck David Busby: Are david raistrick: in David Busby: you even a human? Are you david raistrick: No, David Busby: even human, bro? david raistrick: GitLab thinks I am not a human. I can almost never get logged into GitLab anymore. David Busby: It's f****** Cloudflare, bro. david raistrick: I know. Well, yes, but it's worse on GitLab. Whatever whatever they've chosen is way worse. Yeah. So, yeah. But I'm not a human, so it's okay. I mean, right. It's okay to block me. I'm not even a paying customer. Oh, wait. David Busby: I was trying to be david raistrick: I when GitLab first released, we tried really hard to stand up a a a local of it.

00:46:11

david raistrick: Um, but we were a COS5 shop David Busby: H, david raistrick: and so we had to backport a bunch of the Ruby because it's just a big Rails app and we had to backport a bunch of the stuff and this is, you know, this is COS5 era, right? So David Busby: right? david raistrick: a lot of the tooling that we take for granted today did not exist. Um, and none of us were Ruby developers. We weren't a Ruby shop. So we were a Unity and C++ and PHP shop. So figuring out how to get it working, but we did eventually get it working enough as a proof of concept. But uh but man, it was it was that it was a nightmare of bad code then. Um David Busby: I mean, GitLab works. I think anybody's code, we've sort of chatted about that before. Anybody's code, you get in there and it turns into, you know, a nightmare. david raistrick: Yep. David Busby: Um, one of the things, you know, I think that just happens also for GitLab is that they are busy in there bolting on damn near every feature they can figure out what to bolt on

00:47:21

david raistrick: Yeah. David Busby: and just keep and and it frustrates me. It reminds me of like the startup who just thinks that if I add one more feature then I'll go viral and get the flood of clients, david raistrick: Right. David Busby: you know, and it it just it feels like that or it feels like a manager needs to, you know, you got to have something to show the people that write the checks. and GitLab, you know, took outside money and is now publicly traded, you know, so you can't just say like, "Oh, well, our team spent a whole bunch of time, you know, improving the interoperability and the functionality of our codebase, tweaking david raistrick: Yep. David Busby: performance improvements, blah blah blah, you know, david raistrick: I I remember when David Busby: like halfbaked UI stuff that just smacks of you guys threw that s*** out there after whoever it was on the engineering side to build the thing said, "Oh, I'll just shove a prototype UI in right here and we'll be sure to fix it. We won't ship that." And

00:48:34

David Busby: then somebody else was like, "Yeah, let's ship that and just add some notes to the documentation that are also, you know, incorrect." I love GitLab, but these these seem to just be like classic mistakes, just, david raistrick: Right. David Busby: you know, classic mistakes or david raistrick: Well, it's funny, David Busby: or david raistrick: right? David Busby: the or the oh, you have you have now mid-level managers who have to take activity to justify their existence. Like david raistrick: I've David Busby: you david raistrick: worked David Busby: could get rid of them and hire a UI UX person and ha and then actually listen to them. This that second part finding the UIUX person not terribly difficult. Getting management who is ready to listen. Oh, I have to get a shovel. david raistrick: Well, you know, uh it's it's sort of funny because now that GitLab have restructured their pricing and made themselves more expensive than GitHub, um I've worked with a bunch of teams now that are trying to or doing the move to GitHub, right? and they just sacrificed the losing the things that the the things that made GitHub GitLab unique because they've been bought by another company and that company looks at them and says, "Well, great, but we're not going to renew your large purchase when we already have this one over here that we can roll you into and it will cost a quarter,

00:49:58

David Busby: Right. david raistrick: you know, of what it would cost to pay that, you know, because you know when what happens is you go from zero to like $10,000 a month or something or, you know, $10,000 $20,000 a year at at team scale, I forget. I don't I don't pay attention. I look and forget. David Busby: All david raistrick: Um but you know, those are the numbers that I see, right? And so, but and then somebody buys you up and decides, well, we're just going to shut that down because we don't we're already a GitHub shop. Um, David Busby: right. david raistrick: and like a lot of times those teams would actually be okay with um with keeping it except that it's not cost competitive. I mean, if they just matched GitHub's price, it would have at least been, you know, but I don't know. David Busby: I think david raistrick: Not my business. David Busby: so the way that app is done I mean it's hard to tell that exactly because I'm not staring at their code right now but a common pattern that I've observed is you get an app that's that complicated so to maximize your sales you start putting all these different features behind gates you know a payment gate are you on single single or solo mode.

00:51:13

David Busby: Are you on team mode? Are you on something something something, right? And so you put these some type of policy or ACL gate in front of a whole bunch of these features and it feels like when you go to that route and then folks just try to drive it towards the higher end of the pricing. And I look at that and I see, well, you've got these paygate flags all over your f****** software already. Why don't you do some pay gates way down at the low end? And then, you know, instead of having people leave or instead of having people overuse the free tier or like improperly use the free tier because well, I was on the free tier. Now we have six people. We want some of those team features, but I'm immediately going to jump from $0 a month to, you know, $115 a month or something. david raistrick: right? We go from 0 to $30. $0 for five users. At six users, we're now 30 time six per month

00:52:32

David Busby: Build annually, david raistrick: build annual, right? And that's the Yeah. Yeah. That's the you pay annually, right? David Busby: right? david raistrick: Uh finding their monthly uh flag is David Busby: Well, there's look, here's some other weird pricing things down david raistrick: And and David Busby: here. david raistrick: then there's all the add-ons, right? Oh, well, am I using David Busby: Exactly. david raistrick: that? Am I using that? David Busby: So, I'm looking at this and saying, well, what if GitLab said you can have a free account for readonly stuff and you pay a dollar a month per repo and you want to do this and this and this, you know, oh, and you have another user in your repo. like that user has to be a user that's paying us at least a dollar a month. david raistrick: Yep. David Busby: And I'm making up the numbers, right? Some MBA that works for GitLab could probably spreadsheet the s*** out of this pretty quickly. And just know that there is a there is a significant percentage of the population that uses GitLab lightly, but you could get two or three dollars from me, you know.

00:53:34

David Busby: And the thing is like getting $300 from one person or, you know, getting $100 from three people or getting $3 from a hundred people. You know, you have a hundred people and the lower price is regarded and I don't know if it's entirely true, but is regarded as a easier ask. And there's I know of a nonzero amount of people who like GitLab as much as I like GitLab, but also aren't in this aren't in the space where they can pay 70 or 80, you know, 70 or 80 a month for their thing, which is the next jumping off point. You know, if you guys had a five and a 10 and a 50, there's a whole bunch of little little players and and david raistrick: and they that's who they started out after, David Busby: GitHub david raistrick: you know. David Busby: GitLab, I'm david raistrick: Yeah. David Busby: sorry, GitHub now has some feature sets that changed because of pressure from GitLab, you know, and look at now look at these pricing four bucks. they have this lower tier thing like get the you know this was one of those things like let's give all the kids free computers so that they're used to Microsoft Windows get them indoctrinated in school

00:55:00

david raistrick: And David Busby: right david raistrick: this isn't based on the number of customers or a number of people in your org who need access to your repo, right? This is just oh David Busby: $0 david raistrick: you you you David Busby: unlimited david raistrick: want the extra things you you want to step up to the extra things you need more of this you need something here right I mean it's a straight linear progression then you move up to enterprise where you have all the features which all comes because of you know somebody said we needed to be sock something and we wanted to do SAML and so that's why you end up paying for this and that's your premium but that's your enterprise premium right you a lot of teams don't ever need this stuff because this is pay-per-use use. You know, once you get up past this, it's paper use. This is available paper use. Um, this is everything most teams ever need at $4 a month. David Busby: some people, huh? I david raistrick: Yeah. David Busby: don't know.

00:55:55

David Busby: I'd like to give GitLab a lecture about how to do it, but you know, I feel like maybe they're not ready to listen to me. david raistrick: Well, I failed. I gave up and failed on the go, but I told it to uh to create some notes about how how how it was running and what it was failing. Let's see. Did it create that file? It said it created a file. I don't know. I don't see it. It said it was going to create one. Create this. Yes. Applied edit to David Busby: LM david raistrick: Oh. David Busby: notes_G go. david raistrick: Oh, it put it in a Okay, because it's in a folder. That's funny. It put it down here instead of next to the code. Um, David Busby: Hell yeah, man. I love it. david raistrick: but at least it's documented where the state of where it is, that it doesn't work, that there's some stuff to do, and okay, it can come back to this, right?

00:56:48

david raistrick: Went back to the Python, had it make a change. Um, apparently it didn't do the change yet, but whatever. Um, and but hey, we've got we've certainly got a proof of concept here. Um, and from this I can finish it up and make it work. I can actually go look at the code once, which I haven't done yet. So, David Busby: That's pretty awesome. So that's pretty impressive. And I was able to get Ader off of the Docker and sort of poke around with it and I pointed it to a project and you just like run it. I think the last little step I need to figure out is can I run it with all of its things as a env file. I use this tool during V. david raistrick: Yeah. David Busby: Do you david raistrick: Yeah. David Busby: love it? Right. And so david raistrick: Yeah. It does take config as inv um and it has I mean it has it has its YAML config file in your home directory and then there's the ENV stuff and I think there's a conversion of the YAML that can live in the project file too.

00:57:49

david raistrick: Um so you can set up more extensive config David Busby: yeah, the the other thing you had to do on the Docker universe if you're using Docker is you have to have your Git config in the project know your email and your Git user your name. david raistrick: Oh. Oh. David Busby: So david raistrick: Right. Because it David Busby: they david raistrick: doesn't David Busby: can't david raistrick: it David Busby: see david raistrick: doesn't David Busby: the david raistrick: have David Busby: stuff david raistrick: it. David Busby: from your home directory. david raistrick: Yeah. It doesn't have access to your home directory. Yeah. David Busby: Yeah. I mean unless you did something and put all your magic sauce in your home directory or just you know when you when you run the container. david raistrick: because it's doing get inside the container. So it David Busby: Yeah. david raistrick: needs David Busby: Docker you do docker run and then you map your current user ID and group ID and then you mount you know the instructions here is amount your currently working directory into slash app in the container and it does everything in that you know work it's work dur is slashapp so and then you just hand it a bunch of args you know d-openai API key etc etc so

00:58:52

david raistrick: right? David Busby: That is pretty dang cool. This says uh Oh, screen recordings. Oh, that's not it. Screen recording. That's some stuff I can watch. That is pretty dang cool, man. That was really neat. And then david raistrick: Yeah. David Busby: it all happens like from a nice little terminal window. And it seems like or maybe I'm wrong, but it is becoming smart enough that it is is it like loading up all of your code from your repo? So it david raistrick: Basically, it looks at the structure and makes some assumptions based on structure. Then, if it thinks it needs to look at a file, it does a reasonably good job of prompting you and saying, "Would you like to add these files because I think that they need they were there where I need to look." Or you can choose to add, you could add the entire repo. You'll just burn context that you're paying for. Right? I mean the entire session for all of that cost us 80 cents

01:00:03

David Busby: Wow. david raistrick: using 03 that using 03 mini too. So I mean you know that's not like you know using their cheapest model or something. Um and and then yeah 80 cents for 40 minutes of work is maybe a lot maybe not depends on how you look at it I guess. David Busby: Well, that's another whole rant about how hard is it to figure out pricing for AI models. Pricing me based on tokens. What kind of s*** is that? Like what if my tokens are really valuable, david raistrick: Right. David Busby: right? What if you know like sometimes you write a simple Pearl script and it's worth 30 grand. Sometimes you spend a lot of time writing a lot of Pearl script and it's only worth five grand. david raistrick: It's only worth the line noise it's written in. David Busby: Yeah. And so, you know, there was a thing I had GPT do for me and I got the whole thing done in about an hour. maybe a little less. And it was definitely something I could have done myself just reading the spec for deer encoding.

01:01:11

David Busby: Can't remember that off the top of my head, but you know, it's take the s*** that you have and then pack it in a bunch of bites that look like this. Just follow our spec when you pack the bites together, you know. And I can't remember that. david raistrick: right? David Busby: Can't remember that stuff off the top of my head. And so I said, "G, GPT, make me one of these things." You know, and it gave me four not fully functional implementations, you know, and I said, "Oh, try again. Oh, try again. Oh, try again." So when I say, "Oh, it gave me four." I mean, you know, I was like, "Oh, and you're supposed to use a a SHA 512 hash. Don't you know that s*** came out the first iteration with SHA1? david raistrick: right? David Busby: Okay. I said no SHA 512 please. And then it came out with that one, but it messed up some of the earlier mechanism for the encoding and was still you needed to also encode which hash you were using in the encoded s***.

01:02:14

David Busby: And it was still encoding that as the all three time all four three or four times it encoded the indicator said, "Oh, the hashing algorithm we're using is SHA 256." But the code that it gave me was alternating between picking SHA1 and SHA 512. And I was telling it, give me SHA 512. So, you know, it took me like, oh, okay, gave me a bunch of usable code. I had to go and look up one thing on the internet and just say like, oh, here's how to properly pack these little bites right here to indicate this is what I have now. I'm done. You know, all of that was an hour. And that means that would have been that would have been an hour of just communicating. david raistrick: Sure. David Busby: If I tried to outsource that to an Upwork oDesk kind of gig, it would have been an hour of that. Um, if I was the guy who was reading the reference material and putting it back together like from scratch, man, I probably could have spent all day on it,

01:03:18

david raistrick: Yep. David Busby: you know, and instead GPT boom, I got that little chunk of code that all I really needed to do was for these things called the timestamp authority. I didn't have any I didn't have any code and couldn't find any code that we could use on this project. that would let me do that in PHP on that project. I do a lot of that. I did a lot of that in the past and then now you know you get typ cast, right? david raistrick: Yep. David Busby: Well, you get typ cast but not in PHP because there's not really types. But uh what do they call I think they say it was like duck typing or something like that. Or david raistrick: Yeah. David Busby: maybe that's what they say about JavaScript or something. david raistrick: Right. David Busby: Although it it does seem to have some more type related stuff happening both JS you know and and through TypeScript and PHP through the changes and annotations and 8 whatever man. david raistrick: I know one of the things we always always dealt with when we were bringing C developers into into PHP land was uh teaching them all the ways that all the things that PHP considered to be a true.

01:04:31

David Busby: Oh yeah, basically everything david raistrick: Yeah. If if it's set, it's true. If it's not set, David Busby: there's david raistrick: it's David Busby: there's david raistrick: false. David Busby: like david raistrick: Except David Busby: there's like three false values. david raistrick: If it's a string, it's true. Unless it's an empty string and then it's false and then and there it's true and false, but there's true the string. The string called false is true. David Busby: Yeah, don't do that. Yeah, I think I think that's right. There's like three or four falsy things. false and null and zero and then oh empty string also. Uh you know and I think something else I see folks getting uh just new devs in general getting hung up on is uh the in that PHP universe that is set versus empty, david raistrick: Oh yeah, right. David Busby: you know. Uh, and then and then somebody else did something that I also feel like is not a good practice, but was putting query string parameters into the app and the parameter was being handled on just whether or not it existed.

01:05:44

david raistrick: H David Busby: And you know, I look at I look at a lot of web apps. I do a lot of web app s***. I'm staring at some of these web apps that like this was one of the rare cases where I saw somebody doing something like that using the I've seen it before when folks made their app have its own custom very unique parameters being passed in like what folks was doing way back in CGI Ben days and they're just you know packing weird s*** onto the URL and like handing that into their script And you know, just letting Pearl's rejax handle everything. Cool. But this one, you know, even when you look at what do the big dogs do, the Microsoft and Google apps and all of that. They've got a parameter, but it's a single, you know, and they're using shorthand stuff that's just a single character or two characters for the parameter and then it has a value one. Okay, cool. do like don't just do arg equals 1, you know, because of whoever's reading it later, because of however it's being read later.

01:06:59

david raistrick: Yep. David Busby: Anyway, this was awesome. Uh, thank you for the tour of uh Ader and I, you know, I look to it looks like it knows how to handle all the different languages that you might want to use. Latex in there, david raistrick: Yeah, David Busby: PowerShell david raistrick: people say that using the cloud models are the best programming models right now. So, I think like 3.7 cloud 3.7 or whatever is like the best thing to use. Um, I I mostly use them for other things. So, I try to not spend too much money on Claude. David Busby: looks like it doesn't support objective camel. Boo. I don't I mean that's a that's an edge case language. Anyways, they had another thing where they have their leaderboards and they're running these tests from a spite called a site called Exorcism. Exorcism. Yeah, exorcism. 225 different exercis exercises. And it says like 72.9% correct from Gemini 2.5 Pro using diff fenced versus diff versus architect versus whole patching versus other ways I guess of doing that and they show cost so you can kind of know what to expect I think from this thing before you even get it

01:08:22

david raistrick: Yeah. David Busby: roll. david raistrick: And David Busby: That's awesome. david raistrick: unlike cursor and a lot of the other play competitors, this one is open source and free. David Busby: Yeah, david raistrick: So like I could pay, you know, I can pay cursor $20. I It's not free because I have to pay the LLM, David Busby: you got to pay the most things, but david raistrick: but David Busby: this this uh Python utility that sits on top of them is $0. david raistrick: yeah. David Busby: Yeah, I love it, man. That was awesome. david raistrick: And I believe they they had they David Busby: All david raistrick: had implemented I don't know the current state a a chat a web interface to it. Uh which is one of the things I really wanted to see. I wanted to be able to have this right but I also wanted to be able to have a web interface where I could have a conversation right not code driven but conversation driven David Busby: right. david raistrick: in the context of the code because that's what I miss working in chat GPT doing code is that I can talk about it solve problems then we can get back to coding and we have all of that conversation context um they created a web interface but at least when I looked at it a couple of months ago it wasn't that thing I hunted, but it is available.

01:09:32

david raistrick: It might be you might might solve somebody else's problem. So, David Busby: That's cool. Appreciate it. Well, I think that's it. I'm going to cut. Uh, cool. So, now it's going to drop. That's it. Monday, I got a thing going on. So, I won't be around. I think the calendar is accurate about it. david raistrick: I believe so. David Busby: I don't know what else is next on the uh noise machine thing to do 328. Uh that's it. Uh meeting transcript and smashup. We were going to look at different transcripts tools, b**** about UI, s***, publishing online, NAN, bunch of different things to talk about there. I don't know if you have a preference for any one of those. All the browsers, Linux server. I have this one line item I put on there way down at the bottom that's called Revas. Revas is a concept of a piece of software that I have in my head that I have had in my head for ages.

01:10:57

David Busby: Um, and I want to take control of my own, you know, social feed kind of thing. So, it's very much in the realm of a mastadon or a blue sky, but it's, you know, independent in some way. And I've been bouncing that idea around in my head since Tumblr was launched, david raistrick: Yeah. David Busby: you know, and I just like sort of never got anywhere with it and never really thought about working on it. And almost every time I decided, oh, I'm going to work on this, I got distracted by, oh, well, let's explore this new tooling or david raistrick: Okay. David Busby: let's, you know, s*** like that. And then, you know, I end up not writing the code. instead uh spend my time like learning framework A or B or b******* like that, you know. david raistrick: Right. David Busby: Not awesome. david raistrick: Yeah. I know how it is. David Busby: So, uh anyway, that is groovy, man. Um I'll see you on Wednesday. david raistrick: Cool. David Busby: Have a good weekend. david raistrick: All right, man. David Busby: I move them into the folder. david raistrick: Yeah. David Busby: A timer set after these. david raistrick: Sounds good. David Busby: Thanks help. david raistrick: Thanks. Bye.

Transcription ended after 01:12:20

This editable transcript was computer generated and might contain errors. People can also change the text after it was created.

AI Summary

Mar 28, 2025

D\&D

Invited david raistrick David Busby

Attachments D\&D

Meeting records Transcript Recording

Summary

David Busby and David Raistrick discussed Caddy's unintuitive configuration order, resolving a reverse proxy issue by using specific `handle path` directives. They also explored Ader, a shell-based LLM tool, showcasing its use in a wideband sensor data analysis project, noting its strengths and limitations, including its iterative code generation capabilities and varied performance across languages. Finally, they discussed GitLab's pricing strategy and future project ideas, including Busby's "Revas" social media platform concept.

Details

  • Caddy Web Server Configuration: David Busby encountered a non-intuitive behavior in Caddy's reverse proxy directive, where it took precedence over the file server directive (00:01:15) (00:03:44). They resolved this by adding specific `handle path` directives to prioritize file serving for the root path and using reverse proxy for other routes (00:02:32). They also noted that Caddy's order in the global config did not behave as expected (00:03:44).

  • Caddy Configuration Order: David Busby and David Raistrick discussed the unexpected behavior of Caddy's configuration order, where the order of directives in the config file did not determine the execution order (00:03:44). They compared this to configuration management tools like Chef and Puppet, which have multiple processing passes, resulting in non-deterministic order (00:04:54).

  • Introduction to Ader: David Busby requested an explanation of Ader and its functionality. David Raistrick described it as a tool for LLM integration within the shell, differentiating it from IDE-integrated LLM tools like Cursor (00:05:57). They highlighted that Ader allows for greater control over tools and development workflows, particularly beneficial for those working with multiple programming languages (00:07:02).

  • David Busby's Development Workflow: David Busby described their diverse daily development tasks across various programming languages (shell, Perl, Python, PHP, Go, JavaScript) within a small team environment (00:07:52). This contrasts with their previous experience working on a single large application within a larger company (00:09:06).

  • David Raistrick's Development Workflow: David Raistrick's workflow often involves accessing remote servers through multiple SSH connections, making IDE integration challenging. Ader's shell-based LLM integration is thus preferred in these scenarios (00:11:27).

  • Ader Project Example: Wideband Sensor Data Analysis: David Raistrick presented a project using Ader to build a tool for analyzing wideband sensor data from a car's oxygen sensor (00:12:27). This involved creating a custom graphing tool and integrating it with a custom GPT model for data interpretation (00:13:38).

  • Ader Project Requirements and Specification: David Raistrick outlined the requirements for a tool to manage log files, notes, and graphs related to the wideband sensor data (00:14:33). They initially used GPT to generate ideas, iteratively refining the specifications into a more detailed functional specification (00:16:28). A file system-based approach was chosen over a database for flexibility (00:17:25).

  • Using Ader to Generate Code: David Raistrick demonstrated using Ader to generate Python code for the data analysis tool based on their provided specification (00:19:24). They noted that Ader uses a patch-file-style response to update files within a Git repository (00:22:06).

  • Ader's Limitations: David Raistrick highlighted Ader's limitations, such as the need for manual intervention to address missing features like saving data and creating directory trees, and the inability to directly integrate screenshots (00:23:55). They also observed that despite typos in prompts, Ader understood and responded appropriately (00:24:57).

  • Ader's Code Generation and Iteration: David Raistrick iteratively improved the generated code through further prompts, addressing issues like missing logging and data tree creation (00:26:14). The generated code required debugging and manual intervention to refine functionality (00:28:23).

  • Ader's Performance and Language Support: David Raistrick noted that Ader's performance varied depending on the language used (Python being better than Go in this case) and the chosen model (00:29:25). They found the ability to easily integrate code from various sources particularly helpful (00:33:02).

  • GitLab Pricing Strategy: David Busby and David Raistrick discussed GitLab's pricing strategy, suggesting that a more granular pricing model that better caters to a wider range of users (including those with limited budgets and use cases) could be beneficial (00:51:13). They discussed various pricing tiers and highlighted how a different model may serve the company better (00:53:34).

  • Ader AI Tool Demonstration and Discussion: David Raistrick demonstrated Ader, an AI coding tool. They highlighted its ability to analyze code structure, suggest necessary files (00:58:52), and operate efficiently at a cost of 80 cents for 40 minutes of use on a mid-range model. David Busby expressed interest and noted the challenges of AI model pricing based on tokens, especially considering the varying value of different code projects (01:00:03). They also shared an anecdote about using GPT to generate code, highlighting its usefulness despite requiring some corrections (01:01:11). The discussion touched upon Ader's support for various programming languages and its open-source nature, contrasting it with paid alternatives (01:06:59). A web interface for conversation-driven code assistance was also mentioned as a desirable feature (01:08:22).

  • Software Development Practices and Challenges: The conversation included discussions about common challenges faced by developers. David Busby and David Raistrick discussed the nuances of PHP's truthiness and falsiness, including the treatment of empty strings and the `set` versus `empty` distinctions (01:03:18). They also addressed questionable practices, such as relying solely on the presence of query string parameters in applications. David Busby expressed their preference for more concise parameter handling, similar to that seen in established applications from Microsoft and Google (01:05:44).

  • Future Projects and Ideas: David Busby introduced "Revas," a conceptual social media platform they've been considering for a long time (01:09:32). They discussed the challenges of balancing project work with learning new frameworks and tools, often leading to delays in starting coding on personal projects (01:10:57).

Suggested next steps

  • [ ] David Raistrick will build a Python GUI tool to manage data from a wideband sensor, including log files, CSV files, and notes, integrating graphing functionality and improving GUI control compared to using MATLAB.

You should review Gemini's notes to make sure they're accurate. Get tips and learn how Gemini takes notes

Please provide feedback about using Gemini to take notes in a short survey.