Thoughts on Flipboard, why Quake is better than vi, mouse/keyboard vs. iPad...

I was just marveling at the UI in flipboard's iPad app and thinking a bit about why it is so relaxing, and so fast at the same time.

Flipboard has simply amazing visual design, but the navigation is equally compelling.

One reason is that the "flipping" gesture and the "touch/click" gesture are both incredibly fast.

Technically all the touch devices have had these gestures, but there's an important improvement in flipboard. The links aren't tiny. 

Flipboard made me realize how slow it is to click on a tiny link on a normal website on a touchscreen (it almost works, but it is 10 times harder than it should be). And actually, it is similarly slow to click on a link using a mouse, even though I'm pretty experienced with a mouse. All those tiny "next" buttons on the web should just be made bigger.

And flipping? Flipping isn't necessarily faster than hitting an arrow key on your keyboard, but it is fast, very fast.

But all this made me stop and think a bit.

On the old desktop PC, we still have keyboard interfaces that make you choose: mouse or keyboard?

Mouse, or keyboard?

I have two hands, but amazingly, the desktop got it really wrong.

Using the arrow keys makes you move away from the mouse and to the keyboard, and back again. The iPad makes you do no such thing. Click, scroll, flip, all without changing the device you're using.

So I thought for a minute about who might have solved this in the old model, and I came up with two examples.

Photoshop and Quake


Photoshop has shortcuts to its tools, all accessible with the LEFT hand, and the mouse can stay in the right hand, handling painting, selection, zooming, etc.

Quake players use the "inverted triangle" W-S-A-D to drive motion in a game, and the mouse at the same time to shoot.

Two hands, two devices. Right.

Kudos to sites like dpreview.com, who are in the rare set that provide a left-hand keyboard navigation for browsing articles in their Forums, while the right hand is free to scroll, click things or select text.

But mostly on the desktop we have messed up. We've kept scrolling and navigation as the right hand's duty, page up, arrow down, mousewheel, click. The left hand gets to do nothing, and it could do a lot.

Outlook fails: arrow keys, or mouse?

Gmail (vi-style "j, k, u, y...", etc.) totally fails. These UIs are all keyboard-only, or mouse-only. Most novice Web users use the mouse and can't gradually learn the keyboard, because the jump is too big.

Certainly the touchscreen interface makes a ton of impact, but if Flipboard says one thing on a UI level (and it says tons in other ways too), it's that the touchscreen UI's we're using today are not baked yet. They are going to get even better.

We shouldn't somehow stop at HTML5 with tiny links and scrollbars and incompatible gesture systems. The UI has to change as the input devices do.

We should make new UIs that take advantage of the new medium. That might mean bigger buttons in some places, and it might mean more gestural input, but one thing I know is: it means not having to change input devices constantly, like the keyboard/mouse combination gives us today.

A lot of websites and apps should focus more on how fast people can actually navigate a UI in real-life. In most cases, this is more important than how fast a webpage loads from a server. Interaction speed is harder to measure, and so it gets mostly ignored.

But of course, both kinds of speed matter, and thinking about interaction time makes for more enjoyable software. Every time you have to click on a tiny link, it eats a tiny bit of your patience, and makes your computer a less enjoyable place.

Flipboard makes you relax, and it feels fluid. Listen to that.

Getting rid of ZFS dedupe (and a new drive enclosure)

I previously wrote about my ZFS NAS, and how I managed to get dedupe to write moderately fast with a cheap SSD drive.

I've decided to go back on the decision to use dedupe at all, and I have some pretty great fast and noisy hardware to talk about instead.

Today, the publically-available "build 134" of OpenSolaris has quite a few dedupe bugs that make simple operations like destroying a dataset or even rm'ing a bunch of files very slow, sometimes leaving a server unresponsive for a day at a time. These bugs are getting fixed (there's a lot of talk about "single threading" and things like that), but it has been 6 months with not a lot of forward progress. The Nexenta guys are patching their OS from the development versions, which apparently are buggy, but I didn't want to deal with any of that.

At the same time, I had a security camera logging to my NAS, and almost filled it up. I tried to delete an old 500GB snapshot, and it locked the machine trying to remove all the deduped blocks. Basically there was no way to free up space. Also, my dedupratio at the time was about 1.8...when you're using 5TB on a 4 x 1.5TB RAIDZ there's no easy way to go back.

So I decided to get more disks and not ever turn on dedupe again.

I considered building a totally new server in a new enormous case, so I could put more disks in it. But this is tricky: you can get the cooling wrong, and a lot of the off-the-shelf bigger cases sound like wind tunnels. Instead, I decided to do it like datacenter guys do it: get a "direct attached" drive enclosure.

I found this enclosure from Sans Digital: the TowerRAID TR8X.

The TR8X is not cheap in home NAS terms (it's $400, plus a $300 LSI SAS controller), but compared to a box from Dell (which costs thousands) it is very cheap. And it has the advantages of a "real" external drive enclosure: it has good cooling, it has hot-pluggable drives, and it's actually SAS, so every OS on earth will recognize the drives instantly, and you can use enterprise SAS drives if you wanted to spend the money.

It turns out the cheaper "port multiplier" SATA controllers have mostly buggy drivers, even on Linux sometimes. But this SAS one works everywhere.

So I plugged it in.

I don't usually believe theoretical performance numbers will ever really happen, but a ZFS stripe on 8 drives actually did give me 700MB/sec performance.

With my old 4-disk setup, I was also nervous about running "single parity" RAIDZ. With this upgrade I was able to go to RAIDZ2 (so 3 disks have to fail before there's data loss), and the TR8X is still pulling >320MB/sec read and write with all that turned on. And a scrub of 5TB takes less than 4 hours. It's way too fast for anything I do.

This enclosure isn't for everyone: it is quite a bit noisier than my old quiet NAS, a lot of that is due to the really noisy Hitachi A7k2000 disks I got.

But it is a really solid piece of hardware, performance is amazing, and I didn't have to do a whole lot of reconfiguration to upgrade.

I wish everyone luck with dedupe, but I'm going brute-force for now, instead.