Lack of leadership kills project

Serendipity is an odd thing, isn’t it?  Monday I wrote a little rant about how a project needs a strong leader in order to be successful.  I’ve received some negative feedback on that assertion, but nobody yet has shown me a successful project that doesn’t have a strong leader.

Back to the serendipity.  Today I ran across Charles Hannum’s letter, The future of NetBSD.  Charles is a founder of the NetBSD project, and has been with the project throughout its life.  He was a pioneer in the development of collaborative–what later became known as “open source”–projects.  He has a lot of things to say about the NetBSD project, most of it not very flattering.  In fact, the first sentence tells you it’s not going to be pretty:  “The NetBSD Project has stagnated to the point of irrelevance.”

After explaining how the project was structured and how that evolved into a very common structure for open source projects, he says:

Unfortunately, we made some mistakes here.  As we’ve seen over the years, one of the great successes of Linux was that it had a strong leader, who set goals and directions, and was able to get people to do what he wanted — or find someone else to do it.  This latter part is also a key element; there was no sense that anyone else “owned” a piece of Linux (although de facto “ownership” has happened in some parts); if you didn’t produce, Linus would use someone else’s code.  If you wanted people to use your stuff, you had to keep moving.

NetBSD did not have this.  Partly due to lack of people, and partly due to a more corporate mentality, projects were often “locked”.  One person would say they were working on a project, and everyone else would be told to refer to them.  Often these projects stagnated, or never progressed at all.  If they did, the motivators were often very slow. As a result, many important projects have moved at a glacial pace, or never materialized at all.

He mentions other problems, but they’re all due to lack of leadership.  And his outline for moving the project foreward (a nice idea, in my opinion, but not likely to succeed) involves replacing the current “leadership” of the project with people who are commited to turning it around and making it work.

The letter serves as a good warning to those who would try to start a project in the absence of strong leadership, or decide at some time that the project is stable enough that the strong leader can be dispensed with.  That’s almost always a bad idea.

You gotta have a Daddy

Did you ever wonder why some seemingly simple projects fail and others–often much more complicated–succeed?  It doesn’t matter whether it’s open source or traditional development, or if the development team is filled with highly experienced programmers or primarily with beginners.  I’ve seen big projects completed on time and under budget, and small projects drag on indefinitely.  What’s the difference?  Adult supervision.

Seriously. Programmers in general are terrible at time management.  We like to work on cool stuff.  Without somebody pushing us, we tend to work on a problem until we’ve figured it out and then move on to the next interesting problem.  That’s fun!  Turning something we’ve figured out into a finished, debugged, tested, and documented product is hard work and not terribly exciting.  Sure, we like to ship stuff but, like most people, we don’t want to do the not-fun stuff.

The “cool stuff” disease also causes programmers to add frivolous features like skins to programs before adding the real functionality that makes the program useful and attracts customers.  I can’t count the number of applications that have really cool UI features with customizable everything, but don’t do the basic job they’re designed for.  Again, the programmers worked on what they wanted to work on rather than concentrating on and completing the important parts of the project.

The job of the project manager is to keep the programmers focused on the final goal–shipping a complete, functional application on time and within budget.  Somebody has to be the Daddy.

The uninformed theory of open source software is that the development teams are this loosely-organized group of individuals who magically work together and do everything by consensus.  That’s far from the truth.  I’ve noted before that almost all successful open source projects are controlled by a small group of “core” developers–often just one person–who reviews all issues and issues an edict if the group can’t reach a decision.  This is often referred to as the Benevolent Dictator model.

Software development projects aren’t the only places where you need a Daddy.  Wikipedia works because there is a social infrastructure that places a trusted person in charge of each topic.  That person doesn’t have to rule with a heavy hand, but he does need to make decisions about the content and style of an entry.  Can you imagine the chaos if just anybody was allowed to make changes to a topic with impunity?

Any collaborative effort requires a Daddy.  Somebody has to be in charge.  Without a leader, the effort will fizzle and die, or explode spectacularly into flame wars and hard feelings.  Sure, some people won’t like the tight control, but that’s okay.  Nobody’s irreplaceable, and those who can’t work under the rules of the game aren’t worth trying to bend the rules for.

Odds ‘n ends

  • I hate waiting in line for things.  Last weekend while Debra and I were waiting for the doors to open for the home show at the convention center, I thought I’d get a little exercise.  (It’s a 4-megabyte QuickTime video so it might take some time to download.  No sound.)
  • I bought a unicycle on Saturday and am learning to ride it.  I’ve managed not to hurt myself yet.  I can get about four pedal strokes (approximately 10 feet) before I lose my balance.  Pictures as soon as I get the knack of it.
  • Bananagrams will deliver a singing telegram by somebody wearing a banana suit.  Hey, at least it seems to be a going concern.
  • Bananagram.com, featuring BanaBot, was going to find the cheapest prices on common grocery items so you could save money by visiting six different stores.  This is funny not for the questionable premise, but for the “news” on the site.  November 2004: launched with high hopes.  December 2004: hire fly-by-night Russian developers to create the site.  June 2005: with a pretty .JPG mock-up and no more money, the failed project is abandoned and left as a warning to everybody else.  Investment opportunities still exist.  Act now!

Okay, so I haven’t had a lot of time recently for writing blog entries.

Extending the .NET Console interface

Although graphical user interfaces are all the rage these days (and rightly so!), there’s still some call for character-mode (console) applications.  In .NET versions 1.0 and 1.1, support for console applications was limited:  sequential access to the standard I/O streams.  .NET 2.0 introduced a much more complete console interface that allows cursor positioning, setting text attributes, and a few other low-level console tricks, but it doesn’t even come close to supporting the full power of the Windows Console API.

My article, Extending the .NET Console Interface, is the first of three planned articles that explore the Windows Console interface and present a .NET class that exposes the entire API to .NET programs.  This first article covers creating and attaching to consoles, responding to console control events, and using console aliases.  The second article will discuss the console screen buffer in detail, and the third will be all about using the console input buffer.  Full source code for the article is available for download here.

Jupiter’s Travels

In 1973, Ted Simon embarked on a four-year, around-the-world journey via motorcycle.  His book Jupiter’s Travels describes the journey and many of the things he saw.  As with any good travelogue, the book also gives us some insight into the author’s thoughts and how the journey changed his outlook on things.

I’ve heard it said before that the open minded traveler will learn much more about himself than he will about the people or places that he visits.  In my few experiences traveling outside my comfort zone, I’ve found that to be true.  It’s certainly true for Ted Simon, and that turns out to have rather mixed results for the reader.

As a journalist, Simon kept copious notes during the journey and periodically sent dispatches back for publication by his employer, The Times of London.  The book is obviously a collection of his notes, edited to provide some kind of story.  Essentially, it’s a collection of journal entries written over a four year period and then edited for inclusion in a book.  Unfortunately, the editing didn’t include trying to maintain a constant “voice.”  In particular, I found it somewhat confusing to read one passage written in the past tense (“I was following the coast road…”) and the next passage written in present tense (“I am following the coast road again today…”).

Simon’s description of his route through Africa (after riding through Europe and catching a ferry across the Mediterranean Sea) clearly shows his mental journey from being cautious and somewhat frightened about unusual or unexpected situations to becoming comfortable with and even looking forward to the unexpected.  Lots of things go wrong early in his journey down the east coast of Africa, causing him great agitation.  As the trip progresses you can see him take things in stride and at one point he writes that the journey wouldn’t be interesting at all if everyting went exactly as planned.  How much can you learn about yourself when you don’t have to face the unexpected?

He shares another key insight when describing his conversation with a gas station attendant in Cape Town, South Africa.  The attendant asks where Simon is from, and when he finally explains that he rode the motorcycle all the way from London, the attendant is incredulous–frightened, even, to think of making such a journey.  Simon writes, “I am learning, as I make my way through my first continent, that it is remarkably easy to do things, and much more frightening to contemplate them.”

From Africa, he took a ship to South America, riding south on the east coast and then north to Central America, through Mexico, and to Los Angeles.  There are fewer insights as the journey progresses, as he begins to take everything in stride.  It’s as if he can no longer be shocked or surprised by the way people live, the things they eat, or by the many wondrous sights that he sees.  It is interesting, however, to read his reactions to life in the Los Angeles area after two years in less developed regions of the world.

It’s possible that the book changed me–that reading of his first two years’ adventures, I was no longer able to be astonished by the things he described.  But it seemed to me that he lost something after leaving the U.S.  His descriptions of Australia were mostly flat, and the trip through India and southeast Asia very disconnected and not terribly interesting.  By that time he’d been on the road for more than three years and I think he was getting tired.  Either that or he’d exhausted the page budget for the book, because he includes almost nothing of the trip from India back home.  Almost 8,000 miles through Pakistan, Afghanistan, Iran, Turkey, Yugoslavia, and other countries is covered in fewer than 10 pages.

I really liked the first three-quarters of the book–up to his landing in Australia.  After that, reading became something of a chore.  Still, those first 350 pages are worth reading and all in all I’d give the book a mild recommendation.

Commuting on a bike

Since July 5, I’ve ridden my bike to work on all but three work days, and two of those days I drove the truck to the transmission shop and rode the bike back to the office.  I’m fortunate to be only seven miles from the office (at most a 30 minute ride), to have a private shower, and to set my own hours.  I have the ideal situation for bicycle commuting.  It’s surprising to me how even that short ride can clear my head in the morning and in the evening can take my mind off of whatever I was working on.

I get a little perverse enjoyment in the mornings when I turn on to Parmer Lane (about 4.5 miles from the house) and see a two-mile-long line of cars (see above) backed up behind the traffic lights while I’m zipping along on the shoulder.  Traffic has been especially dense since school started on Monday.  So dense, in fact, that if somebody left the house in a car at the same time I leave on the bicycle, I’d get to the office first.  I sat in that line of traffic almost every work day for several years.  I much prefer riding the bike.

Between the wind (prevailing winds here during the summer are usually from the south or southeast) and not being warmed up in the mornings, the fastest I’ve been able to make the ride to the office is about 18 MPH.  I simply can’t get my myself to push very hard so soon after getting out of bed.  Besides, I don’t want to be totally wasted when I get to the office.

The way home, however, is a different story.  My initial goal was to break 20 MPH for the ride home.  I managed 19.4 MPH during the first week, although my average heart rate was way too high.  With a good strong tailwind a few weeks later, I managed 19.9 MPH, and the next day I shattered that with a 20.8 MPH average over the 6.8 miles.  Today I set my new personal record–21.4 MPH, or about nineteen and a half minutes’ commuting time.

Reviewing my modest performance improvement (a little under 10%) over the last month and a half, I got to thinking about diminishing returns.  If I take 30 minutes to make the ride, my average heart rate will be 55% of maximum–too slow to even count as aerobic activity.  I can easily shave 20% off that time and only increase my heart rate to about 70% of maximum, which counts as an easy aerobic workout.  But to make it in 20 minutes I have to push myself into anaerobic territory to 90% of my maximum heart rate.  I’m beat when I get home and my legs are sore the next day.  I’m now at the point where any small gain in average speed will come at a huge cost.  I’m going to shoot for 22 MPH, but I know it’s going to be difficult.

That said, I’m very much enjoying the freedom to commute to work via bicycle, and will be disappointed if my situation changes and forces me back into the car.

Odd lots

Sometimes I just don’t know where the time goes.  Between working with Flash, trying to decipher the infuriatingly obtuse Windows Console API documentation, and shuttling my truck to the transmission shop and back, I let a whole week get away from me and didn’t even notice it fly by.

  • If you have a Dell laptop or notebook computer that you bought in the last two years or so, listen up.  Dell has identified a potential issue with some laptop and notebook batteries which could result in the batteries short-circuiting and smoking or causing a fire.  They’ve issued a recall on many, many Sony batteries.  Of the three batteries here (the two standard batteries in mine and Debra’s laptops, and the one larger auxiliary battery), one is affected by the recall.  Visit Dell’s Battery Recall site for the full scoop.
  • I’ll bet anybody reading this has been annoyed a time or three by automated telephone response systems that put you in an infinite loop of pressing buttons and trying to make the speech recognition system understand you.  Sometimes it’s impossible to get any useful information from those crazy menus, and many of them don’t have a “please let me talk to a real person” option.  If you really want to talk to a person, you might try visiting the gethuman database.  There you’ll find phone numbers and magic keypad codes that just might bypass the idiotic automated response system so that you can find a flesh and blood human to scream at.  I haven’t tried it, but you can bet that I will the next time.
  • If you’re looking for batteries, you probably can’t find better prices than what you’ll get at CheapBatteries.com.  I’ll warn you up front that it’s one of the ugliest Web sites around–looking like something out of the early ’90s.  They also could use a decent shopping cart.  But, boy do they have batteries.  All I needed was three or four CR2032 cells (the quarter-sized disc batteries), but the minimum order is $15.00.  I bought 10 of the CR2032s for 50 cents each (you can get them for as little as 15 cents each if you buy 1,000) and to make up the difference decided to try their 2700 milliamp hour AA NiMH rechargeables.  They’re kind of pricey at $3.00 each, but they’re amazing.  Two of them kept my GPS running for more than 24 hours.

A funny political comment, and anonymous surfing

One of the reasons I don’t visit slashdot as often as I probably should is that I tend to get sidetracked reading the mostly irrelevant and uninformed comments that are posted by other users.  If I just read the headlines and viewed the few articles that were interesting to me, it’d be 15 minutes–tops–every day.  But flame wars are like train wrecks:  you know you shouldn’t look, but you just can’t take your eyes away.

Today, the posting PR Firm Behind Al Gore YouTube Spoof? spawned a huge political debate.  One poster, commenting on negative campaigning, said:

There is opportunity here to inform the cow-like public that they are being manipulated by assholes.

To which somebody responded:

If you’re living in a “democracy” that has a “cow-like public”, it’s not the “assholes” that are the problem.

Amen, brother!  At some point the “cow-like public” has to figure out that they’re not going to get decent candidates unless they demand it.  I suspect, though, that we’ll skip that after our descent into even more corrupt and incompetent government, people will become so upset that they’ll skip the civilized step of voting the bums out and move right into anarchy.  Hopefully that’ll happen after I’m gone…


Last year I mentioned anonymous proxies as a possible means of surfing the Web anonymously.  I also pointed out some of the possible dangers of using a proxy that you don’t fully trust.  Today I ran across an interesting article in which the author relates a story about an employee being fired for using Anonymizer at work.  How did he get caught?  Analysis of network log files showed that he had no activity.  The IT department went looking to see what was wrong with his machine.  Moral of the story:  if you’re doing something dirty, don’t be so clean that you attract attention.

Deer nerd

I’ve mentioned a time or two before that we have many deer in the neighborhood.  They were cute the first year until they ate Debra’s roses (and everything else pretty) in the spring.  Then they became big bony rats as far as we were concerned.  The deer are still the source of some amusement, especially when Charlie chases them, and of course we still enjoy fresh venison when one of our friends comes hunting.  All things considered, though, I’ll be happy when we get the fence up and they don’t come visiting anymore.

The other day I was pedaling down the street on my way home and I saw this buck with something odd hanging on his antlers.  I stopped and shot a few pictures, but they weren’t very good.  In particular I couldn’t make out what was on his antlers.  Friday evening I got another chance.

This still isn’t a great picture, but it’s the best I could do under the conditions and with my cheap little digital camera.  He was pretty skittish and there was a doe between us (off to the right and not visible in this shot) protecting her fawn.  She was not going to let me get close.  In any case, it’s pretty clear that the buck has a branch–probably covered with ball moss–stuck in his antlers.  He’s also missing about 1/4 of his right rear leg.  He hobbles when he walks.

I wonder if having something stuck in your antlers is the deer equivalent of nerdy stereotype highwater pants, a “kick me” sign pasted on your back, or a piece of toilet paper stuck to the heel of your shoe.  Lucky for the deer, he’ll lose his nerdiness when the antlers fall off.

Odd Notepad bug

Notepad–the text editor that ships with Windows–is an incredibly useful program.  Sure, many users never see it, but I’m continually editing or viewing text files, batch scripts, .ini files (yes, there still are a few of those around), miscellaneous configuration files, log files, and all manner of program output that I direct to files.

Users, especially programmers, look upon Notepad with scorn, and for good reason.  It’s been around for years (at least since Windows 3.1), and it’s just a basic text editor:  nothing fancy and no advanced features.  As a programmer’s text editor it leaves a lot to be desired compared to modern tools, but it’s as good as WordStar’s non-document mode that I used before I got Turbo Pascal.

In any case, today I was editing a file with word wrap turned on.  I saved the file and continued typing without really looking at the screen.  When I looked up, the stuff that I’d typed ended up in the middle of a line somewhere, several lines above where I thought the cursor was when I pressed Ctrl+S to save.  I’d run into this a few times previously but always assumed that I’d moved the cursor inadvertently.  Today I thought I’d investigate.

I opened a new document in Notepad and resized the window.  Then I typed the text you see here:

The blue mark is under the cursor–right at the end of the line.

Then I pressed Ctrl+S to save the file.  The effect is the same if you select Save from the file menu.  I named the file “xxx.txt”.  For reasons unknown, Notepad moved the cursor three spaces back, as you can see here:

I know, a lot of you are wondering why I use Notepad at all when I have so many other editors to pick from.  As I’ve said before, I do have TextPad installed and I use it for most serious editing.  But Notepad is very useful for two primary reasons:  it’s small and loads very quickly; and it’s installed on every Windows system.  I don’t have TextPad on my lab machines or on the build machine–it’s Notepad all the way.  Same for other machines (like Debra’s or friends’) that I’m asked to look at from time to time.

This is not, by any stretch of the imagination, the only bug to be found in Notepad.  There are many bugs that involve word wrap (the bug I illustrated above only happens when word wrap is turned on), including the interesting limitation that you can’t display the status bar if word wrap is enabled.  Take a look at Craig Andera’s “Interesting” Notepad Bug entry and associated comments for more information.  Or just search Google for “notepad word wrap bug”.

It’s really too bad that Microsoft won’t address these bugs.  Notepad is incredibly useful, but the existence of these defects forces me to be extra careful when I’m editing a file.  As it stands, Notepad almost doesn’t suck.  It wouldn’t take but a week, tops, for a marginally competent programmer to fix those problems.  I realize that there is no direct economic payoff, but it would be a huge public relations win at very little cost.