Hi, I'm Andrew.

I'm an experienced Python developer and database nerd on a mission to help every developer build a meaningful career.

How to Ride a Bike in the Suburbs or Die Trying

How to Ride a Bike in the Suburbs or Die Trying

Above all, you need grit. Biking in the suburbs means exposing yourself to co...

High Availability, Replication, and Failover Explained with Stuffed Animals

High Availability, Replication, and Failover Explained with Stuffed Animals

My 2-year-old daughter’s favorite stuffed animal, “Meow-Meow,” is a critical ...

What is Python's Default Hash Algorithm?

What is Python's Default Hash Algorithm?

A friend of mine wondered recently, What is Python’s default hash algorit...

Poetry Is My Favorite Python Dependency Manager

Poetry Is My Favorite Python Dependency Manager

A Story February 2021. Maintainers of the cryptography package release a new...

Rewriting an API to Use FastAPI: Benchmarks and Lessons Learned

Rewriting an API to Use FastAPI: Benchmarks and Lessons Learned

Last week at work, I rewrote an API to use FastAPI and as much async Python a...

Scaling Django with Postgres Read Replicas

Scaling Django with Postgres Read Replicas

Replication is a feature of PostgreSQL that you typically use to achieve high...

Building Implicit Interfaces in Python with Protocol Classes

Building Implicit Interfaces in Python with Protocol Classes

Python 3.8 shipped one of the coolest features I’ve seen in a recent Python v...

Why Does Python Have a len() Function?

Why Does Python Have a len() Function?

New Python users are often surprised to learn that you call a global function...

Recording Pro Audio and Video at Home with iPads and iPhones

Recording Pro Audio and Video at Home with iPads and iPhones

In January, I started a new job writing and producing technical education vid...