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.

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.


We use Cisco IP phones which respond to xml commands, including one to initiate a dial, so I created Dial to better integrate the phones with our daily work flow. Bill back is a tough area, mostly because of users not taking the time to enter in the proper information. While our phone system had the capacity to do bill back, no one ever took the time to enter in a long string of digits in the proper format in order to charge a call to a client. Dial makes this process easy. It remembers the most recently used matter numbers and associates the last matter number used when dialing a phone number to automatically populate the matter number field. When you dial, it takes care of everything for you. Additionally, it maintains a call log so an attorney can review what calls they made recently if they need help accounting for their hours.

All names and personal info in the above images have been changed to protect the innocent

Dial works with the Address Book to show who's number is being dialed. As you put in a number, it searches for a match and if it finds one, it will show their picture and job information. Speed dial numbers let you keep numbers you need all the time handy and can be dialed quickly with just a double click. Adding a speed dial number is handled by dragging and dropping vCards onto Dial. Phone numbers can be entered directly or they can come in from any application that uses Services. So, if there is a phone number on a web page, you can just select it and using Services it will automatically launch Dial and enter it into the phone number field. This also works from other applications like Address Book, iCal, TextEdit, iChat, Mail, etc.

Contractions Tracker

We attended birthing classes before our daughter was born and they gave us a little workbook with instructions on how to track contractions so that we would know when it was time to head for the hospital. Labor can take a while though, so in order to help me pass the time I wrote this application. I promise I was not sitting by writing code while my wife was in pain. She was actually pretty comfortable and never exceeding a 4 on the intensity scale.

This application is a great example of how CoreData can make things easy. Most of the hard work of handling data is done for me and all I needed to worry about was the logic of the app. On top of that, bindings lets you display your data in a straightforward way. Overall, I think I spent about 2 hours writing this application and then used it for about 6 hours before my wife's water broke.

Backup Status Server

Backup Status Server creates a central place to log the status of over 300 user's backups using my Backup system. It is basically a web server that listens for http requests and processes input as if from an html form. Each backup client sends along information like user information, backup destination, client information, backup size, duration, etc. The Backup Status Server uses CoreData to manage all of that data. When a report is made, a new user is automatically created if not found, so registering a user is very simple - just run a backup! From then on a record of each backup made for that user will be kept.

All names and personal info in the above images have been changed to protect the innocent

An important aspect of backup is detecting when a backup is not working. Backup Status Server checks nightly to see if any of the registered users have not reported in. If they have not been seen in 1 day, they are listed as overdue. If they have not been seen in more than 5 days, they are listed as missing. This creates a nice filter for the support personnel as they will only see support requests generated for backups with errors or those that are missing, and it is easy to determine whether there is a real problem or if the user is just out of the office. There are also settings to change what port the server uses and to adjust how long to keep backup records.

The Backup Status Server also responds to requests from a normal web browser. It will generate a table of all the current backups and their status or you can look at a specific user's backup history. I use this function to generate a graphical representation of the state of backup for our users which is displayed on a wall mounted monitor in our IT department as part of my Kiosk project.

About me

Brad Dominy


By Language

By Frameworks