Sugar leaves the One Laptop per Child nest

May 16, 2008 under usability, hci, olpc

Sugar Labs logo

It’s been an interesting 24 hours for anyone who follows the One Laptop per Child project. Yesterday, OLPC announced that they have teamed up with Microsoft to make Windows XP available on the XO. Then it was announced that Walter Bender, OLPC’s former president of software and content, is forming a new organization called Sugar Labs to spearhead development of the Sugar user interface.

This is an interesting development. I started working on OLPC-related projects a few months ago, doing some work on the user interface for the built-in graphics tablet. Back in January, I wrote about how cool I think the Sugar UI is. I really hope that Sugar can gain some momentum on its own, instead of constantly being overshadowed by the political and ethical issues of the One Laptop per Child project as a whole.

I’ve been thinking about buying myself some kind of ultra-portable laptop, and since I find it almost impossible to type on the XO keyboard, I’m currently eying the Asus Eee PC. I don’t think it makes sense to use a conventional desktop environment on that kind of machine, and I think that the current Sugar UI is a really promising alternative. Now that Sugar is being developed separately from the OLPC project, it will be interesting to see if it can develop into a useful general-purpose desktop shell.


This is my brain on Twitter

May 7, 2008 under meta

In case you just can’t get enough of me on this blog, I’m pleased to announce the following:

Since all my other plans fell through, I decided to show up to the Twitter party (fashionably late, of course). You can get your Dubroy fix in bite-sized chunks at http://twitter.com/dubroy. Hope to see you there!

And from time to time, I bookmark things that strike my fancy at http://del.icio.us/pdubroy. Most of the links are relevant to this blog, so I try to post a link roundup here every now and then.


Technorati Tags: , , ,

If this is Object Calisthenics, I think I’ll stay on the couch

May 6, 2008 under programming

Via Raganwald, I saw this post by Andrew Birnstock: Perfecting OO’s Small Classes and Short Methods. The post is a summary of an essay by Jeff Bay called Object Calisthenics, from the new Pragmatic Programmers book The ThoughtWorks Anthology.

“Object Calisthenics” is supposedly an exercise to get you to write better object-oriented code. Reading through the suggestions, I couldn’t decide if the article was serious or not. From Andrew’s summary:

  1. Use only one level of indentation per method. If you need more than one level, you need to create a second method and call it from the first. This is one of the most important constraints in the exercise.

  2. Don’t use the ‘else’ keyword. Test for a condition with an if-statement and exit the routine if it’s not met. This prevents if-else chaining; and every routine does just one thing. You’re getting the idea.

  3. Wrap all primitives and strings. This directly addresses “primitive obsession.” If you want to use an integer, you first have to create a class (even an inner class) to identify it’s true role. So zip codes are an object not an integer, for example. This makes for far clearer and more testable code.

From what I can tell, this really is serious. These are supposed to be the object-oriented equivalent of chin-ups, designed to whip you into shape to write better OO code.

This strikes me as so bogus, I can’t even begin to describe it.

I’m not against OO: I’m a huge fan of Smalltalk, and I cut my programming teeth at one of the oldest object-oriented development shops. In fact, I keep thinking of something that Steve Northover used to say to me when I was on my first work term at OTI:

“That which obscures my code is bad.”

If you’ve ever seen a large body of code that adheres to The One True OO StyleTM — like say, Smalltalk class libraries — you’ll understand that almost every step you take towards “true OO” is just another way of obscuring the meaning of your code. If you break your code up into 10 different methods, then that’s 10 different places I have to look to figure out what is going on. You’re just writing spaghetti code by a different name. If you’re building a very large library, then maybe, just maybe, the additional flexibility is worth it.

I think Paul Graham sums it up best in his essay Why Arc Isn’t Especially Object-Oriented:

My own feeling is that object-oriented programming is a useful technique in some cases, but it isn’t something that has to pervade every program you write. You should be able to define new types, but you shouldn’t have to express every program as the definition of new types.


Firefox’s awesomebar: a command-line for web apps

April 23, 2008 under usability, hci

Mozilla Firefox logo

One of the cooler features of Firefox 3 (which is currently in beta) is the awesomebar, which is the nickname for the URL bar and its new autocomplete features. Madhava, one of Mozilla’s talented interacticians, noticed something neat: this means that the URL bar can be used as a shortcut to perform commands in web apps like Google Docs.

Here’s how it works: instead of navigating to Google Docs and clicking the “new document” button, you can just type the words “new document” into your awesomebar. These search terms will match part of the query string of a Google Docs URL, and visiting that URL will pop you right into a new document.

This reason this works in Firefox 3 is because the awesomebar autocompletes anywhere in the URL or page title, not just at the beginning of the URL like older versions of Firefox. For more information about the awesomebar, check out Deb Richardson’s post, or see some of my older posts: Firefox 3 Awesomeness and Firefox 3 Beta 1: Usability impressions.

I just tried something similar when I went to write this post: instead of navigating to my blog’s admin page and then clicking “New post”, I just typed “new post” into the URL bar. The first hit was on the title of the Wordpress “Create New Post” page. Sweet!

I think this is pretty cool. It means that Firefox’s URL bar is now a command-line for web apps. Of course, this is just more evidence of the command-line comeback and the URL as a user interface.


What I’ve been up to: freehand drawing on the OLPC laptop

April 17, 2008 under design, usability, hci, olpc

Some of you might remember my post from January where I talked about the innovative interface of the OLPC laptop. I wrote that post after talking to Mike Fletcher about doing an OLPC-related project for a course I was taking with Greg Wilson. It turned out to be a really fun and cool project, and now that I’m finally finished the course, I thought I’d post about it here.

So, you’ve probably all heard of One Laptop per Child. They recently started shipping their first laptop, which is called the XO. One of the unique things about the XO is that it comes with a built-in graphics tablet. Unfortunately, the system software doesn’t come with tablet support built-in. My project for the semester was to work on improving the tablet support — specifically, the API for activity developers, and the user interface for drawing.

The user interface ended up being the most challenging part of the problem, because the XO tablet is not quite like a standard graphics tablet. It has no hover mode, and it has an aspect ratio that’s completely different from the XO’s screen. In this video, where I explain some of the ways I’ve come up with to deal with these problems.


For more information about the project, check out the Pen Tablet Support and Pen Tablet UI pages on the OLPC wiki.

I’m planning on continuing with this work this summer, so if you’ve got a comment or any other ideas, I’d love to hear them. Leave ‘em here, or send me an email.


On wiki markup languages

April 10, 2008 under usability

In the past few days, I’ve been doing quite a bit of writing in three different wikis:

I’ve become pretty finely attuned to the difference between their markup languages. The OLPC wiki runs on MediaWiki, the same as Wikipedia. The version of DrProject that we’re using seems to use a variant of the MediaWiki syntax. Jottit uses Markdown format. In this wiki-markup-language-cage-match, here’s my decision:

Markdown rules.

Markdown wins, hands down. In fact, ever since I learned about Markdown a few years ago, I’ve been wishing for a wiki that would support it. Luckily, more and more are. In fact, even the new version of DrProject supports Markdown.

I won’t even begin to go into the reasons why Markdown is so superior. If you haven’t tried it out yet, give it a go.


Technorati Tags: , , ,

The *real* reason you want a multiple monitor setup

March 28, 2008 under usability, programming, the brain

Despite the fact that there is little evidence that using multiple monitors will make a programmer substantially more productive, many coders will subjectively claim that they can’t live without a second display. Why do people feel so strongly about the issue? And is it possible that the perception of efficiency is just as important as real efficiency?

The Scientific Angle

A few months ago, I experimented for a while with a dual-monitor setup. My main computer is a 14″ Thinkpad, and I connected to either a 24″ widescreen LCD (in my lab at U of T) or my 20″ widescreen at home. After a while, I found that I wasn’t really seeing the “obvious benefits” that some people rave about.

I had heard about studies that supposedly proved that you can be up to 50% more productive by adding a second display. In my post Multiple-Monitor Productivity: Fact or Fiction? I looked at these studies, and concluded that in some isolated tasks — like cutting and pasting, or working with a large spreadsheet — you can see a significant benefit if you add a second monitor. But for most programming tasks, the benefits are going to be minimal (but still there).

After another study was recently published by some researchers at the University of Utah, Jeff Atwood took the time to put together a summary of the studies of all the studies we could find — a “a one-stop-shop for research data supporting the idea that, yes, having more display space would in fact make you more productive”. In case you couldn’t tell, Jeff is a big fan of multi-monitor setups:

I have three monitors at home and at work. I’m what you might call a true believer. I’m always looking for ammunition for fellow developers to claim those second (and maybe even third) monitors that are rightfully theirs under the Programmer’s Bill of Rights.

The Subjective Claims

If you read the comments on Jeff’s article, you’ll see that, despite the lack of empirical evidence that programming tasks will significantly benefit from multiple monitors, many programmers are pretty attached to idea:

  • Leon Mergen: “People who claim there is no benefit (or little benefit) in programming with multiple monitors, obviously haven’t really expercienced it.”

  • SB: “Have you ever actually used (like, for many months/years) multiple LCDs? … I don’t know how a programmer could go from multi-LCD setup to single display & not claim some, even if minor, productivity dropoff.”

  • Brian: “I personally find that in my case having a second monitor is ALWAYS more convenient and increases productivity.”

This morning I finally ran across a paper which talks about these subjective benefits. Jonathan Grudin’s Partitioning Digital Worlds: Focal and Peripheral Awareness in Multiple Monitor Use has some interesting insights. Grudin interviewed 18 people who used multiple-monitor setups, and came to the conclusion that:

A second monitor improves efficiency in ways that are difficult to measure yet can have substantial subjective benefit.

One of his interesting observations was that it’s not just about the screen real-estate, it’s also about the partitioning (emphasis mine):

A strong demonstration that multiple monitors can be more about partitioning than about increasing space is provided by the two participants who dock their constantly synchronizing palmtop computers next to their desktop monitors. One keeps his calendar visible on the palmtop, the other keeps email visible. The increase in space provided by the palmtop display is not significant and there is no information on the palmtop that is not available to the desktop computer. The value is in having instant access to a resource in a known location in peripheral vision.

This the same conclusion that Jeff made after seeing the results of a small, informal multiple monitor productivity study: two monitors is better than one large monitor.

Another interesting finding in Grudin’s paper was just how much people hate to use the taskbar or Alt-Tab to switch windows:

Given the ease of minimizing and restoring windows, why bother with a second monitor? Repeatedly, people indicated that they considered it a relief not to have to use buttons, “escaping from the need to Alt-Tab.” The ability to avoid a few keystrokes is welcomed with great subjective enthusiasm, although it might be difficult to objectively measure an efficiency gain.

Perception vs. Reality

To me, this really captures what the argument’s all about. It’s not necessarily about actually being more productive — perceived productivity is just as important. It reminds me of Bruce Tognazzini’s famous finding on the relative speed of the mouse vs. the keyboard:

We’ve done a cool $50 million of R & D on the Apple Human Interface. We discovered, among other things, two pertinent facts:

  • Test subjects consistently report that keyboarding is faster than mousing.
  • The stopwatch consistently proves mousing is faster than keyboarding.

This contradiction between user-experience and reality apparently forms the basis for many user/developers’ belief that the keyboard is faster.

In my experience, many people who love multiple monitors are the same people who are obsessed with knowing every keyboard shortcut in their text editor, and who can’t live without mouse gestures in Firefox.

Don’t get me wrong. Even if the benefits are unproven, minimal, or even non-existent (as in the mouse vs. keyboard case) — it doesn’t really matter. The most important thing is that you, as a programmer, have the tools that you want to do your job. I definitely don’t question the productivity benefits of being happy.


Spring Fever: Links for March 14, 2008

March 14, 2008 under Uncategorized, links

It’s finally feeling like spring in Toronto; 6° and sunny today. Here are some links to help you procrastinate on a sunny Friday afternoon:


Technorati Tags: ,

If you can’t say anything nice…

March 10, 2008 under design

Apparently someone from Rogers Wireless remembered the old adage “if you can’t say anything nice, don’t say anything at all.”

I was taking a look at the phones they offer for prepaid, and got a laugh out of the description for the Motorola W370:

Rogers Wireless phone features

The features for the Nokia 6080: “Great value!”, “Pocket sized”, “Sleek design”, and “Embedded camera.” For the Motorola W370: “Flip phone”, “Affordable”, and then a blank bullet. Like the sales guy just gave up: “Meh…I got nothing.”

If that doesn’t convince you to grab one of these babies while you still can, I don’t know what will.


Technorati Tags: , , , , ,

Design Transformations

March 3, 2008 under design, the brain

Geometric design

My friend (and recent DGP graduate) Gerry Chu has started a cool blog on interaction design called Design Transformations. It looks at how existing designs can be transformed into new ideas by applying certain “design transformations.” For example, his first post is about how a mouse is just a trackball turned upside down. Eventually, the goal is to come up with a kind of cookbook of transformations that designers can use for brainstorming.

The concept reminds me a bit of Roger von Oech’s Creative Whack Pack, which I got at a Christmas gift exchange a few years ago. It’s a set of 64 cards, each one with a different “creativity strategy.” Some examples: “Try a Random Idea”, “Imagine How Others Would Do It”, and “Slay a Sacred Cow.” It may sound a bit cheesy, but they’re actually pretty useful. See also Brian Eno’s Oblique Strategies.

(Photo by tanakawho)


Next Page »