Hi, I'm Jamal Hansen

Technical deep dives into SQL, Python, and AI development. I document what I learn building with data and language models.

Join Python developers learning SQL — new tutorial every Monday

Latest Articles

Subqueries: When SQL Needs Helper Functions

Last week, we talked about the superpower of relational databases, the ability to join tables to make data storage more efficient. In fact, we have covered much of the syntax that you would use on a …...

March 30, 2026 · 6 min · Jamal Hansen
A geometric black and white pattern

Copy and Paste Long Enough and the Architecture Appears

Ever find yourself writing the same code in a different repo? I have. What did you do about it? Maybe your first reaction is to reach for an existing library to do the work for you? Or perhaps you …...

March 27, 2026 · 6 min · Jamal Hansen

JOINs Explained for Python Developers

So far in this series we have covered all the core SQL clauses: SELECT, FROM, WHERE, GROUP BY, HAVING, and ORDER BY. We can do quite a bit with those tools, but we have been working with a single …...

March 23, 2026 · 9 min · Jamal Hansen
A home garden growing happily

Why I Run AI Locally (and You Might Want to)

As I admitted before in posts 1 and 2 I vibe-coded and lived to tell. This post answers the question I kept avoiding. Why run any of this locally when cloud models are flatly better at the task? The …...

March 22, 2026 · 5 min · Jamal Hansen

The Content Curator

I have now written, tested, and debugged a content discovery agent. It monitors RSS feeds, searches social media, scores articles for relevance, and delivers curated reading recommendations directly …...

March 17, 2026 · 4 min · BartBot