Thursday Mar 06, 2008

On Software and Sausages

"To retain respect for sausages, laws, and software, one must not watch them in the making." -- Otto von Bismarck (paraphased)

The other day I ran into R, a friend and former colleague from Sun. He's now working for a customer C and they are (I think) considering licensing the software from Sun that he used to work on when he was at Sun. We had a brief exchange that went something like this.

Me: So, considering that you know how software is developed at Sun, are you still willing to license it?

R: (knowing laugh)

Me: Ah, considering that you know how software is developed at C, you're willing to license it from Sun?

R: (knowing laugh)

Wednesday Sep 27, 2006

A Few Notes on Blogging

I was asked to speak to our group today about blogging and the blogosphere. Here are my notes from that talk, somewhat cleaned up and embellished, for those of you who might have missed the talk or who might want more.

I asked four questions: Why, Why, Why, and Why?

Why should you read blogs?

The whole blogosphere/Web2.0 thing is often overblown, but in a few subtle and significant ways, blogging really is a new medium. There might be 4 million blogs out there. Most of them are probably inactive (e.g. "This is my first blog entry" and nothing else) and like Theodore Sturgeon said, "90% of everything is crap" so this cuts down the numbers considerably. But this still means that there might be tens of thousands of active, interesting blogs out there.

Blogs enable you to establish a personal contact with someone you otherwise wouldn't have. People write in their own voice (usually) and this lets you get to know them a little bit. Most blogging systems have the ability to post comments, and quite often bloggers will respond to comments, so the medium is interactive as well.

At Sun, Jonathan Schwartz has taken the lead in being the first CEO to have his own blog. I believe he writes it himself, unlike most corporate communications which is ghost-written. I don't speak to him much (I met him briefly in person, once) but reading his blog gives me little bits of insight about what's going on in his head. As an employee I think it's really cool. I also believe that customers and the media find it interesting as well.

Jonathan blogs about business but lots of people blog about other topics including personal stuff. A popular blog is one by Rich Burridge who blogs about a wide variety of topics including taking his kids to the new Stanford stadium last weekend. You might or might not find what he writes to be interesting. If it's not, move on to something else; there's sure to be something interesting out there.

Why should you write a blog?

As people go about their daily business, they're constantly interacting with each other. At the water cooler, in hallways, bantering before meetings, there are little bits of insight, funny stories, jokes, war stories, news, information, updates, analysis, etc. are passed around. Usually it just bounces off the wall and disappears. Sometimes people remember it, sometimes they don't. If you think about it, this information can have a lot of value if it's written down. So, next time you find yourself telling (or listening) to one of these little tidbits, write it down and blog about it. When you share this information, others will find it valuable, they'll learn from it, and they'll learn about you as well.

Why should you blog in public?

Sun has an internal blogging system, and many people have set up blogs on it. It's readable and writable only if you're on Sun's internal network. This is OK, insofar as it's another way of improving our internal communication. But we already have so much internal communication already (email, meetings, teleconferences, webcasts, etc.) that it doesn't help all that much. It's just another way to talk to ourselves. And as my father once said, if all you do is talk to yourself, you win all the arguments.

We need to engage the outside world. The whole internet -- the blogosphere -- is several orders of magnitude larger than Sun. Inside of Sun, we're insular, even provincial. So, we need to get out there and engage the entire blogosphere, the real world, instead of being "chicken" and staying safe inside of Sun. We might get some comments we don't like, but that's how we learn and grow.

At the same time, we present ourselves as individuals. Sun isn't a monolithic, faceless corporation. It's a corporation with a lot of smart, articulate individuals, each of whom has an independent personality. This projects a much richer and more powerful image of what Sun is to the outside world.

Why should you read my blog?

You should read my blog because I post short, crisp entries on interesting and relevant topics. If you read my blog and you don't like it or aren't interested, post a comment!

Friday Sep 22, 2006

Open Source or Dirty Laundry?

As we get ready to dive into the open source world, one of the many activities that's occurring is the preparation of the code for being open sourced. There are some obvious things that need to be done. For instance, our source code includes a mixture of code that we've written and code that we've licensed from others. We'll need to separate out the latter and open source only the appropriate pieces of code.

Another preparation activity is "scrubbing" the code of proprietary information, mentions of particular customers, developers, technologies etc. This is a little less obvious, but consider the following example:

 \* HACK - insert a time delay here because the stupid Intertrode
 \* Technologies framebuffer driver will hang the system if we
 \* don't. Those guys over there must really be idiots.

While all of the above might be true, we probably have a relationship of some sort with Intertrode Tech and having comments like this in the code could hurt our business somehow and so it should be removed. Arguably it shouldn't have been there in the first place, but now's the time to take it out.

Another part of the "scrubbing" activity is to remove profanity and other "undesirable" words such as "hack" and "kludge" from comments. The list of undesirable words includes common tags such as FIXME, TODO, BUG, and so forth. These are usually replaced with something generic like "IMPL NOTE". This is the point at which this stops making sense to me. Comments that express strongly held opinions are quite useful and help to convey the thinking and the point of view of the author of the code. The goal of writing code in a high-level language is in fact to convey intent and semantics to other programmers. The comments are part of the code, and -- warts and all -- they help to convey the same information. Scrubbing this out can remove this information, decreasing the maintainability of the code.

Consider, for example, how much less information the above comment would contain after it has been scrubbed:

 \* IMPL NOTE - insert a time delay here because the IMPL NOTE Intertrode
 \* Technologies framebuffer driver will hang the system if we
 \* don't. Those guys over there must really be IMPL NOTEs.

Seriously, there is a real danger of removing vital information in this process. It seems likely that the comment might actually be scrubbed down to something like this:

/\* IMPL NOTE - insert time delay \*/

which says just about nothing. It says that a time delay was introduced, but this is probably redundant since there will be something like a call to sleep() immediately below. It fails to say why the time delay was introduced, which is the most important piece of information. Without this information, the delay might remain in the code base long after it's necessary (after Intertrode had corrected its driver) because developers are too afraid to take it out. Or, they'll go ahead and take it out, leading to an all-night debugging session by a hapless developer who happens to be trying to port the system to a board with a backrev Intertrode framebuffer.

The question of profanity in code is a somewhat different matter. Personally, I don't swear very much, but sometimes a well-placed expletive is exactly what's necessary to convey the information in the right way. Removing profanity reduces the information content of the code just the same as removal of other "undesirable" words. Consider the rich texture of the comments and names in the following code, and how this texture resonates vibrantly against the vigorous nesting of the Lisp code:

GNU Emacs terminal.el

This masterpiece of coding profanity sets a standard to which we should all aspire.

Monday Aug 28, 2006

Open Source Means Open Communities

The use of the word "source" in the term "open source" originates from "source code" meaning programs, programmers, hacking, arcana, great hacks, kludges, staying late at the computer center, lots of caffeine, long hair and scraggly beards, Szechuan Chinese food, and so forth. As Annette pointed out in her blog entry Open Source Means Closed Communities, this emphasis on programmers and programming tends to shut out contributions from anyone other than programmers.

But let's be clear: this image is not of a typical open source project, but of a stereotypical open source project. The values of a community reflect the values of the members and of the people who created it. Just because a project is now "open source" doesn't mean that hackers are going to swarm in and push out everybody else.

Now, Annette will claim that software projects have always had a cultural bias favoring programmers over other contributors. I'll be one of the first to agree. However, open source projects don't threaten to restore this bias. Indeed, open source represents an opportunity to create a new community with a new value system, ridding us of this bias once and for all. This is the way to meet Annette's challenge.

Finally, Annette closed her entry with the question, "Does that mean that a QA engineer might just have more influence than a programmer one day?" That deserves a reply, but in another blog entry.

Thursday Aug 17, 2006

A Longtime Java ME Guy

This entry is a response to an entry on Anet's blog, Time to come out of the closet.

Not as long as Anet, but perhaps almost as long. I got involved with Java ME (really, the precursor to Java ME) about seven years ago, back when KVM was the next big thing and MIDP hadn't even been started yet. I did some work with NTT DoCoMo, I was on the MIDP 1.0 and 2.0 expert groups, and I've done a lot of work on Sun's products in this area.

Now plans have been announced to open-source Java ME. Time to strap in and hit the throttle!


Stuart Marks-Oracle


« February 2017