Earlier this year we started a program ("Developer U") to help colleagues who show promise for PostgreSQL Development to become contributors. Because I’m a softie for people’s origin stories, I talked to several of the participants about their motivations, hopes, dreams, and patches.
I had the chance to talk to Manni. Manni spent his first 3 years at EDB writing microservices in Go. He was then encouraged to do more presenting at internal engineering meetings, and a year ago he joined the Solutions group where he writes blogs, records howto videos, and helps troubleshoot software.
A picture Manni took of himself using a modern Canon camera but with an adapted Canon lens manufactured in the 80s.
A bit of background
Manni grew up liking computers, but a combination of expense and lack of access had him put a pause on that while pursuing a degree in English Literature and a Masters of Library studies program. But some of the professors from the Computer Science department "crossed over" and taught Manni and his peers ICT. He took a Pascal course and fell back in love with computing.
Money for further education ran out, and Manni had to find a job. As it was just around the time the "World Wide Web" was taking off, he taught himself HTML and Perl and within a year could call himself a "Web Applications Developer". A few years (and a move to America) later, a colleague introduced him to Oracle. A few years after that, while looking for an RDBMS that was cheaper than Oracle, Manni found Postgres.
Manni's manager Alyssa Mazziotta is responsible for his participation in the Developer U program. He always assumed that he didn’t have the skills necessary to contribute to Postgres. But because he loves computers, he taught himself some x86 assembler and C in his spare time, and when it came to apply, Alyssa encouraged him to give it a shot.
Contributing to PostgreSQL
The Postgres project excites Manni in multiple ways. As someone who was trained to be a librarian, Manni jokes that he was destined to be drawn towards RDBMS: SQL, the relational data model, and ACID-compliance are fantastic ways of guaranteeing data correctness. "I love the idea that if I correctly constrain my data, months or years later I can ask questions about my data that I did not initially anticipate, and Postgres will be able to 1) give me an answer to my "ad hoc" question and 2) that answer will be correct."
Manni also mentions Postgres’ amazing community, best-in-class documentation, and a well-maintained codebase. "From my point of view, even though it took decades, Postgres was destined to become as popular as it is now."
Manni has been active in the Postgres community for a few years now. Back when he lived in Boston, he attended the Postgres User Group meetups organized by Tom Kincaid at EDB's offices in Burlington, Massachusetts. Ironically, he was hired during the pandemic and moved to Chicago, so he never visited the EDB's Burlington office as an employee. Now in Chicago, he frequently attends the Chicago Postgres User Group meetups, hosted by Henrietta Dombrovskaya.
It's not the first time he has contributed to open source. He’s proud of the few patches that got accepted into the pgx project, a library that lets Go talk to Postgres.
The thing Manni was most surprised about in contributing to Postgres is that one does not have to be a C expert to start contributing! He had only dabbled in C and assembler, but fortunately there is usually some "low hanging fruit" that can be picked up by newcomers like Manni.
"I have been plugging away at a function that will give users the SQL required to re-create an existing tablespace (mailing list)." Andrew Dunstan, Senior Principal Engineer at EDB, and the one running the Developer U program, is spearheading an initiative to have PostgreSQL functions that show the SQL required to create various objects in a current database or cluster. This is complimentary to the existing tools that are geared more towards dumping the SQL required to create everything all at once. Manni paired up with Nishant Sharma, who has been extremely helpful in getting him through some of the mechanics of the contribution process.
He's also been trying to pitch in reviewing a patch that should speed up data ingest into Postgres (mailing list), but where in certain edge cases shows slowdowns. He has tested various data load scenarios of various patches to add more context around the seemingly niche problem. But he also contributed a fix suggestion that has been picked up and improved by the patch authors.
What’s next?
As an end user of Postgres, Manni has been affected by "quality of life" issues of the software. He contributed to pgx because he loved using it to make Go talk to Postgres, and had ideas about how to move pgx forward for users like him. The Postgres patches he’s involved in are essentially quality-of-life enhancing as well. In addition, fellow Developer U participant Mark Wong has been teaching Manni about Linux perf tooling.
Interested in getting in touch? Manni is not really a social media person, but he does keep a blog at manniwood.com, and maintains a project to improve some ease-of-use stuff around pgx on GitHub: pgxtras.