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!
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.