Useful Sticky Notes

Showing posts with label Blog Update. Show all posts
Showing posts with label Blog Update. Show all posts

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.

Friday, October 31, 2014

Quick Updates - Development Focus

I apologize for the lack of any new posts over the past few months. I'd been suffering from some health issues that limited my ability to focus on technical matters. It has gotten better now, and I am trying to do some catching up.

It has recently occurred to me that my background of working with HPC tools and codes over a wide range of HPC software stacks and platforms, had left me with a development experience that is ad-hoc and poorly structured. This realization was coupled with the understanding that I now only possess the Mac OS X development environment as the only real convenient platform to work with. I can also do some work on my Windows machine via minGW, but it is really set up as my gaming platform. Finally, I do have Ubuntu on Virtualbox on my MacBook Pro on which to do Linux development, but that is fairly inconvenient. My living environment is also limiting any idea that I pick up a dedicated Linux box as an alternative. Finally, I realized that Mac OS X Darwin is not merely a Linux/Unix variant, but has its own set of internal design choices and implementation that make any naive approach to tool development from a Linux-centered perspective unproductive.

As such, I plan on taking a step back after the long hiatus to properly acquaint myself with Mac OS X internals from the perspective of a tool developer. Over the next few months, I will attempt to document my experiences and what I have learned as I try to implement common HPC tools design idioms. These idioms will include basics like attaching/coupling tool runtimes with user code/binaries at varying degrees of transparency. They will also include library wrapping and override idioms. These idioms will perhaps for the basis for my next article, to give readers a sense of where I am coming from with regards to my own software development background involving tools.

Tuesday, August 5, 2014

A Quick Update

It has been awhile. I have noted that my previous posts tended to be disorganized, and I'd like to give this blog some structure. I am starting by creating a tab of "sticky" pages to help organize the material.

The first page serves as a way for me to keep track of the many software tools that I use, and find essential for my development work on my MacBook Pro. In creating this page, I hope I can also help others decide on the kinds of tools that help make their lives as developers productive.