HNHacker News
TopNewBestAskShowJobs

chriswarbo

7,950 karma · joined June 28, 2013

submissionscomments
chriswarbo··on You said no MCP
FYI Pi can do RPC over stdio (though of course it's a bespoke thing, rather than standardised). I use Pi every day; never used the TUI (I forgot it even had one).
chriswarbo··on The new Firefox design is here
I struggle to use UIs like in the image shown under "Compact Mode". I can't tell what is/isn't clickable, since there are no bevels or other visual indicators (maybe something changes on mouse-over? but that's too late to indicate that I should try mousing-over!)

Thankfully user-chrome still seems to work, so these things can be overridden (and LLMs make those overrides easier to write & maintain).

chriswarbo··on Google Has Removed MV2 Extensions from the Chrome Web Store, Including UBO
True, I was a very happy Epiphany user about 20 years ago. Konqueror is the KDE equivalent (which of course begat KHTML -> Webkit -> Blink)
chriswarbo··on Google Has Removed MV2 Extensions from the Chrome Web Store, Including UBO
I've used Linux exclusively for over 20 years. What is its "OS browser"?
chriswarbo··on IPFS Maintainers Winding Down
> a link that looks like `ipfs://12340-9q5ui1j2;lk3rjq;ladksfj` won't scare those same people off

Why would non-technical users be looking at raw URLs? Surely links "look like" blue underlined text; or a button; or whatever?

chriswarbo··on IPFS Maintainers Winding Down
Pronounceable names can point to a content address, the same way they can point to an IP address. For example, https://dnslink.dev points a DNS name to a content address; git refs point to git objects; etc.
chriswarbo··on IPFS Maintainers Winding Down
> The only reason it’s decentralized is because blockchain and crypto was hype 10 years ago.

IPFS is not "blockchain" or "crypto"(currency).

It's much closer to git-over-bittorrent. Note that both of those things were decentralised long before "blockchain" and "crypto" existed.

The makers of IPFS also made a crypto thing called Filecoin; but that's a different project. Avoiding IPFS because of crypto is like avoiding the Web because of social media.

chriswarbo··on IPFS Maintainers Winding Down
Deeper OS integration would be nice, but harder to roll out. I think the plan early on was to make something useful/generic/agnostic enough that a couple of big browsers would add support, then it could try becoming a Web standard.

Unfortunately that hasn't panned out; but it still feels more feasible than getting Microsoft and Apple to add it to their OS network stacks.

chriswarbo··on IPFS Maintainers Winding Down
My personal opinion is that any notion of "incentive mechanisms" for IPFS is bullshit: whether Filecoin, or otherwise.

There is already a perfectly good incentive mechanism: if someone wants to host some data, they can; and if nobody wants to host it, it doesn't get hosted.

That's worked perfectly well for HTTP, without any shitcoin needed. The advantage of IPFS is that its URLs resolve to anybody who cares enough to host that data; so links will only 404 when nobody cares (unlike HTTP, which relies on a single point of failure).

chriswarbo··on IPFS Maintainers Winding Down
> IPFS, Freenet, and experiments like that

> a libertarian decentralized P2P E2EE communication project

Your argument makes sense for Freenet (though I'd personally defend that project too); but not so much for IPFS.

Firstly, IPFS doesn't have any encryption (E2E or otherwise).

Also, Freenet spreads data around the network (for robustness and plausible-deniability), so the peers providing a file are not the peers which inserted it. IPFS does no such thing: if you want your content to remain available, you'd better be running an IPFS node that provides it.

Either way, it feels like a pretty bad idea to host dodgy stuff on IPFS.

IPFS is much closer to HTTP. The difference is that content is immutable, and can be re-hosted by anyone that happens to have a copy (e.g. no need for mirrors, etc.).

(Note that HTTP was invented to disseminate physics research; not CSAM)

chriswarbo··on IPFS Maintainers Winding Down
Just checked protocol labs site and... holy shit:

> 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.

What happened to them? Seems like they drank their own "Web3" Fla-Vor-Aid.

chriswarbo··on IPFS Maintainers Winding Down
I don't understand. Billions of non-technical users are loading URLs like `https://cdn.foo/?guid=deadbeefdeadbeefdeadbeef` all the time. Why would they care if those URLs became `ipfs://deadbeefdeadbeefdeadbeef` instead?
chriswarbo··on IPFS Maintainers Winding Down
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: http://www.chriswarbo.net/blog/2026-05-08-pkdnslink.html

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 :-(

chriswarbo··on Why Target Common Lisp for Code Generation?
Indeed, I use LLMs on some hobby Racket programs, and for Emacs Lisp, and it always messes up parentheses; then burns tokens trying to count them over and over (feels like "the number or rs in strawberry" problem).

I've found https://github.com/shcv/parenmedic 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".

chriswarbo··on Worms: The Future of Yesterday's Worms Today
> the original DOS games

"Total Wormage" was on the Amiga, which became the original Worms. It was ported to other machines after:

https://en.wikipedia.org/wiki/Worms_(series)#Development

https://worms2d.info/Total_Wormage

> an expansion to the original

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!

chriswarbo··on What agentic harness do you use with Chinese models?
I've found DeepSeek v4 models to run well in pi.dev

I agree they're not as capable as Claude Sonnet, but they're much cheaper.

chriswarbo··on Tail-call optimization in C is relatively recent
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.

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 so limited!

chriswarbo··on Tail-call optimization in C is relatively recent (2025)
Sounds similar to @tailrec in Scala

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.

chriswarbo··on Mario Meets Pareto
> Is there an inverse Pareto front?

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.

chriswarbo··on Pareto Front
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.

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.

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.).

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).

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.

chriswarbo··on Staging patches with git add (2024)
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.

PS: Majutsu provides this too (a magit-like tool for jj)

chriswarbo··on How we can reduce traffic congestion
> How long do you spend on transit that most of those are necessary?

Toilets are useful immediately (speaking from experience!)

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).

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.

chriswarbo··on Command Line Interface Guidelines
The Nix commands have a decent approach: passing `--help` will invoke `man` on the relevant manual (sub-commands tend to have individual man pages).
chriswarbo··on Command Line Interface Guidelines
Define "nicely".

For example, many pagers don't work well when stdin is line-buffered (they assume they'll see individual key presses as they happen)

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!

An example of both of these is Emacs `shell-mode`.

(I personally set `PAGER=cat` in my Bash profile, which avoids most of these shenanigans)

chriswarbo··on Codex starts encrypting sub-agent prompts
Why would anyone working on such code send it anywhere (other than, say, to AWS for hosting)?

Source: I work on such code. We don't allow devs to use (cloud-based) LLMs.

chriswarbo··on How we can reduce traffic congestion
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.

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).

chriswarbo··on How we can reduce traffic congestion
> Most cars can fit 5 people

So you agree that most cars are far larger and heavier than required? First search result for "average car occupancy"[1]:

> In 2022 the Average Number of Occupants Per Trip for Household Vehicles in the United States Was 1.5

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)

> roads also carry buses

Yes, which is why cars should be removed from such roads, to avoid slowing down buses.

> ambulances

Emergency vehicles can drive in places where cars are forbidden (cycle paths, pedestrianised roads, etc.)

> trucks that carry every single product* in the economy.

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.

[1] https://www.energy.gov/cmei/vehicles/articles/fotw-1333-marc...

chriswarbo··on How we can reduce traffic congestion
> 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.

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.

No thanks, I'll stick to the train.

chriswarbo··on Computation as a universal and fundamental concept
I was responding to this part:

> if our universe is undecidable

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.

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.

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".

chriswarbo··on Alternate clock designs and time systems
> I think the day needs time units which are factors of 10x or 1000x to match SI prefixes

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!).

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".

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.

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.

That would make an hour equal to protaminute, or one deftersecond.

[1] http://www.chriswarbo.net/projects/units/prefix_factors.html

[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").

Page 1 of 34Next →