App Store Customers Are Neither Bad Nor Good by Default

Garret Murray’s most recent post on his blog, the land where posts do not have titles, is about what happened last week with his (lovely) application, Ego. In it, he basically vents about being a single developer caught between a rock (customers angry that something stopped working) and a hard place (Apple’s arcane approvals process). His frustration is completely understandable with regards to Apple, but I think his larger concern is wrong. In the post, he says this:

This kind of thing continually reinforces something I’ve thought about a lot since the App store was released, which sounds horrible to say but it might be true: Apple is creating an ecosystem of the kind of customers I don’t want.

John Gruber thought it important enough to link to the post using that link as illustration, with the title “Are App Store Customers Good Customers?” This time, though, I think the question is already answered: No, not realy. But the App Store doesn’t create Good or Bad Customers, either. Sturgeon’s Law just as well here as anywhere. What the App Store does do is make it very easy for a user to complain when the mood strikes them.

It’s hard not be frustrated when you have to wait for something beyond your control, but the simple facts are these:

  1. Garrett charged money for an application.

  2. The amount of money is irrelevant.

  3. The application sold Google Analytics support in the same breath as support for other applications that have solid developer APIs

  4. In doing so created an expectation that GA support was “stable” and “not likely to break at the whims of Google with no warning.”

  5. You cannot blame any customer for being angry when that happened.

Do I agree that the users leaving many of these comments are probably huge assholes? Yes. Could Apple do more to mitigate the costs for Developers when something goes wrong? Yes. But the frustration that made Mr. Murray write his blog post is the very same kind of frustration that made those customers, assholes or not, write their negative reviews.

More users means more sales means more assholes.


“What’s The Twitshirt Thing?”

Twitshirt launched yesterday (16 April 2009) and provide a service that I’m sure many people would/will give their patronage to: The printing of individual tweets on t-shirts, on-demand. Since the t-shirt is the defining medium of this generation, and vanity publishing is in full vogue, it only makes sense that a business model which combines the two could succeed, and handily. They kinda fucked it up, though.

The problem: Twitshirt did not ask permission to sell the words of the authors of the tweets they printed. The author could opt-out, but that is at best a poor solution. It, without question, should be opt-in.

Today is down with a message saying, “We’ve heard your feedback-thank you. We’re reversing the polarity.”

Admitting one is wrong is not an easy thing to do, especially in public. Hopefully a relaunched Twitshirt will do what it should’ve in the first place: ask.


Presenting Software Features and Understanding User Unrest

Adding features to applications is a constant trade-off between opposing forces. Sometimes adding to or changing software can be a hinderance both to the user and the developer in several ways.

Ego, Garrett Murray’s excellent iPhone application, was blocked by Google Analytics yesterday. Since support for GA is one of Ego’s advertised features, paying users are understandably upset. Garrett is a good developer, and I’ve been using his software for years (his application xPad was one of the first non-Apple bits of Mac software I ever purchased) but I think much of the user reaction to this issue was predictable and preventable.

Unlike many of the other stat-tracking widgets used in Ego, Google Analytics does not have an official API with which developers can retrieve data for use in applications. This means that to get the data at all, Ego has to use what I’d (not at all disdainfully) classify as a “hack”; Getting at useful information in an unsupported way. The problem with this is that the average user has no reason to suspect that Google Analytics portion of his $2 iPhone application may stop working without any prior warning. This is a case of the classic “stopped working for no reason” that developers hear all the time. There is a reason, and it’s a pretty simple one, but the user has no frame of reference for it. What’s more,the user has absolutely no reason to know the reason. It’s not their job. They just saw a feature list and clicked buy.

Here’s a screen shot of the features section of the Ego application page on the iTunes store:


You can see here that the Google Analytics feature is listed right next to services with officially supported APIs, such as Feedburner and Twitter.

What this says to the user is “these features are equal, and just as likely to work” which we now know isn’t the case. A lot of applications do things like this, and the intent isn’t malicious- the average user just genuinely doesn’t know and doesn’t need to know what an API is, or what has one and what doesn’t.

Since there is no “official” way to include Google Analytics data, the GA widget is a trade-off between feature set and usability. Unofficial means that it’s more likely to stop working “for no reason.” Unofficial means that Google can change whatever they like whenever they like, and you just have to eat it, like Garrett is doing now.

He’s is obviously a smart guy, and I’m sure he weighed the pros and cons of including support for Google Analytics in the first place, but I’m also pretty sure he’s second guessing that decision at least a little bit today. This isn’t to say that he made the wrong one- I don’t think he did- but that the way in which application features are presented to users create expectations for those features that may have unintended consequences for developers.


On URL Shortening

URL shortening has been the subject of much discussion recently, and there is one big reason: Twitter. Twitter has exploded in usage in the last 6 months, and with that has come a sharp increase in both the number of and use of third-party URL redirection services., TinyURL, Twitpic, and the rest, are just some of the major players in the space. All of them provide similar functions but suffer from the same problems, some of which are outlined below.

The purpose of this isn’t to indict these services, all of which grew out of the need for something very much like what they are. I think that by outlining the issues and benefits, we can gain a better understanding of why we need URL shortening / redirection, and what can be done to improve the practice.

Problems that URL Shorteners Solve

This is what they’re good for.

The Problem of Memorability.


The removal of many “slash”es and a “tilde” makes this URL much more accessible. When spoken aloud, the URL is easy to keep in mind. “go to this page.”

The Problem of Awkward or Ugly


The link is now more aesthetically pleasing, won’t be as confusing to the tech-unsavvy, and won’t give most URL formatting scripts headaches.

The Problem of Length


It’s now shorter, and affords the writer more space on Twitter or in an SMS to comment on the link. The Amazon link in the second example, with a total of 181 characters, wouldn’t even fit in an SMS, or Twitter message.

These are legitimate problems, and each pops up in different circumstances. Memorability is primarily an issue when using free webhosts that do not provide each user a unique domain name, with sensible URLs. Awkward/ugly is an issue with many online shopping services that collect tons of referral and other link data. Length becomes an issue when using a micro-blogging or SMS service, like Twitter. These problems often “stack”, and co-exist.

Problems That URL Shorteners Create

Reliance On A Third-Party

What happens if your URL shortener of choice goes out of business, or changes their URL format some day? It is not out of the realm of possabiltiy that TinyURL, or any of the major players in URL reduction could go the way of 1000s of other web companies. As of today, claims to have created over 200 million shortened URLs. 200 million is a lot of dead links that could be avoided. Even if the service goes down for a short time, these are visitors and readers and customers that need not be lost.


One of their prime drawbacks of URL shorteners, this is used for comedic effects by some. The spread of the Rick Roll might not have gone so well if not for the semi-anonimity created by these services. In recent years some (TinyURL, for one) have provided a “preview” mode to guard against obscene or otherwise untoward usage. This is fine, but it isn’t a solution to the real problem. Without context, a URL that starts with could literally go ANYWHERE on the internet. Even with a custom name (e.g. there simply isn’t enough context to know what kind of thing you’re clicking on.

Unnecessary Strain On Networks

This is one is a bit less of an issue right now, but it is gaining steam: The dozens of free, url redirection services are causing network congestion by adding an extra HTTP request to every URL that is processed by them. One by one these are not problems, but by the millions they can make a notable dent in networking throughput, strain on hardware, and eventually, increased costs of keeping networking hardware healthy. Compounding this problem is the recent trend of Twitter clients to “expand” shortened URLs and provide the user with the destination URL, which creates even more unnecessary networking overhead.

My Solution To Some of The Problems Presented Above

Obviously, I can’t just say “stop using URL shorteners”. Nobody would listen, and besides, sometimes URL shortening is necessary or  just convenient. What I’m proposing is that you provide your own shortened URLs.

Use my WordPress plugin la petite url, or another short URL plugin. There’s a Django app, too. Providing a Twitter/SMS-friendly URL format for your visitors and users gives context to your links that would otherwise be lost. The URL is not as context-rich as but it is markedly better than or even At least the user an idea about where the link they’re seeing might take them.

This is not a perfect solution, and I’m aware of that. If your web site’s URL is especially long, then serving shortened URLs from it will not be useful. In most other cases, serving your own shortened URLs is an option can solve the problems of third-party reliance, length, and obfuscation quite nicely.


The Safari 4 Beta, Titles, and Ownership Of The Close Button

Safari 4’s public beta has a lot of problems, and while it is “beta” software, I have a feeling that many of it’s biggest usability problems are set in stone. For a company as large as Apple, who releases software how Apple releases software, the “Beta” label means that “we’re pretty close to done, here”. They aren’t going to change the UI very much. Stuff like the awful “tabs-in-the-titlebar” is most likely not going to go away. There are some big issues, and to me, these are the biggest:

At A Glance, The User Cannot Easily Find The Title Of The Page They Are Currently Reading

In versions of Safari previous to 4, the tabs were organized in the (thus-far) standard way: below the menu and title bars, like this:


While not optimal, it works. Like any other application, the user can simply glance at the top of the current window to see the title of the page/document they are currently browsing. For comparison, here is a screen shot from Pages, a part of Apple’s iWork suite:


The current document’s name is presented in the top, middle, of the window. This is, as far as I’m concerned, Good. Some might see this as a bad comparison. Pages does not group disparate documents into a single window, like Safari does. That is beside the point, here. The point is that this is what users are used to, because it is how it works in nearly every other application.

Safari 4’s new tabs create this terrifying labyrinth, similar to Google Chrome:


Since the tabs are organized not by any set criteria, but simply by the order they were opened in (or a later, user-defined order, which may be just as informal), the user must now distinguish between not only the two type of tabs (the currently active one and the inactive ones) but having done so, has to hope that the title fits within the tiny space alloted to each given page, active and not. You can see how this gets a little crazy if you’ve got more than 2 or 3 tabs open, or Cthulhu save you, multiple Safari 4 windows open. This is Bad. It’s so bad, in fact, that I hope it’s just some kind of placeholder.

The Window Controls Look As Though They “Belong” To The Left-Most Tab In Any Given Window

Again, Safari 3, this time the top left of the window:


The window controls (Close, Minimize, Maximize), while they are integrated with the title bar, are clearly part of the window itself, and not any one tab. Now let’s have a look at Safari 4 again, this time the top left part of the window, with the new-style tabs:


What is the average user meant to make of this? There are now, effectively, two “close” buttons in close proximity to each other, neither of which is separated from the left-most tab. Their icons are different, but not so different that one could easily tell which is which without knowing a whole lot more about the Mac OS than any random user does.

There is plenty more in the Beta that is worrisome, but these are the two big ones, for me. I hope that by making my issues public that it will push Apple to re-consider some of the planned changes for Safari 4’s release, though I doubt it very much.


This Isn’t Pop: When Video Game Music Inspired By Popular Music Is A Little Too Inspired

This is a post carried-over from the blog archives on, my previous site.

Video games have a long and storied history of borrowing heavily from popular music. This post will be updated with samples as I get them suggested to me, which you can do using the information above this post. In each case I have used less than 20 seconds of the songs in question, which I believe to be covered under fair use. If you want to hear the whole song, buy it. I will not provide you with any of them, so don’t ask.

Mega Man X2’s Neon Tiger Stage Music .vs. Guns n’ Roses’ “My Michelle”

Here is the audio file for comparison. First you will hear a snippet from Neon Tiger’s theme, then a small pause, then a snippet from My Michelle. You can, of course, purchase the Guns n’ Roses album Appetite for Destruction from This, and the following two suggestions, come from this blog post.

Mega Man 1’s ElecMan Theme .vs. Journey’s “Faithfully”

Here is the audio file for comparison. Again, you will hear ElecMan’s music first, then a pause, then Journey. You can (and I encourage you to) purchase Journey’s Greatest Hits album from Amazon.

Mega Man 2’s Flash Man Theme .vs. Chicago’s “I’m A Man”

Here is the audio file for comparison. You can purchase Chicago’s Greatest Hits on Amazon. It’s a good investment.

Robo’s Theme (Chrono Trigger) .vs. Rick Astley’s “Never Gonna Give You Up”

Here is the audio file for comparison. Yes, it was only a matter of time before this descended into a Rick Roll. This one is a bit more tenuous, but it’s definitely noticeable. I would say it’s more of a case of borrowing than the previous tracks, which are a bit more blatant. I heartily suggest you purchase Chrono Trigger if you have never played it. It’s my favorite RPG of all time. The composer of the piece, Yasunori Mitsuda, also did the soundtrack for Chrono Cross, which is one of the most lush and beautiful game sound tracks ever.

Teenage Mutant Ninja Turtles (NES) Stage 5 Overworld .vs. The Beatles’ “Come Together”

Here is the audio file for comparison. This is another fairly blatant one, though it’s got some nice touches, and is part of one of the great Konami NES soundtracks.

DOOM (1 & 2) .vs. Various Metal Bands

Here’s a youtube video comparing various songs from the smash-hit first person shooter DOOM to various songs from the likes of Metallica, Pantera, et. al.

Wild ARMs Overworld Theme .vs. Ennio Morricone’s “The Ecstasy of Gold”

Here is the audio file for comparison. This one is maybe the most blatant thus far, especially considering the desert context. Morricone wrote the scores for many great westerns, most famously The Good, The Bad, and The Ugly.

California Games (NES) Title Theme .vs. Louie, Louie

Here is the audio file for comparison. I have a feeling that the basic structure of Louie, Louie is subject of a lot of game homage. Louie, Louie is a most infamous song, with the version done by The Kingsmen making them the subject of an FBI investigation.


Phil’s Dry Rub Recipe For Pork Chops

I find using a teaspoon makes plenty of rub, which you can just mix in a tupperware dish and save for next time. It should go without saying that you need to dry your chops before applying.

  • 2 parts paprika
  • 1 part chili powder
  • 1 part brown sugar
  • 1 part salt
  • 1 part ground black pepper
  • 1 part ground cayenne pepper
  • 1 part cumin

Combine and mix thoroughly. Apply to chops about 15 minutes to 1 hour before cooking. Store in fridge for desired amount of time. Remove and grill, pan fry, or bake. Works well for steak, also.


No Zombie Is Safe From Chicago Ted

As if it wasn’t already easy to love Left 4 Dead, they give me this:

My friends The Urinal Mints have a song titled “Chicago Ted

According to Urinal Mints frontman Garth Plinko, the phrase stems from a message he (and apparently many others) had read scrawled on a bathroom wall, ending with “No bitch is safe from Chicago Ted.” The Internet’s own Seanbaby reported this phenomenon many years ago.

The Urinal Mints were also featured on issue 6 of Warren Ellis’ podcast, the 4am.


Formatting An SD Card Fat-16 In Mac OS X For Wii Homebrew

If you want to try out the Nintendo Wii Homebrew Channel, you’ll need to do the Twilight Hack. To do that, you need a Fat-16 formatted SD card. Here’s the command to format the card on Mac OS X (1.5 and 10.6):

diskutil partitionDisk /Volumes/WII 1 MBRFormat "MS-DOS FAT16" "WII" 1000M

Where WII is the name of the drive. The 1000M at the end is how big you want the partition to be, but if the card only has one partition, it will use the whole card, anyway.


How To: Change Your iPhone’s Root Password

This post has been removed for being out of date and out of the scope of information this blog now seeks to provide. If you got here by way of a search engine or link, my apologies.


How To Back Up Your iTunes Music With rsync On Mac OS X

Update: This is confirmed as working on 10.5 (Leopard) & 10.6 (Snow Leopard).

The average Mac user probably doesn’t mess much with the powerful (but almost entirely un-friendly) Unix underpinnings of OS X, nor do they generally need to. Sometimes, though, the tools provided in the shell are so useful, that it’s worth taking the plunge. Keeping a good backup of your iTunes music folder is, in my opinion, one of these times. To do it, we’re going to use one single line of code, and a unix command-line tool that is built-in to OS X: rsync.

This tutorial makes a couple of assumptions. Firstly, this might work on versions of OS X before 10.4 Tiger. I haven’t tested it, so I really don’t know. So we’re going to assume you’re using 10.4 or newer. Secondly, I’m going to pretend that you’ve kept iTunes at it’s default setting, and it is keeping all of your music files where it usually does (in /Users/yourusername/Music/iTunes Music). Third, I’m going to proceed as if you want to back up your music from one drive to a second drive. It doesn’t matter if it’s external or internal, beefy firewire enclosure or USB thumbstick. So long as it has enough space. For simplicity sake, I’m going to call them Main Drive and Backup Drive. Let’s go.

Step 1: Set Up Your Directory

The first thing we need to do is make a directory on your Backup Drive to keep your backed-up music in. Open the Finder, and click on your backup drive in the sources list, on the left. The sources list looks something like this:

Sources List in 10.4

Click on whichever drive you want to use as a backup, and create a new folder there (command+shift+n, or click File and New Folder in the Finder menu). Call it “Music Backup”.

Step 2: The Cool Stuff

Now we’re going to use the Terminal. Open the Finder, and navigate to Applications -> Utilities and then double-click the Terminal application. It’ll open up and give you a nice blank screen. I’m going to show you the command we’ll be using, and then I’m going to explain it. It won’t take long. Here’s the command:

rsync -rvv /Users/yourusername/Music/iTunes /Volumes/Backup\ Drive/Music/

We’re calling the command rsync, here, a very quick and powerful synchronization tool. The -rvv tells rsync to recursively go through directories, and be very verbose. Very verbose means it’s going to tells us what it’s doing for every single file it goes through, so we can make sure it’s running smoothly this first time. The next time you run this, you can safely omit the vv part without worry.

Here’s how we build the command: In your terminal, type in rsync -rvv. The space after -rvv is important. Now, open up your Finder window, and click on the Music icon in the lower left. This will bring you to your music folder. There should be a folder here called iTunes. Click on the iTunes folder, and drag it on top of your terminal window, and release. OS X is so clever that it automatically copies the directory’s path into the terminal window for you. In your terminal window, put a space after the directory name that’s just been added, then, using the Finder again, navigate to the Music Backup folder we made in step one, and click and drag it onto the terminal window in the same way. It should, again, look something like this:

rsync -rvv /Users/yourusername/Music/iTunes /Volumes/Backup\ Drive/Music/

Take a second look to make sure your terminal looks like that, and then hit he return key. If it works, you’ll see rsync dumping it’s output onto the screen very quickly, and you probably won’t be able to read it. If you’ve got a lot of music, this could take many minutes. A beer may be in order. When it’s done, it will say something like this, and stop scrolling:

sent 5743531756 bytes received 11640 bytes 15976476.76 bytes/sec

total size is 61611466477 speedup is 10.73

What the actual numbers say isn’t important for our purposes. That just means it’s done. To make sure everything worked out okay, you can open your Music Backup folder in the finder. It should have all sorts of stuff in it, now. If all went well, your music is backed up, and you can close the terminal application.

That’s It

Yep. Simple, eh? The coolest part is, each time you run it from now on, it only copies the files that have been changed, drastically reducing the time it takes to back things up. rsync also has the capability to back things up from remote servers (like a web site, or another computer of yours), which you can learn all about in the documentation. For now, though, you can just enjoy the security of knowing that the odds of losing your entire David Bowie collection are effectively halved.