About two weeks ago I entered a discussion with the docs.rs team about,
basically, why we have to look at this:
When we could be looking at this:
And of course, as always, there are reasons why things are the way they are.
In an effort to understand those reasons, I opened a GitHub issue which resulted
in a short but productive discussion.
I walked away discouraged, and then decided to, reasons be damned, attack this
problem from three different angles.
There are several Rust quizzes online, including one that’s literally called the
“Unfair Rust Quiz” at https://this.quiz.is.fckn.gay/, but when I was given the
opportunity to record an episode of the Self-Directed Research
podcast live on the main stage of EuroRust
2025, I thought I’d come up with something special.
The unfair rust quiz really deserves its name. It is best passed with a knowledgeable friend by your side.
A couple months ago I made a loudness meter
and went way too in-depth into how humans have measured loudness over time.
Today we’re looking at a spectrogram visualization I made, which is a lot more entertaining!
We’re going to talk about how to extract frequencies from sound waves, but also
how my spectrogram app is assembled from different Rust crates, how it
handles audio and graphics threads, how it draws the spectrogram etc.
TL;DR: If you’re a patron or sponsor, check your Profile page to
get detailed explainers of every perk. You’ll need to log in. Duh.
Here are all the changes I’m implementing, summarized as a table:
BeforeAfter📚 Articles remain exclusive for 6 monthsEarly access (couple weeks) for Silver tier🎞️ No early access for videoVideo early access on Patreon and website
I have long been at war against Rust compile times.
Part of the solution for me was to buy my way into Apple Silicon dreamland,
where builds are, like… faster. I remember every time I SSH into an x86_64
server, even the nice 64-core ones.
And another part was, of course, to get dirty with Rust itself.
I wrote Why is my Rust build so slow?,
which goes in-depth into rust build performance, down to rustc self-profiling even!
There have been rumors going around, in the Reddit thread for
facet, my take on reflection in Rust, which
happened a bit too early, but here we are, cat’s out of the bag, let’s talk
about it!
Rumors that I, podcaster/youtuber fasterthanlime, want to kill
serde, serialization / deserialization
framework loved by many and which contributed greatly to Rust’s success, and I
just wanted to address those rumors and say that…
I recently had a bit of impromptu disaster recovery,
and it gave me a hunger for more! More downtime! More kubernetes manifest!
More DNS! Ahhhh!
The plan was really simple. I love dedicated Hetzner servers with all my heart but they are not very fungible.
You have to wait entire minutes for a new dedicated server to be provisioned.
Sometimes you pay a setup fee, et cetera. And at some point to server static
websites and serve as a K3S server, it’s simply just too big, and approximately
twice the price that I should pay.
On March 18th, 2025, I thought I would look into self-hosted project management
solutions — something kanban-y, but.. better?
This one does not spark joy.
After discovering that Teamhood was awesome (and
EU-based), but had a 3-seat minimum on their subscriptions, I resigned to
reluctantly self-host something.
The most popular option to decompress ZIP files from the Rust programming
language is a crate simply named zip — At the time of this writing, it has 48
million downloads. It’s fully-featured, supporting various compression methods,
encryption, and even supports writing zip files.
However, that’s not the crate everyone uses to read ZIP files. Some
applications benefit from using asynchronous I/O, especially if they decompress
archives that they download from the network.
I have obsessed about this long enough, I think it’s only fair I (and you!) get some content out of it.
When I started writing this article, I was working on my P99 CONF slides.
Those slides happen to include some bits of code. And because I’m a perfectionist, I would like this
code to be syntax highlighted, like this:
let addr: SocketAddr = config.address.parse()?;
let ln = TcpListener::bind(addr?
config
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.
Now that we’re on the same page: let’s unpack this a bit!
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 was also taught from an early age that I was born a sinner, incapable of doing
good by myself, and that all the earthly things were temptations, sent by the
devil to corrupt me (further I guess?) but also temporary, and that I shouldn’t
attach myself.
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.