I feel I’ve been caught with my pants down.

I read Merlin’s tweet this morning about his new podcast, Back to Work, with Dan Benjamin, but I was busy installing a new water heater (no, really1) and couldn’t watch the live feed.

[43f] Merlin’s New Thing with Dan Benjamin

Goes live in 15m at

10:40 AM Tue Jan 18, 2011

When the cutting and the soldering and the cleanup were all done, I went to 5by5 to see the show’s description. I was a bit surprised to see

  1. Merlin limited to just an hour and a half of talking; and
  2. A link to this here blog.

Now, Merlin has said some kind things about And Now It’s All This in the past, so it wasn’t like this was a bolt from the blue, but frankly things have been a little spotty here lately. It’s not that I’m embarrassed by my recent posts—I really liked the one about the Coke can pull tab, for example—but they’re mostly not aligned with Back to Work’s brief of “productivity, communication, work, barriers, constraints, tools, and more.”

And since Google Analytics tells me many of you are coming here from 5by5, I figured I should put something here you might be interested in. Unfortunately, I’m a little too tired and too under the weather to pop out a post tonight. So I’m going to cheat and repeat a post I wrote about a year ago. It was called “My script hall of fame” and should give you a sense of the stuff I normally do. There’s also the tag cloud and the popular posts list in the sidebar.

And for the regular readers, sorry about the repetition.

Many of my posts here have been about the writing—or rewriting or rerewriting—of scripts to automate the dull, repetitive, clicky-click tasks so common to computer use. While almost all of these scripts have been worthwhile, a few have proved so useful that I use them on a weekly or even daily basis. These are the member of my personal scripting hall of fame.

Folder labels

I like the project file folders in my office to have crisp laser-printed labels. There are plenty of templates out there for Avery labels and their clones, but they’re usually made for MS Word or some other program I don’t use. Also, there’s a lot of repetitive typing associated with those templates, and I obviously want to avoid that. So I wrote a script called pflabels that takes plain text input in a simple format and generates output for printing on a sheet of 1″×4″ labels (Avery 5261 or the equivalent).

The input looks like this:

#Kernighan Building|4215



Photographs and

#Ossanna Residence|4332


The headings, which have the project name and number separated by the pipe character (|), are denoted with an initial hash symbol (#), and individual labels are separated by blank lines. If I’m going to make several labels for the same project (which is usually the case), I need only enter the heading once. The script takes two options, -r and -c, which tell it which row and column to start on, so it can print on label sheets that have been partially used.

I generally type up my label input in TextMate and then run pflabels on that input via the Text>Filter Through Command… (⌥⌘R) command.

Screenshot uploader

This script, called snapftp:

  1. Takes a snapshot of some portion of my computer screen.
  2. Names it.
  3. (Optionally) resizes it.
  4. (Optionally) uploads it to my blog.
  5. Puts the URL of the uploaded image on the clipboard for pasting into a post.

I’ve configured FastScripts to run snapftp with the ⌃⌥⌘4 key combination, a minor variation on the Apple-standard ⌘⇧4 key combo.

There are certainly commercial products that do some or all of these things, but none are so perfectly tuned to my way of working. I can’t imagine going back to writing posts like this without it.

Markdown links in TextMate

I write almost everything in Markdown, mainly because I can forget about the formatting and just type, but also because it’s so easy to read. To keep the visual clutter to an absolute minimum, I use reference-style links, which puts all the URLs at the bottom of the document, out of the flow of the text.

I use three TextMate command/snippet/macros to do this:

The first two are described here, and the third is described here. They’re a bit complicated to set up but are wonderfully simple to use. I should probably turn them into a Bundle for easier installation.

URL getters for TextExpander

This started out as a set of scripts for getting the URL (or a shortened version of the URL) of the page showing on the visible tab of the frontmost Safari window, and the scripts were triggered by key combinations defined in FastScripts. Then, after seeing this tip by Jeff Gamet, I turned them into a set of TypeIt4Me snippets. When I switched from TypeIt4Me to TextExpander, I moved the snippet over and that’s what I use today.

The two workhorses are:

I tend to use the first when writing posts like this or email and the second when using links on Twitter. The great advantage is that I can add a link to a page I’ve been reading without having to switch back to Safari to get it.

More recently, I added a few more snippets for getting the URLs of the first, second, third, and fourth Safari tabs, regardless of whether they are frontmost.

Note: These snippets are now in a GitHub repository.

BBC Radio recording scripts for Audio Hijack Pro

These scripts, written in Python and AppleScript, differ from those described above in that I never actually run these scripts myself. They’re run automatically on a schedule set in Audio Hijack Pro, and they record and tag certain BBC Radio 2 shows and put them into my iTunes library for syncing with my iPod. In effect, they turn shows that aren’t podcasts into podcasts for me.

The scripts are described here and they’re also available in this GitHub repository.

Library loan tracking

This script, like the set of BBC scripts, is run automatically—in this case, by a launchd process. Every morning, it logs in to my local library and gathers information on all the items my family has checked out or on hold. It then sends that information to my wife and me in a nicely formatted email.

Now it’s true that my library emails us a notice shortly before an item is due, but the advantage of this system is that we see everything at once and can gather up all the books that will be due in the next several days before going to the library to make a return. And we don’t have to remember to sign on to the library’s web site; the information is delivered to us every day.

Note: This, too, is now in a GitHub repository.

Suspend and sleep screen

This is a pretty recent script, but I’ve come to love it. Without logging me out, it suspends my user session and puts the display to sleep. Seeing the Desktop swing around in that cube animation (which I’ve been a fan of since Andy Hertzfeld used a simplified version of it in Switcher) has become the visual signal that my day at work is over.

  1. OK, it was a water softener, not a water heater. I was tired and sick when I wrote this post and my fingers got ahead of me.