Yearly Archives: 2008

The Wii fad, 2 years later

Video game console sales numbers for November are in. Two years after the Nintendo Wii was introduced — you know, the console that was derided as a gimmick, a fad, just a faster GameCube — the little white console still outsells the Xbox 360 over 2 to 1. It outsells the PS3 over 4 to 1. (“Here’s a 4cr post”: with official numbers.)

The doubters were so wrong about this one. The fans and industry experts who were quick to sell Nintendo short kept waiting for a fail that never happened. If you go into a Best Buy right now the video game section is completely owned by the Wii and DS.

Not everyone can take a risk and have it pay off so well, but it’s at least important to acknowledge that conventional wisdom and focus groups (what “everyone” knows) would have doomed Nintendo. The trick is being able to tell when you’ve got an idea that is truly special, and not just something you are clinging on to out of a stubbornness to be different.

In related news, I imported a “Nintendo DSi”: from Japan last month and it’s a great rev to the portable system. It would be even better if I could read Japanese.

The 99-cent message

Forget the developer perspective for a minute. Even as a user I find the race-to-the-bottom iPhone price drops completely maddening. I’ve bought apps for $5 and $10, and now many of those prices have either been cut in half or lowered to 99 cents. I felt like I got my money’s worth at the higher price, so I’m not complaining that I was ripped off. Instead, I just feel like a fool.

But I’ve learned my lesson. The message from developers could not be more clear. Apparently the way to buy iPhone software is just to wait a month for the price to drop.

I realized this week that I don’t consider myself an iPhone developer. Technically I’ve paid my $99, but I’ve scrapped all my ideas except a prototype I’m working on for “VitalSource”:, and even that I expect someone else to finish and bring to market. If I was an independent iPhone developer I’d be furious at the instability of pricing on the App Store. Even to users it looks like chaos.

Small icons

I mentioned on “Core Intuition”: episode 11 that I’ve been having fun making small icons for my new app. Here are a few partial screenshots:


Some of these are just pixel-by-pixel drawings, with slight gradients in places. For other parts of the user interface I used vectors in Photoshop, which gives a nice anti-aliased look that is important for some types of shapes, but for really small icons and widgets it’s pretty satisfying to just poke at things “fat bits”: style.

“Gus Mueller”: pointed out that I should be using PDFs or drawing them in code to be ready for resolution independence. He’s right of course. Maybe Apple will announce a device at Macworld that will make that task seem more practical.

Family packs

I rolled out “family pack” pricing for “Wii Transfer”: over the weekend. I had to make changes to my custom PayPal integration scripts to support it, and I also modified the product page to use a simplified checkout (no standalone store page). Pretty straightforward.

I was less sure about pricing. A quick survey of other Mac developers yielded results like these (normal price / family price — all of these are for 5 users):

“Radioshift”: $32 / $59

“Yojimbo”: $39 / $69

“Hazel”: $21.95 / $39.95

“iLife”: $79 / $99

“Bento”: $49 / $99

“TextExpander”: $29.95 / $44.95

“MoneyWell”: $39.99 / $69.99

Additionally, some companies don’t have a family pack, but offer discounts for multiple copies:

“Acorn”: $49.95 / 2+ (20% off)

“On The Job”: $24.95 / 2+ (20% off)

“BusySync”: $25 / 5+ (10% off)

“Transmit”: $29.95 / 10+ (10% off)

So 5 copies is the standard for family packs. My original idea was 3 copies for $29, so I threw that out. Five copies for only 50% more seemed way too cheap, especially since Wii Transfer is already the least expensive software of any company I found. True, this is “free” money — most customers don’t buy more than 1 copy anyway — but on the other hand they are getting 5 separate serial numbers. Unlike Apple’s iLife (which has no serial numbers), or Radioshift and BusySync (which allow a special serial number to be used on multiple computers), Wii Transfer’s URL bookmarking feature requires each copy of Wii Transfer to have a unique serial number to identify the computer.

I think customers buying a family pack are exceptionally honest. They are going out of their way to do the right thing. But at the same time, it needs to be a fair enough price that I’m not losing anything if a few customers decide to share their “extra” serial numbers with a friend.

In the end I settled on $39 for the 5-copy family pack, essentially double the normal price of $19. The Bento pricing model convinced me that it was doable, even if percentage wise it’s slightly higher than other products. I’ll be watching stats over the next month to see how well it works. “Decisions are temporary”: I’m not afraid to change the family price or drop it altogether if it doesn’t meet my expectations.

Slow-growing trees

We planted some trees in our front yard recently. They take decades to grow, and we are under no illusion that they’ll provide meaningful shade before our children have families of their own. It’s easy to say: “Why should I bother? It will take too long before we can see results.”

But it’s like anything — the sooner you start, the less time you have to wait until that thing is mature.

If you procrastinate forever, just because you won’t see results anytime soon, you’ll find yourself looking back 10 years later and wishing if only I had just planted that tree / started that new software project, it would have been done by now.

In other words, don’t let the weight of potential work stop you from doing the right thing.

Campaign Monitor

Last month, on the 7th episode of Core Intuition, we talked about promotion. In particular I had good things to say about Campaign Monitor, and the folks who built it heard the episode and wanted to ask a set of follow-up questions to use on their own blog. “That mini-interview with me”: about how I used the service is now online.

In closing out that blog post, Mathew Patterson of Freshview suggests a couple things I agree with, including sending a newsletter more frequently than once a year. In fact I would love to send another one soon, to link up a survey to get some more information about why customers are purchasing Wii Transfer.

Unfortunately my hands are tied with yearly. When I put together the Wii giveaway promotion, I specifically told users opting in that it would be about once a year. I did this to encourage people to sign up without wondering if they would be spammed all the time. And also, I doubted that I would have the time to send a newsletter much more often than every year. So it’s not ideal, but there it is.

Since then we’ve recorded 2 more shows. The latest “Core Intuition”: hits the lifting of the NDA, the iPhone Tech Talk Tour, and Apple’s stock price.

Favorite essays

The best essays are the ones that contain some truth or insight that doesn’t go out of style months or years later. As I return to regular blogging (12 posts in September compared to about the same number of posts between all of May through August), I sometimes stumble upon older posts that have held up pretty well.

Here are 10 of my favorites over the last 6 years with brief comments on why I like them. If you’ve only recently started reading my blog, maybe you’ll find one of these interesting.

“Understanding Comics”:, January 2003. Probably the first of several essays where I write about art and software. Since I wrote it, Scott McCloud has finished his third book on comics.

“Perfection”:, August 2005. Doing our best work, inspired by Tufte and the golden age at Disney.

“Set unreasonable deadlines”:, December 2005. Code more in less time, three years ago, but still very much inspired by 37signals. I like how this post mentions my favorite animation autobiography.

“Limitations in toys and software”:, January 2006. I connected LEGOs and toy utility with user interface design in this one.

“Smart software bloat”:, February 2006. In a general sense, how to add features without burdening the user interface. Discoverability in context.

“Mediocrity is the new application platform”:, March 2006. About web, native, and hybrid applications, and when to choose one or the other.

“Customer support”:, February 2007. Sparked by a post from Ryan Carson, I write about my own experience with Wii Transfer support.

“Bush veto”:, November 2007. I’m pretty sick of partisan politics right now, a month before the election. This post reminds me of the passion I had just a year ago.

“Fancy-pants productivity”:, March 2008. A little bit of a rant, reacting to the opinion that code must always be beautiful.

“Ollie Johnston”:, April 2008. Where I comment on the death of a master animator. I should re-read this one every year.

Passion and Paul Potts

The other night I was digging around in other people’s old blog posts, catching up on things I never read but should, and I found this gem on “Seth Godin’s blog”:


“Watch it on YouTube”: and then come back here.

Maybe the video and show is old news to everyone else, but I was stunned. A seemingly unremarkable man, by his own admission lacking confidence, the judges and audience clearly expecting the worst, expecting humiliation.

And then he is transformed. He nails it.

I consider myself reasonably competent, but not great, at what I do. My weakness is that I have my hands in too many unrelated projects to ever master one thing. The areas I am most passionate about receive a cruel pittance of attention. Not so with Paul Potts.

It’s inspiring to see someone who is just freakin’ good, rising above expectation out of a bland job to surprise and overwhelm everyone around him.

Oh, and the nice thing about discovering this video late? I can fast-forward to the finish. “Here’s the winning performance”: with some additional backstory.

Gruber on The Fear

I don’t link to Daring Fireball much anymore. Everyone who cares about the Mac and reads my blog, also likely reads his. I will link or write about obviously redundant topics that everyone else is also writing about only when I feel like I can add some kind of value. I felt that way with “my short NDA post”:, putting it in the context of customers.

But John Gruber’s latest, “The Fear”:, is just too good not to link to. Many developers and professional bloggers can write passionately about rejected iPhone apps, but no one connected that to the default dock and its significance in the original device introduction by Steve Jobs. Whether the theory is true, we may never know, but man is it a good read.

NDA and overnight optimism

Last week I blogged about “my experience with a late Amazon order”:, commenting that I was a happy customer again after they apologized. Even after being mistreated, customers will forgive everything if only the company does the right thing in the future. It’s the same way an angry customer will fire off a support email rant but then become an advocate for the company if the company responds quickly and honestly.

Thank you, Apple. “Lifting the NDA”: has turned the whole developer community into optimists overnight.

Ajax as a scaling tool

When “MobileMe”: launched with a beautiful new design, the web application suite was essentially unusable because of terrible performance. Timeouts and slow page refreshes were the norm. At the time, I didn’t think too much of this. I just waited a couple of weeks until they had either improved their backend infrastructure or until traffic had died down enough to make the site work again.

But one thing that did catch my eye is the insane number of Ajax hits from the SproutCore-based UI. Even “Cappuccino”:, which I praise as brilliant to everyone I talk to, seems to join Gmail’s progress bar with this same loading overhead cruft.

Maybe I’m reading too much into it, but I think as work shifts from the server side to JavaScript there is the potential for waste and chattiness. It’s like the countless pixel spacers from the 1990s table-based designs all over again.

Now there’s a counter-argument to this, that you can cut down on the weight of hits by just sending snippets of JSON or some other lightweight format without the baggage of too many HTML tags, but in practice I think the overhead of the large JavaScript libraries and resources to construct modern app-like UIs overshadow potential gains.

Unavoidable? Maybe. Or maybe most applications will still benefit from “traditional” Ajax. “Twitter recently redesigned”: and made their web site faster in that way. Instead of a completely new client-driven interaction model, they just take pieces of the web site and load content without requiring a full page refresh. Easy wins. Web 3.0 not required.

Cuts in Core Intuition

When producing “Core Intuition”: we generally record more than we need, giving us flexibility to cut out the rambling tangents, technical errors, and frequent “uhms” that threaten to destroy any kind of pacing or interest in the show. The decision of what to leave out is just as important as the original source work — being able to recognize the best parts that add value vs. the fluff that can be dropped to make the whole thing stronger. It’s that way with any product, not just podcasts.

For episode 8, posted this morning, we ended up recording even more than usual, so we cut a batch of insignificant things but also a few good points in an effort to bring the podcast down to something closer to 30 minutes. I wanted to gather a few of those lost topics here.

Politics. We recorded the show Friday before the first presidential debate, so it only made sense to discuss the campaign. Core Intuition started before the Democratic primaries were officially over, during which time Daniel and I were quite vocal on Twitter and blogs about the election. It still surprises me that we haven’t let politics get into the show. Probably for the best.

SXSW. I talked more about the SXSW Interactive festival, from its beginnings in the 1990s as a multimedia show to the current mix of web, social media, and design. Some of the most interesting talks in the last couple of years trended away away from “5 experts on a panel” sessions to more formal talks, by speakers who love SXSW and don’t want to see it fall into mediocrity. While it’s not a developer conference, there has been a steady attendance increase from web application developers and even Mac developers.

TED. Daniel commented on the 20-minute sessions at “TED”:, and how any conference would benefit from this focused approach. Imagine how much more useful sessions at WWDC would be if the speakers cruised through their technical slides in 20 minutes and then left much more time for Q&A.

So those were a few of the segments we left out. The final show included a wrap-up of the C4 conference, insight from Daniel’s “Shush” iPhone app, and rants on Google Android and user experience. “Check it out”:

Ship it, software and newsletter

I’ve been meaning to link to “this post by Justin Williams”: on shipping his Today app quickly:

“I’m a big fan of foundation releases. In other words, release the bare minimum you possibly can to constitute a 1.0 and then let your users help decide the direction your application ships.”

There is always more to do, a never-ending stream of features you could implement for 1.0, and the same can be set for other non-software projects. When I started preparing a newsletter last month, the features crept on: I should have a coupon code, and maybe a special URL to track links, or a survey, or HTML email design instead of plain text.

I explored most of these options before finally realizing it was more important that I send the newsletter than wait for it to be perfect and solve every problem. In the end I’m glad I didn’t spend much time on it, because overall the newsletter was not very successful, providing just a blip in web site traffic and negligible increase in sales.

Almost-right Amazon response

I placed an order on Amazon last week and chose Amazon Prime overnight shipping, something I do pretty often. The package was late. Even on Saturday, when the package was nowhere near Texas, the Amazon order page still showed estimated delivery for Friday.

I emailed support asking for a refund of the $3.99 overnight charge since they failed to ship on time, and the answer I got back surprised me. They would refund it “this one time”, but in the future I should know they don’t do Saturday delivery. All the details I had provided in my email had been glossed over, and instead they had essentially called me an idiot.

The refund itself was irrelevant. It’s just 4 bucks. But please don’t blame the customer. Even if it’s not your fault, but especially when it is!

(A second email with Amazon cleared up the matter and they apologized. I’m a happy customer again.)

I’ve blogged before about “refunds in the context of customer support”:, and this Amazon situation just underscores that how you treat your customer is actually more important than the money. I would have been much less upset if they had refused to refund the shipping, but at least acknowledged that I was right about the order date and expected delivery.

Developer-hostile platform

“Paul Kafasis writes”: on the Rogue Amoeba blog:

“I certainly feel like I’ve been talking about the iPhone a lot, particularly for a company that doesn’t currently have any iPhone software available. There are many reasons for that, but perhaps most important is that we believe the iPhone is a fantastically promising platform, and we don’t want to see that promise squandered.”

In some ways it feels like nothing has changed since March when I “posted here about the iPhone NDA”: I guess I’m disappointed that there hasn’t been more public conversation about building iPhone apps until now, but there’s definitely an attitude change just in the last few weeks — one in which fear of Apple’s lawyers is replaced with something closer to rebellion: posting sample code, blogging extensively, and abusing ad-hoc distribution. It’s right and healthy for developers to become as distrustful toward Apple as Apple has been hostile to developers.

Wil Shipley on bugs

From a “Wil Shipley post”: a few months ago:

“Software is written by humans. Humans get tired. Humans become discouraged. They aren’t perfect beings. As developers, we want to pretend this isn’t so, that our software springs from our head whole and immaculate like the goddess Athena. Customers don’t want to hear us admit that we fail.

“The measure of a man cannot be whether he ever makes mistakes, because he will make mistakes. It’s what he does in response to his mistakes. The same is true of companies.”

I’ve been thinking about mistakes and bugs as I beta test “Sifter”: Since it’s not ready for launch yet I won’t comment on it specifically, except to say that despite many bug systems becoming very mature (in some cases, too mature) every developer still has a different set of needs. There will always be a new bug system promising to fix all your problems, and for many of us we have to keep reminding ourselves not to code our own. Been there done that.

River of news

No, I don’t mean “Dave Winer’s thoughts”: on RSS reader design exactly, although that’s part of it. It’s more the way we in the technology community interact with the world. Hundreds of news feeds, company chat, external IRC channels, private AIM, email dinging every 5 minutes, and the constant flow of tweets. At home, we’re connected essentially 24/7; on the road, the iPhone brings it all with us. Plus there’s the never-ending pile of work to do on too many projects.

Technology news or politics or development moves too fast and doesn’t slow down. It’s easy to feel like you’re being pulled down the river, one hand struggling to hold on to the raft and the other deep in the current, information overload all around.

Since coming back from C4 I’d been fighting a cold, which developed into a cough and sinus infection and fever and whatever worse. I finally hit the doctor up last week and just unplugged, checking email twice a day for emergencies only. I spent the rest of the day sleeping, reading, and with family — a self-imposed vacation for my brain as much as my body.

Four days later I’m feeling quite a bit better, and trying to think about what changes to make in my schedule so as to not wind up insane or dead before I’m 35. But even as I say that I acknowledge that it’s stretching the truth, because I’ve never been happier.

Tracking sales referrers

The primary way to track marketing and word-of-mouth about your product is to look at web site referrers. Easy. Just install “Mint”: and you’re done.

But not all referrers are created equal. A prominent link on Digg might lead to sales or it might lead to dozens of “wish it was free” comments on your blog. To really judge the effectiveness of referrers (and in turn give a better idea about where resources should be placed in the future) take it one step further to track the initial referrer link all the way through to purchase. You want to know where the customer first learned about your product.

This isn’t a new idea and I’m certainly not the first to do it. Wil Shipley spoke at length about this technique during “his C4 talk”: in 2007, in the context of online advertising. In talking with other developers it became clear to me that most people don’t do this, even though it can be achieved in about a dozen lines of code.

The basics are pretty simple:

  • When a link comes in to your site, see if a special cookie is set. I called mine “WiiTransferRef”.

  • If the cookie is set, you have a repeat visitor. Nothing to do at this point.

  • If the cookie is missing, this user is likely visiting your site for the first time. Put the referrer value in the cookie.

  • After a purchase is complete, check for this cookie and add an entry to the database with the referrer value and timestamp for the order.

You can add more intelligence as suits your requirements and available time, but the basics don’t need to be any more complex than this. For bonus points and slightly improved security, you could add a database entry that tracks the referrer value and use the cookie as a session that simply points to that row, updating the database to show completed orders, but I chose not to do that to keep the database uncluttered.

Here’s the PHP source for my main product page:

And then the source for the final “thanks!” page after a purchase is complete:

Note that because I am using simple PayPal buttons, not all customers actually reach the last page, because they can ignore the “return to seller” link after a completed transaction and instead go wherever they chose. This limitation goes away if you have rolled your own store or used something like “PotionStore”:

I’ve been tracking these for over a year now. I’ll share some stats about what I’ve learned in a future blog post.


There will be many C4 wrap-up blog posts, but “Fraser Speirs hit the spirit of the conference”: very well:

“I thought C4 was incredibly reflective. If you imagine it as a smaller WWDC, it’s really nothing like that. The amount of code shown on-screen is really quite small, and the conversation is really about the art, craft, business, science and lifestyle of Mac development.”

I had a great time at C4. As always I met a bunch of new folks and caught up with everyone I hadn’t seen since WWDC or the previous C4. It was especially wonderful to hear the positive feedback about “Core Intuition”: in person. Thanks!

I also participated from the stage, as Wolf called me up to be on Saturday night’s panel literally minutes before it started. I have a feeling I came off as a bit of an oddball — I managed to shrug off software pirates, decry moving away from Subversion, suggest a “crap” label for the App Store, and actually recommend Dreamhost — but I hope there was value in it for attendees, even if it was less exciting than last year’s panel. Wil Shipley did a great job guiding questions for the panel.

For a view into what the conference was like, “check out the C4 Flickr pool”:

Promoting Core Intuition 7

The latest episode of “Core Intuition”: is up. Daniel and I focus on promotion and marketing in this show — releasing a new version, sending email newsletters to customers, and promoting your brand on a blog. We also hear from Daniel about development life with the new baby and talk up C4, which starts tomorrow in Chicago.

The web site now includes links for products and topics mentioned in the podcast. We’ll be transitioning the site to a full blog with listener comments soon. In the meantime, send an email to “” with thoughts about the latest episode or suggestions for future topics. Thanks for listening!