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 live outside of Orlando Florida with my spouse, two kids and our dog. I run my own software development and consulting company called Ruby Tree Software, Inc. Of my technology work, I probably spend ⅓ on Postgres consulting, ⅓ on contract software development and ⅓ on our own product’s software development.
How do you spend your free time? What are your hobbies?
I like taking walks with my family (and dog, of course). I also watch too many movies and play too many video games. Lastly, I play Dungeons & Dragons with my extended family.
Any Social Media channels of yours we should be aware of?
Last book you read? Or a book you want to recommend to readers?
I float between reading technical and business related books. The current book I am reading is Michael Hyatt’s “Free to Focus” which so far is one I would recommend to anyone. It emphasizes on focusing on what you are uniquely good at and automating or outsourcing those things either you don’t like doing or don’t do as well as someone else might.
Any favorite movie, or show?
I am a geek, so I enjoy the different movie franchises like Star Wars, Harry Potter, Marvel, etc. Although, I enjoy many other genres of movies as well. Probably my favorite movie is “The Matrix”. However, I keep watching a great family movie called “Instant Family”.
What does your ideal weekend look like?
- Publishing an episode of Scaling Postgres!
- Seeing extended family with meals
- Playing D&D
When did you start using PostgreSQL, and why?
I started my company in 2009 and we were building an online giving platform. We needed to decide what database to use. In the past, I had used Microsoft SQL Server and Oracle. My co-founder wanted to use Ruby on Rails as the application framework. Given the state of 2009, the open source options were MySQL or PostgreSQL. I evaluated both and liked the feature set of Postgres better so that is what we chose!
Do you remember which version of PostgreSQL you started with?
I had played around with various 8.x versions of Postgres on Linux as a hobby prior to 2009. But, for the company, I believe we started with either 8.3 or 8.4. However, I remember quickly moving on to the 9 series.
Have you studied at a university? If yes, was it related to computers? Did your study help you with your current job?
Even though I had worked with computers a lot while growing up, in college, I majored in Biology. After that, I went to a PhD program in Cell & Molecular Biology. However, I ended up running all the computers in the lab and enjoying that work more than the biology. Ultimately, I decided to leave my PhD program (I left with a Masters) and got a job in technology.
What other databases are you using? Which one is your favorite?
On which PostgreSQL-related projects are you currently working?
My Software as a Service application uses Postgres and all my database related consulting work involves Postgres.
How do you contribute to PostgreSQL?
I would have to say that this is my weekly show Scaling Postgres that curates the content produced by the community. Given its name, I tend to prefer performance related content. I don’t have time for much else at this point.
Why did you decide to create Scaling Postgres?
I was doing some Postgres consulting, but the company name was Ruby Tree Software. That does not necessarily say “come here for Postgres consulting!”. Plus, I wanted to start releasing some videos with Postgres content. This would give me a bit of marketing but also force me to keep up with all the improvements coming to Postgres.
Unfortunately, I did not have a lot of time. Early on I tried doing teaching videos & the Scaling Postgres episodes, but that was taking too much time. I decided to focus on curating the great content that was already being produced and present it in a “brief” 10 minute or so format each week. I may get back to more teaching videos but I don’t think that will be anytime soon.
Why did you decide to name it Scaling Postgres
Well, most of my consulting work involves Postgres and application performance. Therefore, I thought Scaling Postgres would be a great name.
Where do you find the content for “Scaling Postgres”?
In terms of the sources for Scaling Postgres, I check planet.postgresql.org and Postgres Weekly. I also have a list of sites that I have collected and check those for content weekly.
What is your favorite PostgreSQL extension?
pg_stat_statements. It is my go to for understanding all the statements in a system. I love being able to do an engagement with a client and have their database’s CPU utilization go from over 80% to less than 20% by optimizing the slowest queries of the database, one at a time.
What is the most annoying PostgreSQL thing you can think of? And any chance to fix it?
Probably that replication slots cannot be transferred to a promoted replica.
What is the feature you like most in the latest PostgreSQL version?
For PG15, the MERGE command, selective logical replication and zstd support are all great. However, for me, the feature I was waiting the most for landed in PG14. I had a fair number of partitioned tables and being able to reindex those indexes concurrently was awesome!
Adding to that, what feature/mechanism would you like to see in PostgreSQL? And why?
Being able to transfer replication slots to a promoted replica.
As a software developer, what is your opinion on ORMs?
When I am using an application framework, I like to go with the flow. If it uses an ORM, I use the ORM. I always know what the ORM is doing and break out of it if I need to. But, I want to go with the flow so when the next developer comes along they enter a familiar environment. Not a strange environment I implemented because I didn’t like the ORM. Basically, I use ORMs for 90% or more of my statements and bypass them when necessary.
Should PostgreSQL have a built-in connection pooler?
I think this makes a lot of sense. Right now, I use pgBouncer since it seems to be the goto connection pooler. However, it would be awesome if Postgres provided a multi-threaded one. Having said that, I think there are probably more important things to focus on.
Should PostgreSQL have built-in multi-master replication?
My inclination is no. There are a lot of compromises with doing that. If you need that, I would look towards another solution (ideally Postgres compatible).
What areas do you think PostgreSQL should focus on in the future?
While large, I see two interesting areas of growth. First, is expanding or redefining the concept of a “cluster”. It would be great for a cluster to mean one or more Postgres systems that are members of the “cluster”. And, you could connect to the cluster and your statements got routed appropriately. Other database systems have this concept and it can be similar to maybe some of what Citus is doing. Second, is exploring separating compute from storage. Most of the large hosting providers like Amazon and Google are doing this for their customized Postgres compatible solutions. It would be interesting to see the Postgres community to explore this. Personally, I think it would be great to scale compute and storage independently. I have some customers who have so much data, they cannot have as many replicas as they want since they have to duplicate the storage with each replica.
Which skills are a must have for a PostgreSQL developer/user?
Anyone using Postgres as their database must have at least a basic knowledge of SQL. Even if you are a developer where your ORM generates the SQL for you, you should get to know how it works. It can help you spot problems in your usage of the programming framework if you see unexpected SQL.
The second thing you should learn is psql. It lets you navigate and inspect all the objects in your database as well as execute statements of course.
Do you think PostgreSQL will be here for many years in the future?
I certainly think so. The community may not always exist the exact way it does today, but I think it will still continue to move forward.