Five songs

I felt so energized by the last five songs that came up on my iPhone that I felt compelled to pause the music and share.

  • Contra la Corriente – Marc Anthony (YouTubeiTunesAmazon)
  • Boogie on Reggae Woman – Stevie Wonder (YouTubeiTunesAmazon)
  • Fever – Eva Cassidy with Chuck Brown (YouTubeiTunesAmazon)
  • Quitting Time – The Roches (YouTubeiTunesAmazon)
    • The YouTube link goes to a live performance. The iTunes and Amazon links go to the album version, which is what I was listening to, and which I like better, but I couldn't find it on YouTube.
  • Cry Me a River – Esther Phillips (iTunesAmazon)
    • NOTE! This is NOT the slow "Cry Me a River" with the line "I cried a river over you." This is a fast blues and it is electrifying. I am bummed I couldn't find it on YouTube. I suggest you preview it on iTunes or Amazon. If you agree it sounds electrifying, spend the 69 cents.

I guess I could have used affiliate links for the Amazon links above, but I was too lazy to figure out how. Not worth the effort anyway.

Passion

The next time you read a job listing that mentions "passion" — either yours or the employer's — stop for a moment. Mentally edit the writing to remove that word. Remove whole sentences if you have to; just get rid of that word. Would you agree the result sounds better?

The word "passion" really rubs me the wrong way. I'm not sure I can put my finger on a clear reason except that it sets off my BS alarm. I don't think it's just the fact that it's overused; something about it feels offensive.

I'd be more attracted by a job listing that appeals to values and beliefs. "We believe this is the right way to build houses, or sell vacuum cleaners, or design furniture." I can see how values and beliefs could translate into how an organization operates. Look at Fed Ex, which believes in "absolutely, positively"; you can imagine what that implies operationally. Look at The Container Store, which empowers all employees, every single one, to use their judgment and creativity when helping customers. Look at Apple, which believes in design, simplicity, and an integrated ecosystem. These companies are famous for their value systems.

True, an employer can just as easily BS about its "core beliefs" as about "passion". But at least in a job interview you can talk about beliefs. You can ask for clarification. It can be a two-way conversation where you learn something about each other.

When's the last time you asked an interviewer for an example of their passion?

Ten Cocoa words, plus two

At the last CocoaHeads I gave a talk about "The Top Ten Cocoa Words That Sound Dirty But Aren't". Ben Haller's web site has been the home for this list since 2003. I thought now would be a good time to give the list another home, so here it is:

  1. increaseLengthBy:
  2. insertBacktab:
  3. autorelease
  4. yank:
  5. stroke
  6. member:
  7. NSRectFill
  8. NSInsertionPosition
  9. toolTip

And the #1 Cocoa word that sounds dirty but isn't:

  1. knobThickness

Note that on Ben's site "stroke" is misspelled as "stroke:" — my fault for emailing it that way.

I added two bonus words:

  • touchUpInside (iOS only)
  • NSStopTouchingMeBox (a private class)

One of the stated goals of my talk was to beat this old joke to death. Having gone over the list many times in the last few days, I feel that I accomplished that goal at least for myself. However, this doesn't stop me from reposting two other jokes of mine that Ben posted:

Q: Where do IB users do all their shopping?
A: Target outlets.

Q: Why can't Cocoa programmers win presidential elections?
A: They don't retain their delegates.

Thanks folks, and please tip your waiter.

[UPDATE: I've posted source code for the demo app I used. The README contains links to Apple docs and further reading.]

Deviation from "clean"

Matt Gemmell on what he calls the "Critical Customisation Cost of Software":

Geeks are known to love configuring and customising their devices, but perhaps paradoxically they can also be reluctant to do so because of a compulsion to not deviate too far from a “clean” (and thus presumably safe, fast, efficient, known and well-tested) configuration.[1]

I'm part Felix, part Oscar. When I get a new machine and start customizing it, I'm just obsessive enough to document what I'm doing, so that my deviation from "clean" will be reproducible. But I'm not obsessive enough to maintain that document over time as I install more apps and tweak more settings. As a result I feel a constant nagging distress over how messy I've let my computer get — how far from pristine. I'm sloppy in other ways too, that I keep meaning to clean up One Of These Days.

I know this is irrational, but one thing that bugs me is apps that insist on being installed in /Applications. I don't like third-party apps getting mixed in with built-in ones. The Mac App Store has forced me to endure a bit of this discomfort. I used to put my third-party apps in special subdirectories of /Applications, named with leading underscores so they show up at the top in Finder. Now I put them in ~/Applications — the ones not from the Mac App Store, that is.


[1] One sign of my OCD[2] is that I checked the HTML source of Matt's blog post to see if he'd italicized the commas in "safe, fast, efficient, known", because I wanted to be sure to quote him exactly, down to the punctuation. I was glad to see he italicized only the words, not the commas.

[2] Like Matt, I don't claim to suffer from clinical OCD. I'm just using the term as a shorthand for the fussy side of me.

"Previous" and "Next"

I finally addressed a little thing on this blog that has bugged me for a long time. To navigate historical posts, there used to be links at the bottom of the page called "Previous Entries" and "Next Entries". I think the words "previous" and "next" are confusing to the reader because they overlap conceptually with the browser's Previous and Next buttons.

The terms can be confusing to a programmer as well. Here's a code snippet from the WordPress theme I'm using, showing two function names which combine with the link text to imply that "next" means "previous" and vice versa:

<div class="alignleft"><?php next_posts_link('&laquo; Previous Entries') ?></div> <div class="alignright"><?php previous_posts_link('Next Entries &raquo;') ?></div>

The word "next" in "next_posts_link" means "next" in the sense of "next page", if you imagine all posts grouped on pages in reverse chronological order. A lot of sites use this conceptual model, as you can see from links like mysite.com/archives/1, mysite.com/archives/2, etc. To a programmer, this corresponds to the idea of traversing a database cursor, where you've done a SELECT * FROM all_my_posts ORDER BY post_date DESC, and going to the "previous" post chronologically means going to the "next" row in the cursor.

A better choice for both the link text and the function names would be to use "older" and "newer" rather than "previous" and "next". I've changed the links on this site accordingly, and I've replaced "Entries" with "Posts" since that's the word I tend to use when I mention blog posts either here or elsewhere. This would also eliminate confusion if I were to change to a different WordPress theme that puts "Previous" on the right and "Next" on the left, as I've seen some sites do, adding spatial ambiguity to the semantic ambiguity of the words.

There are times when "older" and "newer" don't make sense, like when navigating pages of Google search results. In that case I think we're pretty much stuck with "previous" and "next" and have to live with it.

I've seen some sites that don't use words at all for their Previous and Next links. They use just the left and right angle-quote characters ("«" and "»"). Typically this is done when you get a row of page numbers, like this:

«7 8 9 10 11»

A variation uses double angle-brackets to mean "first" or "last", and single angle-brackets to mean "previous" or "next":

« <7 8 9 10 11> »

The usability flaw here is that one-character links are an extremely small click target. It's much easier to click the two links if they look like this:

Older7 8 9 10 11Newer

But this bugs me too. Somehow it doesn't look right. Maybe in this case "Previous" and "Next" really are better, and maybe they work better with "First" and "Last":

Previous7 8 9 10 11Next

First Previous7 8 9 10 11Next Last

You can see a sequence of page numbers, so it's clear the words refer to numerical order of pages, not chronological order. The reader still has to figure out the correlation between page numbers and chronology, but I don't see a way to make that easier.

I don't mind that the page numbers themselves are small click targets, because I suspect they are rarely used. I think most of the time the reader wants to go to the previous or next page, which is why those links must be easy to click.

Note that when the page numbers refer to historical pages, "left" means "newer" and "right" means "older" — the opposite of how "Previous" and "Next" often work when they are used alone (on this site, for example).