My watch has a “Noise” app: it shows , for decibels. My amp has a volume knob, which also shows decibels, although.. negative ones, this time. And finally, my video editing software has a ton of me...| fasterthanli.me
There are news! 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, summar...| fasterthanli.me
Articles are single-page pieces that give a whirlwind tour of a specific topic. They’re different from series, which go very in-depth, taking many detours.| fasterthanli.me
I do not come to you with answers today, but rather some observations and a lot of questions. The weird glitch Recently I was editing some video and I noticed this: A screenshot of the video, there...| fasterthanli.me
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 x...| fasterthanli.me
Addressing the rumors 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’...| fasterthanli.me
I’ve been bragging about my website software for years! For… whew, it’s been 5 years! I’ve been teasing folks about the cool things I did from the beginning — here’s all the articles and series I’v...| fasterthanli.me
The part that makes Rust scary is the part that makes it unique. And it’s also what I miss in other programming languages — let me explain! Rust syntax starts simple. This function prints a number:...| fasterthanli.me
Disclaimer: Trigger warning: depression, talk of suicide. It’s been a while since I wrote a mental health piece — but I think it’s important to occasionally stop, take a breather, and think about h...| fasterthanli.me
Background 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 dedica...| fasterthanli.me
Background im-promp-tu (im-ˈpräm(p)-(ˌ)tü) made, done, or formed on or as if on the spur of the moment: improvised composed or uttered without previous preparation: extemporaneous Merriam-Webste...| fasterthanli.me
Everybody knows how to use files. You just open up File Explorer, the Finder, or a File Manager, and bam - it’s chock-full of files. There’s folders and files as far as the eye can see. It’s a genu...| fasterthanli.me
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, sup...| fasterthanli.me
In December 2023, a minor miracle happened: async fn in traits shipped. As of Rust 1.39, we already had free-standing async functions: pub async fn read_hosts() -> eyre::Result> { // et...| fasterthanli.me
My honeymoon with the Go language is extremely over. This article is going to have a different tone from what I ’ ve been posting the past year - it ’ s a proper rant. And I always feel bad writing...| fasterthanli.me
In the two years since I've posted I want off Mr Golang's Wild Ride, it's made the rounds time and time again, on Reddit, on Lobste.rs, on HackerNews, and elsewhere. And every time, it elicits the ...| fasterthanli.me
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...| fasterthanli.me
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...| fasterthanli.me
I've been banging the same drum for years: APIs must be carefully designed. This statement doesn't resonate the same way with everyone. In order to really understand what I mean by 'careful API des...| fasterthanli.me
Hey everyone! This article is brought to you by a shameless nerd snipe, courtesy of Pascal. In case you've blocked Twitter for your own good, this reads: There should be a post explaining and compa...| fasterthanli.me
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/...| fasterthanli.me
Executables have been fascinating to me ever since I discovered, as a kid, that they were just files. If you renamed a .exe to something else, you could open it in notepad! And if you renamed somet...| fasterthanli.me
Has this ever happened to you ? You want to look at a JSON file in your terminal, so you pipe it into jq so you can look at it with colors and stuff. Cool bear's hot tip...| fasterthanli.me
Update: EuroRust introduces a freelancer ticket I'm happy to report that the EuroRust organizers have listened, and they've come up with a solution. Here's their ...| fasterthanli.me
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? T...| fasterthanli.me
Hi everyone. Has it been two months since I last posted something? Yes it has! That seems like a nice round duration, so let’s break the silence with a few announcements. I have a new website If ev...| fasterthanli.me
Good morning! It is still 2020, and the world is literally on fire, so I guess we could all use a distraction. This article continues the tradition of me getting shamelessly nerd-sniped - once by P...| fasterthanli.me
It feels like an eternity since I’ve started using Rust, and yet I remembervividly what it felt like to bang my head against the borrow checker for thefirst few times. I’m definitely not alone in t...| fasterthanli.me
In order to increase fluency in a programming language, one has to read a lot of it. But how can you read a lot of it if you don ’ t know what it means? In this article, instead of focusing on one ...| fasterthanli.me
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 th...| fasterthanli.me
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 ...| fasterthanli.me
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 a...| fasterthanli.me
(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 t...| fasterthanli.me
We've achieved our goals already with this series: we have a web service written in Rust, built into a Docker image with nix, with a nice dev shell, that we can deploy to fly.i...| fasterthanli.me
There it is. The final installment. Over the course of this series, we've built a very useful Rust web service that shows us colored ASCII art cats, and we've packaged it with...| fasterthanli.me
In the previous chapter, we've made a nix "dev shell" that contained the fly.io command-line utility, "flyctl". That said, that's not how I want us to define a dev shell. Our cu...| fasterthanli.me
Remember the snapshot we made allll the way back in Part 1 ? Now's the time to use it. Well, make sure you've committed and pushed all your changes, but when you're ready, let'...| fasterthanli.me
I sold you on some additional functionality for catscii last chapter, and we got caught up in private registry / docker shenanigans, so, now, let's resume web development as p...| fasterthanli.me
Wait wait wait, so we're not talking about nix yet? Well, no! The service we have is pretty simple, and I want to complicate things a bit, to show how things would...| fasterthanli.me
Disclosure : Because I used to work for fly.io, I still benefit from an employee discount at the time of this writing: I don't have to pay for anything deployed there for now....| fasterthanli.me
Now that our service is production-ready, it’s time to deploy it somewhere. There’s a lot of ways to approach this: what we are going to do, though, is build a docker image. Or, I should say, an OC...| fasterthanli.me
Our catscii program does everything we want it to do, except that it’s a command-line application rather than a web server. Let’s fix that. Enter axum The documentation for the axum crate tells us ...| fasterthanli.me
Now that our development environment is all set up, let’s make something useful! Creating the catscii crate From a VS Code window connected to our VM (as we just set up), let’s make a new Rust proj...| fasterthanli.me
With the previous part’s VM still running, let’s try connecting to our machine over SSH. Network addresses, loopback and IP nets Normally, to connect to a machine, you’d find its IP address. On Lin...| fasterthanli.me
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 p...| fasterthanli.me
This time around, we’re porting a solution from C++ to Rust and seeing how it feels, how it performs, and what we can learn about both languages by doing that. See Day 17 for the rationale re: port...| fasterthanli.me
Advent of Code gets harder and harder, and I’m not getting any smarter. Or any more free time. So, in order to close out this series anyway, I’m going to try and port other people’s solutions from ...| fasterthanli.me
Let’s tackle the day 16 puzzle! Parsing The input looks like this: Valve AA has flow rate=0; tunnels lead to valves DD, II, BB Valve BB has flow rate=13; tunnels lead to valves CC, AA Valve CC has ...| fasterthanli.me
The day 15 puzzle falls into the “ math puzzle ” territory more than “ let ’ s learn something new about Rust ”, but since several folks asked if I was going to continue … let ’ s continue. The sam...| fasterthanli.me
I like how the day 14 puzzle sounds, because I think it'll give me an opportunity to show off yet another way to have Rust embedded in a web page. But first... Let me guess: parsing? You bet your f...| fasterthanli.me
The day 13 puzzle needs a speech therapist.???...because it has an awful lisp!! Ahhhahahahhhh Are you ok? What is.. what is going on with you? No but seriously we have what are ostensibly S-express...| fasterthanli.me
Alright! The day 12 puzzle involves path finding, and it seems like a good time to lean more heavily on the WASM embeds I've set up for the previous parts. Let's start by setting up the types we'll...| fasterthanli.me
It's a new day, it's a new advent of code puzzle. In that one, we have to apparently cosplay as an IBM mainframe and just.. crunch them numbers. This doesn't look fun, and I can't think of a clever...| fasterthanli.me
Onwards! To the day 10 puzzle. I don't see a way to make part 1 especially fun — so let's just get to it. Parsing As usual, let's reach for the nom crate... $ cargo add nom@7 (cut) ...to parse the ...| fasterthanli.me
The Advent of Code is not a sprint: it's a marathon: sometimes you've got to stop and smell the roses. I... what? That's not.. have you done a marathon before? No, and I haven't taken any creative ...| fasterthanli.me
In the day 8 problem, our input is a height map: 30373 25512 65332 33549 35390 This is a 5x5 grid, and every number denotes the height of a tree. For part 1, we must find out how many trees are vi...| fasterthanli.me
Disclaimer: At the time of this writing, I benefit from the fly.io 'Employee Free Tier'. I don't pay for side projects hosted there 'within reasonable limits'. The project discussed here qualifies ...| fasterthanli.me
Long story short: a couple of my articles got really popular on a bunch of sites, and someone, somewhere, went 'well, let's see how much traffic that smart-ass can handle', and suddenly I was on th...| fasterthanli.me
I've recently come back to an older project of mine (that powers this website), and as I did some maintenance work: upgrade to newer crates, upgrade to a newer rustc, I noticed that my build was ta...| fasterthanli.me
I still get excited about programming languages. But these days, it ’ s not so much because of what they let me do, but rather what they don ’ t let me do. Ultimately, what you can with a programmi...| fasterthanli.me