I’ve been wanting to fiddle around with OS X Server for quite a while now, mostly just to satisfy my curiosity and play with a new toy. But since I haven’t actually needed it, I never did.
But a lot has changed in the past year and a half. I got married. I moved to the suburbs. I reset a lot of things. I also built myself a working space in our home. In the process, I transformed my old iMac from a workstation to a server – and it’s spectacular.
An Accidental Server
At first, I just let a couple of apps run in the background on the iMac while I worked from my laptop in the living room:
- Hazel – automated file management
- Apple Mail – automated email sorting
- Keyboard Maestro – miscellaneous scheduled scripts, in addition to keyboard shortcuts
- iTunes – media server, especially for our multiple Apple TVs
Eventually, I decided to jump in with both feet, installed OS X Server, and dedicated the iMac to full time server duties. I wasn’t using it as a workstation anymore anyway. With OS X Server installed, it was able to do a few more, heavier duty, things:
- Time Machine Backups – great for backing up all the computers in the house, including my wife’s
- Caching – faster iOS, OS X, and app updates.
- File Sharing – sharing work files with my wife, pretty useful
- Xcode Server – this is a biggie: automated unit testing for my apps
In aggregate, all of these little functions have turned my semi-retired six year old desktop into another indispensable tool. Pretty awesome!
Xcode Bots
The most exciting thing for me on the list above is the Xcode Server integration. This was something that I always thought might be a little bit useful. In practice, it’s been a lot bit useful.
Again, just on a lark, I started following a tutorial on setting up Xcode Server bots. It turns out that it’s fun seeing another entity – even if it’s a computer – running tests to validate that my code works. Seeing a fancy dashboard showing that everything is a-okay is extremely gratifying.
I’ve been okay at writing unit tests for my server side code. But I’ve been very lacking when it comes to writing them for client-side apps on iOS. Now, I’ve gotten into the habit of writing unit tests for my code as I build it. This can only help.