M
Markus Kuhn
cl.cam.ac.uk/~mgk25 · Personal blog · on HN since 2008
Markus Kuhn, a Cambridge computer security researcher, keeps reference pages on UTF-8, Unicode fonts, quotation marks, paper sizes and TV eavesdropping.
What HN saysHN commenters cite his pages as go-to references on UTF-8, X11 fonts, quote marks and ISO paper sizes, and one recommends his OTPW one-time password tool.
133HN people shared it
96linked it in comments
75stories submitted
907story points
5 months agolast shared
2008people per year2026
Most-shared posts
- 1UTF-8 history (2003)46 people · 426 points · first shared 2008 · 52 comments on HN
- 2ASCII and Unicode quotation marks10 people · 183 points · first shared 2013 · 186 comments on HN
- 3UTF-8 and Unicode FAQ for Unix/Linux8 people · 7 points · first shared 2008 · discussion on HN
- 4Electromagnetic Eavesdropping Risks of Flat-Panel Displays [pdf]8 people · 1 points · first shared 2008 · discussion on HN
- 5Unicode Fonts and Tools for X118 people · 1 points · first shared 2013 · discussion on HN
- 6Deciphering TV by analyzing the flickering on a wall [pdf]8 people · 1 points · first shared 2012 · discussion on HN
- 7International Standard Paper Sizes7 people · 92 points · first shared 2014 · 73 comments on HN
- 8A summary of the international standard date and time notation (2004)7 people · 57 points · first shared 2009 · 5 comments on HN
- 9UTC with Smoothed Leap Seconds (2011)7 people · 46 points · first shared 2011 · 3 comments on HN
- 10UTF-8 decoder capability and stress test7 people · 1 points · first shared 2011 · discussion on HN
- 11UTF-8-demo.txt (2002)5 people · 2 points · first shared 2014 · 2 comments on HN
- 12OTPW – A one-time password login package3 people · 20 points · first shared 2010 · 5 comments on HN
- 13IBM PC Real Time Clock Should Run in UT3 people · 5 points · first shared 2013 · 2 comments on HN
- 14Apostrophe3 people · first shared 2015
- 15Eurion.pdf3 people · first shared 2015
What HN people wrote when they linked it
cylinder714 · 2026-01-07
Obligatory link to Markus Kuhn's excellent page on international/metric paper sizes: https://www.cl.cam.ac.uk/~mgk25/iso-paper.html
sdfsdfdsfsf · 2023-07-21
The quote marks on that page are a real mess. Best practice is to use double curly quotes or single curly quotes—not backtick and apostrophe.
See https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
("Summary: Please do not use the ASCII grave accent (0x60) as a left quotation mark together with the ASCII apostrophe (0x27) as the corresponding right quotation mark (as in `quote').")
Also, Founder's Caslon is commercially available, at least, it is now.
https://www.myfonts.com/collections/founders-caslon-font-itc
amacbride · 2023-02-13
As a traditionalist, I swear by good ol' X11 "fixed" (6x13) -- great density and legibility, with pretty much any glyph one would want.
https://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html
gnufx · 2022-01-06
Around the time it was released I tried to interest people in Kuhn's https://www.cl.cam.ac.uk/~mgk25/otpw.html for those travelling and wanting SSH access to the site from potentially-dodgy systems. Still, without your own device you may not be able even to use hardware keys. If the client is untrustworthy, you do still might worry about the channel being open from it to the other end.
feldrim · 2021-12-31
> The UTF-8 encoding was invented in 1992 and standardized by January 1993. UTF-8 was adopted by the unix world over the following years due to its backwards-compatibility
I'd like to add some historical background the UTF-8 problem mentioned there. UTF-8 was standardized in 1992. But the first Linux using UTF-8 as the default encoding was RedHat in 2002 [1]. 10 years later!
On the other hand, Windows started using Unicode before it was standardized, and back then there was no UTF-8. Or as Raymond Chen put it, "Windows adopted Unicode before the C language did" [2].
[1] https://www.cl.cam.ac.uk/~mgk25/unicode.html#linux
[2] https://devblogs.microsoft.com/oldnewthing/20190830-00/?p=102823
JNRowe · 2021-08-13
Markus Kuhn’s International Standard Paper Sizes¹ is a great document on ISO-216 paper sizes, if you want a little more depth than HelloNurse’s succinct description. It also covers US-style sizes toward the bottom.
Kuhn also has an excellent ISO-8601 document², which makes you wish he would dive through more of the common standards that ISO stand guard over.
¹ https://www.cl.cam.ac.uk/~mgk25/iso-paper.html
² https://www.cl.cam.ac.uk/~mgk25/iso-time.html - Sadly only covers timestamps, not durations/intervals/etc
_emacsomancer_ · 2020-09-15
misc-fixed are really great fonts (I wish they handled devanagari/indic scripts - that unfortunately seems unlikely to happen: https://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html , though some of them do handle other abugidas like ge'ez/ethiopic)
jquast · 2019-10-10
Markus Kuhn did a great deal of work for unicode for unix, see the rest of the same folder, https://www.cl.cam.ac.uk/~mgk25/ucs/
such as examples/UTF-8-demo.txt a beautiful demo file for testing terminal emulators
or the wcwidth.c file I discovered was the origin of the same c function found in all OS's, i forked & maintain in python form as the public "wcwidth" module,
anyway just wanted to point out the treasure trove of the parent folder!
anfractuosity · 2017-10-23
Wow the card reading experiment is really amazing!
Also I'm not sure if this is similar or not but the following, seems like it might be related:
https://www.cl.cam.ac.uk/~mgk25/ieee02-optical.pdf
"Optical Time-Domain Eavesdropping Risks of CRT Displays"
Where he picks up an image from the diffuse light from a CRT on a wall.
userbinator · 2016-02-28
Agree completely, in fact one of my favourite fonts is the non-antialiased monospaced 'Fixed' font that came with X:
https://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html
With a small tweak, adding a slash to the 0, it's perfect for reading source code all day long, and I've also started using it elsewhere including the browser.
Anthony-G · 2015-01-22
I knew there was some sort of preventative measures built into modern colour photocopiers but hadn't heard of the Eurion constellation until now. It turns out that it was actually discovered by the author of the excellent UTF-8 and Unicode FAQ for Unix/Linux [1] resource.
[1] http://www.cl.cam.ac.uk/~mgk25/unicode.html
Robin_Message · 2012-07-18
You're thinking of Optical Time-Domain Eavesdropping Risks of CRT Displays by Markus G. Kuhn in Proceedings of the 2002 IEEE Symposium on Security and Privacy, Berkeley, California, 12–15 May 2002.
Available here: http://www.cl.cam.ac.uk/~mgk25/ieee02-optical.pdf
Pretty amazing that this actually works, just using a high-speed photo-sensor – and doesn't even require line of sight, a reflection off a wall is enough. Unfortunately, I don't think it will work on LCD screens.
lubutu · 2012-04-29
This is a great resource; it was extremely useful when I was writing a UTF-8 library myself. I found the UTF-8 stress test file is particularly useful to run tests against: http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
thibaut_barrere · 2010-08-09
I believe YYYY-MM-DD is the international standard date notation (ISO 8601)
http://www.cl.cam.ac.uk/~mgk25/iso-time.html
One point which makes me love this one is that it's "easily sortable and comparable", which is great when you have tons of files in a folder.
bayleo · 2008-10-21
Not necessarily... electromagnetic eavesdropping on LCD monitors has been proven possible as well. We're all going to get exposed!
If you're interested the following is a link to a paper on Van Eck phreaking LCD monitors:
http://www.cl.cam.ac.uk/~mgk25/pet2004-fpd.pdf
svat · 2021-04-23
I remember encountering this wonderful page/website about ten years ago, and I was struck by two things:
1. How effective it was (and is). Both the demonstrations here (of Boyer-Moore algorithm, and of Knuth-Morris-Pratt) illustrate the algorithms very clearly (the same for the linear-time majority vote algorithm); the interactive (web) medium really helps (just hyperlinks and maybe the back button); and the technology is nothing more than a hand-coded HTML file (with abundant "<BR>"s), already over a decade old when I saw it. (The DOCTYPE line in the source mentioning "HTML 3.2" lets us date this to 1997 I guess, as HTML 3.2 was released in January 1997 and HTML 4 in December 1997.)
2. The page one level up from this (https://www.cs.utexas.edu/users/moore/best-ideas/index.html), titled ``My'' Best Ideas, which opens [Incidentally, this usage of `` and '' reflects ancient fonts—you can see the same usage in Emacs, TeX, etc—explained well by Markus Kuhn here: https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html] with:
> Here are the technical achievements of which I am most proud. I think such a list gives more insight into my research than, say, the traditional ``Honors and Awards'' section of a resume.
And it lists eight ideas. Firstly, what a great idea to make such a list. And secondly, an impressive research career, and it's a successful life, to end with a portfolio of 8 ideas of which one can be proud. One doesn't need much more, and to have a handful of good ideas is…
js2 · 2011-01-05
The wikipedia page on UTF-8 -- http://en.wikipedia.org/wiki/UTF-8 -- is excellent, and includes a link to this wonderful anecdote from Rob Pike - http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
UTF-8 was designed, in front of my eyes, on a
placemat in a New Jersey diner one night in September or so 1992.
What happened was this. We had used the original UTF from ISO 10646
to make Plan 9 support 16-bit characters, but we hated it. We were
close to shipping the system when, late one afternoon, I received a
call from some folks, I think at IBM - I remember them being in Austin
- who were in an X/Open committee meeting. They wanted Ken and me to
vet their FSS/UTF design. We understood why they were introducing a
new design, and Ken and I suddenly realized there was an opportunity
to use our experience to design a really good standard and get the
X/Open guys to push it out. We suggested this and the deal was, if we
could do it fast, OK. So we went to dinner, Ken figured out the
bit-packing, and when we came back to the lab after dinner we called
the X/Open guys and explained our scheme. We mailed them an outline
of our spec, and they replied saying that it was better than theirs (I
don't believe I ever actually saw their proposal; I know I don't
remember it) and how fast could we implement it? I think this was a
Wednesday night and we promised a complete running system by Monday,
which I think was when their big vote was.
koolba · 2026-04-25
> … NJ diners because one saw the birth of Unicode
While it’s possible that Unicode was also conceived at a diner, you’re likely thinking of UTF-8. Unicode was from a decade earlier.
https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
tmtvl · 2025-11-03
Some vaguely related things:
- VTTEST <https://invisible-island.net/vttest/vttest.html>, which tests capabilities from VT-100 to VT-520 terminals.
- Markus Kuhn's UTF-8 test <https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt>.
kunley · 2025-09-13
In case no one mentioned that yet in this thread, here's the story how it was invented by Ken Thompson & Rob Pike over a dinner.
https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
https://doc.cat-v.org/bell_labs/utf-8_history
throw0101d · 2025-09-12
> It sacrifices the ability to encode more than 21 bits, which I believe was done for compatibility with UTF-16: UTF-16’s awful “surrogate” mechanism can only express code units up to 2^21-1z
Yes, it is 'truncated' to the "UTF-16 accessible range":
* https://datatracker.ietf.org/doc/html/rfc3629#section-3
* https://en.wikipedia.org/wiki/UTF-8#History
Thompson's original design could handle up to six octets for each letter/symbol, with 31 bits of space:
* https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
nostrademons · 2025-09-12
For more on UTF-8's design, see Russ Cox's one-pager on it:
https://research.swtch.com/utf8
And Rob Pike's description of the history of how it was designed:
https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
tom_ · 2023-05-15
Some discussion here: https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
typical182 · 2023-04-28
There is a pretty complete description of the origination of UTF-8 here:
https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
Rob Pike opens with:
> Looking around at some UTF-8 background, I see the same incorrect story being repeated over and over. The incorrect version is:
1. IBM designed UTF-8.
2. Plan 9 implemented it.
> That's not true. UTF-8 was designed, in front of my eyes, on a placemat in a New Jersey diner one night in September or so 1992.
Tagbert · 2023-03-28
that’s because curly quotes are different characters from the straight quote characters that you can see on your keyboard. Some apps will convert straight quotes to curly quotes to “help” you.
https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
runnerup · 2023-02-15
gpderetta · 2022-12-01
For more details: Rob Pike & Ken Thompson invented UTF-8 when prompted by X/Open (Not sure if X/Open and POSIX were already merged at that point) and they first implemented the proof of concept on plan9 (https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt).
rockwotj · 2022-11-16
Speaking of "getting" UTF8, I really enjoy this story on it's inception: https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
stefs · 2022-10-07
> UTF-8 was designed, in front of my eyes, on a placemat in a New Jersey diner one night in September or so 1992.
https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
gowld · 2022-07-25
It's not just Facebook. A large community doesn't want them.
https://www.cl.cam.ac.uk/~mgk25/time/leap/
Time in the real world can use leap hours, the next of which will be in approximately 3000 years.