----------------------------------------
       General update and dictionaries
       mai 01st, 2020
       ----------------------------------------
       
       It's been a while since I phlogged.  Life has been busy, though I stayed
       mostly at  home. This  weekend I finally  made it to  our cabin  with my
       family. Until last week, we were  not allowed to visit our cabin because
       its  situated   in  another  "fylke"   (county)  and  due   to  covid-19
       restrictions.
       
       Anyhow, I completely ignored my previous phlog post about focussing, and
       got carried  away with implementing yet  another RFC. This time  wrote a
       simple implementation of RFC2229: A Dictionary Server Protocol [1].
       
       The  standard from  1997  describes a  TCP-based  protocol for  querying
       dictionaries, like wordnet, The Devils Dictionary, the Jargon dictionary
       and other freely available dicts.
       
       Before the standard  came along, the only  available dictionary protocol
       was the  webster protocol, which  is restricted to a  single dictionary.
       RFC2229 attempts to  fix this and offers access  to several dictionaries
       including a number of strategies for finding words within an index.
       
       Basically, there are two commands available: MATCH and DEFINE.
       
       DEFINE is called with  a database (that is, a dictionary)  and a word to
       define. If the  word exists in the dictionary, a  definition of the word
       is returned.
       
       This works of course only if the word exists in a dictionary. But how do
       you look up words  in the index?  This is where  the MATCH command comes
       into play.
       
       MATCH allows you to looks for words in an index with a certain strategy.
       A  strategy is  the  algorithm used  to query  the  index. The  simplest
       strategy  is  "exact",  which  only matches  the  exact  word.   Another
       strategy is  "prefix", which  returns a  list of  words starting  with a
       given prefix. Implementations are free  to provide more strategies, like
       soundex  matching or  levenshtein,  thus providing  some  kind of  spell
       checking for words.
       
       Besides  these   commands,  the  RFC  describes   commands  for  listing
       dictionaries  (SHOW DB),  getting info  about a  certain database  (SHOW
       INFO), listing stragegies (SHOW STRAT) and some commands for information
       about the server, like SHOW STATUS.
       
       I  wrote a  quick  implementation  of a  server  using rust  (surprise!)
       available on github  [2], currently hard-coded to  two databases (Jargon
       and Devils Dictionary). RFC2229  also allows for implementation specific
       commands, prefix  by "X". So  I added a  XRANDOM command that  returns a
       random word definition from the dictionary. Yay!
       
       You can play with the server  (or any server that implements RFC2229) by
       telnet'ing to port 2628. Just enter HELP after connecting to show a list
       over available commands. This is, btw,  a nice feature of this protocol:
       You can  use telnet and explore  the protocol using the  integrated help
       function.
       
       One important  feature missing,  is to  integrate the  dictionary server
       with  gopher. It  should  be  trivial to  change  the  server to  return
       gophermaps instead of ascii definitions. Pull requests welcome!
       
       [1] https://tools.ietf.org/html/rfc2229
       [2] https://github.com/jansc/dictr
       
       
       
       1Back to jan.bio        /       jan.bio 70
       ______________________________________________________________________________
                                 Gophered by Gophernicus/3.0.1 on FreeBSD/amd64 12.3