Luca Ferrari



Reading time: 13 minutes

Tags:   postgresql (175)   italy (3)   books (1)   university (1)   archery (1)   pgtraining (1)  
Category:   interviews   
Written by: Andreas Scherbaum

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

I live in Italy, with my beautiful wife Emanuela, my great son Diego, our female cats, Sofia and Olivia, and our female dog Franzina. We live near the city of Modena, the land of sports cars like Ferrari and Maserati, and also the center of very good food and wine.

I started working with computers back when the Commodore 64 was an exploding success, and I was five years old. Some years later, I received an Intel 8088, which was running MS-DOS 5-something (if I remember correctly). Just to give some background information about my age!

I studied computer science at the University of Modena and Reggio Emilia, where I took my master degree on Friday 13th, December 2002. A few years later, I received my PhD in computer science from the same university. During my PhD I worked as a lecturer for several computer science related courses, none that included databases in any way. After that, I decided to leave the university world to become a freelancer and start doing consultancy, mainly as software developer and system administrator. This is also the time when I met PostgreSQL and my passion for it started growing. A few years later, probably because I was still interested in academic research, I joined Nipissing University as Adjunct Professor. Today, I count more than fifty papers, many of which are under the affiliation of one or the other university. I like teaching very much, therefore I also run a few computer science classes in high school. My current main job is as a software developer for the Municipality of Modena, mainly dealing with Java, PHP and Perl technologies.

I’m one of the co-founder of the Italian PostgreSQL Users’ Group (ITPUG), where I have had different roles including that of the president. I’ve also helped with the organization of the Italian PostgreSQL Day (namely PGDay.IT) from 2007 to 2016. Then, due to some clashes, I quit the user group, without stopping to spread the word about our beloved elephant.

Starting five years ago, I do professional training (both PostgreSQL and Perl). Moreover, I’ve authored the book “PostgreSQL 11 Server Side Programming” and co-authored the well known “Learn PostgreSQL” book, both published by Packt.

I am a member of the team of PgTraining, an italian PostgreSQL training and consultancy service.

Luca Ferrari

Luca Ferrari

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

I enjoy spending time with my family and friends. With the former I usually travel and enjoy good food, with the latter I enjoy beer and chatting the most.

Depending on the weather, I go biking, I like walking and staying in nature, even reading some (technical) books.

When I was young, I was quite good at archery, a sport that today I practice seldomly but that, curiously, my son is embracing. Archery is very fascinating, and makes you assume total control of yourself, both on the body and, most notably, the mind sides.

During the winter, or whenever I’m forced home, I do like watching movies and listening to rock music.

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

As a rule of thumb, I don’t like social networks and I believe they are evil and can absorb too much energy.

I have a blog, since 2008, because you know, ranting is too much fun! Despite the joke, I enjoy sharing whatever I learn, pretty much everything about the technologies I use, and that’s why I have a blog. My blog is available at fluca1978.github.io. I also have a Mastodon (Fosstodon) channel available at fosstodon.org/@fluca1978, but I never used Twitter (and recent happenings prove I was right!).

I have a LinkedIn account too, so you can find me at linkedin.com/in/fluca1978.

There is also my Instagram at instagram.com/fluca1978 where I publish non personal stuff, because privacy matters, and that is then republished on Facebook too. In any case, I’m a kind of “old school” guy: email is my favorite way of communicating with other people across the world.

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

I would like to have a book to recommend, but unluckily I don’t.

Today I read only technical books, and quite frankly I do suggest all the Michael W. Lucas books on sysadmins and Unix related topics: he is a very smart and nice guy, and his writings are really fun, educational, and well done.

Any favorite movie, or show?

Friends, the series; I do have a full watch once per year or so. It is probably the only television series I watched from the very beginning to the very end.

I also enjoy “The Big Bang Theory”.

Together with my son, I love to watch all the Bud Spencer & Terence Hill movies, which unluckily are not so appreciated here in Italy.

I also love and often re-watch the Matrix, with particular regard to the very first film.

I’m outside the currently available streaming platforms, and I’m not a fan of recent series.

What does your ideal weekend look like?

I like to travel with my family to see new cities and have fun together. We like to enjoy a good meal in a restaurant, drinking good wine and tasting new foods.

In summer, I like to spend time at the sea or in the local mountains, generally walking within the trees with Franzina.

Unfortunately, during the winter, the weather is not good enough to travel, so we often end up spending the time together with friends at home, playing some game or chatting. Usually, this results in my wife cooking a lot during the weekend, and she is damn good at it!

What’s still on your bucket list?

A lot of things actually: a trip to Japan, for instance, another few swimming with the dolphins, learning new things, and getting back to archery are the first things that come into my mind. Improving my life quality from a health perspective, and contributing more to the open source world are other objectives that I would like to achieve.

What is the best advice you ever got?

“Be positive, because it is better being positive and being wrong, than being negative and being right!” - This came from my dad.

“Things that are not there cannot break”, this comes from my first archery trainer, and believe it or not, it simplified my way through the university setting a “clear and calm” mindset.

When did you start using PostgreSQL, and why?

I started by accident, back in 2002, using PostgreSQL 7.2. There was a new software project that had to be written using Perl and PostgreSQL, and since I was one of the few who knew Perl, I was assigned to the project. At that time I did not know anything about PostgreSQL, I was only aware of it as an open source database. And this is how I met PostgreSQL.

I quickly fell in love with it: the documentation was clear and accurate, the system was performing quite well even with zero tuning, and everything I was expecting from a relation database was there. I decided to spend some more time digging into all its features and capabilities, and found it was a very good way to learn not only database stuff, but in general it improved my computer science skills in ways I was not expecting.

As already stated, I have a PhD in computer science from University of Modena and Reggio Emilia, and I worked as a lecturer for the local university and other institutes. I was also an Adjunct Professor at the Nipissing University.

The thing that makes me laugh, though, is that pretty much everything I use today and that pays my bills did not come from the university: Java, Perl, PHP, PostgreSQL are all technologies I learnt by myself. I don’t regret my university studies, but I think university should decrease the distance between the theory and the practice somehow.

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

I’m regularly using SQLite3 and Oracle: the former by choice, the latter due to other people’s choices. SQLite3 is my favorite, since it is compact and provides a good relational layer on top of files.

During the years I’ve tried to contribute to a few projects, most notably “pgenv”, a binary manager for PostgreSQL, and pgagroal, a fast connection pooler for our beloved database. I’ve also submitted some patches to pgBadger.

How do you contribute to PostgreSQL?

I don’t contribute to the core system. However I try to share as much as possible whatever I learn and know by means of blog posts, journal articles and free lectures.

What is your favorite PostgreSQL extension?

I don’t have one, but I’m used to adopting pg_stat_statements, pgaudit, pg_trgm pretty much everywhere.

Not counting as an extension, but as my favorite tool, is pgBackRest, an amazing and rock-solid backup tool.

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

After several years of using PostgreSQL, my mind has begun to think in the PostgreSQL way, so it is really hard for me to find an annoying feature. However, I can name something I miss: PL/PgSQL debugger. I know there is an extension for pgAdmin4, but I would love to have a step-by-step debugger built into psql too.

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

Latest release has been 15, and the feature that I like the most is the MERGE command. I don’t think it is a fundamental command, since there are other ways to achieve the same result, but having it simplifies a lot of the automation of certain tasks.

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

I would like to have a PL/PgSQL debugger available in psql.

I also dream about an ad-hoc configuration tool that can guide you at least through the main configuration parameters to reach an appropriate setup.

Should PostgreSQL have a built-in connection pooler?

No. PostgreSQL as a project must keep a clear goal: do one thing and do it at its best. Therefore PostgreSQL must be a rock-solid database and nothing more. One advantage of this mindset is that several other projects can provide the same feature in different ways, and connection poolers are an example. So I believe PostgreSQL is fine as it is, and the connection pooling should be delegated to a different component.

On the other hand, it is true that today’s workloads often require a connection pooler, therefore I could see a point in distributing a PostgreSQL instance with an already configured connection pooler in front of it, but this seems to me a more “packaging” or “containerization” related activity.

Should PostgreSQL have built-in multi-master replication?

Yes, and I think it will one day.

This feature will make PostgreSQL a very strong competitor in the enterprise level database arena.

Could you describe your PostgreSQL development toolbox?

I’m an old school guy, so I tend to use text mode tools as much as I can. Despite I’m a KDE user since version 1, my general development environment is quite boring: I use a few terminals (konsole), GNU Emacs as my editor of choice (and much more!) and psql as the client to PostgreSQL.

I also very often use Ansible and Sqitch to manage different PostgreSQL installations and deploy management.

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

I’m not a PostgreSQL developer, but I believe that in order to be a PostgreSQL developer you must understand the C programming language and the build toolchain (e.g., compilers, linkers, etc).

As a user, you have to know at least the basic concepts of relational databases like tables, views, triggers, functions, procedures, joins and transactions. But the beauty of PostgreSQL is that the documentation can really help you improve your specific and also general skills on such knowledge. Moreover, the community is very proactive and able to explain in a very clear way even the most complicated concepts.

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

No, but I have to emphasize that my experience has really improved since when I started using Sqitch, a tool that can help you manage database change deployment. The beauty of the Sqitch approach is that it is not tied to only PostgreSQL, so it can quickly become a DBA best friend, and you can put git (or whatever you like) on top of it to take absolute control over your deployments.

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

I participated, and also organized, a lot of Italian PGDays (namely, PGDay.IT), where I was also used to give talks, provide basic courses and laboratories.

With my PgTraining friends, I also organize some PostgreSQL Open Days (in italian) to present our beloved elephant, its capabilities, and the projects in the ecosystem.

I also participate in the local Linux Days, where I often speak about PostgreSQL.

Do you think PostgreSQL has a high entry barrier?

No, but I think that people are often expecting that PostgreSQL should have a lower entry barrier. That expectation, according to me, comes from other databases where the user tends to remain just a user for the rest of her time. In PostgreSQL, on the other hand, everyone is encouraged to learn something more, to tune a little better, and build up real knowledge, and this could scare the “rush user”.

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

The community is the right starting point! The mailing lists in particular are a huge resource for everyone interested in PostgreSQL, at any level. I always encourage people to ask questions in the mailing lists, and I teach them how to do it in the correct way, because it is amazing how quickly great answers are delivered.

More generally, the PostgreSQL community is very welcoming, open and polite. It is very simple to gain knowledge from the community, and get explanations and suggestions on how to make things working or doable.

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

Yes, after all it is still here after almost thirty years. Since PostgreSQL keeps improving release by release, and since it is also attracting newcomers, I believe PostgreSQL will be a fundamental part of our technologies for a long time in the future.

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

Absolutely yes, especially for business projects. With regard to “side” projects, well, if not PostgreSQL I would recommend SQLite3 if there are resource constraints and no need for a scalable networking-aware system. In general, I do recommend PostgreSQL for every project.

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

Not anymore. I do read quite regularly the -general and the -performance ones, that provide me good insights other than help. I follow a few other lists like -sql and -novice, even if I don’t read them on a regular basis.

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

I do some Perl and Raku related stuff, like for instance perlbrew and the Raku documentation. I tend to submit issues and patches in projects that I use when I have the time and the capabilities. I list some of my contributions here.

Anything else you like to add?

Yes, but it is very personal. In the last years my eyes suffered every kind of problem I can name, and in this scenario being able to contribute to open source and even to write books has been very challenging for me. On one hand, I am very proud of my achievements, that count double for me; on the other hand I would like to thank everyone who has helped me so far, including doctors and, by far, my wife and mom.