Play with:
I like to be working on a number
of toys at all times.
"Toys", in this context, refers to information-things, usually
computer programs, that are pretty and entertaining, regardless
of their immediate practical value.
Of course, immediate practical value is sometimes itself pretty
and entertaining.
My most famous toy is a silly litle thing I threw together
over a weekend: my
random likely-URL maker; source is
here.
Trivial as it is, it's yet another example of serendipitous exploration
of big logical spaces.
The reason it's famous is that it was mentioned once on Slashdot.org,
causing the hit-rate to briefly
rise over one/second and threaten
to overload the server.
There are now pointers to it all over the place, including on
Yahoo itself; see the
News for
20 September 1999 and after for details.
Years and years ago as a kid, I saw a picture on the cover of
Science News that showed
this curving maze of paths, formed from just a couple of simple
shapes stuck together at random.
I made myself a set of those shapes out of cut-up graph paper,
and kept them in a Tic-Tac box for idly doodling around with.
The other weekend I realized it'd be trivial to do up in
JavaScript, so here it is.
Just to be pretensious, I call it "Visual Mantra I"
(click anywhere on the image to twiddle with the pieces).
Later I did a two-color version
("Visual Mantra II"),
and a similar toy based on a magnetic gizmo I got for Christmas
once ("Kwilt", I think it was called):
"Visual Mantra III".
Feel free to copy the scripts and the images if you want them,
or just to play with them here.
I've discovered a space of eight related toys, of which these
are just three; maybe someday I'll code up all eight, and
combine them into one meta-toy.
The mazes in the Visual Mantras aren't the usual "start here" /
"finish here" sorts of mazes.
I've fiddled with those a bit also; my
page about mazes includes a Perl
module that generates random rectangular mazes, and a CGI script
that uses that module to deliver a maze to your browser.
The mazes it generates aren't very hard; I'm not sure if there
are Secrets of Writing Hard Mazes that I don't know, or if
smallish rectangular mazes are just always easy.
I've been messing around with algorithmic music composition for
years, although you wouldn't guess it from the current version!
Here is a page about PATTAN,
a tiny Perl music-composer.
Some more listenable music, saved from old composers of mine
written in Pascal, include
this,
this, and
this.
I think Weblogs are really neat, and I've written a little
Weblogging CGI script called "glog" (it has its own
page here).
My own log/journal thing doesn't
use glog, but someday maybe I'll start a pure Weblog that does.
You can post stuff in the
glog demo Weblog yourself; see
instructions on the glog page.
Jaiku
is another recent weekend project; I typed a simple grammar
for Haiku into
Scott
Scriven's "Mad Lib" grammar driver the other day, and decided
that it'd be fun to do a larger version in Java (both to keep my
Java skills honed, and to offload the computation to y'all clients
in case we get slashdotted again!).
See the Jaiku page for the result.
I realize it's less than poetic! *8)
I have some ideas to make it better that I might eventually code.
Another Web-related toy is the
Buttoner Perl module that I wrote
to produce the buttons for this site.
I made one quasi-3D button by hand in Paint (I have yet to spring
for any more complex drawing tools, and besides I don't trust them
to do exactly what I want), and that was boring enough that the
obvious thing to do was modularize it.
The code is here.
RaDoSt is a Perl module for making
random-dot stereograms; those "Magic Eye" things,
like this.
See the RaDoSt page for
code and sample output.
Everyone loves
Mad Libs,
and it's a painfully-obvious application of CGI forms.
So, cheesy and obvious as it is, I wrote a little Perl module
to do it.
You can play with it here.
The module allows for full tailoring of the generated HTML,
as semi-documented here.
And here's the source for the
module itself, and the tiny
driver that's running it here
(note the driver contains full spoilers for the Web Libs!).
Information wants to be [adjective]!
Yet another website-related toy is the silly little
typewriter
that's part of the Dworkin Device on Theogeny.
It's not modularized or anything, but it might be useful to show
how simple a CGI script can be.
The source is
here.
SLIGE is probably
too large and multifarous to quite be called a toy; it's fifteen
thousand or so lines of C code by now.
On the other hand, it's pretty and entertaining, and of no direct
practical value.
What's a good name for a big toy?
I've been interested in one-dimensional cellular automata for a
long time; I have a stack of yellowing index cards in my office,
begun when I was a wee IBM lad, recording my explorations in the
space of 16-state radius-one one-dimensional CAs.
It's a really large space, with lots of very pretty areas hidden
among an unthinkably large desert of random snow.
There's a little Java applet that shows off some of the pretty
regions on my
IBM home page;
I haven't put the source anywhere yet, but if you're interested drop
me a line.
It's pretty obvious, really.
(Oh, user interface: if the pattern gets boring, click on it to
restart with a new set of transition rules.)
Silly Windows98 Tricks:
This is more a hack than a toy, but I'm sure you'll forgive me.
It turns out that the Windows98 options menus that you get to via
"My Computer / View / Folder Options / View" are made up from a
bunch of registry entries.
By adding stuff to the registry, you can put anything you want
into those menus.
Here is a .reg file that adds an "Increase
Serenity" option to the control (image).
On my Win98 machine, I like to keep it checked! *8) It's silly, but
it illustrates a useful hack; you can modify that .reg file to add
an option to that control to toggle any two-state registry key you
want.
More toys to come as I dig up, think of and/or write them.
Two phrases currently circulating in my brain are
"Virtual Universe Webcam" and "page-o-matic"...