zach waugh
  • Blog
  • Projects
  • About
zachwaugh

Marching Ants

July 21, 2010 - 0 Comments - mac user interface

Yesterday, Apple donated the source code for MacPaint into the Computer History Museum. MacPaint was a bit before my time, but learning more about it, it’s amazing the influence it’s had on every graphics program since.

When Bill Atkinson was writing MacPaint, he had to figure out how to do rectangular selection. The solution he came up1 with was the—now standard—animating dashed border rectangle, which his colleague dubbed “Marching Ants”. The rectangular selection tool looks and works exactly the same today. In fact, if you look at the entire user interface for MacPaint (1984) compared to Fireworks CS5 (2010), they’re really not much different.

MacPaintFireworks CS5

The lasso, the paint bucket tool, the rectangular selection tool, and floating tool palette all first appeared in MacPaint. Incredible, 26 years later and the same exact solutions are in place today. For all intents and purposes, Bill Atkinson solved most of the problems around creating a graphics program in 1984, and it’s just be refined ever since.

I feel like most programmers today don’t really solve problems. We just find existing solutions and put them into place. In many ways, this is good. We don’t want to reinvent the wheel for every project as we should focus on the unique challenges in each app. But at some point, the wheel needs to be reinvented because its design was limited by the constraints of its time. Marching ants is a simple and elegant solution to the rectangular selection problem, but if Bill Atkinson had 2GB of memory, instead of the 128K he was working with, would he arrived at the same solution? Maybe he would have done some sort of semi-transparent overlay that wasn’t possible on that hardware. Maybe not, it’s probably still the best solution, but it’s worth thinking about.

1 You should read all the stories of the creation of the original Macintosh on Folklore.org, they’re great

Speed is a feature

July 5, 2010 - 0 Comments - user interface usability

For the next version of Gmail, one of Google’s goals is to get it to load in under a second. They stated that for them, “Speed is a feature”. I couldn’t agree more. It’s something that Google seems to take seriously in most of their applications. Their user interfaces are pretty minimal, but they’re fast. Sure, they could focus on adding other features, improving the design, making it look like a desktop version, but instead they focus on speed. I’m a bit torn here, as I love a beautiful interface. I’ve tried Mobile Me, and it’s really nice looking, has all the little details that Apple gets right, but damn it feels slow after using Gmail. If I had to make a choice, I would choose Gmail every time.

I think that’s the heart of the matter. Speed is a feature that is often overlooked in most applications - both native and web. Everyone tries to build the most beautiful and fancy user interface, but improving speed and responsiveness is one of the best ways to improve the user experience. I think few developers really make it a priority. If your web app is slow, you’ll probably enable gzip, combine and minify JavaScript, reduce HTTP requests, etc. But would you change your interface to make it faster? Would you make it a little less pretty, a little simpler, get rid of some images, use a solid background color instead of a gradient to see an increase in performance? Probably not.

For the next release of your app, I’d suggest try to make increasing speed the top priority. I for one would love to see the release notes for a new version that just said “Improved performance by 2x all around”. I know it’s something I’m going to start focusing on in my apps.

Extract 1.1 and bookmarklet

May 2, 2010 - 0 Comments - extract

I just released version 1.1 of Extract1. This update adds one big feature, support for a bookmarklet to simplify the usage of Extract. Currently, to view something in Extract, you have to find the embed code, copy it, and then paste it into the app. This is pretty quick to do, but can be a bit tedious. Also, in many cases, the embed code isn’t easily found or made available at all. The bookmarklet takes care of these all these issues. The bookmarklet will automatically find all the embedded content on the page and enable you to open it directly into Extract with one click.

To use, first just drag this bookmarklet - Extract - to your bookmarks bar. When you’re on a page with some content you want to load, just click the bookmarklet, and it will put an overlay on top of all the embedded content, and with one click, you can load that into Extract. You can see the bookmarklet in action below. It detected the video, and added a big overlay for loading it in Extract. No need to mess around with finding the embed code, just click to open.

I tried to test the bookmarklet on a bunch of different sites and browsers, but obviously couldn’t test every possibility. If you find any sites where the bookmarklet doesn’t work, let me know and I’ll see if I can figure out what’s going on.

1 You can easily auto-update Extract by going to “Check for Updates” from within the Extract menu in the app.

Meter Maid Sales & Stats

April 29, 2010 - 0 Comments - iphone meter maid

I created Meter Maid to scratch an itch. Living in the city, I’m often parking at meters and forgetting when it expires. I wanted an easy way to be reminded before the meter expired so I didn’t get a ticket. I had a need for the app, didn’t like the existing solutions, and really just wanted a challenge, so I decided to build it. I have a full-time job as a web developer, and never intended Meter Maid to pay the bills, but hoped it could generate a little extra cash. Actually, I hoped it would make a shitload, but I didn’t expect that. Meter Maid recently surpassed 5,000 sales, which has been a goal of mine since the beginning, so I thought it be a good time to share some of the sales, stats, and things I’ve learned, since I always find it interesting when other developers share this kind of info.

Meter Maid went live on September 18, 2009, was updated once, has had over 5,000 sales, netted around $3,600, and sent around 15,000 push notifications. Stupidly, I didn’t track all the time I’ve spent on the app (design/development/website), so I don’t really have an idea of my costs for creating the app. If I had to guess, I’d say that although I consider it a success, I’m probably in the red.

In the chart above, I’ve annotated various events in the timeline of the app. You can see being featured in the App Store made all the difference in my sales. In the two weeks I was featured, I had 3,500 sales, peaking at about 370 sales in a single day. Meter Maid is a bit of niche app. To be interested in it, you have to have a car, most likely live in a city where you park at meters often, and be at least a little bit forgetful. If you had an app with mass-market appeal like Doodle Jump, I would think you’d see thousands of sales/day when featured. I originally had priced the app at $0.99. After it had been out a while, and sales had tapered off, I decided to increase the price to $1.99. As you can see, it didn’t really make a difference. Sales were about the same. I didn’t experiment with higher prices to see when there was a point of diminishing return. I feel like $1.99 is a fair price for the app given it’s features, so I left it there. I’ve thought about giving the app away with ads, but charging $1.99 to enable push notifications and remove ads through in-app purchasing, and that’s something I still may do.

Visibility

A successful iPhone app is all about visibility. If Apple promotes your app, you’ll likely do well. The app store is terrible for searching and discovery of apps, so the vast majority of users just buy what is the most visible in the app store, or what they heard about from a friend. I haven’t heard of any apps succeeding with traditional advertising methods. Most successful apps succeed with Apple’s help or by word of mouth. If you’re featured in a commercial, any of the featured sections, or any of the top lists, you’ll get a lot of downloads. If you get a lot of downloads, you’ll move into the Top 100 lists, which will continue to give you visibility, which will help sustain sales.

The obvious question then is how do I get featured? I have no idea. I woke up one day and Meter Maid was featured in the “What’s Hot” section. Another day, I was watching TV and saw the Meter Maid icon on the commercial. I didn’t contact anyone at Apple and they didn’t contact me about featuring it (not that I’m complaining). Unfortunately, I don’t know how to get featured, but I know what helps. Make an app with a great user experience, is genuinely useful, and has a beautiful interface and icon. Apple is all about getting the little details right, and they want to feature apps the showoff the platform and make users want to buy the iPhone.

Piracy

An interesting thing to note. I send all my push notifications through Urban Airship1. Each iPhone has a unique id for push notifications called a device token. Each device needs to register with Apple’s servers to receive push notifications. As of today, I’ve had 5,038 sales, but 6,483 devices have registered with Urban Airship’s servers from Meter Maid. There are two explanations for this. One, multiple devices can share a single iTunes account. If a family with four iPhones shared an account, they could all install Meter Maid and only purchase it once. I’m sure this happens, and accounts for some of these, but I imagine it’s not that common. The other, more likely option, is most of those 1,400 registrations (about 20%) are from pirated copies. I did some searching and did find cracked versions of Meter Maid along with thousands of other apps across the web. Not really sure what to say about this. I guess it’s common with any software, but I didn’t expect it.

1 Great service, highly recommended if you need to support push notifications in your app

Introducing Extract

February 19, 2010 - 0 Comments - mac extract

Often while I’m working, I’ll watch a video of a talk or presentation. Usually, this involves jumping through a number of hoops to try to get a window that only shows the video. I’ll open it in a new browser window, resize it, hide all the toolbars and status bars, and adjust the scroll bars until it’s just right, and only the video is showing. Then I try to position the browser window so I can watch it while I do other things without obscuring the other apps. Needless to say it’s a pain, and I can never get it just right.

So I created a little Mac app - Extract - to handle this. With Extract, you can just copy and paste the embed code from a video and you can have it displayed in it’s own window, with minimal chrome. Extract will also modify the embed code so that the video will expand as you resize the window. Then you can have it as large or as small as you want it. Another feature I added was “Keep on Top” to the window. This will, not surprisingly, keep the window on top of other windows at all times. Why would you want this? Well, a lot of the time I can live with a small part of my main app window being blocked, but it’s annoying to have to keep selecting the app to keep it in the foreground.

Here’s a 1 min screencast (no audio) showing Extract in action. You can see how Extract will stay in the foreground, even if another app is activated when the “Keep on Top” option is selected, and how the video resizes with the window.


Hit the Extract page to download it.

Update: Version 1.0.1 is now available. It fixes a bug that caused Extract not to work on some computers running 10.5. If you were having problems, hit Check for Updates from within the app or re-download it.

Next »

ELSEWHERE...

  • Twitter
  • Github
  • Delicious
  • Flickr
  • Blog RSS feed
  • Email

© 2010 Zach Waugh