viralinstruction

About

Hello, there! I'm Jakob. This blog is about programming, mostly, and sometimes biology.

How I got here

When studying in university to become a molecular biologist, I discovered my love for programming during a course in bioinformatics. I became obsessed, and one year later began a PhD in bioinformatics where I could combine my two loves: Genomics and coding.

Even though it was as late as 2016, Python had just replaced Perl as the lingua franca in bioinfo. I quickly developed a dislike for Perl and R, and dove headfirst into Python, wanting to learn as much as possible, and wanting to use Python for everything.

While Python was great and flexible, I spent the next year butting my head against the performance wall. At that time, I worked in metagenomics, a sub-field of bioinfo characterised by large datasets. When developing my main PhD project, Vamb, it quickly became clear that "Python for everything" just was not feasible. I really tried though - attempting to master Numpy, Numba, PyTorch and Cython, all in order to squeeze acceptable performance out of Python. Eventually, Vamb ended up using a combination of Numpy, PyTorch and Cython (yes, all three).

In my desperate search for good solutions, I stumbled upon Julia. Boy, could it run fast. After seeing my own clumsy Julia code easily beat my optimized Cython, I tried to give Julia a shot. Eventually, the weirdness wore off and its underlying design beauty began to shine through to me.

Much later, perhaps around early of 2020, I decided I needed to learn a statically compiled language to broaden my skills. Rust would complement Julia well, as the two languages had wildly different design goals. So I gave Rust a go, and had to quit in frustration. Tried again later, and failed again, but somehow it stuck the third time. Unlike Julia, I instantly liked Rust, even when I felt too dumb for it. It was just too well designed to not like.

Currently, I use all three languages on a daily basis at work, making scientific software.

Software

Besides this blog, I have made a few things, including:

Python

Rust

Julia