Issue 001 of The Periodical This week a physical magazine showed up at my door. It has a cover, an editor’s note, a table of contents, feature articles set in two columns, pull quotes, drop caps, and a colophon. It’s Issue 001 of The Periodical , and I am its only subscriber. I made it with Claude Code, Claude Design, and Codex, and the whole thing started as a shower thought I typed into ChatGPT:…
Every conversation about AI in campaigns eventually hits the same wall: what about hallucinations? It’s a fair question. These models can confidently produce wrong information. They may invent quotes, fabricate statistics, and do it all in the same tone they use to tell you the truth. The problem isn’t hypothetical. But “what about hallucinations” usually carries an implied bar where the…
After 2024, Democrats drew the right immediate lesson: get better at being online. More native creators. More distributed media. More willingness to compete in the places where politics, culture, and identity now collide. You can see that instinct in the party’s post-election push to meet people in sports forums, community groups, social platforms, and other nontraditional spaces. That is…
I previously wrote about how you can use VisiData to quickly scrape HTML tabular data . Claude Code with Opus 4.5 is another excellent data exploration sidekick. This is what ‘agentic’ looks like in practice. Using the same Federal Reserve list of the largest commercial banks , I started a Claude Code session and prompted: Can you go to the page at…
Over the past few weeks, something shifted in the AI conversation. Claude Code, which had been available for the better part of 2025, gained the Opus 4.5 model, and developers lost their minds. Andrej Karpathy posted, “I’ve never felt this much behind as a programmer” . Google engineers reported recreating months of work in hours . It’s difficult to talk about this shift without sounding like an…
Claude Agent Skills are pretty neat. They remind me of OpenAI’s function calling . Both are a way to tell the model to run some external process, often with the goal of seeding the context window with deterministic data from outside the LLM system. Function calling does this with a pile of JSON. Agent Skills do it with a pile of Markdown. Tip Now Works With Codex! OpenAI’s Codex CLI now supports…
I’ve been playing around with Claude Code, and I wanted to see what happens when you give it something genuinely open-ended. Not “implement this feature” or “fix this bug” but something that would typically require actual creativity from a human. Something where the agent needs to look at a landscape of existing solutions, find the gaps, and make something new. The Iterated Prisoner’s Dilemma felt…
On October 22, 2025 we got the call from Kelsey’s OBGYN that we were going to the hospital that night. The due date wasn’t until November 17, but it was time to go. We checked in to Labor and Delivery at 10:00 pm CT . On October 24, 2025 at 9:08 am CT , our daughter Lena was born. Lena’s birthday is 1024 . Kelsey became a mom. I became a dad. I love Lena so much. I love Kelsey so much. Lena was…
About once a year, I’m reminded of the fact that a lot of marketing SaaS and ad tech dresses up cryptographic hashes as a sort of privacy theater. This shows up frequently in product features for suppression lists with the general idea of uploading hashed values of email addresses or phone numbers to enable matching while preserving privacy. The problem is, hashing PII does not protect privacy .…
This week I hit three small but satisfying milestones: I logged my 1,000th Peloton ride, I achieved my target body weight (again), and I completed five years of tracking my diet and exercise data. I didn’t set out to make this some big quantified self-experiment. It started more as triage; a way to feel like I was regaining control of something after years of working on campaigns where control is…
I’ve been loving VisiData for years now. It’s my favorite way to poke around tabular data without the overhead of spreadsheets. In 2020 I posted a short video demonstrating some quick data exploration you can do with it: Today I appreciated another snappy use case: pulling and transforming HTML table data. I learned that the Federal Reserve publishes a regularly-updated list of the largest…
Two weeks ago, the YouTube algorithmic gods suggested to me The Gist Of Western Philosophy . It’s a great 15-minute video with the ambition of summarizing all of Western philosophy. But what’s more impressive is what the creator claims preceded the video: over the course of one year they read the works of 52 major philosophers. Coming out of the video, I too wanted to become more acquainted with…
This post is also available in video format, created by experiment with NotebookLM: Let’s meet the Crab: He had just bought his first record player, and being somewhat gullible, believed every word the salesman had told him about it-in particular, that it was capable of reproducing any and all sounds. In short, he was convinced that it was a perfect phonograph . Douglas Hofstadter’s Gödel, Escher,…
Last month OpenAI announced ChatGPT Agent which, among many other things, acts like rubbing LLM onto Selenium . Since the announcement, I wanted to try making a political donation right there in the chat without building any of my own API or MCP or custom agentic operator weirdware. It mostly worked: A screenshot of ChatGPT in Agent Mode navigating to Sherrod Brown’s ActBlue page to make a $50…
A common challenge in working with operational or CRM-style data is that you often find yourself dealing with user-entered free text. A recurrent example comes when users fill out forms that ask for their job title and employer. This data might seem secondary, but for any organization trying to understand, segment, or personalize communication with its users, it’s incredibly valuable. Of course,…
Well, they’ve done it. OpenAI released a model that can solve the MU Puzzle . This has been my go-to test for GPTs since before ChatGPT was launched and models were only available in the Playground. If you’re unfamiliar with the puzzle, it was introduced by Douglas Hofstadter in his Pulitzer-winning book Gödel, Escher, Bach . The book explores how meaning can emerge from symbolic manipulation, and…
Over the Summer I wondered whether Austin was having a cooler season than normal. Through the magic of public weather data, I was able to discover that the answer was mostly yes! But I also wrote that post at the end of July, and a lot of 2024 was still left to go. So here I am, sitting at my kitchen counter the day after Christmas, ready to definitively answer the question for the year: Austin,…
Heads up: This post has some videos that contain flashing lights. If you managed to get a seat on the final night of the 2024 Democratic National Convention (I got there at 2:30 pm and still had to rely on seat-saving friends!) you probably also found an LED bracelet wrapped around your arm rest. I’m bad at remembering to take photos of things in the moment, so here’s mine over my kitchen counter:…
You constantly see posts among Democratic supporters that look something like this: I’m not donating via ActBlue anymore because they sell my data and I get spam. This misunderstanding not only damages trust in one of our most important fundraising tools but also obscures where the real issue lies. It is true that your data is being sold. And it is true that you’re getting spam. But ActBlue didn’t…
CSVs are kinda bad. We know this, but sometimes it’s helpful to remember why they’re kinda bad. Maybe you need to work with CSVs and you’re using Python, because Python is kinda good. And someone else somewhere wrote a CSV: import csv data = [ [ 'Name' , 'Comment' ], [ 'Alice' , 'She said, "Hello" and waved.' ], ] with open ( '/tmp/data.csv' , 'w' , newline = '' ) as file : writer = csv.writer(…