26,924 karma · joined September 13, 2012
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 ]
https://hn.algolia.com/?query=chrismorgan+strict+sqlite&type...
If you’re going to work with a database through something like the Rust sqlx crate, I think you’re better to eschew strict mode.
Even back then, Chrome was commonly being significantly overcounted due to user-agent string shenanigans. And these days I’m confident (without any figures, or even relevant recent commercial experience) that will have increased sharply. I expect that it is now massively overcounted, at the same time as Firefox is significantly undercounted.
Statcounter is particularly commonly used, and honestly one of the worst. Its mobile figures, for example, are completely useless because they don’t report browser versions. CanIUse figures (which lean heavily but not solely on Statcounter) are lousy and unrealistic due to some of these sorts of issues, and just generally being out of date. (I examined the matter closely on 2023-05-27 and the figures corresponded with being about six weeks behind.)
“People are already doing it, so we might as well rubber-stamp it even if it’s not great” introduces problems of its own: people will perceive that rubber-stamping as validating it, and now they’ll use it even more, where perhaps if you held back, they wouldn’t.
(There are counter-arguments as well, of course. A couple of relevant cases that spring to mind where a body has not aligned with usage or expectations: W3C lost control of HTML, and it was probably for the best, but they remain a relevant body in closely-related areas; and OSI licence approval is a horribly broken political process which is almost universally misunderstood and close to frozen in time, yet they haven’t suffered like they should have for their misdeeds, they pretty much got away with it. There was also that thing somewhat recently about FedRAMP rubber-stamping Microsoft Cloud despite it failing dismally, because US government agencies had already started using it too much; and I wonder what that does to their credibility.)
This is also a concern with informational/independent submissions through IETF. They are frequently perceived as having IETF/standards weight.
Nothing to do with Firefox, it’s just the browser rendering the page.
I open https://shtein.me/api/joke in a normal-enough browser (Firefox Nightly with Enhanced Tracking Protection and uBlock Origin). After loading its 2.3MB response (no useful HTML, just a huge inlined JS blob, and served without transfer compression), it asks me to select a wallet. There are two choices.
I select “Injected” and press “Connect wallet” (ugh, why did it require me to click three times instead of just one!?). Nothing discernible happens. No errors or network activity in the dev tools.
I select “Coinbase Wallet” and press “Connect wallet”. It opens a popup window, <https://keys.coinbase.com/connect?sdkName=%40coinbase%2Fwall...>. The TLS connection fails, PR_END_OF_FILE_ERROR. Operating on a hunch, I discover it’s blocked in India:
$ curl keys.coinbase.com
The website has been blocked as per order of the Ministry of Electronics and Information Technology under IT Act, 2000.
(coinbase.com and www.coinbase.com are similarly affected.)Not sure quite what to make of that, given that https://www.coinbase.com/en-in/blog/coinbase-launches-in-ind... sounds (from the snippet exposed in a search engine) like Coinbase started fully operating in India five weeks ago.
Can’t say it leaves a positive impression.
—⁂—
Code blocks are indented by six spaces. Oddly specific. Four spaces or one tab I could understand, even two or eight spaces have some precedent, but six spaces?
Combining that with treating “### ” as special… very odd.
—⁂—
Link syntax is possibly even worse than Markdown’s.
Now Markdown’s is terrible: people mix up the square brackets and parentheses frequently, the fact that the href is next to the delimited text rather than inside (e.g. [text <href>] or [text|href]) is dubious, and it uses as its closing delimiter the right parenthesis which doesn’t get escaped in URLs <https://url.spec.whatwg.org/#url-code-points> so that you have to add an extra step after normal URL serialisation, { '(' → %28, ')' → %29 }, for general correctness.
But Shrimple’s? The idea of merging hrefs with footnotes is definitely appealing, but the way it’s been done is hard to read and quite unmanageable. The link is essentially delimited by a "-> " prefix and a "[N]" suffix. Tough to read, though syntax highlighting may make it more bearable. But really, paired delimiters are generally safer. In Markdown, it would have been a "[" prefix and a "][N]" suffix, and that would have been nicer.
Then the URLs (as text, not linked) remain at the end of the document, devoid of context.
And you can only use numbers, not names. And to be frank, inline hrefs are better a significant fraction of the time.
Footnotes are a bad idea in general: you have to go all the way to the end of the document to resolve them, then find your way back. By contrast, in languages like Markdown and reStructuredText you can define your links closer to where they’re used, if you wish.
reStructuredText_ lets you link a single word with a trailing underscore.
Multi-word link targets need `backtick delimition`_.
In either form, double the underscore for an anonymous link__,
which you can place after the paragraph.
That might sometimes be neater than using an `inline reference <https://example.com>`_.
__ https://example.com/
.. _reStructuredText: https://docutils.sourceforge.io/rst.html
.. _backtick delimition: https://docutils.sourceforge.io/docs/user/rst/quickref.html#hyperlink-targets
I also think that notes sources should be spanned: mark which words the footnote applies to. But that sort of thing is going beyond what Markdown covers.(Content-wise: looking at the footnotes, I see two orphaned footnotes, and one of them seems to have bad HTML escaping done to it, > becomes &rt; which is invalid; where I would have expected that -> to become a link.)
—⁂—
Lists: requiring two-space indentation is bizarre. For bullets, it can be nice to match four-space block indentation, and that’s how I’ve tended to write things in my own lightweight markup language (LML), but then for numbers you want one or zero spaces to keep up that concept. In the end, it’s just… why?
> Subsequent items may be numbered normally (unlike Markdown, where they all have to be "1").
That’s flat-out wrong about Markdown.
> Numbers don't have to be consequtive, but they will be normalized to be consequtive. It just werks!
Yuck, yuck, yuck. That’s what Markdown does, and I hate it. If I wrote 44, I meant 44. If you really want to, have tooling that detects sequence breaks and warns “did you actually mean 44?”, but changing what the user clearly wrote is nasty.
—⁂—
Parse and render dictionaries: seems a very specific feature that is unlikely to compose well. The basic concept can definitely be useful, but I don’t think it’s exposed well.
Nowadays, you use transitions instead, which are not queued. But I still very occasionally see things that use queued animations.
Were it so, I wouldn’t mind so much. But they hurt others, too.
(Actually, to be more specific, a YAML file with no directives, explicitly-signalled start-of-document-content, and followed by a second null document. I will note that frontmatter syntax is not specified; the non-normative Appendix B is the only place that suggests it means prefix and suffix --- lines. And no, frontmatter is not part of Markdown, or CommonMark, and is in fact incompatible with both. And it’s invalid YAML too, the end-of-frontmatter line should be ... to indicate end of document without starting a new document.)
If you cluster English dialects by various characteristics, you’ll end up with en-US as a clear outlier. I believe that, if you’re going to divide English into two camps, the best is “English (International)” and “English (US)”. Canadian English is the one that’s closest to US English, but even it works at least as well based on International English as regards spelling (https://en.wikipedia.org/wiki/American_and_British_English_s... is an interesting read).
But there’s a lot more to it than spelling, and here the distinction is even clearer: the US has its own length, area, volume, weight and temperature units that no one else uses; its own stupid date format that everyone else loathes; its own paper sizes that no one else knows what to do with.
Not everyone else agrees on which date format to use, but we do all agree that any of our formats (DD/MM/YY, DD-MM-YYYY, YYYY-MM-DD, &c.) are better than the US’s middle-endian monstrosity. Though if we see the likes of DD/MM/YYYY we may mistrust whether it’s actually MM/DD/YYYY.
I also believe that you should default to English (International) for all users geolocated outside the USA.
Once you’ve get this divide right, adding further dialects also probably becomes quite a bit easier. But I do wish for diamond inheritance of locales: so you can mix in -ise/-ize, -yse/-yze, -re/-er, -ence/-ense, program/programme, and thereby deduplicate a fair bit across locales.
(There are still plenty of differences: such as time formats; decimal/grouping separators though I believe all places where English is a main language use . for decimal and , for grouping; even number grouping varies: en-IN does 1,23,45,678 rather than 12,345,678; keyboard layout; word choices; and lots more.)
(One last point: the naming is a bit fiddly. “Spanish (International)” means Spanish as used outside Spain. “English (International)” means the broad international/non-US consensus of what English is, generally following what England does but probably with kilometres instead of miles for long distances.)
(If people aren’t convinced by that, my next area is complex text layout, starting with my name in the Telugu script, <https://temp.chrismorgan.info/క్రిస్.svg>, also augmenting that with how the r can be drawn to the left or underneath or even a little to the right of the k, which I really should add to that SVG file.)
Seems kinda off. They’re pointing a knife at you menacingly and have promised that in a variety of circumstances they will stab you, but because they haven’t actually stabbed you yet, you’re not allowed to complain. Feels like maybe (maybe; I’m not entirely convinced) that threat should be standing enough, just as conspiracy and attempted murder can be criminal matters, and not just a successful murder.
Gotta say, though, that I don’t think one actually misses much in such cases.
Of sites that require JS to not be blank and don’t fit into this main category, my vague feeling is that the rate hasn’t changed much.
1. Springer Nature are happily selling an empty PDF for $39.95.
2. Springer Nature responded that they’re not going to tell you why they retracted it, because retraction details are normally only shared with the author (who in this case died almost 80 years ago).