HNHacker News
TopNewBestAskShowJobs

chrismorgan

26,924 karma · joined September 13, 2012

https://chrismorgan.info/, me@chrismorgan.info

I’m available for hire for consulting, training and mentoring in Rust, everything web, performance and more: https://chrismorgan.info/hire-me/

[ my public key: https://keybase.io/chrismorgan; my proof: https://keybase.io/chrismorgan/sigs/rEm41-0pghG3ITW8S5HeuFLA9TznvPSlg9NKgXXRXqQ ]

submissionscomments
chrismorgan··on Atom is better than RSS, in ways that matter
Here’s an example of <code> in titles being quite valuable: https://chrismorgan.info/blog/make-and-git-diff-test-harness....

Inferior plain text: Using make and git diff for a simple and powerful test harness

Better plain text: Using `make` and `git diff` for a simple and powerful test harness

Better HTML: Using <code>make</code> and <code>git diff</code> for a simple and powerful test harness

I use the second for the <title> and og:title on my site, and the third in the <h1> and feeds. It will unfortunately be turned into the first by some feed readers, but that’s their problem. (Some feed readers do accept a subset of HTML phrasing content.)

> If it shouldn't be rendered in a different way for obvious reasons

I don’t perceive your obvious reasons.

chrismorgan··on Atom is better than RSS, in ways that matter
Consider the title of my article: “Atom is better than RSS, in ways that matter”. That emphasis belongs there, and it’s mildly bad to lose it. (For presentation on my own site, I also control the line break position on larger screens; but that wouldn’t be appropriate for feeds, where you can’t control the presentation.)

We accept that sentences can have formatting, and headings can have formatting, so why shouldn’t titles? When you look at titles that get used on platforms like YouTube, there’s obviously a desire for formatting. People use Unicode shenanigans to work around the deficit frequently. (And they do so in ways that are mostly only available for the English script, quite inequitable for other scripts.) Even if you were to restrict it to ASCII, people GLEEFULLY abuse capital letters FOR EMPHASIS!!!!1!

Especially once you get to coding topics, titles need to support <code>, which is important semantics.

(My biggest disappointment with Atom is that text constructs are single-type-only. I wish you could provide distinct text and HTML representations, like email does with the multipart/alternative MIME type. In some places where I use <code> in titles, I’d just drop the <code>…</code> wrapping, in other places I’d turn it into `…`.)

I will write a proper article about all this some time soonish, encouraging people to use markup in titles.

chrismorgan··on Atom is better than RSS, in ways that matter
Do video cassette recorders and players support both VHS and Betamax?

Because essentially all feed readers support both Atom and RSS.

chrismorgan··on Atom is better than RSS, in ways that matter
Wait till you see the HTML I had to write to get them!
chrismorgan··on Atom is better than RSS, in ways that matter
As a concrete example: I have been frustrated by title encoding issues on CSS-Tricks (HTML tag names getting broken) multiple times, which would never have occurred if they just used Atom instead of RSS.
chrismorgan··on I don't recommend Tailwind CSS
> It is hard to read

The hilarious thing here is that without JavaScript, the code is white-on-white, because some of the colouring is added on pre[class*="language-"], but the language-css class is only added to the pre element by JS.

chrismorgan··on A directory of people who love RSS
The reason I think it matters is that, because people keep on using the name of the wrong format, people keep on using that wrong format when they want to implement feeds. Where if they had known about Atom, or that podcast feeds are the only reason not to use Atom, they would gladly have used Atom.
chrismorgan··on A directory of people who love RSS
I hate RSS. It’s a bad format that developed organically in all the worst ways, and it should have died completely in favour of Atom by about twenty years ago. I started a draft describing some of the problems that actually matter (thing that can’t be represented reliably in RSS, and such) in <https://chrismorgan.info/atom%3Erss>.

And so I wish people would stop calling feeds RSS, because it continues to compound the problem. Let RSS die! More than once I’ve seen people implement RSS feeds, at great pain and often with errors, simply because they hadn’t heard of Atom.

(I still need to decide which spec I hate more, RSS or OpenGraph. Hmm… RSS had more excuses for being bad, OpenGraph was just a spectacularly bad thing thrown over the wall by a company that should have known better. I drafted something examining how comprehensively bad it was some years ago, I should put it onto my new site and continue it at some point.)

chrismorgan··on The most official water costs $120k a gallon
Why would five-digit years have become popular? They seem roundly a bad idea.

Years aren’t even four digits by custom: they’re just numbers, with the present idiosyncrasy of eschewing a grouping (thousands) separator. We say the sack of Rome was in 410, not 0410. Only for specific serialisation purposes have we ever recorded fixed-width dates, acknowledging that there are limits to this. The recording of two-digit or offset-by-1900 years in computer systems was a case of bad judgement. The recording of four-digit years as is presently customary is pragmatic and entirely adequate for the next few thousand years, and there’s no point in designing things beyond that horizon.

chrismorgan··on The most official water costs $120k a gallon
Where I live now (Hyderabad, India), the record low is about 45°F, the temperature will not drop below 50°F more than two or three days in a year, and the daily maximum will not drop below 100°F for at least fifty consecutive days in the summer.
chrismorgan··on The most official water costs $120k a gallon
> 1 degree of Fahrenheit is the amount of temperature change a typical human can connect

Citation needed. https://en.wikipedia.org/wiki/Fahrenheit suggests no such thing, nor have I ever heard the notion.

chrismorgan··on The most official water costs $120k a gallon
Living in Australia and India, I have never encountered such a thermostat. But I do vaguely recall encountering a thermostat somewhere at some point that went up by twos in Fahrenheit.

I would guess you would only encounter ½°C steps on units that support both Celsius and Fahrenheit, so that they’re closer to parity. I don’t think any unit that I’ve owned has supported Fahrenheit at all.

chrismorgan··on State of multi-player Wayland
You’ve been led astray by the altered title on this submission. The web does not support the concept described in this article (seats) at all. It supports tracking multiple pointers, but it’s all still single-player, in the terminology of this article: you’re still limited to single focus, single typing, single pointer.
chrismorgan··on Multiple Mouse Cursors in Wayland
That’s unrelated. The typical device will only ever have one seat. From Wayland core, that seat may have a pointer, keyboard and touch; and from tablet-v2 <https://wayland.app/protocols/tablet-v2>, you can add tablets and their tools and such, all still in the one seat.
chrismorgan··on Multiple Mouse Cursors in Wayland
Wayland seats are sets of inputs, to be handled together, each seat having its own cursor position, focused element, and so forth. That’s not what you want, I believe.

… unless you do want the left half of your keyboard to type into one window, and the right half of your keyboard into another.

chrismorgan··on Ask HN: Crooked Timber showed showed me a virus captcha, What now?
> There is really _never_ a time when a CAPTCHA will require you to execute code on your machine.

Oh yeah? What about Google saying “install the reCAPTCHA app in the App Store” <https://reclaimthenet.org/google-broke-recaptcha-for-de-goog...>?

It’s absurd, but these nominally-security tools frequently genuinely train users to become susceptible to attacks.

chrismorgan··on Kill The Cookie Banner
I don't believe you’re correct. Certainly in Australia the cooling-off period is all about buyer’s remorse; “subject to finance” is a completely unrelated condition commonly added to the contract, and even with pre-approval it’s probably seldom resolved within three days.
chrismorgan··on Kill The Cookie Banner
The other approach to killing the cookie banner is simply to declare that such a thing cannot constitute “informed consent”. (Perhaps: “ticking a checkbox and/or clicking a button cannot constitute informed consent”; and see what they try next.) From a factual perspective, I honestly think that shouldn’t be controversial: it’s well-understood that very few people actually read those things, they just want to get them out of the way. Just as shrink-wrap licenses and even simple contracts have at times in some jurisdictions essentially been neutered, so that only terms that a reasonable person would expect to be there are enforceable, at which point it becomes obvious that the whole thing needs tearing down in favour of standard licenses/contracts. In the Australian state Victoria, for example, there are standard rent and property sale contracts; for renting you must use that contract <https://www.consumer.vic.gov.au/housing/renting/starting-and...>, and I got the impression that residential sales practically always use the standard contract.

But of course it’s impossible to convince someone of something when their livelihood depends on their not understanding it.

chrismorgan··on Re: Bye Bye Gravatar
It’s funny, I’d genuinely say that Gravatar improved for quite some time. In the old days it was fine, then for quite some time under Automattic when they started fiddling with it it was ridiculously bad and for a while even literally unusable due to broken tie-in to WordPress.com accounts or something (I forget), then they finally got it together again so that it was arguably better than before they took it over, with the caveat that they had expanded its scope a little so there was foolish distraction, but at least the core flow was actually better… but then they’ve continued fiddling with it.

At a cursory glance, this “AI Context” thing is just frivolous AI-washing of the profiles feature they put in some years ago for humans to be able to read. I’m tired of that sort of thing, and products advertising features as being AI Ready™ for an Agentic Future™, when those features are just as meaningful for poor humans.

chrismorgan··on New Framework Desktop Option with AMD Ryzen AI Max+ Pro 495 and 192GB Memory
No blog post, no order, no preorder; I think the only things about it are this sentence and a half:

> 192GB coming soon

> The most powerful Framework Desktop yet is coming soon with an AMD Ryzen™ AI Max+ PRO 495 processor and 192GB of LPDDR5X memory.

chrismorgan··on Jelly UI: Soft-body physics for native HTML form controls
Some review of Jelly UI itself.

—⁂—

It requires JS to work, which could have been avoided at some arguable ergonomic cost. Personally I’d disqualify it from being considered “native HTML form controls”—it’d need to be just an enhancement to qualify in my mind.

—⁂—

Your sets of chips like mode auto/dark/light should be marked up and behave as radio buttons: when one is checked, it should be the only one in the tab order, and arrow keys and such cycle through them. <jelly-segmented> gets this right.

—⁂—

The demos show a “click” toast on buttons even if you move out of the button before releasing, which should cancel it. Either the event handler is linked to something other than activation (which should be fixed), or activation behaviour is wrong (which should be fixed).

—⁂—

> <jelly-checkbox indeterminate>

Oh how I wish <input type=checkbox> had an indeterminate attribute and a way of telling it to cycle through indeterminate when clicking. As it is, it’s purely a property, not attainable in serialised HTML.

—⁂—

> <jelly-otp>

I hate it. Do not under any circumstances use a sequence of single-character inputs for OTPs. It behaves really nastily. Sure, you made the simple paste case work, but all kinds of other normal interactions are busted. You must use one input. If you want to style it in a way that shows the intended length and puts characters in those boxes, you can still do it. Use `font-variant: tabular-nums` or `font-family: monospace`, then rely on the ch unit and probably add some letter-spacing (one of the very few legitimate cases for letter-spacing), and draw behind. Or, if you want more control… contenteditable is available.

—⁂—

> <jelly-range>

I thought we were talking “native HTML form controls”? There ain’t no such thing in HTML. (It becomes apparent the further I go that it’s not intended to be limited to what HTML has.)

—⁂—

> <jelly-switch>

There’s a gap in the hit target between the switch and the label. This needs to never happen. It didn’t seem to with checkboxes or radio buttons.

—⁂—

> <jelly-textarea>

Hold down a letter until it gives up expanding, and I found text and scrollbar drawn on top of the jelly border.

—⁂—

> <jelly-alert dismissable>

The × hit target is much too small.

—⁂—

> <jelly-pagination>

Not pleasant to use. Bad hit targets (too small, gaps between), poor choice of pages to offer (‹ 1 … prev self next … last ›: you want 2 instead of … if prev is 3, and you want more than one prev/next), and if it’s ever going to be interactive, the layout changes far too much.

—⁂—

> <jelly-tabs>

Ugh. Ugh. Unpleasant appearance, presenting tab bar and panel as unrelated widgets. Bad cross-fade (opacity drops below 1).

—⁂—

> <jelly-dialog>, <jelly-drawer>

Opening it in dark mode was very jarring: no transition, and the backdrop lightens (should darken; that may require changes to the dialog background colour).

—⁂—

> <jelly-menu>

You reused a <select> dropdown, and it shows. Interactions are all wrong. It also says “typeahead keyboard support” but I see no such thing.

chrismorgan··on Jelly UI: Soft-body physics for native HTML form controls
Please never use scroll-snap as is done on this demo page (unrelated to the soft-body physics). It leads to an awful experience for a large fraction of users. It improves things in one or two scenarios, but at the cost of far more common great frustration.

Scroll-snap is a really risky feature, very niche in its reasonable applications. This is definitely not a suitable place to use it.

chrismorgan··on Exploit brokers pay $500k for WordPress RCEs. I found one with GPT5.6 and $25
If code is poetry, WordPress was written by William McGonagall <https://en.wikipedia.org/wiki/William_McGonagall>.
chrismorgan··on What I learned selling 2,500 MIDI recorders: Hardware is not so hard
> Almost all commercial devices need a unique ID, private key, etc

Serious question: why?

chrismorgan··on Battery packs: Let's talk about crates, baby
The guy that is making stdx has been doing various shady stuff in his books and code which have resulted in all his stuff being banned on /r/rust. In stdx, he’s been forking good code, violating licenses, completely rewriting stuff with LLMs (including cryptography code, and definitely introducing bugs in the process)… it’s not a good approach.
chrismorgan··on LG monitors silently install software through Windows Update without consent
They push this message hard: unless you pay us, the bad guys will eat your lunch.

The truth is that if you uninstall their software (and hopefully also if you just let the trial lapse, though I don’t actually know whether Defender Antivirus gets enabled automatically in that case) Microsoft will defend you against the lunch-eating bad guys just as well as McAfee, for free.

That easily qualifies it as fraud.

For that reason, I’m willing to call it a scam when preinstalled or otherwise installed without user intent. I wouldn’t call it a scam if people installed it deliberately (though I would still disparage it and its tactics).

chrismorgan··on LG monitors silently install software through Windows Update without consent
When preinstalled (as multiple major OEMs do), or when bundled in unrelated installers in these sorts of ways, it matches the definitions of scam excellently, and protection racket not badly.

When you uninstall, they give you an opportunity to type a reason. I wonder if anyone actually reads my accusations of them being scammers and bad people. I have uninstalled McAfee from more people’s computers than I care to remember.

chrismorgan··on Kimi K3, and what we can still learn from the pelican benchmark
https://simonwillison.net/tags/pelican-riding-a-bicycle/ isn’t quite a gallery, but pretty close.
chrismorgan··on The git history command
Diffing diffs is so valuable for that reason, seriously underrated. Once I even found a use case for diffing diff diffs.

I also often wish to edit commits or resolve rebase conflicts or whatever by editing the patch rather than the files.

chrismorgan··on Since Chromium 148, Math.tanh is now fingerprintable to link underlying OS
The overwhelming majority of the time (typically far higher than 99% of the time), if they hit a download button, they want it for their current platform.

And detecting their platform doesn’t stop you from presenting supplemental links for all platforms. In fact I’d say that’s completely normal.

← PreviousPage 5 of 34Next →