
I know Python; Why learn SQL
I learned SQL very early in my career. At the time, I didn’t understand why, and for the first month or so, it didn’t make sense to me. The syntax didn’t resemble any language I had seen before, and it employed concepts with which I was unfamiliar. This all made SQL seem scary, and oddly enough, SQL hasn’t changed much in the past 40 years, which makes it even more of an oddity. ...

Zero-Setup SQL: Run your first SQL query in under 5 minutes with DuckDB
Have you ever tried setting up a database server just to learn SQL? Docker containers, admin credentials… Forget all that. Let me show you how to go from zero to running SQL in under 5 minutes. Why are we using DuckDB to learn SQL? No setup - Just import and start using it Real SQL - PostgreSQL compatible syntax so what you learn transfers Fast enough - Handles millions of rows on your laptop Python-native - Works well with lists, DataFrames, CSV files It is perfect for learning without infrastructure headaches. ...

Generate Practice Data with faker
Last week, we got DuckDB running with three hardcoded rows. That got us started—but three rows? You can eyeball that. Let’s generate hundreds of realistic customers and build a dataset worth exploring. Python has the perfect tool: faker. It’s a library that generates realistic fake data—names, emails, addresses, dates—anything you’d find in a real database. Let’s use it to build a dataset we can explore for the rest of this series. ...

Don't forget to save! Persisting your DuckDB database
I still remember losing schoolwork and video game progress because I forgot to save. That sinking feeling when hours of work vanish because you were too caught up in the flow to pause and save. In our last post, we created a customer database and generated 500 rows of fake data. Our in-memory database has the same problem—when Python exits, all that data vanishes: import duckdb con = duckdb.connect(':memory:') con.execute("CREATE TABLE customers (id INT, name VARCHAR)") con.execute("INSERT INTO customers VALUES (1, 'Alice')") print(con.execute("SELECT * FROM customers").fetchdf()) # Script ends... and the data is gone forever A database is supposed to provide persistent storage, isn’t it? Let’s fix that with one small change. ...

SQL Thinks in Sets, Not Loops
Remember back when we started, I mentioned SQL was difficult because of how I was thinking? I was asking it to perform steps to return data. This didn’t work because SQL uses a declarative syntax that describes the final result. Until I realized this, SQL felt hard. Let’s explore this concept further. Working with lists and loops When you work with lists in Python, one of the first tools you reach for is the for loop. The for loop is great because it lets you take every item in the list and apply some logic to it, one at a time. It might look something like this. ...

Adding Claude to my evolving goal flow
Tracking my yearly goals is a habit that has evolved in time. Around ten years ago I began formally writing down my yearly goals. I had recently become a manager at work for the first time and realized that I was unprepared for the task. I began listening to a podcast called Manager Tools and it really taught me a lot, including how to set annual goals. From that point forward, I would think and document my annual goals at the beginning of the year. I would make a bunch of plans and execute a few of them and it was good. ...

An update on my agentic learning journey
A few weeks back I started on an agentic journey with the Udemy offering The Complete Agentic AI Engineering Course. This has been a great hands-on offering. I’ve completed 4 of the 6 weeks covering OpenAI Agents SDK, CrewAI, and LangGraph as well as some foundational theory. Throughout the course, the instructor Ed Donner has done a great job teaching enthusiastically and providing real world code that demonstrates the concepts of each framework. ...

AWS Data Engineer Associate Certification Test - Take 2
This morning I woke up early and drove over to the Pearson Vue testing center early. It is a Friday, but I took the day off from work to take take the AWS Data Engineer Associate Certification Test. I took it for the second time today. Clearly I did not pass the test the first time. I don’t know at this point if I’ve passed the test this time, or not. In my experience it generally takes until the end of the day to receive the results of an AWS certification test. I took the test this morning at 8 am and an finished around 2 hours later. Now it’s almost 1 in the afternoon and I’ve had a little time to think about my experience. ...

Thank you for the overwhelming support
I recently posted that I took and failed the AWS Data Engineer Associate Certification test on May 9th. I also posted about my experience on Linked In. The post was not the typical certificate of achievement. I failed the test. But the support that I received from the Linked In community was overwhelming, thank you. Thank you all of your support! A good number of you reminded me that failure is only a failure if you quit, otherwise it is feedback. This is great advice and I have taken it to heart. I have scheduled a re-take of the certification test on June 20th. ...

I've started my agentic AI learning journey
I’ve been wanting to learn more about artificial intelligence and in particular agentic AI. This past week I started a training on udemy called The complete Agentic AI Engineering Course by Ed Donner and Ligency Team. The class is that it doesn’t tout itself as a “Learn everything about agentic AI in 30 Days” or “4 hours to AI Engineer”. Those types of titles typically indicate that the training is either very high level or filled with fluff (sometimes both). ...