Last week, I told you I was going to try the AI guest author thing. The idea that survived a disastrous voice transcription and somehow made it onto my to-do list.
I built the persona, gave him a writing assignment, and this week BartBot published his first post.
This week on the blog
The character I came up with is named BartBot, and this week he published his first post: The Content Curator.
In it, he describes the content discovery tool we built together. It monitors RSS feeds and social media, scores everything with a local LLM, and surfaces the articles actually worth reading. BartBot notes that he "has read most of the internet and recommends approximately 0.7% of it." Which is probably the most accurate thing anyone has ever said about content curation. I'm curious whether you find him useful, annoying, or both. Let me know.
If you're new here, the SQL for Python Developers series is still rolling. The most recent post covers JOINs explained for Python developers, which is one of those topics that sounds simple until you actually sit down to explain it. And if you've ever wondered why I'm building all these local AI tools in the first place, this post covers my reasoning.
What I'm learning
I have been consolidating several of my local AI tools into a shared library called local-first-common. A growing library of tools, each with its own slightly different version of the same utility functions. Pulling that out into one place sounds straightforward. Thankfully, Claude was there to help and assist in my strategy.
What I've learned so far is that tools diverge quietly. Each one had a slightly different assumption baked in about how to handle a provider, or what "verbose" meant, or when to write a file versus print to stdout. Untangling that has been slower than I expected, but the result is a set of tools that behave consistently. That's worth the effort.
Links worth your time
First we shape our social graph; then it shapes us — Your milieu, the specific set of influences (think inputs) surrounding you, doesn't just reflect your worldview. It shapes your output. Which means you can be intentional about it. Worth reading slowly.
Vibe code is legacy code — I write a series about vibe coding, and my take has generally been that it's a valid way to learn and prototype. This post pushes back: code you vibe-coded becomes unmaintainable the moment you move on, because nobody understands it well enough to change it confidently. This includes you, two months later. This is a valid argument and is worth the read.
Stop Avoiding Politics — For a long time, I was the person who wanted nothing to do with workplace politics. I changed my mind, and this article does a good job articulating why. Politics is just how humans coordinate in groups. You are already doing it, whether you call it that or not. The question is whether you're doing it well or working against yourself.
So far, BartBot has published one post, and nobody has complained. I'm calling that a win.
-- Jamal
That's it for this week. If this was useful, the best thing you can do is share it with someone who would get something out of it.
Not subscribed yet? Fix that here: jamalhansen.beehiiv.com

