Saturday, April 30, 2005

Two types of programmers

There's a funny industry saying that goes: There are two types of programmers, those that think there are two types of programmers and those that don't. Well, for a long time I was in the former category and I got this from reading the old Robert Cringely book called "Accidental Empires". In the book Cringely actually says there are three kinds of programmers, but no one in their right mind would admit to being the first type. I was searching around the web and actually found the original excerpt from Cringelys book.

The two programmer subspecies that are worthy of note are the hippies and the nerds. Nearly all great programmers are one type or the other. Hippie programmers have long hair and deliberately, even pridefully, ignore the seasons in their choice of clothing. They wear shorts and sandals in the winter and t-shirts all the time. Nerds are neat little anal-retentive men with penchants for short-sleeved shirts and pocket protectors. Nerds carry calculators; hippies borrow calculators. Nerds use decongestant nasal sprays; hippies snort cocaine. Nerds typically know forty-six different ways to make love but don't know any women. Hippies know women.

In the actual doing of that voodoo that they do so well, there's a major difference, too, in the way that hippies and nerds write computer programs. Hippies tend to do the right things poorly; nerds tend to do the wrong things well. Hippie programmers are very good at getting a sense of the correct shape of problem and how to solve it, but when it comes to the actual code writing, they can get sloppy and make major errors through pure boredom. For hippie programmers, the problem is solved when they've figured out how to solve it rather than later, when the work is finished and the problem no longer exists. Hippies live in the world of ideas. In contrast, nerds are so tightly focused on the niggly details of making a program feature work efficiently that they can completely fail to notice major flaws in the overall concept of the project.

Of course this is mostly bull crap, but I still occasionaly use these categorizations as a mechanism for picking a strategy for interacting with someone. It's not perfect but at least it's a starting place.

Update: In response to Don's comment query I offer the following picture of myself from 1990, around the time Cringely's book came out.

Good News Stories

There have been a couple of happy stories this week that buck the normal trend. Instead of reading about some new species gone extinct we got to hear about an old species that was rediscovered. In addition, instead of reading about a women who has disappeared, later being found dead, we got to hear about a bride who just got cold feet

The story of the Ivory Billed Woodpecker is really cool. If a bird could go undetected in the woods of the south east, Big Foot surely could still be hiding in the woods of the north west.

Friday, April 29, 2005

Missing Posts

Observant readers may have noticed some posts have been removed. I recently received a call from my previous employer that indicated they believed the contents of one post violated the employee agreement I had signed back when I had worked for them. There weren't any specifics about what they didn't like so I took a guess and removed the part that I thought they may have objected to. Because the post also dealt with issues outside of said corporation I indicated the edit with some text that said 'Anecdote removed upon request by XXX'. I called the lawyer back and told them I had made a change and that I would be happy to make further edits if these were not sufficient. Two days later I received some email (I requested email correspondences) that stated the changes were not sufficient and that I must remove additional information. I puzzled about what to do and just decided to remove everything I had said about XXX, including the positive stuff.

I maintain that what I said was not in violation of my employee agreement. I mentioned version numbers of existing products that are public knowledge. I mentioned one of their products being hard to install, but that's public knowledge - unless someone actually think XXX has secret install technology that it just doesn't share with its customers, but then again, maybe they do and they just didn't share it with me (Have I gone too far again - crap it's hard to know). I used a vague large number to describe the number of people effected within the corporation, but again it's public knowledge XXX is a big company and they have lots of people working for them. Lastly I summarized the situation with a colorful metaphor - goat rodeo, cluster fuck. Perhaps, in retrospect, asshat circus would have been less offensive.

It's true that what I said wasn't flattering and that's probably the crux of the problem. As I've said before on this blog, big corporations spend a lot of money to protect their image. But it's too bad they can't take some constructive criticism. If I just said they sucked - which I don't believe is the case, I probably would have been better off. But my conscience is clean. I tried on the inside, I tried on the outside and the result have been the same. Too bad.

In a previous deleted post I mentioned I intended it to be my last on the subject. The same is true for this one. But to paraphrase Pacino in Godfather III, every time I think I'm done, they keep dragging me back in. Peace out.

Thursday, April 28, 2005

My first and second .Net complaint

I'm just learning the .Net framework but already I'm starting to see some problems. Take for example the text selection API on the text controls. There are two methods for working on the selection:

SelectionStart - gets and sets the starting offset.

SelectionLength - gets and sets the length of the selection.

The problem is that given these methods there's no way to control the position of the caret. These methods always place the caret at the end of the selection. The low level windows API EM_SETSEL was smarter. With it you specified a start offset and end offset, where the start offset could be greater than the end offset, thus allowing you to position the caret at the start of the selection.

The only solution I could come up with to work around this issue in .Net was to actually send the low level EM_ message to the control. Which brings me to my second .Net complaint. Given that access to the legacy message based API is often needed, it would be nice if .Net provided a built in legacy access API with message constants and structure predefined. The way it works now, you need to declare the extern for SendMessage, lookup the message IDs from winuser.h and declare your own constants.

Tuesday, April 26, 2005

Second Blog Anniversary

Thursday April 28 will be the second anniversary of Developingstorm. To mark the occasion here's my list of favorite posts from the last 12 months. Reader comments on what you liked or didn't like are welcome.

Office Park Frisbee Golf

Excessive Wash

Google Art and Goodle Art Update

Roadside History

Beverage Tool


Saturday, April 23, 2005

Chocolate Salty Balls

It's a longer commute to the new job so I get more time to listen to the radio. This Tuesday I was listening to the Hillman show on WAAF and they played a favorite looney tune of mine, Issac Hayes' South Park song, Chocolate Salty Balls. Much like AC/DC's Big Balls song the chorus revels in testicular buffoonery while the lyrics attempt to justify the fun with an alternate explanation for the use of the naughty words.

Contained in the Chocolate Salty Balls song is an actual recipe for said confectionary. I figured someone in this world must have tried these things and it might make a funny blog entry so I Googled around a little looking. While I didn't find anyone who actually made and tried Chef's salty balls I found some variations and other ball related recipes that are amusing.

101 Testicle Recipes & Fun Facts

Recipe for Bushman's Balls

Recipe for Martin's Chocolate Salty Balls

Undeveloped thoughts of the week

UI development is like painting the faces of a thousand army men with a little brush. Enterprise server development is like painting a stadium with a roller in the dark.

Standards stifle creativity. The modern developer who grows in their career working with canned technologies won’t have a chance to develop a sense of elegance and aesthetics based on the experience of seeing many different solutions.

Programmers like analogies. It’s our job to create analogies in code and this carries over to the rest of our lives.

Friday, April 22, 2005

Star Wars programming wisdom

Ted Neward's funny but true observation on debugging and Jedi philosophy.

Wednesday, April 20, 2005

Personality Pig

According to this web site this pig drawing I did indicates:

I am realist.

I am direct, enjoy playing devil's advocate and neither fear nor avoid discussions.

I am emotional, naive and a risk-taker.

I am secure, stubborn, and stick to my ideals.

I am a good listener.

Take the quiz yourself and see what else this picture tells you.

via Don

Tuesday, April 19, 2005

Quick thoughts from the new job

- Working in C# with the .Net framework is fun but I do miss Eclipse's refactoring capabilities.

- Cubes aren't so bad. I've had an office for so long I forgot what fun it is to just speak your questions and get them answered. I joked with some old coworkers that this would be a perk of the new job and it really is.

- I keep asking if there's a policy for this or that and keep getting quizzical looks back. The amount of trust and freedom as compared to big blue is really refreshing.

- Free Diet Coke!

Tuesday, April 12, 2005

Red Sox Opening Day

What a great day at the ball park.

Saturday, April 09, 2005

Free Quonsar?

I was reading the Flickr thread Bob Congdon mentioned yesterday and noticed a response that just said - Free Quonsar! A little searching turned up this site that explains the whole thing.

Friday, April 08, 2005


I was looking up information on the Big Bang and I found this old article that talks about Randell Mills, a Harvard M.D., who has come up with a radical theory about how hydrogen atom can have their electron's orbits, or some such thing, modified in order to release energy. The details are way over my head. The fact is he's published extensively on the topic and still runs a business - BlackLight Power Inc. that is trying to prove the theory and produce inventions based on it. It will be interesting to see if he's finally proved correct or if this is a wild goose chase. It has the smell of something too good to be true but some smart people think he may be on to something, so who knows.

Update: After posting this I went out and did some more research. There's a lot more out there on this, both supporting and lambasting the topic. Here are a couple:

Thursday, April 07, 2005

"LAMP begins to light up the software world"

The title of this post is the same as a title of a recent InfoWorld blog post. Excuse me, but where has this author been for the past decade; LAMP has always been a strong challenger, even when the P was Perl instead of PHP or Python. Heck the LAM components of the stack aren't even exclusive to LAMP, J2EE runs great on those underpinnings - call it LAMJ. Just imagine, if BASIC gets popular again, we could even have a LAMB stack - that could be popular in New Zealand.

Forbes Article on Notes/Domino and Workplace

First off, I'm no relation to the Dan Lyons who wrote the Forbes article, second I do not have access to any information about the sales figures or Notes, Workplace or Exchange. This post is simply to address the statements by Dan Lyons concerning Workplace messaging being a replacement for Notes/Domino.

Workplace Messaging is one COMPONENT of a MULTI-COMPONENT collaboration platform known as Workplace. Part of the reason for its existence is that some customers didn't want to buy all the functionality of Notes/Domino when all they needed was email - you know the whole ON DEMAND thing. In the sense that one email system can replace another it's a replacement of Notes/Domino, but given that Notes/Domino as a entity can do a lot more than just Workplace Messaging, this is really an apples to oranges comparison.

On a tangential point of Notes/Domino evolving into Workplace, there's a lot of work going on to make them work better together and to get the Notes client code to work inside of WCT so there's a lot of truth to this statement. At a vision level a personal desire of mine, that I don't think is being worked on, is that the NSF layer of Notes/Domino be extracted and made available for generic non structured storage needs. That's probably just a pipe dream but it would be cool.

Tuesday, April 05, 2005

Google Satellite Maps

Google maps was already cool, but now that they've added satellite imagery it's over the top way cool.

That's my house, first on the left of the cul-de-sac. You know, my grass doesn't look so bad from space.

Dropped Bench Press

I've been lifting weights for a couple of years now and my bench has been slowly getting better and better. As a result I've started to think more and more about the safety issues of lifting without a spotter. Initially it was just stories like that of my friend Doug who had a near tragic accident benching in Alpha Software's gym when we worked together. Lately however, Doug's story has been replaced by a more vivid image, that of power lifter Steve Wong dropping the bar on his chest as he attempted an 832 pound lift. Granted Steve had spotters and was lifting a lot more than I ever would, but the pure power of that weight crashing down unexpectedly is a frightening prospect.

Via Bovine Strength Systems. (WOW, two posts in a week that use the word bovine. That must be a record.)

Napolean Dynamite

The film Napolean Dynamite is a comedy of ego and desire. It's a different sort of comedy that gets laughs at the dichotomy of who we are and who we want to be. It's not a deep film but I wouldn't dismiss it as quirky for quirky's sake either.

The film follows the nerdy character Napolean Dynamite through the basic tribulations of youth - meeting girls, school cliques, crappy jobs and family issues. In this case however, the characters are all exaggerated stereotypes who fumble through life in a series of scenes where each is designed to make you cringe more than the last. In typical Hollywood fashion there is a redemptive scene at the end, but it's so atypical it works.

The differences between the characters imagined self and there external self is the core of the film. The lead character Napolean attempts to present himself as a martial artist who's also an accomplished hunter when he's just a lanky and exasperated nerd.

Don: Hey, Napoleon. What did you do last summer again?

Napoleon Dynamite: I told you! I spent it with my uncle in Alaska hunting wolverines!

Don: Did you shoot any?

Napoleon Dynamite: Yes, like 50 of 'em! They kept trying to attack my cousins, what the heck would you do in a situation like that?

Don: What kind of gun did you use?

Napoleon Dynamite: A freakin' 12-gauge, what do you think?

Other characters are just as bad. Napolean's brother Kip tries to convince people he has a social life and is studying to be a pit fighter when he's just a lonely guy chatting on the computer and Napolean's uncle Rico is looser lost in the dreams of his youth who believes he's a great football player that just missed his chance to go pro.

This isn't a film for everyone; the pacing is slow and the humor is both absurd and dry, but if you can laugh at yourself and the foibles of your friends you will get at lot of chuckles from this movie.

Here's a better review from

Sunday, April 03, 2005

Bovine 3000

My favorite April Fools article of the year has to be Extreme Tech's Bovine 3000 custom computer build. The article is a self parody of their already off the wall build-it case mod series of articles where people build motorcycle computers or bike computers. To notch up the absurdity in honor of April Fools this build will turn a cow into a computer.

We ultimately went with the Guernsey, for its competitive dairy output volume, and its reputation for producing high-butterfat, high-protein milk with a high concentration of betacarotene.

We initially planned on using a Holstein cow, but we got significant pushback from the cows we approached about this project. Most cited ill will toward the PC industry owing to what the cows termed "inbovine" treatment by Gateway during some of its marketing promotions in the 1990's. We also briefly considered the Milking Devon, but its pointy horns made us reconsider.

Initially we were going to opt for the Killer Gaming Rig set of components in the Bovine 3000, but the thermal output irritated the cow's skin too much, so we went with more modest components. We were even going to use integrated graphics, but the cow protested, because it likes playing 3D shooters. Apparently this particular cow has a real jones for CounterStrike Source and goes by the handle "M3anT3at."

Friday, April 01, 2005

New Job

I resigned from IBM yesterday. As much as I liked working in Java on the Workplace Collaboration Server there where aspects of working for a big company that I just wanted to get away from for a while. Beyond that, between Iris and IBM, I've worked in the same building for almost 10 years now; it's just time for a change.

As for where I'm heading next, I'll wait to say anything about that until I actually start my new job and learn the ropes a bit. I'm very excited about the opportunity however, and I am really looking forward to the new challenge.

The Out Campaign: Scarlet Letter of Atheism