My major is Computer Engineering, but I tend to take a lot of
Computer Science classes too. My other interests include Unix, programming,
mandelbrot sets, multiuser computer mediated games,
origami, and robotics.
Here's a list of my current projects. If you want more information,
let me know, I might actually put the source and/or executables for
these up for ftp or http. These projects are roughly most recent project
first.
This list is likely to be out of date, as the last project on this
list I haven't had time for in more than a year. But I like to think
that some day I might get back to them. Every now and then (once a
year?), I reorder the list and update things so that most recent work
is at the top.
- X On a Floppy
I have a single floppy boot disk that can turn a PC into
an X terminal. The disk works extremely well, and is in use by several departments.
If you are interested, send me
e-mail, and I'll give you details on how to get a copy. The MMAE department
uses it to access a unix based cad system from pc's in the lab.
The disk autoconfigures based on the hardware it finds and additional
information pulled from various configuration servers on the local network.
Currently, there are two versions--one is very small, but somewhat outdated.
This works very well on old machines that are tight on memory.
A newer version is required for newer video cards, but requires more memory,
and is not yet quite as generic (i.e., has hardcoded config options) as
I would like it.
Nobody [non-local] has been clammoring to get this, so I probably won't
ever get around to distributing it.
The disk now has a command line driven configuration procedure that is
fairly easy and includes minimal internal documentation. Local printer
support exists, but has not gotten wide use or testing.
- Database assisted network management
I've been working more or less continuously for almost a year on a project
to totally capture all building network configuration information into
an Oracle database. The database will take care of ip allocation, DNS,
bootp management, and already uses SNMP (with patch cable maps) to deduce
the physical location of machines not in the database.
Oracle has been more fun than I expected, although I find that their
stand alone tools are a bit lacking. (I've had to write what I need, where
I feel they should have existed already.)
- asynchronous multicast/multinetwork file transfer Protocol
I've recently come to the conclusion that ftp, http, and smtp are
somewhat obsolete in that they no longer do a good job at fufilling
the file transfer needs of the net. I've begun designing something
that fills in the holes. ftp was designed for authenticated file
transfers, but is being used for anonymous downloads. http does this
better, but doesn't support anonymous uploads well. stmp doesn't
handle binary files efficently, but does anonymous "uploads" quite
well. Http makes mirroring somewhat easy, but doesn't really support it
directly. Design goals for my protocol try to cover all these problems,
including anonymous and authenticated transfers in both directions,
automatic cooperative mirroring with minimal administrator intervention,
global distribution, multicast, bandwidth use, etc... with the intent to
allow interfacing with existing protocols as well.
- Robot controllers
I have a working prototype for a modular
networked robot controller based on the Microchip 16c65 cpu. So far,
I have assembly code that keeps track of a rotary encoder and responds
to commands via the network protocol, and C code for unix that speaks
that protocol and continuously displays the positions of all encoders
on the robot's network. Next step will be to add motor actuators and
implement speed control using the chip's built in PWM. I'm looking
for someone who would be interested in helping to design an actuator
that can handle 6-8A @ 24V. So far, nobody's been able to come up
with anything that does better than 2A @ 12V without emitting magic smoke.
- I have written a state based chat language ("cschat"). The chat
language is very similar to uucp's chat language, except that rather
than just failing or retrying when the desired output is not found,
you can make decisions based on what comes back and go to one of
several states. This is primarily directed at modern modems that can
do data, fax, voice, touch tones, etc... I already have working a
primitive answering machine script based on this language. Eventually,
when I have enough of the pieces written, I hope to be able to
turn this into a getty replacement ("csgetty").
- I have written a command line based audio CD player for Linux.
(It might work on Suns too.) It supports cd changers, shuffle & lots
of other stuff. You can read the
announcement for it. As it is still in
alpha testing, you have to send me e-mail if you want a copy.
Unfortunately, I more or less have this workinng as well as I want it to,
and haven't gotten enough interest in it from the net to work on it more.
If you think you'd like to try it, let me know!
As it is unlikely that I'll develop it much further, I should probably
release it as is and let a wider audience play with it.
- I wrote a cute little program called
httpget.c that allows downloading of
files via http from the commandline with a high degree of feedback to
the user. Please send me feedback if you use this! I consider this
project complete unless someone asks for an expanded feature.
Every now and then, I add something to httpget. Recently, I discovered
that httpget was the smallest file transfer program I could find, so
I incorporated it into the X-on-a-floppy project too. :)
- I have some ideas for a distributed chat protocol that would
not have the problems that IRC has. Let me know if you'd like to work
on a project like this. Some of the ideas would integrate nicely into
multiple other projects listed on this page, so we wouldn't have to start
writing from scratch...
- I wrote a www counter for those who can't use server includes.
You can read the counter page for
documentation and rules of use.
- I am working on a program tentatively named OmniClientProgram
(ocp). OmniClient is able to interface to both muds and irc. It is
still under heavy development, and not yet ready for source code
distribution.
A sparc binary,
a linux binary,
documentation, and
sample scripts
are available. The client's primary feature is a very strong event
driven scripting language and a very simple terminal I/O interface
model that should be effective on any system. The sample scripts
archive includes a script for irc that is about 80% complete. Note
that the linux and sparc binaries might not be the same version
(although they usually will be). Don't hesitate to mail me
suggestions, feature requests, proof reading of docs, critiques, bug
reports, new sample scripts, additions to existing scripts, etc.
Actually, I started rewriting this from scratch in C++.
The old version is still available as binaries, and if anyone asks,
I might consider releasing the source.
I will eventually release the source code to the C++ version.
The new version will be significantly easier to expand, and therefore more
powerful. Planned new features include multisession handling, advanced
screen control (including highlighting), and multiple
alternate complex protocols, including possibly talk/ntalk and my own
ideas for a serverless distributed irc.
Actually, unfortunately, due to lack of interest, I've abandoned this project.
OPC sits half written, smc is stable, but stagnant. I may eventually
get back to this project.
- I've written a number of Mostly Harmless screen hacks for X11.
Some day I might put them up for ftp. If you really wanna know, and you
happen to be on an X terminal, and you see me online, just xhost + and let
me know. >8-} Most people have been at least amused by my screen hacks.
When I'm bored, I use them for backgrounds on my desktop.
- My favorite screen hack uses a special random number generator to
completely fill your screen's root background with random color
pixels. The result looks sortof like xgranite (vintage X11R3?) except
that it draws it more gradually and doesn't freeze your screen while it
does it. Also, it doesn't allocate a display pixmap, which means that
when you move windows around it has to redraw the pattern...but that
can cause interesting effects too, and it doesn't slow down your server
by chomping all your memory.
- I am currently working on the pieces to a multiplayer 3-d game of
some sort. So far, I've written a wire frame library, including an
object previewer called 'spin'. You can play with some binaries of spin,
along with a few objects I've stolen from cbzone and rend386 here.
Unfortunately, IMHO my wire library is not good enough for the final game.
I'm looking for something better, but I haven't seen it yet.
Lack of a good library has kinda discouraged me on this project.
(Several have been released, I need to look for them & try them out...)
- I have a really cool mandelbrot set
viewer for X11. Unfortunately it desperately needs a control
panel. I have written some minimal
documentation
for it. Also, I have made available several
binaries for Linux. (The binaries are probably
stale by now. I'll make new ones upon request.) Solaris 2 binaries
available on request. I've worked on this project on and off over the
last 3 years. This would be a perfect program to convert to threads,
as it really would work much better if the control, calculation, and
screen updates were all done in separate threads. Also, I've had
limited success with using distributed computation to speed it up; as
is, network glitches can cause longer delays than the speed up gained
from additional cpus if the machines are not all on the same physical
net. A more robust network protocol would help. (Does PVM cover this?)
- I've designed a file backup and retrieval system that is similar to
dump, but with added functionality and machine/operating system
independent. (Archives should be portable.) Unfortunately, I haven't
yet gotten around to actually writing it. Let me know if you'd
like details, or if you'd like to help me write it. If someone would
actually like to use this, I'd be willing to work on it for a
small fee...ala GNU. Contact me for details. If you want to write your
own backup system and use all or parts of my specs, I'd be happy to
give them out, as long as I get a copy of the result. :)
There are currently quite a few backup systems out there, so I probably
won't work on this unless I get around to doing a survey of all of them
and don't find one I like. (I use dump at home now.)
- I wrote an object oriented paint program for X in C. (Ya, it was
fun. Ya, it was a mistake. Ya, I shoulda done it in C++. Sigh.
Perhaps I'll translate it some day.) Translation to C++ would be
semi-trivial; if I ever do that, I'll put the source up for ftp.
In the mean time, you can read the minimal
documentation
and try out the binary for
linux or the binary for
Sparc/SunOS 4.1.x.
- A few years ago ('92?), I wrote a
postscript to ascii translator. The translator requires
Ghostscript and Perl to do its work. I suspect my translator is more
robust than the one that came with ghostscript when I wrote it, but I
haven't looked at theirs in a while. Unfortunately, I wrote this as a
proof of concept (before the one with ghostscript was distributed
widely) more than an actual project, so it has some problems, and I
never really finished it. If you are interested, download it and take
a look. Send me mail if you have comments... As I wrote this as a
proof of concept, I have no plans for further development.
I think someone else on the net made this more useful, but I've lost the
reference.
- I've considered writing a raster to vector image converter for quite a
while. A possible output format would be Postscript, which of course, supports
both raster and vector images, so could potentially still describe the
original exactly even after vectorization.
This could be a fairly simple or fairly difficult project depending
on how complete a job is attempted. It would be trivial to do things like
rectangles, lines, and possibly even circles. OCR of course would be tricky,
but others have done this well, and many of the fonts are already available
if the original image is a screen capture.
Converting splines correctly would be tricky.
Converting amorphous objects
would be difficult (and possibly not worth it). Detecting pattern fills
is definately needed, as a large part of the usefulness of this
would be to remove ugly patterns and/or rerasterize them at a higher resolution.
Likewise, removing dithering would be difficult, but possible, especially
if the algorithms are tuned to unrasterize images from specific applications.
I have other projects, but these I think are the most interesting ones.
I work on projects when I have time, and the top project on this list
always gets the largest time slice. If you express interest in one of
the other projects, I might be persuaded to work on them instead...
And when I'm not doing any of these, sometimes I go to the
beach.
ssd.pers@mae.engr.ucf.edu