September 7, 2010

QuicKeys - fix bugs, speed things up

After, literally, years of griping about various annoyances of my beloved Mac, I finally found a way work around for many of them.

QuicKeys is one of the oldest end-user customization tools (for PC and Mac). I've known about it for years, but finally started to put it to use because I was just so annoyed by a few minor things that I kept running into over and over again. Here are a few of the (admittedly minor) Mac annoyances that are now fixed!

iCal: Pressing Shift-Command-T brings up a dialog to go to another date. But there is a bug that makes it impossible to use the keyboard to either activate the dialog (to actually go the date you've specified) or dismiss the dialog. I wrote two simple shortcuts so that pressing return activates the dialog and pressing escape dismisses it. Shame on Apple for making me do this after years of iCal's existence, but anyway now I can use iCal without cursing Apple 5 times a day.

iPhone Simulator: When debugging code with XCode, you press Shift-Command-Return to stop the process. But if the focus happens to be on iPhone Simulator (as it often is when debugging an iPhone app), you have to press Shift-Command-H to stop the process. This is typical Apple keyboard shortcuts. Each one makes some sense on its own, but they don't work together (on iPhone, you pressing the "Home" button, thus the "H"). So I added a shortcut for iPhone so that Shift-Command-Return generates a Shift-Command-H to stop the process. Problem solved.

WriteRoom: The control-A and control-E keys move the cursor to the beginning and end of the paragraph instead of the line, which they do in most other apps. I remapped them.

Mail: Having to use the cursor keys and delete key is adequate, but I do *SO MUCH* cursoring and deleting that moving hands off the home keys turns out to be a significant burden. So, I made Control-N & Control-P move to next and previous emails and Control-D delete the current message. Ahhhh.

Firefox/Instapaper: I like to use Instapaper to read things offline later. The normal way to do this is to put a bookmarklet in your bookmark bar on the top of your browser. But I hate extra bars - especially on my laptop. So I started by making a shortcut to hide/show the bookmark bar so at least I don't have to dig around in the menu for it. Of course, then I realized I should just make a key to run Instapaper (which I'll do as soon as I finish this post).

Finder/Terminal: I regularly want to use Terminal to look at the contents of a directory I am looking at in finder. You can copy a directory from Finder, open Terminal, type "cd ", paste the directory, ... to get there. Instead, I made a single key that does that.

You get the picture. If there is a slow and consistent activity that you do frequently, it takes about 1 minute to write a quickeys shortcut. They can be applied narrowly so they only work for the app in question - and only when, say, a certain dialog is open. So they don't hurt anything else. I haven't observed it slowing down the system. The only issue is that you have to remember the new shortcut. But if the task you are speeding up really is one that you do frequently, then it isn't a problem. If you don't do it frequently, then don't bother speeding it up.

July 23, 2010

New Windows laptop rant

From a very experience friend of mine who knows Windows and Mac very well, has worked at Microsoft as a software engineer for several years. He prefers to remain anonymous. Sadly, my experience is about the same, and I am very happy living on a Mac (sometimes using windows in a VM, and sometimes not):

[Company] bought me an HP Envy 17 windows laptop because I realized that I couldn't take my primary windows development machine (a mac pro) to meetings and demos. It was only $1200, so I figured it was worth it.

The specs were nice -- slightly slower core i7 than I have in my MBP, but 6gb ram built in and a 1920x1080 display. All the reviews I read basically said this was the closest you can get in build quality to a mac without buying something from Apple. A similar MBP 17 starts at $2k.

Holy crap, this thing blows. It _looks_ like a Mac, except it's made of plastic and flexes dangerously when held in one hand. They've shamelessly ripped off the apple packaging experience, except forgot the little things (like having the battery be pre-charged so you can use your computer right away, or designing a power brick that (a) doesn't look and weigh as much as a real brick and (b) plugs into the computer on the right side via a hard plastic connector that sticks out 2-3 inches from the machine and looks terrible).

Then you boot Windows.

The first time through, you get a bunch of HP popups that are a ripoff of the Apple FTUE, except the design is atrocious and in fact the screens don't really match from one to the next. Fine. You get through that, and 14 -- yes 14 -- different preinstalled crapware apps want to update themselves. I have the entire Corel suite on this machine.

You can't connect to an 802.1x wireless network via the HP Wireless network utility. This may be a limitation of the windows home premium that ships on this laptop, but the result is I have no in-office wireless. Fine. I plug in an ethernet cord, BUT THE ETHERNET DOES NOT WORK. It turns out that you need to get a Windows wizard to run that lets you choose if your new connection is a Home, Work, or Public network. I manage to get the wizard to run by Disabling the ethernet port and then Enabling it. I assume at this point that most people would have called HP by now.

I go into the control panel and change the name of the computer on the network, since 'pc-8994892x' wasn't something I could remember. Once I actually find the correct place in the Control Panel for this (don't get me started on the control panel having grown to nearly 100 applets in win 7), the machine wants to reboot. Fine, it's 2010, and Win7 has a brand new networking stack that was developed from the ground up for Vista, but we still haven't solved the problem of changing the hostname requiring a reboot.

So the machine reboots. The SECOND TIME USER EXPERIENCE is that the user DOES NOT BOOT WINDOWS. You boot some kind of crazy HP overlay OS that lets you browse the web or read email, I assume through some kind of Linux-based layer that "boots faster" (not really). I have to dig around to turn this thing off.

I am now convinced that the "Apple Tax" is incredibly worth paying for all computers, even if you intend only to run Windows. At least then you get a Windows without all the crapware.

February 17, 2010

SIGCHI Social Impact Award for 2010

Ben Bederson and Allison Druin
from the University of Maryland are awarded

The SIGCHI Social Impact Award for 2010

ACM SIGCHI identifies and honors leaders and shapers of the field of human-computer interaction with annual SIGCHI Awards. The Social Impact Award honors individuals who promote the application of human-computer interaction research for pressing social needs. This year the award was given to Ben Bederson and Allison Druin of the University of Maryland for their joint work in developing the International Children’s Digital Library and their individual work in developing new methods that give children a voice in the development of new technologies, and for their work on electronic voting systems.

Ben Bederson is Associate Professor of Computer Science at the University of Maryland and past Director of the Human-Computer Interaction Laboratory. With his collaborator, Prof. Allison Druin, he led the development of many of the key technologies designed for and by kids, including KidPad and StoryKit for iPhone. He is the Technical Project Director for the International Children's Digital Library, a multilingual free digital library of children's books, currently consisting of over 4,000 books in over 50 languages, with more than three million users from over 160 countries worldwide. He led the library's collaboration with the Government of Mongolia -- bringing access to the library in rural Mongolia. Prof. Bederson also did influential studies of the usability of electronic voting systems, which resulted in scholarly publications, reports aimed at policy makers, and books directed to the general public. This work has served to highlight the challenges in developing usable electronic voting systems and has informed decisions on voting technology adoption.

Allison Druin is Associate Professor in the College of Information Studies at the University of Maryland and Director of the Human-Computer Interaction Lab. Prof. Druin is a pioneer in the development of technology for children and the inclusion of children as partners in the design process. Her technology co-design methods have been reported on through scholarly publications, presentations, and books, and have become widely used throughout the CHI community. She founded the CHIKids program for the CHI Conference. This program enabled many CHI community members who were parents to participate in the conference while their children learned about CHI and contributed to the experience of the conference, e.g., by producing daily newsletters, websites, and plenary session videos. With her collaborator, Prof. Ben Bederson, she created the International Children's Digital Library, a multilingual free digital library of children's books, currently consisting of over 4,000 books in over 50 languages, with more than three million users from over 160 countries worldwide.

February 4, 2010

Another problem with Flash - keyboard focus

I consider Adobe Flash to be a virus and have been thrilled that Apple continues to fight against it. The reason I dislike Flash so much is because it breaks fundamental user experience standards, such as:
  • Consistency: The same action should do the same thing in different places. Example: if pressing the down arrow scrolls the web page, then it should always scroll the web page.
  • Modes: Modes are almost always bad - but when you have to have them, make them clearly visible. I.e., the user should know what mode they are in by looking at the screen. Example: if typing enters text in a specific text box, then that text box should be clearly highlighted so the user knows which textbox will get their text.
My problem with Flash is that it breaks these basic design standards. In order to use a Flash plugin in your web browser (like when you watch most videos), you have to click on the video - and Flash then takes complete control over the keyboard (i.e., it takes your "keyboard focus"). This is bad because you can then no longer use your keyboard to do other browser things - such as scroll with the PageUp and PageDown keys, press Ctrl-T to open a new tab, or Alt-LeftArrow to go back to the previous page.

The fact that Flash breaks standard web behaviors is bad enough - but it is even worse because it does so completely invisibly. I get used to using my keyboard to control my web browser because - um, I am a human and I am using my computer. So, sometimes it stops working for no apparent reason. There is no way to see this problem, and the only solution is to use your mouse to click on some non-Flash component in your browser. I bet most people just think that web browers are sucky and inconsistent. The real problem is that Web plugins for common activities that take over they keyboard just shouldn't exist.

Bravo Apple. Let HTML5 and built-in web standards for common activities take over.


January 21, 2010

Collaboration with New Super Mario

I've been playing Mario for a long, long time (i.e., decades). I've been playing it on Wii with my daughters (now 5 and 10) for a year, and until last month, it was always an exercise in patience. Only one person played at a time, and you we spent more time watching than actually playing. Actually, this is how video game playing has been for 30 years.

So, while collaborative game playing is not new, and I don't even think there is anything in particular here that is new, I was stunned by just how good Nintendo put it all together with New Super Mario. It isn't just that we are all playing at the same time, but that the designers have put together so many modes of game play in a seamless way that is equally attractive to a 5 year old and a 45 year old. It supports exploration, goals, collecting points, collaboration, and competition equally. But the killer thing is that it supports these 5 modes at the same time in the same interface. There aren't 5 different ways to launch the game. There is one, and you just choose how to play. In fact, at any given moment, we are often playing several modes simultaneously, or dynamically switching between modes, or one person is doing one thing and the others are doing another.

Aside from the sheer number of hours we have played (and continue to play), I judge its success based on our volume. The three of us end a game-playing session exhausted, excited, and a bit hoarse - because we have been yelling so much.

There are too many details to go into just why this all works so well, but here are a few examples from the 5 modes:
  • Exploration: Wander around, poke at things and see what happens.
  • Goal-driven: Complete as many worlds as possible.
  • Collecting points: Get as many points, big gold coins, or powers saved up as possible.
  • Collaboration: Bounce on each others head to bounce higher, do a super ground pound (a synchronous maneuver), or wait for someone to finish before moving forward.
  • Competition: Push each other off the edge, grab a power rather than share it.
They also nailed the screen sharing issue. The essential problem in collaborative games is that everyone looks at the same screen. The traditional solution is a split screen - where one player sees where they are in the world on one side of the screen and the other players sees something else. This isn't really collaboration - this is competitive, simultaneous separate play.

New Super Mario, on the other hand, places everyone (up to 4 characters) in a single world. You all move and bounce around in the same space. If the characters wander apart from each other, the world automatically zooms out so everyone is still visible - up to a point. There is a maximum zoom out level after which the lead player (right-most player since this is a left-right side scrolling game) implicitly owns the visible area. The last player (left-most character) gets dragged along. If they get dragged into a hole or something else bad, they die.

Actually, they don't die - when someone does something that would normally result in dying, they go in a bubble (i.e. "ahhhh - daddy, I'm in a bubble"). After a few seconds the character floats around the screen in a bubble and they can be revived by one of the other characters bumping into them - up to 5 lives, after which you really die and you have to wait for everyone to die (or bubble), at which point that world starts over. Again, a combination of approaches that brilliantly encourages collaboration without requiring it.

There is a lot of verbal communication going on to support all of these modes - which is part of the reason it is so fun. I'm looking forward to finishing dinner tonight just so we can go play. I haven't heard enjoyed a game this much since Asteroids in 1980 - when we played one at a time, but the social element was in going to a gaming parlor.


January 18, 2010

My PIM (Part II)

I recently posted my approach to managing notes and various bits of my personal information (i.e., Personal Information Management). I had some requests to go a bit deeper, so here's a bit more.

Email The biggest trick about managing personal information is to spend more time on frequent tasks, and less time on infrequent tasks (actually, this is a design guideline for all UI). So, what do I do a lot with email? I read incoming stuff and answer it. What do I do infrequently? I search for old email. Simple, but true analysis. So, rule #1: don't spend time filing email. Yes, it must be findable somehow, but it doesn't have to be easy to find. It has to be fast to get rid of so you can go on to the next thing. GMail figured this out with fast searching and making archiving everything the default. But I find that most Outlook users don't do this - they often still laboriously file individual emails into specific folders just in case they want to find it later. What a waste of time! Outlook has fast searching too. So, here's the trick:

Turn off auto-archiving, and then just press the delete key. I store everything in the Deleted Items folders. Then, once a year, I dump it all into a .pst (archive) file. That's it. Sure, towards the end of the year, my Deleted Items folder might have 20,000 messages in it, but who cares. I can search in a second or three, and that's good enough. I've been doing this for 10 years, and have 10 .pst files. But guess what, I almost never open up any but the previous year. And when I do, they are around and easy to open and search (as long as I continue to use Outlook, but that's another story).

Ok, dumping email into a folder is simple, but that isn't good enough for files - which I actually do manually organize with some attention. Effective hierarchy structures are difficult because research has shown that people don't remember them perfectly. The issue is that the context for storage is often different than the context for retrieval. Thus, there is pretty much guaranteed no perfect solution, but you've got to do something. So, pick something semantically meaningful - and make sure it isn't too big, or you lose stuff. This latter point is key, so let's start there.

At each level of my file hierarchy, I only keep relatively active stuff. Then, when a folder starts getting old, I create a sub folder called "zzz Old Stuff" (so it gets sorted at the bottom), and just move things I haven't used recently in there. This way, I never have to throw things out (just in case...), everything stays in it's semantically coherent place, and I only have active things visible at any given time. This, by the way, was my practical solution to an idea I worked on some years ago with Bongshin Lee (called Favorite Folders) - but that never went any where as a practical UI.

I don't think the actual folder structure I use is likely to be that helpful to others. It is highly idiosyncratic based on my own evaluation of frequency and importance. That being said, here are a few key elements.
  • Ben - personal stuff, distinguished from work
  • one directory per major project or collaborator. For some big ones, this becomes the root of a multi-level hierarchy
  • Dissertations
  • Papers (brings together final copies of everything I published)
  • Other's Papers (becoming less important with digital libraries, but where I store important papers from other people)
  • Proposals (separate from the actual work because proposal writing is a different ask, and I regularly need to refer to other proposals when working here)
  • Talks (slides, etc. for talks. Again, different than the actual work on a project for the same reason as Proposals)
  • Conferences (related to service, organizing, etc.)
  • Reviews (where I store reviews of other's papers, etc., so I have an easy place to go back when a revision comes in, etc.)
Managing pictures used to be a nightmare, but as with the lessons above, there are two key things I've learned. They must be fast to store because otherwise I won't do it. Storage must be in a future-proof manner as operating systems and photo management tools just don't stand the test of time. But folder names, hierarchies, and JPEGs do. So here's my simple solution.

Create one folder per year, and inside each of those, create one folder per month labeled so they get alphabetically sorted (i.e., "01 - January", "02 - February", etc.) Then drop all pictures by the month they were taken into the right folder (which you can easily do in bulk every month or three). If there is an event with a larger number of pictures that feels like it is worth organizing, then create a subfolder for that event, and give it a meaningful name.

Finally, whatever software I am using to look at the photos, I never, ever, ever, use that software's proprietary mechanism to store metadata in the photos. Else, it is pretty much guaranteed to not stand the test of time. Instead, I just put everything in the filename of the photo. So, for the past few years, I've been using Picasa. Rather than storing comments or using tags, I just rename the file (one key). Then, any future search system (including Picasa's) work's great. This doubles as a mechanism for letting me access my photos across all of my computers (synced by Live Sync) without loss of information.

This is why I will never, ever use Apple's iPhoto. It is lock-in of the worst kind. It sucks all of your photos in, ignores the originals, and puts all info in a proprietary database that cant' be shared across folders. Completely worthless to me, no matter how nice the interface is.

Meeting Notes, etc.:
This is the toughest category. I've gone through many iterations from my own NoteLens and other flat systems (such as the Notational Velocity I am now using). But I've found that flat organizational systems just don't scale up for me. And I'm not willing to use my regular file system as it is just too much overhead to find the right place, launch the right app, etc. There are many other tools that people use, but for the past year, I have just been using Microsoft OneNote. I hate it's proprietary file format, but the files do sync across computers fine so I can edit on any of my computers. And the UI can't be beat. It offers a beautiful combination of simple text along with figures, notes, imported docs, and fast global search. Plus, it has a nice two-level hierarchy baked into the UI (see below). I'd be much happier if the data was text-backed and there were other UIs (especially on the Mac!) available to access it, but it works well for me know.


January 13, 2010

My Personal Information Management

Update 1/18/10: This is the first part of a two part post.

Organizing one's personal information can be amazingly complicated, especially if you want fast and light weight access to commonly used information, and you access information across devices and operating systems. It is even trickier if you want to future-proof yourself so you can access all of your information in the future as well. I have tried many solutions including Outlook Notes, OneNote, my own NoteLens, and EverNote. However, I think I have a solution that works for me (based on this solution by dougist) - at least for my basic unstructured stuff. And the solution is both simple (relying on the most basic of storage systems - a folder of text files) and complex (relying on multiple syncing services and end-user UIs). Note that even though I still use Windows a fair amount, I run it in a VM on a mac, so this software is all Mac, but of course since the data is all text files, everything is also accessible on the PC side. Here it goes:
  • Everything is stored as individual text files in a single folder. Sure, I lose fancy formatting and images, but I get guaranteed future-proofness, I don't waste time formatting, and it turns out that I don't really need images. And tagging is supported if I wanted to add a bit of structure.
  • I use Microsoft's free peer-to-peer Live Sync cross-computer cross-operating system syncing solution. I've tried the others (SugarSync is unreliable, and DropBox requires all the synced files to be under one directory - ugh!). Live Sync is fast and reliable. I love it. (Although I got mad at Microsoft when they didn't update it for Snow Leopard for 2 months).
  • I use my buddy Jesse Grosjean's free SimpleText program to sync the text files to a free Google-based web service that he runs. Note that this has one flaw which is that it sends stuff up to the web whenever there is a change, but only pulls stuff down when you sync manually - so one option I am considering is to use it on one computer, and then use my existing Live Sync solution to sync those files across all my desktops (while I wait for Jesse to add auto sync down from the cloud.
  • I use Jesse's WriteRoom for iPhone app ($5) to sync those files to my iPhone and access them there.
  • I use Jesse's WriteRoom for Mac app ($25) for full screen, distraction-free text editing.
  • I use the open source Notational Velocity program on Mac (which is remarkably similar to my earlier NoteLens app)
  • I was able to export my notes out of EverNote as HTML, and then used the freely available HTMLAsText (for Windows) to convert to text. (I wanted to like EverNote - it has a great feature list, but in practice, it didn't work for me. The UI was too heavyweight, layout changed between operating systems which was a nightmare, the UI was quite different between operating systems which was annoying, and I didn't like the Windows UI which had a weird scrollbar, and made a vertical list of all the notes rather than a notebox that just displayed a single note).
Update 1/15/2010: Some other bits - I use xmarks to sync my bookmarks and passwords across computers (and VMs). This coupled with Firefox's master password to protect passwords is crucial - it means I no longer have to manually save passwords. Coupled with Firefox's fantastic URL bar with one-click bookmarking, my webpage re-finding is dramatically better (direct comparison to Safari and Chrome upcoming - but firefox definitely wins).

I also use Microsoft OneNote for my meeting notes (with the data synced across computers with Live Sync). This makes me uncomfortable because it is Windows only and the data is totally locked in to OneNote. But the UI for note-taking that combines very flexible formatting of notes along with images, embedded files (like PDFs) and ink (when I occasionally use a tablet) make it unmatched - so far.

Notational Velocity UI
(Note: screen capture and annotation with Skitch)


Making Information Visualization work

Information Visualization is all about helping users develop insight. It isn't enough to show beautiful and amazing pictures - even interactive ones. The key, as with all interfaces, is to think about specifically what tasks a user will be able to perform with the tool. Yet, all too many visualizations fail on this most important and fundamental test.

Stephen Few (of Perceptual Edge) wrote a beautiful 10 page report on this issue - critically analyzing a visually simple visualization by Ben Fry of healthcare spending (see pie chart above). The key is that it doesn't actually enable you to learn anything. He then goes on to create an interface that actually does enable you to discover all sorts of things. The new interface is not simple. Well, each component is simple, but there are lots of components and it may take a minute to figure them out. But no more than that, and then you discover that it is conceptually simple, and you can actually use it.

Here are the take-home lessons from the article - but go and read it - it is well worth it.
  1. 2-D position and the lengths of simple objects such as bars encode quantitative values in ways that are easy to perceive; angles and areas do not, and therefore should be used only when you can’t use better means.
  2. We cannot build a picture in our heads of a pattern that is formed by multiple values (such as the average cost of healthcare for patients of each age from 1 to 79 years old) by looking at one value at a time.
  3. Lines do a good job of showing the pattern formed by a set of values across a continuous range such as patients’ ages, and do so in a way that allows us to compare patterns when multiple data sets are represented at once (such as one line per disease).
  4. Multiple graphs shown together are often a better solution than a single graph, especially when several variables are involved.
  5. Several simultaneous views of the same data set, each showing the data from a different perspective, make it possible to see relationships that can’t be seen from one perspective only or from viewing different perspectives independently.
  6. The ability to easily fi lter out data that doesn’t concern


January 6, 2010

Microsoft Live Sync vs. SugarSync (Live Sync wins)

I've been a long term advocate of file syncing software. It keeps all of my personal files in sync across my 3 computers (2 desktops and a laptop), even going across operating systems (windows and mac). But over the last few months, I have been doing a shootout between Microsoft Live Sync (free) and SugarSync (pay).

I had used, loved and evangelized Live Sync for years - since before it was a Microsoft product (they acquired "FolderShare" from ByteTaxi in 2006, I think). But when Snow Leopard came out for Mac, Sync just didn't work. There was very little response from Microsoft and no ETA for a fix. After waiting a few weeks and growing increasingly desperate, I looked at several other solutions.

One popular one is DropBox, but it has a design showstopper for me. Everything that gets synced has to be in a special folder that gets synced. That isn't the way I work. I want to keep my current file system and choose which subfolders get synced to what, so DropBox was out.

The other major competitor is SugarSync. It lets me control what and where I sync and it has a nice UI. There is one major annoyance which is that it isn't peer-to-peer (like Live Sync). It syncs to the cloud, so all your files sit on their servers. This adds backup and safety, and lets you sync between computers that aren't on at the same time. But you lose privacy, and you eat up their cloud-based disk space - and you have to pay for that. I pay $5/month for 30 GB. Not too bad, but annoying since I am forced to pay for a feature that I don't even want. But I had no choice, so for the last few months, I've been living with SugarSync.

However, that experiment was a failure. I *wanted* to like it, especially since the user experience was quite nice. However, the service was just unreliable. At least a half dozen times over a period of a few months, the synchronization would stop. It would get blocked on some file and I had to go through their technical support to fix it. I'd have to delete some cached files, or they would jiggle something on their server, and in a day or two, we would get it working again. But it kept happening. Sometimes it was a result of me making a configuration change (i.e., reinstalling an operating system), and sometimes it just happened. In addition, when it got into this bad state, it would sometimes replicate files and I would find several versions of a file one machine - ugh.

Fortunately, Microsoft came through and after two months, they posted a solid version of Live Sync for Snow Leopard, and I switched back. It is working beautifully. It is free. It is fast (since it doesn't go through the cloud). And I don't have to give my files to someone else's cloud.

Go Microsoft. In this battle, you are the clear winner.