<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: lukasschwab</title><link>https://news.ycombinator.com/user?id=lukasschwab</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 10 Oct 2026 08:12:42 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=lukasschwab" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by lukasschwab in "No Man Is an Island"]]></title><description><![CDATA[
<p>Nope. There's a lot of unscientific intellectualism out there. I don't see a lot of intellectual depth in the communities springing up around AI use — I had vibecoding in particular in mind, and Fernando's blog post directly addresses mathematics.<p>I don't understand the contrast you're drawing. Harness design and benchmarking are major aspects of vibe coding (and solving math problems with LLMs, for that matter); I would go so far as to say harness design and benchmarking are the more intellectually serious aspects of vibecoding. Fernando is definitely aware of them as well. These just aren't meaningful substitutes for the intellectual work being diminished.</p>
]]></description><pubDate>Fri, 09 Oct 2026 22:46:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=50027532</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=50027532</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50027532</guid></item><item><title><![CDATA[New comment by lukasschwab in "No Man Is an Island"]]></title><description><![CDATA[
<p>If you exclude the deep work on models themselves and just focus on <i>use</i> — harnesses etc. — then the intellectual community is basically prescientific. Very little meaningful empiricism. danluu's notes on benchmarks and experimental design come to mind: <a href="https://danluu.com/exercise-7/" rel="nofollow">https://danluu.com/exercise-7/</a></p>
]]></description><pubDate>Fri, 09 Oct 2026 21:22:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=50026716</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=50026716</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50026716</guid></item><item><title><![CDATA[New comment by lukasschwab in "Theranos.world"]]></title><description><![CDATA[
<p>Super slick buried Extend marketing</p>
]]></description><pubDate>Thu, 08 Oct 2026 20:06:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=50011348</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=50011348</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50011348</guid></item><item><title><![CDATA[New comment by lukasschwab in "Blogging with Gleam, Org-Mode and Pandoc"]]></title><description><![CDATA[
<p>More byzantine that way</p>
]]></description><pubDate>Sat, 03 Oct 2026 00:34:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49940284</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49940284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49940284</guid></item><item><title><![CDATA[New comment by lukasschwab in "Supabase is acquiring Turso"]]></title><description><![CDATA[
<p>SQLite/Turso probably offers a <i>much</i> better developer experience than Postgres for the overwhelming majority of projects on Supabase (especially for local testing and testing in ephemeral environments).</p>
]]></description><pubDate>Sat, 03 Oct 2026 00:28:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=49940251</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49940251</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49940251</guid></item><item><title><![CDATA[New comment by lukasschwab in "Poisoning a Go Cache"]]></title><description><![CDATA[
<p>Didn't mean to dismiss it. I think it's worth reasoning about! e.g. the CI example — in a build cache shared between ephemeral instances, cache poisoning can smuggle malicious behavior from untrusted environments to trusted ones. You're right.</p>
]]></description><pubDate>Sun, 27 Sep 2026 18:10:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49869222</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49869222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49869222</guid></item><item><title><![CDATA[New comment by lukasschwab in "Scaling Golang CI by Replacing actions/setup-go"]]></title><description><![CDATA[
<p>One thing to consider — one of the reasons I want our Actions CI to be fast is that I do a good deal of agentic coding work in parallel (worktrees) on very, very small VMs, but we have some computationally demanding tests and linters. Delegating the expensive validation work to a separate environment — the beefier Actions runner, with run-isolation — and then watching the check status actually <i>tightens</i> the feedback loop for these agents.<p>Like with all things CI, your mileage will vary according to where you write your code and what the code does.</p>
]]></description><pubDate>Wed, 16 Sep 2026 21:40:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=49733410</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49733410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49733410</guid></item><item><title><![CDATA[New comment by lukasschwab in "Scaling Golang CI by Replacing actions/setup-go"]]></title><description><![CDATA[
<p>I'd echo Peter's #1 recommendation:<p>> - Allowing actions/setup-go users to specify a cache key prefix so that they can have more than one golang CI job, each with its own cache [...]<p>I'd actually go further: this may be a sensible default behavior.<p>"Always update the cache" can get expensive, but it's a neat one; "trim the cache" is definitely necessary if you enable this in a moderately active repository in our experience.<p>If you want really out-there ideas: rather than storing and loading the full cache monolithically, you could use a GitHub-specific GOCACHEPROG and Go-specific cache service to load <i>only</i> the active items. The pruning problem goes away because accretion is cheap. In theory, parallel jobs could actually share this joint cache. (This may not be a realistic initiative at GitHub.)<p>If you can raise feedback with your colleagues —<p>- The docs and settings for Actions Cache limits are really hard to navigate; at some pointed we desperately wanted to pay GitHub more money for more cache, but couldn't figure out why we were capped.<p>- Bulk-data endpoints for Actions performance would be a boon for optimization projects like this. I wind up either scraping `gh run` (slow) or setting up a GitHub App to collect perf data through webhooks (initially tedious, has to be continuously available).<p>All this aside — actions/setup-go is a pretty well-considered default and an essential part of writing Go on GitHub; ty for your work maintaining it!</p>
]]></description><pubDate>Wed, 16 Sep 2026 19:12:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=49731550</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49731550</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49731550</guid></item><item><title><![CDATA[New comment by lukasschwab in "Scaling Golang CI by Replacing actions/setup-go"]]></title><description><![CDATA[
<p>They target different parts of actions/setup-go for optimization:<p>- WillAbides/setup-go-faster speeds up the Go toolchain setup (literally installing Go)<p>- cloudx-io/setup-go uses the slower actions/setup-go toolchain setup, but changes cache strategy so your `go test` and `go build` steps do less work<p>Those strategies are compatible. I hadn't heard of setup-go-faster — thanks for putting me on to it.<p>If you're deciding between one or the other, it'll probably come down to which inefficiency predominates in your codebase (i.e. how many tests you have, how quickly they run, and how much real churn there is in your test package build graph).</p>
]]></description><pubDate>Wed, 16 Sep 2026 18:10:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=49730784</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49730784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49730784</guid></item><item><title><![CDATA[New comment by lukasschwab in "Scaling Golang CI by Replacing actions/setup-go"]]></title><description><![CDATA[
<p>I also had fun substantiating the claim "86% of actions/setup-go test runs are unnecessary." We had a general sense things were faster, and we measured impacts immediately after we made changes, but hard to understand long-run performance vs. a counterfactual.<p>The trick was to run back over our git history and calculate, for each commit,<p>1. The test package Go cache keys at that point<p>2. The GitHub actions/cache keys constructed by actions/setup-go and cloudx-io/setup-go respectively<p>Once you have these mappings, you can<p>1. Pick some arbitrary HEAD commit<p>2. Model which prior GitHub cache blob would be loaded under each action<p>3. Compare the test package Go cache keys in that loaded blob against those for HEAD to determine which test packages would run vs. skip<p>Might write this up in greater depth sometime soon.</p>
]]></description><pubDate>Wed, 16 Sep 2026 18:02:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49730687</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49730687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49730687</guid></item><item><title><![CDATA[New comment by lukasschwab in "Scaling Golang CI by Replacing actions/setup-go"]]></title><description><![CDATA[
<p>There are some good off-cuts that didn't make the official post, but which might be of interest to HN!<p>It only gets a brief mention, but the cache-pruning change was an interesting one. Cache accretion happens in the default actions/setup-go too, but dramatically increasing the number of cache-writes for cloudx-io/setup-go made it an actual issue.<p>As the cache grows, so does the time it takes to load it from GitHub's actions cache... and that grows until it's a significant time-suck in CI. We prune with basic mark-and-sweep.<p>Digging deeper, the pluggable `GOCACHEPROG` (introduced in Go 1.24) is a really useful tool. Shimming the normal cache logic for measurement, for example. In theory this should also be attractive for remote caching.</p>
]]></description><pubDate>Wed, 16 Sep 2026 17:51:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49730547</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49730547</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49730547</guid></item><item><title><![CDATA[New comment by lukasschwab in "Pgtestdb's template cloning approach to testing is fast"]]></title><description><![CDATA[
<p>> I’m going to add a recommendation in our docs for pgtestdb, particularly for users aiming to test end-to-end (i.e. job inserted by client → fully completed by worker).<p>That's exactly what I did to learn River — implementing simple apps and testing their execution with pgtestdb: <a href="https://github.com/lukasschwab/river-playground" rel="nofollow">https://github.com/lukasschwab/river-playground</a><p>The starter skeleton was LLM-generated and not quite perfect, but discovering the coding agent's mistakes was satisfying in its own right.</p>
]]></description><pubDate>Thu, 30 Jul 2026 16:12:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=49112058</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=49112058</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49112058</guid></item><item><title><![CDATA[New comment by lukasschwab in "Claude Is Not a Compiler"]]></title><description><![CDATA[
<p>The title is a reference back to "Is Claude Code a Compiler?" by the same author, linked from the first sentence: <a href="https://commaok.xyz/ai/is-claude-a-compiler/" rel="nofollow">https://commaok.xyz/ai/is-claude-a-compiler/</a><p>And then claim is attributed right there:<p>> The hands-down highlight was the talk by Erik Schluntz: Vibe coding in prod.<p>> Among other things, he drew an analogy between LLMs and compilers.</p>
]]></description><pubDate>Tue, 21 Jul 2026 15:17:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48993422</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=48993422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48993422</guid></item><item><title><![CDATA[New comment by lukasschwab in "A sea of sparks: Seeing radioactivity"]]></title><description><![CDATA[
<p>You won't make one at home, but cloud chambers[^1] reveal individual alpha particle tracks.<p>There's one in the Musée des Arts et Métiers in Paris — blew my mind!<p>[^1]: <a href="https://en.wikipedia.org/wiki/Cloud_chamber" rel="nofollow">https://en.wikipedia.org/wiki/Cloud_chamber</a><p>Edit: turns out people make these at home <i>all the time.</i> Sick!</p>
]]></description><pubDate>Mon, 30 Mar 2026 19:48:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47578867</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=47578867</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47578867</guid></item><item><title><![CDATA[Show HN: Explore your own Spotify history]]></title><description><![CDATA[
<p>Spotify's "Account privacy" dashboard lets you bulk-export an "extended streaming history" (i.e. everything you've ever listened to).<p>I built this static tool for analyzing the resulting piles of data:<p>- Who are my top artists in December, across all years?<p>- Objectively speaking, what is actually my favorite Big Thief song?<p>- Why won't the cowards at Spotify admit what I know in my heart is the truth (that I am this year's top listener of the Masonna/Prurient split 'Annihiliationism')?<p>Your data never leaves your browser. Full source is on GitHub.[^1]<p>Spotify might take a day or two to generate your export; in the mean time, you can try the tool with my depersonalized demo data (link under the upload widget).<p>Enjoy!<p>[^1]: <a href="https://github.com/lukasschwab/spotify-explore" rel="nofollow">https://github.com/lukasschwab/spotify-explore</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46285058">https://news.ycombinator.com/item?id=46285058</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 16 Dec 2025 05:17:53 +0000</pubDate><link>https://lukasschwab.me/spotify-explore/</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=46285058</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46285058</guid></item><item><title><![CDATA[New comment by lukasschwab in "Thieves steal crown jewels in 4 minutes from Louvre Museum"]]></title><description><![CDATA[
<p>Large gems can be broken up and recut for sale. Destroys value (certainly the cultural value) but renders them salable.</p>
]]></description><pubDate>Sun, 19 Oct 2025 18:06:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45636411</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=45636411</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45636411</guid></item><item><title><![CDATA[New comment by lukasschwab in "Novelty Automation"]]></title><description><![CDATA[
<p>His recent "Secret Life of Components" series covers lots of fascinating electromechanical tinkering, including many of the mechanisms in the Novelty Automation arcade machines: <a href="https://www.youtube.com/watch?v=6JAgXz6xO0s&list=PLtaR0lZhSyANYB0Xxb9OSp47pHuQmj3Ol&index=2" rel="nofollow">https://www.youtube.com/watch?v=6JAgXz6xO0s&list=PLtaR0lZhSy...</a></p>
]]></description><pubDate>Mon, 13 Oct 2025 06:44:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=45565421</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=45565421</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45565421</guid></item><item><title><![CDATA[New comment by lukasschwab in "The RSS feed reader landscape"]]></title><description><![CDATA[
<p>Basically linkblogging. I'm not sure this needs to be a separate feed; JSON Feed has a dedicated `external_url` field:<p>> If `url` [optional] links to where you’re talking about a thing, then `external_url` links to the thing you’re talking about.<p>I'd be shocked if Atom/RSS didn't have equivalents.<p>This kind of "repost"-ish behavior may just be obscured in the tools people use to construct feeds, so they remain obscure features of the standards. The designers had syndication in mind, very much like what you're describing — ingesting feeds, reprocessing/mixing/extending them, and exposing the result as another feed.</p>
]]></description><pubDate>Thu, 09 Oct 2025 16:25:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=45529877</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=45529877</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45529877</guid></item><item><title><![CDATA[New comment by lukasschwab in "The RSS feed reader landscape"]]></title><description><![CDATA[
<p>After about a decade of experimentation (NetNewsWire, Feedbin, Miniflux...), I'm self-hosting a feed reader I wrote myself, running on a free hosted LibSQL db.<p>- NetNewsWire was slick, but wouldn't work on my phone.<p>- Feedbin was <i>excellent,</i> but eventually I decided to do some subscription cost-cutting.<p>- Miniflux worked fine, but 1) I found it a pain to set up with remote hosted Postgres and 2) it burned through the Neon free-tier usage limits in a couple days.<p>So I built one myself and run it on a Raspberry Pi home server.<p>Made a great little weekend project. The feed standards are known quantities, so a little AI assistance with boilerplate goes a long way.<p>Deciding you need a new feature and <i>just adding it</i> is refreshing — e.g. I wanted a "read it later" feature like Feedbin's (something missing from Miniflux), and now I have it.</p>
]]></description><pubDate>Thu, 09 Oct 2025 16:15:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=45529759</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=45529759</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45529759</guid></item><item><title><![CDATA[New comment by lukasschwab in "Microsoft is officially sending employees back to the office"]]></title><description><![CDATA[
<p>> An RTO mandate is also an excellent thing for a CEO to show investors they are doing, if they are not making money and lack better ideas.<p>I think of Jeffrey Pfeffer's "social contagion" arguments a lot — first with regards to layoffs[^1], but increasingly also to RTO policies and tracked AI use.<p>It seems very unlikely execs (esp. in small organizations) are taking the time to read and seriously evaluate research about RTO or AI and productivity. (Frankly, it seems much less likely than them doing serious modeling about layoffs.) At some point, the "contagion" becomes a matter of "best practices" — not just a way to show investors what you're doing, but part of the normal behavior shareholders expect.<p>Bleak if true!<p>[^1]: <a href="https://news.stanford.edu/stories/2022/12/explains-recent-tech-layoffs-worried" rel="nofollow">https://news.stanford.edu/stories/2022/12/explains-recent-te...</a></p>
]]></description><pubDate>Tue, 09 Sep 2025 21:52:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=45189765</link><dc:creator>lukasschwab</dc:creator><comments>https://news.ycombinator.com/item?id=45189765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45189765</guid></item></channel></rss>