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

GROUP BY: Aggregating Your Data

Last week, we learned to use WHERE to efficiently return only the rows that we want from a database. But what if you want to summarize the data more efficiently? It turns out that you can have the …...

March 9, 2026 · 5 min · Jamal Hansen

WHERE: Filtering Your Data

We have come a long way in the past couple of months, working through the core SQL keywords. So far, we can SELECT columns, specify FROM where our data lives, and ORDER BY to sort results. That is …...

March 2, 2026 · 5 min · Jamal Hansen
A tool box with some socket wrenches in it

I Vibe Coded a Local AI-Powered Promo Generator

Every Monday, I publish a blog post. Then I write five slightly different versions of “hey, I wrote a thing” for LinkedIn, Twitter, Bluesky, and Mastodon. Each platform has different character limits, …...

February 28, 2026 · 6 min · Jamal Hansen
A spoonful of letters with alphabet soup

ORDER BY: Sorting Your Results

We now have a firm grasp on how to use SELECT: Choosing Your Columns and FROM: Where Your Data Lives to tell the database where to find data and how to format the columns when it returns it. With this …...

February 23, 2026 · 3 min · Jamal Hansen

SELECT: Choosing Your Columns

You have written SELECT * many times by now. It works, but it’s a bit like asking for everything in the fridge when you just want milk. This week, we will look at the SELECT clause and see that it …...

February 16, 2026 · 4 min · Jamal Hansen