Index  Comments

As this writing is a collection of my ideas that have not been written down before now, this page will be gradually updated and refined whenever I recall more and more of my ideas concerning the topic and feel the want. In particular, I will update this page after I write a suitable Gopher server.

This is a simple notice that I now have a Gopher server running under this domain. I believe I've wanted to have a Gopher server under this domain for two years or so, but simply haven't done this until now. The structure of this website is already intentionally suited to a Gopher hole.

I wanted to write one both in Common Lisp and Ada 2012, each, but found the available networking libraries distasteful, as they mimic BSD Sockets or have other flaws. A cursory glance at the BSD Sockets API reveals it as a disgusting mess that suits the rest of BSD and so I've begun planning my own networking libraries.

I learned of xinetd and sought to use it in the interim. At first, I was surprised to see an original POSIX daemon that wasn't useless, even though I was only using it because the available networking API was dreadful. However, Common Lisp and Ada 2012 are not particularly suited to being launched freshly for each new request and, having real notions of characters, aren't suited to simply spewing character or numerical data across the same stream. So, I found that this POSIX daemon is most suited to other POSIX-style programs, which isn't particularly surprising.

For now, I've simply written a very bare and unintelligent Gopher server in sh, as I wanted to use a Gopher server of my own authorship. The thought of Doug McIlroy and Donald Knuth writing a program accomplishing the same task in sh and Pascal came to mind; as expected, this sh program is not elegant, far too lenient, wildly inefficient, and has other major flaws. A fool may believe this launching of ten processes to service a single request is elegant in the same way the aforementioned fool would think McIlroy's program was decent, however.

The sh program may be found here and the xinetd.conf may be found here.