Dave's Programs and Scripts

It's fun to make old software do new tricks. It's less fun to put the appropriate finishing touches on an application or script so that it'll be more likely to work when somebody else tries it, but I feel selfish keeping these little doodads for myself.  If there's a "Not Released" script that you're really interested in, drop me a line. I might post that one next, or just let you have it as is.

Released Applications and AppleScripts

FTL Checkpoint
is a Mac app to provide a checkpointing function for the space game "Faster Than Light," or "FTL."
Sackson Solitaire Dice
is a Mac app version of a game described by Sid Sackson in his classic book "A Gamut of Games."
Big Box of Blox Score Exchanger
will let you import and export the high score lists from Digital Eel's game "Big Box of Blox" so you can share your high scores with your friends.
Life Balance AutoAssist
adds a couple of awfully handy, conspicuously absent functions and features to Llamagraphic's program LifeBalance.
works with Mail to help you manage busy mail list groups.
Disk Image*App Launcher
is for games that insist that you put their CD in the drive, but actually work just fine if you mount an image of the CD instead of carrying around piles of game disks (Railroad Tycoon II, Hoyle's Card Games, and Age of Empires II are some examples). This script auto-mounts the disk image if needed before running the program.
OS9 to OSX Printing
OS9/Classic doesn't "get" networked printing in OSX. It can only print to a printer connected directly to your Macintosh, or one that is smart enough to support Appletalk directly (which pretty much means only laser printers with their own Ethernet port and PostScript). This script which I posted on MacOSXHints lets you print to any networked printer (or one that you don't have an OS9 driver for) from Classic (or from an OS9-only machine)

Not (Yet) Released

Scripts for Images

Picture Sorter
Uses GraphicConverter to show you each image file in a directory, and then lists all folders in that directory. You pick a folder, and the picture gets moved there. Painlessly sort piles of picture files into groups.
Nail Polish
Automatically builds thumbnails for a folder full of images, constructing multiple thumbnails to specified H or V limits and types, into specified subfolders and with appropriate name changes, according to a config file.
Flashcard Picture Transfer
It's much faster to transfer files from my digital camera via the PCMCIA slot than the USB cable, but the file dates and names aren't very useful. This script hunts down devices with the DCIM directory, gets the picture files out of them, and sorts them into folders based on the day they were taken, renaming the files sequentially in the process.
  • Scripts for Servers
  • SIMS Queue Reset
    Sometimes the Stalker Internet Mail Server will, for perfectly legitimate reasons, end up with a queue full of messages marked "Don't bother trying to send these any more." Each queued message has to have a letter changed on the second line of the file (and SIMS restarted) in order to re-enable delivery attempts. This droplet makes that change.
    Make Secondary DNS File
    Used with QuickDNSPro 2.n, it will create a QDNS Secondary file for all the open primary domains. This secondary file would then be moved to a different server, the one that is actually providing secondary DNS service (with another copy of QuickDNS Pro)
    Process Rotator
    Under OS9, the 'frontmost' program gets more processor time. This script would switch which program was frontmost every n seconds.
    Voice Mail Remailer
    Smith Micro's "HotFax MessageCenter" is a remarkably flexible, pathetically 'supported' (it's been version 1.0 for years now!) multi-box voicemail system. One exceptionally lame missing feature is email notification of voice mail. This script uses SoundApp and an SMTP-enabled Scripting Addition to watch for new voice mail sound files, convert them to WAV files, and email the message to the appropriate user.
         I'd be so much happier if SmithMicro'd just expend a bit of effort to add a modicum of AppleScript support. You can trigger an Applescript IF the inbound call has callerID. Only if. Except that they don't support most modems' callerID identification. Being able to attach scripts to basic functions, and reading the internal data, would be adequate to expand the program's usefulness, even if they don't put in email notification as an inherent function. 
        OK, I'm done ranting about this now.
    Numeric Pager
    PageSentry's a clever server monitoring tool which I used for years. Pager notification required some extra piece of software. All I wanted was primitive numeric paging, and a monitor event can call an AppleScript, so this script uses a serial port Scripting Addition to send numeric pages.
  • Scripts for iTunes
  • iTunes Voice Control
    Does just what it sounds like; let's you control iTunes by talking into a microphone. It's a huge script as scripts go, and does all sorts of fancy things. I could play  my MP3 files on a 66MHz 6100, but it requires at least a 233MHz G3 for the voice control. But iTunes 3 is a big upgrade, and OSX only, and that really overloads the older Macs I have connected to the stereo, so the Voice Control's been temporarily shelved while I decide how I want to handle MP3 playback.
    Playlist Database Dump
    Cross Correlate is horribly, painfully slow when you have 6000+ entries. Rather, AppleScript's got some kind of enormous overhead when talking to apps, so I figured I'd be able to find duplicates, check playlist membership, and stuff like that if I could just get the data away from iTunes and AppleScript, and into a real database like PostgreSQL. This script extracts the playlist info into a DB-import-ready file.
    Master Database Dump
    See above.
  • Scripts for the Finder
  • Folder Spectrumizer
    We lost colored folders with OSX. So I made a whole pile of folder icons in different colors. This script currently uses IconBrush to replace plain light blue folders with semi-randomly selected folders in other colors. This makes multiple folders much easier to identify. I'm waiting for OSX to include the native icon support that the Finder's dictionary says is "Not Supported Yet", then I'll be able to quit using IconBrush.
         Update: I've discovered the secret powers of AppleScript Studio, so I may end up building this into Window Dresser.
    Decompose Folder
    I downloaded a web site and found that I had files in folders in folders in folders. When I drop a folder onto this script, all the files nested inside folders are moved (and renamed if necessary) to the root folder, and the subfolders are deleted. The renaming system preserves information about the original location of the files to some degree.
    Window Dresser
    I got tired of adjusting finder window settings to the same two or three configurations. This ProjectBuilder (my first) application allows for more rapid resetting of a finder window to one of a subset of preset configurations, including Large, Medium, and Small icons (by name, size, or date) or a List view. In all cases, the window's resized to fit. It can be controlled entirely by keystrokes; no mousing is necessary.
  • Scripts for Entourage
    Note: I don't use Entourage any more, I've switched to Mail, so these scripts will probably never get posted.
  • Chatelaine
    This rather complex script intercepts all messages that are not from known addresses, and asks the sender to reply to a message. Any message without a valid return address, or one that goes back to an automated address, will not send a valid reply, and after a bounce or after a month of waiting, the message is thrown out. Mildly annoying to legitimiate friends and associates, but nearly 100% effective at blocking spam. It's possible to add addresses before you get mail, it always checks with the address in the address book, and you can also set addresses to be rejected as well. Currently requires its own email account, alas.
    Archive Selected Email
    This one's been posted elsewhere. It saves out email into an external directory, where it can be indexed by the OS. Keeps your email program's system clearer, and let's you find messages with the Content Find from Finder. OSX isn't being as cooperative as 9 was for some reason.
    Change Return Address
    Sometimes I want to send a message with a different "From" than what's set in my account. This does that.
    Before I developed Chatelaine, I was using this. It uses a great big pile of rules to assign a "Spam Score" to a message. A score over n would get it marked with the spamscore in the subject, and a score over N would get it deleted.
    Dial Phone Number
    This just  uses a serial port-controlling Scripting Addition to use a modem to dial a phone number for a contact on the screen. 
    Synchronize Tasks
    Synchronize Address Book
    Synchronize Calendar (Add Only)
    Synchronize Calendar  Delete
    For a while I was trying to keep two different copies of Entourage synchornized. That's what these did. Unfortunately, Entourage's support is exasperatingly incomplete. You can't actually copy a task properly; there's no way to set a repeat on a new task, you can't identify creation dates on calendar events or read or set the repeating functions on them, and so on. So after hours of fighting the "close but not actually right" implementation, the Sync routines work, mostly-ish.
  • Script Modules and Sub-Functions
  • List Shuffler
    This shuffles a list like it was a deck of cards; randomly reordering it.
    Query PostgreSQL
    This primitive function calls the Unix command line function 'psql' to send a query to a PostgreSQL server, and returns the result from a temporary file.
    Chops a string into a list, or lists of lists. There are scripting additions with commands that do this, but I wanted one of my scripts to not require installation of third-party scripting additions.