Writing

Thoughts on programming, career, databases, and the occasional detour into the rest of life.

Copilot, The Good Parts: Efficiency

There are so many opinions about Copilot and AI in general - many of them negative - and it's easy to see why. There are some good parts, however, and I want to explore them.

I Would Love to Work With You

Like so many, I was laid off from Microsoft on May 13, 2025. Never good news, but life moves on and I'm still fired up to do fun things with the right group of people.

The Wrath of the Junior Developer

There are a lot of opinions about AI, whether it helps or hinders our coding process and our team in general. Many are concerned that junior devs will be the ones impacted the most.

Following Your Imagination

I learned to play ice hockey when I was 11 and, as a kid from Southern California, it wasn't easy. I learned how to skate and how to play the game at the same time, all while going through a massive growth spurt. My sister once called me a "baby giraffe on a frozen lake". Nice.

It wasn't what you said, but how you said it

\nI make videos for a living and I swear: each one is an adventure. You would think I would have a system down by now but, as it turns out, each video is a unique thing that demands it's own type of story telling.

Embracing Mediocrity

AI returns mediocre results by definition - so what do you do to make things better? And why is this "by definition"?

Using Obsidian as a Programming Journal

A journal is critical for your career - but it's more than just throwing words on a page. How do you organize things, and what process do you use? Let's find out...

The Happiness and Terror of Shipping

You would think that after years of development, the act of shipping something would be nothing but joy and relief. In the moment, however, "pushing send" is te...

Constraints and Logic in Your Database

Logic in your database... is that what constraints are? If you're a programmer, yeah, it's logic. If you're a data person, it's heaven.

✈️ What's Your Exit Plan?

Retirement is one thing, being where you want to be and doing what you want to do when your current job is finished in another thing entirely. What’s your exit strategy?

Self Sabotage: The Good Parts

Personal growth books claim self-sabotage holds us back. Business hustle books frame it as a necessary thing. Which is it?

Divine Code Reviews

Reviewing someone else's code can be frustrating, but also a learning experience for everyone. Let's see how Stephen King might help us.

Hacking Ghost for Fun and Profit

Back in 2014 I created a course for Pluralsight called Hacking Ghost, which is the CMS platform you're reading this post on (or maybe got an email from). I had...

3 of the Best Things I Learned in the Last Year

I love learning new things - it keeps me going in this industry and, as my mom likes to remind me: learning keeps you alive. Here's what I learned last year.

Explain It Like I'm 5 - Why Are Hashes Irreversible?

How to explain hashing algorithms to 5-year olds? Well... I'll do my best in this post, which comes with a video too!

A Real World Approach to Playwright

Writing tests can be tricky, especially using a more complex tool like Playwright. I took some time and dug in over the last year and I'm happy I did.

What Is Your Yeet Threshold?

Solving problems is what we do, but sometimes the solution is to burn it all down and start again, learning from your mistakes. How do you make this choice?

Allowing Yourself to Screw Up

I managed to screw a few things up this weekend and I want to believe it's OK. I like screwing up... it means I'm trying. Failure is the best teacher, after all. Then again...

What Should Be a Plugin vs a Composable vs a Store in Vue?

Vue is a very powerful framework that I love a lot, but understanding some of the builtin machinery can be extremely confusing. Here's how I deal with that.

Trying Something Different: A Real World Tutorial for Frontend Programming

I'm creating an episodic walkthrough where I build a real application I need to ship, and you get to do it with me. It's up for presale at 50% off.

Repositories and Unit of Work Don't Mix

There is a trend in the .NET space of trying to abstract EF behind a Repository. This is a fundamentally bad idea and hopefully I'll explain why.

Everyone Has a Plan, Until They Get Hit in the Face

I spent almost 3 hours last weekend trying to figure out one of the most vexing problems I've ever faced, and I recorded all of it.

How Elixir's Concurrency Changed Me as a Programmer

This is an excerpt for a talk I gave in 2016 at NDC London, featuring Elixir and the concurrency features it has, built in. It's easily the most annoying demo I've ever done...

Using Constraints to Protect Calendar Data in PostgreSQL

Think about the lines of code you would have to write in order to manage a scheduling system. Duration checks, start and end time requirements as well as checking for overlap! You could spend a few days writing all that code or you could let PostgreSQL do it better with 5 lines of SQL.

Weird Brazil Date Bug with Jon Skeet

Digging through my archives once again and found this wonderful video with Jon Skeet doing what he loves to do: sleuthing date bugs and answering questions on StackOverflow!

The First Draft of Anything Is Shit

I'm allergic to crappy, non-sensical, faked up demos that try to convey highly technical concepts. Yet I find myself falling into that lazy trap constantly. This requires intervention.

The Importance of Knowing Your Numbers

As programmers we tend to think of reports after the fact, often when it's too late. I learned this the hard way over the last few days.

Data Structures and Algorithms

Many people are interviewing these days and you really, really should know the basics if you expect to do well. You'll find that here with common data structures and algorithms.

Handling Dates and Times Properly in Postgres

Handling dates properly is delicate business and, thankfully, Postgres gives you many tools to help make sure you store date information correctly. But that only works if you know what's going on!

Striking Gold in My Archives

Digging through my archives of hundreds of videos, I found an oldy but goody - publishing it for you to enjoy!

The Easiest Postgres Experience You've Ever Seen

Web Assembly is enabling people to do some crazy stuff in the browser, including running a full PostgreSQL installation and Adobe Photoshop!

Five Things I Learned Building Bigmachine.io Using Nuxt and Firebase

I like to change my publishing site regularly - it's fun and it keeps me sharp. This iteration is with Nuxt and Firebase, and I learned a ton.

Developing A Potent Voice

Writers often talk about "finding their voice", but what does that even mean? There are ways to loosen the control your internal filters have on your ability to express yourself.

Fast and Simple Web Apps with Nitro

Nitro is an exciting web server created by the unjs team, who are also the people behind Nuxt. Nitro is a study in simplicity and a wonderful tool for your JS belt.

Hello PostgreSQL

In this production, a SQL Server DBA (Rob Sullivan) and a developer (Rob Conery) take a deep dive into PostGreSQL (v9.1) and are surprised by just how capable, intelligent and *fast* PostGreSQL is.

Get Involved!

In this feature-length production, Scott Hanselman and Rob Conery offer suggestions and advice on how you can get out there, and get involved. Blogging, Twitter, Github, StackOverflow, User Groups and Conferences: get out there!

Why Blogs Make Outstanding Books

Can a blog be turned into a book? Yes! But it can't be just any old blog - the writer has to have something to say and no fear of saying it... like Troy Hunt. Here's the story of how I turned his blog into a book.

Losing Yourself

The hardest thing anyone can do is break down their own mental constructs, realizing they're toxic and destroy relationships. It's part of the journey.

Just Paddle

I really think too much. I have a lot of fear in me that keeps me from doing things I love to do. It's unhealthy and also self-obsessive (there are 3 "I's" and 2 "me's" above). I really need to stop thinking and just... do...

Creating a Full Text Search Engine in PostgreSQL, 2022

Writing a full text index in PostgreSQL is an art form. You need to know what your users are looking so you can build the right index AND you need to understand how they write their search terms. Thankfully, Postgres is here to help.

The Fabulous Linked List

It’s always fun to study the basics, and in this video we dive into the linked list and how to create one from scratch. Sounds ridiculous, but it can rescue an interview!

What's the Difference Between Vue 2.0 and Vue 3.0?

The third version of a framework, library or tool generally sucks, at least in my experience. Will this be the case with Vue 3? Let’s find out!

What's Your Exit Plan?

Retirement is one thing, being where you want to be and doing what you want to do when your current job is finished in another thing entirely. What’s your exit strategy?

Importing a CSV Into PostgreSQL Like a Pro

Importing data into PostgreSQL can be time consuming and painful – unless you toss the GUI tools and use scripts.

Big O Notation

Understanding Big O has many real world benefits, aside from passing a technical interview. In this post I'll provide a cheat sheet and some real world examples.

What’s the Best Hashing Algorithm for Storing Passwords?

Most people will default to bcrypt when choosing a hashing algorithm for storing sensitive information - but why? Are there other choices? Indeed! In this video we'll take a look at scrypt, PBKDF2 and my favorite: argon2

Virtual, Computed Columns in PostgreSQL 12

PostgreSQL 12 introduced a feature I've long wished for: computed columns that are indexable and stored on disk! They're amazing and in this post I'll show you how they work and how things kind of go...

Mod and Remainder Are Not The Same

A remainder and a modulus look so very similar, but they are not the same thing and worse, are treated differently by different programming languages. Do you know how your language handles mod?

Simple Monthly Reports in PostgreSQL

Working with dates and series of dates is easy in PostgreSQL, especially using generate_series

It's Time To Get Over That Stored Procedure Aversion You Have

There is a lot of opinion about stored procedures out there that are just...