David Christensen

Reading time: 8 minutes

Tags:   postgresql (170)   crunchy (7)   replication (3)   music (10)   kansascity (1)   powercouple (1)   automation (1)  
Category:   Interviews   
Interview conducted by: Andreas Scherbaum

PostgreSQL is the World’s most advanced Open Source Relational Database. The interview series “PostgreSQL Person of the Week” presents the people who make the project what it is today. Read all interviews here.

Please tell us about yourself, and where you are from.

I grew up in Kansas and live here with my wife, kids, and an indeterminate number of pets and foster animals in Lawrence, KS. I’m in a fairly small boat of people in the community who get to work with their spouse. My wife, Elizabeth Christensen, and I both work at Crunchy Data as a resident Postgres Power Couple™.

I currently work as an engineer developing the Crunchy Postgres product, which is an automated high availability Postgres deployment based on Ansible playbooks. This solution will build a high availability Postgres deployment with its many associated components like pgBackrest, Patroni, pgMonitor, PgBouncer, HAProxy, etc. I also do quite a bit of professional services at Crunchy Data working with some of our larger clients in consulting engagements. Additionally, I write blogs as I come across interesting topics, generally related to performance optimization or crazy ways to accomplish things in databases. I’m recently involved with the newly-formed Kansas City Postgres User Group.

Prior to working at Crunchy I was in full stack software development at End Point. I worked on quite a few different customer projects as well as many Postgres projects, working with Kubernetes, Ansible, nginx, Rails, Vue, and the Javascript frameworks du jour, along with the full suite of Postgres tools and infrastructure: Bucardo, Slony, PgBouncer, pgBackRest, and the like, doing optimizations and operations support for our clients, including on-site visits for consultations and training.

David Christensen

David Christensen

How do you spend your free time? What are your hobbies?

Free time? With that list above? (j/k…) I have a pretty large collection of guitars and I spend time playing music in some local bands; one is all original of a honky-tonk/comedy country act, and I play stand up bass occasionally with an Americana group. When not messing with guitar, I spend quite a bit of time restoring a classic first generation 1971 Monte Carlo. Sometimes I even get to drive it too.

Music Room

Music Room

Any Social Media channels of yours we should be aware of?

My Twitter handle is @pg_dwc, which I never use substantially. But if you want an occasional tweet regarding a new blog article or talk feel free to follow. :-) I’m also on LinkedIn.

What is the best advice you ever got?

The thing that stands out most is my grandfather telling me at about age 12 that all barriers were in your mind. Given that, I’ve developed a form of patience when it comes to learning or understanding things that has served me well to this day. In a knowledge field it really helps to know as much as possible, and be comfortable with applying that knowledge cross-domain, not letting “I don’t know” be a barrier, just transforming it to “I don’t know yet”.

How did you get into technology?

I have been developing software since I was very young. My family got its first Apple IIe computer when I was about 10 and I started my programming journey using Apple Basic. I began with very basic programs out of the 3-2-1 Contact magazine where they had program listings posted. I quickly started modifying them and writing new programs from scratch. When I was in 7th grade I wrote a graphics-based program for Kansas History Day. When I got to middle school and high school I progressed to learning and writing in C and Pascal, writing shareware and freeware for the Mac. I started learning how to program CGI and other nascent web technologies, learning Linux and various Unix systems along the way. (I am sure that the session where I couldn’t quit vi is running to this day.)

When did you start using PostgreSQL, and why?

My first experience with PostgreSQL was when setting up a web application for one of my first professional jobs. We were looking for a simple database to manage scoring for standardized testing in K-12 education. I evaluated PostgreSQL 6.5, alongside MySQL 3.23 and determined that PostgreSQL was too slow for my needs. But then, Eureka! I learned you could tune PostgreSQL for different performance. My initial dismissal ended up turning into pure infatuation and I was hooked ever since.

I have a BS in Mathematics. While not directly a computer science degree math definitely contributed to higher-level reasoning about code. Also, I am the resident homework helper at home and have had to use more Calculus than I ever thought I would.

How do you contribute to PostgreSQL?

I have contributed a number of patches to Postgres proper, including \conninfo in psql, enhancements to pg_waldump, and various bug fixes. I have been majorly involved in the Bucardo project, written a number of extensions and tools including pg_kaboom, a fault injection extension, and pgmin, a SQL minimizer, submitted bug fixes/features to various projects (pgbackrest, pgbouncer) etc. I am working on a patch series to add authenticated encryption/TDE to community Postgres.

What is your favorite PostgreSQL extension?

I have some other favorites, but I would say that pg_stat_statements is the most useful extension for day-to-day work when dealing with databases in a DBA role.

What is the most annoying PostgreSQL thing you can think of? And any chance to fix it?

I think data loading is an area that could be improved; don’t know that I would call it “annoying” at this point, but in-core solutions for this are fairly limited. I have used the pg_loader project and think that it definitely provides a big lift in this area, but would just like to make this part easier for an average user.

What is the feature you like most in the latest PostgreSQL version?

I’m excited about MERGE finally landing after a decade in the making. While I don’t know how much I will use it in a hands-on capacity, it is always interesting to see a complex piece of the SQL standard implemented, and see how the community works through the technical issues together. Since so much discussion is done in the open, you can really see the design ideas take form and be worked out over time.

Adding to that, what feature/mechanism would you like to see in PostgreSQL? And why?

I have often thought that improved logging dispatching/control would be very useful to enable selective message consumption for different reasons. Logs definitely target different consumers, so what is important to an app developer and what is important to an ops person are not the same thing. I’m also interested in auto-tuning and providing performance insights and suggestions to the user based on their specific workloads.

Could you describe your PostgreSQL development toolbox?

I am a die-hard Emacs fan. I use magit for version control, projectile for project browsing/building, and org-mode for personal planning/generic setup. I tend to use pgenv for spinning up local PostgreSQL instances of arbitrary versions. Mu4e for emails to/from pgsql-hackers.

Which PostgreSQL conferences do you visit? Do you submit talks?

I have mainly been to US-based conferences, speaking a lot on Bucardo or other replication topics. This year I spoke at PGConf NYC about what things you need to consider when running large databases, and enjoyed returning to the city after Covid. I also spoke at SCaLE 20x this year. Coming up, I will be going to PGCon, PgDay Chicago and finally making it across the pond at pgDay Paris.

Do you think PostgreSQL will be here for many years in the future?

Yes, this is definitely a project with staying power. I think the dedication to stability/maintainability first lets you depend on the code; we really get to take for granted the good development practices that lead to a remarkably stable product.

Would you recommend PostgreSQL for business, or for side projects?

The answer here is both! While Postgres is not necessarily the best tool for every job (gasp, grasps pearls) it scales quite well and has a low barrier to entry. The community tends to be very accessible and helpful, and there is deep experience available when it comes to making Postgres work for your workload.

Are you reading the -hackers mailinglist? Any other list?

I am subscribed to -hackers, but other than specific threads for patches that I’m working on I tend not to read anything more than the occasional discussion link from the commit logs. I’d love to have more of a reason to read and participate in discussions, but for now I just don’t have the time it would take to devote to full-time discussions there.

What other places do you hang out?

I am on the PostgreSQL IRC channel as crunchy_david and on the Postgres Slack channel as David Christensen.

Which other Open Source projects are you involved or interested in?

I am lightly involved in the community-maintained Ansible PostgreSQL modules.

Anything else?

Thanks so much for the interview. I always enjoy reading these.