Charly Batista

Reading time: 9 minutes

Tags:   postgresql (175)   community (25)   percona (2)   conference (11)   education (7)   family (5)   opensource (23)   brazil (2)   china (2)  
Category:   interviews   
Written by: Andreas Scherbaum

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

I’m born in a small town in the Brazilian Amazon area. My parents moved to Brasilia (the capital city of Brazil) when I was around 12yo. I finished high school and went to college in Brasilia, but never really finished it. During the years I’ve moved through cities and companies, and ended up moving to China to work with Postgres around 7 years ago.

Charly Batista

Charly Batista

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

I love spending time with family and friends. I like sports, and as a good Brazilian football is one of them. I also like volleyball, cycling, and ping-pong. More recently I’ve enrolled in a Physics undergraduate program.

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

I do have a LinkedIn profile and a Twitter account but I rarely use Twitter. It would be easier to find and contact me on LinkedIn.

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

I’m revisiting some classics and one I really like from the Spanish writer Miguel de Cervantes is “Don Quixote”. I would agree it’s not the easiest reading because of the language but it’s an amazing book.

Any favorite movie, or show?

I have a young soul and really enjoy cartoon movies. One of my favorites is “Kung Fu Panda” from DreamWorks. I also like some classic movies, for example, “The Godfather”. Other movies that I always find myself watching from time to time are “Forrest Gump”, “The Last Samurai”, and “The Terminal”.

What does your ideal weekend look like?

Peaceful :D. Get the family and head to a quiet beach and spend the night in a camping tent, having a nice fresh fish, playing board games, and singing in the moonlight!

What’s still on your bucket list?

Make education attractive and exciting for kids. Countries like Brazil have a huge education deficit, this is caused by horrible political education programs, society’s neglect, ancient educational methods… While I cannot change the political programs, or the society, I can help change the method and help to reduce this debt, and I’m trying to spend time understanding what can be done, and how we can make education more appealing to the young ones. Not easy, a lot of failures on the way, some frustrations, but every time I see a child that is long absent coming back it renews my hope.

I also have some personal items on the list, for example, cross America by motorcycle. I’ve crossed South America but the goal is to go from Patagonia (South of Argentina) to Alaska.

A trip to Tibet. I’ve lived in China for almost 7 years but never had the opportunity to go to Tibet, and I want to “fix” this.

What is the best advice you ever got?

Never give up on your dreams. No matter how hard it may look like, how many people tell you it’s impossible, never give up!

When did you start using PostgreSQL, and why?

I started using it long ago, it was Postgres 7.4. We were designing a new system for governance and accountability, and wanted to use an open source database. We had a lot of difficulties because there was no native replication, we tried it with Slony but it didn’t really work for our project. After some time working with other technologies I returned to Postgres on version 8.3 to help another company to design their tax system, and that one was the first time I got it working on production.

Do you remember which version of PostgreSQL you started with?

Yes. First one was 7.4 but it never got to production. The first one I got working in production was Postgres 8.3.

I went to university but never finished my undergraduate degree. First time was Electrical Engineering, I then had to move to another city because of work and applied for Physics. None of them really helped me with my previous or current job.

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

Currently I mostly use Postgres but I’ve used to work with Oracle, DB2, MS-SQL Server and MySQL. My favorite one is Postgres.

I haven’t been involved professionally in Postgres projects for some time, but I’m working on a pet project to experiment, a Postgres Proxy to experiment Linux io_uring facility and eBPF. Hope have some code ready by the end of the year.

How do you contribute to PostgreSQL?

Mostly education.

  • Trainings, including private and public institutions, paid and pro bono trainings;
  • Posts on blogs, like the ones on Percona’s blog;
  • Conferences like PGConf.NYC, PGConf UK, PGConf Brazil, Postgres Ibiza, Percona Live;
  • Evangelization and advocation using the few social medias I do interact and discussion groups, meetups in public and private universities to teach and promote the usage of Open Source. The same in government entities, specially Brazilian government, advocating the use of Open Source and Postgres;
  • Some bug fixes to surrounding projects like pgTap;
  • Help with translations, specially for material used in the tutorials and trainings.

What is your favorite PostgreSQL extension?

There are many great extensions out there but I really love the pageinspect, and the reason is because I am very curious about how things work, and the first time I was able to get some digestible information about the Postgres page organization, how the data is organized, the bit flags, etc, without having to go to the documentation or the source code was great, and since them I got to love this extension. It’s not an extension that I would use daily, but is my favorite one :D

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

There are few things in Postgres that really annoy me but nothing compared to the 4bytes transaction ID.

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

I really like the improvements on partitioning, like being able to detach a partition in a non-blocking manner. We have some databases that have multi-terabyte tables with data that can be either pruned or detached and sent to a cold storage, and the ability to detach a partition of hundreds of gigabytes without blocking operations is fantastic.

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

One very debatable feature I miss is “index hint”. I always see people talking about misusage, changing params like costs, etc. But sometimes we need to do some black magic to fix something that would be easily fixable with a hint, and regarding misuse, as someone already said, just because someone might misuse a tool isn’t a reason for not creating it.

Could you describe your PostgreSQL development toolbox?

My environment is rather simple. I use Fedora Linux on my desktop, vim and vscode, and sometimes emacs for code editing, usually gcc to compile to my targets, gdb with some python scripts to make life easier.

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

Curiosity, courage, and discipline. Be curious to dig into the code, setups. Never be afraid to break something (I mean in development… for production be cautious!). Always have backup from the last working version, so you can rollback any breaking change, and document your steps!

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

Here is an area where I really need to improve, but I like to follow the “commit small changes and only the related work” with “meaningful and descriptive commit messages” to help me track the changes and understand what I’ve done.

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

  • PGConf Brazil
  • Percona Live
  • PGConf NYC
  • Silicon Valley

This year I’ve also submitted to PostgreSQL Conference Europe. I hope my talk gets approved :D

Do you think PostgreSQL has a high entry barrier?

I personally don’t think so, but I’ve heard people say otherwise, and I think experience may vary. I felt very welcomed when I joined the community in Brazil. I got a lot of help and made good friends, but there are trolls everywhere and the Postgres community isn’t an exception. So, if you out there find one on the way, take a deep breath, ignore it, and move on, this community is full of amazing people willing to help!

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

Reading the documentation. One can find the steps to start debugging and playing with the code in the documentation. Setup a dev environment, compile the code with the debug symbols, spin up a server, create one table with few rows, connect to the Postgres using psql, find the process PID, attach gdb to that process, add a breakpoint on “exec_simple_query” and follow the execution. It will give a good start. Then go to the list of fixed issues, find an easy bug and try to fix it by yourself, then compare with the solution created by the community, it will give you some understanding and also confidence to start your way.

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

I believe so!

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

I recommend it for both business and side projects. It’s reliable, mature, and highly efficient!

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

I do. Not as often as I would like to but I always check it. I also read some Brazilian and Chinese lists.

What other places do you hang out?

I’m really bad on social media, I still prefer the “real face-to-face” interaction. I do attend some Telegram lists, the PG-JDBC list, and a few other lists, but sometimes I just forget to open the app and I go offline for weeks. Then I get a ping on my mobile or email from someone asking if I’m still around and I remember those. I know, too bad, but it’s hard to change old habits :-(

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

I’m interested in opensource databases like MySQL, and got involved with it when started working at Percona. We usually take it to its limit there and I could contribute with some bug reports to the official MySQL project and also to Percona Server for MySQL.

I’m also interested in proxies and poolers like pgBouncer, Pgpool, and others. I’ve spent some time in the last year to understand the pooling mechanism of them, how they interact with the network, the IO multiplexing, etc, so can make things a bit more efficient.

I’m also interested in debug, trace and test facilities for databases like pgTAP. I haven’t used it for some time as I’m not in the “field” anymore but I used to have my functions tested when working as DBA. I used to report bug and eventually help fixing one or another back when I as an active DBA, tools like pgTAP can save your day!