Antonín Houska



Reading time: 10 minutes

Tags:   postgresql (133)   encryption (1)   pg_squeeze (1)   cybertec (4)   development (4)  
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 Antonín Houska, but Antonín sounds rather formal. English-speaking people (but not only those) usually call me Tony.

I live in the south of the central region of the Czech Republic. I’m a PostgreSQL developer and I work for the Cybertec company.

Antonín Houska

Antonín Houska

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

If free time is what remains for me (i.e. when the family does not need me), then it’s mostly sports. I got enthusiastic about it when I was already 40+. During the recent years I took some courses in swimming (including swimming in open water) and running techniques, while I still want to learn more about biking. The combination of these three sports - triathlon - is the next challenge. I’m trying to start with that this year.

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

A novel by Karel Poláček, whose original name is Hostinec u Kamenného stolu. Tavern with a Stone Table appears to be the English name, but I’m not sure it’s ever been translated. I’d recommend an even better book by this author, Muži v offsidu (Men in Offsides) - a story about football fans of two Prague clubs from the early 20th century. But again, I don’t know if a translation exists. I’m not even sure if these books can be translated to foreign languages without significant loss of quality. The author’s fine sense of the language is what makes his books so funny.

I also read the Bible quite often, but this is not a book reading of which I’ll ever consider completed.

What does your ideal weekend look like?

If something is ideal, it means that it’s better than something else, while both can be good. So a good weekend is enough for me :-)

A good weekend is when there’s no stress, no conflict etc. This year I especially like to spend time with my family in our garden. We just work there a little bit and then enjoy seeing how nature does its work.

What’s still on your bucket list?

I want to succeed in the ironman triathlon and (as a separate event) to run a marathon in 4 hours.

What is the best advice you ever got?

Besides technical topics, I don’t get advice very often, probably because I don’t ask for it. One example that I recall was an advice from my former boss. It was something like: “If you’re offered something, please think twice before you say that you don’t need it.”

Several years ago I heard this advice which was not addressed to me personally, yet it is very inspiring. In short, if the majority does something, it does not mean that I should do it too.

When did you start using PostgreSQL, and why?

I think it was in 2009 when I started to look into the source code, but I used it a few years earlier when playing with Enterprise JavaBeans.

In my previous job I was a DBA of some DB2 servers and I was always curious how databases work from the inside. Thus I naturally became interested in open source databases. And since PostgreSQL is declared to be the most advanced open source database, I focussed on it.

Do you remember which version of PostgreSQL you started with?

8.4, if I remember correctly.

I’ve studied electrical engineering, with focus on electrical machines (motors, generators, transformers). I had to use a computer for things like circuit and electromagnetic field modeling, but not really for programming. I think the study helps me with my current job indirectly as I had to study a lot of math, which is a good exercise in logical as well as abstract thinking.

More important for my current career is that I attended programming courses at high school. Pascal was the first language I learned. Besides that, I used to spend countless hours programming in the assembly language for the Z80 CPU.

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

Currently I only use PostgreSQL.

Several years ago I worked with my colleague Ants Aasma on a feature called Transparent Data Encryption (TDE). Currently it’s being offered by Cybertec as a fork of PostgreSQL and I’m in charge of merging the feature into new PostgreSQL versions, and maintaining it.

I’ve also implemented the pg_squeeze extension, which I also maintain and sometimes enhance a little bit.

How do you contribute to PostgreSQL?

I try to collaborate with the community on merging the TDE feature into the core.

In general, I think I spent a lot of time on patches which have not been explicitly rejected, but not merged either, so submitting patches is no longer the top priority for me.

Any contributions to PostgreSQL which do not involve writing code?

I review patches of other developers, especially when I have my own patches in the Commitfest.

If you talk about contributions to the community, then it might be worth mentioning that I was a member of the talk selection committee for the local PostgreSQL conference (p2d2.cz).

What is your favorite PostgreSQL extension?

I like the extensions that let the user look into the guts of the server. pageinspect for example.

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

Maybe “annoying” is too strong an expression, but I think it may be inconvenient for a user to see multiple extensions doing more or less the same thing. I think that the extension developers should try to collaborate instead of creating new projects. The user needs some confidence that a particular extension will be available for the future version of the PostgreSQL server, and that someone will be available to fix bugs. This is less likely to happen if the extension is developed by a single person. I’m not sure though this problem is specific to PostgreSQL.

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

It’s not easy to keep track of all the new features. If you mean release 15 (still beta while I’m writing this), I’ve noticed that the “pg_walinspect” extension was added. I also like the row/column filtering features of logical replication.

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

The encryption (TDE). The maintenance of a separate fork is not really an exciting work :-)

Could you describe your PostgreSQL development toolbox?

FreeBSD, GNU Emacs + ggtags, GNU Global, gcc/clang, git. I use bhyve to run GNU/Linux virtual machines, typically when I need to build RPM packages.

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

For users, it’s naturally the SQL language while developers should have some experience with the C language as well as the standard C library.

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

I haven’t studied git too systematically. I just keep in mind that a branch is the fundamental concept of git. When working on a feature that needs to be split into multiple diff files, I create one branch per diff and use a shell script to compare the “adjacent” branches and to generate the diffs. Other scripts take care of merging (both local and upstream) changes into the individual branches. Maybe there are better ways to approach this problem, but I’m rather conservative (which might be a synonym for lazy).

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

I visited PGConf.EU several times, the last time in 2015 in Vienna. Then I could not attend it for a few years due to “family reasons”, and then I realized that I actually don’t miss traveling. On the other hand, it’s good to meet people sometime. Maybe I’d have attended it last year if there was no covid-19 pandemic.

I also attended the local p2d2.cz conference while I lived in Prague. At this conference I even had talks, I think it happened twice. Eventually I concluded that I don’t have enough motivation to give talks often, and it’s hard to do it only occasionally. (The presentation skills need to be trained.)

Do you think PostgreSQL has a high entry barrier?

From the DBA perspective, I can only compare PostgreSQL to DB2, which I used in my previous job. I don’t think it’s more difficult to install PostgreSQL and to set-up a running instance than it is for DB2.

The users interact with the database primarily via the SQL language, so it should be similar to other DBMSs.

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

I think there are not many simple features left to be implemented. Thus it’s important to spend quite some time reading the existing code and try to understand it. A debugger might be useful if something is not easy to understand. Note that some parts of the code can be studied without detailed knowledge of the rest of the system, while other subsystems are “interwoven” with others rather tightly. For example, the query planner is a huge portion of the code which is hard to split into “independent” parts, so its study needs quite some patience.

When you want to start writing code, try to get involved into an existing project, rather than writing a lot of code alone.

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

I hear quite often from my colleagues about ongoing migrations from other DBMSs to PostgreSQL, and I have been involved in some projects of this kind myself. Therefore I conclude that the adoption of PostgreSQL is still making progress. I do not expect the new users to migrate from PostgreSQL to other products soon, if at all.

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

There may be special cases where PostgreSQL does not fit, but - as it’s the only DBMS I’m familiar with quite in detail - I’d always recommend at least to consider this one.

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

I’m subscribed to -hackers, but only read a very small subset of the messages I receive. No other lists.

What other places do you hang out?

I use Slack, but only for internal communication within the company (Cybertec).

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

Several years ago I was interested in the internals of the GNU Emacs editor and learned the elisp language. I even tried to implement a tool to parse, analyze and further process SQL queries (www.nongnu.org/pgqa), where the processing includes advanced formatting. Unfortunately I don’t have time to work on the project anymore.

Besides that, I used to spend some time reading the FreeBSD source code, in order to learn something about operating system internals. I think the developers of this OS pay much more attention to code formatting and comments (and also to the user documentation) than the developers of the Linux kernel, so it’s more appropriate for learning.

I’m not sure if it can be considered a contribution, but at some point I proposed removal of an unnecessary instruction from the boot code for the RISC-V architecture and the “patch” got merged. So the system should start faster now, by approximately 1 nanosecond. I’m just not sure if an ordinary user will appreciate that.

Related to the Open Source software is that, I’ve translated an inspiring essay on the history of copyright into the Czech language, in order to help this information find its way to more people.

Anything else you like to add?

These interviews remind me that it might be a good idea to attend some PostgreSQL conferences again. I’ll try to fix the problem. Thanks for the interview.