We've been writing software to streamline our work life since we sat down at a keyboard. That led to some serious business applications in C before we got into text and image processing tools. But these days we're writing Web applications with MySQL databases. Here's a list representing a few of the applications we've built.
Web apps are our idea of cross-platform software. They are usually tied to MySQL databases using a PHP front end dressed up with AJAX libraries (Spry, jQuery) and plain JavaScript. But some use Perl to efficiently do text or image manipulation.
XBOOK -- Our venerable checkbook program with income tax reports recast as a PHP application using MySQL tables. It was first written in dBASE II, ported to C as a DECUS public domain application, modified to run under PC-DOS and finally converted to the current PHP version. See XBOOK.
Argus -- A PHP application using AJAX and JavaScript to maintain a MySQL database of photographic lens specifications and output specifications tables in HTML.
My Library Catalog -- A book catalog application using PHP as the front end to a MySQL database with various reports and search functions. See My Library Catalog.
Ceelo -- A one-page PHP application (like our Beebe Machine for procrastinators) that lets you play cee-lo the dice game. We explained the whole thing in an article for Photo Corners. Or you can just play Ceelo.
Betsy -- A Perl application to read vendor feeds and maintain a MySQL database of product information while creating HTML fragments to include on product pages.
Magoo -- An HTML front-end providing various arguments to a Perl application that processes a directory of images into several sizes of thumbnails, building carrier pages for each of them and index pages for all of them.
Picture of the Day -- The Photo of the Day application includes a set of Perl scripts to handle entry, display, judging and maintenance for a photo contest with daily and monthly winners.
Groceries -- This is an assisted-shopping application designed for someone who is homebound and relies on a friend or relative to do their grocery shopping for them. An online shopping form in big type can be filled in on a mobile phone as the person making the order goes through the pantry just as easily as if they were sitting at a computer. It sends a formatted list by email of only the selected items to both the designated shopper and the person making the order. The designated shopper also receives a text message alerting them that an order has been placed so last minute additions are easy to manage even at the store.
Bookmark Buttons -- This HTML/CSS solution turns the small text of bookmark lists into large, colorful, animated buttons that make it easy for the visually-impaired to find what they're looking for. No more scrolling and sliding and slipping off long lists of small words. Just hit your spot.
We've written a number of utilities (some of them just magical one-liners to put out fires) for Unix systems but we've also written full-blown applications that run as crons to maintain data for Web sites. Where human input is desired, we write Web applications, as above. And we're happy to craft solutions on the command line in Terminal but that isn't reflected here.
Betsy -- A Perl program to read various vendor feeds, update MySQL databases wit the data and create Web page fragments from it as well.
Barney -- A command line Perl tool to create an XML feed of camera reviews from a MySQL database following the Product Review Feed Specification available from Google. Uses a shell script.
Bang -- A Perl application to help analyze the vendor feed data.
Bonami -- A Perl maintenance script to delete files and directories of a certain age.
Image Caching Utilities -- A suite of image caching utilites to employ various servers for images.
Swiffer -- Swiffer processes directories of PNG files into a set of SWF files that can be displayed by a Flash loader file to illustrate lens properties.
Beebo Machine -- A simple PHP application using a text database to help procrastinators do what they do best. See the Beebo Machine.
fixperms -- A Perl program with a shell script that uses the Unix find command to recursively set folder permissions that are not 775 to 775 and file permissions that are not 664 to 664. As currently configured, they also both change any file or folder that is not a member of webusers to that group.
Our Mac OS software taps primarily into AppleScript and Perl, building complete apps in Xcode. We also did extensive EasyScript programming with OneClick on OS 9.
Cambi -- An OS X application using AppleScript and Perl components to resize images with optional overlays and HTML output. See Cambi's predecessor.
Custom CMS -- The custom content management system we wrote for Photo Corners uses artificial intelligence to build and update sophisticated HTML pages from simple text-based documents. Written in AppleScript and Perl.
Style -- Various iterations of this Perl script to apply a publication style to contributor text, including AP style. See an example.
Gifone -- An OS X application using AppleScript and Perl components to combine a set of images into an animated GIF with options to set the duration each image is displayed and how many times the set loops. It's a more efficient way to make an animated GIF.
Gallery Creator -- An AppleScript/Perl application to build AJAX photo galleries.
Copyrighter Pro -- An AppleScript/Perl application to write copyright information to several tags in the Exif header of various file types.See Copyrighter Pro.
Exif Contextual Menu Service -- An AppleScript/Perl application to write copyright information to Exif tags of various image file types. See OS X Contextual Menu Service.
Photo Time Machine -- An AppleScript/Perl application to adjust capture time tags in the Exif header of various image file types. See Photo Time Machine.
Keyboard Maestro Applications & Palettes -- Mini applications and application-specific palettes of keyboard macros to optimize a wide variety of common tasks from editing text and images to backing up safely. We've written about our image ingestion script, for example. And have contributed a few of these to the Keyboard Maestro Forum:
- Brevis -- A set of macros that automate text expansions keyed by typed triggers that behave differently with various precedes and ending characters. A control panel makes it easy to review existing expansions, use them, merge and filter them. The system stores all triggers and expansions as a JSON database in a single variable to protect the Keyboard Maestro plist from bloat.
- Literary Toolbox -- A collection of text analysis utilities for spell checking, dictionary lookups, thesaurus lookups, WordNet lookups, text counts, word frequency, readability, emotion check, opinion check, parts of speech, grammar check, concordance, among others.
- Mirror Mirror -- A keyboard driven GUI using safe rsync commands to remember, backup and restore a file or folder anywhere on the network.
- Napkin -- A text and graphic note-taking application with extensive image editing options.
- Toggler -- A utility to enable or disable specific Keyboard Maestro macros.
- Glossarium -- A free-form text database retrieval and data entry tool with searches for single terms, full text search of the database and category listings.
- Textcavator -- Regular expression search of text and page layout documents with in-context display of the results
- A Few Favorites -- A popup launcher with an alternate interface to open favorite applications, files or folders. The list of folders can be read by Textcavator.
- Minify/Unminify CSS/JS Files -- Work with commented, unminified source but deploy minified versions
- Code Commentor -- Insert multiline or single line comments around a selection in any of 11 languages (AppleScript, C, CoffeeScript, CSS, Haskell, HTML, PHP, Perl, Python, Ruby and JavaScript) without remembering the syntax.
- Super Swap -- Exchange transposed characters, words, phrases, elements in a series, etc.
- Common Conversions -- Convert selection from one unit of measure to another or perform a calculation
- Improved Title Case -- Convert selection to title case
- Improved Sentence Case -- Capitalize first word of each sentence
OneClick Palettes -- OneClick was a scripting application that hosted scripts in buttons on palettes associated with various applications. We wrote several of these including:
- OscarPal -- A palette to facilitate standard screenplay formatting in QuarkXPress
- QuarkPal -- Provides common editing and formatting functions for staff writers using QuarkXPress
- HTMLpalPro -- Extends any text editor into an HTML markup editor
- TimerPalPro -- Time various jobs with split times and a job database
- F&Rpal -- Does a global search and replace across multiple files from the Finder
Our business applications were written for the DEC Rainbow running MS-DOS using the C language. We also modified a PC Xbase library to run on the Rainbow for many of these applications. Some of these began life as dBASE II applications and one of them was even written in Turbo Pascal.
Complete documentation was written and printed from QuarkXPress for each of these applications.
Adman -- A commercial advertising application to schedule and bill advertising.
Class -- A classified advertising application to schedule and bill classified advertising.
Ledger -- An accounts receivable program to enter payments and produce accounting reports.
Layout -- A charting application written in C to show page imposition on press signatures for book and magazine publishing.
Statistical Review -- Four data entry modules written in C to gather financial information and format it for output on an MCS typesetter.
Stats -- An electronic version of a databases of financial information (premiums and losses for insurance companies) with various reports. Ran on MS-DOS, PC-DOS.