Greetings from mission control

I had a full-time Internet connection in 1997. The first thing I did once I got that working was to set my mail client to check my e-mail on a regular schedule instead of manually.

The second thing I did was turn off the alert that told me I had new mail. Of course I had new mail. I always have new mail.

Using a computer to tell you things you need to know, and how it tells you, have interested me for a long time. These topics are addressed in the article from the Sunday NY Times Magazine, Meet the Life Hackers, This has been so widely discussed in blogs that I probably read the whole article via scattered excerpts before reading the article start to finish. And we continued discussing it at the small but stimulating blogger meetup last night.

Quite some time ago, I had an e-mail conversation with Brent Simmons regarding the dock icon used for his excellent NetNewsWire. The dock icon shows a total count of unread articles as a badge, much as Apple’s Mail program does. This is fine, although I always feel a little guilty because my unread count is typically over 1000 (maybe I need to prune my subscription list a bit). We discussed ways to get more fine-grained information into that icon; I suggested using a compass-rose icon where each point of the compass would represent a specific feed or group of feeds, and its fill level and color saturation could be used to indicate unread count and recency.

In the Times article, a couple of sections caught my eye as being somewhat similar in spirit

Czerwinski proposed a third way: a visual graphic, like a pentagram whose sides changed color based on the type of problem at hand, a solution different enough from the screens of text to break through the clutter.

Another experiment created a tiny round window that floats on one side of the screen; moving dots represent information you need to monitor, like the size of your in-box or an approaching meeting. It looks precisely like the radar screen in a military cockpit.

In retrospect, I’m not sure if a multicolored compass rose is really all that important for keeping track of how far behind I am on my newsfeeds. But I do think that something along those lines could be useful in a more general way.

I’ve been experimenting with different ways of using my computer to tell me things lately. One widely-touted aspect of the latest version of OS X is Dashboard. Dashboard is almost right, but exactly wrong. Dashboard allows you to show widgets–tiny one-trick programs. These widgets generally break down into two categories: either they passively show you some piece of information (such as the weather or traffic conditions), or they actively let you manipulate information (such as a calculator or del.icio.us posting tool). The problem with Dashboard is that it is modal: either you’re viewing Dashboard, or you’re viewing the rest of your system. For “active” widgets, that’s not so bad. But for passive widgets, it’s dead wrong. I want to see my to-do list all the time. If I have to remember to take action just to look at my to-do list, I’m less likely to look at it.

Although Apple doesn’t make it easy, I decided to disable Dashboard almost immediately. Casting about for something that would remind me “hey, mom’s birthday is tomorrow” in a way I could not overlook, I revisited Konfabulator, a program that does almost exactly the same thing as Dashboard (about which I’ve written before), but whose widgets actually live on the desktop. I had tried Konfabulator a long time ago and wrote it off as a resource hog. Between my newer computer and perhaps better coding in Konfabulator, it seems to work with my system much better. I’m using it right now to show my calendar events and to-do list, and the weather, and that’s it. It’s not absolutely perfect for my needs, but it’s pretty good. I’ve also been intrigued by Stattoo — I like the fact that it has a more disciplined appearance on-screen, but find some of the modules to display too little information to be really useful–it omits a lot of extras that seem obvious and desirable; it is also severely limited by the fact that it apparently has no plug-in architecture. A slightly more fleshed-out version would be ideal–even though Konfabulator is free, I’d pay money for a sort of “Stattoo 2.”

Another feedback mechanism on the Mac, and one that is becoming widely supported and well fleshed-out is Growl. Growl was an outgrowth of the excellent Adium chat client, and can be used to show ephemeral blobs with the text of incoming instant messages–very handy. But it also gives me numerous other status updates–how long my cellphone calls last, when a blog entry has been successfully posted, etc. I frequently get e-mail from clients overnight, and want to know right away whether there’s anything I need to look at, so I’ve scripted Growl to show a little notification blob for client e-mails that persists until I make it go away. In theory I could use Growl to show upcoming events, although to-do list items might be trickier. I use sound as a mail notifier as well, with special chimes for mail matching certain criteria–I even have Mail speak the name of the sender when I receive mail from a friend.

In fact, Growl probably isn’t exactly the right tool for the job of showing ambient, persistent information–it’s more intrusive, its blobs of text float over everything else. Ambient, persistent information should probably sit under everything else–a murmur, not a growl.

Ideally, I’d probably corral all these visual notifications and status monitors into a separate display, or have a region of my main display roped off for just that purpose. Right now, that’s not feasible. I know that Microsoft’s Longhorn is going to have special support for subsidiary displays, although I suspect those won’t be exactly what I have in mind either. It’s obvious that my current setup, although it’s pretty good at presenting information in a way that’s ambient, unobtrusive, and pretty well customized to my needs, is still undisciplined (I haven’t mentioned all the various forms of notifications I get). The available tools generally seem to be moving in the right direction, though.

pictures

iPhoto is bundled with every new Mac, but I never really bonded with it. The way it maintains photos is grossly inefficient, and it doesn’t deal as gracefully with batch processes or metadata as I’d like. I always used Graphic Converter for that stuff, but I have to admit that it isn’t great for just organizing photos.

From time to time, I’d read that people using the current version of iPhoto found it much improved–indispensable, even. And with a 250-gig hard drive, I could tolerate some inefficiency. So I decided to give it a shot. Thanks to the Keyword assistant and Flickr export plugins, I can use iPhoto with a tolerably efficient workflow. I’ve managed to import, tag, organize, and upload a lot of old photos to my flickr account–check ’em out. More to come.

March of Progress

I recently got a new 20“ iMac G5. It’s very nice. I had been plugging along with my old Sawtooth since 2000, and felt I was past due for an upgrade.

While it is great having a faster machine, I’m more impressed by the industrial design of this thing. It’s like an abstraction of a computer, with the messy parts that make it work almost completely invisible (the outsized bezel and optical-disc slot are the only clues that there’s more here than a screen). When I show it to people who haven’t seen one before and point out ”that’s all there is“, they are dumbstruck. But pop the back off and the parts are laid out before you as if at a buffet table.

One grave annoyance with the new machine–the updated operating system, more likely–was printing. My old printer, which I’d had since 1995, had always been somewhat fussy, but now there were some documents that I simply could not print, even after trying many workarounds. I came very close to reenacting a scene from Office Space with it.

So after doing a little research (and getting a job I couldn’t print) I drove up to Fry’s yesterday and replaced it with an HP 1320. Now I can print. With my old printer, it was a bad sign when it started ejecting pages quickly–that meant that it was spewing postscript gibberish. The new one prints just as fast, but it is actually printing what I want it to print.

It’s also interesting to look at how the industrial design of printers has changed.

The Lexmark was a real workhorse. It weighed a ton. The whole top flipped up like the hood of a car, with a complex hinge and spring mechanism. The left side swung open to reveal the logic board. In short, it was designed for serviceability. It had a LCD screen with some buttons that allowed the user to control many of its output options (redundant, considering this can be done through the computer).

Since then, the big change in the exciting world of printers has probably been with inkjets, which have gotten very good, and are cheap enough to hand out as party favors. This has no doubt forced the laser-printer segment of the market to compete harder on price, and it shows in my new printer, which is much lighter. No LCD screen, almost no buttons, no easy access for service. It’s also much smaller and sleeker, and somehow manages to fit in a duplexer. And, of course, cost about a quarter what the old one did.

Macintel

I caught up with the big news a day after everyone else, since I was travelling. When I read it, my jaw sagged open, and I checked the date more than once, on the off chance that it was April 1.

I have mixed feelings about the move. The PowerPC architecture is, IMO, more elegant than the x86 architecture. And I believe that have more than one platform in circulation is good for the industry as a whole. But. There are a couple of big “buts”: Although PPC may be more elegant than x86, Intel seems to be better at actually making their chips run fast. Real-world performance beats out theoretical elegance 10 times out of 10. Also, MotorolaFreescale and IBM both seem to have bigger fish to fry than catering to Apple’s needs. Freescale obviously has had problems pushing the speed limit with their chips. IBM has done better, but apparently would rather make chips for video games than desktops.

Many people have wondered why–if Apple is switching to x86–they aren’t going with AMD. My own take on this is that Intel execs would rape their own mothers if doing so would take market share away from AMD. I would not be surprised if Intel is practically paying Apple to take its chips rather than have Apple turn to AMD. Supply lines, roadmaps, etc, all seem secondary to this.

I also wonder if Apple is going to use Itaniums (Itania?), and give Intel a way to get rid of some of them–they may be technically great, but have sold poorly because they aren’t x86-based. Since Apple is switching to a new platform, there’s no added penalty in switching to Itaniums (other than optimizing another compiler). Then again, Apple has hinted that people will be able to run Windows on their Macintels, which would mean that Itanium isn’t in the picture.

Technological slumming

Everyone knows that Lego-based movies are a medium for low-budget cinematic self-expression, covering every genre from politics to gay porn (of course, these days, the two aren’t that different). One particularly popular genre is Star Wars fanfilms.

And while there is certainly a big overlap between Star Wars fans and videogame players, and there have been many successful Star Wars-themed games to date, one thing that action games are definitely not known for is their humble production values. So what are we to make of Lego Star Wars, The Video Game? Here’s a game from a major developer that takes all that texture-mapping inverse-kinematic razzmatazz and puts it to work rendering…low-budget lego animation.

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
    try
     with timeout of 30000 seconds
      tell application "itunes" of machine theOtherMachine
       using terms from application "iTunes"
        activate
        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
     try
      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.

Shuffling along

Apple’s release of the iPod Shuffle created a lot of buzz, as would just about anything new from Apple. And it is interesting that Apple would take the interface they developed for the bigger iPods–which is one of the aspects of the iPod that really sets it apart–and rather than try to shrink it down to fit a smaller unit, simply discard it.

It’s interesting for reflecting the changing way we listen to music. It used to be that we listened to albums, sometimes with the liner notes laid out in front of us, and there were only about six tracks per side to remember before you had to flip the record. Some people would make mix-tapes, but that was fairly arduous. And of course there’s always been the radio. I get the impression (I can’t back this up) that more and more radio is talk, though, and the music programming that remains is increasingly narrow, with two conglomerates pushing uniform formats to radio stations all over the country, and very little variation within those formats. If you want to listen to something different now, you have to listen to something other than radio.

Apple was already partly responsible for changing the way we listen, thanks to iTunes and the iTunes music store. iTunes and programs like it make it trivially easy to rip your music to your hard drive and put together a mix CD, taking individual tracks out of the context of their original albums. Or listen to customized or randomized playlists at your computer (or on your iPod). And the iTunes music store (and other online music vendors) sell tracks individually, so you may never have the whole album to start with (and this has been a point of contention for some artists, who refuse to sell tracks individually). And of course there’s that whole P2P thing, not that I would know anything about that. The existence of collections like Massive Attack’s Singles 90/98, with four or five different mixes of a given song, mocks the idea of listening to an album straight through, and invites shuffling with unrelated tracks.

So I was initially dubious when I saw the iPod shuffle, sans display, but I realized that I already listen to a lot of music from my own collection without being able to identify what it is, so the lack of a screen might not be that big of a deal after all. Right now in my car, I have the CD changer loaded with 6 CDs filled with random stuff from my music collection. I suspect most runners, pedestrians, and people riding public transit or in cars don’t check the screens on existing MP3 players much. What is most interesting about the iPod shuffle is not that it innovates (deleting features isn’t exactly an innovation) but that it is the first to acknowledge reality.

MP3 Sushi

It’s getting pretty common to have all or much of your music on a hard disk. This in theory makes it possible to do all kinds of nifty things with it. One nifty thing is listen to it remotely. It seems obvious: if your computer is online, and your music is on your computer, you should be able to get at your music over the Internet. But how?

If you use a Mac, the answer is simple: MP3 Sushi. This is actually a bundle of open-source Unix tools packaged up with a nice Mac interface. It sets up a music server you can access over the web, with handy features like live downsampling of high-bitrate music, creating m3u streams, etc.

I’ve got a fixed IP number, which makes it a little easier, but there’s a solution for dynamic IP as well.

My music is online, but is hidden behind a password to limit access. Ask me if you want to listen in.

Overglobed

Memo to icon designers: Look. I get it. I’m on the Internet, and the whole world is all interconnected, and my computer is this global information nexus, and it’s cool. Do half my application icons need to remind me of this? My dock looks like a freaking warehouse full of UN flags.

These are all the globe-themed application icons I could find on my hard-drive in 3 minutes. There are a couple representing other planets as a bonus.

Date authentication

In the slow-motion controversy over the gaps in the record of GW’s Texas Air National Guard Duty, the latest wrinkle has been the emergence of some damning documents that some people are concerned might be forgeries. While I’d be delighted to see Bush publicly embarrassed for shirking his military duty, I have to admit that the documents do look suspicious, and if they are forgeries, whoever is responsible is really fucking stupid.

But enough about all that. This got me thinking: today in the electronic world, there are ways to prove that you are the author of a document. But is there a way to prove that you authored the document on a certain date?

Currently, I don’t think there is a verifiable way to do this. But I can imagine a system that would make it possible.

First, we need to review the general ideas behind public-key cryptography (often abbreviated PKI, for “public-key infrastructure”). Traditional cryptography encoded a text using a single key, and both sender and recipient had to have copies of this key. Moving the keys securely was obviously a very serious problem.

PKI solves this. Everybody has two keys: a public key and a private key. The operations of these keys are complementary: a document encrypted with one’s public key can only be decrypted with the private key. So anybody can look up your public key, and secure the document so that only you can read it. Conversely, a document encrypted with one’s private key can only be decrypted with one’s public key. This allows you to “sign” a document electronically: your public key can be considered well-known, and can only be paired to your private key, so if a document can be decrypted by your public key, that’s evidence that it was encrypted with your private key, and either you wrote it or you left your private key lying around for someone to abuse.

Another important concept is the “secure hash.” A secure hash is a relatively short string of gibberish that is generated based on a source text. Each hash is supposed to be unique for each source text. It is trivial to generate the hash from the source text, but effectively impossible to work out what the source text might be based on the hash. Hashes can be used as fingerprints for documents. (Recently, a “collision” was discovered in a hashing algorithm, meaning two source texts resulted in the same hash, but it would still be effectively impossible to work out the source text or texts from any given hash.)

Now, PKI is fine for authenticating authorship, but doesn’t authenticate date of authorship. Not without some help.

PKI relies on key-servers that allow you to look up the public key of other crypto users. Imagine if we set up trusted date-servers to authenticate that a document was actually written when we claim it was written. It might work something like this: An author wishing to attach a verifiable date of authorship to a document sends a hash of that document to a trusted date-server. The date-server appends the current time and date to the hash, encrypts it under its own private key, and sends it back as a “dateprint. The author can then append the dateprint to the original document. If anyone ever doubts that the document was authored on the claimed date, they can decrypt the dateprint using the date-server’s public key; this will give them the claimed date and the document hash. The skeptic then takes a hash of the current document and compares it to the hash contained in the dateprint: if they match, then the current document is identical to the one submitted for dateprinting.

Scroll to Top