<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: switz</title><link>https://news.ycombinator.com/user?id=switz</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 15 Apr 2026 10:04:32 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=switz" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by switz in "Rare concert recordings are landing on the Internet Archive"]]></title><description><![CDATA[
<p>It's really up to the artists. Many are surprisingly cool with it, though there are a few notable exceptions (i.e. Prince). Sounds like the artist in this particlar case gave their blessing.<p>Many bands (like GD and Phish) specifically note in their rider that venues must allow and provide space for tapers to bring their rigs in.<p>A sibling comment in this thread pointed out my project Relisten[0], which now has over 4,000 bands who have given explicit permission for people to tape, record, and share their concerts non-commercially. We've been operating our FOSS platform for 12 years, and most of the audio is hosted by Archive.org. I can't tell you how many bands have <i>begged</i> us to add them to our platform.<p>[0] <a href="https://relisten.net" rel="nofollow">https://relisten.net</a> (<a href="https://github.com/RelistenNet" rel="nofollow">https://github.com/RelistenNet</a>)<p>(The 4,000 number will be coming to web soon - it's available today on our mobile apps)</p>
]]></description><pubDate>Wed, 15 Apr 2026 00:01:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47773043</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47773043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47773043</guid></item><item><title><![CDATA[New comment by switz in "Rare concert recordings are landing on the Internet Archive"]]></title><description><![CDATA[
<p>Oh hey, it's me! Happy to answer any questions<p>We landed an update on mobile last week that brought all 4,000 artists with a "collection" onto Relisten. That'll be coming to the web and sonos shortly as well.<p>We've been discussing the Aadam Jacob's collection with the archivists for some time. It comes with its own unique UX[0] and data constraints so we've been iterating on that and waiting for a critical mass of uploads before tackling it. We're getting closer though.<p>I agree with most of the sentiment in these comments. Archive and share non-comercially all the things!<p>[0] it's not "one" artist so it requires some custom UI, it should be unified through a single Aadam Jacob's collection, and it has a unique data path/structure on Archive.org relative to other collections</p>
]]></description><pubDate>Tue, 14 Apr 2026 19:38:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47770415</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47770415</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47770415</guid></item><item><title><![CDATA[New comment by switz in "EmDash – a spiritual successor to WordPress that solves plugin security"]]></title><description><![CDATA[
<p>4 1's == 4/1<p>could just be a coincidence</p>
]]></description><pubDate>Wed, 01 Apr 2026 21:43:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47606915</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47606915</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47606915</guid></item><item><title><![CDATA[Cloudflare forked just-bash and they really, really should not have]]></title><description><![CDATA[
<p>Article URL: <a href="https://twitter.com/cramforce/status/2033285112478171373">https://twitter.com/cramforce/status/2033285112478171373</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47392479">https://news.ycombinator.com/item?id=47392479</a></p>
<p>Points: 10</p>
<p># Comments: 3</p>
]]></description><pubDate>Sun, 15 Mar 2026 22:07:35 +0000</pubDate><link>https://twitter.com/cramforce/status/2033285112478171373</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47392479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47392479</guid></item><item><title><![CDATA[New comment by switz in "Show HN: Gapless.js – gapless web audio playback"]]></title><description><![CDATA[
<p>really appreciate you building and maintaining it! state machines are the truth!</p>
]]></description><pubDate>Wed, 04 Mar 2026 04:46:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47243185</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47243185</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47243185</guid></item><item><title><![CDATA[New comment by switz in "Show HN: Gapless.js – gapless web audio playback"]]></title><description><![CDATA[
<p>I run Firefox latest so it should work. There's always a risk when going from HTML5->Web Audio. There's an occasional blip that's impossible to avoid (or at least, I have never found a solution). It doesn't happen every time though. Try going from track 2 to track 3 in the second tab of the demo (if both are "READY" as web audio).<p>The problem with exclusively using the web audio API is that the entire track must be loaded into memory before playing it, whereas HTML5 loads progressively. So we use both to balance the techniques.<p>In prior versions of the library, we'd load the track in parallel to HTML5 and make the switch mid-track so it's actually far less noticeable even if it does blip. I'm considering adding that to the new version.<p>Another alternative is building a custom buffer using RANGE requests to exclusively drive it via the web audio API. But obviously that is a far more complex undertaking (and requires the server to support RANGE requests). I'm open to implementing it, though.</p>
]]></description><pubDate>Mon, 02 Mar 2026 20:16:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47223489</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47223489</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47223489</guid></item><item><title><![CDATA[New comment by switz in "Show HN: Gapless.js – gapless web audio playback"]]></title><description><![CDATA[
<p>Thanks! Please do share if you choose to implement it (you can open a Github issue). I'd be glad to add any projects using it to the README.</p>
]]></description><pubDate>Mon, 02 Mar 2026 19:55:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47223209</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47223209</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47223209</guid></item><item><title><![CDATA[New comment by switz in "Show HN: Gapless.js – gapless web audio playback"]]></title><description><![CDATA[
<p>Gapless 5 was actually the precursor to this library over a decade ago, so Rego deserves full credit. They built the first example of gapless playback on the web and I took inspiration from their techniques.<p>Gapless 5 has a built in UI and style. Our library is headless: you bring your own UI and controls. It just depends on what your use-case is.</p>
]]></description><pubDate>Mon, 02 Mar 2026 19:54:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47223200</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47223200</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47223200</guid></item><item><title><![CDATA[Show HN: Gapless.js – gapless web audio playback]]></title><description><![CDATA[
<p>Hey HN,<p>I just released v4 of my gapless playback library that I first built in 2017 for <a href="https://relisten.net" rel="nofollow">https://relisten.net</a>. We stream concert recordings, where gapless playback is paramount.<p>It's built from scratch, backed by a rigid state machine (the sole dependency is xstate) and is already running in production over at Relisten.<p>The way it works is by preloading future tracks as raw buffers and scheduling them via the web audio API. It seamlessly transitions between HTML5 and web audio. We've used this technique for the last 9 years and it works fairly well. Occasionally it will blip slightly from HTML5->web audio, but there's not much to be done to avoid that (just when to do it - lotta nuance here). Once you get on web audio, everything should be clean.<p>Unfortunately web audio support still lacks on mobile, in which case you can just disable web audio and it'll fallback to full HTML5 playback (sans gapless). But if you drive a largely desktop experience, this is fine. On mobile, most people use our native app.<p>You can view a demo of the project at <a href="https://gapless.saewitz.com" rel="nofollow">https://gapless.saewitz.com</a> - just click on "Scarlet Begonias", seek halfway in the track (as it won't preload until >15s) and wait for "decoding" on "Fire on the Mountain" to switch to "ready". Then tap "skip to -2s and hear the buttery smooth segue.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47222271">https://news.ycombinator.com/item?id=47222271</a></p>
<p>Points: 35</p>
<p># Comments: 11</p>
]]></description><pubDate>Mon, 02 Mar 2026 18:48:37 +0000</pubDate><link>https://github.com/RelistenNet/gapless.js</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47222271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47222271</guid></item><item><title><![CDATA[TLDraw plans to move their tests to a closed-source repo]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/tldraw/tldraw/issues/8082">https://github.com/tldraw/tldraw/issues/8082</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47151545">https://news.ycombinator.com/item?id=47151545</a></p>
<p>Points: 6</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 25 Feb 2026 13:59:32 +0000</pubDate><link>https://github.com/tldraw/tldraw/issues/8082</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47151545</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47151545</guid></item><item><title><![CDATA[Tests Are the New Moat]]></title><description><![CDATA[
<p>Article URL: <a href="https://saewitz.com/tests-are-the-new-moat">https://saewitz.com/tests-are-the-new-moat</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47150417">https://news.ycombinator.com/item?id=47150417</a></p>
<p>Points: 7</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 25 Feb 2026 12:02:27 +0000</pubDate><link>https://saewitz.com/tests-are-the-new-moat</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47150417</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47150417</guid></item><item><title><![CDATA[New comment by switz in "How we rebuilt Next.js with AI in one week"]]></title><description><![CDATA[
<p>RSC by design does not ship <i>everything</i> to the client. That's one of its basic premises. It ships markup, composed in client interactivity, but you can shed a lot of the code required curate that markup.</p>
]]></description><pubDate>Wed, 25 Feb 2026 00:49:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47145807</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47145807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47145807</guid></item><item><title><![CDATA[New comment by switz in "How we rebuilt Next.js with AI in one week"]]></title><description><![CDATA[
<p>This is pretty fascinating and comes with some complicated AI-world incentives that I've been ruminating on lately. The better you document your work, the stronger contracts you define, the easier it is for someone to clone your work. I wouldn't be surprised if we end up seeing open source commercial work bend towards the SQLite model (open core, private tests). There's no way Cloudflare could have pulled this off without next's very own tests.<p>Speaking more about the framework itself, the only real conclusion I have here is that I feel server components are a misunderstood and under-utilized pattern and anyone attempting to simplify their DX is a win in my book.<p>Next is very complex, largely because it has incrementally grown and kept somewhat backwards compatible. A framework that starts from the current API surface and grows can be more malleable and make some tough decisions here at the outset.<p>Crazy to see it's already being run on a .gov domain[0]. TTFGOV as a new adoption metric?<p>[0] <a href="https://www.cio.gov/" rel="nofollow">https://www.cio.gov/</a></p>
]]></description><pubDate>Tue, 24 Feb 2026 20:58:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47142927</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47142927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47142927</guid></item><item><title><![CDATA[Ukranian controls Home Assistant over LoRa radio when their power grid goes down]]></title><description><![CDATA[
<p>Article URL: <a href="https://old.reddit.com/r/homeassistant/comments/1r8ftc0/i_control_my_home_assistant_over_lora_radio_when/">https://old.reddit.com/r/homeassistant/comments/1r8ftc0/i_control_my_home_assistant_over_lora_radio_when/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47069724">https://news.ycombinator.com/item?id=47069724</a></p>
<p>Points: 99</p>
<p># Comments: 10</p>
]]></description><pubDate>Thu, 19 Feb 2026 03:56:29 +0000</pubDate><link>https://old.reddit.com/r/homeassistant/comments/1r8ftc0/i_control_my_home_assistant_over_lora_radio_when/</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47069724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47069724</guid></item><item><title><![CDATA[New comment by switz in "Show HN: Box of Rain - Auto-Layouted ASCII Diagrams"]]></title><description><![CDATA[
<p>Yup! We’re just one link in the chain (bands, tapers, archivists, & the listeners), but I appreciate the sentiment. Alec and I have been running Relisten for over a decade and we’ve put a lot of work into it these past few years.<p>Had to give the Dead a little nod here</p>
]]></description><pubDate>Wed, 18 Feb 2026 03:31:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47056812</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47056812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47056812</guid></item><item><title><![CDATA[New comment by switz in "Show HN: Box of Rain - Auto-Layouted ASCII Diagrams"]]></title><description><![CDATA[
<p>TIL about ambiguous width unicode characters. Turns out some locales render these chars as double width. I'm attempting to work out a solution.<p>Seems like maybe there are some universal half-width characters that can be used.<p><a href="https://www.unicode.org/reports/tr11/" rel="nofollow">https://www.unicode.org/reports/tr11/</a></p>
]]></description><pubDate>Wed, 18 Feb 2026 00:34:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47055497</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47055497</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47055497</guid></item><item><title><![CDATA[Turning Your Robot Vacuum into a Mesh VPN]]></title><description><![CDATA[
<p>Article URL: <a href="https://saewitz.com/turning-your-robot-vacuum-into-a-mesh-vpn">https://saewitz.com/turning-your-robot-vacuum-into-a-mesh-vpn</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47049560">https://news.ycombinator.com/item?id=47049560</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 17 Feb 2026 16:47:36 +0000</pubDate><link>https://saewitz.com/turning-your-robot-vacuum-into-a-mesh-vpn</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47049560</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47049560</guid></item><item><title><![CDATA[New comment by switz in "Show HN: Box of Rain - Auto-Layouted ASCII Diagrams"]]></title><description><![CDATA[
<p>Fair point. I added basic mermaid parsing to the library so you can do that here too.<p><pre><code>    $ echo 'flowchart LR
        web([Frontend])
        subgraph platform [Cloud Platform]
          api([API Server])
          db[(Database)]
          api --> db
        end
        web -->|HTTPS| api' | npx box-of-rain --mermaid

                           ╔══ Cloud Platform ════════════════════╗
                           ║                                      ║
    ╭──────────╮           ║  ╭────────────╮      ╔════════════╗  ║
    │          │           ║  │            │      ║            ║  ║
    │ Frontend │ ─── HTTPS ──▶│ API Server │ ────▶║  Database  ║  ║
    │          │           ║  │            │      ║            ║  ║
    ╰──────────╯           ║  ╰────────────╯      ╚════════════╝  ║
                           ╚══════════════════════════════════════╝</code></pre></p>
]]></description><pubDate>Sun, 15 Feb 2026 00:47:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47020024</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47020024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47020024</guid></item><item><title><![CDATA[New comment by switz in "Discord: A case study in performance optimization"]]></title><description><![CDATA[
<p>I agree with you that we should care more about resource usage, but it's a false comparison. Backend devs control where their code runs, frontend devs don't.<p>You can make more precise decisions when you have complete control over the environment. When you don't, you have to make trade-offs. In this case, universality (electron and javascript) for higher RAM usage. It doesn't seem to have slowed Discord's adoption rate.<p>Even if they built their desktops apps in native code and UI, they'd have to build a JS website in parallel.</p>
]]></description><pubDate>Sun, 15 Feb 2026 00:42:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47019982</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47019982</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47019982</guid></item><item><title><![CDATA[Show HN: Box of Rain - Auto-Layouted ASCII Diagrams]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/switz/box-of-rain">https://github.com/switz/box-of-rain</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47018675">https://news.ycombinator.com/item?id=47018675</a></p>
<p>Points: 24</p>
<p># Comments: 14</p>
]]></description><pubDate>Sat, 14 Feb 2026 21:42:11 +0000</pubDate><link>https://github.com/switz/box-of-rain</link><dc:creator>switz</dc:creator><comments>https://news.ycombinator.com/item?id=47018675</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47018675</guid></item></channel></rss>