I have started exploring  tildes.  <butchered column>
When  I am playing  games  and in
real   life,   I am an  explorer.
Before I knew about computers,  I
played   World of Warcraft  after
having  played  Warcraft   3  too
seriously. To those who never had
this    diversion,    this    was
Blizzard's   famous  Tolkeinesque
franchise   where orcs and humans
are  at war, and reclusive  elves
also get dragged  into it. In the
World   of  Warcraft    massively
multiplayer    Online  game,  elf
characters     start    in     an
Yggdrassil-like    tree   on   an
island.   After  descending   the
tree, elves would catch a boat to  Also  I  changed   the  not-found
the human-inhabited  lands.  With  return    from   "NIL"    to    a
some swimming,  you could explore  human-readable     message     at
around   the base  of  the  tree,  xwindows' prompting.
which was lightly  forested  with
small trees amoung  roots  of the  $    printf    "bad"     |     nc
great tree.  The game clearly did  beastie.sdf.org  7991 I found  no
not expect you to go here, as the  pages
creatures  and monsters  the game
generates   did not spawn  there,  Deeper in, we discussed  using an
nor    were   there   any   other  inetd   based  server   such   as
non-player-characters. However it  gophernicus. However I don't have
was like exploring an uninhabited  the level of access necessary  to
coastline-    there   was   clear  customise    inetd    myself   on
artistry  of a kind in the forest  beastie,    so  instead    I   do
and beach alcoves.                 something   like a fastcgi  on my
                                  assigned  port.  However  while I
On my adventures  I met xwindows,  accept  new  connections   in   a
who  is  wise  in  the  ways   of  multithreaded way via common lisp
gophers.    Inspecting   my  tiny  usocket,   I only have  a  single
readonly-memory     lisp   gopher  thread  sequentially   deal  with
server,    xwindows     helpfully  each connection.  We talked about
pointed   out that  the  standard  having  one  thread   responsibly
requires CRLF be respected  as an  deal     with    multiple    slow
item specifier, whereas my server  connections at the same time, but
gopher://beastie.sdf.org:7991/     xwindows   felt for my use case I
was only serving /CRLF (the slash  should just dispatch a thread for
implying a top level directory to  each connection  (with a counting
me).   I made  it serve  the same  semaphore to constrain the number
gophermap for "/" "CRLF" and "LF"  of  threads).   I had  originally
initially  in a silly duplicative  deigned   not to do that,  but  I
way,  though  I quickly   patched  think  I will make  a new version
that  out-  since  only  the  top  that does do that.
level   gopher  listing   was   a
special  case, I could handle  it  In  other   news,  we had  a  fun
specially   without much  affair.  conversation   during  rolltime's
Actually,  my gopher server works  weekend  show about when we might
in   a  funny   way-   it   reads  want  tls  or signing  of phosts.
characters   until there is  only  Since  I phost  lots of code  for
one    (or    no)    possibility,  people   to  play  with,   I  had
immediately   forces that  output  thought  that verifying  it using
and closes the connection.   Here  signify(1)  could conceivably  be
is   a  collection    of   gopher  important     (if   someone   was
requests  that work  equivalently  otherwise being attacked, and was
(by group):                        downloading and running code from
                                  my phlog without actually looking
printf "\n" | \                    at it).  However  this also seems
nc beastie.sdf.org 7991           kind of misplaced.  Instead, I am
printf "/\r" | \                   thinking to start
 nc beastie.sdf.org 7991          actually-finishing-packaging   my
and so on. Also:                   odd  bits and pieces,  since  for
printf \                           example  the BSD ports  Makefiles
"phlogs/impromptu-bagels.txt"     already   include   cryptographic
and                                checksum checking,  so by porting
printf \                           my code to BSDs (or linux package
"phlogs/imp"                      managers)    I  get   that   both
and                                reliably and somewhat
printf \                           transparently   by  default.    I
"phlogs/impSpellingMistake"       wanted to include packaging  lisp
are equivalents.                   projects  for distribution  in my
                                  next HPR contribution already.

----

Another    value  of  tls,  which
gopher   does not use, is that it
exposes  slightly  less  tracking
information   in  your  requests,
assuming you are not leaking more
tracking information by
contacting   whitelists  yourself
(like  mainstream  web browsers).
*Gemini doesn't  do that, instead
practicing TOFU (assume the first
certificate  you see is the  real
one  and issue  warnings  if  the
certificate changes
unexpectedly). I don't like being
proximally  mined for my browsing
data   by  my  ISP  for  example.
However   I think  this  is  best
mitigated   by  browsing   gopher
through   a tilde,  who  are  our
libre-loving community.

This week I will also switch   my
default  gopher browser to phetch
for good.