The Joys of the Craft

Today would have been the birthday of one of my computer heroes, Fred Brooks, who passed away a few years ago aged 91. Unfortunately, I didn’t have the luck to meet him in person (living on a different part of the planet definitely didn’t help). Still, I did meet him through his … | Continue reading


@ochagavia.nl | 11 days ago

Podcast episode about The Undercover Generalist (The Changelog)

Hello there! In case you felt inspired by my previous article on The Undercover Generalist, you’ll like to hear I was invited to The Changelog podcast to talk a bit more about it. Thanks to the random person who got my article on The Changelog’s radar in the first place! Below is … | Continue reading


@ochagavia.nl | 1 month ago

From full-stack development to systems programming

Back when I was pursuing my Computer Science degree, one of the big questions that kept me busy was: what am I going to do after I graduate? I felt like I could work on pretty much anything, thanks to the solid foundations I received at the university and to my real-world experie … | Continue reading


@ochagavia.nl | 1 month ago

10 years in Open Source

Today marks 10 years since my first pull request to the Rust compiler. Though I’m no open source legend, to me it’s an important date still. As I’ve mentioned in the past, my involvement in Rust was pivotal to my development as a software engineer, so I can’t let this day pass wi … | Continue reading


@ochagavia.nl | 1 month ago

A love letter to the Internet

Dear Internet, I’ve never written to you on this special day before, so I thought I’d give you a surprise this time! After all, we’ve been through a lot together, since our first encounter over a dial-up connection in the early two thousands. I was late to the party, I know, but … | Continue reading


@ochagavia.nl | 2 months ago

Chasing a bug in a SAT solver

Recently I spent two weeks collaborating with Prefix.dev to further develop resolvo, their SAT-based dependency solver. The main goal was to fix a nasty bug, where the solver unexpectedly panicked upon hitting code that was supposed to be unreachable. “That will make for a good w … | Continue reading


@ochagavia.nl | 2 months ago

The undercover generalist

Since starting out as an independent contractor, I’ve always felt a tension between being a generalist software engineer, yet having to market myself as a specialist. I’ve been wanting to write about it for years and even have kept some notes for that purpose. Recently I came acr … | Continue reading


@ochagavia.nl | 2 months ago

Azure sneakily hides cheaper option in it's UI

Recently a friend had to set up some cloud infrastructure on Azure. He was trying to create a VPN Gateway through the web UI, but couldn’t find the “Basic” tier (the cheapest on Azure). The only available options started at more than $100 / month!He later stumbled upon this suppo … | Continue reading


@ochagavia.nl | 3 months ago

RSS is dead, subscribe through email

This is a story of how a random person on the internet set me thinking and eventually triggered a change to this blog. It started last September, when someone suggested offering email subscriptions in addition to the existing RSS feed. The thing is… I was purposefully not offerin … | Continue reading


@ochagavia.nl | 3 months ago

Continous benchmarking for rustls

Last December, I completed a half-year project to develop a continuous benchmarking system for the popular rustls library. My work was financed by ISRG, the makers of Let’s Encrypt, who are interested in rustls as a memory safe alternative to OpenSSL. The thing is, replacing Open … | Continue reading


@ochagavia.nl | 3 months ago

Continuous benchmarking for rustls

Last December, I completed a half-year project to develop a continuous benchmarking system for the popular rustls library. My work was financed by ISRG, the makers of Let’s Encrypt, who are interested in rustls as a memory safe alternative to OpenSSL. The thing is, replacing Open … | Continue reading


@ochagavia.nl | 3 months ago

Someone interviewed me

A few months back I had an email exchange with Drew Capener, from filtra.io, who is interviewing professionals involved in the Rust community. We ended up having a nice chat, which he transcribed and posted online under the title “Contributing to Rust as a novice”. It even trigge … | Continue reading


@ochagavia.nl | 4 months ago

Becoming a contractor

How many roads must a programmer walk down before you call them a contractor? It’s been about three years since I went down this (bumpy) path, and I finally have the feeling that my contracting business is “bootstrapped”1. Here’s an account of my journey so far, hoping you find i … | Continue reading


@ochagavia.nl | 8 months ago

Low latency logging in Rust

Note: this blog post was not written by me. It was posted as a comment on r/rust by user matthieum, and was so well received that I thought it deserved to reach a broader audience. He gave me permission to repost it here. Everything below this paragraph has been taken verbatim fr … | Continue reading


@ochagavia.nl | 9 months ago

The magic of dependency resolution

Dependency resolution is something programmers usually take for granted. Be it cargo, npm, or whatever package manager you use, no one is actually surprised when this black-box figures out, all by itself, the specific set of packages that should be installed. To me, though, it is … | Continue reading


@ochagavia.nl | 10 months ago

On being paid to learn

Regular readers of my blog1 know I have been planning to write on my recent contract contributing to Quinn, the popular Rust implementation of the QUIC protocol. I originally intended to write a deep-dive into the QUIC features I implemented, but the blog post took a life of its … | Continue reading


@ochagavia.nl | 11 months ago

You are holding it wrong

Yesterday I had the fortune to attend the RustNL conference in Amsterdam. It was incredibly energizing and reminded me of my fascination for the language, when I started contributing back in 2014. On the train back home this post was born, as a way to put this fascination into wo … | Continue reading


@ochagavia.nl | 11 months ago

Hangman over QUIC

For the last two months I have been on a contract to enhance Quinn, the popular Rust implementation of the QUIC protocol. I hope to write one or two articles about my work at a later moment1, but today I want to offer you a partial (and runnable!) introduction to QUIC by implemen … | Continue reading


@ochagavia.nl | 12 months ago

The birth of a package manager

Since my time at the university, pursuing a Computer Science degree, I have always been fascinated by programming languages and the tooling around them: compilers, IDEs, package managers, etc. Eventually, that got me involved as a hobbyist in the development of the Rust compiler … | Continue reading


@ochagavia.nl | 1 year ago

Crafting container images without Dockerfiles

Last month I have been developing a Rust tool to create container images from Conda environments, without going through Docker. It was a wild trip down the rabbit hole of OCI images, so I thought I’d share part of the adventure here. Enjoy!But why? If you are used to building con … | Continue reading


@ochagavia.nl | 1 year ago

Chunking strings in Elixir: how difficult can it be?

This week I finished my contract for Seamly1, where I spent 7 months developing a SaaS messaging platform for customer service in Elixir. The project was incredibly interesting, so in our last conversation I asked if they would mind me sharing a “war story” with the world. They g … | Continue reading


@ochagavia.nl | 1 year ago

Implementing the MySQL server protocol for fun and profit

In December 2021, a company from San Francisco asked me to port a Rust library to Java. The task seemed simple, but it ended up requiring a from-scratch implementation of the MySQL protocol and even fixing a bug in the main Rust MySQL client! Below follows an account of the adven … | Continue reading


@ochagavia.nl | 1 year ago

How I got involved in the Rust community

In 2013 I started my Computer Science degree at Utrecht University (The Netherlands). Due to my previous experience with programming, and because I was genuinely interested in the course subjects, I aced my first year and even had time to investigate additional topics I found int … | Continue reading


@ochagavia.nl | 1 year ago

How I got into programming

When I try to recall what first triggered my interest in computers, there are many anecdotes that come to my mind. Back when I was 13 years old, a classmate showed me how to create visual programs using Word and its built-in visual editor for VBA. Though I never actually wrote an … | Continue reading


@ochagavia.nl | 1 year ago

An adventure with optimization, Rust and Z3

A while ago, a friend presented me an optimization problem that he stumbled upon in his day job. The problem seemed interesting, so I considered writing a program to solve it, though after a while I decided to let the occassion pass. The thing is, I don’t know that much about opt … | Continue reading


@ochagavia.nl | 4 years ago

Rocket - A Rust game running on WASM

Two weeks ago, Alex Crichton’s PR adding a target for WebAssembly to the Rust compiler was merged. There are many differences between this target and the Emscripten one, but the important one for me is that it doesn’t depend on external stuff like the Emscripten SDK (which IIRC u … | Continue reading


@ochagavia.nl | 6 years ago

RFC 1857 stabilizing Rust's drop order has been accepted!

If you have been following my previous posts on Rust’s drop order, you may want to know how it all ended. In january, I summarized my research in an RFC and submitted it for consideration of the Rust community. Today, after six months of discussion (with around 80 replies), it ha … | Continue reading


@ochagavia.nl | 6 years ago

Thoughts on changing Rust's drop order

There seems to be a wide consensus that the current (unspecified) drop order in Rust is weird and arbitrary. If you are not yet convinced, you should definitely take a look at a previous post exploring the current rules.While changing the drop order seems attractive, there are ma … | Continue reading


@ochagavia.nl | 7 years ago

Exploring Rust's unspecified drop order

After my previous post, I thought it would be interesting to run some experiments to determine the unspecified drop order within different constructs of Rust. After you read this, I guarantee you will understand why there is so much discussion about changing the current drop orde … | Continue reading


@ochagavia.nl | 7 years ago

Enforcing drop order in Rust

Some days ago I stumbled upon an old issue on Rust’s GitHub repository. While the title of the issue is “should struct fields and array elements be dropped in reverse declaration order (a la C++)”, the discussion also extends to whether the current drop order should be stabilized … | Continue reading


@ochagavia.nl | 7 years ago