Plain Text - Dylan Beattie - NDC Oslo 2021
Why Hacker News recommends it
HN commenters recommend it as the most entertaining deep dive into character encodings, ASCII history and Unicode pitfalls, often when a thread's article explains those topics too thinly.
Recommended by 3 people across 3 different months, 2022 to 2026.
What it is
Dylan Beattie's NDC Oslo 2021 talk argues that "plain text" doesn't really exist, tracing text from mechanical teletypes and ASCII through code pages, encodings and collations. He walks through memorable bugs, such as Chinese characters in Windows event logs and Aarhus appearing in the wrong place, and gives golden rules for handling text.
What people said
Strong rec ollien · 2026-10 · Hacker News · on “Plain text is still one of the best technologies we have”
Tangential to the actual point of the post, but the talk "Plain text? Really?" by Dylan Beattie[1] is one of my favorite talks. It does a great job capturing the problems with something that "seems" so simple. I think the author of the blog is well aware of these, though :) [1] [this video]
Recommends SheetPost · 2022-07 · Hacker News · on “What happens when you press a key in your terminal?”
> Here’s an old chart from the 60s that explains it eh, the article linked does a very poor job of an explanation of ASCII And no wonder, it's a deep subject - if you want answers the you want to watch this talk: [this video]
Recommends ssokolow · 2023-10 · Hacker News · on “What every software developer must know about Unicode in 2023”
Yes. Give [this video] a watch... especially the "Oh my God! We've been hacked!" part at 36:20. TL;DR: They had a transient glitch in their network switch and, because Windows uses UTF-16 when sending remote event logs over the wire, whenever it dropped a single byte, it had the effect of swapping the endianness of the messages, resulting in scary Chinese text in the logs. You could get the same effect by naively applying byte-wise processing to UTF-16 or UTF-32, or having an off-by-one error. UTF-8 is self-synchronizing so one-byte errors like that only lose you one character, rather than corrupting the entire stream going forward.