Sign in

Matthieu 🦋

@matthieu.bsky.team
15K followers 289 following 314 posts

Protocol Engineer at Bluesky. Building the open social web on AT Protocol. Into web standards, OAuth, TypeScript, and over engineered code. Dad, gamer, Dire Straits fan, sailor and beer enthusiast. From Brussels 🇧🇪

PostsRepliesMedia
Matthieu 🦋 @matthieu.bsky.team · 31/07/2026
AT protocol enthusiasts rejoice! He did it! @dholms.at fixed AT-URIs!
Screenshot of a git commit by @dholms "fix up at uris"
4925
Matthieu 🦋 @matthieu.bsky.team · 25/06/2026
Did you know you can start a testing ATProto OAuth client with this simple command? $ pnpx @atproto/oauth-client-browser-example 8080 You can then use the inspector console to interact with your PDS: `await bskyClient.get(app.bsky.actor.profile)` `await bskyClient.list(app.bsky.feed.post)` ...
Screenshot of a browser console showing the command "await bskyClient.get(app.bsky.actor.profile)" and its result
1459
Matthieu 🦋 @matthieu.bsky.team · 28/04/2026
I'd definitely be down to support something like this:
declare const client: Client

await client.applyWrites((op) => {
  op.create(app.bsky.feed.post, {
    text: "yo",
  })

  op.update(app.bsky.actor.profile, {
    displayName: "John",
  })

  op.delete(app.bsky.feed.like, "123")
})
140
Matthieu 🦋 @matthieu.bsky.team · 13/04/2026
sneak peek
Screen shot of the PDS account manager interface, giving some context of where the "My Atmosphere Account" would show up
4365
Matthieu 🦋 @matthieu.bsky.team · 10/04/2026
Chrome gives more insightful details. Looks like hcaptcha stopped sending COEP headers.
120
Matthieu 🦋 @matthieu.bsky.team · 10/04/2026
I also see a CSP error but the `frame-src` directive does match what hCaptcha expects: docs.hcaptcha.com#content-secu...
220
Matthieu 🦋 @matthieu.bsky.team · 10/04/2026
1) If I use "Firefox for Android" hCaptcha shows up 2) If I use "Firefox Nightly", I get a COEP error, which gets truncated by the hCaptcha lib. Manually editing the iframe's height reveals the problem:
120
Matthieu 🦋 @matthieu.bsky.team · 24/03/2026
Test 2
120
Matthieu 🦋 @matthieu.bsky.team · 24/03/2026
Test
120
Matthieu 🦋 @matthieu.bsky.team · 29/01/2026
As in:
A screenshot of a mock lexicon data that uses an `$ns` map to define extra schemas that a particular record supports.
130
Matthieu 🦋 @matthieu.bsky.team · 02/01/2026
This it by no means an extensive benchmarck but it looks quite fast indeed (~2.4x req/sec wrt. NodeJS for a very simple example)
Simple example code.Screenshot of `ab` showing Deno 2.6 being 2.4x faster than NodeJS 25
010
Matthieu 🦋 @matthieu.bsky.team · 02/01/2026
Wanna write an XRPC server running on Deno ? Well now you can (very experimental!)
Screenshot of code editor showing a demo of running an xrpc server with Deno, using the @atproto/lex and @atproto/lex-server NPM packages.
4608
Matthieu 🦋 @matthieu.bsky.team · 02/01/2026
It's one of those days...
screenshot of a Github commit history showing only failed attempts at fixing continuous integration.
3745
Matthieu 🦋 @matthieu.bsky.team · 27/11/2025
Wait,we already use prettier for formatting. Maybe we could use prettier for building the code!
Screenshot of the readme that reads "Why not just use prettier? Because it's ginormous"
030
Matthieu 🦋 @matthieu.bsky.team · 19/11/2024
I found the hidden trick to trigger the confetti 👻
Screenshot of the Bcounter app, with over 20M users, and confetti in the background.
020
Matthieu 🦋 @matthieu.bsky.team · 20/08/2024
@tom-sherman.com You forgot to handle the user denying access 🫠
A screenshot of the smokesignal app in an error state after a user clicked "Deny" while login in.
150