Last week I published BartBot's first article. The feedback has been generally positive, so he'll definitely be back. I'm happy to report that the content curator is doing his job, surfacing lots of posts from RSS feeds, Mastodon, and Bluesky. I'm still tweaking the parameters, but overall, the content has been good and improving. Surprisingly, 0.07% of the internet is still quite a lot of information.
I've made an update to the tool so that when the content is approved and queued for me to consume it no longer writes to a list. Instead, it appends to my Reader queue. I like this for a few reasons.
It centralizes my reading queue in one place
It automatically stores highlighted material to my Obsidian vault
It has a text-to-voice option
Honestly, text-to-voice is my favorite feature. It allows me to listen to articles while I'm out walking or driving with my baby boy while he sleeps.
Today, my family and I took a trip downtown and walked along the river. While there, I captured some more great pictures that I can use. I like giving the newsletter a local San Antonio vibe with the images. It's a beautiful time of year here, and I hope that you enjoy the pictures too.
This week on the blog
A couple of new articles were published this week on jamalhansen.com
Subqueries: When SQL needs helper functions - Post 13 of the continuing SQL for Python Developers series is getting into the meatier parts of SQL. Understanding last week's post on joins and this week's post on subqueries as helper functions is very important. If you are just learning SQL, these are the posts to focus on and really understand because they are the foundation for your query writing and optimization.
Copy and paste long enough and the architecture appears - I've also been having a lot of fun with my I vibe coded and lived to tell series. This post challenges the DRY best practice, which asks you to create common functions for repeated logic.
What I'm learning
This week's post is about an observation that seems counterintuitive. I love the book The Pragmatic Programmer. It's probably what started my obsession with coding best practices, and it's where I found the concept of Don't Repeat Yourself (DRY), which teaches you to create common functions for logic used more than once or twice. AI seems to be expanding that window further because refactoring code is so cheap. It can help you delay the decision to abstract, which can lead to better designs.
Links worth your time
Ars Contexta - A Claude Code plugin that generates complete knowledge systems from conversation. You describe how you think and work. The engine derives a "cognitive architecture" tailored to your domain, and Claude builds your notes and research. It's a very interesting project, and I'm enjoying it.
Halter - A smart collar and app that lets you create virtual fences. I'm not sure if this is valuable or a money grab because I'm not a rancher. It's interesting to see AI-native products start to emerge.
SQL Developer in 2026: Roles, Skills, and Career Path Explained - SQL as a career is still going strong in the age of AI, and it shows no signs of slowing down.
So, as you can see, I've been busy here. The Ars Contexta plugin has been really interesting to use, and maybe I can lean into that a little bit in the coming issues. If you are interested in personal knowledge systems or tools like Obsidian, I recommend you make a new vault and check it out.
Whatever you do, have a great week, and I'll see you again next Monday.
-- 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
