John Naylor



Reading time: 7 minutes

Tags:   postgresql (165)   enterprisedb (5)   nomad (1)   committer (6)  
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 was born in Oklahoma, USA, but have been nomadic since 2017. During that time I’ve mostly lived in Southeast Asia, but in 2020-21 I lived in Barbados and now the Dominican Republic. The “thing that need not be named” slowed me down but didn’t stop me. I haven’t commuted to an office since 2011, and I’ve always had a fascination for foreign cultures, so it was natural that I’d end up doing this.

John Naylor

John Naylor

Any favorite places? Landmarks?

In 2015 I had the opportunity to visit a Christian children’s shelter in the hills of northeastern Burma. I have a friend in Singapore who’s been going there for many years, and whose church financially supports the shelter, and he invited me to go with him. It’s near the border with China and populated by rebels, and the Burmese government gave up trying to control this area back in the 80s. Technically, I wasn’t allowed to travel there. Possibly dangerous too, at the time, since 50km away another rebel group was at war with the government. There’s some opium farms around there – I think it’s in or near the Golden Triangle. Sometimes the farmers get hooked, and they put their children in the shelter until they get straight. Apparently I was the first white person they’d ever seen. No one spoke a word of English, either. That’s a long-winded way of saying: there are still amazing places in the world, but they can be difficult to get to.

For more mundane living, Chiang Mai and Koh Samui in Thailand are quite pleasant and I’ve spent many months in both places. The former has a bewildering number of Buddhist temples. Other nice areas to visit: Angkor Wat, Cambodia; Malacca, Penang, and Kuching, Malaysia; Borobudur, Indonesia.

How is the internet?

Not bad, for the most part. In Siargao, Philippines it was sometimes slow enough that “modern” web applications timed out frustratingly often when trying to authenticate. But almost everywhere I’ve been, you can watch YouTube with maybe the occasional pause, at least at lower resolutions. The ability to stream video across the globe is easier to come by than safe drinking water, it seems.

Where would you like to go that you haven’t already?

China and Russia.

Last book you read?

I tend to prefer older books. Those written before your parents were born is a good cutoff point, for the simple reason that contemporary works enforce your biases. The insight you get about what has and hasn’t changed about people is both entertaining and valuable in my view. The past is a vast, fascinating, and sadly under-explored territory. Did you know there are thousands of books written in Latin that have never been translated? Some of them are even archived on the internet! As for the last book I read, it was “Farewell My Lovely” by Raymond Chandler, an example of hard-boiled detective fiction from the 1930s and 40s.

When did you start using PostgreSQL, and why?

Like most things, I kind of fell into it. My university (Indiana University, Bloomington, back in the Bobby Knight days) offered “jump start” classes that were one-evening, three-hour introductions to using software of various kinds. I remember taking the ones for Photoshop, web design, and MS Excel and Access. The Access class was particularly fun. I think later I had heard of PostgreSQL in Slashdot comments, but the name was off-putting and didn’t seem like a thing you’d want running on your computer. I didn’t make the leap until I saw a talk by Selena Deckelmann at a Linux user group. A year or so later, my boss at the time had data analysis tools built around Access, which I believe at the time still had a limit of 1 million records per table. Or maybe it was a file size limit, not sure. Anyway, because we needed to exceed that limit, we used the ODBC connector to use Postgres for its planner, executor, and physical storage, but kept the existing interface in Access. This was 8.3 on Windows XP, by the way. Worked fine.

What did you study while at university?

My undergraduate degree was in linguistics, with minors in German and mathematics, but I subsequently studied biochemistry and have coauthor credit on two papers in molecular pharmacology.

What other databases have you used?

I have also used Netezza and SQL Server. I think the former is dead. SQL Server was pretty nice, if you didn’t mind doing everything the Microsoft way. It had partitioning, case- and accent-insensitive collations, and parallel query for quite a while before Postgres did, and we’re still playing catch up in some ways. I don’t use any other databases currently, but I try to keep somewhat current on what generates excitement in industry and academia.

This year mostly trying to speed up some low level operations that are more behind the scenes. There is still some more blood to be squeezed from that turnip. One that’s mostly finished is the effort to speed up UFT-8 validation. I also have a long-term ambition to replace the genetic query optimizer, and hope to get back to that later this year.

What are some annoying PostgreSQL things you can think of? And any chance to fix them?

This is a very good question, because one thing I sense in the community sometimes is a chip on the shoulder from playing second fiddle to MySQL for a number of years. There is a posture taken by some that PostgreSQL is the best thing since sliced bread, and everything else deserves scorn and ridicule. It hasn’t gone unnoticed and it’s a bit tiresome. If you’ve achieved success and feel confident about it, there is no need to act defensive and try to score ideological points. The reluctance of some to admit there are annoyances at all is itself an annoyance.

Then there’s the name. I submit it’s one of the worst names in (or out of) software. With adoption happening around the world, “post-grey [sequel]” seems to be an increasingly common way to interpret the spelling. I’m okay with this.

More technically (and more in spirit of the question asked), one annoyance I haven’t seen mentioned in so many words is the fact that Postgres has characterics of a “kernel”, but it doesn’t come out and say it. Remember some years ago people made pains to point out that Linux isn’t an operating system, it’s just a kernel, and you need others to provide a “distribution” using different package managers, GUI toolkits, etc. Likewise, if you have a busy mission-critical Postgres installation, the “kernel” is not enough, you need to add a backup and recovery manager, maybe a replication manager, a connection pooler, a monitoring plugin, etc. I don’t think it’s a bad thing, mind you, but the additional complexity does add risk and confusion. Installation, upgrades, authentication, and troubleshooting all have that much more wiggle room for things to go wrong. This could be improved by putting more functionality in core, but that’s a large amount of technical and political work over a long time, by people smarter than me.

Which skills are a must have for a PostgreSQL developer/user?

A resilient ego is helpful for all kinds of work where tiny mistakes have large consequences.

Do you use any git best practices, which makes working with PostgreSQL easier?

Worktrees have fundamentally changed how I work with git (tip o' the hat to Craig Ringer for the recommendation).

Do you think PostgreSQL has a high entry barrier?

Relational databases in general are highly sophisticated and unforgiving tools full of sharp edges, hidden traps, and historical cruft, but getting started with Postgres was not terribly difficult, if memory serves. I’ve heard Oracle is much harder to get started with, but I’ve never tried it.

What is your advice for people who want to start PostgreSQL developing - as in, contributing to the project. Where and how should they start?

The best place to start is by reviewing some patches in the Commit Fest. That is what the project needs, more than new development, since there is a shortage of reviews for patches already. It also gives you a feel for the development process.

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

Yes, many years, in fact for as long as we have the ability to manufacture electronic computational devices with storage. That might seem like a bold claim, but I don’t think it is.

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

I briefly pay attention whenever someone climbs down the mountain top and presents another C/C++ replacement, even though these efforts inevitably don’t go very far. I follow GNU Bison development and sometimes test new features since it’s an important dependency for Postgres.