<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: danabramov</title><link>https://news.ycombinator.com/user?id=danabramov</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 03 Sep 2026 04:39:20 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=danabramov" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by danabramov in "New Lower and Upper Bounds for the Grothendieck Constant"]]></title><description><![CDATA[
<p>Thanks for posting. I'm doing some AI vibemathing and running into exactly the difficulties they describe.</p>
]]></description><pubDate>Fri, 14 Aug 2026 21:45:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49304964</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49304964</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49304964</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Protocol Services"]]></title><description><![CDATA[
<p>Here's a link from the post on self-hosting this infra: <a href="https://bsky.network/docs/jetstream-self-host/" rel="nofollow">https://bsky.network/docs/jetstream-self-host/</a></p>
]]></description><pubDate>Fri, 14 Aug 2026 12:04:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49297657</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49297657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49297657</guid></item><item><title><![CDATA[Bluesky Protocol Services]]></title><description><![CDATA[
<p>Article URL: <a href="https://atproto.com/blog/introducing-bluesky-protocol-services">https://atproto.com/blog/introducing-bluesky-protocol-services</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49293324">https://news.ycombinator.com/item?id=49293324</a></p>
<p>Points: 213</p>
<p># Comments: 72</p>
]]></description><pubDate>Fri, 14 Aug 2026 00:14:28 +0000</pubDate><link>https://atproto.com/blog/introducing-bluesky-protocol-services</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49293324</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49293324</guid></item><item><title><![CDATA[New comment by danabramov in "ATProto for Distributed Systems Engineers"]]></title><description><![CDATA[
<p>Some atproto designers come (somewhat disillusioned) from the p2p world, you can read what they have to say about that here: <a href="https://atproto.com/articles/atproto-ethos#peer-to-peer" rel="nofollow">https://atproto.com/articles/atproto-ethos#peer-to-peer</a> and <a href="https://atproto.com/articles/atproto-ethos#synthesis" rel="nofollow">https://atproto.com/articles/atproto-ethos#synthesis</a></p>
]]></description><pubDate>Mon, 10 Aug 2026 11:41:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49242374</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49242374</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49242374</guid></item><item><title><![CDATA[New comment by danabramov in "ATProto for Distributed Systems Engineers"]]></title><description><![CDATA[
<p><i>>Yes, the user data is decoupled from the apps, but aren't both stored on some kind of instances?</i><p>There are two main kinds of "nodes" in atproto:<p>- Hosting aka "personal data servers" (PDS). This is dumb JSON hosting that you can query by HTTP or watch by Websocket. Super cheap to run. They don't talk to each other. You can have one per user, or one per many thousands.<p>- Apps. These are your normal webapps. (But they ingest data from everyone's hostings.) They also don't talk to each other.<p>So yes, there are "instances" in the sense of "boxes which run software" but the topology is completely different from Mastodon or such. Data flows from hosting into apps (and then apps write to hosting). There is no hosting-to-hosting or app-to-app connection. Hosting is app-agnostic, and apps are hosting-agnostic.<p>To make all of this practical, there are things in the middle that make the situation easier for app developers — either relays (which combine event stream from many hostings), or caches like Hubble[1] and Constellation[2] (which let you query the entire network in one request).<p><i>>Aren't we making some kind of federated network by deciding on our app server which event streams or which users/apps pushing updates to listen to?</i><p>Ideally you would listen to every relevant event from the entire network (and filter out every irrelevant one). It isn't hard today — you can either use an existing relay or run your own for ~$30/month or pool with someone. The discovery mechanism is that (1) a hosting can request any relay to crawl it, and (2) a relay can discover more hostings it hasn't crawled yet by following links — similar to how Google crawls the web.<p>[1]: <a href="https://atproto.com/blog/introducing-hubble-a-public-mirror-for-the-whole-atmosphere" rel="nofollow">https://atproto.com/blog/introducing-hubble-a-public-mirror-...</a><p>[2]: <a href="https://constellation.microcosm.blue/" rel="nofollow">https://constellation.microcosm.blue/</a></p>
]]></description><pubDate>Mon, 10 Aug 2026 11:39:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=49242353</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49242353</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49242353</guid></item><item><title><![CDATA[New comment by danabramov in "ATProto for Distributed Systems Engineers"]]></title><description><![CDATA[
<p>Shameless plug, but if this got you interested, I have a couple of longreads on the topic:<p>- <a href="https://overreacted.io/a-social-filesystem/" rel="nofollow">https://overreacted.io/a-social-filesystem/</a><p>- <a href="https://overreacted.io/there-are-no-instances-in-atproto/" rel="nofollow">https://overreacted.io/there-are-no-instances-in-atproto/</a><p>From the official site, I'd also recommend <a href="https://atproto.com/articles/atproto-ethos" rel="nofollow">https://atproto.com/articles/atproto-ethos</a></p>
]]></description><pubDate>Mon, 10 Aug 2026 11:34:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=49242294</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49242294</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49242294</guid></item><item><title><![CDATA[What Is the Atmosphere?]]></title><description><![CDATA[
<p>Article URL: <a href="https://lab.leaflet.pub/3mrq6ma5dgs2x">https://lab.leaflet.pub/3mrq6ma5dgs2x</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49089604">https://news.ycombinator.com/item?id=49089604</a></p>
<p>Points: 7</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 28 Jul 2026 20:37:33 +0000</pubDate><link>https://lab.leaflet.pub/3mrq6ma5dgs2x</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49089604</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49089604</guid></item><item><title><![CDATA[New comment by danabramov in "Building on ATProto"]]></title><description><![CDATA[
<p>You can check yourself using <a href="https://pds.ls" rel="nofollow">https://pds.ls</a>, just open any handle there that has Tangled repos</p>
]]></description><pubDate>Fri, 24 Jul 2026 04:47:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=49031304</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49031304</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49031304</guid></item><item><title><![CDATA[New comment by danabramov in "Introduction to Formal Verification with Lean Part 1"]]></title><description><![CDATA[
<p>It works on the type system level instead of at runtime. So you don't actually need to "run" any code to verify it, and you can verify it <i>for all possible inputs</i>, even infinity of them, rather than for the ones that exist in your test.</p>
]]></description><pubDate>Wed, 22 Jul 2026 12:23:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=49005629</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49005629</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49005629</guid></item><item><title><![CDATA[New comment by danabramov in "Introduction to Formal Verification with Lean Part 1"]]></title><description><![CDATA[
<p>Lean is super cool. If you're curious how proof checking works (on the type system level), I wrote an article about that: <a href="https://overreacted.io/beyond-booleans/" rel="nofollow">https://overreacted.io/beyond-booleans/</a><p>Here's another article I wrote that gives some intuition about the role of axioms in Lean: <a href="https://overreacted.io/the-math-is-haunted/" rel="nofollow">https://overreacted.io/the-math-is-haunted/</a><p>And here's a longer primer on Lean's syntax: <a href="https://overreacted.io/a-lean-syntax-primer/" rel="nofollow">https://overreacted.io/a-lean-syntax-primer/</a><p>Finally, if this got this even a little bit curious, I <i>strongly</i> encourage you to play the Natural Number Game: <a href="https://adam.math.hhu.de/#/g/leanprover-community/nng4" rel="nofollow">https://adam.math.hhu.de/#/g/leanprover-community/nng4</a><p>This is the best intro to Lean I know, plus it teaches you why a + b = b + a.</p>
]]></description><pubDate>Wed, 22 Jul 2026 12:03:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49005397</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=49005397</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49005397</guid></item><item><title><![CDATA[New comment by danabramov in "Claude Fable produced a counterexample to the Jacobian Conjecture"]]></title><description><![CDATA[
<p>How much do you try to understand while doing it? I.e. how many levels of abstraction down in your own understanding do you go vs vibing at the surface level?</p>
]]></description><pubDate>Mon, 20 Jul 2026 11:55:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48977513</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48977513</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48977513</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p><i>>want to give people <usename>.<domain> account</i><p>To clarify, do you mean you want their <i>domain handles</i> to look like this, or do you want to make them all have `did:web` identities? These are two different questions. Domain handles would work either way (with `did:plc` or `did:web`).<p>Indeed, the choice between `did:plc` and `did:web` is precisely "would I rather host tie identity JSON document to an entry in a centralized open source publicly verifiable registry that is moving to be maintained as neutrally as possible, or would I rather choose to tie my identity JSON document to a domain". And that choice has to be done at the account creation because every DID, by design, is immutable.<p>What options are lacking in that choice? It feels like it has an option for a pragmatist and an option for a purist.<p><i>>Ergo, did:web does not provide the same UX as did:plc</i><p>I mean, that <i>is</i> the difference between them. `did:web` means "I don't want to depend on anyone except domain authorities; I'm fine with losing identity if I lose the domain". Choosing `did:plc` means "I'm okay with depending on a central registry and find the threat model around it acceptable; I never worry about losing a domain". Both options are available.</p>
]]></description><pubDate>Thu, 16 Jul 2026 18:00:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48937967</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48937967</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48937967</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p>Let me try to explain my position.<p>The parent post says "the only viable instance" which implicitly packs an assumption of Mastodon-like topology: a single product is expected to be split into many "instances", with some of them being more or less "viable", and that a lack of many "viable" "instances" is perceived as the protocol not being a real thing, or failing to live up to its promise. (How else are you reading "viable instance"?)<p>I believe that if you look at the network topology, this argument becomes much closer to "Google Reader being the only viable instance of Google Reader means RSS is a scam with a single player". Which is an absurd thing to say. That is what I'm trying to show by picking at the word "instance".<p>Do you find my argument flawed, or just the way I present it? How do you prefer I present it alternatively? And how do <i>you</i> read the parent post? My issue isn't with the word, but with the implication in the parent post.</p>
]]></description><pubDate>Thu, 16 Jul 2026 17:49:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48937819</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48937819</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48937819</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p>I'll try to mention it once per discussion page in the future. Also, I have not been working at Bluesky for over a year. While I was there, I was working on the client app and not the protocol. In fact, initially I thought the protocol stuff was a bunch of nonsense.</p>
]]></description><pubDate>Thu, 16 Jul 2026 15:28:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48935896</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48935896</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48935896</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p>I did read your post :) Yes, you can't migrate between PLC and WEB methods. It's not possible. I get that it's frustrating if you learn about it <i>after</i> making an account. Is that the whole concern?<p>I was replying to this:<p><i>>not being able to self host a true alternative to did:plc has put a halt to that for now while I figure out what I want to do.</i><p>I'm saying I don't know what this means. You can fully self-host with `did:web`. Yes, it's unfortunate that you've already made an account by the time you've realized that. I think that's still different from "not being able to self host".<p>Unless I'm just parsing what you wrote incorrectly, which is quite possible!</p>
]]></description><pubDate>Thu, 16 Jul 2026 15:19:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48935782</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48935782</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48935782</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p><i>>If you want to run a social network on ATProto, you do need the relay and app view, and those are indeed heavy requirements, but the architecture is not the same, and it depends what you're actually trying to achieve.</i><p>Note those are not heavy requirements in any atproto-specific sense.<p>Running an atproto relay (at the current scale) is $30/month. If you're running a popular app, this is probably comparable with some of your SaaS subscriptions. Or you could use a community-run one or pool resources with other apps. Also, many atproto apps don't use a relay at all, and rely on a community cache like <a href="https://constellation.microcosm.blue/" rel="nofollow">https://constellation.microcosm.blue/</a> instead.<p>Running an AppView is only as expensive as <i>running any backend</i>. "AppViews are expensive" is a myth extrapolated from "Running a copy of a Bluesky AppView is expensive", which is true because a Bluesky AppView is a backend server that's supposed to store and serve millions of posts. It would be expensive with any technology! Atproto isn't adding an extra tax here. Running a centralized service at the same scale would be equally expensive, and a Mastodon instance at that scale would simply not run.<p>If your AppView only serves <i>your app's</i> users (and has nothing to do with Bluesky), the cost is cheap or nonexistent. It's just a normal backend that listens to a websocket stream and writes some stuff to a database.</p>
]]></description><pubDate>Thu, 16 Jul 2026 14:54:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48935444</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48935444</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48935444</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p><i>>It probably is entirely true that different apps can spin up on atproto independently</i><p>It's true, and I want to emphasize that they need <i>nothing to do</i> with microblogging or Bluesky posts. I think it's important to internalize this because most discussions about Mastodon are about microblogging modality. But, say, Tangled is a <i>git hosting</i> with social layer (issues, PRs) on atproto. So we are really comparing fundamentally different ecosystems already. Atproto is not centered around Bluesky posts or Bluesky app; it's just that Bluesky app happens to be the biggest app built on top of atproto primitives.<p><i>>This, what do you say right here, is the actual concern. This specific app (or any atproto app) appears to have significant lock-in—to the point where you identify it as "natural" that it would be so—while selling itself on decentralization.</i><p>You're starting with the Mastodon perspective of "a social network is a set of fragmented views of the network with no shared sense of identity or global aggregation/search which talk to each other" and consider it natural.<p>Whereas I start with the regular user's understanding of a social app — it's a place where you can come, where you can see <i>the entire world</i> at once, where all features (global search, recommendations, follow graph) are global by default, and where you don't "belong" to any particular community to an extent that this community can cut you off from your followers or ban you. Instead, the app is serviced by <i>app's developers</i> and you're at their mercy.<p>Now, what does atproto try to do?<p>From the user's point of view, it <i>looks</i> as the familiar "centralized" approach — apps can have global search, recommendation algorithms, there's no fragmentation. Each app is a prism over the entire network and always shows a consistent view over it. App developers <i>do</i> have full control over how the app presents it. There aren't 100 copies of the same app because there are 100 communities on it. This split into instances is a "Mastodon-brained" way of thinking.<p><i>However,</i> the underlying data lives in an app-agnostic layer. So Blacksky <i>was able</i> to kickstart their own projection of atproto network (filtered down to Bluesky stuff since their app is initially a clone of Bluesky). It's not an easy job to make it work for billions of posts, but <i>no Mastodon instance even tries to support that scale</i>. Atproto makes supporting that scale possible, and then we say "oh but this is expensive". Of course it is — it's expensive to store content from millions of people with any technology. But unlike centralized services (which atproto tries to match in baseline UX expectations), it is <i>possible</i> to spin up alternative projections of the same network that fully participate in it, when folks have concrete reasons to do so. (For example, Blacksky is able to take different moderation decisions as a result.)<p>You can go further. <a href="https://reddwarf.app/" rel="nofollow">https://reddwarf.app/</a> is a working app displaying Bluesky data that <i>does not have a backend at all</i> and does not use Bluesky (or Blacksky) API servers. Instead, it loads data directly from the hosting layer, and uses <a href="https://constellation.microcosm.blue/" rel="nofollow">https://constellation.microcosm.blue/</a> network index for querying relationships (like "give me a list of likes for this post"). This is less efficient than maintaining an index (so it loads a bit slower) but it's totally a workable model. The Constellation index itself, if I'm not mistaken, runs on someone's Raspberry Pi.<p>Of course, you can also "scale down" atproto to make it apples-to-apples with Mastodon. You'd add some code that filters down events only to those that are "relevant" to people who are "on" your "server" and their follows. This would be a "small world" atproto that would be easy for anyone to spin up. It's not very exciting but I guess we'll see more experiments in that area as people realize it is possible. But it's also just less exciting because you can also run the real thing if you're motivated enough. And the fact that anyone can choose to do it if there's a real need means people don't create a 1000 of shallow Bluesky clones. It just doesn't solve any actual problems other than trying to win arguments like this.<p>I don't think "decentralization" is a super useful prism to think about atproto. Atproto is a high scale syndication protocol, like typed signed RSS via HTTP and WebSockets with a shared data model and identity upstreamed into the web. This protocol enables independent apps, independent hosting providers, and independent caches and relays to build and participate in a shared ecosystem. That ecosystem lives on the web, so it's "decentralized" in the same sense that web itself is. But it doesn't mean that each product must be split into a thousand pieces at the UX level.</p>
]]></description><pubDate>Thu, 16 Jul 2026 14:42:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48935291</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48935291</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48935291</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p><i>>designed it around their index as the primary means of accessing anything on the web</i><p>That doesn't actually translate from the analogy though.<p>You don't use Bluesky to access <i>other</i> apps' data on atproto, you use <i>those apps</i>. You go to <a href="https://tangled.org/" rel="nofollow">https://tangled.org/</a> for Tangled (atproto github), you go to <a href="https://leaflet.pub/" rel="nofollow">https://leaflet.pub/</a> for Leaflet (one of atproto blogging platforms), and so on. Bluesky is not a "one stop shop" for all atproto stuff, it's just one of atproto apps, and anyone can make their own app.<p>The apps themselves have to compete on their own merit, completely unrelated to the protocol stuff. The protocol just makes them all interoperable and changes market dynamics (e.g. someone can resurrect a dead app by creating a new projection of existing data). If your criticism is that there aren't many apps on atproto yet — fair, but you can make those! People <i>are</i> making those. This is something you can actively contribute to, there's no permission you need to ask.<p>The "Bluesky index" is the index of <i>Bluesky posts</i>, so naturally you access that primarily through the <i>Bluesky app</i>. (Although even that isn't set in stone — see Blacksky who run their own stack for everything, but also show Bluesky posts.) And then, if you make your own app with your own data types, it would not be related to Bluesky in any way.<p><i>>But in the 2020s, after watching what Google did to the web without being able to control the protocol from the beginning, a comparison of Bluesky to Google doesn't really assuage the concern people have about centralization.</i><p>Sure, and is your argument that it's better if the web had never happened? Atproto is going to IETF so it will become a "proper" internet standard. The way you shift the balance of power is by building your own stuff on it.</p>
]]></description><pubDate>Thu, 16 Jul 2026 13:31:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48934298</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48934298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48934298</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p>Are you going to write it below my every comment? I've already replied to this here: <a href="https://news.ycombinator.com/item?id=48933050">https://news.ycombinator.com/item?id=48933050</a>. Also, I don't think either claim in my reply is dependent on who wrote it. You can trivially verify them yourself.</p>
]]></description><pubDate>Thu, 16 Jul 2026 11:28:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48933073</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48933073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48933073</guid></item><item><title><![CDATA[New comment by danabramov in "Bluesky Trademarks ATProto"]]></title><description><![CDATA[
<p>I haven't worked at Bluesky for over a year now. I'm genuinely excited about the protocol, and have written a bunch of things about it while I had free time between jobs. (Ironically I had no time to write about it while <i>at</i> Bluesky because I was too busy working around React Native bugs.)<p><i>>it's impossible to actually participate in Bluesky using an alternative relay</i><p>I don't know what you mean by this. <a href="https://blacksky.community/" rel="nofollow">https://blacksky.community/</a> is definitely running their own relay. Here's a community listing of some relays: <a href="https://atproto.at/relays" rel="nofollow">https://atproto.at/relays</a>.<p>Here's an example of connecting to one of them: <a href="https://pdsls.dev/firehose?instance=wss%3A%2F%2Feurope.firehose.network" rel="nofollow">https://pdsls.dev/firehose?instance=wss%3A%2F%2Feurope.fireh...</a>. From an app's perspective, they're completely interchangeable, so as an app developer you can switch to any relay you want, or run your own.<p>Many apps don't even use a relay at all, instead relying on caches like <a href="https://constellation.microcosm.blue/" rel="nofollow">https://constellation.microcosm.blue/</a>.</p>
]]></description><pubDate>Thu, 16 Jul 2026 11:24:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48933050</link><dc:creator>danabramov</dc:creator><comments>https://news.ycombinator.com/item?id=48933050</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48933050</guid></item></channel></rss>