Long time no see! More specifically, 2106 days. A lot has changed, so let’s catch up.
From academia to…
When I wrote that last blog post in April 2019, I had just moved to Berlin to start a new postdoctoral position. I was supposed to spend three years between Berlin and New York writing awesome software for molecular modeling, cancer pharmacology, and deep learning models.
I say “I was supposed to” because nobody expected a global pandemic to change everything in 2020. I was familiar with working from home, but I had not done it full-time for so long. It made me realize that those thoughts of “what if one day you were one of those digital nomads” were not as unfeasible as I once imagined. It’s true that “I can make a living with just a laptop” was nothing new, but understanding that I didn’t need to go to an office every day was.
In parallel, I began to notice that I was not doing as much research or science as I originally anticipated. I didn’t know it back then, but during my thesis defense one of the members in the panel said something along the lines of “this thesis tells me that you are more of an engineer than a scientist”. And were they right! I had written tons of Python code, set up CI pipelines for many projects, and even packaged software made by others. Articles and posters… not that many.
Much of that packaging work involved spending a lot of time in conda-forge repositories, issue trackers, and community calls. We eventually hired Quansight to help us with some packaging tasks and I discovered that it was possible to do “just the fun part of research” for a living. For me, the fun parts were mostly about engineering, it seemed. It was time to admit that I wanted to do that type of work full-time and not just to support other, “more important”, research tasks.
And then, in January 2021, I came across this tweet from Quansight:
Quansight is looking for a #conda packaging and infrastructure engineer. Core to this position is becoming (or being) a conda and @condaforge community member to help improve and maintain these #OpenSource ecosystems.
Was that my calling? Too early, sadly. I needed to finish my postdoc project first! Still, I submitted my application with the sole intention of getting my name out there. But… I was invited to an interview, and then another and then… I parted ways with academia and joined Quansight Labs in June 2021.
Six years of biotechnology and bioinformatics, and seven of computational chemistry and molecular modelling. In hindsight, the shift was clear, but it took me 13 years to accept that I wanted to do software engineering for a living.
… open-source software engineering
I joined Quansight Labs to contribute to the open-source in general and the conda ecosystem in particular. During these 3.5 years I have done some things that my 2019 self would not really believe. “Really? That’s so cool!”, I could imagine saying. Looking back, I think these are the most important wins for each year:
- I became part of the conda-forge core team in 2021.
- … and a conda steering council member in 2022.
- In collaboration with Anaconda, we brought the
mamba
solver as the new default toconda
in 2023. - Then, together with QuantStack, we launched the new conda-forge website in 2024.
A lot of conda, right? I hadn’t checked these numbers for a while, but one of the cool things of working almost exclusively on GitHub-hosted repositories is that you can query things like these:
- Total number of PRs I opened: 1425.
- … of which these many got merged: 1288 (90.3%).
- … in conda-forge, channel-mirrors and regro: 462 (35.8%).
- … in conda and conda-incubator: 571 (44.3%).
- The remaining 255 PRs are split between napari, Quansight, my profile, and others.
- … of which these many got merged: 1288 (90.3%).
Yep, a lot of conda indeed. Of course, I did not do that alone. Not even close. I’ve worked with amazing people throughout these years. They made me grow as a person, a professional and an open-source contributor.
When I was deciding whether to quit academia, one of the thoughts that kept coming to my head was that I didn’t want to depend on the generosity of review panels to plan my next three years. Also, I didn’t want to write papers or grant applications. Surprisingly, a good chunk of that is still present, yet in a different form. Not everything was code. I had to write (or contribute to) a few grant applications, support letters, documentation, tutorials, standards, specifications, statements of work, requirement documents…
Now what?
I’m still at Quansight. I’m still doing open-source work, still focused on packaging. I’m just writing a blog post because of Bluesky and a flu. Fluesky? Bluesky is like having the old Twitter back. I feel like posting about the things I’m doing for the conda ecosystem! And they have this cool username verification system, where you can simply reuse a domain name you control. After adding some DNS records, I used this .me
TLD to verify my Bluesky profile.
The Twitter debacle is also a reminder than the content you post on social networks might disappear at any point. I have lost or abandoned quite a few accounts already and none of the content I published there is accessible, easily or at all. Not that I want to read everything I posted at MSN Spaces, MySpace, Fotolog, Last.fm, Tuenti, Facebook, or Instagram, but I thought I would always have the opportunity to go back and reminisce.
A statically generated site is more resilient, right? To my surprise, I only had to resync the Netlify app in the Github repository to make it work again. Locally, the latest Hugo release did not work but, hey, it’s been five years. However, I grabbed the same Hugo version mentioned in the Netlify logs and… it worked! Lucky me that Hugo is distributed as a statically linked binary. v0.40
is so old it was not even published for Apple Silicon. Fortunately, the Intel binary works just fine thanks to Rosetta. Working daily with Python pipelines, my expectations were way more pessimistic…
Ah, and the flu. I’ve been under the weather for a few days and boredom made me indulge in some healthy nostalgia while I crafted a personal timeline of the most significant events in my life. It has been hard to find some concrete dates for many of them, which further triggered me to do this recap post. In the future, I want to be able to find me and information about me more easily. And I don’t want to depend on the financial viability of social networks (or their agendas) to do so.
Will I write more posts now? Maybe! There’s a chance I don’t. Who knows. At least I wrote this one.