Info

Ben is Vice President of Mobile Engineering at Walmart.com, where he works closely with his long-time friend Dion Almaer.

Archive for May, 2009

ahsnap

Clearly Apple’s PR Skynet saw my recent whining about the MacBook Pro and engage in virtual retribution, because now my iPhone is failing.

I used Apple’s excellent data migraiton program to copy my data from my old MacBook Pro to the new one. After the transfer, the first time I tried to sync with iTunes between my new Mac and my iPhone, iTunes informed me that I could not activate the DRM because I’ve used all five of my machine authorizations. I had already put the old MacBook Pro away so I decided to deal with this later. I interrupted the iPhone sync-in-progress just as it started to avoid issues with the third-party applications and music on my phone.

Things worked well for quite a while. Then, three days later, I noticed that when I tried to launch a third-party app (actually, Apple’s own Remote application), it crashed right away. And that, in fact, every third-party app crashes after launch, but the built-in apps continue to work.

I’ve since discovered this is a fairly common problem with iPhones. I’ve rebooted the phone and hard-rebooted the phone (you know, holding down the front button and the top button) many times, authorized iTunes and synced, de-authorized iTunes and synced, downloaded new free third-party apps via iTunes and synced (to try and trigger the DRM to reset), downloaded new apps via the iPhone, removed and re-downloaded several of my apps at random, wiped the iPhone and restored from a backup, removed all my apps via iTunes and synced (losing all my data, some of which wasn’t synced with other services and I’ve no idea how to restore the data back), and then added them back via iTunes and re-synced, and yet, after all this, the problem still persists.

I guess I’m off to the Apple store to fix the problem, but geez, I really don’t have time this week to deal with all this. Have I missed anything? I’ve scoured the forums and I seem to have tried everything.

mbp

I’ve been using Mac laptops as my primary machine for a few years now, going through 5 notebooks since 2004. Each time I upgraded, from PowerBook G4s to various MacBook Pros, I’ve always felt like I was making a step forward, gaining speed, useful new features, and so forth.

This week, I “upgraded” from a 1.5 year old 17″ MacBook Pro to a 15″ MacBook Pro. For the first time, I feel like I’ve taken a big step backwards.

(By switching from 17″ to 15″, I’m going from 1920×1200 resolution to 1440×900. I didn’t really want to make the switch from 17″ to 15″, but that’s another story and I obviously can’t fault the new notebook for this.)

The Trackpad

The biggest problem with the new notebook has been the trackpad.

gestures

Apple has added support for all kinds of gestures to it, which is interesting, but it turns out the trackpad registers the gestures unintentionally far too often. The first thing I did with my new notebook was hack on a Keynote presentation, and I found objects constantly being rotated and resized by accident. I also had a similar problem in web browsers where I’m constantly inadvertently changing the font size of the page with the new notebook.

The ill effects of the extreme sensitivity of the trackpad are made worse by how much bigger the trackpad is on this model, and by the fact they’ve removed the trackpad button. My hand is trained to rest my thumb on the bottom of the trackpad–where the button used to be–and this leads to many (but not nearly all) of the false gesture triggers.

After being constantly frustrated by this, I discovered that you cannot turn off gestures. What? Leave it to Apple to be utterly unconcerned with their user base by changing a primary input mechanism of the notebook from a pattern unchanged through nearly a decade of Apple laptops and skipping on obvious accommodations to help users make any adjustment.

By reading through countless forum messages from other frustrated users, I discovered a third-party application that can disable the gestures.

The Display Connector

Next up on the list, there is no longer a DVI port in the laptop. Instead, you’ve got this mini-port that requires the use of an adapter. That’s right, unless you have the new-model 24″ Apple Cinema Display, you’ve got to buy a dongle to hook up the notebook to any display. And when you present on the road, you’ve got to have two dongles–one to adapt the mini-port to DVI, and another to adapter the DVI to VGA or to do mini-port to VGA.

But the fun doesn’t stop there! It turns out if you have a 30″ Apple Cinema Display, like yours truly, you have to buy another $100 display adapter–one that’s fairly big and unwieldy. And once you do that, you’ll discover that there’s a known (unsolved) problem where you’ll get noise in the display: little flickering lines that appear all over the place. Apple’s forums are full of complaints about this; no solutions mentioned. Brings me back to the UHF days on the family TV growing up. In a bad way.

The Glossy Display

Due to popular demand, the 15″ MacBook Pro is no longer offered in matte–you must choose the glossy display. This means that under many common lighting conditions, you get to see yourself in the display clear as day! I guess the narcissistic set will enjoy this, but I find it extremely distracting and can make the display hard to read.

Wrrr, Weeeeeee, Wrrr

I had to do some late night work tonight, and as my wife was drifting off to sleep, I opened up the new MacBook Pro. As it always does on sleep and wake, the CD-ROM drive made a lovely loud repeated set of “Wrrrrrr, Weeeee, Wrrrrr” noises. This loud and obnoxious noise pulled her back fully alert and wondering what all the racket was. Folks will certainly notice any time you close or open the lid on this sucker.

Think Before You Leap

If you’ve got a MacBook Pro from the generation right before this new one, consider the downsides before upgrading. You may find (like me) that it’s not an upgrade at all.

(Update: My original posting-in-anger had a really cranky conclusion; I chilled it out a bit the next day.)

I’d like to give an update on an interface concept we’re exploring for Bespin. We call it “The Pie”.

The Pie

We’re hoping the Pie solves a couple of problems for us. Let me take a couple of steps back. Currently, Bespin has two screens, a “dashboard” and the editor itself.

Dashboard and Editor

We’ve not been happy with this arrangement.

You see, our original concept for the dashboard was that it would have all kinds of neato project statistics, showing information on your productivity, where you are spending most of your time editing, real-time information on others currently working in the same project, etc. You know, a dashboard.

But the “dashboard” in the Bespin 0.1 and 0.2 releases is just a file explorer. And it’s been the only way to open files, so Bespin users have to constantly go back and forth between the dashboard and the editor. Bleah.

Augmenting the Editor

Our first approach to solving this problem was bringing the dashboard into the editor:

Dashboard in Editor

While we developed a bunch of ideas for making this into a pretty good experience, we couldn’t get past the uneasy feeling that we were taking the first step towards this kind of an interface:

Eclipse

A typical Eclipse configuration. Note how small a space is left over for code
(the region in color; I made the rest monochrome) and how much of the interface is wasted on clutter.

One of our goals for Bespin is to keep it simple–while still providing advanced features. So the thought of winding up with an interface with so many knobs and dials gives us more than a few shudders. Plus, it’s just fugly.

Don’t get me wrong–I’m sure lots of folks like the traditional IDE clutter-up-your-world-with-panels style, and we want to support that. But we want to be absolutely sure that clutter doesn’t become the default, nor the required way to interact with Bespin in order to utilize most of its helpful features.

The Pie

As we discussed these issues, we started thinking more about a concept I’ve been pondering for a while for mobile devices: a predictive pop-up that groks HTML, CSS, and JavaScript grammars and based on context predicts with high accuracy a reduced set of words you’re likely to want to type next (outside of free-form text entry, of course). For example, given a blank link in JavaScript, we can predict that you’re likely to type one of “var, if, for, while” and so forth. Obviously, there’s lots of challenges involved in getting this right, and it may be unworkable entirely.

We took this basic concept and re-imagined it in a more general-purpose application:

Pie Design

And, as of this morning, we’ve got some of this implemented in Bespin:

Bespin with the Pie Menu

I apologize for the dark colors; we’re still tweaking the details

The idea is that you can use the mouse (right-click) or the keyboard (CTRL-K) to bring up the pie, and then select the quadrant (up, down, left, right on the keyboard) you want, and a pop-up menu renders the content. You can also skip directly to the area you want with a direct keyboard short-cut (e.g., CTRL-J for the command-line); selecting it with the mouse just requires a gesture towards the desired icon.

Why a Pie?

We’re intrigued by this concept for a few reasons:

  • On small screens (e.g., iPhone), the interface still works well. The pie would appear first, and once you make a selection, it disappears and is replaced by the pop-up. This is an easy adaption to make, and we’re designing the contents of the pop-ups to scale to different sizes easily.
  • The pie will pop-up exactly where the mouse right-clicks, minimizing the effort required for the mouse to select items (see this demo from Jono for more detail on that point). For the keyboard, the pie will always appear in the bottom of the screen.
  • The number of pie pieces can expand, giving users a top-level short-cut mechanism that is easy to use with the keyboard and mouse
  • It’s different, a bit whimsical, and hopefully fun (will take some tweaking to find out for sure)

There’s lots more to discuss about finer details and interactions, but I’ll save those for another post once we start refining things a bit and getting feedback from others. (All of the details now are in flux; e.g., we’re not crazy about the individual icons in the pie yet).

Enter the Gratuitous Animation

But before I go, I wanted to show you a bit of fun we had with the pie. Another of our goals with Bespin is to make it fun, and so of course we can’t just have the pie menu appear. We designed a couple of different animation effects describing how it could come in and go out:

Pie Fx

Here’s how it turned out:

You can see a stand-alone, live version of the animation by clicking on the image below (but you’ll need a canvas-compatible browser, such as Firefox 3+, Safari 3+, Chrome, etc.):

Stand-alone Pie Demo

We’re pretty impressed by how quickly canvas animations render on Safari 4, Firefox 3, and Firefox 3.5 beta. Even when we run the animation on a huge window, we’re able to alpha-blend every pixel in the window to create a fade out effect on the window contents while rotating the pie into place. Nice job, browser graphics gurus! Thanks for making it so fast.

We did the animation by hijacking Dojo’s animation facility a touch:

var anim = dojo.fadeIn({
    // create a fake node because Dojo Animation
    // expects to mutate DOM node properties
    node: {
        style: {}
    },

    duration: 500,

    // use one of Dojo's fancy easing functions
    easing: dojo.fx.easing.backOut,

    // Dojo supports an onAnimate() callback for each frame
    // of the animation and passes in values that it is setting
    // on the DOM node. We'll grab "opacity" and use it as a
    // general "progress" value.
    onAnimate: function(values) {
        var progress = values.opacity;
        renderPie(progress);
    }
});
anim.play();

As with everything we do here in Mozilla Labs, this is experimental–it may be we come crawling back to docking panels as our primary interface metaphor.

What do you think?

Follow

Get every new post delivered to your Inbox.