February 2005

Comments hosed

I’ve learned that comments aren’t working, for some extremely arcane reason that I have been unable to diagnose. I am preparing to switch to WordPress.

Later: Not exactly sure what I did, but comments are working now. Still contemplating a switch to WordPress.

Million Dollar Baby

Million Dollar Baby is one of the best movies I’ve seen in a long time, and one of the toughest to watch. The fight scenes have savage choreography–real boxers could never fight like that–but those scenes just soften you up (as if with a meat tenderizer) for the last part of the film, which is completely devastating. Do not see this movie if you have any plans to be happy for the next day or so, but it’ll give you plenty to think about. It’s a movie about many things, but at its root, I think it’s about looking at what loyalty means from different angles.

There’s no wasted motion. Clint Eastwood strips everything down to the moral consequences of one’s actions, and omits or barely sketches legal, financial, and everyday issues that would just get in the way of telling the story. The cinematography is equally economical and beautiful.

Putting tagging to work

I’ve previously noted the conversion of my sideblog to del.icio.us, partly so that I can take advantage of tagging. The whole tagging phenomenon has caught fire among the blognoscenti because it provides a quick and dirty–and effective and flexible–way to categorize content.

Technorati, the blog search-engine, has added a tagging facility–it finds del.icio.us entries, flickr photos, and blog entries with a given tag. In order to make these tags explicit, Technorati lets blog authors insert a rel="tag" attribute into a link in order to be treated as a tag by Technorati, though what many bloggers do not know is that as long as their software supports categories and/or keywords, and they are publishing feeds containing this data, Technorati will figure it out from that.

I’ve started assigning keywords to my posts, and am including all that data in my feeds. I’ve also decided to take advantage of Technorati’s tagging thing by creating direct links to its tag directories for each of my keywords. I’m still using categories as well, but I’m not creating Technorati links on category names–somehow it doesn’t quite feel right. Perhaps an information architect could diagnose my taxonomic malaise–all I can say is that tags are feel like they should be used to discover communal links; categories feel more idiosyncratic.

Anyhow, the result of linking to Technorati’s tag directories is something vaguely akin to trackback–it lets you see what other people are saying about the same subjects. It’s still somewhat primitive, but it’s a start.

It occurred to me that it should also be possible to extract links from a blog entry, search del.icio.us for that URL, find how other people have tagged it, and use the most popular tags as the blog entry’s tags, resulting in consensus tagging without even trying. There are some problems and interesting ramifications to this approach: 1) not every link I might use will be in del.icio.us; 2) I might not want to use the consensus tags; 3) the consensus tags will change over time–this, in my opinion, is the most interesting and most problematic part of the idea; 4) I’d have to do more programming work, and I’m lazy.

Strange fantasies of childhood

Gwen and I recently saw two movies that make a surprisingly apt pair: both about adult men obsessed with fantasies of childhood.

First, Finding Neverland. This is a fictionalized account of JM Barrie, the author of Peter Pan, and the writing of that play. It’s either very affecting or very schmaltzy, depending on what mood you’re in when you walk into the theater. I was initially in the former camp, but part of the movie’s power derives from the fact that it purports to tell a story of real people. When I later learned that it had taken considerable artistic license the facts of their lives, I felt cheated. Still, on its own merits, it’s a good movie. Not really for kids.

Second, In the Realms of the Unreal. This is a documentary about Henry Darger, a reclusive Chicago janitor who died in the 1970s, leaving behind an astounding 15,000-page saga, with 23 mural-sized illustrations that are masterpieces of outsider art. The man was so little known to his neighbors that there isn’t even a consensus among them on how to pronounce his last name. Darger’s story in itself is compelling, but the movie adds little to one’s understanding once you already know the basics of it. Although the murals get plenty of screen time, the treatment isn’t as deep as it could be–we never get a full view of them, what some of the stranger aspects of them might mean, etc. And in some spots, the filmmakers animated them (need to liven up the movie, I guess), which is a questionable artistic decision. As an introduction to Darger’s story and work, it’s not bad.

Barrie was fascinated with boyhood because boys haven’t lost the potential for imagination, or gained the burdens of responsibility. Darger, after enduring a very difficult childhood, created a fantasy world that recapitulated many of the worst aspects of it, perhaps initially as a way of working through difficult memories. But it clearly consumed him, to the point where it was not only more important than his everyday reality, it may not have been entirely distinct.

Multiple iTunes libraries, one music folder

What follows is a solution to a problem that has annoyed a lot of people for some time now.

Suppose you are in a household with two Macs. Each person has a copy of iTunes installed. They both want access to the same music directory, but they both want it to be part of their own library.

iTunes already makes it easy to share your music over a LAN, which is nice up to a point, but doesn’t give you much flexibility: you can’t assign star ratings to someone else’s music, make playlists, or load up an iPod with it. What you really want is for all that music to be yours (and all your music to be similarly available to your cohabitant).

Here’s the recipe. I’ll assume you have a LAN set up already.

  1. On each computer, go into System Preferences : Sharing : Services and enable “Remote Apple Events”
  2. Designate one computer as the “music host”; the other will be the “music client.”
  3. On the client, connect to the host, and mount the hard drive on the host that contains the iTunes music folder. Go into iTunes Preferences : Advanced on the client and set it to use the same folder as the iTunes music folder as the host (the one on the host’s computer)
  4. In the interest of good file management, you probably want to go into iTunes Preferences : Advanced on the host and enable “Keep iTunes Music folder organized” and “Copy files to iTunes Music folder when adding to library”. However, on the client machine, I think you will need to disable these (otherwise multiple computers will contend over where and how the files should be organized). If the client already has music files stored locally, relocate those files to the host and remove them from the client. Add those tracks to the library of the host computer manually.
  5. Find and remove the files “iTunes Music Library” and “iTunes Music Library.xml” (or create an archive of them) from the folder ~/Music/iTunes on the client machine. Manually add all the tracks on the host machine to the client’s copy of iTunes by dragging the into the iTunes window. For very large collections, you should probably do this in chunks (iTunes seems to get confused otherwise). I added all the artists starting with A at once, then B, etc. Took a while, but it worked.
  6. Now both users have access to the same music directory, can make their own playlists, set their own ratings, load up their own iPod, etc. The problem is that the situation is static–if anyone adds a new track, things get out of sync, and only that user will have access to that track (without additional futzing).
  7. That is where the following mystical-magical script comes in. This was pretty much written by “deeg” (with some nudging from me) in the Applescript for iTunes forum at iPod Lounge.
    (*=== Properties and Globals===*)
    property theDateofLastSync : "" -- date of last sync
    property theOtherMachine : "" -- ip address of other machine
    (*=== Main Run ===*)
    if theDateofLastSync is "" then set theDateofLastSync to ((current date) - 1 * days) -- force date of last sync to sometime ago for first run
    if theOtherMachine is "" then
     display dialog "Please enter address of other Mac" default answer "eppc://"
     set theOtherMachine to text returned of the result
    end if
    -- chat with other machine
    set GotsomeTracks to true
     with timeout of 30000 seconds
      tell application "itunes" of machine theOtherMachine
       using terms from application "iTunes"
        set theListofTracks to location of file tracks of library playlist 1 where date added > theDateofLastSync
       end using terms from
      end tell
     end timeout
    on error
     set GotsomeTracks to false
    end try
    -- back to this Machine
    set SyncedOK to false
    if GotsomeTracks then
     set SyncedOK to true
      tell application "iTunes"
       if (count of items of theListofTracks) is greater than 0 then
        repeat with alocation in theListofTracks
         add alocation to library playlist 1
        end repeat
       end if
      end tell
     on error
      set SyncedOK to false
     end try
    end if
    -- save sync date if all ok
    if SyncedOK then set theDateofLastSync to current date
  8. Copy this script and save it as “sync libraries” to the directory ~/Library/iTunes/Scripts (if you don’t already have a Scripts folder there, create it). Relaunch iTunes and it will be available under the Scripts menu. You can now run this script manually on each computer to update its library against the host. Better yet, use a timed macro (or cron job, which you can set up easily with cronnix) to launch the script in the wee hours. This assumes that each computer will be turned on when the script executes.

Additional notes:

  • Assuming that different computers will have different user accounts, you will need to specify the other user’s username and password in the “please enter the address” dialog that appears when first running the script. The URL format looks like this: eppc://username:password@machinename.local I’m not sure how to deal with spaces in the computer name (perhaps a backslash \ before the space–my machines all have one-word names; you can change the computer’s name in System Preferences : Sharing).
  • Likewise, it should be possible to sync libraries between two user accounts on a single machine using the above format. This probably requires that both users are always logged in (using Fast User Switching).
  • This script only works for one host and one client. It should be possible to modify it to deal with multiple clients. I will leave that as an exercise for the reader.

Update With recent versions of iTunes, this is all redundant. Although it’s not entirely automated, there is a much simpler way to deal with this problem.

As above, treat one Mac as the host and one as the client. On the client, go into Preferences:Advanced and make sure that “Keep iTunes music folder organized” and “Copy files to iTunes music folder when adding to library” are both unchecked. This is important.

Make sure the host’s disk is mounted on the client mac. Again, in iTunes, select the menu item “File:Add to Library…” and select the music folder on the host disk. This will scan the entire directory and add all the files to the client’s iTunes database. The client’s database will need to be updated whenever new files are added on the host (new files should only be added on the host); to do this, just repeat this process. It takes a few minutes.

Pardon the dust

The upgrade to MT3 has been going less than smoothly. I’m starting from scratch, with a new blog and old data. I’ll gradually be adding back in features of the old blog.

Hill Country Ride for AIDS

I’ve signed up to do the Hill Country Ride for AIDS as part of Team Soup Peddler (for those of you who missed it, the Soup Peddler himself was the officiant at Gwen & my wedding). I’ll be very grateful to anyone out there in TV land who is interested in sponsoring me (yes, it’s one of those fundraiser things).


I just got hammered by a trackback spammer (I wonder if that recent Register article had anything to do with it). Trackbacks are offline until I get this sorted out.

Later — updated to MT3