Philipp Krüger 's Avatar

Philipp Krüger

@matheus23.com

Building iroh with the amazing folks at number 0 (n0.computer). Generally striving to increase user agency and excited about commons networks. Only works for Canadian CEOs, apparently. Rust, cryptography, CRDTs & more on my feed

487
Followers
305
Following
457
Posts
21.04.2023
Joined
Posts Following

Latest posts by Philipp Krüger @matheus23.com

Ok [*rolls sleeves*] I want to properly understand money. What do I read?

08.03.2026 17:29 👍 12 🔁 3 💬 16 📌 0

I'd love to hear a "common misconception around bevy" take of yours :)

09.03.2026 10:20 👍 2 🔁 0 💬 0 📌 0
Preview
The Ultimate Conditional Syntax | Proceedings of the ACM on Programming Languages Functional programming languages typically support expressive pattern-matching syntax allowing programmers to write concise and type-safe code, especially appropriate for manipulating algebraic data t...

"The ultimate conditional syntax"

dl.acm.org/doi/10.1145/...

08.03.2026 15:42 👍 2 🔁 0 💬 0 📌 0
Screenshot of Aljoscha's message on discord:
I'm not on Bluesky, so I can't chime in directly. But in a nutshell:

- you can incrementally recompute the root hash when appending data, in amortised `O(l)` time when appending `l` bytes (worst case per append is  `O(l + log(n))`), where `n` is the total length so far
  - this means you can hash a string incrementally in linear time
  - this is identical in Blake3 and Bab
- the main differences between Blake3 and Bab:
  - Bab has constant-size length proofs
  - in Bab you can speed up computation when the input string repeats (for example, you could compute the hash of `n` successive zero bytes in O(log(n)) time, whereas Blake3 deliberately requires O(n) there to thwart timing attacks)
  - Bab admits multiple instantiations (different digest sizes, different merkle tree label computations), Blake3 is one-size-fits-all

Screenshot of Aljoscha's message on discord: I'm not on Bluesky, so I can't chime in directly. But in a nutshell: - you can incrementally recompute the root hash when appending data, in amortised `O(l)` time when appending `l` bytes (worst case per append is `O(l + log(n))`), where `n` is the total length so far - this means you can hash a string incrementally in linear time - this is identical in Blake3 and Bab - the main differences between Blake3 and Bab: - Bab has constant-size length proofs - in Bab you can speed up computation when the input string repeats (for example, you could compute the hash of `n` successive zero bytes in O(log(n)) time, whereas Blake3 deliberately requires O(n) there to thwart timing attacks) - Bab admits multiple instantiations (different digest sizes, different merkle tree label computations), Blake3 is one-size-fits-all

I asked Aljoscha to fact-check on discord:

08.03.2026 08:32 👍 2 🔁 0 💬 0 📌 0

Iroh blobs uses the exact same construction that BLAKE3/bao uses. Files hashed with iroh-blobs give you BLAKE3 hashes.
We store the inner tree hashes only up to 16KiB chunks and recalculate the rest on the fly, but other than that it's identical to bao.

08.03.2026 08:13 👍 7 🔁 2 💬 1 📌 1

And actually a minor correction: I think I was wrong claiming that length changes require rehashing. Seems like that's not the case.

07.03.2026 20:36 👍 2 🔁 0 💬 2 📌 0

All good :) Bab is cool IMO. Just wanted to correct the fact that bao also supports random access and took the chance to blurt out some additional facts

07.03.2026 20:33 👍 3 🔁 0 💬 1 📌 0

And IIRC this comes with the downside of needing to know the size of what you're hashing in advance/needing to rehash everything on append.

07.03.2026 20:09 👍 2 🔁 0 💬 1 📌 0

Bab is inspired by BLAKE3/bao (hence the similar name).
Both feature random access.
IIRC, something that Bab improves over bao is that each random access Merkle Proof also comes with a proof of total size.

07.03.2026 20:09 👍 3 🔁 0 💬 1 📌 0

Given this methodology, it might even be a low estimate. Servo likely tackled low hanging fruits with big impact first. So this report would assume this stays the same.

07.03.2026 17:24 👍 1 🔁 0 💬 0 📌 0
screenshot of the one-pager version of the servo readiness report

screenshot of the one-pager version of the servo readiness report

How do we get to more than just three web engines owned by three US companies?

It's a gargantuan question, with no easy or right answer.

I've put together a draft report, thinking about it through a very specific approach - please enjoy:

Servo Readiness Report

webtransitions.org/servo-readin...

06.03.2026 14:35 👍 59 🔁 26 💬 4 📌 1

I have a lot of worries, but one is that expectations of speed increase to the extent that I can't either take the time to handwrite it if I want, or take the time to do it in collaboration with an LLM at a level of quality that would have been prohibitively time consuming before.

05.03.2026 15:50 👍 8 🔁 1 💬 2 📌 0
A clean looking graphic with sharp lines and crisp colour

A clean looking graphic with sharp lines and crisp colour

The same graphic, but muddy and blocky. The previously sharp lines are blurry.

The same graphic, but muddy and blocky. The previously sharp lines are blurry.

I think it's often overlooked that AVIF is also really good at flat colour & sharp edges.

Don't go straight for a lossless format just because it's the kind of image that would look bad as a JPEG.

Here's an 11kb image as an AVIF, vs JPEG XL.

02.03.2026 14:08 👍 145 🔁 22 💬 9 📌 1

I love this! Was just looking through reverse dependencies of bevy yesterday.

01.03.2026 14:09 👍 0 🔁 0 💬 0 📌 0

No webrtc in iroh! And so no - no base64 overheads.

26.02.2026 09:04 👍 2 🔁 0 💬 0 📌 0

Virtual networked memory?

25.02.2026 21:55 👍 1 🔁 0 💬 0 📌 0

There's this account:
bsky.app/profile/auto...
which has an automated list for e.g. unverified accounts over 10k followers, so you can mute/block them all at once.

23.02.2026 08:05 👍 1 🔁 0 💬 0 📌 0

I'm strongly in team "any markdown field could have been a facet"

Many plates spinning right now, but I keep feeling like I need to port/rewrite some of the atjson tooling, because atproto facets really need better tooling.

20.02.2026 01:20 👍 6 🔁 2 💬 0 📌 0

Oooh my god this feels sooo hard to read after working in GitHub all day and dealing with buggy CI, slow page loads and various UI bugs.

19.02.2026 18:25 👍 0 🔁 0 💬 1 📌 0

making software that’s good and durable and solves a user problem remains hard

architecture remains an essential consideration and thinking through it is a job

while you can speed them up, you cannot replace an engineer with a robot

their skills and insights…

Remain special.

19.02.2026 17:34 👍 35 🔁 5 💬 3 📌 1
Two chat rooms next to each other showing the same thing, a new chat with a video ("I don't wanna do the work today") inline

Two chat rooms next to each other showing the same thing, a new chat with a video ("I don't wanna do the work today") inline

need to figure out adding friends in an easier flow (right now you both have to have added each other to the friend list to start getting status pings) but p2p chat is very easy to build with iroh

12.02.2026 22:08 👍 1 🔁 1 💬 0 📌 0

We plan on integrating WebRTC eventually, but then we lose control over how exactly the holepunching works, so it all depends on how well the browser implements it again (i.e. you don't benefit from our tireless work of getting holepunching right).

18.02.2026 13:26 👍 2 🔁 0 💬 2 📌 0

so I personally like to think of this more like a "progressive enhancement" thing where you point people towards a native app that can actually do peer to peer stuff.

18.02.2026 13:26 👍 1 🔁 0 💬 1 📌 0

Yeah. We have examples in the iroh-examples repo that check whether stuff compiles to Wasm & runs.

The only downside is that you can only send data via relays in browser at the moment,

18.02.2026 13:26 👍 2 🔁 0 💬 1 📌 0

Well, I for one, am excited to read more 👀

09.02.2026 16:34 👍 0 🔁 0 💬 0 📌 0
Preview
Private API Credits: A Simple Construction

Friendly folks wrote a great article about Privacy Pass, a way of cryptographically unlinking the issuance and redemption of auth tokens:
research.chainbound.io/private-api-...

06.02.2026 08:42 👍 5 🔁 1 💬 0 📌 0

inspired by CLAUDE.md, I’ve started putting markdown files named after coworkers into work code repos so I can remind them to stop doing shit to the codebase that annoys me

for some reason they’re all mad at me now, which means ill be adding commands to JEREMY.md for an attitude adjustment

04.02.2026 17:32 👍 799 🔁 166 💬 6 📌 6

Ah right. Thanks for clarity. For some reason I was thinking of the cases where one shows both the command and output.

Yeah for command only that 100% makes sense.

04.02.2026 22:45 👍 1 🔁 0 💬 0 📌 0

Why not? (Genuinely)

04.02.2026 22:40 👍 0 🔁 0 💬 1 📌 0
Post image

BTW, this may be uncharitable and ignorant of me but I totally interpret this arbitrary 16 GiB limit in the browser as "That one mistake—virtual mem is a proxy for real mem—that people keep making", which the entire smalloc project is kind of an attempt to dispel. github.com/zooko/smallo...

02.02.2026 19:12 👍 2 🔁 2 💬 0 📌 0