Phlog Collection 2025-11-04

I haven't set up an automated way to push my Gopher phlogs from Cyberhole Online up here yet, so I'm just going to manually paste for the moment. So this may be a bit random.

mdh@Aegura:~/Code/CodeJS/Cyberhole/gopher/hole/phlog% cat `ls -1 *.txt|sort -r`|pbcopy

i=== Digital Mark's Phlog ===
2025-11-04 19:06:46 UTC
Momentary Thoughts About Game Design

I've been making games for 46-ish years, and I still don't know how to
make a "compelling narrative". Sometimes I have good gameplay and "kill
the thing" plots.

A few times I've worked at studios and had a writer who could produce
lore text, but we still didn't have much story.

That's why my games are mostly interface first, what does the technology
let me do, then work out some game logic behind it.

I generally reject the narrativist view of games. Games are interaction
+ challenge = fun. Books and movies are characters + plot = fun. Visual
novels combine book style with illustrations and a homeopathic level of
interaction, maybe one choice every 10-20 minutes for most. Modern MMOs
& mobage are largely predefined characters on a rails plot, with a
shooting or action game in between. Designers for these hate the idea
of you having your own character or making plot choices.

What I find interesting is exploring a world, fighting, and building. So
Atari 2600 games are still fascinating; the absolute focus on gameplay
was required by the limitations of the machine. Luanti (and that "mines
craft" game that's like it) is endlessly fun. Juice Galaxy is amazing,
just weird blobby monsters, toys, and vehicles in procgen world. AAA
titles are basically all crap, they have characters I can't stand, doing
things I don't want to do, minutes of fun after hours of hitting X.

Text adventures are in a weird space, where there's varying levels of
exploration or plot railroad, varying levels of character predefinition.
Hitchhiker's Guide to the Galaxy is fun once (possibly frustrating for
months), but it's very linear and you are Arthur Dent, of the late
Earth. Zork and Colossal Cave Adventure are still fun, because there's
no fixed path to solve everything, and you're not defined by the game.

A lot of people do like the excruciatingly long cutscenes and "Press F
to Pay Respects" pseudo-gameplay, I'm well aware I'm an outlier. But
that's why I make my games for me. If someone else has fun, too, that's
a sweet bonus!

2025-10-31 05:10:56 UTC
Cyber Mudhole

Starting on the Lisp Game Jam Autumn 2025
https://itch.io/jam/autumn-lisp-game-jam-2025

Plan is to put up a Terminal that talks to a MUD written in my Kawa
servlet platform.

I wrote a long, mostly aspirational, list of MUD commands inspired by
LambdaMoo and TinyMUD; it's not very like my old combat-oriented
Circle MUD. I doubt I'll get more than a fraction of the commands
done, but if multiple players can move around and say and emote, it's
good enough.

The way this works is there's a Java servlet container, and a single
servlet that takes POST requests for commands, then returns all your
chat history since last call. If it polls every so often with empty
command, it should look real-time-ish, and connection keep-alive
should prevent it from hammering the server.

The servlets are in Kawa Scheme, which compiles to normal enough Java
classes. I'll put the whole framework up on gitlab or whatever as I
get towards the end, it's definitely changing a lot each update right
now.

2025-09-02 13:03:13 UTC
Phlogging Like a Typewriter

One thing that occurs to me when writing gopher phlogs, is the 70-
column limit feels like typing on paper. Get near the end and I have
to guess if the next word will fit or not, and whack the carriage
return DING all the way back. I haven't got in the habit of hyphen-
ating words but I did it right there!

Is the physical act of typing different when you don't have auto
word wrap on? I could vi :set tw=70, but I don't.

2025-09-02 12:32:03 UTC
Mystic Dungeon beta

I have a barely-working version of the Mystic Dungeon, my dungeon
exploration game. Everything in the game system works again,
and I've added three new stores (one you won't find for a while!),
and some secrets to find outside of town.

Right now messaging is incredibly spammy and ugly, using up the full
screen if you move fast. Just wait a few seconds and the messages
will dissipate. I'll fix those in the next pass.

You can save [F3] and load [F2] and it's saved to local storage.

https://cyberhole.online/dungeon

Have fun, and let me know what you think!

2025-08-18 08:34:55 UTC
Amazing (converting MysticDungeon games)

I've now managed to convert one of the MysticDungeon.club games, see
front page of https://cyberhole.online/

That wasn't too hard. It's using like 1/2 of the code of the previous
version, and doesn't rely on Node or have to be built, I can just empty
cache and reload a page. But it's a little harder to debug, eslint
doesn't work well on pile-o-random-js.

Amazing's not that impressive, and I'll probably do LostTreasure and
some other small ones, then get the big stuff converted. PortalWorlds
and Dungeon both rely on a shitload of libraries.

The high score server's gone, which is unfortunate. There's a few
options to replace it. A server running Scheme, of course. Or maybe some
web service that I can ajax out to? Cross-site posting is complicated
now.

2025-08-01 03:30:30 UTC
TinyBasicWeb

Now I have a working boot-to-READY prompt BASIC!
It's pretty primitive still, just enough to do interactive
forms, and I plan to put in some web tech (REMOTE and REDIR)
commands which will make it useful for that.

Currently some BASIC microcomputer games will work in it.

So with that basically (o_o) functional, I can focus on
adding more services to the CYBER HOLE.

2025-07-23 02:06:47 UTC
Gopher Holed

And now the CYBER HOLE has my phlog! I can either log in and
write-phlog.zsh, or do it locally and scp into place, refresh and
it's rebuilt by script.

Just finished the Lispy Gopher Show
gopher://gopher.club/1/users/screwtape
(who hasn't been updating his phlog, but like I'm Mr Reliability?)

RIP Ozzy Osbourne. The best and drunkest of us.

2025-04-27 14:39:03 UTC
Dayglo Decade

I was listening to Children of the CPU
https://childrenofthecpu.bandcamp.com

While testing out my write-phlog script.

2025-04-27 13:47:08 UTC
First post

So driven by my Hypertext post
https://mdhughes.tech/2025/04/22/some-of-my-history-of-hypertext/

I needed to set up Gopher again, and not just on SDF or tilde.town.
Talking to Screwtape & CatK got me moving on it.

Currently I'm running Motsognir,
https://motsognir.sourceforge.net
since it works well on BSD; on MacOS, I had to comment out the "dot
feature" to make it compile, but I changed NoTxtPeriod=1, the default is
just wrong, so it's fine.

Which has made it pretty easy to set up CGI (Common Gateway Interface!)
scripts to generate header, footer, and phlog indexes.

And I use shell scripts to start, stop the server, and generate phlog
posts in my format (TIME.txt filename; TIME, TITLE, blank for body); I
would use RFC822 but it's a little more parsing, and the date format is
wrong.

For client, I mostly test in Lynx
https://lynx.invisible-island.net
but also Lagrange
https://github.com/skyjake/lagrange

Which has revealed a few bugs in how I write gophermaps!
In particular, Lynx doesn't care if you list a text file as a dir or
text or binary, it'll render it anyway. Lagrange is very picky, so a
dumb directory doesn't work with it.

Old Computer Challenge

So a few weeks back, prompted by the hosting provider for MysticDungeonClub no longer supporting FreeBSD so I need to move rather post-haste, I bought a new domain, with the ~worst~ BEST name I've ever come up with, I fear that I have now peaked and nothing will ever top this:

Cyberhole.online

A hole for cybering in, as one does. It's like Mel's Hole but even more deep and mysterious.

In the Cyberhole, I intend to put a bunch of services and objects, mostly very retro, like a Gopher hole (which I have tested). That'll be like the cool kids' version of a .plan file for me.

Over on MDC, I have a bunch of retro "console" minigames, but they're using an old framework I made that's pretty heavyweight, node and a database in the back-end. I can't reasonably code those in anything except a giant pile of ass JavaScript.

So conveniently OldComputerChallenge comes along, asking us to use old computers. I use old computers all the time, but mostly in virtualized form supported by other people, emulators like Atari800MacX and remake machines like the SpecNext and HyperMegaTech Super Pocket Atari. We all know I don't like Other Peoples' Code, so I need to solve that problem by supporting myself.

For the week, I'm working on making TinyBasicWeb which will put a bare minimum TinyBASIC in a web page, client-side (there will be back-end support for the "disk operating system", likely in the form of a CGI script). I think it's a doable thing in the week, I've done very similar scale projects in less time. Right now I have a terminal in "memo pad" mode that I can cursor around and draw in, and tonight I'm working on input routines.

The more interesting longer-term part is that I'll end up with a MUCH lighter-weight console for putting up my minigames, and it's super easy to wire this to talk over the network, so I can put something like Chez Scheme on the back end.

Further Cyberhole news as I dig it deeper.

Some of My History of Hypertext

So in 1979, young Digital Mark is shown a computer, a TRS-80 Model I, by 4th-grade teacher. Other kids play Snake, I hit break and type LIST, seeing BASIC code, because I've been reading the instruction card. "I can read and learn this!" Nothing else now matters to Mark.

That summer, I take an adult college summer course on programming. Over the next few years before I get my Atari 800, I use school computers, mostly TRS-80 but some Apple ][, to program obsessively. Libraries and book stores are scoured for information.

The main sources of knowledge for me then were:

  • Stimulating Simulations, by C. William Engel (1977)
  • Creative Computing magazine, ed. David H. Ahl (1974-85)
  • Basic Computer Games, Microcomputer Edition, by David H. Ahl (1978)
  • some TRS-80 Level II BASIC book
  • My Computer Likes Me When I Speak BASIC, by Bob Albrecht, People's Computer Company (1972)
  • Computer Lib/Dream Machines, by Ted Nelson (1974-5)

The first three I could buy, the last two I only ever found in the library. They are now all on Internet Archive. As noted here a few years ago.

Computer Lib is bizarre rantings mixed with really visionary stuff. It's a two-sided flippy book, pages numbered CL 1-68 one side, DM 1-60 the other). Computer Lib is about how computers work "now" (1965-1974), teletypes talking to mainframes or minicomputers. This is important! There's a range of computing levels.

Ted talks about BASIC and how to use it seriously, using arrays as data structures, in a few pages. Some weird stuff about other languages I haven't heard of. More about data structures, links between data in different places. I'M LIKE TEN YEARS OLD, man, you can't dump that on me! I didn't fully understand this stuff until Sedgewick's Algorithms years later.

Political ranting, some of it now unacceptably phrased, but CYBERCRUD is a good primer on how computers aren't the problem, people with computers are the problem. This echoes the People's Computer Company slogans

BASIC is the People's Language!

Use computers FOR people, not against them!

Dream Machines has a 1975 supplement about the Altair, bitmap graphics, and cheap microcomputers, which largely lines up with Computer Lib's earlier predictions. It goes in depth into how you can use graphics, image and audio processing.

If Computers Are The Wave Of The Future, Displays Are The Surfboard

Branching Presentational Systems - Hypermedia

And here he develops a theory of Hypertext, "by which I mean non-sequential writing". Everything you now know about the World Wide Web and GUIs, you pretty much got by way of Ted Nelson, Doug Englebart of NLS, JCR Licklider of Project MAC (multi-user time-sharing), and Ivan Sutherland of Sketch. I read this wide-eyed and believing everything.

The giant over-arching project for this is XANADU (earworm Olivia Newton-John song here). Xanadu is a very well-specified, complex, solves everything system. Ted's argument is that long-run everyone will use his system for every computation. This starts at DM 44, read that entire section if you read nothing else.

Returning CL/DM must've been the hardest thing ever. I read it again a few times over the years. (I have a stack of notes about it from more recent reading, but I'm here staying brief and focused.)

Over the next decade, we got and then slowly lost things like Hypercard. HC's an amazing technology, it is The Future We Didn't Get, because it was Mac-only, monochrome-only, Hypertalk is a somewhat annoying hybrid of BASIC, COBOL, and C, limited to either tiny windows smaller than the small Mac desktop, or full-screen Mac 512x344. Later that got better, and Myst was written in HC + many addons, but it remained a weird silo.

Repeatedly Ted Nelson says Xanadu is coming soon, shares new technical details which conflict with previous statements, various people on his team promote it, then unpromote it. The exchange in Dr Dobb's Journal 1983 disillusions me, convinces me Xanadu will not be coming soon.

The Internet became available to me in 1989, and Gopher came out in 1991, providing a real hypertext solution. It didn't have inline links, "transclusion" (include a chunk from another document), or bidirectional links, but it did let you make complex menus with text, links, images and other media, and interaction with forms/search fields. Gopher became the best way to hyperlink and index everything.

The WWW was not an attractive system until Mosaic came out in 1993, mid-year it got inline image tags and imagemaps as a dumb hack, and Netscape Navigator commercialized it in 1994. Gopher might've survived this except the UMinn administration tried to extort payments for servers in 1993. I moved everything into my web site, as did everyone else.

The thing is, these are not Xanadu. Ted got increasingly strident that the WWW is not Hypertext because it's not bidirectional etc. But of course this is impossible: A local database can be forced to be consistent, but a network of unreliable computers cannot. One-way works with stupid complexity and GeoCities, and two-way does not. Imagine entering a web page and seeing 500 "sites who called here" links, some of them private. Each of them has to validate that it's paid the micropayment for copyright access to the site. It's not "web scale".

In the end, post 2000, there's a demo "release" of Xanadu, with a hand-hacked single-site database, no editor, no way to link your own stuff with it. It's not anything.

More notes to come, we'll be talking about this more on the Lispy Gopher Climate Show every Tuesday midnight UTC (like 17:00 PST). hashtag

Computer Lib/Dream Machines

Someone has finally uploaded a (possibly legal?) copy of to archive:

Read it from either end, there's two coherent books written back-on-back like an Ace Double, happily you don't have to turn your monitor upside down.

The first personal computer book (before the Altair came out!), though the PCC Newsletters predates it (and he mentions them). Fascinating time capsule, political tract about use of computers to control you (CYBERCRUD as he puts it).

Any nitwit can understand computers, and many do.
Unfortunately, due to ridiculous historical circumstances,
computers have been made a mystery to most of the world. And
this situation does not seem to be improving. You hear more
and more about computers, but to most people it's just one big
blur. The people who know about computers often seem unwilling
to explain things or answer your questions. Stereotyped
notions develop about computers operating in fixed ways--and
so confusion increases. The chasm between laymen and computer
people widens fast and dangerously.

This book is a measure of desperation, so serious and abysmal
is the public sense of confusion and ignorance. Anything with
buttons or lights can be palmed off on the layman as a
computer. There are so many different things, and their
differences are so important; yet to the lay public they are
lumped together as "computer stuff," indistinct and beyond
understanding or criticism. It's as if people couldn't tell
apart camera from exposure meter or tripod, or car from truck
or tollbooth. This book is therefore devoted to the premise
that

EVERYBODY SHOULD UNDERSTAND COMPUTERS.

Computers are simply a necessary and enjoyable part of life,
like food and books. Computers are not everything, they are
just an aspect of everything, and not to know this is computer
illiteracy, a silly and dangerous ignorance.

In many ways as relevant as ever. Just because you have a computer or "smart" phone, doesn't mean you know anything about its operation, purpose, and purposes you can put it to. Most people just use them as glorified TV sets and newspapers, mass media delivering people.

Unredacted 1st ed, includes some very… Ted Nelson is a white male born in the 1930s, his language about race and sex are, uh… not acceptable sometimes. Be aware.

Also, cover price $7 in 1974 is $37.61 in 2021, not $120, as Ted currently charges for a photocopy on his website. But at least he managed to publish this, unlike Xanadu which took 50 years to ship nothing.

I have a much longer draft of notes about it, that I'll probably finish up at some point. Now that I can just point you at the original, that gets easier.

BASIC at 57

We had a lingua franca, including the first 15 years of personal computing, that could be taught in a few hours and immediately used practically, and then it vanished almost utterly in the late '90s. Two generations are completely illiterate in the language of their ancestors.

Now, there's a couple of heirs to BASIC.

Python mostly took that role. For a while it looked like every computer would have a good version, but then between the Python 2/3 fiasco and hardening systems, you mostly get an old Python shipped on platform, and have to manually install from Python.org. IDLE (with my IdleStart shortcut ) is still a pretty great REPL, editor, and runner. import turtle as T; T.reset() and you can start doing turtle graphics in 10 seconds. The Raspberry Pi Beginner's Guide has a lot of Python as starting language (and Scratch, which is more a cruel joke than a language), which isn't great at graphics on a low-power computer but it is possible. The problem is it's considerably slower than a good BASIC, can't make use of multi-core, and relies on Tkinter for most graphics, which is even slower. Python's an evolutionary dead-end.

JavaScript is everywhere, and trivial to get started with… except you immediately run into a security wall, so you have to run a web server (easiest is, ironically, python3 -m http.server -b 0.0.0.0 8000 which serves all files in current directory). Edit file, reload browser page. And then doing anything in JS is a big hike up the mountain of JS, HTML, CSS. But it does run. Teaching everything you need to do interactive programs in it is hard bordering on a semester's coursework.

Scheme and LISP can be used this way, as seen in the Land of Lisp book, and Racket, but SBCL is a complex and terrible runtime for an ugly dialect of LISP (IMO, don't throw bombs at me), Racket has a broken REPL and their focus is on language experiments, not so much being useful. The other Schemes vary from hard engineering to even launch, to easy enough but poorly supported like my favorite Chez Scheme. I've been working on a "Beginner's Scheme" book for a while, and it's hard to compress what you need to know to get anything done, into small, fun parts.

It's actually easier to do Programming on Your Phone.

But there's still nice enough BASICs, in particular Chipmunk BASIC, and the old BASIC books & magazines work fine in it:

Just make a BASIC folder, download all those PDFs into it, and read them to see how quickly they go from "here's the BASIC commands" to "write a real program". And how you can make computing fun, not a chore.

I've been spending a little "non-productive" time hacking on my BASIC CRPG that'll run on the SpecNext when it arrives later this year… I do my work for now in Chipmunk; because NextBASIC has some strict limitations, I keep those limitations in my program, like single-letter array names. Graphics will have to be totally rewritten (but most of the UI is text-mode and portable), some data storage, too. Happily NextBASIC does have named functions (PROC, or SUB in Chipmunk), local variables, and loops (REPEAT:WHILE x:...:REPEAT UNTIL x, verbose but usable), so there's less GOTO and no GOSUB in my code.

I thought the line numbers and other limitations would kill me when I started doing it again, but in practice it hasn't bothered me much. I start each logical section at multiples of 10 or 100, add 1 per line, indent function and loop bodies, rarely have to renumber them. Since I don't GOTO/GOSUB much, finding them is less of a problem, only time I need specific line numbers is RESTORE xxx for DATA.

I'm starting to see BASIC as an interesting language again: Low-level enough to do something on simple machines, and reveal exactly how your algorithms work, high-level enough that you can get something done (much easier than ASM). You wouldn't want to build a large system in it, but focused problems, "tunnels through rock" as Chris Crawford wrote in De Re Atari, are well suited to it.

The original home computers having "turn on, maybe hit one key, you're in BASIC" interaction was amazing, unparalleled in any other system since, and we need to get back to as close to that as possible.

Nanorogue2 in BASIC

I've completed my BASIC 10-Liner contest entry, download on itch.io or find the latest version here:

Just shove the disk (.atr) in Atari800MacX or any other compatible Atari 800XL emulator, disable BASIC and hit reset, it should boot up into the launcher:

Where you can read docs or source:

And play the game!

So, the source for my first pass was manually-packed down, and I couldn't really fit everything I wanted in there, or switch to text-graphics mode. With some rethinking, and a better source editing tool, I could… So I wrote a filter program "Basic2List.py" that removes comments & blank lines, joins up everything after a numbered line with colons, lets me insert binary codes with \xFF escapes. It still looks a little dense, because I have to manually use abbreviated statement names or remove spaces, I'd like to make it smart enough about BASIC source to do that itself.

But it lets me turn source like:

5   POKE731,1       // noclick
    GR.1            // 20x20 wide chars, 40x4 regular
    SE.1,13,15      // palette 1 to gold
    W=20            // world size
    DIME$(27),M(W,W)    // E$() encounter table, M() map
    //RRRZZZD$$..........#######>
    E$="\xF2\xF2\xF2\xFA\xFA\xFA\xE4\x04\x04\xAE\xAE\xAE\xAE\xAE\xAE\xAE\xAE\xAE\xAE#######\x3E"
    H=10        // Hit Points
    L=1     // Level
    // G=0      // Gold, default value
    ?"NANOROGUE BY MDHUGHES"

into:

5 POKE731,1:GR.1:SE.1,13,15:W=20:DIME$(27),M(W,W):E$="RRRZZZD$$..........#######>":H=10:L=1:?"NANOROGUE BY MDHUGHES"

(except the RRR... are inverse & graphics chars)

See the Atari BASIC Quick Reference Guide to learn the abbreviations and some of Atari's peculiarities. And it's running in Turbo Basic XL which really helped the program size, so I was able to squeeze in stairs!

Last time I was using the compiler, and that worked but it distorted my sounds, and I couldn't make LAUNCHER.CTB run NANOROG2.CTB! So if I just left them all uncompiled (but tokenized) .BAS files it works fine.

The only down side is it's stuck in easy mode. I'd love to have a difficulty which increases the GP to Level Up, and makes monsters hit harder (but not reward more), but that didn't quite make the cut.

Generally I'm pretty pleased by this!

The ZX Spectrum (non-Next) port is turning out to be hard, it lacks a few things and doesn't have ELSE, either, so I don't know if it can be done.

10-Line BASIC Contest

Let's go back to the 1980s!

So I knocked down a tiny subset of my already tiny BASIC demo program, NANOROGUE, and plan to make 10-line versions for Atari 800 and ZX Spectrum. Getting it running on desktop in Chipmunk BASIC was trivial. Just a little ANSI for screen positioning.

Initially I just used standard Atari BASIC, and that worked fine, if very very tightly packed, and not fast… but the lack of an ELSE statement left me with an 11-line program, I wanted to end with 50 ... :GOTO 20:ELSE:GOTO 20:ENDIF but had to move it to a new line. Very frustrating. So I'm using an enhanced BASIC, which is allowed for the PUR-120 tier, for one command.

Being "compiled" (to bytecode, don't expect miracles) and making AUTORUN.SYS easier than my own utility is nice. TBXL is at least a 1985 tool; though at the time I was using the "official" BASIC XE cartridge instead, which had similar features, and mainly moving over to Action!, 6502 ASM, and C. But for retrocomputing it's fair game.

Making a TBXL executable & bootable disk is a little fussy.

  1. Make a blank floppy ATR (emulator disk format), format it, put Atari DOS 2.5 on it or whatever you like (from DOS 2.5, H to write DOS files). This is your program disk. Like TRON, everything you do will be encoded on it, and losing it will subject you to immediate deresolution.
  2. Turbo BASIC XL disk in D1, program disk in D2. Control menu, Disable BASIC, Cold Reset (Sh-F5). You should see a red load screen, then READY. Check you're in TBXL by typing DIR.
  3. Write your program. I recommend writing BASIC as LST files in a desktop editor, then Cmd-E "Edit an atr disk image", click "Atari/Mac Linefeed Translation", "Import Files From Mac". In BASIC, ENTER "D2:FOO.LST". RUN to test it. But if you like living the '80s lifestyle all the way (or using non-ASCII chars, which are annoying to work with), you can work entirely in TBXL.
  4. Save your program tokenized: SAVE "D2:FOO.BAS"
  5. BRUN "D1:COMPILER.COM", now swap D1 and D2 (Cmd-D, click the swap buttons; you want your program disk in D1!), hit 1, pick FOO.BAS, save as AUTORUN.CTB. Swap disks back (you want your program disk in D2!).
  6. Ctrl-D, J for Ja (yes) to go to DOS-XE. COPY D1:RUNTIME.COM D2:AUTORUN.SYS
  7. Now put your program disk in D1, reset, and it should come right up into your program, then prompt for Dos, Run, or Load when it ends. Nice!


So resuming work on NANOROG, I get:

The only down side is this tiny version has a very slow redraw, it renders the entire screen each move, instead of just fixing last/new positions. I'm pondering changing it to graphics 1 (wide text, 4 colors) and poking screen memory which is probably faster than printing. I made some acceptable bleeps and buzzes with SOUND commands; I'm a poor sound designer, but I get there with some trial and error.

Anyway, next week's task is the ZX Spectrum version. Speccy BASIC is pretty good, so I expect I can knock that out quick and without all these shenanigans.

Basic Games in Scheme

The first project I write in any new language is usually a guess-the-number game, a die roller, or an RPN calculator, then I start collecting those and other toys and utilities into a single "main menu" program, and use that to drive me to develop my libraries, play with different algorithms. Occasionally it's useful, mostly it's just a pile of stuff.

The Scheme version has a couple useful things. I was mostly thinking about old BASIC games, so it's "BasicSS" (SS being the Chez Scheme file extension, not anything more nautical or sinister).

I wrote a fairly malevolent wordsearch generator in the process of testing some file parsing, so here's one for 20 programming languages. I can tell you that B, C, C#, and D are not in my list. I'm doubtful that anyone can find all of them, or even half.

Hangman depends on /usr/share/dict/words, 235,886 lines on my system, which is very unfair:

 #______
 #     |
 #    ---
 # \ (o o) /
 #  \ --- /
 #   \ X /
 #    \X/
 #     X
 #     X
 #    / \
 #   /   \
 #
Word: TE---EN--
Guesses: E, T, A, O, I, N, B, R, S
YOU LOSE! You have been hung.
The word was TEMULENCY.

Seabattle ("you sunk my…") sucks, it just picks targets at random; teaching it some AI would help.

Hurkle, like all the early-'70s "find a monster on a grid" games, is awful, but the map display makes it a little easier to track your shots. "The Hurkle is a Happy Beast" by Theodore Sturgeon is one of his 10% good stories, but it provides only a little context.

Some of this I can release source for, some I probably shouldn't, so it's just a binary for now.

Computer Archaeology: Public Caves Discovered!

Exploring the archives of the People's Computer Company (a public timesharing computer center in the early '70s, yes before home computers), and many of the programs we're familiar with from David H. Ahl's Creative Computing come from here. 15 different variations on guess the number and guess a coordinate, sure, but also some really important things, many of them long forgotten.

Then I find this artifact:

pcaves

What the. This is basically a MUD†, from 1973!

Source code (uses a very long TREES library on previous pages).

Everyone knows WUMPUS, which is based on CAVES, but this is the rock star of these! How does everyone not have a copy of PCAVES? This is like finding a working Airwolf helicopter in a cave with ochre handprints on the walls. HOW THE FUCK did cavemen do that? Why don't we all have an Airwolf, if it existed 47 years ago?!

So anyway some barely-modernized version of this will be added to the MysticDungeon soon, you'll all be able to graffiti up a cave!

† more like a MUSH ("Multi-User Shared Hallucination") with one user at a time, specifically.

  • Note: You can play a version from the Narrascope conference 2019: PublicCavesNarrascope
  • Renga in Blue typed it in for the above event, and briefly reviews it as an adventure game. Which it's not, this is a social environment, literally a MUSH.

Programming on Your Phone

Pythonista lets you use your pocket UNIX workstation as a workstation. I use Pythonista, if not every day, very heavily on the days I use it. As always it's crippling of Apple that there's no upgrade pricing, so I can't give him more money every year that I keep using it. The new keyboard module is an interesting script launcher, but I already wrap a bunch of utilities in a main menu program.

There should really be more of these mobile programming environments. In the early days, Apple severely restricted you from shipping one; you could kind of cheat with JavaScript, and a few games snuck in some bytecode interpreters, but scripting was right out. They loosened up eventually, but are still dicks about you saving code anywhere it could be shared, so for example I have to keep my Pythonista stuff in iCloud, not DropBox where it'd make more sense.

  • Panic's Coda and Coda for iOS (née "Code Editor" WTF) is the only other one that's really functional; I've built real web sites out of it, but I mostly use it for ssh. Sweet baby Cthulhu, I hate Panic's crooked-text "designer" sites, I hit Reader view on those instantly. Designers shouldn't be allowed access to CSS or JS.
  • Hotpaw BASIC still works (as does his Chipmunk BASIC on the Mac), but hasn't been updated in 2 years. Not that I want to program in BASIC, but it's better than no programming at all.
  • The iPad used to have a very nice "BASIC!" (with a structured BASIC and a bunch of system functionality), and a very limited "iSkeme" (scheme interpreter, R5RS-ish? with nothing but text I/O), but they were killed in the 64-bit-pocalypse. Update 2020-09: miSoft Basic! has been updated. Searching for this is utterly impossible!
  • Workflow (née Apple Shortcuts) is great for putting a few tasks in a row but you'd go insane trying to write anything complex from drag-and-drop clicky boxes.
  • Apple's Swift Playgrounds on iPad is a tutorial, not really usable for applications AIUI.
  • There's a bunch of "kids learn to code!" apps that are mostly ripoffs charging $60/year to play robot tanks. Do not buy anything like this.

I dunno if the 'droids have anything comparable, I'm sure they can root their phone and try to use vi in a busybox shell, but that's not a reasonable work environment for a thumb-sized on-screen keyboard.