The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 2,947 other followers

How isotopp became the online handle of Kristian Köhntopp

Posted by jpluimers on 2022/06/09

Like me, [Archive.is] Kristian Köhntopp is a nerd.

Unlike me, Kris bumped into character encoding issues for just about all his digital life. That started about the same time as mine, but again unlike me: he was way more involved in the technical aspects of it.

First a series of Tweets:

  1. [Archive.is] Kristian Köhntopp on Twitter: “[ (Kristian Koehntopp) (Harmsstrasse 98) (2300 Kiel) (+49 431 676689) ] /a{def}def /e{exch}a /p{currentpoint e pop}a /m{moveto}a /s{sub}a /Times-BoldItalic findfont setfont 36 36 scale 0 4 m{p 12 2 index stringwidthpop s 2 div e m show p 0 e 1 s dup 4 e s 4 div setgray m}forall
  2. [Archive.is] Kristian Köhntopp on Twitter: “und das “showpage” passt nicht mehr in den Tweet. (eine .signature von 1993, …) (“und so kam es zu =?iso-8891?q?K=f6hntopp?= und dann zu Isotopp“)… “
    • [Wayback/Archive.is] Tele(te)x –> Internet
      Kristian Koehntopp
      Feb 5, 1993, 12:08:14 PM
      to
      >kr...@black.toppoint.de schrieb:
      >>Und was sagen Banken, Sparkassen und Aemter zu Formularen mit Tuettelchen
      >>in den Worten?
      ^^^^^^^^^^^^^^ Das ist von Dir und nicht von mir (wrong
      attribution)
      >Bist du sicher, dass du mich verstanden hast, Kris? Ich meinte, dass Banken
      >inzwischen gluecklicherweise mit ordentlichen deutschen Umlauten gut klarkommen,
      >aber sicher dreimal schlucken wuerden, wenn ich 'J"org Stattaus' als
      >Auftraggeber schreiben wuerde.
      
      Ich moechte auch nicht "Kristian K"ohntopp" oder "Kristian
      Koehntopp" heissen. Aber letztere Schreibweise knallt mir meine
      Bank und mein Einwohnermeldeamt (beide verwendet Geraete
      deutscher Hersteller) immer noch an den Kopf.
      
      Kristian
      --
      [ (Kristian Koehntopp) (Harmsstrasse 98) (2300 Kiel) (+49 431 676689) ]
      /a{def}def /e{exch}a /p{currentpoint e pop}a /m{moveto}a /s{sub}a
      /Times-BoldItalic findfont setfont 36 36 scale 0 4 m{p 12 2 index stringwidth
      pop s 2 div e m show p 0 e 1 s dup 4 e s 4 div setgray m}forall showpage
  3. [Archive.is] Jeroen Wiert Pluimers on Twitter: “8891? (as ISO 8891:1998 “Dental casting alloys with noble metal content of at least 25 % but less than 75 %”)… “
  4. [Archive.is] Jeroen Wiert Pluimers on Twitter: “Make that 8859-1. Brain still not fully working.… “
  5. [Archive.is] Kristian Köhntopp on Twitter: “Exotische Sprachen sind exotisch. Aus dem Postscript-Buch hab ich immerhin noch eine Signature bekommen. … “

… and a single one: [Archive] Kris on Twitter: “Es war ircII, ich brauchte einen Nick und nn machte im Usenet aus Köhntopp etwas mit Iso…unleserlich…topp. Terra sagte, mein Nick sei also Isotopp. Das war Ende der 80er.” / Twitter

Kristan’s tweets describe how he came to ehe nickname “isotopp” as they are about representing text in email: it took quite some time for his surname “Köhntopp” to be representable in email as such in stead of “Koehntopp”:

  • The first tweet in the series is about PostScript in email signatures, still representing “Koehntopp”, but printed nicely (as that was no easy feat back then).
  • The second in the series tweet is about encoding text in email headers, finally being able to represent “Köhntopp”.
  • The separate tweet is about ircII (yes, that’s two uppercase i at the end, not two lowercase L) a classic IRC client, and of course IRC was the main chat environment in the days (Internet Relay Chat is still heavily in use today) and was based on nicknames.

Yes, this was after Unicode started in the late 1980s, but like any industry, IT often is extremely slow in adoption. Heck, after IBM being long opposed to it, C++17 finally removed the trigraphs that had been present since C++ was introduced in 1985 to solve an encoding issue because the ISO 646 invariant character set lacked characters like [. ], { and } (Pascal implementations like Delphi still use digraphs for this).

Isotopp

The second tweet refers to character encoding, allowing to and leads to Kristian’s nickname isotopp.

I responded in the third tweet because I thought the ISO number was different, and indeed it was: ISO/IEC 8859-1 – Wikipedia

ISO 8859-1 encodes what it refers to as “Latin alphabet no. 1”, consisting of 191 characters from the Latin script. This character-encoding scheme is used throughout the AmericasWestern EuropeOceania, and much of Africa. It is the basis for some popular 8-bit character sets and the first two blocks of characters in Unicode.

The text fragment =?iso-8891?q?K=f6hntopp?=

should have been =?iso-8859-1?q?K=f6hntopp?= and is MIME-encoded text.

The first I could find was at [Archive.is] Re: schadensbegrenzung ? from September 1996. In those days, I was glad my email ans newsgroup software worked at all, oblivious of any encoding issues (:

You can still see artifacts of these encoding issues, and even the peak of the .com bubble, it failed in web sites at spring 2000, for instance [Wayback/Archive.is] ‘Re: [PHP-DEV] safe_mode and file upload forms’ – MARC (yes, Kris had moved jobs to [Wayback/Archive.is] NetUSE AG):

From:       Kristian =?iso-8859-1?Q?K=F6hntopp?= <kk () netuse ! de>

Even worse: even now software gets this wrong, for instance [Archive.is/Archive.is] ISO-8859-1 header not decoded · Issue #176 · mailhog/MailHog (which has been open since 2017).

To understand what is going on, these RFC’s apply:

BTW, thanks to [Wayback/Archive.is] grebneke for answering [Wayback/Archive.is] php – Bad Header in email subject? – Stack Overflow with:

There are two encodings you can use: Quoted Printable or Base64. A typical encoded Subject header for content áéíóú looks like this:

// Using Quoted Printable encoding:
Subject: =?ISO-8859-1?Q?=C3=A1=C3=A9=C3=AD=C3=B3=C3=BA?=

// Using Base64 encoding:
Subject: =?ISO-8859-1?B?w6HDqcOtw7PDug==?=

Doing MIME-encoding correctly is not trivial. To learn everything about it, you should begin by studying RFC 2047 and RFC 2045

Basically the above text fragment is a MIME encoded word extension of the Quoted Printable encoding from a mail or netnews/usenet newsgroup header:

The form is: “=?charset?encoding?encoded text?=“.

  • charset may be any character set registered with IANA. Typically it would be the same charset as the message body.
  • encoding can be either “Q” denoting Q-encoding that is similar to the quoted-printable encoding, or “B” denoting base64 encoding.
  • encoded text is the Q-encoded or base64-encoded text.
  • An encoded-word may not be more than 75 characters long, including charsetencodingencoded text, and delimiters. If it is desirable to encode more text than will fit in an encoded-word of 75 characters, multiple encoded-words (separated by CRLF SPACE) may be used.

Emphasising the MIME encoded bit in the text fragment shows the isotopp nickname origin: =?iso-8859-1?q?K=f6hntopp?=.

Back to PostScript

The first tweet (which had a small stringwidthpop error, so I unwrapped it to a more readable version below and fixed the stringwidth pop) is an example of the back then popular [Wayback/Archive.is] PostScript signature programs.

The tweet is a one-line version of his email signature from the mid 1990s (see below).

The code in the first tweet is equivalent to this piece of commented PostScript code including the %! magic number/file signature followed by PS to indicate PostScript Level 2:

%!PS
[ (Kristian Koehntopp) (Harmsstrasse 98) (2300 Kiel) (+49 431 676689) ]
/Times-BoldItalic findfont setfont
36 36 scale                         % 36 x and y unit size, including point font size
0 4 moveto                          % x=0 from left, y=4 from bottom (4 also means 100% grey)
{                                   % gets executed for each string in the array at stack top
  currentpoint exch pop             % x y on stack, pops x, leaves y
  12                                % x=12 distance from the left to center of text
  2 index stringwidth               % % stack index 2 = string; get x y string size
  pop sub                           % pop y-size; subtract x-size from 12
  2 div                             % calculate x to print centered text
  exch                              % 
  moveto                            % move to x y
  show                              % show the string on the canvas
  currentpoint exch pop
  0 exch
  1 sub dup
  4 exch sub
  4 div setgray
  moveto
} forall                            % iterates over the array putting each string on stack top
showpage
%EOF
Kristian Koehntopp's 1993 PostScript email signature

Kristian Koehntopp’s 1993 PostScript email signature

It basically prints, in 36 point Times-BoldItalic font (the Italic slope style plus Bold weight of the Times New Roman font family which was by default in PostScript because of Linotype licensing deals), name and address on the bottom left of the page with decreased greyscale per line using a trick to have the line number (the 4 in the 0 4 bit) also act as 4 times the starting setgray value.

The surname in the PostScript signature was indeed Koehntopp, as Köhntopp was way harder because back then (this was January 1993 where [Wayback] his email signature switched from referencing [Wayback/Archive.is] RFC1217 – reed it it’s part of a hilarious series of RFCs published almost every year in springto the PostScript one). His RFC quote in the email signature back then:

Kristian
-- 
Kristian Koehntopp, Harmsstrasse 98, 2300 Kiel, +49 431 676689
"Convection Machine is a trademark of Thoughtless Machines, Inc., a joint-
 venture of Hot-Air Associates and Air Heads International using vaporware
 from the Neural Network Corporation." -- RFC1217

His PostScript signature did not have the stringwidthpop issue as it was properly wrapped over multiple lines:

Kristian
-- 
[ (Kristian Koehntopp) (Harmsstrasse 98) (2300 Kiel) (+49 431 676689) ]
/a{def}def /e{exch}a /p{currentpoint e pop}a /m{moveto}a /s{sub}a
/Times-BoldItalic findfont setfont 36 36 scale 0 4 m{p 12 2 index stringwidth
pop s 2 div e m show p 0 e 1 s dup 4 e s 4 div setgray m}forall showpage

The cool thing about that signature is that it is exactly 4 lines, [Wayback/Archive.is] Re: Should we leave this automatic handling of signatures and HTML? from Paul Haldane on 1999-11-03 (Hypermail Development List) mentions it:

          A "personal signature" is a short closing text automatically
...
          it MUST be preceded with a delimiter line containing (only)
          two hyphens (ASCII 45) followed by one SP (ASCII 32). The
...
          agents SHOULD discourage (at least with a warning) signatures
          of excessive length (4 lines is a commonly accepted limit).

and made it into the [Wayback/Archive.is] March 2005; Usenet Best Practice: draft-ietf-usefor-useage-01 IETF draft:

   Posting agents SHOULD provide a facility to enable the poster to add
   such signatures, and SHOULD discourage (at least with a warning)
   signatures of excessive length (4 lines is a commonly accepted
   limit).

(Note my --jeroen signature is a kind of parody on all this: non conforming delimter, short, lowercase j, you name it.)

There was a long discussion leading up to that IETF draft which is documented at [Wayback/Archive.is] Netnews Drafts. Part of it is [Wayback/Archive.is] www.ietf.org/proceedings/46/I-D/draft-ietf-usefor-article-02.…, and look what I found there:

          Members (alphabetical):

...
Kristian =?ISO-8859-1?Q?K=F6hntopp?= (KRIS@koehntopp.de)
...

That signature prints nicely: you can use (if you switch the default “Default browser PDF viewer” to “Web PDF viewer”, then you can even have a semi-live view each time you click the “Create PDF, F9 or Ctrl+Enter” button or use the F9 or Ctrl+Enter keys).

This was a cool trip down to memory lane, as during that period in time, I was heavily involved in TrueType, PostScript Type 1 (less operations, but with hinting) and Type 3 (full PostScript operations, but no hinting) outline font production (:

It brought back some things I long forgot (like that the PostScript stack often contains pairs of coordinates, and that operators consume, produce or process these pairs), or still remembered (that PostScript numbers are always floating points, even in for loops).

I have scheduled another PostScript post with more reference materials (like the green and blue book), and will point back to this post from there.

Heck, Adobe Amsterdam (after 30 years, their office is still in the same location!) asked me to apply for a job, but the level of PostScript they needed was higher than I figured I could offer.

–jeroen


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

 
%d bloggers like this: