« April 2006 | Main | June 2006 »

May 31, 2006

The Microsoft Code: Chapter 2

Continued from Chapter 1.

RobertLa stared at the Post-It note pad. On the top sheet, in a hurried scrawl, were the words:


He recoiled at the sight. What was his name doing there, in the middle of a crime scene? He looked at VirgilI. "Any idea what the first part means?"

VirgilI shook his head. "No. Given what the second part says, I was hoping you would know."

"Did you contact Waggener-Edstrom?"

"Why would I do that?" VirgilI asked.

"They’re Microsoft’s PR firm. The note implies that you should call them and they should email me."

VirgilI rolled his eyes. "We’re treating this as an internal issue for now. No press, no PR agency. Look, this guy just won a Gold Star and then he goes and puts a giant self-inflicted wound in his career. I don't know who could scare him like that, but somebody with that kind of power would have to be pretty high up in management."

RobertLa considered the note. "Excavate green herbs." It made no sense. They were in the middle of Microsoft’s heavily-landscaped main campus; as far as he knew, there were no herbs growing anyway nearby. "Maybe we’re supposed to find new employees named Herb."

"And then what? Dig under their desks?" VirgilI snorted. "No, it means something else."

RobertLa looked around the lab. The computers were all running different operating systems and applications, the better to put stress on the network. Each display showed variations on the typical Microsoft server application design: tree hierarchy on the left, central area with a graphical representation of the system; actions on the right. One machine, however, showed something different: just a plain black window with a few white characters displayed near the top, following by a blinking cursor.

He peered in. "What’s this? An old DOS machine?"

VirgilI looked over at the machine. "No, it’s running that newfangled PowerShell. Used to be called Monad…we got involved when somebody claimed they had cracked it. Turned out to be total bunk, but I remember what the product looked like.

RobertLa had a vague recollection of the incident. PowerShell was going to ship with some server product…was it SQL Server? Or maybe Exchange. Yes, it was Exchange…suddenly he snapped his fingers.

"Excavate green herbs…I’ve got it! It’s an anagram for ‘Exchange Server Beta’". This machine is running the beta of Exchange 12, that’s why it was a PowerShell prompt. JacquesS was directing us to this machine!!" He looked at the machine excitedly, but could discern nothing unusual about it. On a whim he pressed up arrow to see if JacquesS had left a command in the history buffer, but it was a new window.

VirgilI approached the machine. The monitor, as with all lab monitors, was covered in dust. Really a terrible environment, anybody with allergies would have an immediate attack. He saw that someone had made a feeble attempt to clean this particular monitor, but it was a weak attempt, it looked as if a child had attempted to draw on the screen…wait, there WAS something written on the dust.

"Robert, come over here…see if you get the light striking the monitor just the right way? There’s something written in the dust!"

Now RobertLa could see it too. But if he was hoping that the writing would clear up the mystery, he was wrong. What was written on the monitor only added to the confusion.

* * *

Susan sat at her desk, gazing idly out the window. Her job as an administrative assistant wasn’t the most exciting, but at least her office afforded her a nice view of Lake Bill. The new parts of campus were largely bland; Lake Bill, in the open area between Buildings 1, 2, 3, and 4, had a pleasing asymmetry to it, as if it really had existed before Microsoft decided to construct its new headquarters around it.

Here came a man walking alongside the lake. A typical Microsoftie, greasy hair and a nervous tic. He seemed to be looking for something. Had he left a juggling ball somewhere? Parked his unicycle for later retrieval? Now he was nearing the large rock that jutted out into the lake near Building 2. Wait a minute. Susan felt her pulse quicken. Was he really doing what she thought he was going?

With a shock she realized that he was. Skin tingling, nerves jangling, she got down on her hands and knees and retrieved the sealed envelope taped to the bottom of her desk. The man who had visited her right after she moved into the office hadn’t explained much. Just left the envelope and some simple instructions.

Susan tore open the envelope and looked down at the paper inside. Four numbers, all five digits. Internal Microsoft extensions. She pressed the button to turn on her speakerphone, then thought better and picked up the handset. Trembling, keeping an eye on the man by the lake, she began to dial the first number.

To be continued...

Posted by AdamBa at 11:28 PM | Comments (1) | TrackBack

May 30, 2006

The Microsoft Code: Chapter 1

Renowned test manager JacquesS staggered through the narrow aisle of the stress lab. He lunged for the nearest computer he could see, a Dell. Grabbing the keyboard, the thirty-six-year-old man quickly typed a command to restart the machine, and selected an old Windows XP SP1 build to boot.

As he had anticipated, once the old, unpatched release booted up, a warning flashed on the screen indicating that he was prohibited from connecting to the Microsoft corporate network. He knew that in a building near the eastern shore of Lake Sammamish, an alarm was going off, and someone would soon be dispatched to investigate the potential security breach.

The test manager lay a moment, gasping for breath, taking stock. My network logon still works. A voice spoke, chillingly close. "Do not touch the computer again."

JacquesS froze, turning his head. The man was silhouetted in the door to the lab, with his body keeping the door from closing. "You should not have run that command." His accent was not easy to place. "Now tell me where it is."

"I told you already," the test manager stammered, kneeling defenseless on the floor of the lab. "I have no idea what you are talking about!"

"You are lying." The man stared at him, perfectly immobile except for a glint in his sleep-deprived eyes, and a nervous tic that made him tap his thumb and forefinger together repeatedly. His hair was slightly greasy. "You and your brethren possess a secret that is not yours."

JacquesS felt a surge of adrenaline. How could he possibly know this?

"Tonight the secret will be revealed and order restored. Tell me where it is hidden, and you will maintain your corporate network access."

JacquesS held up his hands in defense. "Wait," he said slowly, "I will tell you what you need to know." The test manager spoke his next words carefully. The lie he told was one he had rehearsed many times…each time praying he would not need to use it.

When the test manager had finished speaking, the man smiled smugly. "Yes. That is exactly what the others told me."

JacquesS recoiled. The others?

"I found them too," the man taunted. "All three of them. They confirmed what you have just said."

It cannot be! The test manager’s true identity, along with the identities of the three dotted-line reports on his virtual team, was almost as sacred as the secret they represented. JacquesS now realized that they had all told the same lie before their accounts were suspended. It was part of the protocol.

The attacker laughed. "When you are off trying to convince Volt to hire you, I will be the only one here who knows the truth."

The truth. In an instant, the test manager grasped the true horror of the situation.

The man smirked. "My work here is done. Thanks to your little reboot stunt, your account has already been terminated. Within 15 minutes your cardkey will cease to work. You’ll be paying full price for Office for the rest of your life!" Then he was gone.

Suddently, now, despite all the precautions…despite all the fail-safes…JacquesS was the only remaining link, the sole guardian of one of the most powerful secrets ever kept at Microsoft.

Shivering, he pulled himself to his feet.

I must find some way…

He summoned all of his faculties. The desperate task ahead of him, he knew, would require every remaining second of his Microsoft career.

* * *

RobertLa awoke slowly.

Where the hell am I?

He realized he had fallen asleep at his desk, head slumped over his keyboard. Touching his hands to his forehead, he could feel the imprint that the keys had left on his skin. That must be the impression of the backspace key just below his hairline, and there was the Shift key near his eyebrow…or was that the Enter key?

As he was trying to decide, he realized what had woken him up: There was a ringing sound in his office. He struggled to find the source. Was it is cell phone? Or his Windows Mobile device? Or was it a real telephone? Suddenly he remembered that he had set up Outlook to play a phone ringing sound when email arrived, a decision that had seemed amusing at the time.

Squinting at the screen, he saw the last remnants of the translucent envelope as it disappeared behind the taskbar. He tried in vain to catch it with a mouse click, but was forced to Alt-Tab over to Outlook instead. There was the email. He read it, but it made little sense. He was being summoned to a lab somewhere on campus.

* * *

When he arrived at the lab, there were two people there.

One was a man roughly his height, age, weight, and eye color, who introduced himself as VirgilI from the security group. The other was lying on the floor, clutching something in his hands, mumbling incoherently about his Lifetime Average Review.

"What’s going on here?" asked RobertLa.

VirgilI flipped open a tablet PC and read from the screen. "According to our logs, his name is JacquesS. He’s a test manager in the team that owns this lab. About half an hour ago he rebooted this server," He tapped the offending machine gingerly with his toe, "to an unpatched build of XP SP1." VirgilI shook his head slowly. "I don’t get it. We send out mail all the time telling people to turn on Automatic Updates."

RobertLa stared down at the man on the floor, who was starting to drool. "Anything else on him?"

VirgilI shrugged. "Seems pretty normal. Been here 6 years. Uses MSN Search about one-third of the time, Google the rest. Fills out the MS Poll and manager feedback. Looks like a find upstanding test manager. Nothing wrong until today. Of course we had to cut off his account and cardkey access after the stunt he pulled."

"Was he having performance issues? Maybe he was trending to an 'Underperformed' score on his annual review?"

"I doubt it." VirgilI pointed down. "See that thing in his hand?"

RobertLa looked closely. It was some sort of statue, with a golden shape on the top. "I have no idea what that is."

VirgilI looked surprised. "That, my friend, is a Gold Star award. You’ve never seen one? Maybe you should switch groups. But anyway, if this guy just pulled in a Gold Star, no way he was worried about a bad review."

RobertLa raised his eyebrows. "Maybe he just flipped out. Maybe his dev and PM were trying to add features without consulting him."

"Well, if he flipped out, he still had time to do this." VirgilI handed RobertLa a Post-It note pad. On the top sheet was written one of the most amazing things RobertLa had ever seen in his life.

* * *

Across campus, the man with the greasy hair and nervous tic hurried towards his goal. All four had concurred, before they lost their network access. He played back the events in his mind, how all four had desperately tried to buy back their blue badges by telling their secret. Each had told him the exact same thing—-that the secret was ingeniously hidden at a precise location on the shore of Lake Bill, near some of Microsoft’s ancient buildings.

He was getting nearer. Douglas firs surrounded him, the last remnants of the original forest that used to occupy the site of Microsoft’s campus. He ran towards the front entrance to Building 2, then veered left to pass under the elevated walkway to Building 1.

To be continued...

Posted by AdamBa at 10:21 PM | Comments (0) | TrackBack

May 27, 2006

Microsoft Dining Services Upgrades

I was eating in Building 25 the other day and they had a flyer about some of the dining upgrades. Most of the cafeterias now serve lunch until 3:30, and a few are open for dinner until 6:30. This all started last Monday. In addition, some of the espresso stands are now offering "Dinner-to-Go" (which will expand in the summer with more offerings) and the convenience stores will open on July 19.

Also, on June 5 we have the following to look forward to: "You'll love the flash in the flame-fired action as well as in the speed-of-service as our chefs bring razzle-dazzle and plenty of sizzle to each made-to-order entree". If they can cook better than they can write, this should be good.

The best part is the restaurants that are going to come cook lunch at Microsoft (every day, as far as I can tell). You've got Shamiana (Indian) in 25, Typhoon (Thai) in Sammamish C, Dixie's BBQ in 16, and Acapulco Fresh (Mexican) in 31. These are all excellent restaurants which I have frequented on multiple occasions, and I'm looking forward to meeting "The Man" just a hop/skip/jump from Building 21. It doesn't say when these are going to start, but I bet if you hurry you have time to polish up your resume and get hired in before the feastin' begins.

Posted by AdamBa at 08:20 PM | Comments (2) | TrackBack

May 25, 2006

Fixing An Obfuscated Code Example

In one of the classes we teach in Engineering Excellence, we talk about maintainable code, and as an example of the other way, we have a sample of obfuscated C code. I went looking for the origin of that code and it turns out it's actually the "applin" example from the 1985 Obfuscated Code Contest (just the second year of the contest). The code looks like this:

main(v,c)char**c;{for(v[c++]="Hello, world!\n)";(!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c]+!!c,!c));**c=!c)write(!!*c,*c,!!**c);}

Since I've been know to produce some obfuscated code of my own, I got a bit curious about this code and whether it would actually work in Visual Studio 2005. I discovered the following things:

  1. VS2005 does not allow the old-style declaration of function parameters, where int is assumed and the declaration of the type can follow the function argument list. There is no C compiler per se, you just write C++ code that doesn't use any C++, and I couldn't find a switch to put it back in "pure C" mode (plus for all I know ANSI C doesn't allow that style either).
  2. On a similar note, you have to declare that main() returns an int, it won't assume that.
  3. The code tries to modify a string literal, which is apparently undefined behavior in C++ (and possibly in C), and in any case actually fails with an access violation on the code that Visual Studio outputs. So you have to copy the literal if you want to modify it.
  4. The code calls execlp(), which is a Unix function to replace the current process with a new process; although this method does exists in the Windows C runtime, it seemed to bollix up the program. I replaced it with a call to spawnlp(), which creates a separate process (I recall vaguely that old Unixes didn't have a spawn() and you had to do a (wasteful) fork() followed by an immediate exec())?
  5. Because of how the Windows command processor parses command lines, putting the space between "Hello," and "world" confuses the program, so I took it out. You also have to make sure the name/path of the executable doesn't have any spaces in it (VS2005 by defaults puts the program under "My Documents").
  6. Although the C runtime functions exist with plain names, the guidance from the documentation is to use the versions that have an underscore in front of their names (like _write() instead of write()), so I did that.
  7. The program appears to have an honest-to-goodness bug in it, where it prints out every character after the first one twice. Even someone who compiled it unchanged under Cygwin saw this. And walking through the code I think I see why. So I had to put in a bug fix (obfuscated, of course) for this.

Along the way I had to actually understand how the thing works, which was fun. Put it all together, and you get the following, which does indeed behave as expected:

int main(int v,char **c){for(v[c++]=_strdup("Hello,world!\n)"),v=!!v;(!!c)[*c]&&(v--||--c&&_spawnlp(P_WAIT,*c,*c,c[!!c]+!!c,!c));**c=!c)_write(!!*c,*c,!!**c);}

Just include process.h and io.h and you are good to go.

Posted by AdamBa at 02:14 PM | Comments (3) | TrackBack

May 22, 2006

"Collapse" Idea #3: Software Quality as Environmentalism

A final quote from Collapse by Jared Diamond, from page 503-504, discussing the dismissive quote 'The environment has to be balanced against the economy':

This quote portrays environmental concerns as a luxury, views measures to solve environmental problems as incurring a net cost, and considers leaving environmental problems unsolved to be a money-saving device. This one-liner puts the truth exactly backwards. Environmental messes cost us huge sums of money both in the short run and in the long run; cleaning up or preventing those messes saves us huge sums of money in the long run, and often in the short run as well. In caring for the health of our surroundings, just as of our bodies, it is cheaper and preferable to avoid getting sick than to try to cure illnesses after they have developed.

Now think about Steve McConnell's General Rule of Software Quality, from chapter 20 of Code Complete: "Improving quality reduces development costs." Do you see? He's saying exactly the same thing that Diamond is saying about the environment. It's NOT a tradeoff; where spending more time/money on the environment (or software quality) is a luxury that increases costs in favor of some nebulous "moral good"; it's a straight up wise business decision.

Diamond gives numerous examples of environmental disasters that cost hundreds of millions or billions of dollars to clean up, when mere hundreds of thousands or millions of dollars would have prevented them. But Microsoft has had its Bhopals, its Chernobyls, its Exxon Valdezes: they are Code Red, Slammer and Nimda, and they also caused hundreds of millions or billions of dollars of damage to the "environment" of the Internet. Diamond points out that in our connected world, there is no longer any us vs. them; environmental problems around the world affect us in the United States. Software quality problems exhibit this effect even more directly.

He also has a great map on page 497, showing how political trouble and environmental trouble are linked in various countries. The same is true of software development: groups with management issues are the ones with software quality issues, because they are the ones that try to test in quality rather than bake it in, the ones that don't schedule time to do proper design, the ones that view "code complete" happening the instant the developer checks in the code, the ones that think that programmers working 80-hour weeks produce code as good as those working 40-hour weeks.

The good news is that Microsoft really is serious about software quality. That's why there is an Engineering Excellence group, and that's why I work in it. No, we're not perfect, but we are trying hard. Still there is much that remains to be done.

So next time you think about software quality, don't think about it as an abstract concept. Think about it as a preventable environmental disaster. Think of birds with oil on their feathers, and clearcut forests, and silted up rivers, and damaged coral reefs. Now think of what we can do to prevent it. What will be our equivalent of Silent Spring? What will be our equivalent of Greenpeace? What will be our equivalent of "Reduce, Reuse, Recycle"? How will we grow a software quality movement the way the world grew an environmental movement? That's what we need to think about.

Posted by AdamBa at 10:56 PM | Comments (2) | TrackBack

"Collapse" Idea #2: Biodiversity

A second quote from Collapse by Jared Diamond, this one from page 488-489:

But biodiversity losses of small inedible species often provoke the response, "Who cares? Do you really care less for humans than for some lousy useless little fish or weed, like the snail darter or Furbish lousewort?" This response misses the point that the entire natural world is made up of wild species providing us for free with services that can be very expensive, and in many cases impossible, for us to supply ourselves. Elimination of lots of lousy little species regularly causes big harmful consequences for humans, just as does randomly knocking out many of the lousy little rivets holding together an airplane.

There is a term that environmentalists use called "charismatic megafauna", which refers to large animals of the type that people tend to want to protect. Examples are elephants, pandas, and whales; people donate much more money to protect these than to protect smaller, less cute animals which nonetheless may be just as important in the circle of life. Although the term is not nearly as widely used, you could also think of "charismatic megaflora", large plants such as giant sequoias which people want to protect more than simple weeds.

If we view Microsoft as an environment, then the company may be favoring certain groups (people at the partner level and above) over others. Yet you can make the same argument for a company as for an environment; everybody is important, and we have to protect the other "species" at Microsoft from extinction: the Journeyman Developer, the New First-Level Manager, the Nontechnical Program Manager, the Experienced Tester. Unlike animals, Microsoft people can all become partners, so the temptation may be to expect everyone to do so. But as with biodiversity, we need to celebrate and encourage all those roles to flourish as they are, not mutate into something else, because all of them are important in the Microsoft ecosystem.

In this model, where high-ranking employees are charismatic megafauna and highly-visible projects such as Xbox and MSN Search are charismatic megaflora, Channel 9 has an interesting role. I maintain that Channel 9 functions exactly like a zoo/arboretum, with all the aspects (good and bad, and I won't comment on how I personally feel) of those institutions.

Posted by AdamBa at 10:35 PM | Comments (4) | TrackBack

"Collapse" Idea #1: Creeping Normalcy

I just finished reading Collapse by Jared Diamond, author of Guns, Germs, and Steel. As with GG&S it's a fascinating book full of great stories that Diamond links together well. He doesn't deliver a result as surprising as the one in the earlier book--his basic point is that shocking as it may seem, societies really do do things to their own environment that destroys them; but since I'm not surprised that they do this, I don't find it that shocking. Still an excellent book however.

The book is subtitled How Societies Choose to Fail or Succeed, and you could substitute "companies" for "societies" in many of the examples. With that in mind, there are three quotes I pulled from the book that could be applied to Microsoft. I'll blog them one at a time.

The first is this one from page 425:

Perhaps the commonest circumstance under which societies fail to perceive a problem is when it takes the form of a slow trend concealed by wide up-and-down fluctuations...Politicians use the term "creeping normalcy" to refer to such slow trends concealed within noisy fluctuations. If the economy, schools, traffic congestion, or anything else is deteriorating only slowly, it's difficulty to recognize that each successive year is on average slightly worse than the year before, so one's baseline standard for what constitutes "normalcy" shifts gradually and imperceptibly. It may take a few decades of a long sequence of such slight year-to-year changes before people realize, with a jolt, that conditions used to be much better several decades ago, and that what is accepted as normalcy has crept downwards.

There's not much I need to add here. Diamond is talking about environmental change, but this could be applied to any particular problem at Microsoft where you think things were better in the "good old days". Diamond gives the example of a valley in Montana that he saw as a teenager and then again 42 years later; he immediately noticed how much less snow there was in the mountains, a change that the permanent residents had not noticed because it was so gradual.

Posted by AdamBa at 10:17 PM | Comments (1) | TrackBack

May 20, 2006

Using Less Deodorant

I have never heard that the wars of the future will be fought over Aluminum Zirconium Tetrachlorohydrex GLY, so perhaps this is less important than saving water when using the dishwasher. Nonetheless, at one point in the recent past I became curious about just how much deodorant you were supposed to put on.

I looked at the package and it didn't say anything about it (and neither did the FAQ on the website). Which figures--the companies making deodorant have no real incentive to make you use less of their product, and absent any information I suspect most of us would err on the side of over-application. But of course they would need to have some amount in mind when testing the stuff to see if it works.

I also had a vague theory that your body would tend to get used to a certain amount of deodorant and could adapt to less or more. Add in my baseline fear that my deodorant is destroying my lymph nodes, or something, I decided to do a little experiment on myself.

My morning ritual at the time consisted of applying deodorant in 3 "shoofs", where a shoof is one up-and-down stroke (or a down-and-up stroke). I resolved to notch this down, a half-shoof per week, until I started to smell funny. I actually got down to a single stroke (one half shoof) without any noticeable effect on my co-workers. I contemplated going completely roughrider (perhaps years of deodorant use had made the effects permanent, like Obelix falling in the cauldron of magic potion) but instead I decided to call the number on the package, which in my case was 1-866-DEGREE1.

I wound up talking to a very nice young lady who said, yes, they did have guidance on such things, and she would check. She came back a short time and told me that it was one shoof (well, she didn't use that term), up-and-then-down to be precise. My ongoing deprivation experiment had actually left me at half that level, but it was a bit tricky because sometimes I would line up the stick wrong, or I wouldn't really get traction right away, leaving me with the uncomfortable feeling that some significant part of my armpit was unprotected. The "one shoof" method that she recommended allowed you to establish a good solid stick-to-skin bond on the upstroke, leaving you in position for a nice uniform application on the downstroke (she also confessed that before the had taken this job, she had put about 10 shoofs on each time). So that's what I do, but your mileage, as they say, may vary.

Posted by AdamBa at 09:57 PM | Comments (5) | TrackBack

May 18, 2006

The Towels Are Back in Town

Yes that's right...those wild-eyed towels that had been away...are back! In the big Town Hall meeting at Microsoft today, Lisa Brummel announced that they were bringing back the late, lamented towel service. This was the biggest applause line in her speech detailing various changes to our Microsoft review system, which are currently being debated (in public, natch) on Mini-Microsoft. We cut our towel service to send a message (to employees and/or Wall Street) that we weren't the kind of company that pays a quarter of a million dollars so that the 250 employees who actually took advantage of it didn't need to bring their own towels. Now we are that kind of company again, although hopefully we could negotiate a better deal this time ("$600 a head or we walk!!").

One of the main changes is removing the curve for the basic review score (the one about "What did I do since my last review"). The way Microsoft curved the score used to remind me of high school grades (or marks, as we called them) when I was growing up in Quebec. Some of the final exams, particularly in your last two years, were exams from the provincial government which were standardized across the province. The schools sent in the exam answer sheets and the province graded them and returned the scores. But, they wanted to curve the scores. The problem was that the grades were given as a straight percentage, so instead of getting an A- or C+ or whatever you would get an 87 or a 73 or whatever. You can curve letter grades just by changing what the cutoffs are, but how do you curve a percentage grade? The answer is you just change it; so you would get a grade report back saying "You scored 88% on this exam, but your curved score is 81%"). Something similar to this I think is what really griped everyone's giggy at Microsoft: the fact that a 4.0 would be converted to a 3.5. This was made easier by the fact that they were numbers with hazy meanings. Changing the scores to "exceeded", "achieved", etc. makes it much harder conceptually to curve the scores, since they are words with real meaning.

During the meeting, someone asked Lisa why they were making these changes now. She took the tack of answering the question "Why now as opposed to next year" (which is a reasonable question, and kudos to HR for pulling this off under the strict time pressure of this summer's reviews). But I think the question really meant "Why now instead of, say, never?" And I wish Lisa would have answered that question and just said, flat out, "It's because of Mini-Microsoft." I don't see the real downside of saying this--it would allow her to spin it as "Although we don't condone leaking internal information, nonetheless we listen to what is being discussed there..." And if you read Mini-Microsoft now, there is still some disgruntlement there, and it would be very encouraging to that crew if Lisa gave a shout-out and recognized that Mini did contribute heavily to pushing these changes. It's a fact I consider to be undeniably true, so why bother denying it. In fact I had a brief fantasy (or perhaps it was a dream, while dozing off during the snooze-inducing first hour of the meeting with Steve/Kevin1/Jeff/Robbie/Kevin2) that during the meeting she would trot some unfamiliar face up on stage and that person would say "I am Mini-Microsoft, and I approve this message!" Like the moment in Ender's Game when Valentine and Peter's online alter-egos suddenly band together to push the same idea...but now might be a premature use of such an ultimate weapon.

Posted by AdamBa at 10:44 PM | Comments (5) | TrackBack

May 15, 2006

The Stress of Losing Your Internet Connection

Sometime between Wednesday night and Thursday morning we lost our home Internet connection, due to equipment failure (more on that below). I had not realized just how stressful it can be to have no Internet. Now I certainly go on vacation and don't use the Internet for a week, but I've come to depend on it at home. For one thing, I like to do a quick scan of my work email before I go to sleep. Also, we were going to Las Vegas for the weekend and we wanted to print our boarding passes from home, get a list of Vegas poker tournaments, find out about the spa at Mandalay Bay...all things that people used to do 15 years ago, somehow, but which we now depend on the Internet for. Plus we were waiting for email from our daughter's softball coach about a possible game on Sunday. And my sisters-in-law, who were coming up to watch the kids, expected to be able to surf the net, print out THEIR boarding passes, etc. Instead we all got to suffer form IDS (Internet Deprivation Syndrome).

So what was wrong? Well, the immediate thing I noticed was that the DSL router had no lights on, not even the power light. I futzed around with it and couldn't make anything turn on, so I called Verizon to ask about a new one. Of course it's a custom part you can't just buy in a store. They said fine, they would send me a new one--by UPS Ground from Pennsylvania, which takes about a week. Was there any way they could send it faster? No, only UPS Ground. I think they were trying to save me money, and in fact they gave me a month's credit of DSL service (which was very nice of them), but I really didn't want a $30 credit, I wanted my Internet service. There's an economic term for this I'm sure, when something like Internet service is worth much more to you than you actually pay for it (the term is probably something like They Should Be Charging You More For It Syndrome). I was perfectly willing to pay Verizon to overnight the thing to me, but they said they couldn't do it. What's that called...Refusal To Accept Money You Want To Pay Syndrome, I think.

So I grumbled about Verizon and flew off to Vegas and was therefore somewhat surprised when the new DSL modem showed up the next day, no extra charge. So what is THAT called--We Actually Gave You Great Customer Service But We Pretended We Weren't Going To Syndrome? Unfortunately when my sister-in-law plugged in the new modem, which looked to be an identical copy of the existing one, the Internet still didn't work.

When I got back I played around with it and still couldn't get it to work. It worked if I connected my computer directly to the modem but not through our firewall/router. I could tell the machines were hitting the router because they were getting assigned DHCP addresses by it. So the problem appeared to be in the firewall/router's Internet port. Finally tonight I bought a new firewall/router and hooked it up, and now things are working again. So that could have been the problem, except the old DSL modem definitely had something wrong, because its power light wasn't coming on. So either they both crapped out at the same time (power surge? But they are on a surge protector), or the firewall/router was sending such a strange signal over the Internet port that it was messing up the DSL modem, which seems hard to believe (I did not try disconnecting the cable to the old modem, since it didn't occur to me that this could be causing a problem). I suppose I should connect up the old DSL modem to see if it now works, but I don't have the energy and I'm still vaguely afraid that if I take the current setup apart, it won't work when I reconnect it.

As I was working on this I was wondering how an average home user would handle this (meaning the situation where they plugged in the new DSL modem and it still didn't work). If they called Verizon the first thing they would have them do is take the firewall/router out of the loop and connect the computer directly to the DSL modem, which worked, so then Verizon would be done. And the firewall/router support would probably verify that the device was handing out DHCP addresses, observe the status page saying that it was receiving zero packets off the DSL line (which was the case), and wash their hands of the problem. I guess the user would wind up calling the Geek Squad or somebody, who would come out, scratch their heads for a while, and eventually sell them a new firewall/router. But this stuff is still very fragile and is not at the level of end user maintainability of something like a stereo system.

Posted by AdamBa at 09:33 PM | Comments (2) | TrackBack

May 11, 2006

Big in Poland

This article talks abouthow out of the 48 top programmers in the world (via a very arbitrary measure, performance in a TopCoder contest), only 4 are American. The highest number come from Poland.

I'll humbly suggest that the reason is because Find the Bug is available in Polish. Obviously, every developer there has read it, now they are prepared to take on the world. I sort of picture it like the book about gangsters in that Star Trek episode.

I'll conveniently ignore the fact that book is also available in English, which leaves the poor performance of Americans a mystery.

Posted by AdamBa at 01:28 PM | Comments (0) | TrackBack

The New Fame Index

I was actually looking for "Tarzan" reviews, but instead I found this article on "The New Fame Index". How to tell if you've "made it" on Wikipedia, MySpace, etc.

Well, I do have more than 50 inbound links on Technorati, although I don't know if I've made Cory Doctorow giggle.

Posted by AdamBa at 01:24 PM | Comments (0) | TrackBack

May 09, 2006

Is Life Short or Is Life Long?

So here's a question: is life short or is life long? Or more precisely, how do you think of it? I suppose you could argue that it's a pessimist vs. optimist viewpoint, but I don't think that's really it. It's more about how much of a hurry you are in to get long-term things done, and how much you stress about how long they take.

As I look back from the ripe old age of 38, when I was a kid I mostly thought life was infinite, but I do remember envying my parents because they had gotten married, had jobs and house, etc. and their life was fairly settled. Then in college I was more in a "life is short" mentality where I was eager to graduate and start working. Now, when I am "settled" as my parents were (wife, job, house, kids), I am in "life is long" mode. It occurs to me that in 10 years I could be--almost anything! I could be a neurosurgeon if I wanted (except I don't). Or a lawyer. I could get an MBA. I could still be doing something at Microsoft. Or at another tech company. Or in another industry doing something technical. Or in another industry doing something non-technical. Or be a freelance writer. I could become really good at a sport I haven't yet played. Of course I can't do ALL of those things, but that's just 10 years. Which is also about how long it will be until our youngest child is self-sufficient (meaning, Mom and Dad can go on vacation by themselves). Then I've got two more 10-year chunks until I reach about the age my parents are now, and they are still kicking around as productive members of society. Shoot, when my mother was in her 40s she went off and learned programming and got a job as a programmer.

So I'm pretty sure that life is long and unless I get hit by a bus tomorrow, I'll continue to think that. To quote someone I found on the web, "Life is the longest thing anyone does!"

Speaking of the web, Google returns 137,000 hits for the phrase "life is long" and a whopping 1,680,000 hits for the phrase "life is short" (both results seem to be heavy on song lyrics and personal blogs). Interestingly, MSN Search and IceRocket's web seach also returns the same roughly 1 to 10 ratio, but blog searches on Technorati and IceRocket return more hits for "life is long" than "life is short" (by a ratio of about 5 to 3). Does this mean bloggers have a longer-term view than people in general? I suppose if people were completely rational and also thought life was really short they wouldn't spend time blogging. However people aren't completely rational, so there isn't much of a conclusion to be drawn there.

Posted by AdamBa at 09:57 PM | Comments (4) | TrackBack

May 02, 2006

How "Opal Mehta" Got Published, Got Withdrawn, and Got Expensive

There has been a recent brouhaha over Kaavya Viswanathan's novel How Opal Mehta Got Kissed, Got Wild and Got a Life. After allegations of plagiarism, the publisher recently permanently withdrew the book (as opposed to printing a revised edition without the offending passages).

So how is this playing out in the Wild Web? Since the book is no longer in print, copies are being bid up on eBay, with 76 listings right now. The book was selling in the $10 range early last week, with just a few bids. Then around Thursday the 27th the listings started to mention the controversy, and discuss how the book could be reissued with changes so the original version would be worth more, and sales were in the $30-$40 range. Then by Friday the listings mentioned that it was being pulled, copies were being listed with "Buy It Now" for prices up to $65, and they were all being sold quickly. This week things have settled back down to the $30-$40 range.

Meanwhile on Amazon, a check of the listing page shows that they are no longer selling the book directly, but some of their associates are (10 copies right now, with new copies ranging from $16.54 to $123 (!)). In addition, the sales rank is currently #17 and climbing. How is that possible when they aren't even selling the book? Very strange.

Posted by AdamBa at 09:16 PM | Comments (0) | TrackBack

May 01, 2006

Software as an Engineering Discipline

One of the topics that came up at Princeton last week was the gap between what students learn in college and what they do on the job at Microsoft.

I feel that Computer Science is different from other engineering disciplines in that as a Chemical Engineer, say, you would tend to look up formulas in a book more and rely directly on the training you had in your classes. In CS, you learn job skills indirectly: in an Algorithms class you may write a large program, and although you may never use those algorithms, at least you have written and debugged a large program, which is useful experience.

My boss in Engineering Excellence wrote a paper for OOPSLA 2003, titled "Things They Would Not Teach Me of in College" which discusses 5 classes that he woudl like to see offered in college. They are: Design Analysis, Embracing Diversity, Multidisciplinary Project Teaming, Large-Scale Development, and Quality Code That Lasts (if you have an ACM Portal login, you can read the paper here; I think this will work from the Microsoft corporate net). I don't necessarily agree with those five, but it's a rough approximation ("Embracing Diversity" is about writing code that can be localized without recompiling, support accessibility guidelines, etc).

Princeton does have one class, COS 333, which covers software engineering. It's good to see this, since it wasn't offered when I was there. But it's only one class, and it has a lot of ground to cover.

We were discussing this and someone looked at the list and said great, he would like to be able to teach all that too--but he wouldn't know what to teach. It's true that some of the current industry thinking on how to do design, or how to write secure software, has not withstood the long test of time. At the same time, there is definitely something there, and to not expose students to it at all seems wrong. In the end the advisory committee didn't recommend anything in this area, but it bears further thought.

Posted by AdamBa at 08:55 PM | Comments (2) | TrackBack