Brad Dominy

Selected Work

The following are projects I have written and designed, most of which are based on Cocoa for MacOSX. I have also written AppleScripts and used other languages like Python, PHP, Perl, C, and Java.


A SyncServices application used to sync contact information between a LDAP server and Address Book on almost 500 client machines. While Address Book has the ability to look up information from LDAP directly, only certain fields are available and you cannot customize labels or establish relationships. ABSync creates an Address Book group named "Office List" that holds the card of every active employee. Detailed contact information like spouse, the date the employee joined the firm, timekeeper number, services and secretary are added as well. Any changes made to the group or to the managed contact information are immediately reverted even if they are not connected to our network.


A custom front end to rsync comprised of a System Preference and a command line tool which performs daily backups for over 300 users and reports results to a status server for easy monitoring. The Backup System Preference allows the user to select their backup server, enter their login credentials, set the time for daily backups, view the backup log file, and select which directories get backed up in their home directory. It schedules the command line application via launchd and can kick off an immediate backup as well. The command line application launches rsync and monitors the backup's progress. Once complete, it reports the current backup's status to Backup Status Server.

Backup Status Server

A central server to log the status of daily backups for over 300 users who use my Backup program. The application has its own internal web server to process these reports and it uses CoreData to simplify data storage. It also responds to browser requests and will generate a sortable table showing the current backup status for every user, or a history of backups for a particular user. Settings allow for purging information after a period of time to help control the size of the database. Missing and overdue backups or backups reporting an error are automatically flagged and reported to our IT department.

Chapman PDE

A print dialog extension that lets users enter in a client matter number for billing purposes when printing documents. A user can type in the client matter number directly or choose from a list of the last 10 client matter numbers used. The extension passes the client matter number and the requesting user via a print ticket to a CUPS filter which injects that information into the raw postscript before sending it to a printer. If the print job completes successfully, the printer logs all of that information plus the number of pages printed and the document name in its internal log file. A separate script I wrote gathers those printer log files and processes them for billing.

Contractions Tracker

A utility for tracking my wife's contractions that I wrote while she was in labor.


An application which lets people quickly dial phone numbers from their Address Book, or an email, or a web page, etc. on our firm's Cisco IP phones. It uses MacOSX Services, to bring in a highlighted phone number from any application that supports services. Entered phone numbers are matched in the user's Address Book to display information about the person or company you are calling. Speed dial numbers can be created for frequently called numbers and they can be dialed with a double click. It also features a call log and helps set up conference calls. Most important, it eases the inputing of client matter numbers for billing purposes.

Digits of π

In celebration of Pi Day, here is an AppleScript I wrote that outputs the digits of π until the machine runs out of memory and crashes horribly.

Google Onebox Employee Search

A Google onebox module which searches our LDAP server and returns employee information if a match is found based on name, title, phone number, or nickname. The XML results are then turned into HTML using XSLT.


A screen saver that is designed with a plugin architecture to cycle through views and provide information to the IT department on a wall mounted monitor. It provides a snapshot of the state of various systems, including backup, network, calendar, and bulletins.


Toggles the Message Waiting Indicator (MWI) light on Cisco IP Phones to match the read flags of voicemails delivered to Mail.

Office Location

An Address Book Plug-in that uses LDAP to look up an employee's office location and display it on a floor map. It is triggered when a user clicks on an employee's work address and then selects the "Show office location..." option from the popup menu. For non-employee cards or other addresses this option is unavailable. Once selected, a query is made to our LDAP server to retrieve the coordinates of that employee's office and the office map to use along with other contact information. A new window is then created and the floor map is displayed with a push pin composited on top at the specified location. For performance reasons, this is all handled in a background thread.

QuickMail Conversion Tool

A utility to transfer contacts from QuickMail Pro to Address Book. It searches a directory for any QuickMail data files and then parses those files to extract contact and group information which is then added to a user's Address Book using the Address Book framework. This utility saved thousands of man hours for my client in their transition from Mac OS to Mac OSX.

Randomize Last Names

A script to randomize the last names of all of my Address Book contacts. Useful for protecting the innocent when taking screenshots of some of my other projects.

Smartr Contacts for iPhone

Smartr Contacts for iPhone is an automagic address book I helped write with a team of people at Xobni. It works with Xobni's cloud services to provide a comprehensive list of contacts you have interacted with via email or social networks and current insights for those most important to you.

TiVo HME Xcode Template

A Xcode project template for quickly creating a Java application based on the hme.jar library. The project used Ant for the build system and automatically launches the HME Simulator when it is built and run.

TiVo HME for Movies.com

A TiVo HME application I wrote as an entry in TiVo's HME challenge. Alas, I did not win, but it was a good opportunity to pick up Java and to try out HME.


My own personal website built using Django and python. I wanted to explore some of the latest web technologies and set up a full web application from scratch.

iChat Stock Ticker

A fun little script that puts a scrolling stock ticker in your iChat status.


A background command line application that sends periodic network traffic while connected over a PPP connection on the SprintPCS network. Our CIO was always getting bumped from his connection, so he asked me to come up with a solution.

vCards to Clipboard

A utility that puts the names of people into the clipboard from vCards. The cards can come directly from Address Book by selecting a group of cards and then dragging them onto the droplet.

About me

Brad Dominy


By Language

By Frameworks