Friday June 17, 2005
I had a bit of a technology problem with blogging: I've been using a tool
called BlogEd that I
originally created a couple of years ago. A while ago Henry
Story took it over and has been going to town, transforming it from a
simple hack into a sophisticated tool. I had been stuck on the old version
for a while, but a couple of months ago I decided to cut over the the new
version. It was a bit rocky, partly because the new version of BlogEd was
a bit ragged, but more because of operator error. I'm mostly past that now.
I'm in Madrid for a couple of days to participate in their JavaExpo. I
spent a couple of hours yesterday with a bunch of customer service
engineers who where telling me about what's happening here in Spain. There
has generally been an awful lot of everything, but it was real clear that
the big thing that stood out for them was that this has been the year of
enterprise applications on cell phones. Spain has more than 100% market
penetration (i.e. more cell phones than people), of which the vast
majority (>80%) are Java phones.
A lot of the cool applications have been enabled by the new generation of MIDP2 phones that have network access. One app that's become pretty popular amongst professional stock brokers is one that allows them to watch stocks and place trades from their phones - very popular over the lunch hour(s) :-)
There's a whole class applications that are for workforce communication, essentially taking the place of walkie-talkies. Cell phones work better than walkie-talkies in these applications because they're point-to-point, longer range, have better noise immunity, and they are app platforms; and they have better range and are much cheaper than WiFi PDAs. One that they discribed to me was a simple to-do list manager whose entries were things like "go to gate X to help unload plane Y at Z o'clock". It's dynamically and instantly updatable (they get updates to the phone in seconds). Another kind of entry is a broadcast like "Would someone near X do Y" which pops up a button that says "I'll do it" that when pressed cancels the request on all other phones and pops up a button that says "Done". Real simple, but if you're running something like an airport: it's real powerful.
A note about my previous post: a few people wrote in to say "huh?" about the title "1+1=i". I guess my lame attempt at geek humour was too obscure: I was commenting on people's ability (when reading stuff in the press) to add things up and get not just the wrong answer, but a wrong answer that isn't even on the number line.
I need to stop talking to reporters. It's so easy for what results to get
misunderstood. I was not trying to say that all open source
projects are chaotic: there is a spectrum. Apache is at the very high end
of the scale, on average exhibiting excellent behaviour. Their governence
rules are very effective. Apache and the Linux kernel set the Gold
Standard. But they aren't all of the open source universe, and there's
some decidedly oddball behaviour that goes on. The problem is that it's
often the crazy behavior that becomes publicly visible and it tarnishes
everything. When I made the comment that got so misunderstood I was
talking about the perception of the open source community by
outsiders.
Even at the Gold Standard end of the scale there are problems. Take a recent event: the blowup between Linus and the Bitkeeper folks: while I'd bet real money that Linus did the Right Thing, the way it played out in the press looked pretty bad. It may have been impossible to play it out at any lower flame temperature, but somehow the community needs to come to grips with how it is percieved
We're a little late in finishing the judging for the three finalists for
this years contest.
But finally, it's done: the winners are Peter Moore (Australia), Ronald
Smith (USA) and Oscar Guandique (San Salvadore). To avoid spoiling the
fun, I won't describe their entries until after JavaOne. But they're all
pretty cool.
In general, judging was harder this year: there were more and better entries. The entrants generally had a firmer grip on the laws of physics. And there were a lot more international entries. There were a couple of cool ones that involved explosives that I thought would be pretty safe, but we couldn't get the folks responsible for safety to calm down. Then there was the one that involved (among other things) hiring a dozen naked cheerleaders: we couldn't figure out if it was even legal, but we had a great time talking about it.
Thanks to everyone who entered, and good luck to the finalists!
To see what they build, you'll have to come to JavaOne.
This week I'm in Brazil, visiting with developers. We're doing a
couple of days of technical seminars today and tomorrow in Sao Paulo, then
a couple more in Brasilia. The Brazilian developer community is large,
talented and enthusiastic. At the end of the day today we had a little
10th birthday party for Java that got a little out of control and turned
into a version of Carnival,
complete with serious dancing, music, costumes and confetti. They take
their technology very seriously; Ray
da Costa even had the Java Logo tattooed
onto his arm.
I got to spend some time with the folks responsible for software for their national medical system. They're deploying the second generation of their system in Sao Paulo. It has some great new features. One is a realtime surveilance system which allows them to have diagnosis cause realtime triggers. For example, if a doctor enters a diagnosis of menigitis, she is automatically prompted for extra information and it all appears in realtime on maps in their contageous disease center. They've got a great extended integrated scheduling system that allows them to do non-local scheduling: for example, if a patient needs to have a particular procedure or test done, and the clinic they're at can't handle it right away, they can schedule it in some nearby clinic. Very cool stuff.
Just saw a demo from the Brazilian tax service. Normally tax agencies are pretty boring, but these folks have been doing very cool stuff. For the last couple of years they've been using a Java tax submission system and are running almost entirely paperless. Their new thing for this year is that they've got a J2ME application that runs on all the cell phones in Brazil (and they have twice as many cellphones in the country as they have households). This app allows folks to submit their tax forms from their cell phone - no computer required. Quite a sophisticated piece of cellphone hacking.
Today is officially that last day for entries to the T-Shirt
Hurling Contest. But there's (almost) no such thing as a software
engineering project that comes in on time, so we'll be willing to accept
entries for another week: you've got until March 22nd to come up with a
cool way to hurl a t-shirt into an audience. That cool idea you had
bubbling in the back of your head still has a chance to get out and
impress your fellow geeks. Forget all of those urgent things that are
stopping you from doing something truly important: write up your entry and
send it in!
Thanks to all of you who did manage to get your entries in on time: I'm amazed!
I'm in Mexico City today for another TechDays
event. It's two days of intensive training seminars on all the cool stuff
going on in the Java world. I got to do the opening talk and spend a bunch
of time talking with developers and the press. The picture on the right is
of me with a couple of students from TESE
who where showing me some cellphone applications that one of them had
written. The turnout for the conference was great, the sessions were
overflowing. There's a really energetic and talented group of developers
in Mexico. Great fun.
The major tragedy was that we shipped 650 Duke dolls to the event to be given away, but 550 of them got "liberated" in transit, and only 100 arrived. Somewhere, floating around in the Mexican black market, are 550 Duke dolls. This was after a flap with Mexican customs where the dolls were described as "stress relievers", so we had to get a medical certificate for them.
This appeared in my email the other day. It took me a long time to stop
laughing. I thought it was truly hilarious: but then, I'm a Canadian whose
father spent a lot of his career in the Artic. There's been a lot of great
fun-with-photo-editing floating around on the net. Much of it anonymous,
passed on from person to person. A little mini-meme. To whoever put this
one together: Thanks
There's a great article by Dennis Roddy of the Pittsburgh Post-Gazette on
John Gilmore and his fight
for personal privacy. It's a well-written article everyone should
read: John is a remarkably sensible, talented and principled fellow who's
fighting an important fight.
I don't know which was a bigger rush today: having the NetBeans
4.1 Beta finally hit the streets, or when Hideya
walked in with his Dukeulele.
NetBeans 4.1 has cooler J2EE and cellphone support, the Dukeulele makes
folks fall out of their chairs laughing.
Last years t-shirt contest entrants are pretty interesting to look at as a
group to reflect on what they say about engineering in general.
In third place were the "Caffeinators" and their calibrated
crossbow/slingshot. From an engineering point of view it was the
simplest: a big elastic cord and a wooden frame. Nothing fancy. Nothing
to break down. Simple to operate. While they came in last, they managed
to fling more t-shirts to the audience than either of the other
entrants. By a wide margin. Easily the most effective t-shirt
distribution mechanism of the lot.
In second place was a very impressive cannon from Ron Hughes and the
folks from Visicomp, who
make some killer developer tools. Their cannon was an absolute
engineering marvel. Automated azimuth and elevation. Remote firing over
the web. Calibrated gas pressure for range control. Beautifully
machined. But it took longer to reload than the slingshot. And it was really
powerful. Far too powerful for the folks responsible for the safety of
the audience: they had Ron throttle back the tank pressure
significantly. Ron did get in a little fun: at the end of his turn on
stage, he removed the pressure limiter and we fired off one shirt at
full pressure. Not many people in the audience noticed, but it was
pretty impressive: the shirt went way past the last row in the
audience... It's trajectory had hardly started to curve when it
ricocheted off the concrete wall way at the back of the very large hall
that the keynotes were held in.
The winner was a real contraption: a bicyle-built-for-two with no
wheels, connected to a flywheel that functioned like a baseball pitching
machine. The gizmo has a "magazine" that allows many rolled-up t-shirts
to be stacked up and released in quick succession. A "machine-gun" for
t-shirts. When it worked properly, it hurled t-shirts a great distance.
But... It really was a Rub-Goldberg-esque contraption. A hack in
the best sense of the word. As such, it had more than a few reliability
problems. When the time came for it to perform, it's drive chain broke
after only 3 shirts were launched. But the audience loved it anyway.
Each of these could have won if the criteria were chosen appropriately: the crossbow would have won on the basis of shirts actually delivered. The canon would have won based on range and engineering excellence. The third could have won on launch rate, if only it hadn't broken... In the end, the audience chose based on whatever moved each individual in the audience.
All of Sun Labs went to the Santa Cruz Beach Boardwalk today to ride rollercoasters, play arcade games, and generally have a good time. It reminded me of one of my favorite metaphors for the process of design: it's a game that appears often in these game arcades in different forms and with different names. The one at the Boardwalk is called Whack-a-Mole. There's a square box with a grid of large holes on the top. Usually three holes by three holes. There's a mechanism to cause something (in this case, a fake fur Mole) to pop out of one of the holes. You play the game by taking a bat and trying to whack (hit) the mole on the head. But the mole always pops back down into his hole and pops up somewhere else. So you take the bat and try to whack the mole on the head in it's new place. But of course, he pops back into the box and pops up somewhere else. No matter what you do, the mole always pops up somewhere else. You win if you can get the mole to stay in the box and not pop up. Damn near impossible.
Design is like that. Designs always have problems. So you go work on that problem. But often what you do to solve that problem causes new problems to pop up somewhere else. All too often people will come to me and say "I've solved the problem". I'll look at it and essentially say "yes, but no: what you've really done is moved the problem. Design is about compromise. You rarely get to eliminate all problems: you just get to decide which problems you're willing to work with.
One place where this shows up as a real point of friction is with folks fresh out of school. Throughout shool you mostly work on problems concocted by instructors for some didactic purpose. They have a solution in mind. You know that the solution exists. The problem is usually constructed so that the solution is clean (this most often shows up in high shool mathematics). But the real world isn't that way. Problems are messy. There often isn't a perfect solution that solves all the problems. Major frustration and disillusion ensues.
Get over it.
I get interviewed by the press fairly often. Every now and then, one of them gets a few things wrong. ComputerWire just put out one titled "Threat to 10 million Java Goal from Microsoft, Says Gosling" that doesn't correctly get across what I meant. The title of the article is somewhat sensationalist. He got the quote from me correct: "The biggest problem is going to be competition from Redmond," but that was just a general statement that for everyone in the computer business, in essentially every area, Microsoft is the big competitive question.
The big error, though, is in this part:
While welcoming Java's pervasiveness, Gosling appears cool to a branding campaign. "There's a part of me that likes being taken for granted. One of the goals I had as an engineer was for the technology I build to be completely transparent. If I pull out a cell phone and have to boot-up the JVM [Java Virtual Machine], that would be bad,"I am not at all cool to the branding campaign, I think it's a great thing to be doing. What I was talking about when I made the taken-out-of-context quotes is that as an engineer, a major goal of any technology I work on is for it to be as easy to use as possible. I try to ensure that nothing gets in the way of the end user accomplishing their task. The technology should be transparent. From my engineering point of view, a perfect piece of technology is one that does its job without the user being aware of it. No fuss. No muss. Just accomplish the task at hand.
This has nothing to do with brand awareness.
I've had conversations with several folks in the last couple of days about the craft of software engineering. There are all sorts of ways to slice it up, but one that I find useful in some situations is to divide programming tasks rather crudely into two categories: mud slinging and diamond cutting.
Mud slinging is where what to do is pretty clear. You just wade in and start shoveling. You don't have to think to hard and you get to feel real productive because lots of motion is happening. I often feel like most of what I do is in this category. It's not too hard, it needs to get done, Just Do It. I find that it has a personally satisfying rhythm. Relaxing, low stress, regular progress. Lots of lines of code cranked out.
Then there's diamond cutting. This is where you stare and stare at a problem, and then whack! it breaks open. Not much coding gets done. I find it really frustrating. Why can't I figure it out? Why? What? How? Sorting socks would be more fun. High stress. But then, it hits me. A dozen quick lines of code and poof, hard problem solved. It's a real rush. High dynamic range in emotional state.
Of course, it's impossible to tell the difference between true diamond cutting and generic cluelessness.
I'm finally back home connected to the net again. It's been a great week. Today started with Scott McNealy's keynote, which was entertaining (as always). He gave out several awards for the best Java projects: all well deserved, and very cool. I don't remember them all, but they included the JPL folks, the Brazilian Healthcare project, the navigation system from Jentro, a very cool Nokia handset; and a special award for Thor Norbye for his incredibly studly performance during a demo on Wednesday where everything crashed (it was the back end database!) and he put it back together in real time. Iron Chef comes to hacking.
The picture at the left is of me with the winners of the Urban Adventure contest. It was a scavenger hunt that covered a lot of San Francisco. About 100 teams competed. Many were groups of friends, but this team was four people who had never met before, but who worked together extremely well. They turned out to have complementary skills and compatible personalities. Quite a piece of luck! It sounds like the whole Urban Adventure was a lot of fun for everyone. In general, JavaOne is end-to-end compressed learning and parties. Totally exhausting.
If I had to pick one highlight of the whole week, it would be that I noticed that everyone was smiling. Last year, there was a general feeling of gloom. It wasn't about Java at all, just a general gloom about life, the universe, and everything. This year was very upbeat and charged. And unlike the bubble years, when I'd ask folks what they were doing, the answers made sense. No fluffy concepts. No goofball math. Just real products. Real business plans. Real success.
Very, very, cool.
And the best part is that I get to sleep in tomorrow...