Python Bytes - #485 Creating memories

Episode Date: June 23, 2026

Topics covered in this episode: Backup Docker volumes locally or to any S3 Pyodide 314.0 Release nb-cli: A Command-Line Interface for AI Agents and Notebook Automation Hindsight Agent Memory That L...earns Extras Joke Watch on YouTube About the show Sponsored by us! Support our work through: Our courses at Talk Python AWS Community Day Midwest tomorrow Wednesday the 24th in downtown Indianapolis, Six Feet Up is sponsoring and there are 2 Sixies presenting Connect with the hosts Michael: Mastodon / BlueSky / X / LinkedIn Calvin: Mastodon / BlueSky / X / LinkedIn Show: Mastodon / BlueSky / X Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesday at 7am PT. Older video versions available there too. Finally, if you want an bonus digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: Backup Docker volumes locally or to any S3 Via Bryan Weber (thanks Bryan!), who spotted it over on Virtualization HowTo. Find Bryan at bryanwweber.com. offen/docker-volume-backup is a lightweight companion container that backs up the volumes your apps actually depend on, then ships them somewhere safe. It's tiny: written in Go and about 25MB compressed, roughly 1/20th the size of the shell-based image (jareware/docker-volume-backup) that inspired it. Drop it into your docker compose file as a backup service, mount the volumes you care about as read-only, and you're off. Push backups to a pile of destinations: a local directory, plus any S3, WebDAV, Azure Blob Storage, Dropbox, Google Drive, or SSH-compatible target. Mix and match as many as you want in one run. Recurring cron-style backups in a Compose setup, or one-off backups straight from the Docker CLI. Production-friendly touches worth calling out: Rotates away old backups so you don't quietly fill the disk. GPG encryption for your archives. Notifications on finished and failed runs (so you find out about failures before you need the backup). Stop a container during backup for a consistent snapshot using a simple docker-volume-backup.stop-during-backup=true label, then auto-restart it. Run custom commands during the backup lifecycle (great for a database dump before the file copy). Docker Swarm support, plus arm64 and arm/v7 builds. Hello, Raspberry Pi homelab. Fun aside from Bryan: he searched our back catalog for this tool and the search came back so fast he thought it hadn't run. Love to hear it. Calvin #2: Pyodide 314.0 Release PEP 783 is the real news — Pyodide maintainers used to hand-build 300+ packages. Now anyone can publish Pyodide wheels to PyPI with cibuildwheel. The version jump from 0.29 to 314.0 is intentional — it now tracks the Python version, so 314.x = Python 3.14. Binary compatibility is locked per Python cycle, meaning packages you build today won't break on the next Pyodide release. sqlite3, ssl, and lzma are back in the default stdlib — no more await pyodide.loadPackage("sqlite3"). Bigger download, but a much smoother experience for newcomers. bigint precision bug is fixed — values above 2^53 were silently losing precision when crossing the Python/JS boundary. The new JsBigInt type makes the roundtrip correct. Worth flagging if anyone is doing numeric work in a browser app. Experimental TCP sockets in Node.js — you can now connect Pyodide to a real database (MySQL, PostgreSQL, Redis tested) when running server-side. Blurs the line between "Python in the browser" and "Python runtime anywhere Wasm runs." Michael #3: nb-cli: A Command-Line Interface for AI Agents and Notebook Automation From Piyush Jain (Jupyter and LangChain maintainer) on the Jupyter blog: nb-cli: A Command-Line Interface for AI Agents and Notebook Automation. nb-cli is an experimental, Rust-based CLI to read, write, execute, and search Jupyter notebooks. The premise: agents are great at CLIs but terrible at hand-editing the nested JSON in an .ipynb, so let them operate on the notebook from the outside instead of running inside it. Works with or without a Jupyter server. No server? It reads/writes .ipynb files directly and talks to kernels over ZeroMQ. Connected to a live JupyterLab, your edits show up instantly via Y.js (the same CRDT Jupyter uses). Smart output format: instead of token-heavy JSON or ambiguous plain markdown, it uses @@cell / @@output sentinels with inline metadata. Less wasted context, unambiguous structure, and it degrades gracefully on truncation. The payoff is composability. "Add a summary section and run it" becomes one shell pipeline instead of six agent tool calls. And nb search notebook.ipynb --with-errors returns only the failing cells, so the agent skips the cells that worked. Claude Code tie-in: it ships as an agent skill. npx skills install jupyter-ai-contrib/nb-cli and your agent can drive notebooks via nb. Out of jupyter-ai-contrib, which aims to become an official Jupyter AI subproject. Still early (crates.io is at v0.0.5), so kick the tires before anything load-bearing. See also marimo-pair. Calvin #4: Hindsight Agent Memory That Learns AI agents forget everything between sessions — Hindsight gives them persistent memory that learns over time Simple three-method API: retain(), recall(), reflect() — store, retrieve, and reason over memories TEMPR retrieval runs semantic, keyword, graph, and temporal search in parallel for accurate results Automatically consolidates related facts into durable observations instead of piling up duplicates pip install hindsight-all runs the entire server in-process; integrates with LangChain, LlamaIndex, Pydantic AI, CrewAI, and more Extras Calvin: Clanker: A Word For The Machine **Ponytail — You know him. Long ponytail. Oval glasses. Has been at the company longer than the version control** **Klangk: Multi-User AI Sandboxing, Collaboration and Coding Platform** Cursor announces Origin performative-ui to quick start your new idea Michael: Astral Joins OpenAI: The Interview SpaceX to acquire Cursor And OpenAI renews Open Source support Portuguese subtitles are now available for Talk Python courses DSF is hiring including Six Feet Up support Joke: Oh Babe…

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bites, where we deliver Python news and headlines directly to your earbuds. This is episode 485 recorded on Tuesday, June 23rd. I'm Calvin Hendricks Parker. And I'm Michael Kennedy. Thanks Michael for being here with me today. I'm excited to be your co-host for Python Bites. We've got the lot going on. We're going to dive right in.
Starting point is 00:00:23 But first, make sure you go check out our sponsors. It is sponsored by us in our work. Michael's great work over at the Talk Python courses. So check out Talk Python's coursework over there. And if you are in the Midwest tomorrow, since this says those go live today, AWS Community Day Midwest is tomorrow, June 24th in downtown Indianapolis.
Starting point is 00:00:46 6F is sponsoring and there'll be two 60s presenting. So you've got, that's actually what 6F2 people refer to themselves as. So if you want to come check out two of us presenting at the conference tomorrow, check that out. So if you want to connect with the hosts, you can find Michael and myself at all the various social spots on Mastodon, Blue Sky. Do you still use X? I do still use X.
Starting point is 00:01:09 And I updated our show notes template so that we have our X links and LinkedIn. Perfect. Yeah, because I'd probably a little more active on LinkedIn. But maybe this is a nudge or a motivation that I should go be active over on the other platforms, too. And you can check out the show on Mastodon and Blue Sky at those various links and X there as well. So join us on YouTube for the live version of the show at Pythonbytes.fm.fm. Live to be part of the audience.
Starting point is 00:01:34 Usually we record Tuesday at 7 a.m. Pacific, 10 a.m. Eastern for those of us on the East Coast. I guess we cover both the coasts, Michael. And then older video versions are available there as well. Finally, if you want a bonus digest of every week's show notes from an email form, just add your name and email to our friends of the show list. We'll never share that email address with anyone else. You'll just get great sets of links and show notes from the team over here at Python Bites. All right, Michael, let's kick it off.
Starting point is 00:02:06 You've got the first topic up here. And let me tell you, I think this one is going to resonate with you. I already saw it when I peaked at some of the headlines. I was like, this is interesting. Backing up Docker volumes. So maybe we should do a quick, what the heck? What are Docker volumes? So if you do Docker a lot, you know exactly what Docker volumes are.
Starting point is 00:02:26 But Docker's a little bit one of those things. Like, oh, it seems so complicated, so weird. And it's just really different than what I'm used to doing and then you work and like, oh, that's kind of like Linux, but just in a file. You know what I mean? But one of the things that is different about Docker is it's very transient.
Starting point is 00:02:42 It's not quite Nix that it can't be changed once it's fired up. But it's generally ephemeral, right? I start up a Docker container. My app or whatever app is running there might write to it, but that's writing it inside the Docker container. and then when it goes away, if I restart it, rebuild it, especially, then whatever it wrote is just gone. Sometimes you want that.
Starting point is 00:03:04 But say if you want your web server logs to stick around, you don't want it. If you want your database data to stick around, you really don't want it. So there's a lot of times that you want a permanent storage, but an ephemeral operated system and code and so on for Docker. So what you can create is a Docker volume, which is a managed persistent virtual hard drive type thing associated with that particular Docker container. And you can move around theoretically afterwards, right?
Starting point is 00:03:33 But typically you say, okay, my Docker setup, this database server gets a volume for its data, something like that. Yeah. It's one of my favorite features of Docker is the immutability of the containers. And if people respect that, things go a lot smoother generally. Yes, exactly. Well, what I typically do, Calvin, when my Docker doesn't work,
Starting point is 00:03:51 I just log in to the container. And then I like get pulled a new version and just like read. No, just kidding. This is the modern equivalent of change mod 777 across all your files. Exactly. It's not working. That always fixes it. Just fix it.
Starting point is 00:04:05 I just open all the ports. It says it can't get to it. What's the problem? Passwords. Yeah, exactly. So what do you do with those volumes, Michael? So how, you got to back that data up. I mean, unless he just don't like yourself.
Starting point is 00:04:18 You've got to back up your data because if something goes wrong, from a whole host of reasons things could go wrong you need a backup of your data that's just living in servers right or just computers so a lot of times what you can do is you can run some kind of command like i use magidp a lot of these people i also use postgres before either of those there's a command you can run that says backup this and like back it up to the host or somewhere like that and then send it off to a encrypted storage or something but if it's just the hard drive the volumes you want to back up specifically, that's way more challenging. So Brian Weber, thanks Brian, sit over this idea called this Rust Utility called Docker Volume Backup. And the idea is
Starting point is 00:05:03 you can backup Docker volumes to in the, all the ways I can imagine I would possibly want to back them up. So you can back them up locally. You can back them up to an S3 bucket. And when you say S3, that means not just AWS that you can learn about tomorrow. But, you can back them up. But, many of the cloud storage cloud providers have adopted some kind of S3 compatible API, right? So you could back it up to, I don't know, digital or something if you want as well.
Starting point is 00:05:29 WebDAV, Azure blob storage, which you probably could just treat as S3 but directly. Dropbox, Google Drive, some SSH compatible storage. I'm guessing SEP or something like that. All those things. And how sweet is that? So the idea is when you've got a Docker composed type of setup,
Starting point is 00:05:47 you can go and add a separate service, right? And you're composed. And it just says the image is this project, this Docker volume backup, and you give it environment files, and then it can just back up somewhere. Really, if it's easy to do, you will do it. Yes, it's nice, right? So you basically just add it as a separate service. And then in your ENV, you give it a schedule and a destination. And you know, the ENV settings, right, the backup settings. You just give it those kinds of things. And if you've got a home lab and you've got a NAS on there, most NAS is have S3 compatible storage. So you can keep it all, kind of touting the local first operation again,
Starting point is 00:06:25 keeping all your data, your data. Yeah, absolutely. So this thing is super small, written and go, 25 megs. So there was also a Docker volume backup, Docker shell-based image, and this is 120th the size. So that's cool. Let's see. You can set up a cron job in your composed setup, or you can just CLI run it. This is part of the stuff that I thought was really cool. It rotates to weigh your old backups, so you don't have to worry about that kind of stuff. You say, like, just keep me, give me a backup every day for a month, you know, or something like that. And then you move it on.
Starting point is 00:06:57 Local GPT encryption, like at rest encryption of your backups, which I think is super important. Because the last thing you want to do is like, well, I want to make sure I back it up. So it doesn't, if things get hacked, it doesn't go wrong. And then that actually be in the thing that gets stole. Get notification on finished infield build, field runs. You can have it stop the container before. it does the snapshot and start it back up. So if you're doing like, I don't know, a SQL light sort of thing as your storage and you don't
Starting point is 00:07:25 need that much uptime, you want to make sure it's not in some like half-committed journaling state or whatever you know. You can run custom commands during the backup lifecycle? That's my next question. Can you run a custom command? And here's the, there's the one that maybe go start going down this list. It has Docker swarm support plus arm 64 and arm v7, which means it runs on Raspberry Pi Home Labs.
Starting point is 00:07:47 Oh, that's nice. So if you want to all the check marks. Yeah, it's pretty cold, right? Is it right? And this also gives me a chance to shout out, item bytes search. So people come up here and search for like doctor backup. And Brian pointed out like, oh, if you search for volume until today,
Starting point is 00:08:07 it came back with no results and he thought it was broken. But actually, he said it's so fast, I thought it didn't work. It felt kind of like a rough thing. But I actually put a ton of energy into this custom search engine that I built for Nice. So if you were interested, we cover some of them, please take out our search engine. And you can even add it. Now, this is like Next Level right here.
Starting point is 00:08:26 You can add it as a custom search engine to your browser. So you just say PbSpace and search our site. So Python bites all the things. Actually, I was looking for that this morning because I was like, did we cover this? Have we talked about this in the past? So that's really, that's super cool. No, that's awesome that they went and looked at your site to see if this had ever, this thing existed and didn't find it and scratched that it and made that thing.
Starting point is 00:08:47 and made that thing happen. So very cool. Well, speaking of making things happen. Before we move on, I just want to give a shout out to Chris out there. It says, backing up a volume is surprisingly hard
Starting point is 00:08:59 when you think about application state, stable data restore points. Yes. So absolutely. And this is a really nice option there. Yeah. That is very true. Like I said,
Starting point is 00:09:08 if you make a thing easy to do, it will get done. If it is hard to do, it will go into that queue of things till to do. All right. Well, that tip on backing up my Docker volumes into S3 compatible storage. But the next one up here actually is kind of exciting because it's not just a release of
Starting point is 00:09:27 Pioid 314, which you'll notice a new numbering scheme there going on. The real news here is actually the fact that PEP 783 has made this possible. The Pioidid maintainers were basically hand-building 300 plus packages for your browser to use Python in the browser. So this is all about using Python in the browser. If you've ever thought about why do I have to use JavaScript to make fun web apps, you can actually use Python to do that with tools like Piodide. And now that the 783 has actually been accepted, you can use CI Build Wheel and put wheels like compiled binary packages onto PaiPi so that if you write an app for the browser, someone can quickly download and get the latest versions of the dependencies you may be including in that application
Starting point is 00:10:14 itself. So again, I don't know, they may be seeing hopefully a surge of browser-based pilotized packages onto Pai-pie or PPI coming up here in the future. But that's actually really cool to see that ease of use now. And so there's a whole tool chain available to build these packages and make them available. A couple other changes that have happened in this 314 release. You'll notice the numbering change. There's a version jump from 0.29 to 314. And that that's intentional. Basically you're going to have the PioDide version track the Python version that it closely matches with. So if you're looking for the 3.12 version of PioDide, that's the older 0.29. But moving forward, you'll quickly spot and know which version of Python you're getting when you install
Starting point is 00:11:02 and use Piotide in your projects based on the version number of Piotide itself. So you'll get, you know, 3.14 tracks to 3.14. So for binary compatibility, it's locked within the Python cycle, meaning the packages you build today won't break with the next Piodide release. So another big benefit to this piece here. They've also brought back in some packages that were taken out of the standard library for Piodide to make the packaging smaller. Things like SQLite 3, SSL, and LZMA are back in the default standard library, which is nice. So you don't have to basically install something like SQLite if you're using. that in your browser-based application. There's other some bug fixes and other things in there.
Starting point is 00:11:46 There's also experimental TCP socket support in Node.js, and you can now connect Pioide to a real database. So that's kind of a wordy, if you've got Python running in a browser, but you can't connect to a database or to sockets. You were kind of limited in what you could do with like local storage, for example. But now that opens up a wider spectrum of things you can do. It looks like they've tested it on MySQL, Postgres, and, you're. and Redis when running on server side.
Starting point is 00:12:13 So it definitely blurs the lines between Python and the browser and Python runtime anywhere WASM runs, which I think is, again, super cool. So I don't know, what do you think? Are you building some web-based Python apps, Michael? I would love a VJS-like equivalent or something along those lines built on top of Pyscript, which can run Piotide or even Micropython, which I think would be super neat.
Starting point is 00:12:37 I built some examples actually when I built a PIECRAG. PWA based on PaiScript when it first came out, and that was based on Pryodide. And it worked really, really well. But I have not. I've not been doing it lately. You guys see a lot more variations with all your projects that you work on. How about you? I mean, we've got some interesting stuff going on in the appliance world,
Starting point is 00:12:56 but this might actually open the door to, again, more of those at-edge applications where connectivity may be limited to, I just see a lot of special use cases that open up when you can run Python in the browser. I've always wanted Python in the browser. And when Pyscript came out, what was that back? It's been a few years back now. That was exciting and kind of big news, but obviously it was slow. In the early days, there was limitations. But I think this is a big move that's going to open up a lot of options for folks to build
Starting point is 00:13:25 either embedded applications or things that can kind of stand on their own and run at the edge. I'm excited. I think it's going to offer a lot of interesting moves there. I'm very excited about Wazim. I think it's going to be, I think it's going to be cool. I think it's going to be super cool. Now, let's continue on. You've been talking a lot about tools.
Starting point is 00:13:45 Lately, you've got another one here. I never stop. We don't want to stop talking about the tools. So I won't talk about. It won't stop. Exactly. I want to talk about the NB-C-LI. So this is a command line interface or automation, people,
Starting point is 00:14:01 but the primary reason for building is AI agents and notebooks. Specifically, the NV obviously is for notebooks. So this is a, a Jupiter AI contrib projects. And I'm sure you've noticed this, Calvin, but so many projects now have some form of CLI as kind of the final integration point or the ultimate integration point. It should be the ultimate integration point. Yeah.
Starting point is 00:14:24 I mean, the motivation allows like, well, our agents can't get to our data and it doesn't know the authenticated API is too complicated. So what can we just do to make it simple? But it opens up so much more, right, to just have a CLI for whatever you're working on. And so, so here's one for Jupiter notebooks. And if you do Marima, like hang tight, I got something there as well. But the idea here is that instead of having the agents try to parse the IPYNB files, which are just gnarly JSON, especially if like lots of output is in there, you know, it's like there's your actual code and your cell definitions, but then there's maybe 10,000 lines
Starting point is 00:15:04 of output to the next cell. That's not a great place for agents to be working. Right. Context windows are a precious space. Exactly. And you're messing with that. And also, it's hard for it to actually kind of see the ambient variables and stuff like that that are in the kernel.
Starting point is 00:15:21 So the idea here is with this CLI, you get more direct access to those types of things. So let me over here. First of all, experimental. So heads up. It is rust-based. so it's likely to get VC funding. That's super good. But the idea is that it can read, write, execute, and search Jupyter notebooks
Starting point is 00:15:40 and just skip that whole thing. It doesn't necessarily need to parse the IPI-MB files, and it even works without a Jupiter server. So it can just talk directly. So it works with files directly, and it talks to the kernels using ZeroMQ, which is super cool. And instead of using that token heavy JSON or just markdown, it uses at-at-sell.
Starting point is 00:16:03 add at output sentinels with inline metadata. So as you said, less wasted context. And you can pose these things. And it even ships with an agent skill. This is another thing I'm starting to see a lot of and have been working on. I should have prepared enough more than that I'm not ready to talk about. But I got some stuff over some skills. I got skills.
Starting point is 00:16:24 So if you want to install this, you can just NPX skills install jupiter. A-A-D-C-L-I to install it with cloud code. Yeah, I think that's smart because MCP is not the answer to everything. I think there's a lot of value in skills in CLI combined together because, again, preserving that context window and a tool like this opens up a lot for folks who are doing like data science and they don't know how to write or want to write at MCP, but they're definitely a whole end on AI and agentic and LLMs. Yeah.
Starting point is 00:16:55 And MCPs basically say, hey, AI, here are some tools you can use. but they don't set the context of. Here's why you need to use the tools. Here's the ways in which they work together. You need an agent or skill. You need a skills to kind of set the stage, even if it's an MCP, like, hey, you can use all this stuff from the MCP, by the way.
Starting point is 00:17:13 I think I should improve my skills. Okay. So I said I got skills, we'll see. There's an article about it by Paius Jane. So you check that out. And if you're a Marimo person, I am going to have Trevor on from the Marimo team. talk about Merimo pair, which is a similar, not the same idea, but a pretty similar idea of
Starting point is 00:17:34 basically how you get the agents inside the kernel instead of just having them work with the files and so on. So look forward to that. Over you. I like that. I like that. The Marimo pair of aspect. I've become a Marimo, like I mentioned in the last episode, a Marimo fan. Okay. So pairing well with something like that last tool you just mentioned is that a lot of agents and a lot of these agentic workflows are lacking the ability to recall memory in an efficient way. So this next piece here is actually a tool you can add into your agentic workflow to do AI memory. So more than just memory, memory that learns. So thinking about this memory problem is actually kind of hard.
Starting point is 00:18:19 AIs forget everything between sessions, obviously. So you're constantly writing project specs, implementation detail plans. You know, those are good practices, but wouldn't it be nice if it could remember, like, last Tuesday, when you use this tool, this kind of output happened. And maybe in this context, it's actually better to use this other tool. But that kind of temporal, like using time and associating facts and details together, isn't something that just a markdown memory.mdifle is going to help you out with. So there's an open source tool called hindsight from the folks at Vectorize. And they offer a cloud version of this, but you can run it look like. You can install it with Python.
Starting point is 00:18:57 It's got, I think, adapters for all the major, like, Python, JavaScript, node, et cetera. But basically what they're saying is, you know, simple vector search is not enough. Even if you had a ChromeadDB locally with your documents all loaded into it, that isn't enough to solve the problem about what did you do last spring, for example, like the example they give here. That requires temporal reasoning and not just semantic similarity. So hindsight attempts to add in this, this extra layer of temporal retrieval, which runs semantic keyword, graph, and temporal search in parallel
Starting point is 00:19:33 to store, retrieve, and reason over those memories. So you actually get kind of three main functions. It's a simple API. There's just retain, recall, and reflect. And then it uses this temper technique to do the search across them all in parallel. And then it brings it all together, and it automatically consolidates the related facts into durable observations instead of piling up duplicates. So again, preserving that context window, putting in what is most valuable when it, when it means the most to what you're doing, it's probably the next step in memory. I think this is again, a next front that has to be conquered is giving these agents better recall and memory. I think a lot of people got a little taste of this with OpenClaw, but OpenClawn's default memory,
Starting point is 00:20:20 I don't think gives you this level out of the box, but you could integrate this into your existing open clause. It is on GitHub. It's open source. You can PIP install hindsight all, and that actually brings down and installs the whole server and process. It includes like a line chain, Lama Index, Pidentic AI, and crew AI and more,
Starting point is 00:20:39 all kind of bundled together into a nice package that you can just start using with your clod code or cursor or whatever agent you want. You can now give it better memory that can actually learn from what you're doing along the way. So I don't know. Have you run into memory issues, Michael, especially as we age? Oh, yes.
Starting point is 00:20:58 100%. I have my command book app that I mentioned last week. Oh, yeah. You're all about this. It doesn't work as well as Python in terms of agentic stuff, but obviously you can do stuff like that. But just give you an example. I had to add a feature to the CLI.
Starting point is 00:21:14 I've been doing a lot of search work to the CLI for the command book UI, GUI, which is weird. will make sense the next time I talk about it. But the way that those things are built is the Xcode project has them linked in the project and you don't have to build them separately. But the agent, even though it has worked on it a ton of time, just like, oh, I got to figure out how to build the CLI. I can't find it.
Starting point is 00:21:37 Like it doesn't seem to be a CLI project. What is it going on? And it spent like five minutes on this. And what are you doing? Like save a memory that you just build the project this way. And he goes, oh, yes, that would be great for next time. Right. Right. It's like having a fresh intern every hour you start a new thing.
Starting point is 00:21:52 Every day they're like, hang up here for my first day at work. Like, no, you're not. What are you doing? You've been here for weeks. And so I think that would be great. One of the things that I think would be cool would be, and I don't know if you could do this, is have it sync across computers because I work on my MacBook and I work on my mini. And I'm like, I told it to save on my mini. But it, you know, why is that not part of your somehow part of your account rather than part of your, You know, like on my account, it knows that this project is like this, right?
Starting point is 00:22:22 So this must have files, right? Maybe you could save them to your Dropbox. Yeah, well, I'm thinking that after our tools episode from last week, I'm really focusing on building out my framework desktop machine to be that central place I go. I mentioned T-Mux last week is my favorite go-to tool for basically using Mosh and logging into that machine. But I think I'm going to switch over to Zellage. If you've tried to ZE-L-L-J, I don't. I don't know how you pronounce it.
Starting point is 00:22:49 These are Zellage A or Zellage. But having this mental model, this hindsight running over there where no matter where I'm out and about or if I'm at my desk or sitting on the couch, I'm always actually working off that one machine where I've got great local model availability. You can talk to it over the network? Yeah, talk to it over. Exactly. Well, combining that with either tail scale or I've got the ubiquity, what do you call it,
Starting point is 00:23:13 teleport here. Yeah. Okay, this is cool. I'm standing up on my mini. Yeah. Yeah. I think you put it on one spot. And so you can see here the memory bank consists of not just like a single markdown file of memories,
Starting point is 00:23:22 but it's like mental models, observations, memories and entities, chunks and documents, which is important because whole documents won't do it for you. Sometimes it needs to be able to do that reasoning and reflecting and pull those chunks into specific spots. And based on, again, I think the key bit here is time, clever name hindsight. In hindsight, time would matter for memory. And so I think they've definitely solved this problem, which I think's pretty cool. So check it out. Yep, check it on out.
Starting point is 00:23:50 I'm going to install it on my framework desktop and start using this for memory inside of my projects. I think it's going to be pretty cool. All right, let's head into what's go to the extra part of the show. And I think both of us have quite a few extras here. When you want to kick it off, Michael. You got your screen. Okay, yeah.
Starting point is 00:24:07 Oh, okay, I can do that. Yeah, let me, let's see here. The first one I was going to talk about, oh, gosh, I've got too many, I've got too many things on my screen now. That's basically what this, I guess. How do you refer to your AI agents when you're talking to them? Do you have a term of endearment for them, Michael? Not in a personalized way, but I refer to Claude as Claude.
Starting point is 00:24:30 And I refer to their name, their branding. Their branding. Yeah, I refer to Chat, TEPC as chat. Like, hey, Chad, let's talk about this. Or like, hey, Claude, good job on that. I kind of like Armin's approach of calling it clanker. I think it puts it in the right spot. And when I think about it, I think about this, I assume this is the Star Wars reference.
Starting point is 00:24:50 Because in Star Wars, they called all the trade federation robots clankers as a derogatory term in their case. But I feel like it doesn't make it as human and you can yell at a clinker a lot easier than you could if you're yelling at Claude. People might get upset about you yelling at something named Claude. So I thought Clanker was kind of interesting. Check that out. There's a blog post from Armin about it from, it's a couple weeks old, but I think it's still very relevant to check out. That was my first one. The next one is everyone has one of these in their office.
Starting point is 00:25:21 Someone decided to make it more official. Do I not have the... Let me grab the link for that one. The project called Ponytail. And now I've got it open over here. I read this article. No, I watched a video evaluating this on YouTube just last night. Here it is. Yes.
Starting point is 00:25:36 So make your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote. So instead of the, it's kind of the not invented here, like our Yagney, like I'm not going to rewrite my own request library. Make sure you always use the libraries that are available. I kind of like, I haven't tried it, but I thought it was kind of clever. Less code, more less tokens, obviously. And you basically can just insert into your code, hey ponytail, browser has this and put in there like a placeholder of like what you want. If you want a date, for example, in this case is a date picker.
Starting point is 00:26:12 So it's like input type date and then let your agent figure it out with this skill installed to figure out what what dependency it should go install instead of trying to write its own. So a lot of times these AI agents are going to try and write their own versions of things that probably already exist. Why would you want to do? And they're very happy to go. Oh, yeah. Enterprise on you when it's like I just, I don't need, this is not in need of that.
Starting point is 00:26:36 It is a very simple project. I just need like a dialogue. So maybe you could just use, hey, guess what? HTML is recently. has a built-in dialogue thing. You don't need to install React just so I can have a dialogue. That's kind of the vibe.
Starting point is 00:26:48 All right. The next one is we've been talking a lot about agents, AI, and giving them control over our computers. How can we do that in a safe way? And how can we do it for multi-user? A good friend of mine, Chris McDonough, from the Zope Python-Plune communities.
Starting point is 00:27:04 He has wrote a agentic wrapper around all this. So it kind of does containerize sandbox workspaces where you can actually do it multiplayer. So check out. Dave, I don't believe he's done much fanfare around this project. It's very new. Just started a couple weeks back. But I think it's already made a ton of progress. There's already like well over a thousand commits in there from him and a couple other contributors into this. But basically use it with pie or cloud code, but intentionally given wide permissions. So you want to be able to have them read, write and execute code, but do it in a safe space in its own safely isolated workspace. And then for teams, you basically, I believe it incorporates T-Mux in for allowing kind of a multi-user multiplayer. If you've ever done T-Mex with multi-user, it's actually kind of magical. It feels like Google Docs where multiple people can edit simultaneously.
Starting point is 00:27:55 Well, multiple people can be in the terminal simultaneously working together. And so when you want to collaborate and want to be using an agent and actually collaborate other humans, this actually may be a really good option for you. It is called Clang, kind of a bag, maybe a play on the word clankers again. So clangk with the k at the end. How do you pronounce that? These projects need to get better naming. Klengk.
Starting point is 00:28:19 I honestly think would projects are like this and they could be pronounced anyway? So there should be a little MP3. Just like, here's how it sounds. How do I pronounce this? All right. Another one, who's been having struggles with GitHub and their outages recently? Well, Cursor has announced origin. It's currently on public wait list, but maybe something worth watching.
Starting point is 00:28:39 But it is basically a source control. optimized for the agentic world. I think they are claiming something like over 22 commits per second support out of the box. So if you've got a lot of users going at it with their agents and be able to commit at that level of scale, I think this is the future and we're GitHub better get their act together
Starting point is 00:28:58 because it sounds like cursor is coming for their lunch. And the last extra I wanted to cover was reformative UI. Michael, have you ever wanted to launch your own AI startup? and you needed to have the right AI components onto the page. This is AI Native React components for the next, you name it. So any fancy sparkles, any fancy pills with, you know, status lights in them. You can just NPM install performative UI. I just added a pill to one of my websites, and I didn't even think that I could use the framework for it.
Starting point is 00:29:32 Oh, yeah. Well, so there's, for example, the golden eye effect. You'd like to have that. I kind of don't want to like this. What I do kind of like. I know. When I saw it, I was like, oh my gosh. The things, I mean, you scroll down through here, they have thought of, well, or cribbed every possible trope that most of the AI startups are doing. If you want to have your chat bubbles look like they are coming straight out of the existing chat client. If you want to have an IDE, they've got a mock IDE component that you can land in your page to show developers that you're very developer friendly. So that was a fun one that I thought I would share with the group here. Michael, what do you got in away of extras? All right, I got it. I got a couple of things. By the way, before I jump over there, you talked about Armin's article on clinker, clinkers in that word. I have gone the opposite direction. I found it surprisingly makes me feel better working with these things, is I've gotten Claude to address me in a way more personal way. Okay. So instead of going, the user has requested or the project, you know, it refers to me as Michael and like uses me. So it'll be like,
Starting point is 00:30:39 and Michael already committed this. And so we're going to do this. And it's because it sounds so silly, but here's the thing. Like, I find some, you know, without those kinds of things, like doing a lot of agentic stuff. It's super sterile. It's still like working with other people. I'm just now working with this thing like refers to me as user.
Starting point is 00:30:55 I'm like, I am not a number. I am a man, you know, like that's what I'm going to be worried. I'm going to be worried, Michael, when you start referring to yourself in the third person. I know. Well, well, well, Michael wants to cover it. No, just kidding. So really cool Talk Python episode that I released last week, and it will still be the live one for a day or two,
Starting point is 00:31:16 before I released the next one, is I interviewed Charlie Marsh, now that Astral has been part of Open AI for a while. What a journey. Yeah, basically it talks about the whole journey he's been on. It talks about what does this acquisition by Open AI mean for the Python community for UV, TY, Rough, all those kinds of things. So I think people, if you care about, like,
Starting point is 00:31:38 what is happening to UV, check this out. And you mentioned Cursor. They're going to have a little extra money to, you know, build origin because they just got acquired by SpaceX or are going to be. What do you do with that extra money other than build more stuff? Exactly. You could run a lot of agents for $60 billion because that's what they're apparently getting acquired for, $60 billion dollars, a VS code clone.
Starting point is 00:32:06 Oh, my gosh. Wow, wow, wow, wow. Wow. I was a huge lover of Cursor for a long time. I've never been a cursor user. It was not my normal toolkit. Not your vibe. No.
Starting point is 00:32:18 I'm C-L-I's. I know, I know. See, this is why it's good you hear. We have different perspectives. I love Cursor, but it's been moving more and more towards just like, just fire off a bunch of agents that don't even look at what it does.
Starting point is 00:32:30 Sort of that's been what is embracing. And the more it does that, the less like, I kind of want to still see what's going on a little bit. Anyway, also, Astral Intersect Open AI, but this is not the same thing. Charlie Marsh posted, I'm proud to announce that we're renewing and expanding our support for maintainers of open source projects used across Astral and Codex tool chains at OpenAI. Today, that starts with committing more than $160,000 in direct sponsorship through GitHub sponsors. Wow. Nice.
Starting point is 00:32:59 So there's the Astral Open Source Fund and so on, and it shows you how to apply. So if you want to get also the Codex Open Source, a million dollar fund that includes six months of chat. To be pro API credits and so on and so on. Which have you noticed in Codex, if you're using chat GPT and Codex, it now gives you an option to reset your quota twice. Like you get two resets of, oh, I messed up and I went over. Okay. Interesting. Keep an eye on tokenomics.
Starting point is 00:33:28 I think this is going to be the next three, month, two months are going to be very interesting in the token space. I agree. And things like, not necessarily endorse it, but things like ponytail. Yeah. In memories and other stuff that keep it more focused. They're going to become more and more important, I imagine. All right. What am I talking about?
Starting point is 00:33:47 Oh, yes, I know what I want to talk about here. If I go to any of these courses on Talk Python, what is really cool is I can now, I guess I got to log in to show you, which I'm not. And I won't bother it. But now every single course at Talk Python training all, 289. 283.9 hours of them have Spanish trans subtitles. Oh. German subtitles, which they would have been there for a little while. But the announcement is now Portuguese.
Starting point is 00:34:16 Every course has full high-quality Portuguese transcripts. And boy, boy, we're in a lot of words to generate those. So who QA's those? Do you have some folks in the community who are QAing these translations? No, I have a whole series of AI-A-A-A-A-A-A. agents and Python software that like reevaluates them. And it's, it's just a whole,
Starting point is 00:34:39 whole back and forth. I was able to cue them somewhat in German, because I could speak some German, but my technical German is not great. So, you know, somewhat. But it worked well for there. So I'm just trying to apply the same process. We'll see.
Starting point is 00:34:51 People let me know how that you're turning out. But I think they're pretty good. Well, I'm glad you're making the effort to make it accessible. Yeah, exactly. I'm thinking, even if they're not perfect, you know, the English set titles were perfect either.
Starting point is 00:35:02 They were done. mostly by humans directly, but non-technical humans, so they still need a little bit of fixes here and there. That's the challenge, right? Even if you get a human being to do it, then. You've got to find a human being who both is patient, diligent, and does Python, which is like really, and wants to do transigrants.
Starting point is 00:35:20 This is a very rare person, I'll tell you what. Okay, a couple more quick announcements. This one, we've got the Django Developer Survey, is out. but the analysis and the search for a DSF executive director. So hosted by our friend Jeff Triplett out there. So they're looking to hire somebody for this. And I believe you deserve a bit of a shout out here. Hey, look at that.
Starting point is 00:35:47 Shout out to Six Feet Up, who is one of the key sponsors making this happen. Do you want to say one quick word about that? You know more than I do. Yeah. No, I think we're definitely very involved in, wanting to be engaged in getting the Django Software Foundation and executive director, it's going to be a big move for that group to have that kind of dedicated leadership. Right now, it's a very all-volunteer run.
Starting point is 00:36:09 So things like the conferences are done through another volunteer group called Defna and the Software Foundation, you know, manage some pieces of it. There are some paid positions like the fellows who work on the code. But this is working on growing the community. And there's a huge tale of people using Django out there in the world. And they don't know how to give back. think that's part of this executive director's mission is going to be how do those how do they go and find the folks who are getting a lot of value out of jango and making sure that that value kind of gets
Starting point is 00:36:40 put back into the community in the form of sponsorships for the software project itself so we can have more fellows we can have bigger sponsors at the conferences people can get greater adoption of jango into more places i think there's a lot of behind the firewall usage here that this is going to help bring to light and get more sponsorships so yeah six we have super super excited to sponsor and help find the right person. That's awesome, Calvin. One of the, I think, key secret sauces of Jenga is the community. So this is right in that space. Yeah. Yeah. Especially now in this agentic world, right? Human contact is even more important than ever. I agree. 100%. All right, I've got a joke. So you got a joke for us? You got a joke. It's called, oh,
Starting point is 00:37:21 oh, oh, babe. Oh, this is rough, but it's right on, it's right on point for what we've been talking about, some of the things. All right. Hit me with it. Hit me with it. You talked about tokenomics. So this is a screenshot of a, I message. It says, babe, heart, heart.
Starting point is 00:37:38 $15,000 out for a ticket to go. Oh, my God. Oh, is this what I think it is? Ring emoji, ring emoji, ring emoji. Hands over, Anthropic PC. Invoiced from anthropic, $15,000. Keep an eye on that token bill. It's going to, I don't think it's going to go down.
Starting point is 00:37:55 I'm so sorry, but it's not a ring. It's just a monthly clawed bill. How rough is that? It's very real. I feel seen. All right, Michael, thank you so much for joining us for another episode of Python Bites. We will be back next week with more Python news and headlines right to your earbuds. So we'll see you all later.
Starting point is 00:38:18 Thanks, everyone. Thanks, Calvin.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.