My Workshop
Half-Baked |
Pipe Dreams
free-software |
Main |
disseminate
This page is pretty much entirely of historical interest at this
point. Oh, well.
If you like something that you see here, please feel free
to take it and make it yours. But still
free. Thanks.
Half-Baked
-
HWEB, a new tool for what I would call "semi-literate" programming.
Essentially comes in two parts: a fancy-text parser that understands
some special (but fairly intuitive) markup, and a math parser that
understands TeX-like markup. The current version is a mock-up that
concentrates on getting the markup right, without doing anything about
the "literate" side of things.
Status: alpha, stalled.
Snapshot here.
Rationale here.
Description here.
-
The classic Crowther & Woods adventure game done entirely in
HTML/CGI.
Status: stalled.
Snapshot here.
-
A utility program for manipulating C code. Given a definition
for one or more C struct types, it will produce C code to
read and write objects of that type in a platform-independent manner,
including serialization of large data structures when necessary.
Status: stalled.
Snapshot here.
-
A program or suite of programs to make easier the entry and
typesetting of Chinese text using the standard Unix tools available
over a telnet connection. Should take a file of marked-up pinyin text,
and produce the corresponding ideographs in some flavor of Unicode (see
unitrans).
Status: alpha, too naive for general use.
Snapshot here.
-
A hand-coded, clean token counter for C. This is in connection
with Andreas'
Practical Language Comparison. Please take a look, if you like to
hack with C and think I might have missed a corner case.
Status: beta.
Snapshot here.
Pipe Dreams
-
A Funge interpreter to end all Funge interpreters. I like the
Befunge language, and if I had a really spectacular Funge
implementation, I might actually try to learn Funge-98. Requires a lot
of thought in order to straighten out the "fingerprint" and "IP mode"
semantics, though. And I haven't really examined other Funge
interpreters to see how they represent Funge-space; I've tried splay
trees and found them reasonably fast, but not blazingly so. Tight loops
in Funge code are hard, as far as I can tell. Maybe I'll get around to
it this fall.
-
A smarter indent than the GNU implementation. The GNU
indent tool suffers from dictionary-itis: it has too many
arcane options to control its behavior, and it still can't handle
anything close to my own coding style. What would be nice is a "smart
indent" that could read and absorb a corpus of code, and then indent any
other code to conform with its style. Code can probably be processed as
a combination of a token stream and a parse tree. The parse tree
dictates much of the whitespace placement, while the individual tokens
are what is actually output. Parallel structure between sequences of
tokens ought to be exploited, and the internal format needs a way to
describe connections between sections of code (dependent clauses,
parallel structure, alignment in the original file). This part seems
highly non-trivial.
-
A writeup, with sample implementations, on the subject of horror in
roguelike games, with special attention to Lovecraftian horror. The
horror "feel" depends on suspense, which is a form of literary irony;
how does the designer create a sense of literary irony in a game in
which the audience controls the movement of the characters? Horror
focuses on "everyman" characters, while classical roguelikes deal with
characters who end the game as invincible supermen; how to reconcile
these ideas? How in general to create atmosphere in a game whose
interface consists of a top-down ASCII map and whose NPCs (human or
monster) are usually described only with a single symbol and a two- or
three-word "species name"?
-
A MD5-based Web file-finder. I sometimes find myself in the
position of having a program, image, or file of which I no longer
remember the source. I can't use Google to track down the original
location, because I might not have any keywords. But what I do have is
the original binary data itself. So if a web spider were to remember,
say, the MD5 hash of every page and file it ever saw, I could plug the
MD5 hash of my file into the spider and it would be able to tell me that
files with the same hash were available in such-and-such locations.
This would take orders of magnitude less storage (and effort) than a
full text search engine, and would provide a service sadly lacking from
Google and all other major engines. (Bitzi provides the same service, but
without the useful part: the automatic web spidering and the
notification of where on the Web the given file could be found. It also
provides metadata on the files, which would be redundant in this case.)
This page was last updated
27 February 2007
All original code, images and documentation on this page
are freely distributable.
Please keep them that way.