dshadow.com
John Bafford's Software
This page contains a list of the various software programs I have written or influenced.

Attention UMCP CMSC420 Students: If you're looking for information on Point-Region or PM1 Quadtrees, you've unfortunately come to the wrong place. However, if Dr. Meesh is still doing the same project as when I took the class in Spring 2000, my code may be of use to you. You can request parts one and two of my CMSC420 project (written in C++) from Dr. Meesh.


Skip to My Released Software | Miscellaneous | School Projects | Unreleased Muck | Hermes II | Ancient History

View the Patch Listing.


My Released Software - Freeware, Shareware, and Open Source programs I have released.

  • ShadowIRC, an open-source Macintosh IRC client. ShadowIRC developed under the GNU GPL license.
  • Unlockupd allows your Mac OS X system to continue functioning when lookupd dies
  • ShadowBot, an open-source Macintosh IRC bot, also under the GPL. ShadowBot is no longer supported.
  • ICMP Logger logs incoming ICMP packets. Useful for IRC ops, system admins, and anyone else interested in monitoring incoming network traffic for some forms of undesirable packets.
  • Timer displays a small window that shows your uptime and gives you two timers.
Unavailable Released Software - This is software that used to be available, but for one reason or another, is either unavailable or useless right now:
  • Keep Connection Alive attempts to foil some ISPs which disconnect you after a few minutes of being idle. But honestly, can't you just keep your email client open and check mail every couple of minutes?
  • MacDynDNS was a client for the DynDNS service before they changed their authentication scheme and broke it.
  • MacGVANT was a client for the Optimal Golomb Rulers effort at http://members.aol.com/golomb20/. It was supersceeded by a client by another group using the GARSP OGR core. For more information about OGR, see the url above or visit Distributed.Net's OGR page.
  • OpenStats is a dynamic, database-driven site usage analysis tool I wrote for work. It was released under the GPL.


Miscellaneous - This is what happens when I get bored.


School Projects - This is a list of some of the more interesting projects I wrote for various classes while at school.

  • CMSC417 - Computer Networks
    • Wrote a network stack in Java. The network stack works something like TCP (but is a little simpler) and sits on top of UDP.
  • CMSC420 - Data Structures
    • Combined the use of a binary search tree, skipllist, PM1 Quadtree, Point-Region Quadtree, and other advanced data structures with various searching methods to keep track of bases, resources, and routes in two dimensions.
    • UMD Students: If you want source code, my project is available from Dr. Meesh. She can give you what you need.
  • CMSC430 - Translation of Programming Languages (Compilers)
    • Wrote a scanner (using lex), parser (using yacc), and compilier for the "NIP" ("Nothing in Particular") language for the "HAC430" computer architecture.
    • Wrote a program that takes a regular expression and returns a minimized Non-Deterministic Finite State Automaton.
  • CMSC433 - Computer Programming Language Technologies and Pardagims
    • Shadster, a client/server/directory filesharing sytem, written in Java. (Something like Napster.)
    • A Java webserver that spawned external java servlets.


Unreleased Muck - This is stuff that I wrote and, for various reasons, never released. Most of them were written at the request of someone else, or for a personal use.

  • Alarm has gone through about ten cases of reincarnation, all stopping right before it became useful. It's supposed to be a useful alarm clock.
  • CD Controller allows you to control your CD player with the F13, F14, and F15 keys. Also plays sound effects and runs AppleScripts for the other functions keys.
  • Choose Adventure, a Choose-Your-Own-Adventure computerized book. The content was pulled from my 10th grade "creative writing" class. The program, like the content, rather sucks.
  • FTP Wardialer, an AppleScript that used Anarchie to slam FTP servers until it finally got connected.
  • IRCFriends, a program for keeping information for a list of people you met on IRC.
  • IrcleClock - Back when Ircle was still good, a new beta was released almost every day like clockwork. As a joke, I wrote this program to display what the current version of Ircle was and the time until the next release. Funny thing was, this was frighteninly accurate for awhile.
  • Judgment Day counted down the seconds until Judgment Day. Judgment Day was August 29th 1997. (For a refresher course, see the movie Terminator 2: Judgment Day.)
  • MacPCFileConverter was written to facilitate in the conversion of the business college at the University of Maryland at College Park from Mac OS to Windows. It scan through the harddrive of the victim's machine and added Windows extensions to all the files it had types for.
  • NativeLooker was supposed to find all the PPC native or fat binary programs on your computer. Instead, it ate all your RAM and crashed.
  • SavePad was written for a friend on IRC, Korendil. Kor kept losing stuff in his notepad because the Notepad DA didn't save until you changed the page or quit it, and he wound up crashing his computer quite often before he saved. SavePad ensures that you won't lose text, by saving after every character you press. Of course, since there is no undo, and no log of keys pressed, it's quite easy to hit delete and permanently erase your 255-character masterpiece.
  • Wardialer was my modem dialer for a year or so when I first got on the Internet. My ISP, the Baltimore County Public Library, had a great rate ($50/year!!), but they only had 60 phone lines or so, so it was rather difficult to get online. This program isn't useful now, since modern PPP programs don't support an external dialer.
  • ZapHeader killed the first 512 bytes of a file. I forget who wanted it, and for what reason.


Hermes II - I also wrote the following Hermes II externals under the brand "ShadowExternals". Hermes II was a popular BBS program before the Internet became popular. If you want these, let me know and I'll dig them out of storage. This is where I first started real Mac programming.

  • Change Info - A replacment for user defaults and the sysop user editor. Also lets users see statistics on them that the BBS collected but didn't display.
  • Chat Pro - Changes the sysop page sound, creates an emergency chat command, configurable time settings for making the sysop available or not, adds a menu to the menubar to indicate sysop's status.
  • Checkers - ANSI-graphics checkers game against another player on the same BBS.
  • Colors Manager - Allows the sysop to configure multiple color sets for users and force-reset all users colors.
  • Donations - My lame attempt at making money off of a plugin that supposedly helps sysops get donations for their BBSes.
  • MenuText - Displayed quotes above the main and transfer menu prompts.
  • Sysop Utilities - Various sysop utilities.
  • Top Twenty - An updated version of a top-twenty users statistics plugin that adds an ANSI progress bar, is faster, and added more statitics.
  • Userlist - a colorized userlist.


Ancient History - These are programs I wrote a very long time ago, in Microsoft BASIC, and released. The only copy of them I have, _IF_ I still have them, is on a floppy somewhere in my closet. If I'm not lucky, there's also a copy of them on InfoMac, and in the archives of the BBSes I uploaded them to. They were written around the same time I was having delusions of owning a Mac computer store and providing an 800k floppy full of cheap BASIC programs I wrote as an "added value".

  • Save The Turtles! was ripped off of a similar program in a 3-2-1 Contact magazine issue on sea turtles. I also tried to port this to Pascal, and gave up.
  • Money Converto! let you put in the number of pennies, nickels, dimes, quarters, half dollars, dollar coins, one dollar bills, etc, etc, etc, that you had and it spit out the total amount of money you have. I think this one actually made it to the InfoMac archives, but I'm hoping it's purged by now.
  • There are others, but I can't remember them (or find the floppy disk) offhand.