Oleksandr Shulgin



Reading time: 7 minutes

Tags:   postgresql (149)   ukraine (4)   sql (7)   turbopascal (1)  
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.

My name is Oleksandr. It is the same as “Alexander”, but in the Ukrainian spelling, so you’re right if you guessed that I originally come from Ukraine.

I was born in its northernmost big city of Chernihiv (back then, still part of the USSR member republic). Before I was 2 y.o., due to the Chernobyl disaster of 1986, our family moved to the country’s southernmost part, which is the Crimean peninsula. This is where I grew up and later got a family of my own, and this is where both of our kids were born. The history repeats itself in a sense, as at the end of 2015, fleeing from the developing war against Ukraine, and before our younger son was 3 y.o., we moved to Berlin, Germany, where we have been living since then.

Oleksandr Shulgin

Oleksandr Shulgin

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

I really enjoy hiking, which we used to do very often as the mountains were quite close to where we lived before. These days such an option is slightly less available, but I’m often using the opportunity to just walk long distances in the good weather — Berlin offers a lot of green areas that are quite enjoyable in this regard.

Another one is astronomy. I bought myself a telescope as a Christmas present a few years ago and was enjoying the experience for quite a while. Now I just need to find a good spot for using it in the new neighborhood we moved to recently. ;-)

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

Nothing significant to share here: I’m not posting anything regularly and rather trying to reduce my info consumption using these media to the minimum, which is challenging enough in itself.

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

Cryptonomicon by Neal Stephenson. It offers an impressive account of the utmost importance of cryptographical effort in the, once again actual military context.

What does your ideal weekend look like?

Spending time with the family, preferably outside, playing table tennis or football, visiting a local cafe, etc.

What’s still on your bucket list?

A lot of things! But world peace is the top priority. I’ve no idea how we can get there exactly, but that doesn’t mean it isn’t worth trying.

What is the best advice you ever got?

“Do not assume you (can) know what others are thinking.” — from myself

When did you start using PostgreSQL, and why?

I asked a friend (who happened to be a PostgreSQL hacker) if I should choose MySQL or PostgreSQL for my hobby website project back in 2010. ;-)

A few months later I quit my first job, which was focused mostly on MS Windows desktop programming, and switched to something else completely: database programming on Un*x-like systems. I was interested in the latter for quite a while back then and used every opportunity to work with GNU/Linux in my free time.

Do you remember which version of PostgreSQL you started with?

Anything between 8.2 and 9.0. As my new job was also closely related to consulting, we were dealing with a lot of different versions at the same time.

I have a master’s degree in mathematics from our local top university. We did have a standard programming course, but at that time I already learned much more from fiddling with our home PC while in high school. Together with my older brother we would spend countless hours making silly video games for MS-DOS. These were the good old days when “640 KB of RAM was enough for everyone,” but we were clearly pushing the limits of Turbo Pascal…

Sometimes I wonder how we managed to make anything work in the end, given our enormous ambitions and all the limitations of the tools and of the system itself. Funnily enough, Turbo Pascal’s help system was our main source for learning technical English, which came really handy a few years later.

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

At my current job we are also running some Apache Cassandra installations, which may be regarded as a database of some sort. It offers some nice features, but the complexity of managing it is sometimes just too high, compared to the more typical databases.

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

The SQL standard itself! It has some really good parts to it, and some really annoying parts. Not sure if the ones outweigh the others. ;-)

The SQL syntax is well suited for humans to read and write, but much less so when it comes to computers having to write the queries. The server accepts a query in SQL, transforms it to some internal structure and works with that structure to fulfill the query, but it doesn’t expose that structure’s language to the client: the only interface remains “plain text” SQL. That often forces the client applications to build SQL statements “by hand”, which proves to be cumbersome and open to security bugs, or to embrace an ORM, which may increase the application’s complexity dramatically.

One way or the other — the application code querying the database ends up written in some sort of a structured query language, but it’s different from one programming language to another, from one framework to another, or from one application to another. Similar to Greenspun’s tenth rule, one can argue that every sufficiently complicated program that talks to a database contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of virtually any ORM library. SQL is good for ad-hoc queries by a person, but applications could benefit a lot from a standard, portable way to build queries.

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

The standard-conformant MERGE statement. It is extremely powerful in that it allows the users to concisely express complex INSERT/UPDATE and even DELETE operations in a single SQL statement‌ — something that was not possible with the existing “upsert” command (INSERT … ON CONFLICT UPDATE).

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

General query progress reporting could be a really big deal. There is steady, eh… progress in this regard in the recent versions, mostly focused on the utility commands, but the general SELECT progress is not yet in sight. I did an attempt to solve it some 7 years ago, but the inevitable performance penalty was always a problem without an adequate answer. Now I’m thinking that maybe such a general progress tracking, when implemented, could be enabled by default for the interactive queries only (that is, when running them from psql)?..

Could you describe your PostgreSQL development toolbox?

Emacs (plus magit, plus cscope) has everything one can wish for in this regard, I believe. I was never looking for anything more than that. ;-)

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

For both — the patience to read and listen, and the openness to learn something new.

Do you think PostgreSQL has a high entry barrier?

Given you possess the “must have” skills from the previous answer — not really. PostgreSQL’s documentation is comprehensive, and where it is lacking something, there are books on top.

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

Subscribe to the mailing lists and try to read and research as much as you can. Don’t be afraid to ask a question of your own.

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

Hell, yeah, I do! Thanks to the Global Development model, the future of PostgreSQL is secured for good, I believe.

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

Both, actually. I’ve witnessed quite a few large-scale PostgreSQL deployments working like a charm. At the same time, anyone can just run a database using, e.g. docker, in mere seconds, or instantly start using any of the cloud-based managed PostgreSQL solutions.

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

I don’t know if that’s interesting to anyone else, but I got involved in the “Free Heroes of Might and Magic II” project about a year ago, where so far I’m contributing with tricky UI fixes and translations.

Anything else you like to add?

Thank you for the interview opportunity — I had quite a bit of fun answering the questions! I hope the readers will not be too bored reading all that. ;-)