Open Source Hall of Fame

There’s an abundance of open-source code out there. Thanks to the internet and the flourishing of open-source, it’s possible to explore the programs that power some of the world’s most popular applications.

A big problem with software education is that people spend most of their time looking at toy solutions to toy problems. Idealised teller machines and leap year calculations can only take you so far. Real-world software is rarely, if ever, covered.

Compare this with a related field: building architecture. Aspiring building architects (who sometimes like to refer to themselves as “real” architects) are force-fed a substantial diet of buildings and structures. They get to know the great architectures of the world and the architects that made them. By the time they are finished studying, they can compare building X with building Y, and take inspiration from both.

Now, this has not always been possible with software. To a certain extent, open-source software has always been around. But for a long time, it was impossible to get hold of any serious code. As Richard Gabriel and Ron Goldman – advocates of “software as literature” explained:

The effect of ownership imperatives has caused there to be no body of software as literature. It is as if all writers had their own private companies and only people in the Melville company could read “Moby-Dick” and only those in Hemingway’s could read “The Sun Also Rises.” Can you imagine developing a rich literature under these circumstances? Under such conditions, there could be neither a curriculum in literature nor a way of teaching writing. And we expect people to learn to program in this exact context?

To bring about the change, it took fresh views on the economic benefits of open-source in certain contexts, combined with the internet to make it all accessible to the masses. SourceForge currently has 94,671 registered projects. So make the ridiculously conservative assumptions that no other projects exist and that only 1 percent of those projects are serious. That leave 946 serious projects to be mined and explored for educational purposes.

It’s not just the code that’s exposed, but also the process. Since most open-source hosts contain version control repositories, it is possible to track project evolution. Furthermore, it can be tracked against discussions in mailing lists, project weblogs, and other work artifacts.

What we need is an Open Source Hall of Fame, like the (sadly unmaintained) Interface Hall of Fame which was a source of entertainment and education to many HCI people in the late 1990s. It would contain galleries of quality code and cover critical moments in the evolution of projects. Information like this would complement design patterns and further their development.

File Dialogs for the 21st Century

File dialogs: you use them to open and save files all the time and you don’t think about them much. But if you did think about them, you’d have to conclude they are dinosaurs of the 80s roaming around in the 21st century.

Here’s what the File Dialog with the mostest would have: * Searchable – Based on the same indexing technology used by the desktop searches, let me just type the file name in. It’s not rocket science! * Unix-like tab completion. As I type the name and use bash to complete, update the directory view. * Bookmarks/favourites feature. Support three categories: (a) read-only bookmarks containing usual suspects such as my home directory, (b) personal bookmarks which I can set for all applications (e.g. “home/research” “/opt/projects”), (c) bookmarks specific to this application. * History feature: Remember the last N files I’ve accessed.

See, google’s dominance has led to a search-crazy world. And good thing, too. Browsing through a hierarchy worked when hard drives contained a few hundred documents. But it’s becoming a little challenging in a world where the Library of Congress will soon fit in your pocket. So Google Desktop and a host of competitors now let you pinpoint files on your hard drive in a second.

But how about the file dialog? Same old, same old. This is particularly noticeable in Linux, where there is a proliferation of dialogs. Using a gtk-based app? Here’s the gtk dialog. KDE? KDE dialog. Java? Java dialog. (Maybe.) Even when the dialog is the same – as in Windows – it just plain sucks!

As a related point, how long until the desktop search tools are provided as standard components, capable of being integrated into such controls as file dialogs?

Source code: String of ASCII or Tree of Goodness?

Source code as structure rather than text … bring it on!

Jon Udell blogs about The Deep Structure of Code. Instead of treating source code as a boring old text file, treat it as a data structure. Then, you can render it however you like it. I was captivated by this idea when I read this 2003 James Gosling interview about Jackpot.

Gosling explained that treating programs as structures lets you perform powerful refactorings:

It’s a very different world when a program is an algebraic structure rather than a bag of characters, when you can actually do algebra on programs rather than just swizzling characters around. A lot of things become possible … If you look at any of the refactoring books, most of those refactoring actions become much more straightforward, in ways that are fairly deep.

In addition, he illustrated how views can be flexible:

[O]nce it’s not text, all of a sudden you can display it in really interesting ways … You can, for example, turn the square root function into the obvious mathematical notation. You can turn the identifier theta into the Greek letter theta. You can turn division into the horizontal bar with numbers stacked. And we’ve done experiments with wackier things, such as trying to generate real time flow charts.

Software developers, we need to eat our own dog food. Through the magic of software, we’ve allowed end-users to view and manipulate databases in countless ways. A single corporate database might be viewed and edited via any number of command-line interfaces, charts, text reports, and web pages. But how about source code? Just a glorified text editor will do, mate.

Eclipse and Idea advance the idea somewhat. They do treat code as structure and are much more powerful on the refactoring side. Also, plugins are available that manipulate this structure to render code as UML. But there is so much more to go.

In terms of manipulation, you should be able to manipulate code like a GUI — altering the source code text of an attribute performs a rename refactoring; dragging one class into another makes it an inner class.

In terms of display, data structures could be represented visually (and manipulated that way too). For instance, a multi-dimensional array could be depicted as a filled-in table. This view would be especially useful during debugging. Lines between words could be shown to indicate relationships. These views don’t all have to be on; the point is to make them flexible, in much the same way as systems for experts in other domains. That’s the magic of software, and something you can’t do with paper: infinite representations of the same data; the right combination chosen based on the user’s disposition and situational needs.

As a side note, the idea of representing the code in XML is actually a non-issue. As Jon Udell points out, programmers themselves don’t have to touch the underlying structure, and Eclipse/Idea are living proof.

“Amazon Inside”: Real Uses of the Amazon API

The Amazon API has its uses (plaudits Smart Mobs).

As web legend Philip Greenspun taught me, great sites can be made by pulling in content from other sites. So the idea of web services holds a lot of promise. Google and Amazon APIs have been out a couple of years already, and there isn’t much obvious effect. So it’s nice to see a few real applications, and I’m sure there’ll be plenty more to come in Web 2.0.

The link contains an image rather than text, so here are the actual sites using the APIs:

Agile Software Riffcast 4 of 4: The Dark Side of Agile

Here’s the final of four podcasts on agile software development. If the first three got you buzzed about cutting code the agile way, and you’re pumped up to do it, and you’re just bursting to get out the gate … this one will make you think twice. It’s not all roses you know! In the spirit of pragmatism, it’s important to be aware of the strengths and weaknesses of many different approaches. So this podcast looks at the flaws and challenges for agile software development.

Click to download the podcast mp3

This is a Podcast. On Internet Explorer, Click the left mouse button to listen, or click the right mouse buttton and “Save As…” to download. Better yet, you can subscribe for updates straight into your PC or ipod – it’s easy and free. Install the free, open-source, Ipodder client and when it starts, just paste this in: “”. Too easy! 15 minutes and you can be subscribed to receive thousands of MP3 podcasts – straight to your PC as soon as they’re published. And also your IPod if you have one, or you can listen on any other portable player. More info in the Podcast FAQ.

Show notes for this podcast:

  • Methodologies: Pragmatic good, dogmatic bad.

  • Sources:

    • Personal and others’ views and anecdotes.
    • McBreen’s Questioning Extreme Programming
    • Stephens and Rosenberg’s [Extreme Programming Refactored]
    • Polite commentary and outright flame wars on forums such as Usenet.
  • Non-starter problems: (traditional complaints where agile has reasonable comebacks)

    • How can we keep quality high if the software keeps changing?
    • What if staff leave?
  • Open problems: (further complaints which I feel still need to be answered):

    • Limited project size and criticality
    • Continuously changing non-functional areas
    • Gathering requirements without business analysts
    • Can be more demanding: more social interaction. (see Kathy Sierra’ blog entry on pair programming and loner personality types).
    • Might work for developers, but does it fit with external stakeholders (managers, clients, auditors, users)?
    • Billing model: time-and-materials versus fixed-contract.
    • Flatter structure: how about less talented or motivated staff?
    • Can be used as an excuse for hacking (not a criticism of agile per se, but where’s the boundary?)
  • XP-specific problems:

    • Fragile: Can’t always apply all practices, and leaving one or two out can cause project to collapse
    • Why always pair? Some tasks benefit more than others.
    • Collective ownership: who’s responsible?
  • Discussion:

    • (With apologies to Churchill) For many typical projects, agile may be the worse methodology … except all the others.
    • Moreover, avoid direct comparisons and be pragmatic: Treat methodologies as a palette of tools and techniques. Know them well, and take on whatever fits your current needs.
  • Agile Series Wrap-Up.

Earth-Shattering: HP To Drop IPod?

HP might be about to drop its rebranded IPod ((nice one Engadget). Thus closing the book on the MP3 player that never could have been.

HP do have some sort of plans to create the multimedia lounge room experience. But these are “Carly” plans, not “plan” plans that the real HP could have pulled off a decade ago. If they do proceed with the multimedia route, they could still make it compatible with IPod without having to rebrand the IPod. HP’s supposed to be a gigantic multinational hardware manufacturer isn’t it? A custom MP3 for the intelligent home should not be beyond their capabilities, and would make a better solution than having to slavishly follow Apple’s standards.

Innovation, good. Rebranding, ???.

Unfiction: Alternative Reality In and Out of the Web

Found this article paper (was printed in this month’s ACM Interactions) on creating web-based story games.

Otherwise known as unfiction games.

Perhaps the first popular unfiction game was Blair Witch project, where a site was created to be deliberately ambiguous about the line between fiction and reality. Then, The “Beast” project. Do you remember the brief buzz before the “AI” movie came out in 2001? It wasn’t about the movie, which disappointed many, but about the large web of interlinked sites that had been created to promote it, offering a slice of life in 2142. And most recently, I Love Bees was a succesful tool of promotion for the Halo 2. This article was written by the creator of Exocog, which promoted Minority Report.

The article provides some useful tips for designers of this genre: * How much interactivity? Blair Witch (1995) was basically static. Exocog websites included a blog, evolved over several weeks, and also included features such as a forum, a webring which real sites could attach to, and publishing research proposals sent by real users. “I Love Bees” took it further, calling public telephones and, according to the article, “found ways to build player-generated e-mail, even individual telephone calls to players, into the game”. * The line between fiction and reality is tricky. The article cies the Godsend movie promotion, which contained a website about a fictitious cloning institute. The problem was that many people googling for cloning thought it was real, which led to bad press. So they suggest it’s important to consider how people get to the site and how realistic the content is. * How to measure business value? We all know advertising is tricky to measure. The internet was supposed to make the connection more clear, but games like this probably warp things again. So the authors ask open questions such as whether the efforts are worthwhile, and how to decide on how much to do.

It’s interesting that most of these games, when uised for promotion, have focused on movies or games. Unfiction could equally be used to promote a product or an idea.

More Random Shuffle Thoughts and “Playlists as Moods”

  • Die-hard ipod fans will attribute it with a hint of clairvoyance. I’m listening to Tech Nation with Apple journo Leander Keahney. It was recorded before the Shuffle was out, but he was commenting how the IPod on shuffle mode can sometimes seem to find just the right song for the moment. Since humans are naturally inclined to anthropomorphise technology, and since the concept of probability is also not a strong point (casinos exist), it’s only natural to assume that shuffle-mania will lead to some people deciding that The Ipod Knows.

  • Goodonya Apple for innovating. I was a bit harsh in my previous entry because, quite frankly, I wouldn’t contemplate using a flash player without a screen when there is so much better around – iriver, creative, etc. However, I like that Apple are willing to take such a novel idea mainstream.

  • Pity about podcast creation. I wouldn’t expect a new audio player at this stage to embrace podcasting. But there is a general trend towards people creating their own text/audio/video content. It would have been nice to see a built-in microphone like many of the other devices. But hopefully a smart company will come along and produce a high-quality one. And hopefully the OS doesn’t cripple like the way the ipod recording is capped at only 8khz, despite the hardware offering 96khz. Even speech suffers greatly at 8khz. At 96khz recording, it could make an okay portable recorder. Hardly brilliant without a screen, but usable.

  • Pity about podcast listening. Whether in shuffle mode or not, it wouldn’t be much listening to podcasts in the absence of a screen to choose podcasts. You can’t just skip through podcasts to hear which one to listen to, because many of them won’t identify themselves immediately if at all (such as those on

Okay, here’s what I really want on my ipod and it would actually fit well with the Shuffle: treat playlists as “Moods”. I want to switch from “I feel like listening to hyper music” when I start going for a run, to “I feel like listening to chilled music” when I’m in the middle of the run, to “I feel like listening to speech” when I’m getting bored of the run to “I feel like listening to hyper music” when I feel like I can no longer run. You can almost do this now by switching between playlists, but there are two key enhancements I’m looking for:

  • Pick up the Mood where I left it. Naturally, I don’t want to start at the first track in the playlist. Since I keep switching between Moods, I’ve recently heard it. Moreover, I want to keep going with the same track, at the point where I left it. This is critical for speech. It’s not enough to save position for AAC files. That’s an artificial barrier. Just because I wanted to listen to music for ten minutes doesn’t mean I should have to spend 30-60 seconds finding where I was. Even if IPods had a bookmark feature, I’d prefer not to bookmark it permanently because the need is too transient.

  • Rapidly switch between Moods. I’m looking for a hardware button to rotate mood. The above example is not the only driver. When commuting, I switch frequently between reading and listening to speech. When I’m walking, I prefer to listen to podcasts. When I’m on a bus, I prefer to listen to music while reading. When I’m crushed in a tube carriage, I prefer to listen to podcasts.

BTW, Mood is not the most accurate term. Clearly, I’m not suggesting people swing from depression to elation by embarking on a train! I just think “Mood” just happens to be a more evocative term than “current context and needs of the situation such as they have arisen”.

This all fits in with the “young people multitask” cliche anyway. Now if the shuffle was to hold several playlists, it would be a much more attractive device (to anyone who is not convinced that it can read their mind and pick the right song at any time anyway). Do people listen to different types of music? I’d have thought so … that’s one of the selling points of HD-based players. So how will they feel when they leave home and have to choose between optimising for gym versus optimising for work or commuting? The problem doesn’t need to be there: let people hold several playlists and switch between them as their moods shift throughout the day.

Shuffle Along Now

Apple’s going for all the superlatives: bestseller, most coveted, and now … most questionable of them all, the IPod Shuffle.

There are clearly some design concerns here – like who forgot the screen? And a microphone, though slightly niche, would bring it up to par with IRiver and other competitors.

But, after all, it’s a shiny white ipod … it will sell out by the weekend even if it doesn’t actually emit any sound. More concerning to Apple’s bottom line should be the effect on its traditional customers, who have always paid a pretty premium. As Russell Beattie points out, the Shuttle strategy is likely flawed because people choose products based on how it makes them feel about themselves. Walking around with a white cord emerging from your innards won’t be half as cool when the masses buy in. Forget about IPods on the catwalk, sexy bodies on posters, and magazine features asking celebrities what’s on their pod. Madonna and Bono, make way for Homer and Marge!

The premium people pay for Apple is not just the price of looking and feeling cool. Apple also have a good reputation as a solid manufacturer and worthy provider of support. Personally, I’ve had a couple of incidents with my IPod and they’ve been extremely professional. So much so that it’s a big factor for choosing my next laptop. I doubt Apple would tell me they’re not honouring the warranty because it’s my fault that a key fell off the keyboard. Toshiba did so (they told me it indicates irregular use … like typing instead of using the mouse???). Dell has done far worse in the past. So, in my case, my experience with IPod support has encouraged me to buy an Apple laptop next time round. Handling support for a mass market is a very different thing for Apple. There are logistics issues and a likely increased proportion of claims … if they can’t take care of it, they will attract a bad name and risk getting their traditional customers offsite. Will you buy an Apple if you have to keep returning faulty Shuffle models? Or, in a more extreme case, what happens to the design firm contract when the CEO’s son gets stonewalled by an Indian call centre who refuse to fix his faulty Shuffle? I just hope Apple can deal with all those support issues.

And presumably Jobs’ underlying strategy is to deal with these issues admirably. Get everyone hooked on the “Apple Way”, so the mass market will end up buying Apple PCs, and, in the not-to-distant future, Apple phones with all the premium services you can imagine. If this dodgily-designed player is the piece of kit that takes them there, then their 200+ percent stock rise is looking pretty conservative.

Why’s Ruby: Bizarro Ruby Text

Why’s (Poignant) Guide to Ruby (polite applause Bruce Eckel)

Looking forward to reading this online book. A little bit because Ruby is such a nice language, but mostly because the book looks so damn bizarre and contains abundant cartoons, all the while being really well presented.

Is it possible not to appreciate a textbook that eases readers into this powerful dynamic programming language with the following opener:

Pretend that you’ve opened this book (although you probably have opened this book), just to find a huge onion right in the middle crease of the book. (The manufacturer of the book has included the onion at my request.) So you’re like, “Wow, this book comes with an onion!” (Even if you don’t particularly like onions, I’m sure you can appreciate the logistics of shipping any sort of produce discreetly inside of an alleged programming manual.)

As luck would have it, there is Ruby content to be found at some later point.