{"exhaustive":{"nbHits":false,"typo":false},"exhaustiveNbHits":false,"exhaustiveTypo":false,"hits":[{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"charcircuit"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"&gt;It's decentralized<p>But extremely fragile since if even one node in the network goes down the network is broken and if two go down then there will be sites no longer reachable from others. You want to know the other <em>nodes</em> in the network so you can deal with <em>nodes</em> that go down or leave the network."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"You need a webring"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://shub.club/writings/2026/july/you-need-a-webring/"}},"_tags":["comment","author_charcircuit","story_48796792"],"author":"charcircuit","comment_text":"&gt;It&#x27;s decentralized<p>But extremely fragile since if even one node in the network goes down the network is broken and if two go down then there will be sites no longer reachable from others. You want to know the other nodes in the network so you can deal with nodes that go down or leave the network.","created_at":"2026-07-06T01:23:19Z","created_at_i":1783300999,"objectID":"48799728","parent_id":48798339,"story_id":48796792,"story_title":"You need a webring","story_url":"https://shub.club/writings/2026/july/you-need-a-webring/","updated_at":"2026-07-06T01:25:01Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"throwawaypath"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"&gt;Since Rayfish appears to be a Claude coded wrapper over Iroh it should at-least give credit to use of Iroh's discovery and relay <em>nodes</em>.<p>But that would take understanding network fundamentals, architecture, etc. Who needs any of that cruft any longer?"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Rayfish, Peer-to-peer mesh VPN with no server to trust"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://rayfish.xyz/blog/01-introducing-rayfish"}},"_tags":["comment","author_throwawaypath","story_48746038"],"author":"throwawaypath","children":[48798698,48799255],"comment_text":"&gt;Since Rayfish appears to be a Claude coded wrapper over Iroh it should at-least give credit to use of Iroh&#x27;s discovery and relay nodes.<p>But that would take understanding network fundamentals, architecture, etc. Who needs any of that cruft any longer?","created_at":"2026-07-05T21:57:57Z","created_at_i":1783288677,"objectID":"48798326","parent_id":48796218,"story_id":48746038,"story_title":"Rayfish, Peer-to-peer mesh VPN with no server to trust","story_url":"https://rayfish.xyz/blog/01-introducing-rayfish","updated_at":"2026-07-06T03:31:01Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gslin"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"Bench Press: Leaking Text <em>Nodes</em> with CSS (2024)"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"https://blog.pspaul.de/posts/bench-press-leaking-text-<em>nodes</em>-with-css/"}},"_tags":["story","author_gslin","story_48798317"],"author":"gslin","created_at":"2026-07-05T21:56:49Z","created_at_i":1783288609,"num_comments":0,"objectID":"48798317","points":4,"story_id":48798317,"title":"Bench Press: Leaking Text Nodes with CSS (2024)","updated_at":"2026-07-06T02:09:32Z","url":"https://blog.pspaul.de/posts/bench-press-leaking-text-nodes-with-css/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dgrunwald"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"&gt; Furthermore parsing JSON or YAML gives you the basic data types like lists and dictionaries. Parsing XML gives you an AST that requires a lot more effort to turn into data in your domain.<p>More precisely: in XML, elements (<em>nodes</em>) are named/labeled. (&quot;node-labeled graph&quot;)\nIn JSON, keys (edges) are named. (&quot;edge-labeled graph&quot;)<p>In programming, we need names for the fields in our structures (edges between objects), so JSON is a much better match than XML (which needs contortions to handle this use case -- e.g. by having nesting levels alternate between element=node and element=edge).\nOnly in some object-oriented cases (which derived class should the deserializer construct?) do you care about node labels -- but usually that's in addition to edge labels, so a &quot;_type&quot; key in JSON is still easier than XML."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Do you hate XML? (2010)"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://sigfrid-lundberg.se/entries/2010/07/hate_xml/"}},"_tags":["comment","author_dgrunwald","story_48796438"],"author":"dgrunwald","children":[48797527,48797608],"comment_text":"&gt; Furthermore parsing JSON or YAML gives you the basic data types like lists and dictionaries. Parsing XML gives you an AST that requires a lot more effort to turn into data in your domain.<p>More precisely: in XML, elements (nodes) are named&#x2F;labeled. (&quot;node-labeled graph&quot;)\nIn JSON, keys (edges) are named. (&quot;edge-labeled graph&quot;)<p>In programming, we need names for the fields in our structures (edges between objects), so JSON is a much better match than XML (which needs contortions to handle this use case -- e.g. by having nesting levels alternate between element=node and element=edge).\nOnly in some object-oriented cases (which derived class should the deserializer construct?) do you care about node labels -- but usually that&#x27;s in addition to edge labels, so a &quot;_type&quot; key in JSON is still easier than XML.","created_at":"2026-07-05T20:01:28Z","created_at_i":1783281688,"objectID":"48797476","parent_id":48797154,"story_id":48796438,"story_title":"Do you hate XML? (2010)","story_url":"https://sigfrid-lundberg.se/entries/2010/07/hate_xml/","updated_at":"2026-07-06T03:56:17Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"edflsafoiewq"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"In data structure terms, attributes do allow <em>nodes</em> to be decorated with additional information without forcing any change on existing parsers. In JSON, this would require swapping, eg. &quot;str&quot; -&gt; {&quot;value&quot;: &quot;str&quot;, &quot;attrib1&quot;: &quot;...&quot;}."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Do you hate XML? (2010)"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://sigfrid-lundberg.se/entries/2010/07/hate_xml/"}},"_tags":["comment","author_edflsafoiewq","story_48796438"],"author":"edflsafoiewq","comment_text":"In data structure terms, attributes do allow nodes to be decorated with additional information without forcing any change on existing parsers. In JSON, this would require swapping, eg. &quot;str&quot; -&gt; {&quot;value&quot;: &quot;str&quot;, &quot;attrib1&quot;: &quot;...&quot;}.","created_at":"2026-07-05T19:53:29Z","created_at_i":1783281209,"objectID":"48797414","parent_id":48797304,"story_id":48796438,"story_title":"Do you hate XML? (2010)","story_url":"https://sigfrid-lundberg.se/entries/2010/07/hate_xml/","updated_at":"2026-07-05T22:34:47Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gz5"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"3 vpn segments:<p>1. foss, p2p-only, no server or intermediate <em>nodes</em> to trust (rayfish)<p>2. foss, brokered if necessary with all <em>nodes</em> self-hosted (openziti, nebula, some wireguard variants)<p>3. non-foss, mix of p2p and brokered, host some of the <em>nodes</em> yourself (openvpn, myriad of wireguard variants/wrappers like tailscale, headscale, netbird, netmaker)<p>why is #3 so much more popular?"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Rayfish, Peer-to-peer mesh VPN with no server to trust"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://rayfish.xyz/blog/01-introducing-rayfish"}},"_tags":["comment","author_gz5","story_48746038"],"author":"gz5","comment_text":"3 vpn segments:<p>1. foss, p2p-only, no server or intermediate nodes to trust (rayfish)<p>2. foss, brokered if necessary with all nodes self-hosted (openziti, nebula, some wireguard variants)<p>3. non-foss, mix of p2p and brokered, host some of the nodes yourself (openvpn, myriad of wireguard variants&#x2F;wrappers like tailscale, headscale, netbird, netmaker)<p>why is #3 so much more popular?","created_at":"2026-07-05T19:52:31Z","created_at_i":1783281151,"objectID":"48797406","parent_id":48746038,"story_id":48746038,"story_title":"Rayfish, Peer-to-peer mesh VPN with no server to trust","story_url":"https://rayfish.xyz/blog/01-introducing-rayfish","updated_at":"2026-07-05T20:06:48Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"Groxx"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"Stable IP addresses solve it as well, but these kinds of things are not generally aimed at contexts where those are an option.  Even IPv6 isn't generally stable - the prefix is ISP-defined and tends to vary similarly to IPv4 with CGNAT.<p>There's also &quot;dynamic DNS&quot;, which is basically just caching one side of that server/relay/TUN/STUN handshake, and relying on DNS for global discovery.<p>For Iroh vs Scuttlebutt / DHT, I'll break that into two parts:<p>1) Iroh uses DHT for host discovery: <a href=\"https://docs.iroh.computer/about/faq#how-is-iroh-different-from-other-peer-to-peer-networks\" rel=\"nofollow\">https://docs.iroh.computer/about/faq#how-is-iroh-different-f...</a> , and Iroh is more about &quot;use that DHT to get a usually-direct connection globally and then you can do whatever you want&quot;, while Scuttlebutt is strictly &quot;... and use that connection to exchange append-only logs via gossip, to implement the Scuttlebutt protocol&quot;.  (Iroh does have some first-party protocols you can use, but it's lower level in general)<p>2) Scuttlebutt isn't DHT-based, it's &quot;connect to a known IP to get its data and discover connections&quot; -&gt; &quot;connect to them and repeat...&quot; -&gt; &quot;connect further...&quot; -&gt; etc, plus limited-hop feed replication by default.  There isn't a global lookup to connect to any member or retrieve any data, it's all friend-of-a-friend connections and you can (and do) lose connection to someone if they get a new IP address and there's no F-o-a-F(-o-a-F(...)) replication route from them that reaches you (rare in practice since they likely re-connected to people they follow, which eventually trickles data through the mesh similarly to before).  This is also part of the reason that it works instantly when you're on the same network as someone - it's less &quot;it can work locally if you don't have internet access&quot; and more &quot;local is just a discovery method, the internet isn't special at all because it's all just direct connections&quot;.<p>And as far as I understand Nostr, it's conceptually similar to Scuttlebutt, but with direct support for centralizing for performance (relays) and some degree of mutability / forgetfulness / etc.  Scuttlebutt is a bit extreme about its logs being immutable and the only way to exchange data, and it's part of the reason it can have rather major perf issues (like needing to pull gigabytes of data before you can discover a feed's display name).  (I say this as a fan of Scuttlebutt in principle, but not in practice - there are lots of practical issues with existing implementations that could be solved, but haven't, and it's a large part of why the ecosystem split into other protocols)<p>It may also be worth pointing out that DHTs also need stable hosts to serve as initial bootstrappers, and apps that use them tend to hard-code a web URL where they can get a small list of those <em>nodes</em>.  They just use them to discover other <em>nodes</em>, and save them for next time so the bootstrappers aren't constantly needed."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Rayfish, Peer-to-peer mesh VPN with no server to trust"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://rayfish.xyz/blog/01-introducing-rayfish"}},"_tags":["comment","author_Groxx","story_48746038"],"author":"Groxx","children":[48797535],"comment_text":"Stable IP addresses solve it as well, but these kinds of things are not generally aimed at contexts where those are an option.  Even IPv6 isn&#x27;t generally stable - the prefix is ISP-defined and tends to vary similarly to IPv4 with CGNAT.<p>There&#x27;s also &quot;dynamic DNS&quot;, which is basically just caching one side of that server&#x2F;relay&#x2F;TUN&#x2F;STUN handshake, and relying on DNS for global discovery.<p>For Iroh vs Scuttlebutt &#x2F; DHT, I&#x27;ll break that into two parts:<p>1) Iroh uses DHT for host discovery: <a href=\"https:&#x2F;&#x2F;docs.iroh.computer&#x2F;about&#x2F;faq#how-is-iroh-different-from-other-peer-to-peer-networks\" rel=\"nofollow\">https:&#x2F;&#x2F;docs.iroh.computer&#x2F;about&#x2F;faq#how-is-iroh-different-f...</a> , and Iroh is more about &quot;use that DHT to get a usually-direct connection globally and then you can do whatever you want&quot;, while Scuttlebutt is strictly &quot;... and use that connection to exchange append-only logs via gossip, to implement the Scuttlebutt protocol&quot;.  (Iroh does have some first-party protocols you can use, but it&#x27;s lower level in general)<p>2) Scuttlebutt isn&#x27;t DHT-based, it&#x27;s &quot;connect to a known IP to get its data and discover connections&quot; -&gt; &quot;connect to them and repeat...&quot; -&gt; &quot;connect further...&quot; -&gt; etc, plus limited-hop feed replication by default.  There isn&#x27;t a global lookup to connect to any member or retrieve any data, it&#x27;s all friend-of-a-friend connections and you can (and do) lose connection to someone if they get a new IP address and there&#x27;s no F-o-a-F(-o-a-F(...)) replication route from them that reaches you (rare in practice since they likely re-connected to people they follow, which eventually trickles data through the mesh similarly to before).  This is also part of the reason that it works instantly when you&#x27;re on the same network as someone - it&#x27;s less &quot;it can work locally if you don&#x27;t have internet access&quot; and more &quot;local is just a discovery method, the internet isn&#x27;t special at all because it&#x27;s all just direct connections&quot;.<p>And as far as I understand Nostr, it&#x27;s conceptually similar to Scuttlebutt, but with direct support for centralizing for performance (relays) and some degree of mutability &#x2F; forgetfulness &#x2F; etc.  Scuttlebutt is a bit extreme about its logs being immutable and the only way to exchange data, and it&#x27;s part of the reason it can have rather major perf issues (like needing to pull gigabytes of data before you can discover a feed&#x27;s display name).  (I say this as a fan of Scuttlebutt in principle, but not in practice - there are lots of practical issues with existing implementations that could be solved, but haven&#x27;t, and it&#x27;s a large part of why the ecosystem split into other protocols)<p>It may also be worth pointing out that DHTs also need stable hosts to serve as initial bootstrappers, and apps that use them tend to hard-code a web URL where they can get a small list of those nodes.  They just use them to discover other nodes, and save them for next time so the bootstrappers aren&#x27;t constantly needed.","created_at":"2026-07-05T19:48:45Z","created_at_i":1783280925,"objectID":"48797373","parent_id":48797162,"story_id":48746038,"story_title":"Rayfish, Peer-to-peer mesh VPN with no server to trust","story_url":"https://rayfish.xyz/blog/01-introducing-rayfish","updated_at":"2026-07-05T21:28:16Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"sobowalebukola"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"Hi HN,<p>Over the past few months I've been building pgconverge, an experimental open-source framework for operating multi-master PostgreSQL clusters.<p>The project started as a learning exercise to better understand distributed databases rather than as an attempt to replace PostgreSQL's existing replication model. My goal was to explore what it would take for multiple PostgreSQL <em>nodes</em> to accept writes independently while eventually converging without relying on a designated primary database. Over time, the experiment evolved into a working open-source framework.<p>Some of the areas I explored include:<p>full-mesh replication topology\nconflict resolution using Last-Write-Wins\nHybrid Logical Clocks for ordering concurrent writes\nbootstrapping new <em>nodes</em> into an existing cluster\ndeclarative cluster configuration<p>Github Link: <a href=\"https://github.com/sobowalebukola/pgconverge\" rel=\"nofollow\">https://github.com/sobowalebukola/pgconverge</a><p>Along the way I documented the design decisions in a seven-part engineering series:<p>Why Multi-Master? The Problem with Single-Writer Databases<p><a href=\"https://blog.stackademic.com/why-multi-master-the-problem-with-single-writer-databases-548470efe812\" rel=\"nofollow\">https://blog.stackademic.com/why-multi-master-the-problem-wi...</a><p>Inside pgconverge: Navigating the N \u00d7 (N \u2212 1) Complexity of Full-Mesh Replication<p><a href=\"https://blog.stackademic.com/inside-pgconverge-navigating-the-n-n-1-complexity-of-full-mesh-replication-ad023ab3a308\" rel=\"nofollow\">https://blog.stackademic.com/inside-pgconverge-navigating-th...</a><p>Identity Crisis: How pgconverge Uses UUIDs, Node Names, and Distributed Primary Keys<p><a href=\"https://blog.stackademic.com/identity-crisis-how-pgconverge-uses-uuids-node-names-and-distributed-primary-keys-ad6797c2e1a7\" rel=\"nofollow\">https://blog.stackademic.com/identity-crisis-how-pgconverge-...</a><p>Last-Write-Wins: The Simplest Conflict Resolution and Its Limits in pgconverge<p><a href=\"https://blog.stackademic.com/last-write-wins-the-simplest-conflict-resolution-and-its-limits-in-pgconverge-7b0f160a3b86\" rel=\"nofollow\">https://blog.stackademic.com/last-write-wins-the-simplest-co...</a><p>pgconverge with Hybrid Logical Clocks: When Wall Clocks Are Not Enough<p><a href=\"https://blog.stackademic.com/pgconverge-with-hybrid-logical-clocks-when-wall-clocks-are-not-enough-907d63de5b41\" rel=\"nofollow\">https://blog.stackademic.com/pgconverge-with-hybrid-logical-...</a><p>Bootstrapping New <em>Nodes</em> in pgconverge: pg_basebackup vs COPY Data<p><a href=\"https://blog.stackademic.com/bootstrapping-new-nodes-in-pgconverge-pg-basebackup-vs-copy-data-47cc18384024\" rel=\"nofollow\">https://blog.stackademic.com/bootstrapping-new-<em>nodes</em>-in-pgco...</a><p>Operating Multi-Master PostgreSQL Clusters with pgconverge<p><a href=\"https://blog.stackademic.com/operating-multi-master-postgresql-clusters-with-pgconverge-96df7857a91a\" rel=\"nofollow\">https://blog.stackademic.com/operating-multi-master-postgres...</a>"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Pgconverge \u2013 An experimental multi-master PostgreSQL framework in Go"}},"_tags":["story","author_sobowalebukola","story_48796668","show_hn"],"author":"sobowalebukola","created_at":"2026-07-05T18:33:02Z","created_at_i":1783276382,"num_comments":0,"objectID":"48796668","points":3,"story_id":48796668,"story_text":"Hi HN,<p>Over the past few months I&#x27;ve been building pgconverge, an experimental open-source framework for operating multi-master PostgreSQL clusters.<p>The project started as a learning exercise to better understand distributed databases rather than as an attempt to replace PostgreSQL&#x27;s existing replication model. My goal was to explore what it would take for multiple PostgreSQL nodes to accept writes independently while eventually converging without relying on a designated primary database. Over time, the experiment evolved into a working open-source framework.<p>Some of the areas I explored include:<p>full-mesh replication topology\nconflict resolution using Last-Write-Wins\nHybrid Logical Clocks for ordering concurrent writes\nbootstrapping new nodes into an existing cluster\ndeclarative cluster configuration<p>Github Link: <a href=\"https:&#x2F;&#x2F;github.com&#x2F;sobowalebukola&#x2F;pgconverge\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;sobowalebukola&#x2F;pgconverge</a><p>Along the way I documented the design decisions in a seven-part engineering series:<p>Why Multi-Master? The Problem with Single-Writer Databases<p><a href=\"https:&#x2F;&#x2F;blog.stackademic.com&#x2F;why-multi-master-the-problem-with-single-writer-databases-548470efe812\" rel=\"nofollow\">https:&#x2F;&#x2F;blog.stackademic.com&#x2F;why-multi-master-the-problem-wi...</a><p>Inside pgconverge: Navigating the N \u00d7 (N \u2212 1) Complexity of Full-Mesh Replication<p><a href=\"https:&#x2F;&#x2F;blog.stackademic.com&#x2F;inside-pgconverge-navigating-the-n-n-1-complexity-of-full-mesh-replication-ad023ab3a308\" rel=\"nofollow\">https:&#x2F;&#x2F;blog.stackademic.com&#x2F;inside-pgconverge-navigating-th...</a><p>Identity Crisis: How pgconverge Uses UUIDs, Node Names, and Distributed Primary Keys<p><a href=\"https:&#x2F;&#x2F;blog.stackademic.com&#x2F;identity-crisis-how-pgconverge-uses-uuids-node-names-and-distributed-primary-keys-ad6797c2e1a7\" rel=\"nofollow\">https:&#x2F;&#x2F;blog.stackademic.com&#x2F;identity-crisis-how-pgconverge-...</a><p>Last-Write-Wins: The Simplest Conflict Resolution and Its Limits in pgconverge<p><a href=\"https:&#x2F;&#x2F;blog.stackademic.com&#x2F;last-write-wins-the-simplest-conflict-resolution-and-its-limits-in-pgconverge-7b0f160a3b86\" rel=\"nofollow\">https:&#x2F;&#x2F;blog.stackademic.com&#x2F;last-write-wins-the-simplest-co...</a><p>pgconverge with Hybrid Logical Clocks: When Wall Clocks Are Not Enough<p><a href=\"https:&#x2F;&#x2F;blog.stackademic.com&#x2F;pgconverge-with-hybrid-logical-clocks-when-wall-clocks-are-not-enough-907d63de5b41\" rel=\"nofollow\">https:&#x2F;&#x2F;blog.stackademic.com&#x2F;pgconverge-with-hybrid-logical-...</a><p>Bootstrapping New Nodes in pgconverge: pg_basebackup vs COPY Data<p><a href=\"https:&#x2F;&#x2F;blog.stackademic.com&#x2F;bootstrapping-new-nodes-in-pgconverge-pg-basebackup-vs-copy-data-47cc18384024\" rel=\"nofollow\">https:&#x2F;&#x2F;blog.stackademic.com&#x2F;bootstrapping-new-nodes-in-pgco...</a><p>Operating Multi-Master PostgreSQL Clusters with pgconverge<p><a href=\"https:&#x2F;&#x2F;blog.stackademic.com&#x2F;operating-multi-master-postgresql-clusters-with-pgconverge-96df7857a91a\" rel=\"nofollow\">https:&#x2F;&#x2F;blog.stackademic.com&#x2F;operating-multi-master-postgres...</a>","title":"Show HN: Pgconverge \u2013 An experimental multi-master PostgreSQL framework in Go","updated_at":"2026-07-05T22:53:31Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"lmwnshn"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"Yup! MIT licensed, do whatever you want, you can also just use it directly with <em>nodejs</em> installed through `npx clankerbend` [0]. The screenshot on the github repo links you to a YouTube demo.<p>Warning: I use this daily myself for work, but beyond me arguing with it to get the CDP architecture, this was completely vibe-coded. I mostly use vim mode (jump to line, jump to prev/next user message) and the account switcher.<p>[0] <a href=\"https://github.com/onewillai/clankerbend\" rel=\"nofollow\">https://github.com/onewillai/clankerbend</a>"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"GPT-5.5 Codex reasoning-token clustering may be leading to degraded performance"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/openai/codex/issues/30364"}},"_tags":["comment","author_lmwnshn","story_48789428"],"author":"lmwnshn","comment_text":"Yup! MIT licensed, do whatever you want, you can also just use it directly with nodejs installed through `npx clankerbend` [0]. The screenshot on the github repo links you to a YouTube demo.<p>Warning: I use this daily myself for work, but beyond me arguing with it to get the CDP architecture, this was completely vibe-coded. I mostly use vim mode (jump to line, jump to prev&#x2F;next user message) and the account switcher.<p>[0] <a href=\"https:&#x2F;&#x2F;github.com&#x2F;onewillai&#x2F;clankerbend\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;onewillai&#x2F;clankerbend</a>","created_at":"2026-07-05T17:59:49Z","created_at_i":1783274389,"objectID":"48796328","parent_id":48794090,"story_id":48789428,"story_title":"GPT-5.5 Codex reasoning-token clustering may be leading to degraded performance","story_url":"https://github.com/openai/codex/issues/30364","updated_at":"2026-07-05T18:03:01Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"keepupnow"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"It is wrong to describe these P2P products as server-less. In order to connect two peers over WAN it needs a form of coordination server. Since Rayfish appears to be a Claude coded wrapper over Iroh it should at-least give credit to use of Iroh's discovery and relay <em>nodes</em>."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Rayfish, Peer-to-peer mesh VPN with no server to trust"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://rayfish.xyz/blog/01-introducing-rayfish"}},"_tags":["comment","author_keepupnow","story_48746038"],"author":"keepupnow","children":[48800320,48798326],"comment_text":"It is wrong to describe these P2P products as server-less. In order to connect two peers over WAN it needs a form of coordination server. Since Rayfish appears to be a Claude coded wrapper over Iroh it should at-least give credit to use of Iroh&#x27;s discovery and relay nodes.","created_at":"2026-07-05T17:46:50Z","created_at_i":1783273610,"objectID":"48796218","parent_id":48746038,"story_id":48746038,"story_title":"Rayfish, Peer-to-peer mesh VPN with no server to trust","story_url":"https://rayfish.xyz/blog/01-introducing-rayfish","updated_at":"2026-07-06T03:31:47Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"mrkeen"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"This is not a bad question!<p>If you flip it and instead ask &quot;how do I write something that can't fail?&quot; you might find some interesting ground.<p>The best things I know about are static type-checking, pure functions and totality.  Different languages provide more or less help with these things.  It's perfectly fine to do 'two things which don't fail or cause other things to fail'.<p>Forgive the digression, but there is an 'infectious' aspect to the above 3 things (see the function-colouring problem), e.g. you can't build pure functions which call non-pure functions.  The Dependency Inversion Principle (of SOLID) gives some help in how to tackle this.<p>Also, the above things only work within one node (of a distributed system).<p>For multiple <em>nodes</em>, I use something like Kafka, where you write down <i>one</i> event, and have two systems subscribe to it, each doing <i>one</i> thing.  Yes, there's still the obvious issue of them failing independently, but when that happens, you have an authoritative source of truth (in the form of Kafka events).  This beats the craps out of developer logs.<p>You skip the laborious questions of &quot;what happened in the system?&quot; and &quot;what should the correct state be?&quot;  Because the events are already the answer - just eyeball them.<p>Events also machine-readable, so if you diagnose a problem and a fix it in one case, there's a good chance you can build a detector for other cases.  You don't have to wait for a support ticket to get escalated to the dev team.<p>You also divide the debugging space dramatically.  If the Kafka log says <i>one thing</i> {Bob bought Minecraft for $10}, then the Ownership service is <i>just wrong</i> if it says Bob doesn't own Minecraft, and the Finance service is <i>just wrong</i> if it doesn't report the $10.  Fix each independently.  At no point do you need to look at Ownership and Finance together to see which one failed halfway through talking to the other, because they don't talk to each other.<p>Lastly, events are verifiable; they are their own audit trail.  If your boss asks how much money is in the system, would you feel more confident reporting whatever the current balance is set to (i.e. the outcome of whatever code executed the last &quot;UPDATE Balance ...&quot; statement, or would you like to be able to sum over every transaction that you ever recorded?"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"If you're a button, you have one job"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://unsung.aresluna.org/if-youre-a-button-you-have-one-job/"}},"_tags":["comment","author_mrkeen","story_48790689"],"author":"mrkeen","children":[48798991],"comment_text":"This is not a bad question!<p>If you flip it and instead ask &quot;how do I write something that can&#x27;t fail?&quot; you might find some interesting ground.<p>The best things I know about are static type-checking, pure functions and totality.  Different languages provide more or less help with these things.  It&#x27;s perfectly fine to do &#x27;two things which don&#x27;t fail or cause other things to fail&#x27;.<p>Forgive the digression, but there is an &#x27;infectious&#x27; aspect to the above 3 things (see the function-colouring problem), e.g. you can&#x27;t build pure functions which call non-pure functions.  The Dependency Inversion Principle (of SOLID) gives some help in how to tackle this.<p>Also, the above things only work within one node (of a distributed system).<p>For multiple nodes, I use something like Kafka, where you write down <i>one</i> event, and have two systems subscribe to it, each doing <i>one</i> thing.  Yes, there&#x27;s still the obvious issue of them failing independently, but when that happens, you have an authoritative source of truth (in the form of Kafka events).  This beats the craps out of developer logs.<p>You skip the laborious questions of &quot;what happened in the system?&quot; and &quot;what should the correct state be?&quot;  Because the events are already the answer - just eyeball them.<p>Events also machine-readable, so if you diagnose a problem and a fix it in one case, there&#x27;s a good chance you can build a detector for other cases.  You don&#x27;t have to wait for a support ticket to get escalated to the dev team.<p>You also divide the debugging space dramatically.  If the Kafka log says <i>one thing</i> {Bob bought Minecraft for $10}, then the Ownership service is <i>just wrong</i> if it says Bob doesn&#x27;t own Minecraft, and the Finance service is <i>just wrong</i> if it doesn&#x27;t report the $10.  Fix each independently.  At no point do you need to look at Ownership and Finance together to see which one failed halfway through talking to the other, because they don&#x27;t talk to each other.<p>Lastly, events are verifiable; they are their own audit trail.  If your boss asks how much money is in the system, would you feel more confident reporting whatever the current balance is set to (i.e. the outcome of whatever code executed the last &quot;UPDATE Balance ...&quot; statement, or would you like to be able to sum over every transaction that you ever recorded?","created_at":"2026-07-05T15:12:52Z","created_at_i":1783264372,"objectID":"48794887","parent_id":48793780,"story_id":48790689,"story_title":"If you're a button, you have one job","story_url":"https://unsung.aresluna.org/if-youre-a-button-you-have-one-job/","updated_at":"2026-07-05T23:27:32Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gcr"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"Very cool work!! This is the same pattern we used at $MY_STARTUP to develop $MY_HARNESS which persists the entire graph to disk, unlike all the other agent harnesses which only store the graph <em>nodes</em> and edges.<p>Event graphs aren\u2019t just the agentic foundation for $MY_HARNESS \u2014 they\u2019re the working cognitive substrate, native to what our favorite toolcall gremlins actually consume.<p>(Looking for lead investors for our angel syndicate btw! DM me if interested)"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"The Log is the Agent"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://arxiv.org/abs/2605.21997"}},"_tags":["comment","author_gcr","story_48790912"],"author":"gcr","children":[48795413,48795273],"comment_text":"Very cool work!! This is the same pattern we used at $MY_STARTUP to develop $MY_HARNESS which persists the entire graph to disk, unlike all the other agent harnesses which only store the graph nodes and edges.<p>Event graphs aren\u2019t just the agentic foundation for $MY_HARNESS \u2014 they\u2019re the working cognitive substrate, native to what our favorite toolcall gremlins actually consume.<p>(Looking for lead investors for our angel syndicate btw! DM me if interested)","created_at":"2026-07-05T14:59:35Z","created_at_i":1783263575,"objectID":"48794781","parent_id":48790912,"story_id":48790912,"story_title":"The Log is the Agent","story_url":"https://arxiv.org/abs/2605.21997","updated_at":"2026-07-05T22:05:00Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"stubbi"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"Author here. I know there are other projects like Daytona, E2B etc. None of them works with K8s though. Firecracker requires KVM <em>nodes</em> and husk pods to work. There is also the kubernetes-sigs/agent-sandbox project which is similar at a first glance.<p>So I understand there might come doubts in the comments on whether this is useful but I think the fact that one can run scalable sandboxes for untrusted code on Kubernetes making use of Firecracker and CoW is pretty neat (also for running sub-agents and providing them all the context).<p>Very interested in any kind of feedback at this stage."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Secure AI Sandboxes on Kubernetes"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://mitos.run/blog/ai-sandboxes-on-kubernetes"}},"_tags":["comment","author_stubbi","story_48794737"],"author":"stubbi","comment_text":"Author here. I know there are other projects like Daytona, E2B etc. None of them works with K8s though. Firecracker requires KVM nodes and husk pods to work. There is also the kubernetes-sigs&#x2F;agent-sandbox project which is similar at a first glance.<p>So I understand there might come doubts in the comments on whether this is useful but I think the fact that one can run scalable sandboxes for untrusted code on Kubernetes making use of Firecracker and CoW is pretty neat (also for running sub-agents and providing them all the context).<p>Very interested in any kind of feedback at this stage.","created_at":"2026-07-05T14:57:02Z","created_at_i":1783263422,"objectID":"48794757","parent_id":48794737,"story_id":48794737,"story_title":"Secure AI Sandboxes on Kubernetes","story_url":"https://mitos.run/blog/ai-sandboxes-on-kubernetes","updated_at":"2026-07-05T15:01:17Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"memoriyato3"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"technically you could audit your local copy of tor source code, build it, and then never upgrade it.<p>still this wouldn't guarantee that all the other <em>nodes</em> are not compromised"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Web-based cryptography is always snake oil"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://www.devever.net/~hl/webcrypto"}},"_tags":["comment","author_memoriyato3","story_48792203"],"author":"memoriyato3","children":[48797765],"comment_text":"technically you could audit your local copy of tor source code, build it, and then never upgrade it.<p>still this wouldn&#x27;t guarantee that all the other nodes are not compromised","created_at":"2026-07-05T09:27:47Z","created_at_i":1783243667,"objectID":"48792632","parent_id":48792591,"story_id":48792203,"story_title":"Web-based cryptography is always snake oil","story_url":"https://www.devever.net/~hl/webcrypto","updated_at":"2026-07-05T20:44:17Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"winrid"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"post-ban I've even had Opus 4.8 say it cannot let me continue (I was analyzing a <em>nodejs</em> heap dump)"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Command and Conquer Generals natively ported to macOS, iPhone, iPad using Fable"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/ammaarreshi/Generals-Mac-iOS-iPad/tree/main"}},"_tags":["comment","author_winrid","story_48788283"],"author":"winrid","comment_text":"post-ban I&#x27;ve even had Opus 4.8 say it cannot let me continue (I was analyzing a nodejs heap dump)","created_at":"2026-07-05T04:02:09Z","created_at_i":1783224129,"objectID":"48791159","parent_id":48790908,"story_id":48788283,"story_title":"Command and Conquer Generals natively ported to macOS, iPhone, iPad using Fable","story_url":"https://github.com/ammaarreshi/Generals-Mac-iOS-iPad/tree/main","updated_at":"2026-07-05T06:16:28Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"DrewADesign"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"Don\u2019t be ridiculous. They could easily use premade products, exclusively, and avoid the inter-provider compatibility problems by deploying meshtastic <em>nodes</em> anywhere they expected their kids to be, and getting them certified as ham radio operators as a backup."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Verizon is about to break our Gizmo watches"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://www.jefftk.com/p/verizon-is-about-to-break-our-watches"}},"_tags":["comment","author_DrewADesign","story_48787329"],"author":"DrewADesign","comment_text":"Don\u2019t be ridiculous. They could easily use premade products, exclusively, and avoid the inter-provider compatibility problems by deploying meshtastic nodes anywhere they expected their kids to be, and getting them certified as ham radio operators as a backup.","created_at":"2026-07-05T01:08:04Z","created_at_i":1783213684,"objectID":"48790445","parent_id":48788112,"story_id":48787329,"story_title":"Verizon is about to break our Gizmo watches","story_url":"https://www.jefftk.com/p/verizon-is-about-to-break-our-watches","updated_at":"2026-07-05T18:10:15Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"GeoAtreides"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"That's not what high literature is. That's like looking at some clever linux kernel code and dismissing it in favor of a small <em>nodejs</em> backend.<p>Good literature is difficult (not always, of course). Just like you can't go from a couch potato to running a marathon in one day, you can't jump from Brandon Sanderson to enjoying Gormenghast (or something like the The Worm Ouroboros). It's impossible. It takes effort, it takes time and it takes a lot of reading to appreciate what the real masters can do with mere words."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"2026 Unslop AI-Written Fiction Contest Results"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://www.hyperstitionai.com/unslop-results"}},"_tags":["comment","author_GeoAtreides","story_48782890"],"author":"GeoAtreides","children":[48785369],"comment_text":"That&#x27;s not what high literature is. That&#x27;s like looking at some clever linux kernel code and dismissing it in favor of a small nodejs backend.<p>Good literature is difficult (not always, of course). Just like you can&#x27;t go from a couch potato to running a marathon in one day, you can&#x27;t jump from Brandon Sanderson to enjoying Gormenghast (or something like the The Worm Ouroboros). It&#x27;s impossible. It takes effort, it takes time and it takes a lot of reading to appreciate what the real masters can do with mere words.","created_at":"2026-07-04T10:22:53Z","created_at_i":1783160573,"objectID":"48784307","parent_id":48784064,"story_id":48782890,"story_title":"2026 Unslop AI-Written Fiction Contest Results","story_url":"https://www.hyperstitionai.com/unslop-results","updated_at":"2026-07-05T01:14:13Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"eveningtree"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"Rather than answering directly, I'm thinking about this problem from the other end altogether ever since I saw the dbricks rt demo. Apologies for the rambling response, as I haven't yet finished thinking about this problem...<p>We ended up with 'hot' data in oltp and 'cold/archival' data in olap because the storage size of oltp has always been limited.<p>(1) Limited by computation - there's only so much data that we can store on disks and nvme<p>(2) Limited by wallet - disks and nvme are EXPENSIVE<p>Also, the tight coupling of compute and data didn't help. It limited the size of databases on the individual expensive compute <em>nodes</em>.<p>So, another question will be -<p>What's currently stopping me from keeping the scd history tables right in my oltp db? what's forcing me to copy state into my etl/elt pipeline and the process it into scd into a dedicated olap db?<p>To some extent,the answer is still the same - the oltp cannot scale for the storage size required for keeping historical data. So, I've had to take out the 'cold' historical data and keep it in my olap freezer.<p>Now, if oltp itself is scaling, I'm not gonna bother with the copying step. I'll just prefer to store the history in oltp itself.<p>In my perspective (majorly from handling IoT systems), I need olap for 2 reasons - (1) storage scalability, and (2) analytical processing speed<p>I now consider (1) to be a solved problem<p>As for (2), I'm still not sure how this architecture ends up matching the query processing speeds of column-oriented storages. But again, I need to study more.<p>The SCD pipeline still remains in some form. Either in the form of (1) scd rows that we currently keep (etl pipeline)\n, or (2) as older lsn rows that simply don't get deleted (existing db engine).<p>I've done quite a lot of experimentation with (2), and it is a pretty solid concept to work with.<p>I've spent quite a lot of years hammering my brain at databases and datastores in general. And I've now got a feeling that this is it.\nFinally."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"Postgres data stored in Parquet on S3: LTAP architecture explained"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://www.databricks.com/blog/lakebase-ltap-rethinking-database-storage"}},"_tags":["comment","author_eveningtree","story_48745855"],"author":"eveningtree","comment_text":"Rather than answering directly, I&#x27;m thinking about this problem from the other end altogether ever since I saw the dbricks rt demo. Apologies for the rambling response, as I haven&#x27;t yet finished thinking about this problem...<p>We ended up with &#x27;hot&#x27; data in oltp and &#x27;cold&#x2F;archival&#x27; data in olap because the storage size of oltp has always been limited.<p>(1) Limited by computation - there&#x27;s only so much data that we can store on disks and nvme<p>(2) Limited by wallet - disks and nvme are EXPENSIVE<p>Also, the tight coupling of compute and data didn&#x27;t help. It limited the size of databases on the individual expensive compute nodes.<p>So, another question will be -<p>What&#x27;s currently stopping me from keeping the scd history tables right in my oltp db? what&#x27;s forcing me to copy state into my etl&#x2F;elt pipeline and the process it into scd into a dedicated olap db?<p>To some extent,the answer is still the same - the oltp cannot scale for the storage size required for keeping historical data. So, I&#x27;ve had to take out the &#x27;cold&#x27; historical data and keep it in my olap freezer.<p>Now, if oltp itself is scaling, I&#x27;m not gonna bother with the copying step. I&#x27;ll just prefer to store the history in oltp itself.<p>In my perspective (majorly from handling IoT systems), I need olap for 2 reasons - (1) storage scalability, and (2) analytical processing speed<p>I now consider (1) to be a solved problem<p>As for (2), I&#x27;m still not sure how this architecture ends up matching the query processing speeds of column-oriented storages. But again, I need to study more.<p>The SCD pipeline still remains in some form. Either in the form of (1) scd rows that we currently keep (etl pipeline)\n, or (2) as older lsn rows that simply don&#x27;t get deleted (existing db engine).<p>I&#x27;ve done quite a lot of experimentation with (2), and it is a pretty solid concept to work with.<p>I&#x27;ve spent quite a lot of years hammering my brain at databases and datastores in general. And I&#x27;ve now got a feeling that this is it.\nFinally.","created_at":"2026-07-04T09:02:18Z","created_at_i":1783155738,"objectID":"48783916","parent_id":48746678,"story_id":48745855,"story_title":"Postgres data stored in Parquet on S3: LTAP architecture explained","story_url":"https://www.databricks.com/blog/lakebase-ltap-rethinking-database-storage","updated_at":"2026-07-04T09:05:40Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"scritty-dev"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"big fan of memgraph, been utilizing for awhile over neo4j ever since I saw a NASA article detailing their migration effort and the why behind it.<p>my question is does this multi-tenancy support apply to vector embedding as well? from usage I know it supports vector indexes on <em>nodes</em>/edges, I\u2019m curious whether those embedding properties and vector indexes are isolated and manageable per database in a multi-tenant deployment? any limitations I should know about? context: individual/organization/enterprise knowledge bases being developed need mechanism to promote relevant information up from personal stores into team and from team into corporate."},"story_title":{"matchLevel":"none","matchedWords":[],"value":"How Memgraph 3.11 Simplifies Multi-Tenancy for Cross-Database Graph Workloads"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://memgraph.com/blog/memgraph-3-11-multi-tenant-graph-workloads"}},"_tags":["comment","author_scritty-dev","story_48782672"],"author":"scritty-dev","children":[48785804],"comment_text":"big fan of memgraph, been utilizing for awhile over neo4j ever since I saw a NASA article detailing their migration effort and the why behind it.<p>my question is does this multi-tenancy support apply to vector embedding as well? from usage I know it supports vector indexes on nodes&#x2F;edges, I\u2019m curious whether those embedding properties and vector indexes are isolated and manageable per database in a multi-tenant deployment? any limitations I should know about? context: individual&#x2F;organization&#x2F;enterprise knowledge bases being developed need mechanism to promote relevant information up from personal stores into team and from team into corporate.","created_at":"2026-07-04T05:20:42Z","created_at_i":1783142442,"objectID":"48782831","parent_id":48782672,"story_id":48782672,"story_title":"How Memgraph 3.11 Simplifies Multi-Tenancy for Cross-Database Graph Workloads","story_url":"https://memgraph.com/blog/memgraph-3-11-multi-tenant-graph-workloads","updated_at":"2026-07-04T14:48:58Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"boroboro4"},"comment_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["nodejs"],"value":"It's very unclear what's special in Rubin to be optimized for inference? I can see disaggregated bit (with having separate prefill and decoding <em>nodes</em>), but what else?"},"story_title":{"matchLevel":"none","matchedWords":[],"value":"GLM5.2 on AMD MI355X at 2626 tok/s/node at over 2x lower cost than Blackwell"},"story_url":{"matchLevel":"none","matchedWords":[],"value":"https://www.wafer.ai/blog/glm52-amd"}},"_tags":["comment","author_boroboro4","story_48780417"],"author":"boroboro4","children":[48782711],"comment_text":"It&#x27;s very unclear what&#x27;s special in Rubin to be optimized for inference? I can see disaggregated bit (with having separate prefill and decoding nodes), but what else?","created_at":"2026-07-04T03:35:18Z","created_at_i":1783136118,"objectID":"48782431","parent_id":48781657,"story_id":48780417,"story_title":"GLM5.2 on AMD MI355X at 2626 tok/s/node at over 2x lower cost than Blackwell","story_url":"https://www.wafer.ai/blog/glm52-amd","updated_at":"2026-07-04T04:49:09Z"}],"hitsPerPage":20,"nbHits":94938,"nbPages":50,"page":0,"params":"query=nodejs&advancedSyntax=true&analyticsTags=backend","processingTimeMS":18,"processingTimingsMS":{"_request":{"roundTrip":20},"afterFetch":{"format":{"highlighting":1,"total":1}},"fetch":{"query":3,"scanning":13,"total":17},"total":18},"query":"nodejs","serverTimeMS":21}
