Hi! I'm Amos, better known as @fasterthanlime.
I make articles and videos about how computers work. My content is long-form, didactic and exploratory — and often an excuse to teach Rust!
I also co-host the Self-Directed Research podcast with James.
Recent articles View all
What's a ktls
I started work on ktls and ktls-sys, a pair of crates exposing Kernel TLS offload to Rust, about two years ago.
kTLS lets the kernel (and, in turn, any network interface that supports it) take care of encryption, framing, etc., for the entire duration of a TLS connection... as soon as you have a TLS connection.
For the handshake itself (hellos, change cipher, encrypted extensions, certificate verification, etc.), you still have to use a userland TLS implementation.
It's time for some personal and professional news!
TL;DR: I started a podcast with James, I'm stable on antidepressants, I'm giving a P99 CONF about my Rust/io_uring/HTTP work, I'm trying on "they/them" as pronouns, I'm open-sourcing merde_json, rubicon and others, I got a divorce in 2023, I found a new business model.
I try to avoid doing "meta" / "behind the scenes" stuff, because I usually feel like it has to be "earned". How many YouTube channels are channels about making YouTube videos? Too many.
Regardless, because I've had the opportunity to make my own mistakes now for a few years (I started doing the video thing in earnest in 2019), and because I've recently made a few leaps in quality-of-life re: shooting and editing video, I thought I'd publish a few notes, if only for reference for my future self.
My family wasn't poor by any stretch of the imagination, but I was raised to avoid spending money whenever possible.
I was also taught "it's a poor craftsman that blames their tools", which apparently means "take responsibility for your fuckups", but, to young-me, definitely sounded more like "you don't deserve nice things".
I use the draw.io desktop app to
make diagrams for my website. I run it on an actual desktop, like Windows or
macOS, but the asset pipeline that converts .drawio
files, to .pdf
, to
.svg
, and then to .svg
again (but smaller) runs on Linux.
So I have a Rust program somewhere that opens headless chromium, and loads just the HTML/JS/CSS part of draw.io I need to render my diagrams, and then use Chromium's "print to PDF" functionality to save a PDF.
Disclaimer:
At some point in this article, I discuss The Rust Foundation. I have received a $5000 grant from them in 2023 for making educational articles and videos about Rust.
I have NOT signed any non-disclosure, non-disparagement, or any other sort of agreement that would prevent me from saying exactly how I feel about their track record.
Disclaimer:
(Note: this was originally posted as a gist)
Reassuring myself about Rust
Up until recently, I was part of two private online discussion spaces where a bunch of Rust people hung out.
So, whenever there was drama, like when the entire mod team resigned, or when a trademark draft got a lot of people seriously worried, or just recently when RustConf took back the keynote from ThePHD then and , I had some place to go, to assess how serious things were this time around.
Some bugs are merely fun. Others are simply delicious!
Today's pick is the latter.
Reproducing the issue, part 1
(It may be tempting to skip that section, but reproducing an issue is an important part of figuring it out, so.)
I've never used Emacs before, so let's install it. I do most of my computing on an era-appropriate Ubuntu, today it's Ubuntu 22.10, so I just need to:
Latest series View all
I often give bits and pieces of advice on how to build Rust stuff the comfy way. But it can be hard to see how everything comes together, especially when it comes to, say, deploying a web service in production.
So, let's start from the very beginning (setting up a Linux VM), and march together towards the objective: a production-grade Rust web service, built with Nix.
Let's use the Advent of Code 2022, a series of programming challenges of increasing difficulty, to learn more about the Rust programming language.
In 2020, I switched from a static site generator to something homemade.
And, as tradition commands, I did a whole write-up about it.
Since writing articles and making videos is now my full-time
occupation, I took some time
to upgrade futile
, my server software, to the latest and greatest the
Rust ecosystem has to offer.
In this series, I change a critical component of this website's asset pipeline from "just calling a bunch of external tools" to statically linking with everything I need to process assets. It involves autoconf, CMake, Meson, CI, pkg-config, and some code crimes.
Ever wonder who's behind all this content?