Reading time: 7 minutes
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 Wisconsin near a circus museum. I have no skill at juggling, so joining them was not an option. Instead I became a programmer and wandered around the US (Raleigh, Portland, Austin) before finally settling down in New York City.
How do you spend your free time? What are your hobbies?
Much of my time is spent in the search of interesting food, so I’m living in the right place. After that, I like biking around the city, and bothering my friends to throw frisbee. I’m also a fairly avid wargamer of the hex-map variety, and I play the boardgame Diplomacy on webdiplomacy.net but I’m thinking of joining the virtual face-to-face games diplobn.com.
Any Social Media channels of yours we should be aware of?
Last book you read? Or a book you want to recommend to readers?
For non-fiction, “History On The Half-Shell” is about the rise and fall of oyster beds around NYC. “Junkyard Planet” is about the global recycling business.
For fiction, two of my favorites are ones I like because of their unusual point of view. “Bright Lights, Big City” is written in Second Person and “Timbuktu” is written in First Canine. But a more recent read is “Everyone Says That At The End of The World” by Owen Egerton.
Any favorite movie, or show?
What We Do In The Shadows, Good Omens, Archer, and Letterkenny have been mainstays through the pandemic.
What is the best advice you ever got?
In response to me expressing fears about starting my own business, a friend said: “Right. It’s scaring you. It’s not stopping you.” It was good advice, and the business (Corlogic Consulting) is still going 22 years later.
When did you start using PostgreSQL, and why?
A few college internships with IBM introduced me to DB/2 and DB/400. But after college I wasn’t working for IBM, so the PC market was a mix of Foxpro, DBase, MSAccess, each with their own minimal acknowledgement of SQL itself. MySQL became popular, but some of their design decisions made it clear that they just didn’t take data integrity seriously. I had heard of Postgres95, experimented with it in 1997, but had made no real attempt to use it until about 2000 or 2001. Larger clients wanted work in Sybase, SQLServer, or Oracle, so I followed the trends, but always kept an eye on whether a given workload could have been done with PostgreSQL.
Do you remember which version of PostgreSQL you started with?
I did a review of PostgreSQL 6.5 for 32bitsonline (a now defunct tech-zine) in 1999. I think I had looked it over in 1997 but made no real attempt at a project.
Have you studied at a university? If yes, was it related to computers? Did your study help you with your current job?
I have a degree in Applied Math, which is about 75% of a math degree, 75% of a comp sci degree, and 100% of a Vitamin D deficiency.
Obviously the computer science stuff formed my career, but the math has definitely given me the edge in a few cases, especially the subjects of cryptography, numerical analysis, fourier analysis, and image processing. The cap-stone class was a math models course, where you develop and present a mathematical model while the professor heckles you. Public speaking was easy for me after that.
What other databases are you using? Which one is your favorite?
It’s mostly PostgreSQL these days, but there’s a lot of porting stuff from SQLServer and Oracle, as well as uploading source-of-truth data from postgres to warehouse systems like Snowflake and BigQuery.
On which PostgreSQL-related projects are you currently working?
I’ve been tinkering with speeding up referential integrity checks for a few years now, but the work I did didn’t get far. Recently, it has picked up interest from several people who know the code better than I do, and so I’m hopeful that some real performance improvements can be ready for v14 and some others for v15.
How do you contribute to PostgreSQL?
I wrote a few extensions in the areas of parallelism, partitioning, and range functions. All of which have become obsolete when more polished functionality was added to core.
I’ve been a part of the work on psql, adding \gexec and the \if blocks, as well as some refactoring to make psql itself more maintainable.
My work in the core has been much more limited, often more as an organizer/cheerleader than actual coding.
Any contributions to PostgreSQL which do not involve writing code?
I did some work putting together the glossary in the documentation. My efforts were quickly lost in the avalanche of follow-up contributions, both to the glossary and documentation in general, which is satisfying to see.
What is your favorite PostgreSQL extension?
Oof, tough one. I think unaccent has saved me from tearing my hair out a few times when clients were doing fulltext searches but weren’t seeing Curaçao in the results, or they didn’t realize that there are several e-accent characters which looked the same in the font that the website was using… Aside from that, I’ve made some interesting projects by using and mis-using the foreign data wrappers.
What is the most annoying PostgreSQL thing you can think of? And any chance to fix it?
- JSONB should have been called document, so it wouldn’t look weird having xml/yaml/whatever output functions that use it. Shouldn’t be too hard, it’s just a new keyword mapped onto an existing type.
- There is no generate_series() for dates, only timestamps. It’s hard to fix because dates are auto-coerced into timestamps, so adding a date-only function would be a breaking change.
- No ability to add input parameters to a DO $$ $$ block. I heard a good reason why it would be hard to do that, but I’ve forgotten it.
What is the feature you like most in the latest PostgreSQL version?
Incremental sort. It makes a lot of indexes “good enough”.
Adding to that, what feature/mechanism would you like to see in PostgreSQL? And why?
Inline functions in queries, introduced in the WITH clause. Oracle already has this. I think it would make a lot of queries that do layered formulas, especially in financial reports, more self-documenting.
Could you describe your PostgreSQL development toolbox?
Ubuntu. Vim with a pretty minimal vimrc. Geany and meld for looking at patches. A really, really widescreen monitor.
Which skills are a must have for a PostgreSQL developer/user?
The greatest skill is the ability to resist the urge to believe that the bug is in “the database” rather than your own code. It’s almost always you.
Do you use any git best practices, which makes working with PostgreSQL easier?
None, other than trying to keep each commit to a single type of change, even if that means that a file is edited several times in a patch-set.
Which PostgreSQL conferences do you visit? Do you submit talks?
I’ve tried to visit most of them, especially when doing so brings me closer to good food. I almost always submit a talk.
The highlights have been PgConf ASIA in Tokyo (twice) and a conference at Kathmandu University (thanks, Oleg!) because afterward I got to hike on the Annapurna Circuit and take pictures of a very sunburnt me at 5816m. That same trip introduced me to Juju Dhau (a yogurt custard made from water buffalo milk), which is really tasty but I still can’t find a place to get in the states.
Do you think PostgreSQL has a high entry barrier?
Less so with the passage of time. Most of the toolkits that were exclusively mysql based now view postgresql as a peer technology, so that helps on the low end.
The biggest barrier is about SQL rather than PostgreSQL, in that you have to think about the larger problem rather that decomposing it into primitives.
Do you think PostgreSQL will be here for many years in the future?
Yes. Lots of technologies try to sidestep Postgres for a performance gain (Mongo, etc), but do so by sidestepping the hard work of ACID compliance. In time PostgreSQL just absorbs those features and moves on.
Would you recommend PostgreSQL for business, or for side projects?
For single user systems, I go with SQLite. Anything else it’s PostgreSQL.
Are you reading the -hackers mailinglist? Any other list?
What other places do you hang out?
The IRC a bit and reddit a bit.
Which other Open Source projects are you involved or interested in?
I help a bit with the instant messenger client Pidgin.