Fabien Coelho



Tags:   postgresql    postgres    performance    database design   
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’m French, born and raised in Paris over 50 years ago. I work in Fontainebleau and Paris, and live in the Centre Val de Loire region, along the Loire river.

Fabien Coelho

Fabien Coelho

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

I like playing the clarinet, and listening to music, especially jazz and klezmer music from Giora Feidman, David Krakauer and Yom. I like walking. I hate running.

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’m re-reading the Dune saga, which I read about 35 years ago. I like fantasy, especially Terry Pratchett Discworld novels. If you have not read any of them, give one a try!

Any favorite movie, or show?

I’ve watched Otto Preminger’s Laura at least a dozen times. Gene Tierney is incredible, the lights are great. Why do you need color when black-and-white is so beautiful? The story line has a great surprise in the middle of the movie, at least the first time you watch it… but I won’t tell. Also I like Ghibli studio animes, from Totoro to Chihiro.

What does your ideal weekend look like?

Eating a very good meal at a very good restaurant. Cooking my “crème au sirop d’érable” (Maple syrup cream), which is like a crème au caramel but with sirop d’érable instead of caramel, so the taste is softer and more subtle.

What’s still on your bucket list?

Too much for the little time I have available.

What is the best advice you ever got?

Do not always listen to advices!

When did you start using PostgreSQL, and why?

I probably started around 2002 for some web application, because I was really fed up with the MySQL way of doing and lacking things, such as missing an operator which is in the minimal set of relational operators or calling “database” something which is really a “schema”. Then I started teaching databases, and for that Postgres was an obvious choice because it is full featured, clean and close to the standard.

Do you remember which version of PostgreSQL you started with?

Probably 7.2 or 7.3. One of my first contributions was to improve error messages so that my students would get more help when typing broken SQL queries, which they sure do. Then I did PGXS to help compile extensions.

I have always been interested in computers, buying my first, a 1 KB memory Sinclair ZX81 with all my available pocket money when I was 12. I soon realised I needed the 16 KB external memory extension… I studied maths and physics and then attended an engineering school and specialized there in computer science.Then I proceeded to a PhD about compilation for distributed memory supercomputers and later I got an “HDR”, kind of a second PhD needed to become a professor in France. My research usually focuses on compilation and performance.

What other databases are you using? Which one is your favorite?

I often use SQLite for processing data with SQL. My favorite is still Postgres, obviously!

Postgres development is not in my job description. I try to help in my free time with pgbench so that it becomes a more useful tool for measuring postgres performance. I maintain two irritating buildfarm animals (named after jellyfish species) which try to compile postgres with bleeding edge versions of gcc and clang, so as to have early warnings of upcoming changes from there.

How do you contribute to PostgreSQL?

Mostly I do code reviews and code development, when I have free time.

Any contributions to PostgreSQL which do not involve writing code?

Reviewing code! Improving documentation!

What is your favorite PostgreSQL extension?

The ever useful pg_stat_statements. I like unit, which is quite fun to answer a question such as “How many teaspoons in a beer pint?” with a one liner (answer: SELECT unit_at('1 beerpint', 'teaspoon'); which gives 117.2).

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

I’m currently annoyed with Postgres performance when full page write is on, which means that under some circumstances the steady state performance is hit significantly at the beginning of a checkpoint. I do think it is fixable by spreading full page writes with some astute cleverness. I will probably not do it because it is a significant project which requires special and deep back-end skills.

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

Direct SQL body for functions and procedures, because it is much more elegant than a string, and I like programming language elegance.

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

I’d like better automatic configuration out of the box. For instance shared buffers could be relative to the total memory instead of a number of bytes, and depending on the expected declared usage (eg “dedicated server” vs “web server” vs …) the default value could be different.

Could you describe your PostgreSQL development toolbox?

I’m regressing in my programming habits: I use mostly git, vi, make from the command line. I have a Makefile I’m pretty happy with, which automatically rebases all my development branches when I pull from Postgres sources just by typing “make pure” (for pull-rebase), and automates many other development tasks.

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

Being good at C and English definitely helps.

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

As stated above, I’m very happy with my magical Makefile.

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

Anything in Paris. I submit talks from time to time.

Do you think Postgres has a high entry barrier?

I think that it is perceived as such. Some packaging (eg Ubuntu/Debian postgres debs distributed on apt.postgresql.org) do help significantly, but you still have to know how, and the setup differs between distributions and OSes.

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

Read the hackers list, do patch reviews.

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

Yes, I cannot see relational databases go away, because this model makes sense mathematically compared to the NoSQL jungle. I think it is important to build more diversity in the core team so that the project stays independent and can be seen as independent. Another threat is cloud vendors encapsulating postgres in their product, eg AWS RDS, without giving much back to the community.

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

Yes, definitely. Great features, great documentation, great everything.

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

I try to read the -hackers list, but there is a lot so I focus on my area of interest (measuring performance, language design, client-side applications).

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

I’m an Apache committer, I contributed to subversion and httpd in the past, but now it is mostly postgres and postgres-related projects.

Anything else you like to add?

Thanks for the interview!