Thank You, Readers

I’m traveling for Thanksgiving this week and haven’t had much of a chance to write. But I should post something, right?

I just wanted to take a moment to thank you, my readers. 2012 has been a landmark year for the candler blog1 and I probably wouldn’t keep this project going if people didn’t come by to read it every once in a while.

So thank you. Have a great holiday and be safe on your travels.

Okay, enough of that. Back to tech and film and nonsense next week. (Or sooner, who knows?)


  1. That’s a topic I’ll swing back around to, I’m sure, as the year winds down and I get sentimental. ↩︎

New York Film Academy [Sponsor]

My thanks to The New York Film Academy for sponsoring the candler blog this week.

Animation in 3-D is not all about happy feet. Or Happy Feet Two, the movie.

Careers in 3-D animation are booming as the movie-going public and video gamers clamor ever more for the 3-D experience. But not every 3-D creation has Robin Williams providing a voice or the power of producer James Cameron (Avatar) behind them.

Students of 3-D animation, including those at the 3-D Animation School at the New York Film Academy, may well go on to careers in Hollywood working on features to entertain the young and the young at heart. But there are other applications of the art as well. These include visualization, used in education and business to communicate a concept. Even some court trial lawyers might use visualizations to show a jury how a particular thing works (e.g., to protect a patent).

But that doesn’t mean happy feet, toy stories or balloons that carry houses up can’t comprise the entire career of the 3-D animator. It’s an art form that taps the serious and playful – providing options for where the artist wishes can work.

Divorced From Music ⇒

Galaxie 500 drummer Damon Krukowski for Pitchfork:

As businesses, Pandora and Spotify are divorced from music. To me, it’s a short logical step to observe that they are doing nothing for the business of music—except undermining the simple cottage industry of pressing ideas onto vinyl, and selling them for more than they cost to manufacture.

Well shit; now I don’t know what to think.

Great piece that does a common sense breakdown of one musician’s personal experience in the industry. Too many great lines to choose from, in fact, like this bit about the aforementioned streaming companies:

These aren’t record companies—they don’t make records, or anything else; apparently not even income. They exist to attract speculative capital.

Brutal.

Permalink ↵

Borking Privacy ⇒

Peter Maass for The New Yorker, introducing a piece on privacy in light of the David Petraus affair:

In 1987, when Judge Robert Bork was enmeshed in a partisan struggle over his Supreme Court nomination, a reporter for an alternative weekly in Washington, D.C., got a tip that the judge was a patron of a local video store. Michael Dolan went to Potomac Video, in the western corner of the capital, and asked the assistant manager for a list of videos the judge had checked out. “Cool,” the assistant manager said. “I’ll look.” […]

After a bitter fight, the Senate rejected Bork’s nomination. One thing everyone agreed on, however, was that Bork’s privacy had been invaded. In 1988, Congress passed the Video Privacy Protection Act, making it illegal to release video lists without the customer’s consent to anyone but law enforcement, and then only with an appropriate warrant.

I had no idea that congressional outrage (and fear) over this incident led to the Video Privacy Protection Act, a law whose only relevance today is that it keeps Netflix from auto-populating your Facebook account with films you watch even though it does so for music you listen to.

Soon enough, though, the law will crumble, along with our right to opt-in privacy.

Permalink ↵

TextExpander Adds AppleScript Vocabulary, But Why?

Here was a nice surprise in my inbox this morning. The latest version of TextExpander (v4.0.3) released today, has the following tidbit in its changelog:1

Adds “expand” command to AppleScript vocabulary, allowing scripts to trigger expansion of a snippet

Now that’s a neat trick, and it works, but I can’t think of a single use for it. Yet.

TextExpander can already expand AppleScripts and Shell scripts, and it even allows you to nest snippets inside of snippets, a trick I take advantage of when composing link posts on this site. That’s already a few layers deep of nerd hackery. How can adding a snippet to an AppleScript, which already allows you manipulate and expand text and code, be of use? Anyone?

Anyhow, AppleScript wizard Justin Lancy was kind enough to get the ball rolling with the following script, sent my way by tweet. It’ll expand TextExpander’s stock “time” snippet.

tell application "TextExpander"
	set my_Snip to snippet "ttime" in group "TextExpander Snippets"
	expand snippet my_Snip
end tell

Oh, the possibilities.


  1. I can’t find it online. ↩︎

How I Use OmniFocus to Buy Groceries (Now With More AppleScript)

Even at my least productive, I have always used OmniFocus to organize my shopping lists. Sure, there are simpler, cheaper and more specifically attuned apps out there to help you at the grocery store, but I bought Omni’s GTD app thrice over and I want to get my money’s worth out of it.

A month or two ago I created a “Grocery Shopping” project template which I have been using in conjunction with a few contexts to get my shopping done a tad more efficiently. This past weekend I threw a perspective and an AppleScript into the mix. Basically I’ve taken (almost) every last bit of nuclear firepower hidden within OmniFocus to solve the problem of “why do I always forget to buy X?” Let me show you.

Template Hack

David Sparks wrote the definitive piece on templating OmniFocus projects nearly a year ago. He gives a step-by-step on how to use Curt Clifton’s Populate Template Placeholders script, but that’s overkill for what I need in a grocery list. In this case all we need is a blank project that we can duplicate when needed but is otherwise obscured from view. So here’s what we’ll do:1

  1. Create a new folder called “Templates”.
  2. Create a new Single Actions project in the “Templates” folder called “Grocery Shopping”.
  3. Right click the “Grocery Shopping” project and set it to “On Hold”.
  4. Right click the “Templates” folder and set it to “Dropped”.

Be sure to bring your View Bar up in OmniFocus, as your project and folder will likely disappear once you change their status. Simply set your Project Filter to All Projects and you’ll see your dropped folder and on hold project. In the future we’re going to duplicate the “Grocery Shopping” project and make it an active project.2

Actions All the Way Down

Next we’re going to take advantage of one of OmniFocus’s superb features: action groups. As The Omni Group’s manual puts it, action groups are “useful for keeping track of complicated projects, or breaking actions into smaller actions without creating a whole separate project.”

Grocery shopping isn’t that complicated, but it is relatively easy to break down into smaller actions. In our “Grocery Shopping” project (the one that’s still on hold), we’re going to first create actions for the aisles in the grocery store in the order in which you generally encounter them in the store. My list looks like this:

These are organized pretty close to the way I navigate the big grocery stores near me, but your mileage may vary. Reorganize or add to these as necessary.

When it’s time to go grocery shopping, we’re going to duplicate this project and fill in our groceries as “child” actions to these aisle names. To make that easier the next time we start adding groceries, we’re just going to put blank child actions for these aisles. The quickest way to add a child action is to hit return, which creates a new action, then ^⌘→ (control + command + right arrow). Just do that under each action and you’ll eventually have a project that looks like this:

OmniFocus Blank Grocery Shopping Project

Contexts FTW

Now that we’ve got the bones of our project, let’s use some Contexts to flesh it out. Create a “Grocery Store” Context in OmniFocus. I like to keep this nested in a Context called “Errands,” but you can keep it wherever you like.

This next bit may seem like overkill, but I can’t be the only person who prefers to shop at more than one grocery store. I buy most of my food at a big national chain, but the things I really care about (produce, coffee, etc.) I get at a fancy-pants (-ish) health food store. And still some other ingredients I may need to seek out a farmer’s market, or head to the flagship Whole Foods here in Austin, or go to the other big chain here in Texas. All of that is to say I have a context for each store nested in my “Grocery Store” context.

Now, let’s go back to our “Grocery Shopping” project. Select all of the aisles, right click them and set their default context to your top-most “Grocery Store” context. This will make it so that any action you create in this project will be given the “Grocery Store” context. The advantage here is that as you populate all of your aisles with items you need to pick up, they will all show up in your “Grocery Store” context. From there you can look over the list and decide which store you want to get certain items at and move them into place.

The Context Trick

There is some method to the madness of using a context at all beyond micro-managing where you buy bulk granola (as I do). See, your top-level actions, the aisles, won’t show up in your “Grocery Store” context view. You’ll only see the groceries you need listed in aisle order. This is especially useful when syncing with OmniFocus for iPhone.

Here’s a screenshot of my last grocery list in project view on my Mac:

OmniFocus Grocery Shopping Project Mac

And here’s the same list in the “Grocery Store” context on my iPhone:

OmniFocus Grocery Store Context iPhone

On the iPhone I have my view options set to “In Contexts, show: Available” so I don’t see the aisles listed. Now when I’m in the store I just walk from aisle to aisle, ticking off items as I go.

There is one final trick here though.

Calling Up Old Lists

Sometimes I honestly can’t think of a damn thing to buy at the store. Milk? Sure. Crackers? Um, anything else? The best guide for me is usually just my old lists, which should be easy enough to call up after they’re completed in OmniFocus, right? Not exactly.

OmniFocus, for whatever reason, is dreadful when it comes to searching projects by name. It can only search actions by name. The only way around this I could find is Rob Trew’s excellent Find Project Fast AppleScript. Trigger Rob’s script and a dialog box pops up, allowing you to search by project name. It’s impressive, but it takes a few too many steps since what I’m trying to do is repetitive. So I modified the script to open a new window showing completed actions for projects titled “Grocery Shopping”. This is done with the help of a Perspective in OmniFocus, also triggered by the AppleScript.

The first thing you should know about this AppleScript is that, without modification, it will only search for projects named “Grocery Shopping” and change the application’s perspective to “Grocery Lists”. There are instructions in the script itself for how to change those two parameters, but the easiest way to get this up and running is to keep your project and perspective names consistent with mine.

Show your Perspectives inspector in OmniFocus on your Mac by hitting ^⌘P (control + command + P). Create a new perspective called “Grocery Lists”. Set it as laid out in the screenshot below:

OmniFocus Grocery List Perspective

We only want to see completed tasks and projects, organized by completion date. That way when the AppleScript runs you’ll get a brand new window showing all of your old grocery lists with all of the completed tasks (stuff you bought) exposed.

I gave this modified version of Rob’s script a custom icon combining one of Omni’s own perspective icons with one of The Iconfactory’s excellent produce icons. To install it on your OmniFocus toolbar do is the following:

  1. Download Groceries.scpt.zip
  2. Copy Groceries.scpt to ~/Library/Scripts/Applications/OmniFocus
  3. Right click the OmniFocus toolbar and select “Customize Toolbar…” or go to the menu View > Customize Toolbar…
  4. Drag Script:Groceries to the toolbar

That’s it. Here’s what my the left side of my toolbar looks like now:

OmniFocus Groceries Toolbar Icon

Clicking the Groceries icon pops open a new window. As a semi-bonus, this will actually bring up the on hold Grocery Shopping template, making it a bit easier to duplicate, though there are some inelegant issues with doing it this way (you’ll see).

Next Steps

Okay. That’s a whole lot on how I buy groceries. There’s a bit more to my food workflow I may share another time, but first I’d like to see if anyone out there can help make this workflow a bit simpler.

I’d love to see an AppleScript that takes active tasks from anywhere, even the inbox, and moves them into the appropriate aisle/action group. This way, I can throw food that I’d like to pick up when I have a chance anywhere in my OmniFocus database. For example, I could put “Get Yogurt” in the Inbox, and an AppleScript, or something, could move it to Grocery Shopping > Dairy when triggered.

I don’t know if this is possible, but it would make this list creation even easier and, frankly, would be pretty darn neat.

Now, if you don’t mind, I’ve got some snacks to tend to.


  1. Anything in quotes can be called whatever you like, but to keep things consistent through this demo I’ll be using the terminology I use in my OmniFocus database. ↩︎

  2. You can skip the dropped “Templates” folder if you like and simply keep “Grocery Shopping” as a top level project that is On Hold. I keep it in a dropped folder because I like to check in on my On Hold projects every once in awhile, and I don’t like seeing templates pop up. There are a few other ways to skin this cat but, you know, this is how I do it. ↩︎

What Your Web Design Says About You ⇒

Ella-Raye Dickens at DesignModo:

When people ask me to describe the importance of web design – I often compare it to the front cover of a book.

I didn’t read this article because DesignModo looks like a shit sandwich. So you know, why would I take advice from someone who clearly has no respect for my eyes, my time or my intellect?

But…

There’s room for conversation on one point here. I don’t like the “cover of a book” analogy. Instead, when I’m designing a site, I think of it as a room that needs decorating.

In my home I want to feel comfortable and productive, without too much clutter. When possible I like to get furniture, artwork and paint that facilitates that feeling.

My site is my home on the Web. I want it to reflect who I am and, hopefully, be clean enough that when I welcome guests they’ll stick around for dessert.

(via The Loop.)

Permalink ↵

Racist Teens Forced to Answer for Tweets ⇒

Tracie Egan Morrissey for Jezebel:

There was an abundance of hate speech on Twitter after Obama’s reelection, with people hurling violent and racial epithets. Many of those tweeters were teenagers whose public Twitter accounts feature their real names and advertise their participation in the sports programs at their respective high schools. Calls were placed to the principals and superintendents of those schools to find out how calling the president—or any person of color, for that matter—a “nigger” and a “monkey” jibes with their student conduct code of ethics.

I am conflicted about Morrissey’s piece. It’s one thing to publicly shame dumb tweeters, as BuzzFeed, Reddit and the like do on nearly a daily basis. Hell, I’ve even done it. It’s another thing entirely to go after each one personally and make sure their educators know about their transgression. As if adults in general weren’t already an angst-inducing force, now the media comes a-knockin’ to tattle?

I’m not trying to excuse these pissants, but two lessons come to mind.

First off, I am part of the last generation to have grown up with a modicum of Internet privacy. My first experiences with the Web involved obscuring my identity while living large publicly by way of various usernames. Of course, that’s all changed, with online identities basically being opt-out privacy-wise.

As our lives move online, the whole world becomes fair game, even idiotic (and disgusting) teenage ramblings. Nearly all of the kids described in the article have since deleted their accounts. Perhaps Eric Schmidt’s creepy 2010 prophecy, that young people dicking around on social media will eventually have to change their names, will come to fruition sooner rather than later.

The other lesson is that, now that the ugliness of the election has passed, we need to come together as a nation whether we like it or not. The numbers and the tweets exposed by Jezebel don’t lie: a great deal of the United States is virulently, unapologetically racist. Morrissey’s solution, a public drubbing, won’t make a dent in the ideologies of the millions of Americans who still cannot accept a black man as President; in fact it will likely push them further out to sea.

If nothing else the article could serve as a means for discussion, and if people are confronting racism head on we just might have a shot of licking it. Or at least of helping a few kids change their ways.

Permalink ↵

Barack Obama And The Death Of Normal ⇒

David Simon’s take. Read it.

(via Daring Fireball.)

Permalink ↵

The Guardian's 2012 Election Graphic Novel ⇒

As Americans head to the polls to choose between Obama and Romney, catch up on the story so far and stay tuned for the final chapter.

Holy crap this is cool.

Permalink ↵