Önder Kalacı

Reading time: 6 minutes

Tags:   postgresql (175)   citus (4)   sharding (2)   microsoft (7)   extension (2)  
Category:   interviews   
Written by: Andreas Scherbaum

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

I’m originally from Turkey, and I’ve been living in the Netherlands with my wife for the last few years. I currently work at Microsoft and am involved in PostgreSQL related open-source projects.

Önder Kalacı

Önder Kalacı

What do you like most about Postgres?

I think the extensibility of Postgres is amazing. It has shaped the way I look at software development. In general, software is a leverage, and extensible software is almost two levels of leverage. If a complex software like Postgres can be extensible, why any other software cannot be extensible?

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

When you live in the Netherlands, cycling becomes a hobby that you gain almost automatically. I like cycling in the national parks and finding a silent spot to read books.

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

Last book you read? Or a book you want to recommend to readers?

The last book I read is Six easy pieces by Richard Feynman.

Nowadays I suggest my friends to read Gun, Germs & Steel by Jared Diamond. It discusses some interesting ideas on how the world order could have become what it is today.

Any favorite movie, or show?

I’m a fan of Seinfeld.

What does your ideal weekend look like?

I live in a small Dutch city, and on every Saturday at the historic center of the city a bazaar opens. I start my weekend by buying some cheese from there. If it is not raining, I mostly cycle around with my wife and we relax.

What’s still on your bucket list?

Visiting Australia and New Zealand.

When did you start using PostgreSQL, and why?

I started working for a company (called CitusData, acquired by Microsoft), where we have been building the Citus extension.

Do you remember which version of PostgreSQL you started with?

It was 9.5, I remember the excitement around the UPSERT support. And now we even have MERGE. Only took so many years.

I studied Computer engineering/science as B.Sc and M.sc. The latter mostly focused on verification of concurrent programs, which I think helps a lot with my current job.

I even started a PhD on a similar topic, but dropped out as it was too hard to focus on my job and the PhD at the same time.

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

I think 99% of my database usage is PostgreSQL/Citus. I sometimes experiment with other open source databases to see what kind of interesting features they have (and Postgres lacks).

I’m mainly working on the Citus extension, which is an open source extension that does sharding on multiple (or even single) Postgres server(s). From a user’s perspective it is still Postgres, but under the hood the data/queries are split across servers/shards.

Recently, I also decided to prioritize some core PostgreSQL development. As it is not easy to get involved in the PostgreSQL development, I want to learn the internals of the codebase one by one. Nowadays, I try to focus on logical replication. I try to review some patches as well as I proposed a patch to reduce the primary key requirement of performant logical replication to practically any btree index.

How do you contribute to PostgreSQL?

As I mentioned above, some patches and code-reviews are in progress.

Other than that, as an extension developer, I pay attention to run all of Citus’ (and other extensions we develop) own regression tests with the newest PostgreSQL versions. For example, in PostgreSQL 15 beta versions, I was able to report two bugs, which I consider a good way to contribute to PostgreSQL. ([1], [2])

Any contributions to PostgreSQL which do not involve writing code?

I think writing blog posts and attending/presenting at conferences are good ways to contribute to Postgres. I try to do both of these as much as I can.

What is your favorite PostgreSQL extension?

Ah, I’m biased, it is certainly Citus :) Putting that aside, my favorites are pg_stat_statements and auto_explain.

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

I think the NULLS [NOT] DISTINCT feature is pretty interesting and useful. Any NULL can be UNIQUE :)

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

I’d like Postgres to have some more control over the resource consumption, especially on memory consumption. We of course have work_mem but it is very hard to set the right value. I wish we had a way to limit the total amount of memory a backend can use. Out of memory errors are probably the most common error we hear from production users.

Could you describe your PostgreSQL development toolbox?

I use Eclipse for C/C++ and VIM for PostgreSQL development

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

In the past, I visited several PGConf.EU conferences, a few PGConf SV and once PGConf.NYC. I find it very exciting to attend Postgres conferences, learning about all the innovation coming in as well as fundamentals of Postgres.

I try to submit talks to PGConf EU every year, and presented on 2019 at Milan, Implementing your first Postgres extension: from coding to distribution.

Do you think PostgreSQL has a high entry barrier?

From a user’s perspective, I think nowadays it is pretty straightforward to use Postgres.

From PostgreSQL development perspective, yes it is definitely a high bar. Although considering its capabilities, PostgreSQL codebase can be considered a very well structured and easy to understand, it doesn’t change the fact that it is a pretty complex project with a huge code-base and so many interactions between modules. I think it is fair to say that it probably requires years of experience until someone can merge a non-trivial new feature into PostgreSQL.

But the good thing is the extensibility of Postgres. Even if you cannot get changes into Postgres, you can almost always build it as an extension.

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

One of my colleagues presented at PGConf EU 2022 on a similar topic. I can suggest having a look into his presentation Takeaways from the First 6 Months of Hacking on Postgres.

Are you reading the -hackers mailinglist? How often do you get involved?

I try to skim over the titles on the hackers mailing list everyday, and read at least a few of the interesting ones. I find it very informative to just read emails on various topics.

Though, it is hard to reply the emails. Even though I feel like I should be responding emails more often, it feels like I’m probably missing some context here and sending an email would probably distract the people involved. I try to send emails only when I have a relatively high confidence in the topic discussed.