I'm not sure how one measures the passage of time for a blog. Posterities ? RSS-uscitations ? Whatever the unit, today marks my blog's twenty-fifth birthday . It's old. (Reader, I assure you I've remained the same age throughout.) I started my blog as a fun broadcast for the handful of friends and family who stayed on the east coast after I'd absconded to the west. Over the years, it became a…
Not long ago, my online presence was served variously by Heroku , Fly , AWS , GCP , and GitHub Pages . This evolved organically, over a decade, and became a recipe for unpredictable, expensive sadness. Meanwhile, the world marched on. My home gigabit fiber proved to be remarkably stable. Its uptime over the past year absolutely trounced GitHub . The answer was clear: I had to run a server at home.…
Sometime late last year, agentic coding tools hit a tipping point. The strongest engineers I follow use them . I'd like to write about it. There's so much delightful expansive crazy - making clever thoughtful new content about the state of AI. I'd like to contribute to it. These days, I'm using LLMs extensively in data pipelines to cull, structure, clean, and enrich data at scale. I'd like to…
Now that t-strings are part of Python 3.14 , I've seen a lot of people ask the question: "should I use them?" The short answer is "probably not yet." Template strings are powerful but still very new. They'll only start to become useful when libraries and frameworks (like tdom and t-sql ) that fundamentally require them become more widespread. A related question I've seen: "do t-strings replace…
I built a very goofy website, BIG TIME T-STRINGS , that tracks the use of Python 3.14's new t-strings in the wild. UPDATE 11/5 : Alas. GitHub has effectively disabled their current Search API. Until there's a viable alternative, BIG TIME T-STRINGS is on pause. Under the hood , BIG TIME uses the GitHub API to find all public repos that declare a minimum dependency on Python 3.14. It clones each…
Python 3.14's new t‑strings add flexibility and power to the language's arsenal of string processing tools. They make it easy to distinguish between static and dynamic content—essential for safe web templating. That's why we're excited to introduce tdom , a brand-new toolkit that leverages t‑strings and brings Python web templates into the modern era. It's easy to use: write HTML in a t‑string and…
The premiere of Python: The Documentary is just a couple hours away. It streams for free on YouTube at 10AM Pacific. Over the past year, I've had the pleasure of getting to know and collaborate with a few of the Pythonistas involved. I'm excited to learn more about the history and growth of Python's welcoming and impactful open source community.
"I built an entire startup with AI and now it's profitable." Posts like this seem increasingly common. Curiously, they rarely include details: a link to the startup, a clear description of the customer and problem, or a breakdown of how AI was actually used. Please allow me to admit my gentle skepticism. I use LLMs to write code. Like anyone who has done so, I've learned a lot about when they're…
I built a little website to help wrap my head around the state of unsheltered homelessness in Seattle. The site uses Seattle's public customer service request dataset , which aggregates data from the Find It, Fix It App and city web portal to show recent (and, if you like, historical) reports of encampments, abandoned vehicles, and related issues: Through the magic of GitHub actions , the…
There are bugs and then there are bugs . The latest Oxide and Friends episode tells the story of an epic data corruption bug that nearly derailed Oxide 's launch. Says CTO Bryan Cantrill : An adage of mine is that bugs can be psychotic or nonreproducible, but not both. And when I say psychotic I don't mean just, like, difficult. I mean [...] ripping at the fabric of reality. The fabric of reality…
My daughter and I vibe coded a little Cat Restaurant Game using VSCode , GitHub Copilot in its new-ish agent mode , and Claude Sonnet 4 . The graphics were generated by ChatGPT ; my daughter made the sounds and music using GarageBand . You play a little girl that runs a sushi restaurant and has to feed the hungry cat customers before they get impatient: The whole project took about three hours…
One of my favorite database design patterns is what I call the "mullet schema": business up front, party in the back, where every table in the database ends with a JSON column. I even mentioned it on a recent episode of the Talk Python podcast : This morning, I read David Crawshaw 's excellent post, How I Program With Agents . In a sidebar, he completely blew my mullet-addled mind: I learned an…
I gave a lightning talk at PyCon introducing t-strings to a hall full of Pythonistas. At just under five minutes, the intro had to be a "whirlwind". I hope I managed to convey the basics in a fun way. PS: right after I spoke, Sheena O'Connell gave a talk about Python in Africa that I found inspiring. It's worth a watch .
I just ran across* Will Vincent 's delightful PyCon 2025 Recap , the first of many recaps I hope to read from folks I met at the conference. * I'm old, so I "ran across" it in my RSS reader.
Just in time for PyCon US , I had the pleasure of being a guest on the Talk Python podcast with Michael Kennedy . Along with Paul and Jim , two of my PEP 750 co-conspirators, we talked all about the new t-strings feature that will ship later this year with Python 3.14. You can listen to the episode here .
LLMs are powerful levers for writing code. With time and plenty of experimentation, I've found tools and strategies that work well for me. LLMs are also wildly flexible. To learn how others use them, I've started watching screencasts by expert engineers. Three I recommend: Kevin Leneway is one of the most talented software developers I've had the pleasure of working with . He recently published a…
PEP 787, Safer subprocess usage using t-strings , is a newly proposed PEP that improves the safety of subprocess invocations in Python by building directly on the template strings features of PEP 750 . I couldn't be more excited to see it! The proposal is open for feedback . (PS: This new proposal was written by the two authors of PEP 501 , which fed directly into the development of PEP 750 . Nick…