Brooklyn Zelenka (@expede.wtf) reply parent
Especially given the above, I'd be interested to hear about how any solutions that you implement work out in practice! Keep us in the loop :)
π¨π¦ Vancouver π @katiewilde.com π’ @inkandswitch.com ποΈ @ucan.xyz π° Always learning π³οΈβπ Sapphic as heck π³οΈββ§οΈ Trans rights are human rights β BLM & Land Back π€ United we stand, divided we fall π notes.brooklynzelenka.com π©πΌβπ» github.com/expede π types.pl/@expede
3,428 followers 663 following 619 posts
view profile on Bluesky Brooklyn Zelenka (@expede.wtf) reply parent
Especially given the above, I'd be interested to hear about how any solutions that you implement work out in practice! Keep us in the loop :)
Brooklyn Zelenka (@expede.wtf) reply parent
Yep this is the scenario we talk about, too. It's an annoying edge case, and there are ideas on how to fix it, but we've prioritized other work first since it's relatively rare and there's actually a fair number of conflicting expected behaviours
Brooklyn Zelenka (@expede.wtf) reply parent
Ah, I think that happens in Automerge too. As you noted, nested objects have unique IDs, so it's possible to push into (e.g.) "the wrong list". My understanding is that it's less of a common problem than you'd expect, but certainly something that we've talked about and worth further R&D eventually
Brooklyn Zelenka (@expede.wtf)
I've been using the iPadOS 26 Beta, and I hate to say it but the built-in Preview app has fully Sherlocked GoodNotes (for my use case). I feel like a vile turncoat, but also I don't need yet another subscription service just to access my own notes/PDFs... and iPad Preview is honestly pretty decent π€·πΌββοΈ
Brooklyn Zelenka (@expede.wtf) reply parent
(@patternist.xyz please correct or expand below!) Short answer: folks at the lab have thought a bit about what are essentially cherry-pick operations, but it hasn't been explored in depth. Lots of feature still to explore (I want undo/redo!) Do you have an evocative use case for this feature?
DWeb (@getdweb.net) reposted
Starting in ~45 minutes! DWeb Virtual MeetupβThe State of the DWeb: P2P, Local-First, & Where to go from here What are the benefits and challenges of local-first, permission-less, trustworthy p2p networks? Feat. @expede.wtf & Andreas Dzialocha of p2panda RSVP: www.eventbrite.com/e/dweb-meetu...
Brooklyn Zelenka (@expede.wtf) reply parent
But even then, the Haskell prelude fell into a trap where `type String = [Char]` meant strings were slow, and so people switched to various (incompatible) community libraries. IIRC they've settled on one now, but it was wild for quite a few years there
Brooklyn Zelenka (@expede.wtf) reply parent
IMO when doing PL design, there's always the question of who the target audience is, which idioms they expect, what they're optimizing for, and so on
Brooklyn Zelenka (@expede.wtf) reply parent
Like I don't miss destructuring linked lists from my Haskell/Elixir/Clojure days now that I'm mostly writing Rust. I've done a lot of persistent data structure tuning for CRDTs and distributed data, and usually step one in that context is to avoid linked lists under the hood
Brooklyn Zelenka (@expede.wtf) reply parent
I suppose both are nice but they're kind of for different things. That said, unless I'm heavily perf tuning, ultimately I care about the API & you can get pretty close to mutable perf on immutable data with various tricks (e.g. the persistent Okasaki stuff & lots of advancement since then)
Brooklyn Zelenka (@expede.wtf) reply parent
If there's more context on the question, always happy to have my brain picked!
Brooklyn Zelenka (@expede.wtf) reply parent
For lists, I usually want the following: efficient traversals (even if it changes the underlying data from linked list to btree, array, etc), map/filter/reduce, diffing, etc. I use a lot of Sets in my code too, so good support for those and abstractions over list/set like things is helpful
Brooklyn Zelenka (@expede.wtf) reply parent
Thanks for the ping! I'm a fan of kitchen sink preludes, but for strings and lists specifically? π€ I don't find myself doing a ton of string manipulation, though having the ability to serialize/deserialize binary as various string representations like base58, base64, etc is helpful
Soatok (@soatok.bsky.social) reposted
Barking Up The Ratchet Tree β MLS Is Neither Royal Nor Nude One of the first rules you learn about technical writing is, "Know your audience." But often, this sort of advice is given without sufficient weight or practical examples. Instead, you're ushered quickly onto the actual tactile aspects ofβ¦
Brooklyn Zelenka (@expede.wtf) reply parent
β¨πβ¨πβ¨πβ¨
Brooklyn Zelenka (@expede.wtf) reply parent
πΊππΏ
Brooklyn Zelenka (@expede.wtf) reply parent
Czechia > Germany surprised me, but maybe I have a biased sample of the culture? All of the queer people I know there seems pretty pessimistic about Czech politics (many looking to move elsewhere), but I know them through my family which skews conservative so perhaps not a representative sample
razorgirl (@razorgirl.diy) reposted
Reposting because we're quickly reaching the point where everybody should be using a VPN for everything
Bluesky (@bsky.app) reposted
Unfortunately, Bluesky is unavailable in Mississippi right now, due to a new state law that requires age verification for all users. While intended for child safety, we think this law poses broader challenges & creates significant barriers that limit free speech & harm smaller platforms like ours.
Brooklyn Zelenka (@expede.wtf)
I cannot count the number of times the past couple of years I've been checked into flight/hotel/conference and seen my last name spelled as Zelenksky (instead of Zelenka, obvs)
Automerge (@automerge.org) reposted
β¨π€ Thanks to everyone that joined us this week for the Automerge Community Call! If you weren't able to make it, here's the recording, including talks by @patternist.xyz and @matheus23.com πΏ www.youtube.com/watch?v=mhV4... π Call calendar: lu.ma/automerge π Next call is September 24!
Nick Gerakines (@ngerakines.me) reposted
βThe S in MCP stands for security.β β a reminder from @bmann.ca #ProtocolsForPublishers
Brooklyn Zelenka (@expede.wtf) reply parent
π₯³ awyiss! Thanks for taking the time to play with the alpha and do a write up!!
meri πΈ π (@meri.garden) reposted
My second writeup exploring @inkandswitch.com's Keyhive project, this time including a demo of using Keyhive to create groups and delegations in the browser π
Brooklyn Zelenka (@expede.wtf)
π€β¨ Excited to give an introduction to local-first software at the (virtual) DWeb Meetup next week! Sign up here: www.eventbrite.com/e/dweb-meetu...
Automerge (@automerge.org) reposted
The β¨very firstβ¨ of the monthly Automerge Community Call series is happening THIS WEDNESDAY at 9am PT! Talks π€π² β @patternist.xyz: Insights about Automerge 3 internals β @matheus23.com: P2P Automerge Repo with @iroh.computer Come hang out, learn, and ask questions! π Sign up at lu.ma/zv6tpuu4
Brooklyn Zelenka (@expede.wtf)
As someone who's always used lots of em dashes, the latest discourse around "you can tell if something is written by AI if it uses em dashes" is causing me to change how I write so that I pass the Turing Test π
Ink & Switch (@inkandswitch.com) reposted
The Ink & Switch team is coming through London and we're having a social to share some recent news and research from the lab, and catch up with people in London interested in local first, malleable software, and other similar areas of making better computing. Aug 16th, 6pm in London
Brooklyn Zelenka (@expede.wtf) reply parent
Hehe yup exactly
Soatok (@soatok.bsky.social) reposted
Improving Geographical Resilience For Distributed Open Source Teams with FREON In a recent blog post, I laid out the argument that, if you have securely implemented end-to-end encryption in your software, then the jurisdiction where your ciphertext is stored is almost irrelevant. Whereβ¦
Brooklyn Zelenka (@expede.wtf) reply parent
Thanks for the shout out π Also depending on OP's goals, Exceptional uses a lot of the same ideas, but more tuned to specifically error handling with a more Elixir-y feel. It was written before `with` syntax, and hasn't been touch in a long time, but may still be interesting hex.pm/packages/exc...
Josh Price (@joshcprice.bsky.social) reposted reply parent
You just reminded me of the Witchcraft library by @expede.wtf witchcrafters.github.io
Brooklyn Zelenka (@expede.wtf) reply parent
100%! Some countries have done this with various natural resources, so why not technology
Brooklyn Zelenka (@expede.wtf) reply parent
Yes this is exactly the kind of thing I'm trying to figure out how gov'ts [should] invest! Thanks :)
Sarah HΓΆrst (@planetdr.bsky.social) reposted
I am community sourcing a list of people who are actively in search of MS/PhD students in planetary science/astrobiology/exoplanets for Fall 2026. If you are such a person, please fill out the following google form: docs.google.com/forms/d/e/1F...
Brooklyn Zelenka (@expede.wtf) reply parent
I feel like you may have something kicking around for this @chadkoh.com
Brooklyn Zelenka (@expede.wtf)
Anyone have suggestions for worthwhile reads on innovation policy and funding? Not concrete programmes, but rather how the state [should] think about it to be more effective? (For context: I'm coming from FOSS grassroots & market background, so gov't behaviour often seems... let's say "strange")
Brooklyn Zelenka (@expede.wtf) reply parent
I see how I ended up tagged in this, but my *name* is Brooklyn, I'm not in Brooklyn NY. I'm in the other side of the continent (Vancouver, Canada). Keep more room in the post for folks that need it! Keep up the good fight though β fuck ICE
Automerge (@automerge.org) reposted
In case anyone missed it, the shiny new Automerge 3 cuts memory usage by over 10x(!), among other quality of life improvements Check out the blog post here: automerge.org/blog/automer... β¨ππ
Brooklyn Zelenka (@expede.wtf) reply parent
Initial reaction: π€©π€©π€© Moments later: Noooo it's on the other side of the countryyyyyy make them open a second location out here π§ββοΈ π β¨
Brooklyn Zelenka (@expede.wtf)
Welcome to Bluesky, @automerge.org π
Automerge (@automerge.org) reposted
Want to hear about the latest in Automerge? Come join the Community Call Kickoff on August 20 (and sign up for the calendar while you're at it!) lu.ma/zv6tpuu4
Brooklyn Zelenka (@expede.wtf) reply parent
@katiewilde.com door goals π
Ink & Switch (@inkandswitch.com) reposted
Do you write TypeScript? Enjoy Automerge? Love building both tools and community? You might be a great fit for our β¨newβ¨ Automerge TypeScript Maintainer role! www.inkandswitch.com/jobs/automer... (Remote role, π¬π§ UK-based preferred but not required)
Iroh (@iroh.computer) reposted reply parent
"beelay-iroh-chat" is a proof-of-concept chat app exploring beelay & keyhive from @inkandswitch.com with iroh and tauri: github.com/Zyell/beelay... This is folks from www.symplasma.org working on this.
I Post Animal Vids... π (@realjfairclough.bsky.social) reposted
Because you needed a video of a group of cute otters chasing a butterfly... π
Fit Check For My Barb O. Saur Era π³οΈββ§οΈπ³οΈβπ (@brentosaur.bsky.social) reposted
Ozzy going out after raising $190 million for sick kids and a Parkinsonβs cure is metal AF.
Katie Wilde (@katiewilde.com) reposted
@expede.wtf got a new piercing thus becoming unrecognisably different to her topologist peers.
Brooklyn Zelenka (@expede.wtf) reply parent
Could not agree more π― It makes it hard to read versus e.g. Result. But then again I like to write code with errors tailored to context not just one enormous top level enum (which makes error handling difficult)
Brooklyn Zelenka (@expede.wtf)
It's hot out π₯΅ which means it's perfect tepache brewing weather! π»ππΉ (That yeast is sooo happy)
UCAN (@ucan.xyz) reposted
Thanks to everyone that came to the community call today ππ¦β¨ Especially big thanks to Chris Waring and @hugomrdias.bsky.social for showing an initial preview of the revamped UCAN website πππ ucan-staging.pages.dev
Brooklyn Zelenka (@expede.wtf) reply parent
Anyone looking for the meeting passcode: sGmqY0
Brooklyn Zelenka (@expede.wtf) reply parent
Anyone looking for the meeting passcode: sGmqY0
IPFS (@ipfs.tech) reposted
Tomorrow! UCAN is an authentication system that uses web tokens for granting access to resources, rather than relying on a central authority. Lots of overlap with IPFS projects (including @storacha.network) across web2-2.5-3, and we're excited to see the community calls resume.
Brooklyn Zelenka (@expede.wtf) reply parent
Weird! Yeah I also get a 404 there β thanks for the report! Luma π€·πΌββοΈ
pvh (@pvh.ca) reposted
Automerge 3 is here: the heart transplant is complete! Huge improvements in memory usage and (in most cases) correspondingly big performance improvements too. Backwards compatible on disk and the network so there's no reason not to upgrade today: automerge.org/blog/automer...
Brooklyn Zelenka (@expede.wtf) reply parent
πππ Yay congrats π₯³
Blaine (@blaine.bsky.social) reposted reply parent
Iβm ridiculously excited to share that Iβve joined @newpublic.org, working with @clockwerks.bsky.social on their small-but-mighty Local Lab team to build a new product to support local communities come together online in healthy ways.
grjte (@grjte.sh) reposted
1/ Had a great time on the ZK podcast chatting about local-first and emerging use cases for programmable cryptography (ZK, HE, MPC) with @goblinoats.com @arro.bsky.social @nicomnbl.bsky.social . I'm excited for more exploration here & I'd love to hear ideas from both local-first & prog crypto worlds
Brooklyn Zelenka (@expede.wtf) reply parent
I've tried to read this series a couple times and bounced off. I hear REALLY good things, though. Lemme know how it goes and if it's worth giving another shot!
Brooklyn Zelenka (@expede.wtf) reply parent
Probably yes, though we may want to also start thinking about PQC especially give the timelines to get something through the whole process
Simon Willison (@simonwillison.net) reposted
If you configure the Supabase MCP with read-write support it's easy to open yourself up to lethal trifecta attacks where an attacker can e.g. write a message in a support ticket with instructions that cause an MCP client to retrieve and leak data from other tables simonwillison.net/2025/Jul/6/s...
Brooklyn Zelenka (@expede.wtf) reply parent
Yeah this stuff is all hard. In MLS's case, they were the first standardized version of this and really, for *ephemeral messaging* their trade offs make sense. It's still early days for this stuff though; maybe there will be one system that's good for everything with few tradeoffs eventually
Brooklyn Zelenka (@expede.wtf) reply parent
The hard part for PCS is redistributing fresh keys efficiently to authorized members only. You can read about the approach we used in Keyhive here: www.inkandswitch.com/keyhive/note...
Brooklyn Zelenka (@expede.wtf) reply parent
Great question! Yes, in general you have to give up FS. PCS is fine in a local first context, though. Think of it this way: someone added to a doc needs the entire history at that point in time. But you can still change the keys for future updates to kick out eavesdroppers or revoked members
Brooklyn Zelenka (@expede.wtf) reply parent
Ed25519 can be used to cryptographically sign data, so prove that data came from a particular source, authenticate users (incl without passwords), etc. X25519 gives you key exchange. WebCrypto could do this with RSA and P256 etc before but those have various algorithmic issues that X/Ed25519 improve
Paul Frazee (@pfrazee.com) reposted
They had to get through Eds 1 through 25518
Brooklyn Zelenka (@expede.wtf)
It didn't work for me even a few weeks ago on a fresh Chrome download β tried now and it works π Finally: Ed25519 support in all major browsers (Chrome was the holdout) Thanks to @burrito.space , @igalia.com , @protocollabs.bsky.social & many others for ushering this multi-year process through π
Brooklyn Zelenka (@expede.wtf) reply parent
Wow nice photo! Thanks for celebrating with us π
Brooklyn Zelenka (@expede.wtf)
We got a complimentary uh... health potion? β€οΈβ€οΈπ©Άπ§ͺ (Turns out it's port wine and doesn't recover HP)
Dan McKinley (@mcfunley.com) reposted
@avibryant.com is a standup guy macleans.ca/politics/tax...
Phillip Ayoub (@payoub.bsky.social) reposted
Absolutely incredible turnout for Budapest Pride! So proud of all the organizers, including some old friends, who estimate hundreds of thousandsβ major embarrassment to Orban
Brooklyn Zelenka (@expede.wtf) reply parent
π thank you for coming!
Keith Fitzgerald (@keithfitzgerald.bsky.social) reposted
Worth a watch: Head of Signal, Meredith Whittaker, on so-called "agentic AI" and the difference between how it's described in the marketing and what access and control it would actually require to work as advertised.
Brooklyn Zelenka (@expede.wtf) reply parent
So it got an undergraduate degree in philosophy and is hanging out at a bar?
Brooklyn Zelenka (@expede.wtf)
Well that happened ππ @katiewilde.com is my wifey π°πΌββοΈπ°π»ββοΈ
Brooklyn Zelenka (@expede.wtf) reply parent
We want to split out the BeeKEM code into a standalone, but 1. Haven't yet, 2. Existing code needs cleanup, 3. Hasn't had a 3rd party audit. All on roadmap, just "when". Always open to advising someone else to work on it, or potentially someone funding my team to accelerate the above (if aligned)
Brooklyn Zelenka (@expede.wtf) reply parent
So in general, TreeKEM is better for live messaging, BeeKEM is better for high concurrency / local-first apps (like text editing). Often messaging apps want to delete old keys for FS, so TreeKEM is better or you could run consensus epochs over BeeKEM to GC old keys once msgs have been seen by all
Brooklyn Zelenka (@expede.wtf) reply parent
TreeKEM works with linearizable data & needs a coordinator node, but you can delete old messages. It stays approx O(log n) in all cases but sometimes members have to try several times to do an update
Brooklyn Zelenka (@expede.wtf) reply parent
The big difference is that BeeKEM can handle concurrent updates *to causally consistent data* but also you can never delete op history. Its perf also smoothly degrades with # concurrent updates, roughly O(concurrent + log memberCount)
Brooklyn Zelenka (@expede.wtf) reply parent
I'd live for folks to adopt BeeKEM in lots of places, but I don't think it's quite so clean cut. BeeKEM has negative trade offs, too
Local-First Conf (@localfirstconf.com) reposted
Watch @expede.wtf talk about Safe in the Keyhive: Local-first access control with E2EE and capabilities youtu.be/iLp2xBMud10?...
Huxley (@huxleymorgan.bsky.social) reposted
Zoe Tunnell (@zoewithasword.bsky.social) reposted
I ain't quoting that NYT piece because I'm sure it is all over your timeline as is But try and imagine how draining it is to have the Supreme Court rip away your basic rights and then the most prominent paper in the country going DAMN WHY DID YOU DO THAT TO YOURSELF after years of stoking hate
Brooklyn Zelenka (@expede.wtf)
So... we meet again π π¨π¦ cc @dustyweb.bsky.social
pvh (@pvh.ca) reposted
I revealed the @inkandswitch.com secret plan behind our work on local-first software this year at @localfirstconf.com. Now you can learn it too: www.youtube.com/watch?v=9s8O...
Jake Lazaroff (@jakelazaroff.com) reposted
π new blog post! i spent a while looking into homomorphically encrypted CRDTs. spoiler alert: they donβt work super well! (but you should still check it out β i break down what homomorphic encryption is and how it works, and there are lots of explorable explanations along the way!)
Brooklyn Zelenka (@expede.wtf) reply parent
(Here by "few" I mean "at least 10 if we're being optimistic" for FHE, possible fewer for less general options)
Brooklyn Zelenka (@expede.wtf) reply parent
@grjte.sh is also thinking about this stuff a bit
Brooklyn Zelenka (@expede.wtf) reply parent
This stuff is also getting faster all the time. Not practical for live collab right now, but perhaps in a few years. It could be pretty useful for hiding more info on a sync server while allowing more operations than what we're able to get away with in Beelay using more classical techniques
Brooklyn Zelenka (@expede.wtf) reply parent
Nice write up πππ²
meri πΈ π (@meri.garden) reposted
I'm pretty excited about @inkandswitch.com's Keyhive project, and I really wanted to feel solid on the novel key management approach they use called BeeKEM - so I wrote this explainer article about it! Tysm to @expede.wtf for helping me make some sense of you and the team's work β¨
Yet Another Emily (@anomily.bsky.social) reposted reply parent
The Onion successfully parodied this back in March.
DWebYVR (@dwebyvr.org) reposted
Guess what folks? DWeb Camp Cascadia is on, and tickets are live! Aug 8-10, we'll be camping out on Salt Spring Island in the first-ever regional DWeb Camp for the Pacific Northwest. Learn more and get your tickets here: dwebyvr.org/camp/ #dwebcampcascadia @getdweb.net
Vanilla Wine (@likeanoldwine.bsky.social) reposted
π€ Boris (@bmannconsulting.com) reposted
Radicle, an open source p2p collaboration stack around git repos, has a new desktop app @radicle.xyz https://desktop.radicle.xyz/