About | |
------------------------------------------------------------ | |
About me | |
------------------------------------------------------------ | |
I’m Christopher Williams. I’m your typical computer nerd. | |
I’ve been using Gopher since the end of 2024[1]. After | |
2025 began, I started developing software for Gopher: a | |
server (see below), an Asciidoctor text converter (for | |
nicely-formatted text files!), phlog posting scripts, etc. | |
(Developing your own server or phlog platform seems to be a | |
rite of passage in Gopherland.) | |
[1] I’d actually heard of it a couple years earlier but | |
browsed it only a little bit at the time. | |
------------------------------------------------------------ | |
About this site | |
------------------------------------------------------------ | |
This site is a personal project of mine that I created for | |
fun (but not profit). I plan to add content from time to | |
time that I find interesting. | |
You can reach this site on both Gopher and the Web (the Web | |
site is a proxied version of the Gopher hole, in fact). | |
------------------------------------------------------------ | |
About this server | |
------------------------------------------------------------ | |
As of 2025-02-11, this hole is running on an experimental | |
Gopher server that I’m developing. I plan to release its | |
source once it’s in a reasonably stable state. | |
This server can run CGI scripts, and I’ve been writing | |
simple CGIs using little more than sh, awk, sed etc. It | |
amazes me how far you can go with just Unix text processing | |
commands. | |
As of June 2025, this site is also using an experimental | |
Web-to-Gopher proxy to provide HTTP access and stunnel on | |
top of that to provide HTTPS. | |
In case you’re curious, here’s a diagram of my site’s | |
architecture: | |
_______________ _____________ | |
| | | | | |
| Gopher client | | Web browser |--HTTPS--. | |
|_______________| |_____________| | | |
| | ____v____ | |
| | | | | |
| | | stunnel | | |
| HTTP |_________| | |
| | | | |
| | ,----HTTP----' | |
| | | | |
Gopher ________v___v________ | |
| | | | |
| | Web-to-Gopher proxy | | |
| |_____________________| | |
| | | |
| ,-----Gopher-----' | |
| | | |
_____v___v_____ | |
| | | |
| Gopher server | | |
|_______________| | |
| | |
Magic | |
| | |
v | |
This server is currently running on an under-$2/month VPS[2] | |
that I found around 2019 to use for various purposes. I | |
highly recommend both LowEndBox and RackNerd for good deals | |
on VPSes (and no, I’m not paid to say that). | |
[2] https://lowendbox.com/blog/2-usd-vps-cheap-vps-under-2-month/ | |
------------------------------------------------------------ | |
About the domain asciz.com | |
------------------------------------------------------------ | |
At the end of March and the beginning of April, 2025, I got | |
on a domain hunting kick again. I did that once before, | |
several years ago, for the purpose of buying and reselling | |
domains for a profit. I think I managed to sell one domain | |
for a profit, but I probably lost a bit of money overall | |
with all of the other domains I registered and let expire. | |
Anyway, I digress. | |
This time I looked at any available five-letter domain | |
following various patterns—CVCVC, VCVCV, pronounceable | |
English-like words using an ngram-based word generator | |
that I wrote, etc.—and I found asciz.com among the litter | |
(sitting next to all the ‘abfoo.com’s and ‘ednev.com’s). | |
Being a longtime assembly programmer, I immediately | |
recognized its meaning. | |
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | |
`.asciz` is a common assembler directive to insert | |
a string of characters followed by a zero byte (the | |
‘z’ in ‘asciz’). This type of string, known as a | |
“null-terminated string”, is also used in languages like | |
C. | |
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | |
So I registered asciz.com. I’m tickled pink to have a short | |
(read: fairly rare) domain that actually means something. | |
------------------------------------------------------------ | |
About that silly "since 1996" tagline | |
------------------------------------------------------------ | |
I started learning C in or around 1996. Shortly afterwards | |
I also started learning Z80 assembly language for the | |
TI-86 graphing calculator (which also uses null-terminated | |
strings). | |
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | |
The TI-86 supports programming machine code (in | |
hexadecimal octets) on the calculator itself, and I | |
actually started playing with that before using a | |
proper assembler. I still remember, nearly 30 years | |
later, using `C9` for `ret` and `CD YY XX` for `call | |
XXYY` (the Z80 is little-endian so the low byte comes | |
first). At the time I had high hopes of porting software | |
like Sargon (the chess game) to the TI-86, given the | |
availability of its source code in a book[3] that I | |
checked out from the library (see also here[4]); alas, | |
that never came to fruition (I was a newbie to assembly | |
programming after all). I did eventually write a simple | |
turn-based game and other little programs and libraries | |
in assembly language for the TI-86. You can find some of | |
those at https://github.com/abbrev/ti-86-asm[5]. | |
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | |
[3] https://archive.org/details/sargon_202108 | |
[4] https://web.archive.org/web/20070614114334/http://madscientistroom.org/chm/… | |
[5] https://github.com/abbrev/ti-86-asm |