<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: chriswarbo</title><link>https://news.ycombinator.com/user?id=chriswarbo</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 24 Aug 2026 21:50:17 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=chriswarbo" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by chriswarbo in "IPFS Maintainers Winding Down"]]></title><description><![CDATA[
<p>Just checked protocol labs site and... holy shit:<p>> Protocol Labs is an innovation network driving breakthroughs in computing to push humanity forward. PL connects more than 750 tech startups, funds, accelerators, foundations, open source projects, service providers, and other organizations.<p>What happened to them? Seems like they drank their own "Web3" Fla-Vor-Aid.</p>
]]></description><pubDate>Mon, 24 Aug 2026 16:58:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49422649</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49422649</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49422649</guid></item><item><title><![CDATA[New comment by chriswarbo in "IPFS Maintainers Winding Down"]]></title><description><![CDATA[
<p>I don't understand. Billions of non-technical users are loading URLs like `<a href="https://cdn.foo/?guid=deadbeefdeadbeefdeadbeef" rel="nofollow">https://cdn.foo/?guid=deadbeefdeadbeefdeadbeef</a>` all the time. Why would they care if those URLs became `ipfs://deadbeefdeadbeefdeadbeef` instead?</p>
]]></description><pubDate>Mon, 24 Aug 2026 16:52:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=49422562</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49422562</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49422562</guid></item><item><title><![CDATA[New comment by chriswarbo in "IPFS Maintainers Winding Down"]]></title><description><![CDATA[
<p>I agree that IPNS has always seemed a bit naff; but alternatives naming systems can be used too (if your system's name resolver can understand them); e.g. this uses pkarr addresses for IPFS content: <a href="http://www.chriswarbo.net/blog/2026-05-08-pkdnslink.html" rel="nofollow">http://www.chriswarbo.net/blog/2026-05-08-pkdnslink.html</a><p>Regarding an "update path", GNS has support for that built-in; though I've not been able to try it myself, since I can't get GNUNet to bootstrap :-(</p>
]]></description><pubDate>Mon, 24 Aug 2026 16:46:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49422469</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49422469</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49422469</guid></item><item><title><![CDATA[New comment by chriswarbo in "Why Target Common Lisp for Code Generation?"]]></title><description><![CDATA[
<p>Indeed, I use LLMs on some hobby Racket programs, and for Emacs Lisp, and it <i>always</i> messes up parentheses; then burns tokens trying to count them over and over (feels like "the number or rs in strawberry" problem).<p>I've found <a href="https://github.com/shcv/parenmedic" rel="nofollow">https://github.com/shcv/parenmedic</a> to be somewhat helpful, which diagnoses parentheses issues based on when they disagree with indentation, rather than simply counting. The fact this works indicates that LLMs are paying more attention to whitespace than "actual structure".</p>
]]></description><pubDate>Thu, 13 Aug 2026 14:00:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=49286118</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49286118</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49286118</guid></item><item><title><![CDATA[New comment by chriswarbo in "Worms: The Future of Yesterday's Worms Today"]]></title><description><![CDATA[
<p>> the original DOS games<p>"Total Wormage" was on the Amiga, which became the original Worms. It was ported to other machines after:<p><a href="https://en.wikipedia.org/wiki/Worms_(series)#Development" rel="nofollow">https://en.wikipedia.org/wiki/Worms_(series)#Development</a><p><a href="https://worms2d.info/Total_Wormage" rel="nofollow">https://worms2d.info/Total_Wormage</a><p>> an expansion to the original<p>Not sure about DOS versions, but Worms: The Director's Cut is a heavily-expanded version of the original: more weapons, custom levels (allowing 16 colours instead of 8, IIRC), etc. Highly recommended!</p>
]]></description><pubDate>Wed, 12 Aug 2026 10:23:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49270178</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49270178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49270178</guid></item><item><title><![CDATA[New comment by chriswarbo in "What agentic harness do you use with Chinese models?"]]></title><description><![CDATA[
<p>I've found DeepSeek v4 models to run well in pi.dev<p>I agree they're not as capable as Claude Sonnet, but they're much cheaper.</p>
]]></description><pubDate>Tue, 11 Aug 2026 11:35:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=49256594</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49256594</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49256594</guid></item><item><title><![CDATA[New comment by chriswarbo in "Tail-call optimization in C is relatively recent"]]></title><description><![CDATA[
<p>I jsut did some digging and it seems you're right, it's only for methods which call themselves (which indeed get compiled into a loop, as an entirely local transformation). So not hugely useful.<p>Apologies, I've not written Scala for many years; I just recalled that there was a way to annotate tail calls which the compiler checks. I didn't realise it was <i>so</i> limited!</p>
]]></description><pubDate>Mon, 10 Aug 2026 16:49:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=49246282</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49246282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49246282</guid></item><item><title><![CDATA[New comment by chriswarbo in "Tail-call optimization in C is relatively recent (2025)"]]></title><description><![CDATA[
<p>Sounds similar to @tailrec in Scala<p>I personally use the phrase "tail call elimination" when it's a requirement that can be relied on; and "tail call optimisation" when it might be implementation-dependent, context-dependent, limited (e.g. to immediate self-calls), etc.</p>
]]></description><pubDate>Mon, 10 Aug 2026 12:53:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=49242980</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49242980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49242980</guid></item><item><title><![CDATA[New comment by chriswarbo in "Mario Meets Pareto"]]></title><description><![CDATA[
<p>> Is there an inverse Pareto front?<p>Yes, trivially. Just look at the opposite end of each metric. Pareto optimality doesn't know/care what each metrics means, since it keeps them all separate.</p>
]]></description><pubDate>Thu, 06 Aug 2026 16:27:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49198882</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49198882</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49198882</guid></item><item><title><![CDATA[New comment by chriswarbo in "Pareto Front"]]></title><description><![CDATA[
<p>If we have a set of things (e.g. language models) and some measures we care about (e.g. cost, speed, whether weights are open, scores for a few benchmarks, etc.), then some of those things will be "pareto optimal" (see below) and some won't. The "pareto front" is the subset that is pareto optimal.<p>Some thing is "pareto optimal" when there isn't another thing that's AT LEAST AS GOOD in ALL measures, and BETTER in at least one way. For example, if we say there are no ties (for simplicity), then the cheapest language model is pareto optimal; the fastest model is pareto optimal; those which score highest on each benchmark are pareto optimal; and so on.<p>Tradeoffs can also be pareto optimal: for example, if the cheapest model is also slow, then there will be more pareto optimal models which are "cheapest for their speed"; and so on for other tradeoffs (e.g. fastest that achieves a certain benchmark score; cheapest model with open weights; etc.).<p>If you're making a decision about which thing to choose, you only need to care about those in the pareto front (since, by definition, anything that's not pareto optimal is objectively worse on at least one measure).<p>Pareto optimality does not compare one measure against another: something that's 10000x slower can still be pareto optimal, if it's 1% cheaper than the alternatives. To pick a "best" thing, you could give a weight/importance to each measure, and combine them into an overall score: but that's subjective, and might vary between people and tasks. In contrast, focusing on the pareto front is a way to ignore those things that will never be the best, regardless of weighting.</p>
]]></description><pubDate>Thu, 06 Aug 2026 11:56:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=49195447</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49195447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49195447</guid></item><item><title><![CDATA[New comment by chriswarbo in "Staging patches with git add (2024)"]]></title><description><![CDATA[
<p>Magit allows selective staging/unstaging, either of hunks, or by selecting lines (AKA Emacs's "region"). I avoid staging from the git commandline, unless I'm just doing whole files.<p>PS: Majutsu provides this too (a magit-like tool for jj)</p>
]]></description><pubDate>Wed, 29 Jul 2026 22:26:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=49103906</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=49103906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49103906</guid></item><item><title><![CDATA[New comment by chriswarbo in "How we can reduce traffic congestion"]]></title><description><![CDATA[
<p>> How long do you spend on transit that most of those are necessary?<p>Toilets are useful immediately (speaking from experience!)<p>Tables are useful even on short trips of a few minutes; e.g. I usually have a notebook and pen in my pocket, and writing much easier on a table (even the little fold-out ones, if I can't get a seat at the proper tables).<p>I often eat on trains; though I admittedly tend to avoid the dining options, since it's much cheaper to bring my own food and eat my seat's table (fold-out or otherwise). If I'm with others, we can also drink alcohol together, without a "designated driver" having to abstain.</p>
]]></description><pubDate>Thu, 16 Jul 2026 13:15:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48934082</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48934082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48934082</guid></item><item><title><![CDATA[New comment by chriswarbo in "Command Line Interface Guidelines"]]></title><description><![CDATA[
<p>The Nix commands have a decent approach: passing `--help` will invoke `man` on the relevant manual (sub-commands tend to have individual man pages).</p>
]]></description><pubDate>Thu, 16 Jul 2026 12:56:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48933837</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48933837</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48933837</guid></item><item><title><![CDATA[New comment by chriswarbo in "Command Line Interface Guidelines"]]></title><description><![CDATA[
<p>Define "nicely".<p>For example, many pagers don't work well when stdin is line-buffered (they assume they'll see individual key presses as they happen)<p>Pagers can also conflict with keys that the terminal emulator is using for a different purpose. This is especially annoying when the terminal emulator is using those keys for pager-like functionality in the first place!<p>An example of both of these is Emacs `shell-mode`.<p>(I personally set `PAGER=cat` in my Bash profile, which avoids most of these shenanigans)</p>
]]></description><pubDate>Thu, 16 Jul 2026 12:54:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48933809</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48933809</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48933809</guid></item><item><title><![CDATA[New comment by chriswarbo in "Codex starts encrypting sub-agent prompts"]]></title><description><![CDATA[
<p>Why would anyone working on such code send it <i>anywhere</i> (other than, say, to AWS for hosting)?<p>Source: I work on such code. We don't allow devs to use (cloud-based) LLMs.</p>
]]></description><pubDate>Tue, 14 Jul 2026 12:31:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48905807</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48905807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48905807</guid></item><item><title><![CDATA[New comment by chriswarbo in "How we can reduce traffic congestion"]]></title><description><![CDATA[
<p>This doesn't seem to account for Jevons paradox: if driving is made faster and more convenient, then more people will drive more; which can lead to an overall increase in CO2 emissions, collisions, etc.<p>I'd imagine there would be a lag between the initial efficiency increase, and the subsequent usage increase; since drivers (current and potential) would have to actually notice the change and adjust for it (consciously or otherwise).</p>
]]></description><pubDate>Mon, 13 Jul 2026 13:00:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48892022</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48892022</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48892022</guid></item><item><title><![CDATA[New comment by chriswarbo in "How we can reduce traffic congestion"]]></title><description><![CDATA[
<p>> Most cars can fit 5 people<p>So you agree that most cars are far larger and heavier than required? First search result for "average car occupancy"[1]:<p>> In 2022 the Average Number of Occupants Per Trip for Household Vehicles in the United States Was 1.5<p>This discrepancy is the reason for car pooling, ride-sharing, etc. (Note that Uber, Lyft, etc. are taxi services, not "ride sharing"; since the drivers themselves are not typically intending to travel the routes they drive)<p>> roads also carry buses<p>Yes, which is why cars should be removed from such roads, to avoid slowing down buses.<p>> ambulances<p>Emergency vehicles can drive in places where cars are forbidden (cycle paths, pedestrianised roads, etc.)<p>> trucks that carry every single product* in the economy.<p>Again, you're undermining your own argument: the subsidies given to private car infrastructure are so large, that freight companies exploiting that infrastructure can end up more cost-effective than those which use rail; despite rail being more efficient not only in terms of fuel, but also in terms of labour (since so many trucks would be required to do the job of a single freight train, and each of those trucks require a separate driver). Also note that heavier vehicles degrade the road infrastructure disproportionately; which is even more reason to reduce the number of trucks as far as possible.<p>[1] <a href="https://www.energy.gov/cmei/vehicles/articles/fotw-1333-march-11-2024-2022-average-number-occupants-trip-household" rel="nofollow">https://www.energy.gov/cmei/vehicles/articles/fotw-1333-marc...</a></p>
]]></description><pubDate>Mon, 13 Jul 2026 12:54:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48891955</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48891955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48891955</guid></item><item><title><![CDATA[New comment by chriswarbo in "How we can reduce traffic congestion"]]></title><description><![CDATA[
<p>> If every road were free of traffic, every destination had unlimited parking at the door, everyone already owned a car, and driving carried no direct or indirect costs, almost everyone would drive everywhere.<p>Cars don't even have tables; let alone toilets, dining areas, sleeping cabins, etc. Even those which do (e.g. RVs) would require a solo traveller to stop in order to use them.<p>No thanks, I'll stick to the train.</p>
]]></description><pubDate>Mon, 13 Jul 2026 12:05:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48891414</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48891414</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48891414</guid></item><item><title><![CDATA[New comment by chriswarbo in "Computation as a universal and fundamental concept"]]></title><description><![CDATA[
<p>I was responding to this part:<p>> if our universe is undecidable<p>My point is, there would be no way to empirically test this; and therefore, it would make no observable difference, there would be no way to exploit/utilise such effects, etc.<p>In essence: there's no way to tell the difference between a real halting oracle (which would imply an undecidable universe), versus a computable approximation which just-so-happens to be more powerful/sophisticated than the approximations we compare it against.<p>Sure, we can prove that some abstract systems are undecidable and that others aren't. Yet that distinction is inherently unfalsifiable, and hence physically "useless".</p>
]]></description><pubDate>Mon, 13 Jul 2026 09:04:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48889789</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48889789</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48889789</guid></item><item><title><![CDATA[New comment by chriswarbo in "Alternate clock designs and time systems"]]></title><description><![CDATA[
<p>> I think the day needs time units which are factors of 10x or 1000x to match SI prefixes<p>The nice thing about metric/SI prefixes is that they're generic multipliers, which can be used with any units we like. If you want to use them with day as the unit, you can just do that; nothing extra is required, and the meaning is clear (though unfamiliar!).<p>There is an alternative approach though: we could use prefixes for sexagesimal multiples (base 60). This has precedence, since we have a system of binary prefixes like "kibi" and "mibi".<p>For divisions, we can use the standard progression of "minute", "second", "third", "fourth", etc. to say there are 60 minutehours in an hour (or more generally, 60 minutefoo in a foo); that there are 3600 secondhours in an hour; and so on. Abbreviating "minutehour" to "minute" and "secondhour" to "second" when we're talking informally about time would be similar to abbreviating "kilogram" to "kilo" when talking informally about mass.<p>I'm not aware of any standard names for multiples (rather than divisions). My proposal[1] is “prota” for 60x, “defter” for 60x60x, “trito” for 60x60x60x, and so on; as Greek alternatives to the Latin "minuta", "secundus", "tertia", etc. (which "minute", "second", "third", etc. are derived from[2]). This Greek/Latin combo would match the multiply/divide naming of decimal, e.g. kilo (x1000, Greek) vs milli (/1000, Latin), hecto (x100, Greek) vs centi (/100, Latin), etc.<p>That would make an hour equal to protaminute, or one deftersecond.<p>[1] <a href="http://www.chriswarbo.net/projects/units/prefix_factors.html" rel="nofollow">http://www.chriswarbo.net/projects/units/prefix_factors.html</a><p>[2] AFAIK the naming comes from "pars minuta" meaning "small part", with further divisions being "second small part", "third small part" and hence giving us "seconds", "thirds", etc. For consistency, we should really use "firsts" instead of minutes (or maybe "primes" from the Latin "prima").</p>
]]></description><pubDate>Sat, 11 Jul 2026 12:46:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48871582</link><dc:creator>chriswarbo</dc:creator><comments>https://news.ycombinator.com/item?id=48871582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48871582</guid></item></channel></rss>