Sat - November 22, 2003

New Ride



Well, thanks to Ahnold lowering the car tax from outrageous to just plain bad, we got a new car today. We're the proud owners of a 2003 Honda Element 2WD in shoreline mist. Did I get a good deal? Nope, but I could afford it so I just went ahead an bought (actually the discount on the sticker was reasonable for the area; I just didn't get diddly for the mighty Neon). It is a nice car and I'm sure we'll be happy with it. Esther can drive an automatic, though it has been a while so I think we'll have a few practice sessions before she flies solo. Thanks to Esther getting her fellowship stipend mostly in a lump sum, we were able to buy with cash. I didn't do the dramatic thing and show up with a brief case full of twenties, but used a cashier's check. Actually, the finance guy told me they would have taken a personal check. I didn't even bother bringing my check book because I couldn't imagine anyone would have taken that kind of money in a check, but they would have. Learn something new every day. I also learned that I have a good credit score, but it is light because I've only had two auto loans. I'd be happy to have a mortgage if I could actually afford a house, but that isn't going to happen while I'm living here.

Posted at 06:24 PM     Read More  


Fri - November 21, 2003

Kill your TV



I want to quote something from Theodore Dalrymple (it's a pen name--his real name is Anthony Daniels), a British psychiatrist and social commentator. He spends much of his time treating prisoners in London and has closely observed the British underclass and its pathologies. You can read the full article in The Spectator (UK), but here's I think a particularly profound observation:

In the modern world, the availability, indeed ubiquity, of entertainment is the most potent cause of boredom. It causes boredom because the world cannot ever be as fast-moving or dramatic as audiovisual entertainment, and for most of the time interest has to be extracted from the world rather than merely absorbed from it passively. Hence the more people with vacant minds seek distraction by entertainment, the more bored they grow; and bored people create chaos in their lives because intense misery is preferable to ennui. I have long thought that much social pathology is an attempt to evade boredom by the propagation of violent crises; and, since television causes boredom, it thereby causes social pathology.

I recall reading a study done in South Africa, which had no television broadcasts until the 60's, that the introduction of TV coincided with a substantial increase in violent crime. This despite the fact that TV was heavily censored, so it is doubtful that the particular nature of the programming was to blame. People have of course speculated as to why television and violent behavior should be correlated, but I think that Dalrymple has isolated an overlooked factor which seems pretty compelling to me. Having gone cold turkey myself (when the cable company finally unplugged the live connection to my apartment which I wasn't paying for) I can say that it is a lot easier to get bored without the idiot box, especially when I'm alone. I've even had to resort to (gasp!) reading books, and writing the occasional blog. There really is something about TV that programs you to take in, and expect, a huge flux of information at an ever increasing rate. Like video games which move ever faster as we adapt ourselves to evaluate and react more quickly, TV (and film) has taken on the MTV style of jerky cameras, quick cuts, and dizzying edits. Amazingly we accept this and even manage to process it--a true miracle of the capacity of the human brain.

Then there is real life which so often hardly moves at all. For an educated person, there are of course alternatives. Work, which usually is in doors and requires no heavy lifting. Books or hobbies are others. The educated person has the ability to occupy themselves with interesting things, but what about the uneducated, or perhaps more precisely the willfully uneducated? When you know very little, you don't know what to do with yourself; your world is very small. How many violent crimes started out because "me and the boys were hanging out with nothing to do so we decided to ..."? The thrills of crime, particularly violent crime, satisfy that need to cure boredom. The frustration of boredom must be incendiary. Our entertainment--TV, video games, popular music, etc.--has conditioned us to observe at a uselessly fast rate, which might ironically be good for some, like the work-o-holic, but is disastrous for others. Lacking the ability to discipline themselves, the uneducated are constantly bored. They either drown themselves in ever more entertainment or create trouble. It is an interesting idea, and one that poses many challenges. If true, I don't know what the solution could be.

By the way, if you are interested in the rest of the article, Dalrymple goes on to discuss how the British underclass is absorbing much of the worst aspects of Americana (from the predominantly American TV shows), to the point of using American words instead of British (e.g. high school), without the corresponding positives of American culture. He believes that Americans compensate for their boredom by constantly striving for personal improvement and lets face it, making a buck, whereas the British, particularly the underclass, are socialist. They look to the government to provide and don't value individual achievement as much. Interesting cultural comparison. I wonder how well it might apply to our own underclass.

Posted at 09:55 PM     Read More  


Fri - November 14, 2003

More reader mail!



"Don't you think it's a bit hypocritical to support a serial molester when you condemn someone who engaged in consensual sexual activity?"

Response 1: Oh pshaw, I live in Berkeley; you'll have to try much harder to bait me than that! :-P.

Response 2: The fact that Clinton used the intern program like an escort service made him low rent; it was the perjury that got him impeached. Of course I never liked Clinton and disagreed with about 9 out of 10 things he did, but you can't impeach someone for that. You can when they commit perjury. We can't tolerate a president who will abjectly lie the way Bill Clinton did. For all the cynicism out there, most presidents don't (and that is true of both parties). I used to think that Nixon got a bum rap, but after watching Clinton in action I realize they both got what they deserved. Nixon lied; Clinton lied. Nixon resigned to avoid impeachment; Clinton was impeached. In the case of the latter, the skirt was incidental. And by the way, if you are a president in search of a mistress, choose one commensurate with your stature--an educated, classy woman of independent means, not some dimwitted, star-struck, chatty twenty-something intern with an IQ of a hand bag (who now designs hand bags).

And just a little more on the accusations against Ahnold. Since almost none of these women will give out their names, it is a bit hard to take them too seriously. Even if we do take them at their word, remember this happened at a place of work where people routinely disrobe and simulate copulation while a crew films it and a guy with a megaphone yells out instructions on how to it better. This isn't exactly the executive office at IBM. But seriously, Ahnold probably was an arrogant movie star who thought he could score with any girl he chose. Does that make him a great role model? No. Would I have preferred someone else over him? Yes, I believe I covered this topic. Given the choice between Ahnold and Gray Davis, who did I choose? Oh please...

Posted at 07:32 PM     Read More  


Sat - November 1, 2003

Chant Baby



A quick posting on a concert I attended with the wife last night. We saw a choral production of an Arvo Pärt composition. It was a setting of an Eastern Orthodox prayer that I can't remember the name of. The performance was at a local Berkeley church. The space was a bit large for the size of chorus, but there was a large audience so a more intimate venue probably wouldn't have seated everyone. Esther says she's spoiled by the little church she usually sings in on Sunday nights. It is a small place with very good acoustics.

Pärt's setting was inspired by chants so it features simple, repeated, spare melodies. Unlike Gregorian chants which are monophonic* (no harmony), Pärt did include homophony* (one melody with chords). The sound was more modern than traditional chants which sound a little primitive to me, but still in the spirit. I enjoyed Pärt, which is unexpected since he's still alive. Most composers who have yet to assume room temperature seem to be enamored with atonal music which is just crap to me. Music needs a melody if you ask me, despite what modern theorists contend. Fortunately, Pärt hasn't been completely corrupted. Given what he wrote about his composition, I imagine that he is sincere in his religious beliefs which probably inoculates him against the worst of modernism.

*OK, so I really didn't know these terms until the wife explained them to me. I guess I should take her music appreciation class.

Posted at 11:51 AM     Read More  

Dead air



OK, so I haven't been blogging much lately. I've been busy at working preparing things for a visit to the home office in beautiful Champaign IL (mmm...corn...). Following that it is off to a biology conference to play the corporate shill. So, it will be a week of dead air here at "Will Blog for Food" (I'd be going hungry if it weren't for the expense account). I'd apologize to my loyal readers if I had any ;-P.

Posted at 11:35 AM     Read More  


Fri - October 24, 2003

Clean up your mess



Apparently there is supposed to be a big protest tomorrow in downtown SF to "bring the troops home". I could say a lot about this but instead I'll quote an actual Iraqi on the subject (he wasn't a fan of the war): "You can't just come into a man's house, make a mess, and then just leave!" Seems to me that this guy is capable of a lot more logic than your average peace protester; maybe there's reason to hope for Iraq.

Posted at 09:00 PM     Read More  


Sun - October 19, 2003

A reader responds...



Hey......haven't read all your recent blog, but far enough to warn you:
DON'T BUY A JETTA AND BECOME ANOTHER ONE OF THOSE PSEUDO-EUROPEAN,
BIRKENSTOCK WEARING, FRANCE LOVING, AMERICA HATING BERKELEY-ITES!

[Name withheld to protect the"innocent"]

Posted at 04:28 PM     Read More  


Sat - October 18, 2003

How can you stand it?



I was on the phone with our HR director doing my annual review 6 months late. More about that later. She asked me how I could stand living where I do (I guess it is pretty obvious I don't mesh well with the Berkeley set). Here's how I should have answered the question: "well I just mostly stay at home cleaning the rifle, but every now and then I like to check out the local bell towers..."

This reminds me of one of Andrew's laws: "Life is easier when people think you might be crazy."

Posted at 11:31 AM     Read More  

What's this?



This is a category for all the clever things I should have said or should have done but didn't. You know, the flip remarks, the stinging comebacks, and all those other ideas that come to you 5 minutes too late.

Posted at 11:25 AM     Read More  


Wed - October 15, 2003

Is we stoopid?



This whole thing with Rush and his drug problem has brought up something that always irks. From all the usual suspects we're hearing about how dumb his audience and how Rush fooled them with his shtick. I'm a Rush fan and I've listened to him on and off for years; I've got a PhD in astrophysics. Those of you from Rio Linda might be interested to know that they don't hand those out for being stupid. My wife is working on a PhD at a third rate institution called the University of California at Berkeley. Yep, she enjoys Rush too. Ditto for my mother in law--PhD in English (!). My dad was the one who introduced me to Rush. I'm not sure if he's still a listener, and he didn't agree all that much with Limbaugh, but he still enjoyed the show. He's a retired professor of greek history. Detecting a pattern here?

But here's the broader point: why is it that liberals believe that conservatives are all dimwits? This goes beyond the common feeling that people who disagree with us are stupid. Normal people realize this is just emotions talking. We all know someone who doesn't share our political views who we still recognize as intelligent, maybe even more intelligent than ourselves. Still, I think that liberals really believe they are smarter. And, I think that this belief is really a defense mechanism. If liberals thought that conservatives were their equals in intelligence, then they would be compelled to address conservative arguments foursquarely. They would have to prove their ideas with reason and evidence, which is really a losing proposition. Liberalism is fueled by imagination. It isn't about they way things are but the way things ought to be (my apologies Rush), looking at the world that might be and asking "why not?". Putting that vision to the test here in this world isn't likely to produce satisfactory results; utopia is elsewhere. Better to believe that conservatives are dumb than to address them seriously--that just drags you back into the unpleasant reality.

Posted at 10:12 PM     Read More  


Sat - October 11, 2003

Lookin' for a new ride



Spent the afternoon test driving some vehicles. I've managed to cobble together enough money to buy a new car, which I suspect won't happen again for quite a while, so I figure it is now or never, and the old Neon is well, old.

The first car that we looked at was the Honda Element. I wasn't even thinking of this one, but the wife kind of likes it, so I figured why not. The element is what I like to call a PSUV for pseudo sport utility vehicle. It's built on a car frame and has a car engine(4 cylinders; 160 horse power), so it is basically a tall car, not a truck like a true SUV. That's fine by me because I actually like the concept of a tall car. It just feels really roomy and you sit somewhat higher up but don't feel like you are driving a sky scraper. The Element also dives like a car, so you don't feel like you're piloting a yacht. The 160 hp engine is whisper quiet and produces a reasonable amount of power--even accelerating on to the freeway. It felt adequate if not racy, even at 65 pushing the accelerator got the Element to pick up acceptably. The one test I didn't get a chance to try was uphill on the freeway. I'm guessing the element will have a hard time holding 65 going over the Oakland hills, but I'd pleasantly surprised if I were wrong.

The interior of the Element is conspicuously utilitarian. The seats are made of a sort of rubberized cloth, the floor is rubber, everything else is plastic. This isn't a luxury car. Practically speaking, you can clean the interior by spraying it down with a hose. This is a car that in which you are supposed to be able to make a mess. The marketing brochure shows a lot of college kids driving this car to the mountains to snowboard or to the beach for camping. As if some 22 year old college kid is going to have 20 grand for a new car--have they seen tuition rates lately. I think it is kind of cool and it would also be great for kids. They'll have to work overtime to make a mess that will stick on this thing. All and all, I liked this car more than expected to.

Next up was the Nissan Altima. I have been looking at different cars on the web and this is the car that I was leaning towards. By the numbers it is a good car. It is a bit roomier than the car I have now and a lot peppier with a 175 hp, 4 cylinder engine. The engine was a bit noisier than the Honda, which might be a trade off for the extra power. It definitely had nice pick up though. The steering annoyed me a little because it had a lot of power assist. One thing Chrysler always got right was not over boosting the steering--it gives you a better feel for the road. Still, I could get used to that. Unfortunately, I really didn't like this car, not so much for the driving, but for the styling. Up close, the car didn't look all that good on the outside, and much worse on the inside. It just looked cheap. The dash just had a chintzy look and feel I didn't like. Worse, it was made of that squishy foam I hate. When I was a kid, that kind of foam dash would invariably dry up and crack. Though I doubt that would be a problem today--better foams and we have garage parking--I have bad associations. Esther didn't like the automatic shifter because it had sort of funny shaped set of notches that didn't work like most automatics. I really wanted to like this car, but it is just too ugly on the inside.

After the Nissan was supposed to be the VW Jetta, but we waited around the dealership for 15 minutes and no salesman came up to talk to use. The few cars they had in the showroom were heavily marked up (1000's even above the sticker price!) special edition cars. I really don't think I'll buy a Jetta anyway--too small for the price, and I definitely won't buy one from this dealership. We left without driving anything.

Finally we stopped by the Saturn dealership. I can see why they win so many customer satisfaction awards. The minute we walked in a sales women greeted us in a very polite and helpful manner. There was none of the smarmy, car sales, kind of vibe you usually get. Great service; too bad her product sucks. I test drove the new ION. These had caught my eye when the just came out and looked kind of cool in the adds. The ION is significantly cheaper than the other cars that we looked at and that is why I wanted to give it a chance. The exterior was so-so up close, but the interior was a definite improvement over the Nissan. One oddity was the center mounted gauges (they do this to make it cheaper to build a right driver). It didn't bother me as much as I might have thought, and my eyes easily gravitated to the gauges.

Once on the road, the car seriously underwhelmed. The 140 hp, 4 cylinder engine felt positively gutless. It was slow to accelerate to freeway speed and I had to floor it to get it to accelerate once at 65. The engine noise was much louder than other cars I test dove--very buzzy and nearly as loud as my five year old Neon. Also there was something faintly rattling in the dash. This car just didn't seem put together well. Another problem, was the funny smell. The sales woman said that that was a little paint burning off the exhaust manifold. The car we were testing had literally one mile on it before we took it out, so I guess there's no reason not to believe that. Still, it isn't something you want to smell when you are test driving a car. There wasn't a chance I was going to like this anemic vehicle anyhow, but that stink would have killed any sale. Note to sales staff: go put 50 miles on a tester before you let the customer drive it and then you won't have these problems. You might sell some more cars that way, if they didn't suck, that is!

Right now me and the Mrs. are leaning toward the Element. I'd like to try out a Camry, even though they look kind of boring to me, and maybe another car or two. We're not going to buy right away anyhow, at least not until Ahnold cuts the car tax. Like hell if I'm giving California triple what I have to; they tax me enough already, but at least that means I'm "rich" right. Sorry, I guess that belongs in the politics section--my bad ;-P.

Posted at 10:28 PM     Read More  


Wed - October 8, 2003

We interrupt this blog...



For some gloating!

Na, na, na, na,
Na, na, na, na,
Hey, hey, Gray,
Goodbye!

Just had to do that.

Posted at 06:06 PM     Read More  


Tue - October 7, 2003

Terminated



All the news agencies are officially calling the recall passed and predicting Ahnold the winner. Unless there's some sort of miracle, you can put a fork in Grayout, because he's done. With 12% of the votes counted, 56% of voters have come out in favor of the recall and 54% for Ahnold. I don't know how that will hold up state wide, but I for one am really surprised. If the terminator can win an outright majority of votes, he will definitely be in the drivers seat when he takes up residence in Sacramento. Let's just hope he doesn't take too many left turns. I figured the recall was in good shape when early exit polling showed Ahnold with a 54% favorability rating to Davis paltry 20 something. Even Bustamante couldn't pull more than the mid 30's in favorability.

Switching to the proposition front, it looks like prop 54, the racial privacy initiative will go down in flames. I guess I'm not surprised because I think most people hadn't heard much about this one, or only heard negative things. I don't see it as a huge loss, because it wasn't likely to have the substantial effect that 209, which ended state sponsored affirmative action, did. I don't like losing this one, but it there wasn't a lot on the line.

On a brighter note, prop 69 looks like it is well on the way to passing. Given the strong support for the recall I guess it isn't all that surprising that a ballot initiative that would require the current governor's head to be repeatedly dunked in a flushing toilet by a burly movie star until he "cries like a woman" would pass by a substantial margin. Unfortunately it seems likely that this initiative will be overturned by the infamous 9th circuit on constitutional grounds. Lawyers claim that the particular language "cries like a woman" is discriminatory. The challenge came too late for supporters to change the offending phrase on the ballot to "cries like a cowardly, week willed person of any gender, race or creed", so we may not be treated to a Gray Davis swirly after all. Once again the it appears that tyrannical courts will thwart the democratic will of the people.

Posted at 09:24 PM     Read More  


Sat - October 4, 2003

The Mythical Man-Month



Here's a question: why would anyone bother reading a book about software development written in 1975? If that book is The Mythical Man-Month by Frederick Brooks, then it is because it is filled with important insights about developing software products--particularly about managing the people that make software products--that transcend the vast technological changes that have occurred since the Age of Disco. To understand that, it is worth considering the meaning of the title; what is a man-month and what is so mythical about it?

A man-month is nothing more than a measure of productivity. If one man can make 1000 widgets in a month then 10 men working 2 months can make 20000. Perfectly sensible, right? Wrong! What Brooks observed from his own experience managing large software projects for IBM is that this simple linear relationship is completely fallacious; increasing the number of programmers working on a project may only speed it up a little, none at all, or even slow it down. He went so far as to coin Brooks' Law: adding people to a late software project makes it later! A paradox? Yes, but there are a number reasons why this is so. Some are linear effects: new people need to be trained and acculturated to the project which means that those currently working must stop what they are doing and take the time to train the new people. The work itself has to be repartitioned since what one man used to be working on entirely by himself must now be broken down into pieces for the new people. It isn't always trivial to figure out how to break up what you thought of as one thing into many. Finally, and probably most damaging to productivity, is the potentially geometric increase in the amount of communication needed to run the project. Without careful organization, each added person will potentially need to communicate with everyone currently working on the project. Doubling the number of people can as much as quadruple the amount of communication, leading to a serious drag on productivity. Now we see how The Mythical Man-Month stays relevant. This is really a book about managing people and not about tips and tricks for building a better mainframe operating system. Technology changes, but people stay the same.

The Mythical Man-Month is really more a collection of essays than a book, though the themes running through the essays tie them together coherently. The opening chapter, "The Tar Pit", points out something that all experienced programmers know, but sometimes choose to forget: there is a big difference between a program, a programming product, and programming systems product. A program is simply a piece of software that does a job. Any decent coder can usually bang out a program in short order. A programming product is far more complicated because it is a program packaged and tested so that anyone can use it reliably without having the advantage of the author's detailed knowledge of the code and its genesis. Brooks estimates that it takes three times the effort to make a programming product as it does to simply write a program (I think that may be an underestimate). The cynic might blame this on one of Murphy's corollaries: "Nothing is foolproof because fools are so ingenious", but even if we are more generous about the abilities of our users, it still does take a lot of work to explain code to someone who didn't have to go through the process of writing. Most complicated of all is the programming systems product which is an integrated system of programming products. This integration--getting many pieces of software to work together without stepping on each other's toes--costs another factor of three in Brooks' estimation for a total factor of nine in time to create a system over a simple collection of programs.

In chapter 2 we are formally introduced to the mythical man-month that I discussed in introducing Brooks' book. In chapter 3 Brooks introduces one of the components that he believes can restore some of the productivity lost in the complexity of developing a large system--the surgical team. Brooks chooses the analogy of the surgical team because he believes that it must do in its own way what a software team must do, coherently complete a single complex task. The surgical team consists of the head surgeon, an assistant, and a support staff of nurses and technicians. The head surgeon is responsible for making the life-and-death decisions and for doing most of the actual operating. The assistant surgeon is there to assist, observe, provide advice, and generally act as a sounding board for the head. The others on the staff perform necessary support activities which allow the surgeon to concentrate on the cutting. It seems apt to apply this organization to the development of a programming product because, like a surgery, a programming product must be a single coherent unit (if it is to be easily used by others). That kind of coherence is rarely achieved by more than a single mind. With an analogous structure of a lead programmer, a less experienced assistant programmer, and technical assistants (like test engineers and project managers), a manager can focus an experienced mind on the task of creating a single product maximizing the efficiency of its creation.

The surgical team is a good model for creating a single programming product, but what about a programming system? Market pressures demand that even large systems be completed as soon as possible, so it isn't reasonable to have a single team--really a single person--develop it in its entirety. In chapter 4 Brooks' addresses this problem by proposing an aristocratic model of development. The goal for the system is for it achieve the same conceptual integrity of the system as for the individual programs. He asserts that here again a single mind is needed--the system architect. The architect's job isn't to write code, but to conceptualize the system, to see its component parts, and to devise how they ought to work together. His job is very similar to that of the building architect, who doesn't take it upon himself to implement the plumbing structure or the elevator system, but instead visualizes the form and function of the building, how it will fulfill its requirements for its occupants and how it will fit in its environment. The system architect then delegates the responsibility of implementing the concept to the surgical teams who build the components to fit the vision. The goal of achieving conceptual integrity is (one hopes) achieved by the architect. An ancillary benefit is a reduction in communication needs because most communication now flows up to the architect and less so between the development teams.

Chapter 5 is an interesting digression about the second system effect. It is really a word of caution to architects to not give in to the impulse to add all the features and new concepts to the second system that time pressures, budgetary constraints, or technological limitations precluded in the first version. The second system (or version 2.0) is so dangerous for several reasons. First systems are build under the pressure of time and uncertainty. Since success can't be guaranteed, one must try to build something as efficiently as possible. Second systems are built on success (for who would build a second if the first was a failure?). It is easy to see the second system as an opportunity to add the features that one wanted in the first but didn't have the time for. It is also seen as an opportunity to implement bold, new ideas precluded by the conservatism of the original project. As Brooks observes, all too often the result is either what we today would call "bloatware"--software bloated with features to the point that it looses its coherency, or just plain failure as the second system development drags ever onward as more features are added and the bugs and flaws are worked out of the radical new approaches. Architects beware.

Chapters 6 through 10 are about communication during and documentation of projects (not to be confused with documenting the software). I didn't take a lot away from these chapters, as I think that the advent of email, web pages, and shrink wrap database software (like Lotus Notes or FileMaker) have really changed the landscape. Actually, I don't think that these technologies have been harnessed anywhere to their full extent, perhaps with the exception of email. Email is critical to me and critical to my ability to track multiple projects simultaneously. Since Brooks couldn't reasonably be expected to anticipate these technologies (even basic text editing using a computer was novel when he was writing), it is unsurprising that he doesn't say much that is really helpful in harnessing the power of the internet.

Chapter 11 is provocatively titled "Plan to Throw One Away". Brooks' point is that one usually makes so many mistakes and learns so much from the first system one builds, that it is usually better to throw it out and build it again a second time, if you really want to get it right. This might seem like a paradox if you recall the second system effect, but that is referring to something different. The "one" we should plan to throw away is part of building the first system; it is the zeroth system that never sees the light of day. My own experience is that one ought to build a system once to make it work and then again to build it right. The zeroth system gets written just to work without worrying about optimizing anything. It will reveal the flaws and oversights in your fundamental design and also point to the optimizations that truly matter versus those that might be esthetically nice but not of high impact on the code performance. This zeroth system is really just a program or a program system, but not a true product. The reason it usually gets thrown out is because the cost of turning it into a true product is higher than starting over and doing things cleanly. In latter chapters added after the publication of the original book, Brooks takes this concept further along and suggests an incremental model for software building. I will comment on that later.

In chapter 12, "Sharp Tools", Brooks talks about the software tools which are most valuable in enhancing programmer productivity. These days, every programmer has these tools and then some, so there isn't a lot to be gleaned from this text. Chapter 13's discussion of reducing bugs in software again mostly involves tools and techniques that all programmers use today. One novel suggestion is to "use lots of scaffolding", where Brooks is foreshadowing the idea of incremental development. By scaffolding, he means code that ultimately will not be part of the system, but is used temporarily to hold it together until the real code can be added. It allows one to have a working system before all the parts are working. Chapter 14 is a warning about how projects end up late. His key point is that projects fail one day at a time, meaning that it is the incremental addition of many small delays that causes a project to go over time and budget and not a single large failure. This is why many failures to meet deadlines are such a surprise--there is no obvious culprit. It is important then for managers to closely monitor projects and compensate for the small delays less they combine into a catastrophic failure. Perhaps as a corollary, I have to say that if your gut tells you something is wrong, then something is wrong. Chapter 15 addresses the need to comment software. His point is that the software itself should contain all that is needed for any person to understand how it works. Along with some very sane suggestions, Brooks suggests some levels of documentation which are absurd, as is revealed in a piece of code which is clearly overly complemented (he tries to shoehorn flow charts into the comments; it isn't pretty). At the time Brooks was writing, flow charts were still very much in vogue which is part of his over commenting problem. Also, Brooks makes the mistake of not allowing the code to speak for itself, meaning if one can reasonably figure out what is going on by reading the code, a comment isn't necessary (emphasis on the word reasonably).

Chapter 16, "No Silver Bullet" concluded the original text. In it Brooks boldly, and correctly, predicted that no single technique then available or likely to arise in the next ten years (now going on 25) would increase software productivity by an order of magnitude. Only smaller, incremental improvements were likely, though together they may all add up to a major productivity boost, but none on its own would be a silver bullet. Why is this so? Brooks divides the problems of developing software into those that are accidental and those that are essential. The former are artificial impediments that make it difficult to convert one's concept of what a program should do into the actual code and machine instructions. An example of this type in modern C coding is memory management. C programmers must manually allocate and deallocate memory and very often forget to do one or the other correctly. As a result they often waste time chasing bugs like memory leaks (forgetting to deallocate memory that is no longer needed) and access errors (forgetting to allocate enough memory to store what is needed). Java corrects some of this by doing garbage collection, which automatically disposes of memory that is no longer needed. By partially removing the accidental impediment of memory management, Java makes it slightly easier to turn ideas into code and thus generates an incremental productivity improvement. The problem is, that even in 1975 most of the truly horrific accidental roadblocks to software development had been removed. Improvements were and are still to be had, but they were and are of the incremental variety.

So what is it that holds back the productivity of software developers; what are the essential difficulties? These are conceptual. What really takes most of a developer's time isn't writing and debugging code, it is figuring out conceptually what must be done. Turning the ideas into code usually goes fairly quickly. Most of the problems are in the ideas. First one must figure out what the program is supposed to do. Once it is coded, testing usually reveals many flaws in the design. Assumptions hidden and explicit turn out to be violated. When added to the entire system, new flaws in the program's interoperability with other components is revealed. Programmers spend much of their time thinking, not coding, and that is why there isn't a silver bullet. There really isn't a short cut to thinking--not thinking isn't a solution, though often tried--even if one could tell the computer what to do in plain English. After all, people understand plain English and it is still very difficult and time consuming to figure out how to get them to do useful things and to work together effectively (which is why there are so many managers and not very many good ones).

There is hope for improving productivity however, mostly from code reuse. There is in principle no reason why a program written once can't be used many times. There are practical reasons why this doesn't happen as much as it should, mostly stemming from the factor of three needed to turn a program into a programming product that is reusable. Still since the 70's there have been some examples of code reuse that have worked spectacularly. The best examples are in user interface libraries like those provided by Microsoft, Apple, and Sun. For Windows, Mac, or Java, there are very substantial libraries of code useful for building user interface elements. With a trivial amount of coding one can easily build complicated windows with buttons, text fields, check boxes and many other elements. One can do this because there is a large reusable code base provided by the companies for building user interfaces for their systems. There are many issues one no longer has to think about because they are solved and packaged for you by these software vendors. Still, the problem isn't completely solved. Although it is easy to make a dialog with a button, the programmer must still decide what that button will do, but at least he doesn't have to start by figuring out what a button should be. Unfortunately, reusable code is more often the exception than the norm and many programmers reinvent the wheel daily. Reusable code isn't really a silver bullet, though as the reusable codebase grows so does productivity.

The final chapters of my copy of The Mythical Man Month include several essays assessing the impact and relevance of the book over a 20 year period following its publication. It is the opinion of the author that it has held up surprisingly well. I think that there is one really useful idea included here that wasn't in the original text, though it was foreshadowed: the concept of incremental development. The traditional model of software development is the waterfall method where first one designs, then one implements, then one tests, and finally one ships the release version. It is called the waterfall model because there is supposed to be no turning back, but it is a terrible model for building software. In real life, the implementation and testing reveal flaws in the fundamental design. Changes in that design then cascade back down to the implementation which changes the testing.

A better model is the incremental approach. Brooks suggests that one should build a "working" system as soon as possible and then build incrementally up from it. By working, that doesn't mean that all or really any of the functionality works. Working can mean nothing more than that there is a main loop that calls the planed functions which to begin with may do nothing at all. Once one has a main loop, one can then start plugging in the implementations as they become available and testing them right away in context. As features are added and bugs revealed, one can make adjustments not only to the modules but to the main loop. The advantage is that one always has a piece of software that works. Even if it becomes clear that you are painting yourself into a corner and that a radical change is needed (often it is the case in optimization that one can't find the best solution if one only takes baby steps), you still always have a working system. One always has the best approximation to the final product sitting in front of them with the best view of where it is going and how it will work. One gets constant feedback instead of only getting at the end when so much effort has been invested. The incremental approach is perhaps a solution to the "plan to throw one away" problem. Instead of building one to throw away, one throws away bits and pieces at a time. At the end one may really have thrown out a whole version, but it will have been a lot less painful and jarring than doing it all at once. An ancillary advantage to the incremental approach is that it gives one scheduling flexibility. After a point, one has a credible product. One doesn't end up in the position of completely missing a deadline, but instead gets to make trade off decisions. If economics demand selling the product now, at least you have one, even if it isn't perfect. That's better than being out of business, and out of work.

In the end, The Mythical Man-Month is an enduring book. It was written by a very observant and practical man. It endures because it isn't so much about computers as about people. Brooks appreciates that making software is about harnessing creativity. While technology changes, people don't, so the techniques that help them be creative last. Even 25 years later (hardly any time at all in comparison to human history) it is as relevant as ever. I got a lot out of this book as I think anyone who needs to manage their own creativity and that of others would as well.

Posted at 11:42 AM     Read More  


Thu - October 2, 2003

Late hit



I haven't read the LA Times story detailing Ahnolds preferred methods for picking up chicks, so I'm just not going to bother commenting directly on the allegations. But here's what I want to know: Ahnold has been campaigning for governor for months, and the allegations go back many years, so why is this story coming out now? Let's just say it doesn't take Sherlock Holmes to solve this mystery. I think that I can say with near certainty that one of two things is true. Either the Times had this story for months and withheld its release to do maximum damage, or the Democratic party had the story and coordinated with the Times to ensure that the Times couldn't run it until it could to maximum damage. It is the late hit strategy, and it has been repeatedly put to good effect (see George W. Bush and DWI, a very near miss).

How can I be so sure this is a late hit? That's easy. First, everyone has been predicting it, and because Bob Molhulland is an expert in its use. Second, I think that if Ahnolds accusers were for real, they would have been telling there story to anyone who would listen from day one. Wouldn't you? If you or your wife or whatever were groped by Ahnold and then you saw him on TV running for governor, wouldn't you be on the phone in like 5 minutes. This would be your one and only chance to get any real payback. It isn't like you are going to beat Ahnold up, and he has enough money and lawyers to make any lawsuit on your part a futile effort. Money and fame are mighty shields. One of the few times that a nobody can really nail a powerful person is when said person is running for office. On the campaign trail, they can't do anything really nasty against you because it would look bad, and there's a built in audience who will take you seriously (called members of the opposing party). I think it is a given then that under normal circumstances these kinds of allegations would have surfaced quite quickly. Why didn't they? Like I said before, either the Times or the Democratic party controlled the story. In verison a, the Times actually had all the ingredients for the story for some but withholds it until the end of the campaign when Ahnold won't have enough time to respond. Their motivation is simply partisan: the editors are liberal and they want to damage Republicans whenever possible. In version b, the Democratic party packages the story, lining up accusers willing to play the game, and then only releases it at a strategic moment. Here the motivations are the same, but they get a little cover. The paper can truthfully claim that they reported the story when the facts became known, but it isn't like they weren't in on the game. In either case, the Times has reduced itself to being nothing more than the Democratic party's whore.

Generally speaking, I am truly galled by the degree to which the media allows itself to knowingly be manipulated by the political class (of either party I might add) without revealing it to the consumer. The late hit is a perfect example. There's also the case of leaks. Some leaks come from the administration, some from those opposed to it. Whatever the source, the information is leaked for a political purpose. Why is it that when we hear about information from anonymous sources we never get any sort of disclaimer about what their motive is, or at least suspected to be. Why isn't it made clear that leaked information is intended to manipulate some process, to promote a particular agenda, or just to score points. Then there's the Clintons. Their operatives were so brazen that they even admitted controlling the release of negative stories to coincide with Friday evenings so that by Monday morning they could call it all old news. Reporters say that if it is news, they have to report it regardless of the motivations of the source. Fine, but we deserve to know why it is we are getting this information and why we are getting at a particular time. If the press or the TV news thinks that someone is playing games, they ought to say so outright. Back to Ahnold. If the Times did receive a packaged story from the Democrats, I can understand why they still ran it even though they know that the timing of its release is brazenly partisan. Why can't they just say so? Don't we readers have the right to know that the timing of this story was coordinated for political advantage. What I can't abide is that they didn't give us the inside story. If the story was a gift from the Democrats, it should have featured prominently in the reporting. They should have clearly said, important details of this story were only recently revealed to us by sources closely associated with the Democratic party and we (the Times, that is) believe that the timing of the release of this information is not incidental. They didn't of course. We all know that the media has now become even less trusted than purveyors of used cars. Maybe so few people trust the media because they know that this is the kind of information it is hiding from us.

Posted at 06:15 PM     Read More  
What's up with Rush?!?
Total Recall
That Modern Music
Harry Potter and the Order of the Phoenix
About the Bookshelf
Mixing religion and politics
Andrew joins the blogosphere


©