Useful Sticky Notes

Wednesday, January 14, 2015

Update: Documenting Fresh Mac Mini Setup For Development

I bit the bullet the other day, and picked up a brand new top-of-the-line Mac Mini (dual-core i7 with 16Gb of RAM and a 2TB drive). It was about time - my previous most-modern machine, a MacBook Pro is more than 6 years old. It is so full of ad-hoc software stack changes from since graduate school, that I was actually afraid to upgrade it to Yosemite for fear that I may mess something up.

With this new machine, I want to document every step I take bringing it from a fresh off-the-shelf Yosemite system to a fully-functional and broad-based software development platform that I would like to work with from my point of view.

What do I mean by "broad-based?" Well, I want to support (by rough order of priority):
  1.  Mac OS X Unix-style application development (XCode + Homebrew + Modules)
  2.  Linux/POSIX application development (VirtualBox with Ubuntu)
  3. Web applications
  4. Mobile applications (XCode)
  5. Windows Unix-style application development (mingw)
The first two will form the basis of my main software development effort in the context of my primary work on HPC tools and software.

I want to make use of this machine not just to do good development work, but also to explore ways to structure and improve my own professional workflows. It will also be a platform where I explore ways to structure how I place and organize software and data that can compartmentalize job-related projects, and personal projects.

The very exercise of documenting how I set up this machine will make use of these ideas (see my previous entry on the use of Google Drive.) The machine will also be an improvement over my laptops for the purposes of a sustained system for automating:
  1. Unit testing;
  2. Correctness regression tracking via some kind of web-based dashboard similar to Kitware's CDash;
  3. Performance regression tracking via a similar mechanism (CDash has no current support for performance regression tracking as far as I know); and
  4. Semi-automated bug management.
The next few posts I will make will be in the context of this documentation effort. It is mostly meant to be a record useful to me, but I also hope that by putting my thought process down it will be helpful to anyone else interested in a similar endeavor.

No comments:

Post a Comment