« December 2004 | Main | February 2005 »

January 30, 2005

The Open Data Format Initiative

Microsoft recently opened the Office XML file formats, as discussed on Slashdot. Robert Scoble describes Jean Paoli as "beaming" when he told him this.

This notion is also near and dear to my heart. Open data formats are important for many reasons, but the main one is that it's my data. When I write a file in Word, the fact that Word can lock the data into a format that no other program can read is a terrible thing. It prevents me from having complete access to the data. Instead of needed to only preserve the file to preserve the information, I also have to keep a running copy of Word, which means I need a computer and operating system that can run Word. People are aware of the issues with preserving data on CDs (even if they haven't done much about it), but the notion of preserving the software that can read the data, and the hardware that can run the software, is rarely mentioned.

My initial frustration about this occured three years ago, when I realize that all my saved Outlook Express email was in a proprietary format, and I could not extract it. I wrote an article for a now-defunct website (I kept a copy from Google's cache), arguing that governments should adopt laws requiring all data on government computers to be in open formats. As I wrote then, "The rationale would be preservation: guaranteeing that government data does not become unusable if the application that reads it becomes unavailable. The assumption is that such a law would spur essentially all manufacturers to make their data compliant."

The next year, I created the Open Data Format Initiative website. At the time there was a push among both state and internatonal governments to require open-source software usage. I wasn't working for Microsoft at the time, but I thought this was a false (and unattainable) goal. Using open-source software was a purchasing decision about price, quality, support, etc. that could be evaluated like any other. The real issue should be open data formats. That was the issue that should be enacted into law, to make sure it was considered where it might otherwise not have been.

I wrote an article for the ODFI website explaining "Why Open Data Format Laws Are Better Than Open Source Laws" which picked up a link from Slashdot. This led to some good feedback and a very active email alias, which clarified my thinking on what an open data format really was, and eventually led to my posting an updated sample Open Data Format bill, suitable for use by any government body that wanted to enact it.

I should point out that the origin of the format didn't matter. It was perfectly fine if the format was invented by a single company, as long as it was documented and freely usable by anyone. For example, there was a recent Slashdot discussion of the OpenDocument format, and one of the benefits listed is that it is supported by the OASIS and ISO standards groups. With ODFI, I didn't care a whit about who came up with a format, only what could be done with it. As this commentary summarizes it: "The difference between open 'standard' and open 'format' is profound. The former refers to something widely recognized or approved as a baseline model, where the latter focuses more unrestricted use. Microsoft’s move suggests that they do in fact recognize that the Office 2003 formats are not considered open standards, but could be considered open formats once licensing restrictions on use and modification are removed."

One of the key issues to emerge from the ODFI discussions, it turned out, was patents on a format, something I had not initially considered. That is why it is very important, as Microsoft explains in the FAQ , that the users of the Office XML format are granted a royalty-free license to any current or future patents on the schema. The Office XML format meets the definition of an open format that the ODFI mailing list arrived at.

So what happened with ODFI? As Technorati will tell you, the site hasn't been updated in 503 days. I just got too busy getting Find the Bug finished. And, in November 2003, I went back to work at Microsoft. I just didn't have the time to do ODFI when I needed to work during the day, finish my book in the evenings, and then start blogging here.

It wasn't that I felt uncomfortable running the website while working at Microsoft. In fact, I think that pushing for open data formats is a great strategy for Microsoft. First of all because it is just the "right thing" to do, but also because it blunts any attempts to pursue an "open-source for government" bill.

Now I would like to be able to say that I went back to Microsoft, worked the system from the inside, and now we are seeing the results. But it's not the case. I resolved to push for open data formats on any product I worked on, but Monad doesn't have any data formats (except some minor ones that are user-visible and therefore have to be open). I had no effect on Microsoft's decision to open Office XML. All I can hope is that ODFI influenced somebody who influenced somebody who influenced somebody (like perhaps this Massachusetts senator)...so maybe in a small way I did help nudge Microsoft in the right direction.

This is not the end of the battle, of course. For one thing, there are millions of documents stored in the old Office format, which Microsoft has to keep supporting as the default for a while. This format has been reverse-engineered, of course, but technically any software that reads it may be violating a patent (there used to be an external email alias at Microsoft that people could contact if they wanted official documentation on the Word binary file format for non-commmercial use, but it is no longer active). Microsoft should open that format right away. Then I'll know the company really understands who my data belongs to.

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

January 29, 2005

Spam Record Redux

After a long period as the champeen, my previous record-holder for highest Spam Assassin score has been dethroned by one that raked in a massive 55.7 points. The subject line was a fairly pedestrian "Re: Your Xanax refill is ready", but the tale of the tape tells the whole story:

pts rule name description
---- ---------------------- --------------------------------------------------
0.7 MSGID_YAHOO_CAPS Message-ID has ALLCAPS@yahoo.com
0.1 X_PRIORITY_HIGH Sent with 'X-Priority' set to high
4.2 MIME_BOUND_DD_DIGITS Spam tool pattern in MIME boundary
2.3 SUBJECT_DRUG_GAP_X Subject contains a gappy version of 'xanax'
0.3 X_MSMAIL_PRIORITY_HIGH Sent with 'X-Msmail-Priority' set to high
0.8 HELO_DYNAMIC_IPADDR2 Relay HELO'd using suspicious hostname (IP addr 2)
3.2 MSGID_SPAM_CAPS Spam tool Message-Id: (caps variant)
0.0 RCVD_BY_IP Received by mail server with no name
2.2 FORGED_YAHOO_RCVD 'From' yahoo.com does not match 'Received' headers
2.1 WHY_WAIT BODY: What are you waiting for
0.2 RISK_FREE BODY: Risk free. Suuurreeee....
0.0 MONEY_BACK BODY: Money back guarantee
0.7 HTML_OBFUSCATE_10_20 BODY: Message is 10% to 20% HTML obfuscation
0.0 HTML_MESSAGE BODY: HTML included in message
0.2 HTML_FONT_BIG BODY: HTML tag for a big font size
1.5 MPART_ALT_DIFF BODY: HTML and text parts are different
1.2 MIME_HTML_ONLY BODY: Message only has text/html MIME parts
0.6 HTML_BACKHAIR_8 BODY: HTML tags used to obfuscate words
2.8 RCVD_IN_DSBL RBL: Received via a relay in list.dsbl.org []
1.8 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ]
2.5 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [200.11.193.195 listed in sbl-xbl.spamhaus.org]
0.6 URIBL_SBL Contains an URL listed in the SBL blocklist [URIs: fast-rxmedicines.com]
0.5 URIBL_WS_SURBL Contains an URL listed in the WS SURBL blocklist [URIs: fast-rxmedicines.com]
2.0 URIBL_OB_SURBL Contains an URL listed in the OB SURBL blocklist [URIs: fast-rxmedicines.com]
3.9 URIBL_SC_SURBL Contains an URL listed in the SC SURBL blocklist [URIs: fast-rxmedicines.com]
0.8 DRUGS_ERECTILE_OBFU Obfuscated reference to an erectile drug
0.0 DRUGS_ERECTILE Refers to an erectile drug
4.0 DRUGS_ANXIETY_OBFU Obfuscated reference to an anxiety control drug
0.0 DRUGS_ANXIETY Refers to an anxiety control drug
4.1 RCVD_DOUBLE_IP_SPAM Bulk email fingerprint (double IP) found
0.0 FORGED_OUTLOOK_HTML Outlook can't send HTML message only
2.4 DRUGS_PAIN_OBFU Obfuscated reference to a pain relief drug
0.0 FORGED_OUTLOOK_TAGS Outlook can't send HTML in this format
0.0 MIME_HTML_ONLY_MULTI Multipart message only has text/html MIME parts
0.0 MISSING_MIMEOLE Message has X-MSMail-Priority, but no X-MimeOLE
0.8 DRUGS_DIET_OBFU Obfuscated reference to a diet drug
0.4 DRUGS_DIET Refers to a diet drug
0.1 DRUGS_SLEEP Refers to a sleep aid drug
0.0 DRUGS_PAIN Refers to a pain relief drug
3.0 FORGED_MUA_OUTLOOK Forged mail pretending to be from MS Outlook
2.7 DRUGS_SLEEP_EREC Refers to both an erectile and a sleep aid drug
0.0 DRUGS_ANXIETY_EREC Refers to both an erectile and an anxiety drug
2.7 DRUGS_MANYKINDS Refers to at least four kinds of drugs

I especially like the ones that are "Obfuscated reference to an [erectile|anxiety control|pain relief|diet] drug" or "Refers to both an erectile and a sleep aid drug". Come to think of it referring to both an erectile and a sleep aid drug doesn't make much sense. I mean, what's the scenario here?

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

January 28, 2005

Thoughts on "Microsoft Goodness"

I received a long email about my Microsoft Goodness post (which the Mighty Mini was kind enough to link to). The author said he was having trouble formatting it and it was kind of long for a comment. So I will post it here without naming the author (hope that is OK), but he can pipe up if he wishes:

In my darkest hour of dislike of Microsoft, I don't think I've ever thought of them as an EVIL company, merely misled. (There may be evidence out there that proves me wrong, I admit...I was young and more brash with my words, once...) I've rarely thought of them as a GOOD company, though. I have feared them many times, with many different companies, sometimes with very good reason. (And I, like everyone, occasionally curse 'Microsoft', as a catch-all for whoever bungled a particular feature in a particular Microsoft app or driver or library...)

On the flip side, I have found several underlying common mistakes in disparate generations and types of Microsoft software which lead me to believe there are several engineering misunderstanding that are carried via oral, product, or mentoring tradition between groups.

There is, however, high-mojo kool-aid inside the company, and it wraps the employees in a joyful world of Microsoft goodness from the 'swank hotel with expenses paid' interview on, then reinforces that belief via corporate communication, and builds a powerful immunity to the idea that Microsoft does anything long-term wrong.

If you ask someone (as I have occasionally) who works for Microsoft, 'But don't you realize that no other platform can keep up with Microsoft's changes, because they're not public until they're done, and then sometimes under patent restrictions, so your new incredible feature, while technically brilliant, simply locks people into the Microsoft platform?' The invariable response is basically that it's a darn good platform to be locked into. They believe, completely, in the platform, and therefore have no qualms about locking people into it, because it's so darn good, especially with their new feature. It's completely honest, completely innocent, and completely heartfelt. And that's what makes it so scary (to me); it's like a religious conversation. 'If you want to marry this wonderful woman you've grown to love, you have to join our religion. But that's okay, because it's better for your soul to do that anyway!'

Microsoft is not a devil or demon, nor an angel or savior. It's just a company, with people who love it and hate it, and sometimes both. Sometimes with reason, sometimes for no good reason. And with some people inside and outside who believe in the company or refuse to believe in the company, sometimes beyond the bounds of 'right or wrong'. It becomes religious, and no longer amenable to reasonable conversation.

I also don't think Microsoft's executives have a tradition of 'the right thing' to fall back on either; it's not ingrained in the company culture. There was a time when Microsoft had to be scrappy, forceful, competetive, persuasive, better than anyone else at both execution and marketing, and had to MAKE the standards, not follow them. That's not saying they now do the wrong thing on purpose, but there is a competitive beast lying in the heart of Microsoft. Usually dormant, it yearns to strike out, dominate, and win battles and wars (and perhaps the love of the fair stockholder). But when a company gets to be Microsoft's size, much like a country that has grown into being a major world power, it needs to negotiate, make concessions, and strike bargains, follow international standards, and generally 'play well with others' to not be seen as a bully. (Perhaps my politics are showing on my sleeve, but I still feel the analogy holds up...) You can be a bully and end up doing good things for people, but it always leaves a bad taste in the mouths of those bullied.

In all visible areas but competition, Microsoft is the model of a good company. They contribute to charities, they care about (and take damn good care of, evidently) their employees, they encourage blogging, and they manage to take care of their shareholders. (Microsoft makes a killer stock to sell straddles on, btw., but I imagine that's not a plus, in the minds of management.)

In competition, though... There's a temper there. Threaten to change the rules, or undermine a key product, or anything like that, and the company lashes out. It's understandable, it's survivalist, and it's probably good for the shareholders, but it makes much of the engineering world leery of them. That's because the resources that can be brought to bear on an unsuspecting (or unwary) competitor are roughly equivalent to the army of a medium-sized country marching on your offices. Fear doesn't generally breed popularity, or praise from the fearful.

If you want a little blog-love and reassurance, remember this: there were roughly 169Million PCs sold worldwide in 2003 (the last year I have numbers for). 164Million of those are probably running Microsoft products. The users of probably 163 Million of them honestly and seriously feel that their lives are better for those Microsoft products.

That's not a bad deal, all told. I know I'll rarely have that kind of effect.

Some thoughts on your corporate masters, who but for a few life decisions could easily have been mine.

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

More on Microsoft's Campus Plans

The Seattle P-I had articles about Microsoft's plans yesterday and today, with corresponding PDFs (yesterday and today).

The difference between the two days is that Microsoft held a public open house last night, where they presented more details. So today's article have a map that shows actual buildings and road realignment.

If you look at the PDF from today, the road that goes east from where the "520" symbol is, then crosses 156th Ave NE, currently turns more sharply and heads north towards the N in NE 36th St. Then another road branches off from that road and winds up near the vicinity of the new traffic circle (but not quite there). So that is a significant change planned.

My sources tell me that the first two buildings Microsoft is planning to build, for occupancy in about 2 years, are the one called M-1 (aka "the one where building 7 was going to be") and the one called M-2 (aka "the one where building 19 is now, with a parking garage where building 20 is now").

I was talking to someone at the presentation and they said Microsoft had actually sat down and had some brief discussions about building a monorail to transport people around the campus. Hasn't panned out yet, however.

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

January 27, 2005

Research Talk from Patrick Baudisch

A friend of mine commented that it seemed I used my employment at Microsoft mainly as an opportunity to attend as many talks as possible, working in my real job in the interstices. Hmmm, interesting observation...actually that reminds me that today I went to see a talk by Patrick Baudisch, who works in Microsoft Research. Patrick studies methods for improving the use of non-traditional sized displayes. This includes displays that are much larger than usual, for which he thinks of things like the High-Density Cursor, and displays that are much smaller, such as pocket PCs and cell phones, which was the subject of today's talk.

Patrick made the observation that the worldwide PC market is about 300 million and growing slowly, while the worldwide cell phone market is 1.5 billion and growing quickly. Furthermore, currently these small devices are usually used as extensions of your desktop, where you invoke pre-triggered actions; you set up some web shortcuts, download your traffic map, etc. and then your wireless device is ready to use. For many users, especially in developing nations, a smart phone is their first and only computing device. It's not an extension of their main computer, it IS their main computer (Microsoft just set up a lab to study such users).

So the question of how such smart phone users will manage a website or search the Internet is a fascinating one for the future. For today, Baudisch was talking about how to help users navigate "legacy" websites (those designed for desktop displays) on a small device.

Among the ideas he talked about was Halo, a way of improving the user's ability to visualize the location of off-screen objects on maps, and Fishnet, which compresses the edges of the display while still highlighting certain terms. I asked if they had tried Halo-ing the Fishnet-highlighted terms, to which Baudisch replied, "Hadn't thought of that. Great idea!" (it is a great idea. Can I have royalties?).

Probably the coolest idea was Summary Thumbnails, which takes paragraphs of text and replaces them with compressed summaries, but also enlarges the font so it fits in the same area as before. It's cool stuff, although I think it works best on a pocket PC; making the same pages be readable on a cell phone is even more of a challenge (there was one interesting idea he alluded to; that the numeric buttons on your phone could be used as quick toggles of different areas of the screen, so the 1 button, say, could hide or reveal the leftmost column of the page -- it turns out that many many pages nowadays are designed in 3 columns, with navigation on the left, main content in the middle, and archives/advertisements on the right).

If interested, you can review all of Baudisch's work on his projects page.

Speaking of cell phones, someone left their cell phone on the chair in front of me. First another attendee and I futzed with the phone for a while, trying to figure out who it belonged to. I Googled the phone number but came up blank (besides finding the same number in various other area codes). So I put the phone in my pocket, figuring they would call it. Which they did, about 15 minutes later. But they sounded annoyed, like I had stolen their phone. Hey, was I the genius who left it on a chair?

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

January 25, 2005

News.com article on Cell Phone Usage at Work

An article at news.com titled "When ring tones are jarring" quotes little old me.

It's true that people check email on their Audiovox phones, but you can do that anywhere. What happens during meetings that may be somewhat unique to Microsoft is that many people in a meeting have a laptop with wireless connectivity to the corporate network, and they check email at opportune times. Sometimes you will get mail from someone else and then realize they are also in the meeting. Inevitably when you look over, they are sitting there looking innocent and/or concentrating on the speaker. I called it the "no look" email. It's a higher tech version of texting, which I guess is a higher tech version of passing notes in class.

I told Ed Frauenheim (the author of the story) about this, but he didn't quote me. Actually I just talked to him this morning, pretty speedy turnaround. I guess he heard about me through this blog.

I should change my name when quoted like this. To something like Adam J. AuthorOfFindTheBug.

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

January 23, 2005

Malcolm Gladwell at Microsoft

Malcolm Gladwell, on tour to promote his book Blink, stopped by Microsoft Research for a talk on Friday. I'd say there were at least 200 people there, in a room that seats 120.

Gladwell writes consistently fascinating articles for The New Yorker, which usually involve investigating something that most people don't think about much, such as shopping malls or ketchup, and elucidating both the fascinating and the mundane that lies beneath. Some, like "Clicks and Mortar", are classics (remember that was written at the height of the boom); another one got me my first accepted Slashdot submission.

Blink is about snap judgements, the ones we make in the blink of an eye. Actually its a bit more than that; interview decisions and a lot of research are also "snap" judgements, even though they make more time than the blink of an eye, because they are based on quick impressions rather than longer thinking. Gladwell spoke about snap judgements and made three points:

  1. They are based on our unconscious thoughts.
  2. They are extremely fragile and volatile, and can be influenced by extremely minor factors we are unaware of.
  3. When people are asked to explain them, rather than admit that they don't know why they their unconscious thought a certain way, they just make something up.
  4. The act of putting someone on the spot to make a judgement about something will make them represent "this thing is different from what I am used to" as "I hate this object".

(Well, that was what he said; somehow he got it into three points, not four.)

The specific example he drew from the book was the market research on the Aeron chair, famed dot-com status symbol. Evidently when they market researched it, everyone said it was very comfortable but also very ugly. As it happened, Herman Miller trusted the designer, Bill Stumpf, enough to bring the thing to market, and a couple of years later when the chair was "hip", follow-up research revealed that people now thought it was quite beautiful. Forcing them to make a decision about it quickly caused people to turn "unusual" into "ugly".

Actually even today it's apparent that opinions on the Aeron are still divided; some people still think it is butt-ugly, and in fact some people think it is mighty uncomfortable also. But Gladwell's point was that this kind of market research really biases against innovative products making it to market (it seems this is somewhat related to the Innovator's Dilemma; upmarket companies would tend to do more market research than downmarket ones, and would also tend to use current customers for the market research, and if this steered them away from innovative products, it would exacerbate the effect). Gladwell suggests, as one alternative, that the company give the chairs to people to use for a month, and then see what they think.

After speaking for about half an hour, Gladwell took questions. Someone asked the obvious one about how this relates to Microsoft usability testing, and there were a couple of standard ones about voting and juries. Since I knew Gladwell has written about job interviews, I asked him about whether job interviews were snap judgements and whether Microsoft's rule that everyone send interview feedback right away would lead them to the "different is bad" trap. I think the answer he gave was his standard "interviews don't work" meme, which only addresses the first part of my question: an hour-long interview can judge extrovertedness and whether you are attracted to someone and vice versa (as he put it, "interviewing is great if you are looking for employees to hit on"), but that "in an interview you cannot judge how hard-working or committed someone is. You just can't!" (which of course flies in the face of Microsoft wisdom that you can judge precisely those things, while being immune to the distorting effects of extrovertedness and attractiveness).

Afterwards Gladwell signed books, including a copy of Blink that I had bought before the talk (these were being sold by a woman named Kim Ricketts, who I guess is carving out a niche for herself putting on book events; she was going through the line waiting for signatures and writing everyone's name on a piece of paper, so the signing would go faster). I followed up on my question about feedback causing bias against unusual candidates, which actually gave him a moment of pause (an accomplishment!).

I saw Robert Scoble there, who was taking a few pictures for his link blog. In fact in this picture, that is me right behind the person getting an autograph; it's my hand holding a copy of the book and my laptop (and no, Gladwell doesn't have a goatee, that's someone's shoe). What Gladwell is signing in the picture is this cover from Fast Company, related to an article titled "The Accidental Guru".

Gladwell has a talk this Wednesday at Town Hall, and his visit was covered by the Seattle P-I and the Seattle Times.

Posted by AdamBa at 08:43 AM | Comments (1) | TrackBack

January 22, 2005

Testing Movable Type 3.14

Just a test post to see if MT 3.14 works. The upgrade was made much longer by the fact that FrontPage is such a giant piece of crap. I still get comment moderation errors, so I am going to gradually close comments on all old posts (MT still doesn't support changing the Comment status in power-editing mode, as far as I can tell).

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

January 20, 2005

Microsoft Goodness

In his book What Is the Name of This Book?, Raymond Smullyan posits that everybody is either conceited or inconsistent. His argument is that we act on our set of beliefs as if every one were true, yet only a conceited person would really think that all his beliefs were actually true. It's not a logical trick; Smullyan feels, and I concur, that any reasonably modest person is acting inconsistently. I count myself in that modest/inconsistent group. It doesn't bother me to know that I am acting inconsistently. But occasionally, I do decide that something I've always believed is no longer true, and I adjust my behavior accordingly.

One of my beliefs that is teetering a bit is the belief in Microsoft's fundamental goodness as a company. I'm not concerned so much about the intentions of everyday employees; rather I wonder if Microsoft executives, in their heart of hearts, are really concerned about doing the right thing.

This has been simmering in the back of my mind, but a recent article in the Seattle Times Sunday magazine brought it to the forefront. The article doesn't mention Microsoft; it's about Costco and Dick's Drive-In, two Seattle-area companies that pay their employees more than they need to, basically because they want to.

I'm not saying Microsoft doesn't pay its employees well. It's more the philosophy that drives the company.

Read Costco's code of ethics. It's pretty basic: Obey the law. Take care of our members. Take care of our employees. Respect our suppliers. Good stuff. Now look at Microsoft's mission and values. It reads a little differently, doesn't it? A bit further from the Boy Scout pledge and the Golden Rule.

That page also contains Microsoft's mission: To enable people and businesses throughout the world to realize their full potential. Costco isn't on a mission. As Jim Sinegal, president and CEO of Costco, says in the article, "We are not inventing life here, we are selling mayo." When you're on a mission, you have to get things done. Maybe you have to step on some toes, be rough around the edges, not do as much "taking care" and "respecting". Because you're on a mission! Costco, meanwhile, is just selling mayo. When you're just selling mayo, you can take the time to be good.

I still think that Bill Gates is fundamentally a good person, that he is different from Scott McNealy and Larry Ellison, that he is driven by a desire to make great software, not a desire for money and/or power. It's possible that I'm completely naive and/or wrong here, but consider his recent decision to only hold one outside board position so he could focus on his family and his foundation.

But just because Gates is a good person, does not mean the company he founded is automatically a good company. I mean, Microsoft isn't a bad company. The executives are not paid an outlandish amount compared to employees. Microsoft gives lots of money to charity, it has good benefits, it gives its employees lots of perks. But is it as good a company as Costco?

I know a couple of people who work for Costco. They love the company. Sure they make fun of some things that happen there, but when they talk about the executives and the direction of the company, it's always about something positive, and you can hear the pride in their voices. I work at Costco, and it's a good company. Do I hear that when people talk about Microsoft? I met somebody who work as a stocker at Costco and hurt his back pretty badly, and had to stop working. Know what? Even he still liked the place.

Of course, I still work at Microsoft. And I still like the place, and I'm proud to tell people I work there. But sometimes, I start to wonder.

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

January 15, 2005

Giants of the Prairies

In Vegreville, Alberta there's a giant pysanka *,
It's the biggest Easter egg that anybody ever saw.
The questions folks up there won't answer, even if you beg,
"Where the heck's the chicken that laid that giant egg?"

* pysanka: A Ukrainian Easter egg

The lyrics are from the song "Giants of the Prairies", by the Kubasonics. The Kubasonics are a band from the Canadian Prairies, who play a unique blend of Ukrainian-Country-Polka music. In Canada you can listen to CBC Radio, which is a national public radio station, and as part of its efforts to promote "Can-Con" (Canadian content), CBC Radio takes it upon itself to play semi-obscure Canadian music. At some point the swinging sounds of "Giants of the Prairies" landed on my mother's ear, and soon after she presented me with a gift of the album of the same name.

In Komarno, Manitoba, they built a big komar *,
It's a really big mosquito, you can see it from afar.
Now you might find that strange, a little wierd, a bit absurd,
Til you realize the mosquito is Manitoba's Provincial bird **

* komar: mosquito
** it's not, actually

From the liner notes: "At one time the largest things on the Canadian prairie were grain elevators and the onion domes of Ukrainian churches. Now they are being replaced by a new generation of roadside giants, which we celebrate in this song. Just the tune for planning your next road trip."

In Saskatchewan's Canora, there's a lady mighty fine,
She's holding bread and salt, a Ukarainian welcome sign.
They thought that giant lady would bring their town some class,
Til some tourist parked his Winnebago underneath her...skirt.

So after listening to this song a few times, I started to wonder. Do these things really exist? Perhaps, just maybe, someone would have dedicated a website to them.

In Glendon, Alberta, they pay homage to our food,
They don't call it a varennyk *, but some people think they should.
Now I really must admit I felt a little like a dork,
Wen they took my picture under a big pyrogy on a fork!

* varennyk: The Ukrainian word for the filled dumplings also known as perogies, pyrogys, etc.

Ha! Someone, indeed, or perhaps some many people. There's the Big Things website, which categorizes them by province, subject, and artist. Man, oh man. "Giants of the Prairies" is barely scratching the surface. I think Alberta has more Giant Useless Objects than it has curling rinks (which is saying a lot). Vegreville not only has its Easter Egg (which evidently is some kind of mathematical marvel), it also gets a giant elk. And Big Things lists Komarno's mosquito, Canora's Ukrainian gal, and of course Glendon's mighty pyrogy.

In the town of Vilna, they've got some giant 'shrooms,
Even if you dried them, they'd fill many, many rooms.
Now if you want my opinion, I think you'd need a tanker,
To truck in enough cream to make a sauce for those pidpen'ky *.

* pidpen'ky: wild mushrooms, often served with a cream sauce

But Big Things is not the only site to celebrate these things. There's also Roadside Attractions, which shows the big ol' mushrooms in Vilna. Vilna is in Alberta, so they also show up on the Alberta Big Tour website (right here, in fact. Note to website author: the moving graphic is nice, but drawings don't really cut it here...a drawing of a 20-foot-high mushroom really looks a lot like a drawing of a 2-inch-high mushroom. PICTURES capture it a bit better).

In the town of Andrew they've got a giant duck.
They had to rent a crane to get that mallard off the truck.
Now it hasn't generated the reaction they were hoping,
The tourists mostly stop and yell "Nai tebe kachka kopne!" *

* Nai tebe kachka kopne: A Ukrainian curse meaning "A pox on you!", but literally translated as "May a duck kick you!"

We're hitting the big time...the duck is up on the World's Largest Roadside Attractions page. Actually WLRA seems to be lacking in completeness; it doesn't include the mighty Wahpper, a giant catfish in Wahpeton, North Dakota that I actually personally visited on a cross-country drive. The Wahpper link is on the Titans of the North page, which claims "North Dakota and Minnesota boast the densest population of giant animals anywhere on earth" -- a dubious statement if I ever saw one.

Now in Mundare, Alberta there's a new totemic sign,
For Ukrainian sausage lover's, it's like a sacred shrine.
We bow down low before it, we gave at it in awe,
It's a fourteen-metre fiberglass and steel kubasa *.

* kubasa: the Ukrainian word for garlic sausage (aka kielbasa in other languages)

(A picture? Oh yes, there's a picture). Brian Cherwick, the leader of the Kubasonics, looks like he belongs behind a counter selling garlic sausage, instead of being on stage singing about it, but as you listen to him reverently croon the previous lines you can get a glimpse beyond the goofballness to some true cultural nostalgia. It turns out that he has a Ph.D. from the Centre for Ukrainian Canadian Studies at the University of Manitoba, titled "Polkas on the Prairies: Ukrainian Music and the Construction of Identity"? I'm not making this up -- the Ph.D., or the Centre for Ukranian Canadian Studies. Here is proof, I tell you. And they say a Ph.D. only leads to an academic life...

Giants of the Prairies!

(all lyrics by B. Cherwick, SOCAN)

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

January 13, 2005

More Information on Microsoft Campus Plans (Internal Only, Sorry)

If you happen to be on the Microsoft corporate network, there is more information about Microsoft's future campus plans. I'm probably not supposed to post a URL directly, so do the following:
  1. Go to the main internal website.
  2. Search for "Workplace Advantage FAQ" (no double-quotes in the search box).
  3. Click on the third item returned (the one whose title is a question) -- it's a Word FAQ document.
  4. Click on the "WPA Research" link near the bottom of page 1.
  5. Click on the "Redmond Master Plan" link on the left.
Once you are there, scroll down to the fourth picture and click to enlarge it, and you will see a computer rendering of the future campus.

Some of the other drawings on that "Master Plan" page show a potential 520 overpass drawn as a dotted line (look at the last drawing on the page, or the third from last).

You can also go back to the main internal website, search for "New Work Style", and watch the video that is returned as the first item, for a peek at Microsoft's view of a future workspace. Whatever you think of this, you have to admit Microsoft is not standing still and waiting for the future to come to us. There is some progressive thinking going on here.

Posted by AdamBa at 10:02 AM | Comments (4) | TrackBack

Find the Nose?

Here's a course on debugging at the Free University Berlin, which lists Find the Bug as extra reading. If you ask Google to translate the page, it translates the title of the book (which is in English on the original page) as "Find the Nose". Is "bug" German slang for "nose"? While researching this (fruitlessly), I did learn that "Tom Tug" is Cockney rhyming slang for "Bug". You learn something new every day...so I'm done until tomorrow.

Posted by AdamBa at 09:51 AM | Comments (2) | TrackBack

January 12, 2005

Microsoft Campus to Grow

Microsoft announced that its campus will be growing by about 2.2 million square feet; more specifically about 600,000 square feet of existing buildings would be demolished, and 2.8 million square feet of new space built. Stories on this were in the P-I and the Times. There's also a Q&A with Brad Smith, where he states "The campus will take on the look and feel of a university, with outdoor common areas surrounded by buildings."

The Times article links to a PDF of the development agreement. Among the items proposed is an overpass across the 520 highway at NE 36th St, which Microsoft would pay 70% of the cost of up to $15.2 million. Page 33 of the PDF has the proposed turn lane and traffic signal additions, as well as showing where a new campus entrance on to Bel-Red road would be built. There's no map of the proposed overpass, but still. Our own highway overpass! Can a monorail be far behind? You know what we're talking about, baby...we're talking about infrastructure. That's right, I-N-F-R-A-S-T-R-U-C-T-U-R-E! I love that word. Let a thousand cement mixers bloom!

Posted by AdamBa at 02:35 PM | Comments (0) | TrackBack

January 10, 2005

I Say Modulo, You Say Modulus

There is an expression you sometimes hear around Microsoft, which goes something like "The API is finished, modulo the executive review" or "the work will take 3 weeks, modulo another reorg."

In this context, "modulo" is being used to mean "if you strip out all that other unpredicatble stuff, this is the right number". It's a geek reference to the function in C (and various other languages) that looks like

a % b.

For example, 13 % 5 is 3, and 100 % 3 is 1.

My father points out that in mathematics, the word "modulo" is used only in the phrase "X is congruent to Y modulo Z". That is, it is comparing the result of the operation on two values. So while a mathematician would agree that 13 is congruent to 3 modulo 5, they would also say that 13 is congruent to 8 modulo 5, and 13 is congruent to 103 modulo 5, etc. The word "modulus" refers to "the thing you are taking away", which is 5 in this example. There isn't a term (that he knows of) for the "smallest positive number that this number is congruent to" (3 in the examples above), which is what the % function in C is calculating.

What I really mean is there isn't a term like "modulend" or "modulisor"; there is a mathematicial term for what % is calculating, and that term is "remainder". The meaning of X % Y is really "the remainder when X is divided by Y" (I'm ignoring negative numbers in all of this). It's actually a bit strange that a) the symbol % was chosen and b) the term "modulus" or "modulo" was used.

% of course has a meaning, percent, and many calculators have a % button that calculates percent. But you really don't need a separate % symbol in a programming language, since you can do it with division and multiplying by 100 (you don't need it on a calculator either, for the same reason, but I guess calculator designers thought their users would be less mathematically apt than progamming language designers). And the % symbol does recall division (intentionally, of course), so it makes some sense. I don't know if C was the first language to use %; I think some other languages use the word "mod", but no language I know of uses "remainder" or any short form of that.

As for the term used, my 1978 edition of Kernighan and Ritchie (the original C bible) calls it "modulus" in the index, and uses "remainder" to describe it in the text. Many other people use modulo (I checked Find the Bug; I used "modulo", when I talked about it at all (I seem to have forgotten to define it in the chapter on C); it's one of those things I wrote without really thinking about it, that is probably at this moment offending a language purist). Both terms would sound wrong to a mathematician, although it's not a terrible co-option of the term (there's a story about a mathematician who is looking at some source code, sees the statement "a = a + 1", realizes that is mathematically impossible, and immediately abandons any attempt to become a programmer; but most mathematicians are not that stereotypically literal).

The modulo/modulus operator always makes me think of a cartoon. Imagine the Roadrunner is running on stilts, being chased by the Coyote. The Coyote is riding on a machine that swings an axe horizontally about five feet off the ground. Each time it swings, it lops off 5 feet of stilts, and the Roadrunner drops 5 feet. But when the stilts get short enough, the axe goes over the Roadrunner's head. That's my visual reference for "mod 5".

This is basically what people are referring to at Microsoft when they use the term "modulo" as I first quoted it. They mean, if you lop off all that other stuff, you are left with what I told you. Technically it would only be correct if the unexpected overhead was larger than the original project; if your project was 17 days and the API review was 3 days, then doing a modulo operation would leave you with 2 days...but if the overhead comes in blocks of 20 days, say, then that use of "modulo" precisely matches the way the word is used in computer science -- although not the way it is used in mathematics.

Posted by AdamBa at 03:02 PM | Comments (1) | TrackBack

January 07, 2005

Princeton and Smith launch engineering student exchange

I am just posting this news from the ol' alma mater with no editorial comment: Princeton and Smith College launch engineering student exchange.

Smith College is all-female; Princeton University is about half female overall (when I was there it was about 2:1 male), but in engineering it's only about 30% female.

Here's an excerpt from the press release (just in case you don't have time to read the whole thing): "It also is an interesting opportunity for Princeton students to try out an environment where most of the students are going to be female." Actually this quote is missing from the Smith version of the press release.

Posted by AdamBa at 04:08 PM | Comments (0) | TrackBack

January 05, 2005

The Legacy of Y2K

We just passed the fifth anniversary of Y2K, amazingly enough. I remember that I was considering leaving Microsoft in late 1999, but I stuck around 1) to make it to my ten-year anniversary and 2) just in case the world went to heck, I could move the family into my office at Microsoft (Microsoft had brought in giant generators for every building).

Of course it turns out things went pretty smoothly, but I have never heard a satisfactory answer on what would happened with no preparation. You hear that Russia, as an example, spent almost nothing on Y2K, but maybe their infrastructure is less computer-dependent. And I don't think there was a lot of analysis of existing systems; instead they were just replaced, so we don't know if they were lurking time bombs or not.

Here is an interesting article about The Surprising Legacy of Y2K (also covered on Slashdot). It doesn't really answer the question, but there is one quote from the President's Y2K advisor: "The low level wind shear detectors at every major airport go out at 7:00 on Friday night, the defense intelligence satellite system goes down, the French intelligence satellite goes down, the Japanese lose the ability to monitor a couple of their nuclear power plants, and come Monday morning, there are thousands of businesses that when you buy something with your credit card charge you every day of the week."

The article also points out something I hadn't really thought of, which was that preparing for Y2K, being such a crunch on programmers, was the time when Indian outsourcing really took hold.

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

Specing Errors

One of the things I do as a program manager is write specifications, or specs.

Everyone knows the order you are supposed to do this in: first define the requirements, then write a functional spec, which eventually results in a developer writing a design spec, and a tester writing a test spec. The code and tests are written, and we are off to the races.

The main thing is to make sure you pause at each step. Have all your requirements before you write the functional spec, and finish the functional spec before anyone writes a design/test spec (or god forbid starts writing code).

This works well in general. It is good to really think through all your scenarios and address them in a functional spec before you start designing the software.

Except for one thing. Errors.

Every spec has a section for errors (and exceptions), and in most specs this is marked as "TBD" in the first draft. Then eventually someone does a bit of thinking about the ways that the program could fail, and fills in some stuff. The user-visible error messages are defined for each error. But then the code gets written, and the errors may or may not match what was speced.

People sometimes complain about the thinking that has to be done ahead of time when writing a functional spec. Wouldn't it be easier, the argument goes, to just write the code and then spec it afterwards (like in the "good old days")? But these days there is too much that needs to be known ahead of time. It's not just the developer; the tester has to plan the tests, UA has to write help, etc. So most people who complain about having to think through scenarios for a functional spec should just deal with it. But errors, I think, is the one area where this reasoning is correct. It is inefficient to spend the time to spec errors up front.

The problem with specing the errors beforehand are:

  1. You may not think of every possible error, so that the developer discovers an un-speced error condition.
  2. You may think of errors that can't happen, meaning that you spec what to do when something fails in a certain way and then discover that your code can't distinguish that error from another one.
  3. You may spec discrete failures as the same user-visible error, which means you are hiding information that could be valuable when debugging the program later.

Technically, in all these cases the developer can't just do "the right thing", because the functional spec doesn't say to do that. So you have to go back and update the spec, which takes time, on top of the time you already spent thinking about errors. And maybe updating the spec requires a DCR or signoff or one of those things.

So what I propose is that errors be treated separately from the rest of the functional spec. What you do is write the functional spec without the errors. Then the developer writes the code and sees the actual errors that can be generated, making sure that each one is uniquely identifiable from the user perspective (even if it is just a unique number that is printed out, that the user can read over the phone to a tech support person). Then the functional spec is updated to match what the code does, the error message text is written and added to the code (hopefully it is in a resource file, not compiled in, so easy for a non-programmer to edit), and we are done.

The result is you get all your errors documented as before, they are all unique, and you don't waste any unncessary time.

I doubt any managers at Microsoft would agree, but it's nice to dream.

Posted by AdamBa at 08:27 PM | Comments (3) | TrackBack

January 03, 2005

Other Nice Spots on the Microsoft Campus

John Walkenbach linked to my "favorite spots" post and mentioned that he liked the courtyard between building 16 and 17 that contained the "Ship-It" tiles (Microsoft has a program where employees receive little gold stamps for each product they work on, when it ships. A tile was also added to the courtyard for each product; I'm not sure if they are still doing that).

I agree; the courtyard is nice, and in fact I almost included it on my list. These are the other places I considered:

  • Traffic circle in front of Building 4 (a reminder of when this was the "impressive" entrance to the executive building).
  • Old loading dock by Building 1 (another echo of former glory, now moss-covered and repurposed into a plain old parking spot).
  • Treed area south of Buildings 5 and 6 (the putative location of the mythical Building 7).
  • Landscaping behind the Building 25 Cafe (I like it, and the 25 cafeteria remains the best one on campus IMHO; you normally need a cardkey to get here although I guess you could fight your way through the landscaping from the corner of 156th and 40th).
  • Path from the external garage to the parking under Building 26 South (This is about ten feet long and saves you maybe 50 feet of walking, but I like the way it was created naturally by people cutting through the bushes).
  • Concrete wall/terrace at the north end of Building 17 (not sure why I like this, perhaps it's something about how the strairs cut through it).
  • Building 16/17 Ship-It courtyard, as mentioned above.

Plus two at RedWest -- the central area (hard to mess this one up, given the view) and the "garage under the house" that was built to relieve overcrowded parking.

I am at work today, because the kids had no school on Friday and school today so I swapped (officially today is a corporate holiday). It's a clear, cold day, and I finally confirmed that I can see Mount Baker from my office window.

Posted by AdamBa at 01:32 PM | Comments (2) | TrackBack

January 01, 2005

Virtual PC - App Compat Story of the Future?

We bought the kids a new computer which came with Windows XP, and some of their games refused to run. Not surprising, these games are 5+ years old and designed to run on Windows 95/98, and with the switch to the NT-based operating systems, despite Microsoft's best application-compatibility efforts, they have problems running. Many times these are due to bugs in the application (such as depending on memory being initialized a certain way) that happened to not fail on the old platforms. People like Raymond Chen spent a lot of time working on app compat, in some cases actually detecting specific applications and having the operating system "misbehave" in the way they expected.

So Microsoft has tried hard to fix these problems, but a lot of it comes down to which of the thousands and thousands of applications we tested and how much we care about fixing them. Evidently Lego Chess didn't make it, because it crashes consistently on XP when it plays animations. I'm not knocking Microsoft for this; the "fix" for this problem would have happened 10-15 years ago and would have involved better development tools and a tougher Windows logo compatibility program, which would have led to fewer and more expensive apps, and therefore more expensive hardware...in other words it would be like the Macintosh.

Nonetheless I was stuck with a nonworking Lego Chess and some unhappy kids as a result. So I installed Virtual PC. Virtual PC takes a different tack; rather then emulate the Windows API, it emulates an entire computer. To run a game under Virtual PC, you first have to install an OS on the virtual machine, then install the game, then run it.

I went to the company store and plunked down $20 for Virtual PC. Then I needed to find an old Windows OS to install. We had kept all the manuals and stuff from various old computers, so I knew I had a Windows 98 CD somewhere. Eventually I found it, installed it, installed Lego Chess...and it failed. Oops! A quick search of the Microsoft org chart revealed that the former test manager on one of my products was now the test manager for Virtual PC. He redirected me to Ben Armstrong (aka Virtual PC Guy) who told me to go to the Virtual PC website and install Virtual PC SP1, and then enable this workaround for a video bug, and lo and behold Lego Chess now works in all its glory. Actually I also had to turn off the Direct 3D mode in Lego Chess, but that didn't seem to affect the performance.

(Then I tried to install Windows Me in a separate virtual machine. Microsoft had made it a bit harder in the time between Windows 98 and Me...for one thing the product ID was on a sticker attached to the computer, not with the manuals, but luckily the old computer was still in our garage. Worse, the Windows Me CD that I had was marked "for reinstallation on a Dell PC only". The kids' new computer is a Dell, but evidently it really meant reinstallation on the original Dell it came with -- it must check for some known bits in the hard disk boot sector or something -- because it aborted partway through setup. So now I have to find a Windows Me disk, which seem to be selling for upwards of $50 on eBay. It's annoying because these used to be a dime a dozen at the company store (or perhaps $240 a dozen) but now I don't know how to get a cheap copy, unless someone at Microsoft has one lying around.)

Anyway, this got me thinking that Virtual PC could really become the application compatibility story for Microsoft in the future. You do lose a bit by running apps under Virtual PC; the virtual machine has its own virtual hard drive (although there is a way to access the computer's real drive), and I'm not sure how well things like cut-and-paste work between virtual machines. But when you are running a standalone app (like a game) none of that matters (and if your alternative is the app not working at all, who cares about cut-and-paste).

Currently, of course, you have to own a CD of the old OS you want to run, and also run it through setup. But Microsoft could fix that. Each copy of Virtual PC could include a license and CD image for old versions of Windows -- but only licensed to run under Virtual PC on one machine. I think the images could be "preinstalled", because the virtual machine that Virtual PC presents is a standard system (for example Windows 98 reports that the display adapter is from S3, and the sound card is a Soundblaster, even though our actual machine has different hardware).

And in fact you could snapshot the memory state of the virtual machine after the OS booted, so you wouldn't even have to wait for that. Sure a memory snapshot would take 128 megabytes or whatever of disk space, but so what? Disk space is dirt cheap. A CD image, 1 gig virtual hard drive, and 128 meg booted memory snapshot for Windows 95, Windows 98, AND Windows Me would take up less than 6 gigabytes -- today Dell isn't selling a computer with less than a 40 gig drive, and is offering free upgrades to 160 gig on its higher-end systems.

Right now on XP you can choose to run an app in "compatibility" mode with old Windows versions. But instead Windows could come with Virtual PC included, with these preinstalled images of old Windows, snapshotted in booted state, and when you went to run an app you could choose "run under virtual machine of this old version of Windows" and it would BOOM load up the memory snapshot and load the app inside it, and there you would be.

Posted by AdamBa at 07:04 PM | Comments (5) | TrackBack