A few recommended books, movies, games, and albums. If you want to look for more recommendations, feel free to look at the larger selection over at Amazon or my Amazon Store with more recommendations.

  • Man School: lessons on love, power, honor and purpose
    Man School: lessons on love, power, honor and purpose
    by Michael Bronco
  • Cryptonomicon
    by Neal Stephenson
  • Programming in Objective-C 2.0 (2nd Edition)
    Programming in Objective-C 2.0 (2nd Edition)
    by Stephen G. Kochan

    An outstanding introduction to the core of the Objective-C language.

  • DreamCypher
    Dancing Ferret
  • Tron: Legacy (Amazon MP3 Exclusive Version) [+Digital Booklet]
    Tron: Legacy (Amazon MP3 Exclusive Version) [+Digital Booklet]
    Walt Disney Records
  • Cocoa(R) Programming for Mac(R) OS X (3rd Edition)
    Cocoa(R) Programming for Mac(R) OS X (3rd Edition)
    by Aaron Pablo Hillegass
  • The Moon Is a Harsh Mistress
    The Moon Is a Harsh Mistress
    by Robert A. Heinlein
  • Hot Fuzz (Widescreen Edition)
    Hot Fuzz (Widescreen Edition)
    starring Jim Broadbent, Kenneth Cranham, Timothy Dalton, Julia Deakin, Patricia Franklin

Moderation in All Things...

... even moderation.

One of the hardest lessons I ever had to learn in my life - one I still struggle with daily, is that of realizing that usually, "Good enough" is just that. Good Enough.

The problem of course lies in part that - at least in simple programs and math problems - there is no fuzzy "it works." Things are either correct, or not. As a child playing with the family printer, sending the correct sequence of bytes to a dot-matrix printer resulted in a pretty graphic. Sending another sequence resulted in a jumbled mess. It's really easy for an incipient geek or computer programmer to fall for the illusion that everything is that black and white, or that at least in the realms of programming or engineering, everything should be perfect.

Of course, it cannot be. For one, people and natural systems are chaotic. Secondly, even engineering is not that straightforward. I learned this lesson the hard way in the Navy, and the teacher was ironically what would appear to be the most unforgiving tutor: maintenance on power plant and propulsion systems aboard a nuclear submarine.

At first glance, that seems ludicrous. The loss of the Thresher almost single-handedly kicked off the birth of rigorous Quality Assurance paperwork and documentation for every critical safety system on submarines. Later, the Iwo Jima had a steam plant leak that killed ten people due to the use of the wrong bolts in reassembling a high pressure steam valve, which subsequently failed. This resulted in a similar program being instituted for surface ships. Obviously there are times where a lack of attention to detail, doing things a little less "perfect" can have deadly results.

The thing is, "perfect" here depends on the standard you wish to achieve. A NASCAR stock racer will blow the doors off a minivan or Humvee, but would fare poorly on anything but the smoothest pavement, and both would be hopelessly mired in conditions that a Humvee would blow through with ease.

Even when you have a primary purpose, there are conflicting standards. On a minivan, the desire for cargo space and the ability to haul said cargo directly conflicts with a desire for fuel efficiency and handling.

The art of engineering, and it is an art, is an art of putting together design choices such that, when all is said and done, the strengths reinforce each other, as many weaknesses as possible cancel out, and the final result is "good enough" at all of its respective jobs.

You have to get used to it.

With submarine maintenance we lived in two worlds. On the one hand, we thoroughly documented the proper installation of the proper material and size O-ring or gasket, with the proper torque applied to the bolts for seawater and steam valves. We obsessively checked off verifying the status of ballast tank valves before a dive. Mistakes got people killed. We spent hours practicing startup and shutdown procedures, done by the book. We drilled over and over again on casualty procedures to hone our response to any problem... and this is where the break with "perfection" began.

There is an "ideal" way to shut down any piece of equipment on a submarine that is listed in the technical reference. There is also a standard startup and shutdown procedure employed as part of the overall ships procedures. In many cases there are even alternate "emergency" procedures, and these are all found in volumes of engineering manuals and procedural guides. Yet there are often discrepancies between what the maintenance and technical reference state for starting up or shutting down a system, and the ships procedures. These differences exist because a motor, a diesel engine, an oil pump, a condenser does not exist in isolation, but as part of an integrated and interconnected whole.

These "standard" procedures are often modified. Revisions are supplied by the Navy as a whole based on maintenance and other accumulated data. The engineer and CO have wide latitude to promulgate changes ("Standing Orders") as long as said changes don't break things. They even have latitude to break things and order people into situations that will kill them in order to get the job done.

Lastly, casualty training has a brainstorming component where many what-if's are asked, because it's widely understood that when things fail, they're not likely to fail strictly in isolation (unless it's relatively minor), but in ways not strictly covered by the manuals.

In short, when things actually break, we don't throw out the manual, but instead use it to - hopefully - make wise choices in what we're actually going to do. And often enough we ended up improvising repairs to keep things running when the "proper" parts and tools were unavailable. Maintenance procedures would be pieced together as needed from multiple references, choosing the appropriate steps and discarding those that did not apply.

What I learned, in short, was that instead of striving to meet an arbitrary, unchanging standard of perfect, I should strive to meet the requirements of my priorities, because the real world keeps changing the "specification" you have to meet. Push comes to shove, accomplishing the mission, followed by keeping the ship running and keeping the crew alive trumped nearly every other procedure written down.

And since you didn't have the time or resources to do everything as perfectly as possible all the time, you had to choose which things must be done "right" - accomplished no matter what - which things should be done well ("good enough"), and which things not to bother doing in the time available, and to be happy with the result of your decisions.

Of course, it never hurts to strive to be a little bit better at whatever it is that you happen to be doing, each time you do it - that is the path to mastery.


One More Thing - Scroll Bars, Scrolling, and Lion

The single most annoying thing about the new defaults in OSX 10.7, aka "Lion" is one I nearly forgot because I almost immediately changed the default: The scroll bars are hidden by default.

Why is this important?

Because the scroll bars give you, with very little wasted space, two very, very critical pieces of information.

Their presence tells you that there is more to be seen, and the "footprint" of the scroll tab combines with it's position within the window tells you both how much of the total page you are seeing, and what your position is relative to the whole document/web page/whatever.

In the default mode, you may never realize that there is more to be seen.

In my opinion, this is the single most egregious mistake they made. Fortunately, it's also easily fixable. Go to your system preferences, and under the general preferences, select the option "Always" under "Show Scroll Bars." You won't lose much space on the screen, but you'll immediately know if there's more to see in any open window.

Insofar as the scrolling directions being changed - I actually like it now that I've grown used to it. Almost all of my computer work is on a laptop, with a trackpad front and center, and I spend little time on a mouse. 


Time Spent With Lion

Things I like

  • Auto-popup of authentication sheets at public wifi hotspots like Starbucks works great.
  • Love the new spelling correction hints that let you see what it wants to do before autocorrecting it - giving you a chance to say no.
  • Love the fact that you can now hold down a key to get the tilde/umlaut/whatever accent marks.
  • Mission Control allows me to find windows that are open a little faster due to grouping by App than expose
  • I love that Safari auto-restores, and Pages, and Textedit, and...
  • Fast launches
  • Versions of previous pages
  • Apps conforming to the new document standard don't force me to save before dragging into Mail App, etc.
  • For the same apps, not having to worry about saving the stuff I'm working on when I close the program. It gets saved as I'm working on it too. 
  • Call me nuts but I actually like the new three-column layout in Mail.
  • You can search by multiple terms within Mail, etc.
  • Seeing battery status, etc. on the login screen.
  • PDF annotation. Not just "signature" graphics, but actual text entry, etc. even on PDF's that are not pre-configured as forms (for an example of the latter, download your typical IRS tax form as PDF).

Things I dislike

  • Effectively borked the minimize-to-app in Mission Control
  • Using "Duplicate" instead of "Save as" can be a bit unexpected at first.
  • The "hold key" behavior does mess up people who like repeat keys enabled.
  • Why did you cripple digital color meter?
  • The "real life" look of the address book and iCal is a bit much, but I can deal with it.

TextWrangler Reminder

If you're getting started in programming, or you just need a way to sanitize text you copied before pasting it into a web editor, you will want to look at TextWrangler from the guys at Bare Bones Software.

While the interface is considered dated by some, it still has one of the best grep-based multi-file search and replace tools available on a Mac editor, and one of the best file comparison tools I've seen. It's also free, and available via the Mac App Store.



When do You Have to Buy Office?

One tool that no computer should be without is the one we typically call an "Office suite" - a collection of programs to manipulate words, numbers, and data so that we can present that information to other people. Microsoft Word, Excel, Access, Powerpoint, and Outlook are the gold standard for this. For years, companies spent hundreds of dollars for each copy - and frankly, many pirated copies - because they were the de-facto standard if you wanted to send files to someone else and have them be understood.

Office has withstood the onslought of Adobe's PDF standard, because you cannot easily edit spreadsheets and text documents once they are PDF files. Despite the foothold in the law community, Wordperfect is effectively an also-ran.

Yet, there are alternatives. On the Mac side, there is Apple's iWork suite and the OpenOffice - based NeoOffice. For mac, Linux, and Windows, Open Office and Libre Offic all try to capture the breadth of features and feel of Microsofts 800-lb gorilla. For most people, they succeed admirably, and given how well most convert documents in and out of the MS Office formats, there is little need for most people to buy a copy from Microsoft.

So why in this environment should anyone go out and pay good money for a suite that comes from Microsoft?


Google is making significant headway with its powerful online mail, document, and calendar sharing services. Nevertheless, it doesn't quite meet the power and flexibility - or cost, complexity, etc. - of an Exchange server, especially when it comes to shared contacts. Exchange is completely integrated with Outlook, and nothing else quite works so well for the people who need those features.


Office provides several ways for other programs to communicate with them. A number of programs - especially business or industry-specific ones, use these to create emails or documents from scratch including word processing and spreadsheet documents. Unfortunately, in this case, no combination of Open Office, Thunderbird, etc. are going to quite do the job.


Other office suites currently are very capable when exporting to or importing from the Microsoft document formats. Minor variations in formatting can creep up between different versions of the Microsoft suite (2003, 2007, Mac) as well. Nevertheless, when formatting fidelity, etc. is a must, the results are much better if you stick to the same software all around instead of converting between completely different document formats.

Your boss/school/etc. Told You to.

You can argue that "Exchange" or "Compatibility" also qualifies here, but if your boss, company, or school says to use office, well, then that's what you do.

In short

If no-one is forcing you. If you don't need complete integration with an Exchange server. If you don't need as close to perfect compatibility as possible with other MS Office users, or use software that requires Office to use all of its features, you may want to consider the cheap or free alternatives available to you. Otherwise, well, you need to bite the bullet and go get a copy of MS Office.