September 30, 2005

What? The bloated bureaucracy didn't save you?

At this point, IBM Global Services consultants flooded our conference rooms. Overnight, we ended up with twenty consultants. When I asked how much these consultants were costing us, I was told $250/hr. This information proved to be incorrect – they were actually charging us $325/hr.

What were we getting for $325/hr? People hired off of Monster and Careerbuilder. Seriously.

Management was under the assumption that we would be getting real implementation experts from IBM. In fact, we were getting employees from a subcontractor. We paid IBM $325/hr, and they paid their subcontractor about $165/hr. The subcontractor then paid its people salaries of $90,000 to $110,000/yr, the market average, which equates to about $75/hr when benefits are included. We were paying a markup of about 333%.

Were these people experts? A few were. Most were just Java programmers or Websphere administrators. And a few were essentially useless. It was a fairly typical distribution of employees – some stars, most fairly average, a little dead weight.

How IBM Conned Our IT Execs Out Of Millions

This is a defense contractor. There is so much wrong in this story, the outrageous rates from IBM is only part of it. The author makes it sound like they got roped into a scam by IBM hucksters who did a song and dance that them good decent folk weren't accustomed to. Shady salesmen? Well I never! Really the biggest problem appears to be the company management who basically just wants to pay someone else to do their job and make all the problems go away.


Jessica Alba looks like hell...


Why do so many movie posters have the names completely misplaced from the person? I'm sure it has to do with demands of name/face placement by the stars, and this is some sort of compromise. But how could anyone arrive at this end result and think it's a good thing for anybody?


September 26, 2005

Idea Generation Methods

The definitive collection of idea generation methods

This looks pretty interesting. It's got a lot of stuff on problem solving too.


September 24, 2005

My blog sucks

My blog sucks. I hardly ever post any new content, and most of the stuff I do post is just links. It didn't used to suck this bad. I start lots of posts that I never complete. I think I'm just sort of mentally blocked up because I have things that I can't blog about.

One of those things is a patent lawsuit I'm involved in (don't worry, I'm not a litigant). It's an ongoing case, so I definitely can't write about it right now. But even when it's over I may never be able to write anything about it, which is too bad because it's quite interesting.

The other thing is a big project that I'm about to begin. It's a really good project for me in a number of ways, but I can't tell you about it yet, I've been asked to be discrete. So I'm being discrete. But eventually I can write about it.

Anyway, things are going really well right now, I'm very happy with how well my whole experiment is going. When my wife and I decided to go on this crazy adventure, I assumed we would hit hard, troubling times. I felt like I was looking upon my dreams that existed on the other side of a deep chasm, and the only way to get there would be to plunge into the depths and hopefully find my way to the other side. So we took the plunge, but some reason we didn't fall. Instead it's like we found some invisible bridge to the other side. We are still aren't across the chasm, but we at least we feel a lot more secure about our direction and the eventual outcome.

Enough metaphor. Let's do simile.

Of course not all is good. One problem is I feel very isolated here in Charlotte. Remember that little boy who likes trucks? You know, that little kid who won't stop talking about trucks, everything is about trucks? Pickup trucks, dump trucks, military trucks, big rig trucks, toy trucks, cartoon trucks. Books about trucks, movies about trucks, shows about trucks. Truck posters, truck notebooks, truck pencil holders. Hey! Did you just see that truck? ENOUGH WITH THE TRUCKS!

Well, I'm that little boy, and for me it's making software. I obsess on it. So often I'm staring into space just thinking about code. Thinking about designs, thinking about idioms, thinking about clarity, thinking about reliability, thinking about it like it's a big machine with clanging and whirring parts and trying to reduce the friction so it runs a little faster, a little quieter, a little smoother.

So here I am obsessing about software as is my wont, and I feel like the people who really understand that part of me are a million miles away. Unlike the little boy with the trucks, I realize few people share my obsession to my degree. That changed when I started working at Iris, I felt for the first time like I was with people who really understood, who were like me, who shared this silly diversion. I made so many friends there. People with the same burning desires, same way of seeing things, same goofy obsession. People I made a real connection with.

And now I feel lonely, isolated. I feel like I need to return to people who understand. And when I see them, I'll say "Meep!", and they'll respond "Meep moop meep!" and then happy music plays and we'll run about laughing and dancing badly. Some day it will happen, I can't go it alone forever.

But for now I'm committed to development of CouchDb. I want to see it all working, I want to hearing the whirring and clanging and witness my creation alive. Once I get it there, then I'll see where I can go with it. Maybe I can turn it into a full time job somewhere really neat and continue building my whole Couch vision. I'm sorry I haven't been writing much about it, but it's because my thinking on it keeps changing and I feel like a flake saying one thing and then changing my mind about it later. So I'm keeping it to myself for a while. But I will say CouchDb is going to be cool, dammit.

Really I'd like to post more technical stuff in general, but the problem is I find it very hard to write about. I think the reason is, much of what I do resides in a place in my brain that doesn't really speak english, it only speaks code and dorkinese. So when I try to translate the really interesting stuff into english, I often feel like I'm butchering the subject matter, like it deserves better than my disorganized ramblings. I think it's because I'm missing -- what's that word? -- oh yeah, talent. I haven't enough writing talent to say what I want to say.

Anyway, talent aside, I hope to make my blog suck less. Maybe just by writing about how I have things I can't write about will help unblock me. I actually feel better already.


September 23, 2005

Laughing uncontrollably

This never happens:

Found here. By the same guy did The Hasselhoffian Recursion. I wish he had a RSS feed.


Did you know...

...TPS Reports are real?

IEEE 829 - Test Procedure Specification
The Test Procedures are developed from both the Test Design and the Test Case Specification. The document describes how the tester will physically run the test, the physical set-up required, and the procedure steps that need to be followed. The standard defines ten procedure steps that may be applied when running a test.

TPS report - Wikipedia, the free encyclopedia

Oh the pain.


September 21, 2005

Ice-T done lost his mind

Ice-T, who was one of the first real hip-hop stars in the late 1980s, said: "The man is a legend. And we are going to show a whole new side of him."
Ananova: Ice-T to produce Hasselhoff rap album

Reminds me of The Hasselhoffian Recursion: Prepare to lose your mind.


September 17, 2005

Insert Arbitrary Pun Here

An Australian man built up a 40,000-volt charge of static electricity in his clothes as he walked, leaving a trail of scorched carpet and molten plastic and forcing firefighters to evacuate a building.

Slashdot | Statically Charged Man Ignites Office

Ok, I'm not sure how many of the facts in the story are correct (some misused terminology makes be dubious), but it's comical. And the Slashdot pun-fest it inspired is pretty funny:

- Its electrifying stories like this that keep me reading slashdot.

- Awww! I know it's the current joke, but that's revolting!

- Those jokes were terrible. You're all grounded.

- I realize your capacitance for electrical puns may be low, but there's no need for such resistance! Admittedly, they are worse in series...

That last one really had me laughing. It's interesting to me how the funny puns are the ones acknowledging how annoying puns can be. Maybe that's a comedy axiom I should write down.


September 16, 2005




September 14, 2005

Software Development Stories

As an experiment, I put a page of links to software development stories on the Wikipedia. It stayed up a while, and some people added some interesting stories to it. Recently however someone removed the page, with the reason given that it didn't have actual content, just links. I supposed that's a legitimate reason, given the Wikipedia isn't intended to be a directory.

Frank Spychalski noticed the removal and moved the page to a more appropriate place, the c2 wiki. Cool! Once again, if you find any real life software stories you think are worth reading, put a link to it on the page for others to enjoy: c2 wiki - Software Development Stories


September 12, 2005

The Indian ocean, that's where

Are you concerned about where you go to arrive if you dig a very deep straight infinitous hole on Earth? Your problems are solved!

If I dig a very deep hole, where am I going to stop?


September 11, 2005

Faces in everyday objects


F A C E S - a photoset on Flickr

via Ned


September 8, 2005

What's an Asshat?

The name "asshat" people sometimes call each other keeps popping up. Today, I asked myself, what is an asshat? I know its supposed to be a disparagement, I think I've used it myself. But it really doesn't make sense. Is it supposed to be that the person is actually a hat you wear on your ass? Is it that the person's ass is a hat, and other people put it on? Is it that the person likes to wear other people's asses as hats? Shouldn't the insult be then "asshat wearer"?

I'm so confused. This page, "Asshat: The Official Site", while amusing, doesn't enlighten. Neither does the Wikipedia entry.

This entry from the Urban Dictionary explains it most cleary:

One who has their head up their ass. Thus wearing their ass as a hat. Asshat


September 7, 2005



Wow, a whole website dedicated to ROM the Space Knight. I used to have one of these, I thought it was the coolest thing ever. I can't believe how goofy it looks now.


September 6, 2005

Wireless network make Hulk mad. SMASH!

My home wireless network is driving me crazy. Every single device on it just disconnects from it at odd random times (not all at once though), then five minutes later they come back. It's very frustrating. My wi-fi router is a Motorola WR850G and the wireless devices are all different vendors. The router has an aftermarket antenna (that was my first attempt at fixing the problem). When connected on my desktop, I usually get a pretty strong signal (4 out of 5 bars), so it doesn't appear to be a distance/clearance thing. But I could be wrong.

I've tried searching around for answers, but I guess my Google-foo is weak. Anyone have any suggestions? Should I replace the router? Would standardizing on a single brand make thing more reliable? Or is this just par for the course and I should shut up and quit my damn whining?


September 5, 2005

People on 'ludes should not rescue people

pennsinking.jpgPenn, 45, said he was in the city to aid stranded victims of flooding sparked by Hurricane Katrina, but the small boat he was piloting to launch a rescue attempt sprang a leak.

The outspoken actor had planned to rescue children marooned by the waters, but apparently forgot to bung a hole in the bottom of the vessel, which began taking water moments after being launched.

When the boat's motor failed to start, those aboard were forced to use paddles to propel themselves down a flooded New Orleans' street.

Asked what he had hoped to achieve in the waterlogged city, the actor replied: "Whatever I can do to help."

But with the boat loaded with members of the Oscar-winner's entourage, including his personal photographer, one bystander taunted: "How are you going to get any people in that thing?"

The Courier-Mail: Singers protest, Penn paddles

Ok, I can't help it, this is funny.

While pretty funny, apparently he did actually rescue some people.


September 4, 2005

Fun Problem

Design and write, using ISO C (no C++ or language extentions), an implementation for the following function prototype:

int numcmp(const char *s1, const char *s2);

The function numcmp assumes that both null-terminated strings s1 and s2 contain one or more digits and at most one decimal point ('.'); the result for input strings not of this form is not defined. The function compares the contents of the null-terminated string s1 with the contents of the null-terminated string s2. Using a numerical interpretation for the strings, it returns a value of type int that is less than zero if s1 is less than s2; equal to zero if s1 is equal to s2; and greater than zero if s1 is greater than s2.

The function interface is similar to that of strcmp from the standard C library "string.h". It can be used in place of strcmp when a numeric comparison is needed in place of a lexicographic comparison.

The result of the function should be the same as a comparison of the numerical values of represented by the strings. (Examples: "0" is equal to "000"; "12" is equal to "0012"; "100" is greater than "99"; ".02" is greater than "0.001")

The the comparison should be implemented using only simple character processing. (It should not be implemented using float or double.)

There is no limit on the number of digits in the input strings. The implementation should not impose a restriction on the length of the strings.
Do not use any library functions (including the standard libraries) in your implementation.
Example input strings:


I found this problem in a posting on Joel Spolsky's forums. For some reason this kind of problem really appeals to me, so I decided to implement a solution for fun. I think I created a pretty efficient one (numcmp.cpp).

I really enjoy this kind of challenge as a break from bigger projects. I think because it's pure problem solving and I'm freed from the constant burden of trying to define the problem in addition to then solving it. Sometimes it even results in something useful. But in this case it's just for the fun of the half an hour or so it takes to write.

I remember early into me taking on the formula engine, when I had spent a couple of months doing nothing but fixing bugs and learning the old engine and what not, I took another fun project, implementing the MD5 hashing algorithm in LotusScript. I remember reading a posting in a Notes forum somewhere that an MD5 hashing algorithm in LS would be cool to have. I thought about it and decided it would be cool to write one. I asked my boss, Wai Ki Yip, if he didn't mind me doing a side project for a few days, because I hadn't coded anything significant in what felt like forever. He didn't bat an eye, he said go for it, have fun. And I did.

The first catch in writing the algorithm was the utter lack of bitwise operations in LotusScript. So I had lots of missing bit operations to code as functions in a library. They tended to look like this:

Function BitRotRightL( Byval x As Long, Byval bits As Integer) As Long
'Rotates the bits in a long right by the number specified
'Note: bits must be positive
Const maxbits = 32
bits = bits Mod maxbits
If bits Then
Dim overflowmask As Long
If x And twotothe(bits - 1) Then
overflowmask = &h80000000&
x= x Xor twotothe( bits - 1)
End If
If x And &h80000000& Then
BitRotRightL = ((x And mask( bits)) * twotothe( maxbits - bits)) Or overflowmask Or ((x And &h7FFFFFFF&) \twotothe( bits)) Or twotothe( maxbits- bits -1)
BitRotRightL = ((x And mask( bits)) * twotothe( maxbits - bits)) Or overflowmask Or ((x) \twotothe( bits))
End If
BitRotRightL = x
End If
End Function

So I wrote all the operations necessary and as efficiently as I could. After that, implementing the actually hashing algorithm was pretty easy, I mostly copied the design of a java implementation I found.

As you might imagine, the MD5 hashing ran a little slow :). But it worked and I had fun writing it and apparently people are still using it in production. It only took a few days, but it served to energize me at time when I was feeling frazzled and overwhelmed and give me a boost of confidence during the most challenging project I had ever faced. I'm not sure if Wai Ki saw it that way, or if he just wanted to keep me happy, which I suppose is actually the same thing.


Katrina Relief

Like most people who have been following the tragedy of Katrina, I am upset and angry. There is so much I want to say on this (I'm muttering scathing oratory to myself most of the day) but I'm too emotional and I doubt I could really express how I feel anyway. I am at times furious at the officials who's job it was to plan the safety and well-being of the citizens along the Gulf coast and the leadership vacuum in the days that followed. I am also at deeply saddened by the loss of life and suffering that has occurred and continues to occur (and I fear we haven't yet learned the worst of it).

Many of these survivors have lost more than I can imagine. I don't know what I can be do to help these people other than giving money to help with the disaster relief. If you haven't already, please just give something. It's easy and you'll be done in five minutes.


September 2, 2005


I'm back, sorry the site was down. I forgot to renew the DNS and once I did (on Monday) my provider didn't restore my site like they're supposed too.

Anyway, it was kind of a nice break for a few days.