I want to formally apologize for, when someone said "I live for your cat's appearances on camera", replying with "that's not even my best cat".

I was wrong. Both my cats are best cats. I will do better moving forward.

As penance, please accept the following:

Mara posted a fantastic article about Converting u128 values to f64 (unsigned 128-bit integers to 64-bit floating-point numbers), give it a read!


I couldn't find a tree-sitter grammar for x86 assembly... so I made one! github.com/bearcove/tree-sitte

It supports Intel syntax only, some NASM idiosyncrasies, and understands objdump output.

It's live on my site, see for example fasterthanli.me/series/making-

today in react debugging: profiler is being kinda helpful


There's 300+ of you supporting the creation of my articles and videos!!

To celebrate, I bestow upon you the top 2 requested features for my website, and two little things I really wanted to do for myself.

You're welcome! I mean, thank you so much!!


is there a crate in the tracing cinematic universe that just dumps all the entire span tree on `SIGUSR1` or something?

(something much simpler than tokio-console, that could run in production)

(I tweeted a friend link of this video last week already, that gave access for 48 hours, but now it's truly out for everyone, enjoy!)

Show thread

Getting good at SNES games through DLL injection


Join me on a casual journey to not have to switch from controller to keyboard when playing SNES games, by injecting some Rust code in Snes9X instead of just using another emulator ✨

Obviously, the main shortcoming of the Scratch development ecosystem is the lack of a robust cryptography library.

Until now!

Here's x25519 ECDH key exchange, blake2s hashing, and ChaCha20-Poly1305 AEAD - in Scratch

Fourth day in a row being on the front page of HN, do I get a plaque or just hate mail

Show thread

Fourth day in a row being on the front page of HN, do I get a plaque or just hate mail

Show thread

The most promising of these IMO is Crystal. Its syntax is inspired by Ruby, but it's statically typed and ahead-of-time compiled with LLVM. Unlike Go, it has sum types which are used to represent nil-able values, like Rust's Option<T>. Like Go, it has a garbage collector, and uses green threads and channels for concurrency.

Show thread

✨ I won free load testing!

My website was DDoS'd this week. Why wasn't my website resilient in the first place? Why didn't Cloudflare's DDoS protection kick in?

All this and some Rust code (I've made some changes) in the full post-mortem:


"Made some great progress on my todo list today:

❌ do laundry
❌ wash dishes
✅ implement ChaCha20-Poly1305 in Scratch
❌ eat food"

Sustaining multiple DDoS attacks on fasterthanli.me today, apologies for the downtime. I'm having fun handling them though, so there's that!

Show older

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!