« January 2003 | Main | March 2003 »

February 2003

February 27, 2003

Ruby on NewsFactor

Joe Brockmeier interviewed Matz, Chromatic, and me for an article on Ruby in NewsFactor.

You may or may not have heard of Ruby -- it is only now gathering steam outside of Japan -- but you would do well to familiarize yourself with it, since it is rapidly gaining popularity among open source programmers and in enterprise settings.
It seems a pretty reasonable summary, and (wonder of wonders) we all three seem to have said roughly the same thing!

February 26, 2003

Spring and Naked Objects

One my talks at last week's symposium was an overview of Naked Objects. If you haven't played with them yet, Naked Objects are worth a look. The ideas aren't totally new: graphics systems such as ThingLab (and Lemmings) have exposed business objects up to the client in the past. You could even argue that the original airline reservations system architecture of adding and manipulating travel segments in an agent assembly area is a form of naked objects system. But Richard Pawson's Naked Objects is a brave attempt to do this in commercial applications. And it may be an idea whose time has come: the talk seemed to be well received.

After the talk, Erik Hatcher said I should look at Spring. It's an interesting idea.

Imagine a series of panels, each containing a number of images. Each image represents some kind of resource or object: a person, a place, a thing, and each image has a set of built-in behaviors. Drag a person to a restaurant's image, and the system might offer to invite them to dinner. Spring is also not bad as a drop target: you can drop an RSS feed's URL on a panel, and Spring will show the feed's image, updating the headlines behind the scenes. You can drop items from Amazon's store onto a panel, and Spring will keep it there so you can buy it later. Associate that item with one of your buddies, and Spring will offer to send it to them over AIM.

For me, one of the most compelling Spring examples is the Kansas City portal: imagine a panel containing an area map, live weather feeds from major surrounding cities, live stock quotes from local companies, and a selection of local restaurants.

Is Spring a Naked Objects system? In some senses, it certainly is. Each object is identifiable, and has behavior that can be invoked by the end user. Although I found this version frustrating to use (the set of interactions could be richer, and the system really should be better at giving visual feedback of what interactions are supported), the idea is is excellent, and could well show us the shape of desktops to come. And I did like Spring's "suggest an action" feature: link two objects that don't know how to interact, and Spring will invite you to tell it what you expected to happen. This information is then sent on to the developers for consideration in the next release.

Ultimately, Spring and Naked Objects overlap some, but are really oriented at different user domains. Both are definitely worth a serious look.

February 25, 2003

Andy Speaks!

Andy Hunt, my partner in crime, just started his own blog.

February 24, 2003

Entropic Systems

I really hate being locked into an operating environment that’s unreliable, but there’s not much I can do about it; certain applications that I need only run there. So I put up with it.

I put up with random crashes; about once a week the screen just goes blank on one of my boxes and I have to restart. I put up with the fact that new software is difficult to install: every time I load up something new, I find that I have incompatible versions of certain libraries. Update these, and older applications sometimes stop working. And I’m struggling to keep up with all the updates forced on me by security holes.

Maybe one day I’ll be able to switch all my work off to another operating system. Until them I guess I’m stuck using Linux.

Now don’t get me wrong. I’m a Linux fan. I’ve been using it since 0.99pl11. I’ve installed it from floppies downloaded over 4800 baud dial up connections. I’ve religiously installed it on just about every new box I buy. And I’ll probably continue to do that.

It’s just that the bloom seems to be leaving this particular rose. Linux is starting to suffer from many of the same problems as Windows. The kernel itself is (as far as I know) rock solid, but once it is surrounded by the hundreds of megabytes of application-level code that makes up a typical distribution, problems just seem inevitable. I find it interesting: once a system gets to a certain size, it starts to show rough edges. It doesn’t matter whether it is Windows NT or a Redhat or SuSE distribution; the end user experience starts to suffer. The joke used to be that Windows boxes needed a hard drive failure every year to keep them running; the only way to overcome encroaching system rot is to reinstall the OS from scratch. I’m now finding the same is true of my Linux boxes.

Now I know that some of this is my fault: as part of the installation of some piece of software I accidentally trample on some shared library or introduce some other incompatibility. If I just install a distribution and leave it alone, it’ll run fine for months. But in practice I just can’t do that (if for no other reason than I do try to keep up with security advisories).

So I’m left wondering: just as Linux is starting to get a corporate following, are we about to undo all the great work of the last decade? Is the frantic drive to add new features and new applications, with the corresponding risk to system stability, about to undermine the reliability and low TCO on which Linux advocates trade? Is this leaving an opening for Mac OS X Server?

I hope not—I have a soft spot for Linux. But I’m not sure.

February 23, 2003

Random Quote o' the Week

That which is overdesigned, too highly specific, anticipates outcome; the anticipation guarantees, if not failure, the absence of grace.
-- William Gibson. All Tomorrow's Parties

February 22, 2003

Netless in Austin

I'm down in Austin talking at the first of this year's No Fluff Just Stuff symposia. I'm still recovering from a shock: the hotel we're in doesn't have broadband to the rooms. This is the first time this has happened to me in over a year, and I've become spoiled enough that I dropped my dial-up accounts. So here I am, disconnected and suffering withdrawal. It's strange to think that this was the usual state of affairs just a couple of years ago, and yet now I'm feeling like a petulant child because I can't pick up my e-mail for 24 hours.

February 19, 2003

A Windows Flashback

A couple of days back I let the Mac’s Software Update feature install the 10.2.4 update to OSX. Everything seemed fine until I rebooted last night. This morning, I tried to bring up Excel: it crashed as soon at it displayed an empty spreadsheet. The log showed a problem in some SSL library. Sighing at the reliability of Microsoft software, I decided instead to print my slides for this weekend. Keynote crashed printing up the print dialog. Powerpoint did the same. I tried to ssh in to my Linux box. Ssh core-dumped.

I went on the web: there was one article on the Microsoft site about Excel crashing, but it didn’t seem to apply. Apply had a few notes about uninstalling the print drivers: I did that but it made no difference.

Finally in desperation I drove over to the local Apple store. I was somewhat disappointed that the helpful guy behind the Genius Bar didn’t really seem surprised. After running some diagnostics which found nothing particularly wrong, his suggestions:

  1. Don’t use the System Update version of the OSX upgrade: install the full Combo Update instead.
  2. Otherwise, reinstall the OS.

Sound familiar?

Fortunately, a 77Mb download of the Combo Update seemed to fix the problem, and I’m back being able to print and ssh. Still, I was hoping for a slightly less blunt tool than reinstallation to fix the problem.

February 17, 2003

Ring Around the Earth

NASA has a great page (www.nasa.gov/events/) with news of upcoming events. One of the coolest links is to liftoff.msfc.nasa.gov/toc.asp?s=Tracking, a set of applets and other pages which display the satellites in orbit around us. Watch a real-time display of 700 satellites around the earth, or type in your zip code to see when the ISS next passes over your astral neighborhood.

The 3d view applet is staggering. The Earth is swarmed by stuff we put up there: there’s a fog of LEO devices and a fairly solid ring of geostationary satellites. I just sat and watched it update for half an hour.

There are over 2,500 artificial devices in orbit, and we humans put them there. Each represents tens or hundreds of man-years of effort, and each is a major engineering achievement. At yet they pass silently overhead without our giving them a second thought. Maybe we need to celebrate them more actively.

Of course, if you want to waste time playing with orbital mechanics, there’s always www.bigideafun.com/penguins/arcade/spaced_penguin/ And Chris Morris (www.clabs.org) points me to www.shatters.net/celestia/ if you want something more serious than play.

February 10, 2003

Keynote Slides

Oh well. I gave it the old college try, honest I did. I've been using Apple's Keynote for all my new presentations of Jay Zimmerman's No Fluff Just Stuff symposia. It's been an interesting exercise in both technology and psychology (I first starting talking about this in Keynote).

Today I started work on the last of them. And I sat and stared at the keyboard for a fair while before I started. I wanted to use Keynote. I really did. But in the end, I caved and went back to Powerpoint.

It wasn't a cut-and-dried decision. I still like Keynote. I love the way its slides look, and I think the alignment guides are a tremendous piece of interface technology. But the minor hassles just broke this camel's back. I needed to draw a fair number of diagrams for this one: nothing fancy, just labeled boxes, circles, and arrows. but with Keynote each of these is two separate elements. It's a minor thing, but a hassle, particularly when you have to keep grouping and ungrouping them to make them animate properly. Then there was the export issues: Jay wants 2-up PDFs or Powerpoints. Even if I could work out how to do two-up PDF exports, Keynote seems to generate massive PDFs (unless I disable background images).

None of it is major, but it all gets in the way. And I just needed to get the job done. However, when 1.1 rolls along (or if Apple have a beta available somewhere) I'll be trying it: I really want Keynote to succeed.

February 09, 2003

Every Day in Every Way

Imagine a simple (and somewhat boring) card game. In each round, all players are dealt one card each. Each player may hold at most three cards (so after the third round they must start discarding). After an arbitrary number of rounds, the player with the highest card total wins.

The strategy is pretty simple: when forced to discard, always discard your lowest card. No rocket science here: when you can’t control the cards you’re dealt, you win by eliminating the weakest of your holdings.

This seems to be a reasonable strategy in any situation where you need to optimize some collection of "things," but where the resources you receive have unknown characteristics.

Our industry is suffering from an embarrassment of bad programmers. Much of the blame can be leveled at the hiring frenzy that occurred during the dot com boom, where anyone who could play Quake (or who had once watched someone play Quake) could get a job coding (and playing foosball at work). Many of these people are still in the industry.

So now we have a problem. Interviewing and recruiting good people is very difficult; For most organizations we’ve seen it’s a hit or miss affair. This means that the bad get let in along with the good (just like being dealt random cards). However, once the bad folks have been hired, it turns out to be hard to fire them. Unlike the card game, they stay in your hand, dragging down your overall score.

There are three things to be done here. First, companies could get better at recruiting. Unfortunately, one of the best indicators available to recruitors, past performance, is hard to come by. In the US at least, employers now tend to give anodyne references to ex-employees rather than tell the truth and risk being sued.

Second, we could find a way to fire the ineffective developers. If that happened enough times to an individual, they might get the hint and leave the industry (which would be good for all of us). Unfortunately, that’s also unlikely to happen. Even though most developers in the US are employees at-will (meaning they are in theory employed at the whim of their employer), in reality the various anti-discrimination laws make firing a risky business for most companies.

Our third strategy isn’t available to the card players: we can improve the individual cards in our hand. This means working hard to train and retrain folks, not just in the specifics of technologies and languages, but also in the soft disciplines: communications, business practices, and so on. Some developers aren’t trainable, but I’m thinking that the vast majority will benefit.

Interestingly, there are companies who recognize the value of attrition. GE, for example, has every level of manager rank their employees. After justifying these ranks to the manager’s manager, the company then puts in place an action plan for the bottom 10% (a plan which can include termination, a performance improvement plan with a time limit, or a move to a more suitable position). I don’t think I like the rigidity of GEs policy (at least as externally stated), but I think the intention is good.

Over the next few years, we all have to do something to improve the quality of the work delivered by our industry. If we don’t, we’ll find legislators doing it for us (possibly with professional licensing schemes and attempts to hold developers liable for faults in software). And improving the quality of work means improving the quality of the development community. Maybe it would be in our long-term interests to find ways to make recruiting more reliable (perhaps by setting up a way for employers to comment truthfully on a developer’s past performance). We need to make it easier to fire the truly bad developers (contract to hire and probationary periods are a good interim measure). And we need to find ways to promote on-going professional training. If we don’t help ourselves, someone in government will do it to us.

February 07, 2003

Passing Information to Our Children's Children's ... Children

There’s a great article in the January 2003 CACM which describes some very long-term data storage technology (Organic Data Memory using the DNA Approach).

In a nutshell, you encode your information using sequences of DNA base triplets (AAA, AAC, AAG, and so on), then splice these on to the end of a DNA strand, making sure that the stuff you write is past that strand’s stop codon. You then perform the necessary magic to get this DNA into the host’s genome. That way the new material will not take part in protein synthesis, but will be passed down as genetic material from generation to generation.

This isn’t science fiction: the researches encoded the words of "It’s a Small World", added them to a bateria’s genome, then extracted the information again. Because bacteria can withstand all kinds of abuse (dessication, extremes of temperature, and so on), they believe that this gives us a good long-term storage scheme. (There’s the problem of mutations to deal with, but decent error correcting codes could probably deal with this).

Now, of course, we’ll see the RIAA step in to the act and insist that they need to add unique digital signatures into every human being.

February 05, 2003

Dave's Converging - Part Deux

So I read a review of the new Nokia 3650 device. I was going to call it a cell phone, but that would be like calling an Ferrari a mobile cigarette lighter.(see www.nokia.com/nokia/0,5184,2275,00.html).

This device gets pretty close to ideal for my current needs: I can carry it in my pocket. It plays well with the laptop, so I can use Bluetooth to export PDA-like things to it. It is programmable (in C++ and Java, no less), and has free development tools, so we might conceivably start seeing things like Wikis for it. It even talks IMAP, so I can continue to use my server for mail (hmm.. I wonder if it supports ssh?). This makes a great portable extension for the Powerbook. Given the two, I would truly start to feel position independent.

All things considered, this is a nice looking device. I wonder if Nokia are looking for testers… :)

February 03, 2003

Dave's Almost Converged

It’s been an interesting year for my infrastructure. Spurred on by the likes of James Duncan Davidson (www.x180.net), I finally moved away from my trusty GNUS e-mail reader, switched to IMAP, and now use Evolution, Apple Mail, and the Mozilla Mail client, all with centralized filtering and spam elimination. It is remarkably liberating being able to pick up mail (and I get a ton of mail) from any machine, but still to have the benefit of a decent mail infrastructure (I tried web mail a couple of months back—it lasted all of 6 hours). Having Starbucks be isomorphic to my bedroom (at least as far as e-mail goes) is remarkably liberating (although I’m still pissed at Kinkos for starting to charge for net access).

However, there’s still an area that sucks: I now find I have three different electronic address books: my old BBDB one under Linux, the Apple address book on the Mac, and the Mozilla address book (also on the Mac: why can’t it use the built-in one?). So I start looking around for some way to integrate them all, and come up empty. I’d kind of hoped that LDAP would hold the answers, but as far as I can tell, LDAP appears to be a read-only medium: if you have your addresses set up in there, then everything can read it. But none of the mail clients I use seem able to add a new LDAP entry, or edit an existing one.

So I’m still not fully converged.. Any ideas? dave@pragprog.com

Learning From Mistakes

I read a lot of aviation magazines. In every one, you’ll find at least one column dedicated to reporting on accidents. These reports are fairly dry: a restatement of the facts issued by the various government agencies that investigate transportation problems. Depressingly, a large number end with the summary "pilot error."

Are our pilots a bunch of cowboys, recklessly flying planes in to the ground? Quite the reverse, the vast majority are conservative, careful aviators. So why does "pilot error" figure so prominently?

The authorities quite rightly give the pilot of an aircraft ultimate authority over that aircraft’s operation. It’s up to the pilot to check the weather, the condition of the plane, the distribution of weight, the fuel required, and many other factors, all before setting foot inside the plane. Once flying, the pilot’s job continues, monitoring weather, fuel remaining, aircraft performance, navigation, collision avoidance: the list is long and complex.

It isn’t easy keeping all these factors balanced, particularly not when the weather is closing in, fuel is starting to look marginal, turbulence is jarring your teeth loose and you’re at the end of a long, exhausting day. And yet we all (quite rightly) expect our pilots to maintain a level of near perfection. So pilots, being human, make mistakes, and sometimes these mistakes have tragic consequences.

That’s where the accident reports come in. Pilots read them, and read them avidly. They aren’t reading to gloat. They’re reading to learn. The pilots they’re reading about are for the most part every bit as careful as they are, and yet still something went wrong. So pilots read the reports to find out what happened, and maybe to try to tune their personal procedures to stop it happening to them. By reading these reports, pilots improve both their own performance and aviation’s overall safety.

Computer programming is perhaps half the age of powered flight. We face different issues; our mistakes can cause inconvenience, but rarely loss of life. But perhaps still there’s something that programmers can learn from the attitudes of pilots. Is it conceivable that we might one day have a way for developers to report problems during development to some anonymous forum so that others might learn? Could we start to use our own history as a tool to help us all improve?

February 01, 2003

Trying to Love KeyNote

Two days after Steve Jobs announced KeyNote (www.apple.com/keynote), Apple’s new presentation software, I found myself forking over my $100 at the local Apple store. And since then I’ve been using it for all my new talks.

I’m trying very hard to like it. Often irrationally so, because I’m continuing to pump new slides in to it even though it falls far behind PowerPoint. Admitted it has some nice features. It renders text beautifully, and it has some pretty dramatic slide transitions, but for everyday use, it is turning out to be a fairly frustrating tool.

  • it can’t export HTML
  • it stores each presentation across a number of files and directories. It’s nice that the save format is open (a combinatin of XML and grqphics files), but adding a new presentation to CVS is a royal PITA.
  • it’s dramatically lacking in artwork (you get maybe 40 images with the package), and it doesn’t seem to be able to import from the PowerPoint clipart collections. This is a major problem: I’m using fewer words and more pictures in my presentations, and KeyNote out of the box just can’t give me what I need.

And yet despite all this, I’m sticking with it. There’s something about the Mac and its software. Even when it isn’t quite right, there’s some indefinable quality that makes you want to keep using it. I guess I’m hooked.

Now in Beta

  • Programming Ruby, 3rd Edition
    Third Edition, Covering Ruby 1.9, now in beta
My Photo

Pragmatic Stuff

Photos

  • www.flickr.com
    This is a Flickr badge showing public photos from pragdave tagged with pragdave_badge. Make your own badge here.

Site Search

  • Google Search

    The web
    PragDave