Sign in

Daniel Norman

@norman.life
758 followers 784 following 370 posts

building software and writing about it Currently working on @radicle.dev and @ipfs.tech local-first software, bicycles, motorbikes, woodworking, fixing,and making stuff norman.life agencymatters.xyz

PostsRepliesMedia
Reposted by Daniel Norman
Department of Decentralization @dod.ngo · 10h
Tomorrow we will have an evening to discuss the frontier(SCNR) of code collaboration on board of @c-base.org We will have talks about @radicle.dev , @jj-vcs.dev, @tangled.org & rngit. RSVP here: platform.openmeet.net/events/code-... Don't get left behind (SCNR#2) when it comes to code collaboration
0409
Reposted by Daniel Norman
Department of Decentralization @dod.ngo · 14/09/2026
We just got a speaker confirmed to also introduce Jujutsu (aka jj) at our meetup on the 5.10 on board of @c-base.org This evening is shaping up nicely and we can have a look into a decent future for code collaboration after Git(Hub) Please RSVP here: platform.openmeet.net/events/code-...
0145
Reposted by Daniel Norman
Tuta @tuta.com · 31/08/2026
If you have a Gmail account, you need to read this. Google's AI now scans your emails and attachments, bank statements, tax files, medical letters, all of it. It turned on by default, and there's a class-action lawsuit over how. Here are 5 moves to shut it off, the switch is hidden in two places:
Image of Sundar Pichai and the Gmail logo
1521466210136
Daniel Norman @norman.life · 01/10/2026
Thanks for sharing. More here fisl.dev/atfisl.html
fisl.dev
ATFISL — content discovery with the AT Protocol
How ATFISL publishes CID locations as dev.fisl.at records on the AT Protocol: the record, the record key, the Lexicon, and indexing.
020
Daniel Norman @norman.life · 30/09/2026
What is the meaning of neutrality in times of such geopolitical turmoil?
220
Daniel Norman @norman.life · 29/09/2026
I think that'd be contrary to the CID aims to represent, which is by definition timeless. And so it belongs in a URL scheme. The `ipfs://` url scheme is an example of that. It implies that download locations for a CID can be resolved via the Amino DHT docs.ipfs.tech/concepts/pub...
docs.ipfs.tech
Public IPFS Utilities | IPFS Docs
Information about hosted public utilities such as public gateways and hosted delegated routing endpoints
011
Daniel Norman @norman.life · 29/09/2026
Exactly. There's a baked in assumption about the DNS resolver/publisher (with pkarr). The endpoint (public key) resolves to a relay via DNS, so the thing that really matters is the DNS resolver/publisher you're using to resolve an endpoint.
000
Daniel Norman @norman.life · 29/09/2026
Cool! Beware of using an undefined `iroh` url scheme, because it's not defined and you could end up colliding if it's ever defined. For radicle-artifact we ended up using radiroh:// which bakes in a specific pkarr DNS publish/resolve endpoint radicle.network/nodes/radicl...
radicle.network
Radicle Repo · rad:z4VYyJ9KuwMNkXGQnmKuGPGKw3inv · radicle.norman.life
Radicle repository hosted on radicle.norman.life. Browse source code, issues, patches, commit history, and contributor activity.
010
Reposted by Daniel Norman
Lexicon Community @lexicon.community · 28/09/2026
@norman.life built ATFISL — a download-location lexicon for AT Protocol keyed by file CID. Multiple URL schemes per file, per-URL expiry, content-addressed identity. Complements FISL, a query interface for aggregating locations across the network. Feedback welcome.
fisl.dev
FISL & ATFISL — Finding Internet Structures & Links
A CID proves what the bytes are. FISL is an HTTP lookup that answers where to get them, and ATFISL publishes the answers on AT Protocol.
052
Reposted by Daniel Norman
DASL @dasl.ing · 24/09/2026
Hey fam! We've been shaping a governance model for DASL, pretty lightweight, in line with the project's philosophy. You know what we'd love? We'd *love* to hear from you (yes, specifically *you* right there) about what you think about it. See: dasl.ing/governance.h...
dasl.ing
DASL: Governance of the DASL Project
The goal of the DASL Project is to develop content-addressing primitives and the technologies that build on them, with a view towards enabling unbundled software and protocol architect...
0176
Daniel Norman @norman.life · 24/09/2026
There’s no way to sugar coat this. This is a big failure. But this doesn’t change our dedication to Radicle’s mission as a sovereign local-first code forge. We will continue to fix and build Radicle
0132
Daniel Norman @norman.life · 16/09/2026
Bummed I couldn’t make it this year, but a bunch of @radicle.dev core contributors will be there @osins.bsky.social @fintohaps.bsky.social @cloudhead.io
090
Reposted by Daniel Norman
Sindre Sorhus @sindresorhus.com · 14/09/2026
I moved from Raycast since they made it non-native and bad. Tinycast is a great native replacement: github.com/abue-ammar/t...
github.com
GitHub - abue-ammar/tinycast: Tinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.
Tinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history. - abue-ammar/tinycast
4554
Reposted by Daniel Norman
DASL @dasl.ing · 14/09/2026
Reminder that we have a CID Congress for your this coming Thursday: luma.com/l9xglle8. Come early, come often! Sad news, @norman.life won't be able to make it but we'll have him over next month instead. If you have a quick demo to give instead, let us know!
luma.com
CID Congress · Luma
CID Congress is a series of working sessions towards making CIDs & content addressing easier to use: more deterministic, better compatibility, leaner…
062
Reposted by Daniel Norman
DASL @dasl.ing · 10/09/2026
FISL, from @norman.life, is an HTTP lookup API that maps CIDs to locations. A client sends a CID and receives the URLs at which the content can be retrieved, together with the identity of the publisher that announced them, when it is known. Check it out! dasl.ing/fisl.html
dasl.ing
DASL: FISL — Finding Internet Structures & Links
FISL is an HTTP lookup API that maps CIDs to locations. A client sends a CID and receives the URLs at which the content can be retrieved, together with the identity of the publisher th...
072
Reposted by Daniel Norman
DASL @dasl.ing · 09/09/2026
Then @norman.life will join us to talk about his work on FISL (an HTTP lookup API that maps CIDs to locations) and datadisco (FISLing AT). tangled.org/dasl.ing/das...
tangled.org
FISL: Finding Internet Structures & Links #2
## What FISL is an HTTP API interface for finding download locations for a CID. ## Open questions - The API design assumes that a URL is enough to encapsulate both the transport protocol and the d...
132
Reposted by Daniel Norman
Chad Fowler @chadfowler.com · 08/09/2026
Trivially share markdown. Pi, Amp, Claude, and chatbox integrations. Agents can now share markdown via privacy-preserving URL (with other agents or people). This maps to a constant pattern where I generate a markdown doc, copy to my buffer, paste into gist.github.com and share mdsnd.freeq.at
mdsnd.freeq.at
mdsnd
0115
Daniel Norman @norman.life · 09/09/2026
The load-bearing vocabulary of Claude louisabraham.github.io/load-bearing/
louisabraham.github.io
The load-bearing vocabulary of Claude
031
Reposted by Daniel Norman
Adam Chalmers @adamchalmers.com · 09/09/2026
Talking to your manager about testing in 2023: "I want to spend a week on our test suite, to help our engineers" no way, please go back to features 2026: "I want to spend a week on our test suite to, to help our agents" 100%, you're promoted, please teach your peers about agentic testing
31477
Daniel Norman @norman.life · 04/09/2026
The kind of beauty I prefer to behold from the safety of an illuminated glass display.
130
Reposted by Daniel Norman
ligi @ligi.de · 21/08/2026
We (@dod.ngo) are in the early stages of planning a meetup around code hosting after github on board of @c-base.org So far we have talks around @radicle.dev and rngit Would also love to have somebody speaking about @tangled.org - anyone knows somebody in Berlin that could speak on it? Or ..
1177
Daniel Norman @norman.life · 04/09/2026
My favourite internet radio station supports 1411 Kbps streaming www.djam.radio/en/
djam.radio
Djam is good | Djam Radio
Djam Radio est une radio éclectique sans pub, sans blabla et sans infos anxiogènes. Voilà pourquoi Djam c'est bien !
000
Daniel Norman @norman.life · 03/09/2026
Not for the core protocol. But there's radicle-artifact for releases and artifacts and that supports CIDs and ipfs:// urls radicle.network/nodes/iris.r...
radicle.network
Radicle Repo · rad:z4VYyJ9KuwMNkXGQnmKuGPGKw3inv · iris.radicle.network
Radicle repository hosted on iris.radicle.network. Browse source code, issues, patches, commit history, and contributor activity.
140
Daniel Norman @norman.life · 03/09/2026
Should we do a livestream sometime so we can get an honest comparison we both stand behind?
150
Daniel Norman @norman.life · 03/09/2026
Indeed. I should have said “by default”. I didn’t mean to mislead. Thanks for the correction
030
Daniel Norman @norman.life · 03/09/2026
I like news! Hit me with it
130
Daniel Norman @norman.life · 03/09/2026
Yes, if you don’t care about local first UX, you are mostly working on public code, and you don’t need built in redundancy of code.
110
Daniel Norman @norman.life · 03/09/2026
I should have used the word custodial rather than owned. Your plc keys are technically owned by you but in Blusky’s custody. I think it should be possible to use your self custodial keys with Bluesky pds — both with did:web and did:plc, but I haven’t tried or read enough about it
230
Daniel Norman @norman.life · 03/09/2026
Where it gets interesting is how repositories are identified. In Radicle, repositories are identified by a hash of its genesis identity document. In Tangled, repositories are identified by a `did:plc`, which similarly is a hash of the signed genesis did document.
160
Daniel Norman @norman.life · 03/09/2026
The main difference between @radicle.dev and @tangled.org is that radicle stores all social artifacts, like issues, patches, and interactions in the git repository, while tangled stores them in your atproto repository In both user actions are signed by a key but in radicle the key is user-owned 🧵
4227
Reposted by Daniel Norman
spence @thepope.dev · 28/08/2026
whatever this is
424419
Reposted by Daniel Norman
Robin Berjon @robin.berjon.com · 26/08/2026
New proposed @dasl.ing spec: Finding Internet Structures & Links (FISL). It's a standard API to map CIDs to locations that they can be retrieved from. See @norman.life's PR over at tangled.org/dasl.ing/das...
tangled.org
FISL: Finding Internet Structures & Links #2
## What FISL is an HTTP API interface for finding download locations for a CID. ## Open questions - The API design assumes that a URL is enough to encapsulate both the transport protocol and the d...
1214
Daniel Norman @norman.life · 26/08/2026
Hey @tangled.org Do you have any docs on the recommended workflows for creating pull requests? For example, I opened a pull request and then rebased and pushed again and it created a new pull request. I may have done this wrong, but it'd be nice to have clarity on how rounds and rebased PR work 🙌
000
Daniel Norman @norman.life · 24/08/2026
See radicle.zulipchat.com#narrow/chann... and www.youtube.com/watch?v=Yv64...
radicle.zulipchat.com
Public view of Radicle | Zulip team chat
Browse the publicly accessible channels in Radicle without logging in.
120
Daniel Norman @norman.life · 23/08/2026
Just read it. We are working on web writes (it's hard in a p2p network!) and support for releases and artifacts is already there with explorer integration soon to be released (app.radicle.xyz/nodes/iris.r...)
app.radicle.xyz
Radicle Repo · rad:z4VYyJ9KuwMNkXGQnmKuGPGKw3inv · iris.radicle.xyz
Radicle repository hosted on iris.radicle.xyz. Browse source code, issues, patches, commit history, and contributor activity.
120
Daniel Norman @norman.life · 21/08/2026
🎯
000
Daniel Norman @norman.life · 21/08/2026
I think I'm @jj-vcs.dev pilled, though I'm not sure if it's my own hype or actual merit. Either way, it's starting to click, albeit slower than I'd like.
081
Daniel Norman @norman.life · 21/08/2026
I'm learning jj (www.jj-vcs.dev) Some gotchas from my first day: - You don't have to name branches 🫶 - Most commands operate on data structures in the repo rather than the working copy - Commit ID != Change ID Thanks @steveklabnik.com for the tutorial steveklabnik.github.io/jujutsu-tuto...
jj-vcs.dev
Jujutsu docs
4272
Daniel Norman @norman.life · 21/08/2026
I'm happy to help with @radicle.dev if you fancy!
010
Daniel Norman @norman.life · 19/08/2026
Must read for those curious about GitHub alternatives, like @radicle.dev and @tangled.org and how they embrace local-first workflows. Exciting to see the Zig community embrace @radicle.dev!
One issue is that Tangled doesn’t seem focused on local-first workflows, meaning that it doesn’t have a way to download Issues in order to view and manage them while offline. It would definitely be possible to implement this, given how atproto works, although it would be less elegant than Radicle’s solution where Issues and PRs are stored in the repository itself, meaning that one pull is enough to get everything at once.

A bigger reason why Radicle is better suited, is that Tangled is federated, while Radicle is p2p. The difference between these two approaches is sometimes hard to see, but here’s an aspect that makes it pretty clear: looking at Issues.

On Radicle there is no authoritative view of what “the Issues” of one repository look like. It all depends on your seeding policy. If you decide to seed all “forks”, then you will see all Issues that exist on the network, but you could also choose a more restrictive policy, where you only seed “forks” from a short list of authors that you follow. In this second case you wouldn’t have to worry about spam because even if a malicious user somewhere is creating spam Issues, those would never reach you (and if you were to choose the ‘seed all’ policy, you would still be able to ban them).

Most importantly, this is a choice made per-node. Each Radicle user can choose for themselves what they want to see.
052
Reposted by Daniel Norman
tierney cyren @bnb.im · 14/08/2026
“coding is largely solved” okay make a new cross platform web browser that supports every web platform spec to 100% compliance
70107280
Reposted by Daniel Norman
DASL @dasl.ing · 06/08/2026
We have lots of cool specs for your own enjoyment — check them out! It'll make you love bright colours even more. dasl.ing
dasl.ing
DASL — Data-Addressed Structures & Links
A small set of simple, standard primitives to work on content-addressed data.
021
Reposted by Daniel Norman
Radicle @radicle.dev · 06/08/2026
Radicle 1.10.0 is out!🌻 radicle.dev/2026/08/05/r...
0198
Reposted by Daniel Norman
Philipp Pohl-Krüger @matheus23.com · 25/07/2026
The browser is the wrong medium for local-first 🫠 Act accordingly. (I don't think we can fix browsers unfortunately)
8372
Daniel Norman @norman.life · 03/08/2026
That's also the conclusion I've sadly arrived at
020
Daniel Norman @norman.life · 31/07/2026
I wouldn't be surprised if that's soluable with a list of reference implementations in dasl.ing/llms.txt
dasl.ing
110
Reposted by Daniel Norman
calle @calle.bsky.social · 24/07/2026
UPDATE: Bitchat is now mirrored on @radicle.dev — censorship-resistant, peer-to-peer code hosting: iOS/macOS: rad:z2v9tRJz1oknFAqCSY5W5c76nVvm6 Android: rad:z347HbE1F4c77DVLvsPe2ApoEEw6f Clone it. Seed it. Keep it alive. 👇
165
Reposted by Daniel Norman
Insufferable Claude @insufferableclaude.bsky.social · 27/07/2026
I now have complete understanding.
031
Daniel Norman @norman.life · 15/07/2026
3rd year at @localfirstconf.com What keeps me coming back isn't the talks -- it's that the same faces keep showing up, and they're slowly turning into friends Feels less like a conference, more like a movement working to elevate user agency with software
1131
Reposted by Daniel Norman
Eileen (╹◡╹) @bumble.blue · 13/07/2026
2026 @localfirstconf.com is truly one of the few places that unite disparate communities—open source, LLMs, p2p, interface design, standards—behind a shared value: user agency and empowerment. How refreshing to witness the openness and curiosity everyone brings to the discussion.
0536