Skip to Content

1700h, October 27th 2019

1700h, October 27th 2019 is a log tagged with qtMUD, project management, and Pollen. It was released on Oct 27, 2019.

So I’ve looked at how I’d like to handle planning out re-implementing qtMUD, from Python 3 to Racket, and I’ve stumbled upon Pollen, which is a Racket dialect for “programming books.”

It looks really cool and I’m excited to learn more about it! But, for now, I think, I’m going to use Org-mode to handle the first steps of rewriting qtMUD in Racket: planning out the data structures and functions that’ll need to exist for version 0.1.0, a functional like, engine that runs and people can log into and chat through.

Oh, I should start by saying what features I expect version 0.1.0 to have, eh? Well, let me just dive into sketching out the Org-mode file…

Here’s what I have after a bit:

PLAN 0.1.0

[0/3] Milestones

Here’s some things that need to be possible for this version to be “complete”.:

Since this is the very first version, this is a pretty general view of what might be a fairly complicated set of things.

And, there might be more that I add to this list later.

[0/20] Step-by-step

TODO Ticking engine

I think the first thing I need to do is create a basic application in Racket. By application, I mean a thing that lets me do “racket qtmud.rkt” and it starts up a thing that stays running until I give it a ^C.

TODO MUDSocket service

The second step is fleshing out a MUDSocket service: something that can start, run, tick, and shutdown, just like the engine. It doesn’t have to do anything more for now.

TODO Engine runs MUDSocket service

Tie in starting, running, and stopping the MUDSocket service with the main engine.

TODO Engine reads environmental variables

Create some functions for reading relevant environmental variables.

TODO MUDSocket services read its host and port from environmental variables

TODO MUDSocket service binds to a port and release it on shutdown

TODO MUDSocket service accepts an incoming connection

Accept any incomign connection, send it some text, then drop it.

TODO Engine creates Things

TODO MUDSocket assigns new Thing to connection

TODO Engine accepts event registration & calling of subscribed events

TODO MUDSocket registers “send message to Thing” when new connection is accepted and given a Thing

TODO MUDSocket accepts lines from connections and registers send event to echo it

TODO Create basic parser

TODO MUDSocket assigns basic parser to new connections

TODO Create help command

TODO Create login parser

TODO MUDSocket assigns login parser to new connections

TODO Create finger command

TODO Create talker command

TODO Create tell command

Implementation

This section is organized in mirror of the package’s file structure, and will contain the templates for the functions to implement the above.

I’m brand-new to Racket, so this might change a lot. Iunno.

/main.rkt

/engine.rkt

/services/mudsocket.rkt

/events/send.rkt

/events/broadcast.rkt

/events/client_login_parser.rkt

/events/client_basic_parser.rkt

/events/client_input_parser.rkt

/events/shutdown.rkt

/commands/talker.rkt

/commands/tell.rkt

/commands/help.rkt