<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog on Adolfo Ochagavía</title>
    <link>https://ochagavia.nl/blog/</link>
    <description>Recent content in Blog on Adolfo Ochagavía</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 02 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://ochagavia.nl/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>A container is just a process</title>
      <link>https://ochagavia.nl/blog/a-container-is-just-a-process/</link>
      <pubDate>Fri, 02 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/a-container-is-just-a-process/</guid>
      <description>If you are a regular reader of this blog, you know I&amp;rsquo;ve been hacking on container technology for a while now. A common misconception you see in the wild is that people conflate containers and virtual machines, thinking they are equivalent. This blog post illustrates how containerized applications are actually plain processes that run natively on your Linux machine1.&#xA;A minimal container image Let&amp;rsquo;s create a tiny Go program that listens for HTTP requests and serves the text &amp;ldquo;Hello world&amp;rdquo; to all visitors:</description>
    </item>
    <item>
      <title>Let&#39;s build a compressor from scratch</title>
      <link>https://ochagavia.nl/blog/lets-build-a-compressor-from-scratch/</link>
      <pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/lets-build-a-compressor-from-scratch/</guid>
      <description>Compression is one of those wonderful things we have grown accustomed to in the computer world. You wave a magic wand and —poof!— a file suddenly shrinks to a fraction of its size! You wave the wand again and —pop!— the original file is restored down to the last bit. How can this possibly work? Let&amp;rsquo;s find out!&#xA;Compression 101 At a high level, compression is about rewriting data so that it conveys the same information in fewer bytes.</description>
    </item>
    <item>
      <title>That time when I failed the Microsoft interview</title>
      <link>https://ochagavia.nl/blog/that-time-when-i-failed-the-microsoft-interview/</link>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/that-time-when-i-failed-the-microsoft-interview/</guid>
      <description>The year was 2015, halfway through my Computer Science bachelor&amp;rsquo;s degree. I had spent a few months contributing to open source and my confidence levels were high, so I thought: why not aim for a summer internship at Microsoft?&#xA;Microsoft, of all places, might sound like a weird company to target in 2026. Back then, however, they were cool (in my book at least). I was impressed by their work on Typescript, and also by their open source rewrite of the C# compiler.</description>
    </item>
    <item>
      <title>Fully in-browser container builds</title>
      <link>https://ochagavia.nl/blog/fully-in-browser-container-builds/</link>
      <pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/fully-in-browser-container-builds/</guid>
      <description>Containers are fun. The ecosystem is incredibly open, with the internals right there for anyone to explore. Once you wrap your head around the specifications, you unlock the power to build custom tools and may even discover unexpected use cases1. Speaking of &amp;ldquo;unexpected use cases&amp;rdquo;, today I have a demo to share: a web application that builds containers right in your browser, relying only on client-side code.&#xA;Try it out Seeing is believing, so why don&amp;rsquo;t you head to the demo and build a container?</description>
    </item>
    <item>
      <title>A real-world case of property-based verification</title>
      <link>https://ochagavia.nl/blog/a-real-world-case-of-property-based-verification/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/a-real-world-case-of-property-based-verification/</guid>
      <description>It is not every day that you get paid to do nice computer-sciency stuff. One of those opportunities arose about a year ago, while I was working towards a release of what is now dipt-quic-workbench (a.k.a. the workbench). Yep, the name is ugly as sin, but the project is incredibly cool! It lets you simulate QUIC traffic in an arbitrary IP network, which you define in a JSON file.&#xA;The main use case for this tool is research.</description>
    </item>
    <item>
      <title>From WSL to bare-metal Linux</title>
      <link>https://ochagavia.nl/blog/from-wsl-to-bare-metal-linux/</link>
      <pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/from-wsl-to-bare-metal-linux/</guid>
      <description>I&amp;rsquo;ve been a happy Windows user for most of my life, but last year I grew tired of the split between Windows proper and the WSL. It started getting in the way and, in the spirit of fixing my tools, I thought to myself: maybe the time is ripe to make the switch and commit to a full Linux system.&#xA;The idea was attractive, but I wanted to be careful. Having a machine that Just Works™ is important to me, and I feared a Linux setup could lead down the path of constant tinkering.</description>
    </item>
    <item>
      <title>Fix your tools</title>
      <link>https://ochagavia.nl/blog/fix-your-tools/</link>
      <pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/fix-your-tools/</guid>
      <description>Last week I had to diagnose a bug in an open source library I maintain. The issue was gnarly enough that I couldn&amp;rsquo;t find it right away, but then I thought: if I set a breakpoint here and fire up the debugger, I will likely find the root cause very soon&amp;hellip; and then proceed to mercilessly destroy it!&#xA;So I rolled up my sleeves, set the breakpoint, fired up the debugger, and&amp;hellip; saw the program run to completion without interruptions whatsoever.</description>
    </item>
    <item>
      <title>Towards interplanetary QUIC traffic</title>
      <link>https://ochagavia.nl/blog/towards-interplanetary-quic-traffic/</link>
      <pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/towards-interplanetary-quic-traffic/</guid>
      <description>Have you ever asked yourself which protocols get used when downloading pictures from the Perseverance Mars rover to Earth? I hadn&amp;rsquo;t thought about that either, until I came across an intriguing message on the internet, back in April 2024:&#xA;I&amp;rsquo;m looking for someone knowledgeable of quic/quinn to help us out for our deep space IP project. Would be of part-time consulting. Please dm me if interested.&#xA;The message itself is quite short and somewhat jargon-y, so it took me a few readings to fully realize what the project was about:</description>
    </item>
    <item>
      <title>Configuration files are user interfaces</title>
      <link>https://ochagavia.nl/blog/configuration-files-are-user-interfaces/</link>
      <pubDate>Thu, 18 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/configuration-files-are-user-interfaces/</guid>
      <description>We have all been there. Your software keeps growing and you feel the need to make it customizable. It is too soon for a full-blown UI with all the bells and whistles, so your pragmatic instinct suggests a text-based configuration file. Yes, that&amp;rsquo;s exactly it!&#xA;You rejoice knowing the software&amp;rsquo;s configuration will be trivial to version control. Your pragmatic instinct is satisfied as well; the door remains open to creating a proper UI later, since it would be merely a graphical view of your configuration&amp;rsquo;s structured data.</description>
    </item>
    <item>
      <title>Tic-tac-toe meets Lean 4</title>
      <link>https://ochagavia.nl/blog/tic-tac-toe-meets-lean-4/</link>
      <pubDate>Thu, 28 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/tic-tac-toe-meets-lean-4/</guid>
      <description>This week I reached a milestone in my most useless side project so far. I finished writing a tic-tac-toe game in Lean 4, along with proofs to guarantee that the game behaves correctly! It &amp;ldquo;only&amp;rdquo; took me 20 hours, 1000 lines of code and endless suffering&amp;hellip; Totally worth it, as you might expect.&#xA;Chances are you haven&amp;rsquo;t heard about Lean before, so I&amp;rsquo;ll share more details below. But first, let&amp;rsquo;s have an overview of this article&amp;rsquo;s contents, since it ended up quite long:</description>
    </item>
    <item>
      <title>The high-level OS challenge</title>
      <link>https://ochagavia.nl/blog/the-high-level-os-challenge/</link>
      <pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/the-high-level-os-challenge/</guid>
      <description>Since I got into programming, I&amp;rsquo;ve regularly seen operating-systems tutorials and implementation guides pass by. They always leave a lingering desire behind them, an echo of the well-known siren song: &amp;ldquo;when are you going to create your toy operating system?&amp;rdquo; Inevitably, time passes and the desire fades, till the next tutorial shows up and the cycle repeats.&#xA;Today I&amp;rsquo;m breaking the cycle. I&amp;rsquo;m setting a challenge for myself, and I&amp;rsquo;m publishing it for the sake of the many curious souls who&amp;rsquo;d welcome a starting point for their OS adventures.</description>
    </item>
    <item>
      <title>What the heck is AEAD again?</title>
      <link>https://ochagavia.nl/blog/what-the-heck-is-aead-again/</link>
      <pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/what-the-heck-is-aead-again/</guid>
      <description>Here&amp;rsquo;s a problem you might be familiar with: I keep forgetting what AEAD exactly means and why you would ever use it. Yes, I know the acronym stands for &amp;ldquo;Authenticated Encryption with Associated Data&amp;rdquo;, but does that really clarify anything? Not to me, so I&amp;rsquo;ve finally decided to sit down and write this blog post as a piece of help for my future self&amp;hellip; and for anyone else who finds AEAD hard to retain.</description>
    </item>
    <item>
      <title>JIT calculators finale</title>
      <link>https://ochagavia.nl/blog/jit-calculators-finale/</link>
      <pubDate>Sat, 05 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/jit-calculators-finale/</guid>
      <description>At last, here&amp;rsquo;s the final installment of the JIT calculator saga! In previous blog posts, I presented the JIT calculator challenge and followed up with my own solution. Today we&amp;rsquo;ll get to look back on the submissions sent by some readers who were nerd-sniped into cracking the puzzle. As you can imagine, people are creative and came up with things I didn&amp;rsquo;t expect, like using Cranelift to generate code&amp;hellip; That was a pleasant surprise!</description>
    </item>
    <item>
      <title>Solving the JIT calculator challenge</title>
      <link>https://ochagavia.nl/blog/solving-the-jit-calculator-challenge/</link>
      <pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/solving-the-jit-calculator-challenge/</guid>
      <description>It&amp;rsquo;s time to present the solution to the JIT calculator challenge! If you missed it, here&amp;rsquo;s the original post in which I introduced it. It was a nice excuse to finally learn more about JIT compilation! I wasn&amp;rsquo;t alone in this, many people were nerd-sniped into implementing their own solutions and sent me their submissions. Thanks for participating! I&amp;rsquo;ll discuss them in a third blog post, to keep this one from becoming too long.</description>
    </item>
    <item>
      <title>The JIT calculator challenge</title>
      <link>https://ochagavia.nl/blog/the-jit-calculator-challenge/</link>
      <pubDate>Fri, 03 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/the-jit-calculator-challenge/</guid>
      <description>Advent of code has come and passed, what should I do now with so much free time? Fear not! The JIT calculator challenge is here.&#xA;1. The challenge Back when Rust was in its infancy, the official website featured an example program to showcase the language&amp;rsquo;s syntax. It was a toy calculator, implemented as an interpreter in 20 lines of code.&#xA;Why talk about website archaeology, though? We are not here for nostalgia&amp;rsquo;s sake, are we?</description>
    </item>
    <item>
      <title>My personal Bell Labs</title>
      <link>https://ochagavia.nl/blog/my-personal-bell-labs/</link>
      <pubDate>Sat, 07 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/my-personal-bell-labs/</guid>
      <description>Have you heard about Bell Labs? Recently, an article about it reached the Hacker News frontpage, triggering a flood of nostalgic comments. Bell Labs is, for many, a symbol of the ideal working environment for a curious mind: a place where there&amp;rsquo;s time, money and freedom to research whatever you want.&#xA;In my own case, having a curious mind drew me from a young age towards computers and lured me into the world of programming.</description>
    </item>
    <item>
      <title>An experiment in async Rust</title>
      <link>https://ochagavia.nl/blog/an-experiment-in-async-rust/</link>
      <pubDate>Fri, 11 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/an-experiment-in-async-rust/</guid>
      <description>Have you come across the fancy async / await syntax of some programming languages? Not everyone has jumped onto the bandwagon1, but many popular languages out there support the feature (e.g. Python, Typescript, C#, and obviously Rust). How does it work under the hood, though? What kind of magic is your software doing when you await an asynchronous function? There&amp;rsquo;s lots to learn about the topic, so what would you say to enlightening ourselves through an unusual experiment?</description>
    </item>
    <item>
      <title>To broadcast or not to broadcast</title>
      <link>https://ochagavia.nl/blog/to-broadcast-or-not-to-broadcast/</link>
      <pubDate>Mon, 19 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/to-broadcast-or-not-to-broadcast/</guid>
      <description>One of my friends, an outstanding programmer who likes to fly under the radar, frequently tells me he admires my &amp;ldquo;ability to broadcast&amp;rdquo;. I guess he refers to the fact that I&amp;rsquo;m keeping a blog, and that I&amp;rsquo;m not afraid of writing with transparency about my adventures in software engineering. To me, it all feels natural, so his comment motivated me to explain in more detail why I&amp;rsquo;m doing what I&amp;rsquo;m doing.</description>
    </item>
    <item>
      <title>Using S3 as a container registry</title>
      <link>https://ochagavia.nl/blog/using-s3-as-a-container-registry/</link>
      <pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/using-s3-as-a-container-registry/</guid>
      <description>For the last four months I&amp;rsquo;ve been developing a custom container image builder, collaborating with Outerbounds1. The technical details of the builder itself might be the topic of a future article, but there&amp;rsquo;s something surprising I wanted to share already: you can use S3 as a container registry! You heard it right. All it takes is to expose an S3 bucket through HTTP and to upload the image&amp;rsquo;s files to specific paths.</description>
    </item>
    <item>
      <title>Curiosity and sense of wonder</title>
      <link>https://ochagavia.nl/blog/curiosity-and-sense-of-wonder/</link>
      <pubDate>Sun, 09 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/curiosity-and-sense-of-wonder/</guid>
      <description>Roughly two months ago I posted a fragment of Fred Brooks&amp;rsquo; The Mythical Man-Month, which I find particularly inspiring. And guess what&amp;hellip; I&amp;rsquo;m not the only one who feels touched by that passage! Upon reading it, a friend sent me the following message, which I include here with his permission: WOWWWWWW, THIS IS BEAUTIFUL. It&amp;rsquo;s exactly what I felt last weeks but could not put into words!1&#xA;Motivated by his reaction, I thought about other texts I&amp;rsquo;ve come across that inspire me as a programmer and as a human being.</description>
    </item>
    <item>
      <title>Download Accelerator - Async Rust Edition</title>
      <link>https://ochagavia.nl/blog/download-accelerator-async-rust-edition/</link>
      <pubDate>Sun, 05 May 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/download-accelerator-async-rust-edition/</guid>
      <description>Breaking news! Here&amp;rsquo;s a blog post about async Rust, and it&amp;rsquo;s not a philosophical debate1! Today we&amp;rsquo;re going down the rabbit hole of download accelerators, though of course that&amp;rsquo;s just an excuse to explore a living async Rust program. After all, I spent last 12 months writing quite some async code, so I thought I&amp;rsquo;d give back and share a taste of its exotic flavor. If you have been reluctant to try async because of a negative sentiment on the internet, I hope this post may trigger your curiosity.</description>
    </item>
    <item>
      <title>The Joys of the Craft</title>
      <link>https://ochagavia.nl/blog/the-joys-of-the-craft/</link>
      <pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/the-joys-of-the-craft/</guid>
      <description>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&amp;rsquo;t have the luck to meet him in person (living on a different part of the planet definitely didn&amp;rsquo;t help). Still, I did meet him through his book The Mythical Man-Month, which I read during my student years. Programming lore masters held it as an all-time classic, so my curiosity was kindled&amp;hellip; and I was not disappointed!</description>
    </item>
    <item>
      <title>Podcast episode about The Undercover Generalist (The Changelog)</title>
      <link>https://ochagavia.nl/blog/podcast-episode-about-the-undercover-generalist-the-changelog/</link>
      <pubDate>Sun, 31 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/podcast-episode-about-the-undercover-generalist-the-changelog/</guid>
      <description>Hello there! In case you felt inspired by my previous article on The Undercover Generalist, you&amp;rsquo;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&amp;rsquo;s radar in the first place!&#xA;Below is an embedded player, for those of you who want to listen to it. The Changelog will soon publish the transcript on their website, which you might prefer if podcasts are not your thing (you can ask to be notified when it&amp;rsquo;s available).</description>
    </item>
    <item>
      <title>From full-stack development to systems programming</title>
      <link>https://ochagavia.nl/blog/from-full-stack-development-to-systems-programming/</link>
      <pubDate>Mon, 25 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/from-full-stack-development-to-systems-programming/</guid>
      <description>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 experience contributing to Rust. So&amp;hellip; what to choose?&#xA;Lured into full-stack development After reading Never Eat Alone I decided to start meeting people in order to answer my question.</description>
    </item>
    <item>
      <title>10 years in Open Source</title>
      <link>https://ochagavia.nl/blog/10-years-in-open-source/</link>
      <pubDate>Wed, 13 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/10-years-in-open-source/</guid>
      <description>Today marks 10 years since my first pull request to the Rust compiler. Though I&amp;rsquo;m no open source legend, to me it&amp;rsquo;s an important date still. As I&amp;rsquo;ve mentioned in the past, my involvement in Rust was pivotal to my development as a software engineer, so I can&amp;rsquo;t let this day pass without a mention in my blog!&#xA;How did it happen that I, a bored student yearning to learn interesting stuff, ended up contributing to Rust?</description>
    </item>
    <item>
      <title>A love letter to the Internet</title>
      <link>https://ochagavia.nl/blog/a-love-letter-to-the-internet/</link>
      <pubDate>Wed, 14 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/a-love-letter-to-the-internet/</guid>
      <description>Dear Internet,&#xA;I&amp;rsquo;ve never written to you on this special day before, so I thought I&amp;rsquo;d give you a surprise this time! After all, we&amp;rsquo;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 it&amp;rsquo;s not my fault to have been born in the early nineties!&#xA;Some people say you are slowly dying.</description>
    </item>
    <item>
      <title>Chasing a bug in a SAT solver</title>
      <link>https://ochagavia.nl/blog/chasing-a-bug-in-a-sat-solver/</link>
      <pubDate>Tue, 13 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/chasing-a-bug-in-a-sat-solver/</guid>
      <description>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. &amp;ldquo;That will make for a good war story!&amp;rdquo;, I thought, so I kept notes of my debugging process to serve as a basis for this article.&#xA;I was being overly pessimistic, though, thinking it would take days to find the source of the bug&amp;hellip; In reality it took me only a few hours, so there&amp;rsquo;s not much to tell about the chase itself.</description>
    </item>
    <item>
      <title>The undercover generalist</title>
      <link>https://ochagavia.nl/blog/the-undercover-generalist/</link>
      <pubDate>Thu, 01 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/the-undercover-generalist/</guid>
      <description>Since starting out as an independent contractor, I&amp;rsquo;ve always felt a tension between being a generalist software engineer, yet having to market myself as a specialist. I&amp;rsquo;ve been wanting to write about it for years and even have kept some notes for that purpose. Recently I came across an article by Ben Collins-Sussman, which gave me the last bit of inspiration I needed, even though his article only indirectly touches on the topic.</description>
    </item>
    <item>
      <title>Azure sneakily hides cheaper option in it&#39;s UI</title>
      <link>https://ochagavia.nl/blog/azure-sneakily-hides-cheaper-option-in-its-ui/</link>
      <pubDate>Wed, 31 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/azure-sneakily-hides-cheaper-option-in-its-ui/</guid>
      <description>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&amp;rsquo;t find the &amp;ldquo;Basic&amp;rdquo; tier (the cheapest on Azure). The only available options started at more than $100 / month!&#xA;He later stumbled upon this support request (archived), where a Microsoft employee shamelessly explains what&amp;rsquo;s going on: the Basic SKU is no longer available in Azure portal.</description>
    </item>
    <item>
      <title>RSS is dead, subscribe through email</title>
      <link>https://ochagavia.nl/blog/rss-is-dead-subscribe-through-email/</link>
      <pubDate>Tue, 16 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/rss-is-dead-subscribe-through-email/</guid>
      <description>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&amp;hellip; I was purposefully not offering email subscriptions! What a waste, someone might say: you had multiple articles reach the Hacker News frontpage in 2023, yet you failed to &amp;ldquo;capitalize&amp;rdquo; on the opportunity to &amp;ldquo;grow&amp;rdquo; your email subscriber base.</description>
    </item>
    <item>
      <title>Continuous benchmarking for rustls</title>
      <link>https://ochagavia.nl/blog/continuous-benchmarking-for-rustls/</link>
      <pubDate>Fri, 05 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/continuous-benchmarking-for-rustls/</guid>
      <description>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&amp;rsquo;s Encrypt, who are interested in rustls as a memory safe alternative to OpenSSL. The thing is, replacing OpenSSL is only realistic if you offer at least on-par performance. But how do you achieve that? What do you measure to ensure performance keeps improving and to avoid regressions?</description>
    </item>
    <item>
      <title>Someone interviewed me</title>
      <link>https://ochagavia.nl/blog/someone-interviewed-me/</link>
      <pubDate>Sun, 10 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/someone-interviewed-me/</guid>
      <description>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 &amp;ldquo;Contributing to Rust as a novice&amp;rdquo;. It even triggered some discussion on Hacker News!&#xA;What did we talk about? The adventure of contributing to Rust in 2014 as a beginner to programming, the crucial role of friendly maintainers, and the challenges involved in working as an independent contractor.</description>
    </item>
    <item>
      <title>Becoming a contractor</title>
      <link>https://ochagavia.nl/blog/becoming-a-contractor/</link>
      <pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/becoming-a-contractor/</guid>
      <description>How many roads must a programmer walk down before you call them a contractor? It&amp;rsquo;s been about three years since I went down this (bumpy) path, and I finally have the feeling that my contracting business is &amp;ldquo;bootstrapped&amp;rdquo;1. Here&amp;rsquo;s an account of my journey so far, hoping you find it inspiring!&#xA;0. Contents Articles about contracting and freelancing usually take the form of abstract advice: how to find clients, how much you should charge, etc.</description>
    </item>
    <item>
      <title>Low latency logging in Rust</title>
      <link>https://ochagavia.nl/blog/low-latency-logging-in-rust/</link>
      <pubDate>Sun, 30 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/low-latency-logging-in-rust/</guid>
      <description>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 from there.&#xA;&amp;mdash; Disclaimer: I love logging. I&amp;rsquo;ve implemented no less than 4 complete logging systems at various companies in the last 16 years, two of which were low-latency.</description>
    </item>
    <item>
      <title>The magic of dependency resolution</title>
      <link>https://ochagavia.nl/blog/the-magic-of-dependency-resolution/</link>
      <pubDate>Tue, 04 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/the-magic-of-dependency-resolution/</guid>
      <description>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.&#xA;To me, though, it is a fascinating feat. It feels magical when a machine solves an abstract problem like that, with minimal input from me as a user! I was, therefore, delighted when the nice folks at Prefix.</description>
    </item>
    <item>
      <title>On being paid to learn</title>
      <link>https://ochagavia.nl/blog/on-being-paid-to-learn/</link>
      <pubDate>Mon, 29 May 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/on-being-paid-to-learn/</guid>
      <description>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 own and ended up as a short essay on being paid to learn. Enjoy!&#xA;Taking on the project When Stormshield2 reached out to me with a proposal to work on Quinn, I felt honoured that they were considering me for the task, yet also slightly anxious because I had never implemented such a low-level network protocol before (e.</description>
    </item>
    <item>
      <title>You are holding it wrong</title>
      <link>https://ochagavia.nl/blog/you-are-holding-it-wrong/</link>
      <pubDate>Thu, 11 May 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/you-are-holding-it-wrong/</guid>
      <description>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 words.&#xA;About the title If you are one of today&amp;rsquo;s lucky 10000 who haven&amp;rsquo;t heard of the meme before, it seems to have originated when the iPhone 4 was released with antenna problems.</description>
    </item>
    <item>
      <title>Hangman over QUIC</title>
      <link>https://ochagavia.nl/blog/hangman-over-quic/</link>
      <pubDate>Thu, 04 May 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/hangman-over-quic/</guid>
      <description>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 implementing the hangman game over the network. You can find the code here.&#xA;A tiny bit of context If you have never heard of QUIC before, you can think of it as an alternative to TCP with better performance on at least two fronts:</description>
    </item>
    <item>
      <title>The birth of a package manager</title>
      <link>https://ochagavia.nl/blog/the-birth-of-a-package-manager/</link>
      <pubDate>Thu, 16 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/the-birth-of-a-package-manager/</guid>
      <description>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 and rust-analyzer, but I never got the chance to work professionally on programming language tooling&amp;hellip; until two months ago! In January, the nice folks at prefix.dev asked me to help them develop the rattler package manager, and there is lots to tell about what we have achieved since then, so buckle up!</description>
    </item>
    <item>
      <title>Crafting container images without Dockerfiles</title>
      <link>https://ochagavia.nl/blog/crafting-container-images-without-dockerfiles/</link>
      <pubDate>Mon, 06 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/crafting-container-images-without-dockerfiles/</guid>
      <description>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&amp;rsquo;d share part of the adventure here. Enjoy!&#xA;But why? If you are used to building container images, you might be asking yourself why on earth someone would want to deviate from the well-trodden path of Dockerfiles.</description>
    </item>
    <item>
      <title>Chunking strings in Elixir: how difficult can it be?</title>
      <link>https://ochagavia.nl/blog/chunking-strings-in-elixir-how-difficult-can-it-be/</link>
      <pubDate>Wed, 04 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/chunking-strings-in-elixir-how-difficult-can-it-be/</guid>
      <description>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 &amp;ldquo;war story&amp;rdquo; with the world. They gladly agreed, so here goes an account of my dealings with unicode, performance tuning and Rust-based NIFs. Enjoy!&#xA;1 - The problem From a pure technical point of view, we needed a way to split strings in chunks up to a maximum length in a user-friendly way.</description>
    </item>
    <item>
      <title>Implementing the MySQL server protocol for fun and profit</title>
      <link>https://ochagavia.nl/blog/implementing-the-mysql-server-protocol-for-fun-and-profit/</link>
      <pubDate>Tue, 20 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/implementing-the-mysql-server-protocol-for-fun-and-profit/</guid>
      <description>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 adventure.&#xA;The task Originally, the idea was to port the msql-srv library from Rust to Java. For context, msql-srv makes it possible to create a fake MySQL/MariaDB server, which accepts MySQL connections and handles them with custom logic (instead of having a real database behind it).</description>
    </item>
    <item>
      <title>How I got involved in the Rust community</title>
      <link>https://ochagavia.nl/blog/how-i-got-involved-in-the-rust-community/</link>
      <pubDate>Fri, 09 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/how-i-got-involved-in-the-rust-community/</guid>
      <description>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 interesting. When my friend Jouke Waleson told me about the existence of Hacker News, I quickly became a daily visitor, as it seemed to me like an endless source of programming knowledge.</description>
    </item>
    <item>
      <title>How I got into programming</title>
      <link>https://ochagavia.nl/blog/how-i-got-into-programming/</link>
      <pubDate>Thu, 08 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/how-i-got-into-programming/</guid>
      <description>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 any serious VBA program, the fact that you could give the computer instructions and receive visual feedback was an intriguing discovery.</description>
    </item>
    <item>
      <title>An adventure with optimization, Rust and Z3</title>
      <link>https://ochagavia.nl/blog/an-adventure-with-optimization-rust-and-z3/</link>
      <pubDate>Wed, 05 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/an-adventure-with-optimization-rust-and-z3/</guid>
      <description>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&amp;rsquo;t know that much about optimization and I had no idea about where to start! Besides, I had tried solvers for linear programming in the past, but the lack of documentation and difficulties to get them working on Windows were really off-putting.</description>
    </item>
    <item>
      <title>Rocket - A Rust game running on WASM</title>
      <link>https://ochagavia.nl/blog/rocket-a-rust-game-running-on-wasm/</link>
      <pubDate>Sun, 03 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://ochagavia.nl/blog/rocket-a-rust-game-running-on-wasm/</guid>
      <description>Two weeks ago, Alex Crichton&amp;rsquo;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&amp;rsquo;t depend on external stuff like the Emscripten SDK (which IIRC used to be a pain to get working on Windows, but seems to be better now).&#xA;After seeing the examples on hellorust.com, I thought it would be interesting to try to adapt my game Rocket to work on the browser through the wasm32-unknown-unknown target.</description>
    </item>
    <item>
      <title>RFC 1857 stabilizing Rust&#39;s drop order has been accepted!</title>
      <link>https://ochagavia.nl/blog/rfc-1857-stabilizing-rusts-drop-order-has-been-accepted/</link>
      <pubDate>Tue, 04 Jul 2017 15:14:51 +0100</pubDate>
      <guid>https://ochagavia.nl/blog/rfc-1857-stabilizing-rusts-drop-order-has-been-accepted/</guid>
      <description>If you have been following my previous posts on Rust&amp;rsquo;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 has been finally accepted as RFC 1857!&#xA;Besides reading the RFC itself, you may want to check my previous posts to see the reasoning that led to it:</description>
    </item>
    <item>
      <title>Thoughts on changing Rust&#39;s drop order</title>
      <link>https://ochagavia.nl/blog/thoughts-on-changing-rusts-drop-order/</link>
      <pubDate>Mon, 12 Dec 2016 15:14:51 +0100</pubDate>
      <guid>https://ochagavia.nl/blog/thoughts-on-changing-rusts-drop-order/</guid>
      <description>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.&#xA;While changing the drop order seems attractive, there are many aspects that need to be considered before embarking in such a quest. In this post I would like to expand on the consequences of changing the drop order.</description>
    </item>
    <item>
      <title>Exploring Rust&#39;s unspecified drop order</title>
      <link>https://ochagavia.nl/blog/exploring-rusts-unspecified-drop-order/</link>
      <pubDate>Mon, 12 Dec 2016 14:14:51 +0100</pubDate>
      <guid>https://ochagavia.nl/blog/exploring-rusts-unspecified-drop-order/</guid>
      <description>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 order before stabilizing it :)&#xA;TLDR: the current drop order is really weird!&#xA;In this post we are going to look at:&#xA;Local variables Tuples Structs and enums Slices Closure captures We will be reusing the PrintDrop struct, so here is the definition in case you forgot it:</description>
    </item>
    <item>
      <title>Enforcing drop order in Rust</title>
      <link>https://ochagavia.nl/blog/enforcing-drop-order-in-rust/</link>
      <pubDate>Sat, 10 Dec 2016 14:14:51 +0100</pubDate>
      <guid>https://ochagavia.nl/blog/enforcing-drop-order-in-rust/</guid>
      <description>Some days ago I stumbled upon an old issue on Rust&amp;rsquo;s GitHub repository. While the title of the issue is &amp;ldquo;should struct fields and array elements be dropped in reverse declaration order (a la C++)&amp;rdquo;, the discussion also extends to whether the current drop order should be stabilized.&#xA;Surprising as it may seem, drop order in Rust is unspecified and could theoretically be changed in the future. However, there are use cases that require enforcing a given drop order (see, for instance, this SO question).</description>
    </item>
  </channel>
</rss>
