<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: mschwaig</title><link>https://news.ycombinator.com/user?id=mschwaig</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 27 Jun 2026 12:54:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mschwaig" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mschwaig in "Ozempic is changing the foods Americans buy"]]></title><description><![CDATA[
<p>A consequence of universal healthcare that people don't talk about much is that it turns unhealthy citizens from an individual cost into more of a collective one. So it makes sense that countries with universal healthcare regulate in favor of their citizens as opposed to their food industry, because they're paying for the consequences more directly.</p>
]]></description><pubDate>Mon, 12 Jan 2026 13:34:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46588261</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=46588261</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46588261</guid></item><item><title><![CDATA[New comment by mschwaig in "The Post-American Internet"]]></title><description><![CDATA[
<p>I think outright shortening copyright terms could be a beneficial policy along similar lines.</p>
]]></description><pubDate>Tue, 06 Jan 2026 09:14:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46510239</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=46510239</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46510239</guid></item><item><title><![CDATA[New comment by mschwaig in "Koralm Railway"]]></title><description><![CDATA[
<p>I would blame how Austria, a very small country, is organized into 9 provinces that actually have their own budget and can pass their own laws on some topics.<p>Rail service is funded at the federal level, so there's less arguing about who pays for what. Bus service, however, is managed by regional transport associations funded by the provinces. This creates disincentives for cross-province bus routes because no single province wants to pay more than its 'fair' share for a service that primarily benefits voters in another province.<p>Similar dynamics play out at the city/province level. Take Linz, the provincial capital of Upper Austria: the city has had a social democratic (SPÖ) mayor continuously since 1945, while the province has had a conservative (ÖVP) governor for exactly the same period of 80 years. This disincentivizes the province government from helping to fund public transport within or into the city, because it's a win for social democratic city voters, while the more conservative rural voters would rather take the car anyway since they often can't do the whole trip by public transport.<p>Arguably the reason for the excellent public transport in the city of Vienna is that they are also their own province. Their mayor/governor, who has been a social democrat as well for the last  80 years, always controls both levels of funding.</p>
]]></description><pubDate>Fri, 12 Dec 2025 20:54:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46248827</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=46248827</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46248827</guid></item><item><title><![CDATA[New comment by mschwaig in "Disrupting the first reported AI-orchestrated cyber espionage campaign"]]></title><description><![CDATA[
<p>If you make a conventional AI agent do packaging and configuration tasks, it has to do one imperative step after the other. While it can forget, it can't really undo the effects of what it already did.<p>If you purpose-build these tools to work with Nix, in the big picture view how these functional units of composition can affect each other is much more constrained.
At the same time within one unit of composition, you can iterate over a whole imperative multi-step process in one go, because you're always rerunning the whole step in a fresh sandbox.<p>LLMs and Nix work together really well in that way.</p>
]]></description><pubDate>Thu, 13 Nov 2025 22:29:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=45921517</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=45921517</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45921517</guid></item><item><title><![CDATA[New comment by mschwaig in "Disrupting the first reported AI-orchestrated cyber espionage campaign"]]></title><description><![CDATA[
<p>Yes, the cycle times are bad and some ecosystems and tasks are a real pain still.<p>I also agree with you when it comes to the task of auditing every line of Nix code that factors into a given system. Nix doesn't really make things easier there.<p>The benefit I'm seeing really comes from composition making it easier to share and direct auditing effort.<p>All of the tricky code that's hard to audit should be relied on and audited by lots of people, while as a result the actual recipe to put together some specific package or service should be easier to audit.<p>Additionally, I think looking at diffs that represent changes to the system vs reasoning about the effects of changes made through imperative commands that can affect arbitrary parts of the system has similar efficiency gains.</p>
]]></description><pubDate>Thu, 13 Nov 2025 21:54:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=45921115</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=45921115</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45921115</guid></item><item><title><![CDATA[New comment by mschwaig in "Disrupting the first reported AI-orchestrated cyber espionage campaign"]]></title><description><![CDATA[
<p>I think as AI gets smarter, defenders should start assembling systems how NixOS does it.<p>Defenders should not have to engage in an costly and error-prone search of truth about what's actually deployed.<p>Systems should be composed from building blocks, the security of which can be audited largely independently, verifiably linking all of the source code, patches etc to some form of hardware attestation of the running system.<p>I think having an accurate, auditable and updatable description of systems in the field like that would be a significant and necessary improvement for defenders.<p>I'm working on automating software packaging with Nix as one missing  piece of the puzzle to make that approach more accessible:  
<a href="https://github.com/mschwaig/vibenix" rel="nofollow">https://github.com/mschwaig/vibenix</a><p>(I'm also looking for ways to get paid for working on that puzzle.)</p>
]]></description><pubDate>Thu, 13 Nov 2025 21:25:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45920765</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=45920765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45920765</guid></item><item><title><![CDATA[New comment by mschwaig in "Nix Derivation Madness"]]></title><description><![CDATA[
<p>I mentioned another alternative to adding flake-specific metadata to  data structures that are transferred over the network, as part of the signed traces or otherwise, in a comment on that PR Eelco linked.<p>It's keeping flake-specific data locally, to guarantee that it matches how the user ended up with the data, not how the builder produced it. I think otherwise from the user POV such data could again look misleading.</p>
]]></description><pubDate>Fri, 31 Oct 2025 18:04:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=45774878</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=45774878</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45774878</guid></item><item><title><![CDATA[New comment by mschwaig in "Angle brackets in a Nix flake world"]]></title><description><![CDATA[
<p>As a current PhD student (working on Nix stuff) let me take this opportunity to congratulate you on your successful PhD defense and publicly thank you for your writing. That you write and what you write are inspiring.</p>
]]></description><pubDate>Thu, 14 Aug 2025 23:19:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=44906877</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=44906877</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44906877</guid></item><item><title><![CDATA[New comment by mschwaig in "Angle brackets in a Nix flake world"]]></title><description><![CDATA[
<p>I work with Nix a lot, and I had never seen `__findFile`.<p>It's kind of crazy how much there is to know about Nix. I wish there was a bit less surface area to the language. On the other hand it's really interesting how much specialized knowledge there is in the community around various topics. Some people package things,  some people write library code, some write glue code that wraps other build tools, some write VM-based tests, some write generators that transform store paths into things like container images, some just manage their dot files, some are experts for how we deal with some specific proprietary ecosystem like cuda, some write infra code or tools around the Nix code, some work on one of the Nix implementations.</p>
]]></description><pubDate>Thu, 14 Aug 2025 00:46:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=44895586</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=44895586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44895586</guid></item><item><title><![CDATA[New comment by mschwaig in "I prefer human-readable file formats"]]></title><description><![CDATA[
<p>Human-readability was one of the aspects that I enjoyed about using CCL,the Categorical Configuration Language (<a href="https://chshersh.com/blog/2025-01-06-the-most-elegant-configuration-language.html" rel="nofollow">https://chshersh.com/blog/2025-01-06-the-most-elegant-config...</a>), in one of my projects recently.<p>It saves you from escaping stuff inside of multiline-strings by using meaningful whitespace.<p>What I did not like about CCL so much that it leaves a bunch of stuff underspecified.
You can make lists and comments with it, but YOU have to decide how.</p>
]]></description><pubDate>Sat, 09 Aug 2025 12:58:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44846150</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=44846150</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44846150</guid></item><item><title><![CDATA[New comment by mschwaig in "Build Systems à la Carte (2018) [pdf]"]]></title><description><![CDATA[
<p>I wrote a paper about how I think trust should work for software dependencies.<p>It very much builds on the hash-based cache lookup mechanism this paper calls <i>constructive traces</i> (in contrast to what they call <i>deep constructive traces</i>) to eliminate transitive trust relationships.<p><a href="https://dl.acm.org/doi/10.1145/3689944.3696169" rel="nofollow">https://dl.acm.org/doi/10.1145/3689944.3696169</a></p>
]]></description><pubDate>Sat, 05 Jul 2025 14:28:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=44473035</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=44473035</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44473035</guid></item><item><title><![CDATA[New comment by mschwaig in "The independent researcher (2018)"]]></title><description><![CDATA[
<p>Thanks, and thank you for reading! :)</p>
]]></description><pubDate>Tue, 25 Feb 2025 17:42:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=43174974</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=43174974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43174974</guid></item><item><title><![CDATA[New comment by mschwaig in "The independent researcher (2018)"]]></title><description><![CDATA[
<p>I want to try to become an independent researcher, when the funding for my PhD position runs out.<p>My idea for financing this is finding a few companies who pay a retainer fee to not only get direct easy access to my expertise when they need it, but are  also interested in the results of the kind of work I'm doing when they don't need anything specific from me.<p>I work on supply chain security with systems like Nix, and recently put up a first version of a website: <a href="https://groundry.org/" rel="nofollow">https://groundry.org/</a></p>
]]></description><pubDate>Tue, 25 Feb 2025 13:41:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=43171720</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=43171720</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43171720</guid></item><item><title><![CDATA[New comment by mschwaig in "Is NixOS truly reproducible?"]]></title><description><![CDATA[
<p>That's great. Feel free to reach out if you want to, I'm happy to answer any questions. It's basically my job, that I really love. :)</p>
]]></description><pubDate>Fri, 14 Feb 2025 09:36:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=43046590</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=43046590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43046590</guid></item><item><title><![CDATA[New comment by mschwaig in "Is NixOS truly reproducible?"]]></title><description><![CDATA[
<p>I know about mass rebuilds, but in the parent comment you were talking about fixed output derivations, and committing the hashes for a mass rebuild to version control is technically possible, but not a reasonable workflow, because it makes all changes that are mass rebuilds conflict.<p>What works better is keep track of those hashes as part of the signatures, which is already happening. There's a lot of interesting things that can be done with that kind of information, I'm one of the people working on that kind of stuff.<p>Basically I have a paper out about how verifiable and reproducible can come together like that in Nix:<p><a href="https://dl.acm.org/doi/10.1145/3689944.3696169" rel="nofollow">https://dl.acm.org/doi/10.1145/3689944.3696169</a></p>
]]></description><pubDate>Fri, 14 Feb 2025 09:22:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=43046498</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=43046498</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43046498</guid></item><item><title><![CDATA[New comment by mschwaig in "Is NixOS truly reproducible?"]]></title><description><![CDATA[
<p>Yes. Reproducibility also makes it possible to aggregate information about the links in dependency trees and distribute trust on that basis.<p>That stuff is useful to humans, but it is also really useful for cold hard automated logical reasoning about dependency trees.</p>
]]></description><pubDate>Thu, 13 Feb 2025 16:46:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=43037992</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=43037992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43037992</guid></item><item><title><![CDATA[New comment by mschwaig in "Is NixOS truly reproducible?"]]></title><description><![CDATA[
<p>You also couldn't feasibly do that for derivations that actually build packages, instead of fixed output derivations only, because if you the update the package set to include a newer version of the compiler, which would often produce a different output, in addition to having to rebuild everything, you would have to update all of the affected hashes.<p>What you should be able to do in the future with a system like nix plus a few changes is use nix as a common underlying mechanism for precisely describing build steps, and then use whatever policy you like to determine who you trust.<p>One policy can be about having an attestation for every build step, another one can be about two different builders being in agreement about the output of a specific build step.<p>That way you can construct a policy that expresses reproducibility, and reproducibility strengthens any other verification mechanism you have, because it makes it so that you can aggregate evidence from different sources.
 and then have different build hosts</p>
]]></description><pubDate>Thu, 13 Feb 2025 16:38:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=43037841</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=43037841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43037841</guid></item><item><title><![CDATA[New comment by mschwaig in "Is NixOS truly reproducible?"]]></title><description><![CDATA[
<p>There are also some other gaps left to close to implement this vision, mentioned in this post an my reply to it:<p><a href="https://news.ycombinator.com/item?id=43030046">https://news.ycombinator.com/item?id=43030046</a></p>
]]></description><pubDate>Thu, 13 Feb 2025 16:26:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=43037654</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=43037654</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43037654</guid></item><item><title><![CDATA[New comment by mschwaig in "Is NixOS truly reproducible?"]]></title><description><![CDATA[
<p>I think it would have been a good thing to mention, but difficult to do well in more than a quick reference or sidenote and could easily turn into a extensive detour. I'm saying this as someone who's working on exactly that topic.
There is a little bit of overlap between the kind of quantitative work that they do and this design aspect: the extensional model leaves the identity of direct dependencies not entirely certain.
In practice that means we don't know if they built direct dependencies from source or substituted them from cache.nixos.org, but this exact concern also applies to cache.nixos.org itself.<p>The intensional store makes the store shareable without also sharing trust relationships ('kind of trustless' in that sense), but only because it moves trust relationships out of the store, not because it gets rid of them. You still need to trust signatures which map an hash of inputs to a hash of the output, just like in the extensional model.
You can however get really powerful properties for supply chain security from the intensional store model (and a few extra things). You can read about that in this recent paper of mine: <a href="https://dl.acm.org/doi/10.1145/3689944.3696169" rel="nofollow">https://dl.acm.org/doi/10.1145/3689944.3696169</a>. I'm still working on this stuff and trying to find ways to get that work funded (see <a href="https://groundry.org/" rel="nofollow">https://groundry.org/</a>).</p>
]]></description><pubDate>Thu, 13 Feb 2025 15:18:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=43036711</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=43036711</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43036711</guid></item><item><title><![CDATA[New comment by mschwaig in "Llama.cpp supports Vulkan. why doesn't Ollama?"]]></title><description><![CDATA[
<p>Ollama tries to appeal to a lowest common denominator user base, who does not want to worry about stuff like configuration and quants, or which binary to download.<p>I think they want their project to be smart enough to just 'figure out what to do' on behalf of the user.<p>That appeals to a lot of people, but I think them stuffing all backends into one binary and auto-detecting at runtime which to use and is actually a step too far towards simplicity.<p>What they did to support both CUDA and ROCm using the same binary looked quite cursed last time I checked (because they needed to link or invoke two different builds of llama.cpp of course).<p>I have only glanced at that PR, but I'm guessing that this plays a role in how many backends they can reasonably try to support.<p>In nixpkgs it's a huge pain that we configure quite deliberately what we want Ollama to do at build time, and then Ollama runs off and does whatever anyways, and users have to look at log output and performance regressions to know what it's actually doing, every time they update their heuristics for detecting ROCm. It's brittle as hell.</p>
]]></description><pubDate>Fri, 31 Jan 2025 12:21:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=42886933</link><dc:creator>mschwaig</dc:creator><comments>https://news.ycombinator.com/item?id=42886933</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42886933</guid></item></channel></rss>