« November 2004 | Main | January 2005 »

December 30, 2004

Google Stories

An article about Google and its quest to stay happenin', which quotes my blog (and also fixes a typo in the quoted section, which I hadn't noticed until now).

My father, who is a mathematician, recently told me a Google-related story. In January 1997 he visited a colleague who was a CS professor at Stanford. The professor was busy one day so he assigned one of his grad students to give my father a tour of San Francisco. My father said the grad student was very nice, it turned out he was the son of a mathematician, and had emigrated from Russia when he was younger. Later, my father went to a talk that the guy gave, which was about using inbound links as a way to rank web sites.

Actually I heard a similar story from someone I interviewed once, also about a demo at Stanford, except this was earlier, around 1994, and it was a presentation about building a giant categorized database of web sites. It was an early version of Yahoo! (and my father's guide that day in San Francisco, for anyone who has been off-planet for a while, was Sergey Brin).

Moving further away from the original topic, there appear to be three authors out there named Michael Barr. The one writing mathematical textbooks is my father. Then there is someone who wrote a book about embedded systems programming for O'Reilly, and a guy at Queensland University who studies Asia. I wonder if the other two know that their name is an anagram for "marble chair"?

Not much going on at work today, as you can tell.

Posted by AdamBa at 11:32 AM | Comments (0) | TrackBack

Mike Gunderloy Says Nice Things About "Find the Bug"

Mike Gunderloy, author of Coder to Developer (and many other books), has some nice things to say about Find the Bug at ADTmag.com.

Nice things like "I had fun working through the code looking for the silly things other people did" and "Go through these fifty exercises, and you'll be a better code reviewer".

I have not read Mike's book, but it looks interesting. The title reminds me of a progression of programming skill that I heard in college: stud, god, programmer, king. Hmmm, that may be the title of my next book. There's also The Pragmatic Programmer which talks about going from journeyman to master. Evidently there are many paths to coding nirvana.

Posted by AdamBa at 11:19 AM | Comments (1) | TrackBack

December 27, 2004

Top Ten Favorite Spots on the Microsoft Campus

It's the time of year when people make lists, so in that spirit, I present my top ten favorite spots on the Microsoft campus. I am limiting myself to the "main" campus (the buildings east of the 520 highway), since that is what I am most familiar with. Also, all the locations are accessible without a cardkey (although I am not sure of Microsoft's precise policy on people without badges wandering around campus).

These are in no particular order; more precisely, they are in the order I took the pictures, so the order denotes nothing about relative ranking. Click on each thumbnail to bring up the larger picture.

I like this stairway because it makes you realize that this nondescript parking lot, which looks like any other paved lot in the world, is actually the second floor of an underground lot. Also it looks like a subway entrance.

This is a view of the entrance to the Building 16/17/18 garage complex. There are some parts where the garage is two stories high (straight ahead in the picture, for example), which I think looks cool, and I also like the way the landscaping around Building 16 (on the right), particularly the trees, turns out to be on top of nothing but air. At the top of the picture you can see the skybridge connecting 16 to 18, which looks quite nifty from the inside and would have made the list (along with the identical one connecting 17 to 18) except you need a cardkey to get to it.

This is a long fence (purely symbolic/decorative) on the edge of the main fields on campus. Note how the fence, trees, and path form a geometric haiku. This view is down the street that is called Microsoft Way (but should really be something like 157th Ave NE); if you turn right up ahead, on NE 36th St, you have a similar view there.

The "old" part of main campus (buildings 1-6 and 8-10) were connected by these covered walkways. This is the walkway between 6 and 10; it has a gap in it, rumored to be so that fire trucks could reach the inner courtyard if necessary. Whatever the reason, the result is one of the few places on campus that looks like it was sponsored by the Dia Foundation. The fountain just beyond it, which is right behind Building 9, was a happening place to hang out in the "good old days". Most of the walkways are shorter, but the one connecting Buildings 2, 8, and 9 takes a nice little meander through some trees.

This view, of the front door of Building 5, reminds me of the drawing of the Elvenking's Gate in The Hobbit. But more importantly, it shows an integration with the natural environment that is missing in Microsoft's newer buildings. Buildings 1-6 have only one floor of parking below them, so the parking level was built on the ground and the buildings constructed above; this contrasts with later buildings which had multi-level underground parking below them, which required digging a big giant hole and then adding landscaping back once the buildings were done (e.g. Building 16/17/18, see above). For Building 5, they built this bridge to the entrance, which if you look from the side turns out to be no higher than about three feet off the ground most of the way; in a modern Microsoft building the depression that it crosses never would have survived.

This bridge is tucked away in a corner of campus by Building 5 (a complete backwater until the recent construction of the massive Building 36, just on the other side of the bridge). It crosses a small ravine; the bridge to the Building 5 entrance (see previous item) is actually over the tail end of the same ravine. I like it because it's a bridge, but also because it again demonstrates a harmonizing with the extant topography that is absent in newer buildings (it helps, of course, that the buildings are almost 20 years old, so nature has recovered from any construction-related disruption). I think this is the photo that would most likely stump Microsoft people if you showed it to them and asked where on campus it was.

Another walkway, this one crossing from Building 1 to Building 2. I spent a lot of time on this walkway when the NT networking team was split between the two buildings. I like the way this walkway jumps from being one floor above the path to two floors above the parking garage. Not sure what the twisty maze of pipes is for (they were added at some point after initial construction), but they march around this general area. There's also a nice stand of red flowering currant bushes on the right side (unfortunately not flowering this time of year).

How can you not include the famous Lake Bill, nestled between Buildings 1, 2, 3, and 4. For fours years my office in Building 2 looked out at the lake and its famous fowl (if you continue under the walkway in the previous item, you arrive at the point this picture was taken from). This is the lake that Steve Ballmer swam across (for charity) and I almost had to swim across (if the NT networking team had not delivered something by some deadline, which we did). Dead ahead is a nice little patio off the Building 4 cafeteria.

Microsoft deserves credit for making its building slightly more architecturally interesting then they needed to be -- but only slightly. Mostly they are variations on stone and brick. Building 35 (and its virtual twin, Building 34) does the best job of actually being interesting to look at. Note the ubiquitous campus shuttle parked in front. [UPDATE (12/29): I originally had 34 and 35 confused -- this picture is really Building 35, despite the name of the .jpg file]

This is the path you would take if you wanted to get from, say, Building 2 to the Building 16/17 cafeteria. It's just a path, but it has an unhurried look to it, and a nice stand of trees to the right. I suppose if you were looking for the physical manifestation of the "Chinese Wall" that may or may not have existed between Systems and Applications, it would be this path; in this view, Systems would be behind you and Apps ahead.

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

December 24, 2004

NORAD radar hones in on fat, jolly elf

From the North Warning System: Looks like Santa will make his trip on time.

Hope everyone has a happy Christmas Day.

Posted by AdamBa at 05:19 PM | Comments (0) | TrackBack

December 22, 2004

Two Other Blogs

Here is a guy who is blogging his attempt to get a job with Microsoft. It's interesting to blog this because it's possible that anyone he interviews will have Googled him and therefore found his blog, and all his self-referential noodling (although actually I doubt it, nobody I interviewed with bothered to Google me first).

Meanwhile, here is the archive of Washingtonienne, which I read about in Time magazine, of all places. This blog, which lasted a mere 2 weeks in May, tells the sordid tale of a low-level government employee and the six men she is sleeping with (only two of whom are paying her for it). Handy-dandy guide to the guys is here.

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

Shortest Day

We are in the time of the shortest day of the year. I think it was yesterday, but the length of today is about the same. Sunrise at 7:54 and sunset at 4:21, so just under 8 1/2 hours of daylight.

Out of morbid curiosity, I keep a watch on the temperatures in the Canadian Arctic. Here's the current temperatures in Nunavut. To add to the fun and excitement, not only is it BAFC up there, it's also fairly windy a lot of the time. For example at Rankin Inlet the windchill right now is -72 F (the temperature is a mere -40 F (or C)). Yeesh.

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

December 21, 2004

Slate sold to the Washington Post

Slate, the MSN version of The New Yorker, is being sold to the Washington Post. MSN has changed and morphed in many ways since its initial launch with Windows 95, reflecting the twists and turns in the prevailing vision of how the Internet would be monetized, but to its credit Microsoft has kept Slate in its same basic form for most of those years.

Actually when Jacob Weisberg writes "When we published articles that the 'shirts' in Redmond can't have liked very much, they did not complain or otherwise attempt to restrain us" my reaction is "Of course they didn't! Why would Microsoft do that?" I know Weisberg is being grateful, but the fact that he mentioned it reflects the widespread belief that Microsoft, given the choice between evil and non-evil, will reflexively choose evil.

I don't recall specific cases where Slate tweaked BillG's schnozz, but it is interesting to contract the reaction to such writing (which must have been muted or nonexistent, since I don't recall any) with the current flap about Scoble's advice to the Windows Media team. I'm sure what Slate wrote was MORE negative than Scoble's constructive criticism, yet because they were "journalists", it was viewed as a Good Thing. When a blogger does it, people complain, for a variety of reasons. What does this say about the gap between "real" journalism and blogging? BTFOOM...I report, you decide.

Posted by AdamBa at 08:52 AM | Comments (0) | TrackBack

December 20, 2004

Giving Season

Three years ago, I read a Slashdot interview with Lawrence Lessig in which he wrote:

But if you don't want to become translators, if you don't want to write environmental impact statements, if you don't want to try to convince the North in California that if it gets taken over by the South, freedom and innovation ends, then you could do as Torvalds has recommended: give money to those who are fighting the battle, in particular, EFF. I'm on the board of EFF, so blissfully biased about to whom. But whether EFF or someone else, follow Torvalds and the other christ-figures in history: Tithe. Take the cost of Internet access (whether you pay it or not) for one year; send 10% to an organization fighting for your freedom.

I was inspired to give give money, and continue giving money each year, to the following organizations:

American Civil Liberties Union
Electronic Frontier Foundation
Electronic Privacy Information Center
Online Policy Group
Privacy Rights Clearinghouse

That's my list -- a Union, a Foundation, a Center, a Group, and a Clearinghouse. You can make your own choices, but hopefully you will consider supporting some organization that is working for your rights. Thank you!!

Posted by AdamBa at 10:27 AM | Comments (0) | TrackBack

Another Great Blog

The more cynical you become
the better off you'll be

The Offspring

The only thing better than a cynicism-laden blog is an obscenity-and-cynicism-laden blog. So surf on over to CausticTech (once the kiddies are asleep) for some extremely insightful cursing. His latest (but, sadly, two months old) entry begins "you know what is the fucking bane of my existence (besides PMs)???" Yes, sometimes I feel that way too.

Posted by AdamBa at 10:11 AM | Comments (0) | TrackBack

December 18, 2004

Wild Horses

The Seattle Post-Intelligencer occasionally burps up an interesting, offbeat article, such as this one about wild horses on the Yakama Indian Reservation, written by the P-I's horse racing handicapper (I guess that's how you become a follower of the Sport of Kings -- you have a grandfather who says things like "Cayuses everywhere -- you know, mustangs, boy!")

The Yakama Reservation is just south of the town of Yakima. About 5 or so years ago, the tribe decided that the spelling "Yakama" was closer to the original, and changed it, but the town did not follow suit.

If you are driving on I-90 in Eastern Washington, just east of the bridge over the Columbia River at Vantage, there is a sculpture called Grandfather Cuts Loose the Ponies, which you can hike up to from a rest stop. Worth the climb if you are in the area.

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

December 17, 2004

All I Want For Christmas...

...is a Slashdot review of Find the Bug. Any takers?

Powell's books has a Hot List, which Find the Bug appears on in the Technical Titles section (more details here). Quoth the webpage: "Whether selling in a piranha-like frenzy or at a pace, slow but steady, like a herd of manatee, these are the titles our employees and customers are currently referring to when they say, 'You've got to read this.'"

Sounds nice, but take a gander at some of the other technical titles that employees and customers are allegedly saying "You've got to read this" about. The Tesla Disc Turbine (Amazon rank 592,603)? Keep Your Lathe in Trim (Amazon rank 655,531)? How about Silicon Processing for the VLSI Era, for a mere $235.50 (BARG-ALARM!! Amazon has it on deep discount at $199.95). And please find me the person -- employee or customer -- who buttonholed someone else and said "You've got to read Nitroglycerine and Nitroglycerine Explosives" [ed: Amazon rank 1,027,282] without being arrested by Homeland Security?

Ah well. 'Tis the thought that counts. And I don't know about Photovoltaics: Design and Installation Manual, but Find the Bug does make a great gift for that special programmer in your life.

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

Millau Viaduct Opens in France

The Millau Viaduct in France, the world's tallest, opened yesterday (it's the tallest in the sense of having the highest supporting pier).

Personally I think this bridge looks funny; the freedom that cable-stayed bridges allows is mostly abused by bridge designers to produce ungainly-looking things like this. By contrast the Kochertal viaduct, which the Millau replaced as the tallest in the world, is a simple box girder and looks fine (look at this album of German bridges. See? See? Is it so hard to design a concrete bridge that looks reasonable?). The piers at Millau are 342 meters apart; the Confederation Bridge (another box girder) has them about 250 meters apart, so it might have been a stretch to not have the cable-stayed part and still keep the same number of piers.

Anyway, this is a picture of the town of Millau with the viaduct lurking over it:

Millau is in southern France, and this viaduct is a key link on the A75 road south from Paris (a discussion of different alternative routes is here; the light blue route was chosen). The French all drive south in unison in August, and evidently the old road caused huge backups getting past this point.

Here's a picture of the bridge with a rainbow, except that the bridge itself looks like it was Photoshopped (the cable support tower on the left is in the wrong place), so I assume the rainbow was faked also. Maybe this was an old artist's mockup whose origin got lost.

Posted by AdamBa at 03:52 PM | Comments (2) | TrackBack

December 15, 2004

Don't Try This at Home

The other night I was trying to play online poker with my wife, but because we have a NAT/firewall, we were both showing up as the same IP address and it was not letting us play at the same table.

No problem, I think, I'll just attach my computer outside the firewall so it gets a different IP address directly from the DSL provider. After all I had run like this up to about 9 months ago when I bought the firewall.

I'm running Windows 2000 SP 4 and of course my account is administrator...but even so I was astonished at how quickly my machine got exploited. Within 5 minutes my hard drive was churning, Task Manager was showing all kinds of processes with names like update0.exe and update1.exe, someone or something was continually launching ftp.exe, my email client sent out 45 infected emails, and my machine was cranking out 100 network packets per second as some unidentified piece of malware tried to phone home.

(It reminds me of one of those tawdry French police tabloids they used to sell in Montreal when I was a kid: "Les ordinateurs...COMPROMIS et EXPLOITÉS!!!" Gak! A little searching reveals that Allo Police just went under!!!)

Plus, after I yanked the network cable, rebooted into safe mode, and ran Ad-Aware and Spybot, Windows 2000 would no longer boot; it hung after login, before the taskbar and Start button appeared.

So I wound up junking that install of Windows and doing a clean install of Windows XP SP2 from a CD. Which meant I first had to figure out why it couldn't boot off my CD-ROM drive. Then why XP SP2 wouldn't see the 80 gig drive I installed (still haven't figured that one out). And I had to puzzle over that confusing page of XP network setup where it asks you to choose between accessing the Internet directly or over a home network. I think it is trying to decide if you need to configure a proxy, but in my case the answer is "Both, sort of." And help isn't, although the question mark button does bounce around the screen real cute (before providing you with useless information).

So now I have a nice shiny XP SP2 build, and when I moved it outside the firewall last night, it kept all the baddies out (and I knocked my wife out with a flush on the river, but I digress).

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

December 14, 2004

MSN Toolbar Suite is the Command Line of the Future?

Mike Torres of MSN Spaces reviews the MSN Toolbar Suite and then says it's the "command line of the future". Hey, wait a minute, Monad is the command line of the future.

I am a bit envious of Microsoft bloggers who have shipping products and can actually interact with live users in public (even if it is only for a beta). Monad isn't shipping for a while, unfortunately. Even then, it may be of less interested to bloggers than things in MSN that deal more directly with the Internet experience. We'll have to cook up some blogging cmdlets.

Posted by AdamBa at 03:01 PM | Comments (3) | TrackBack

December 13, 2004

Monad Providers and UNC Names

A week or so ago I mentioned in another post that Monad just gained the ability to directly access UNC filenames that begin with "\\server\share".

UNC stands for Univeral Naming Convention and it was something Microsoft came out with first in Windows NT. In the DOS LAN Manager days, you had to first "net use" to a file share, which would assign it a drive letter, and then use the drive letter in filepaths. NT still allowed "net use" (it let you specify credentials, and some existing software wouldn't allow paths that started with "\\"), but you could also just specify the UNC name directly. NT also had something called the MUP, which would allow different client redirectors a chance to claim a UNC name (the effect being that you could access \\server\share without knowing if it was on an NT or Netware server).

Anyway, Monad did not use to support UNC names unless you prefixed them with the string "FileSystem::" (as in "FileSystem::\\server\share"). To understand why, first you have to understand Monad providers. Monad has a provider model which allows various components to expose themselves to the standard Monad navigation cmdlets. For example, you could do the following:

get-childitem registry::\

(get-childitem is equivalent to dir and in fact is aliased as such, but I'll use the Monad terms) and it spits out a list like

HKEY_LOCAL_MACHINE
HKEY_CURRENT_USER
...

and then you can do

set-location registry::
get-childitem HKEY_LOCAL_MACHINE

and it would show

HARDWARE
SOFTWARE
SYSTEM
...

The filesystem is just another provider, whose prefix is "FileSystem::". If you specify a path without a provider name in front, then it is assumed to be in the current provider (which is changed with set-location). So normally your current location is in the filesystem provider and paths like "\WINDOWS" work as expected, but if you are another provider they won't.

On top of this you have drives. For example "C:" is a drive. Drives are associated with a specific provider, so "C:\WINDOWS" will always refer to the filesystem provider, no matter what the current location. "HKLM:" is a drive on the registry provider, so similarly "HKLM:\HARDWARE" will work no matter what the current location.

Now comes the question of how to handle a path like "\\server\share\file". These paths are handled by the filesystem, and a path like "FileSystem::\\server\share\file" has always worked. But without the "FileSystem::" in front, there was a debate within Monad about whether a path starting with "\\" should be special-cased to always refer to the FileSystem provider, or should it be provider-relative (because, as one example, a path like "Registry::\\server\key" makes some sense for refering to a remote registry).

It was one of those situations where you know the current behavior is not good, but you get stuck choosing between two ways to improve it, and not doing either. It's not like there was even an installed Monad base to worry about, so we could set the "rules" however we wanted. Eventually the decisions was made to have the "\\" paths be provider-relative. So UNC names only work if your current location is in the FileSystem provider.

Most people won't even care about the distinction because their current location will always be on the FileSystem provider. For people who do things like

set-location registry::\
get-childitem HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Client\Confi guration > FileSystem::\\myserver\data\config.txt

they will have to include the "FileSystem::" part as shown above. I think users who do things like that will be able to understand why it is needed.

Posted by AdamBa at 01:30 PM | Comments (3) | TrackBack

December 12, 2004

Scheduling and Black Hole Projects

Coincidence, I'm sure, that the blogosphere is discussing WinFS on the same day that I read this article about "Black Hole" projects at Microsoft (start at Mini-Microsoft's take for the maximum amount of cynicism/realism).

This point I thought was the most trenchant (note that this should not be interpreted as a comment on WinFS itself): "They must take over any group that does anything that relates to their absurdly broad goals, especially if that group is small, focused, has modest goals and actually has a hope of shipping in a reasonable timeframe."

I do disagree with Frans Bouma's original conspiracy theory that WinFS is late because Microsoft has given it a low priority. I suppose he means we have not allocated enough people to work on it, but as The Mythical Man-Month makes clear, adding more people to a software project that is late just makes it more late. And I doubt the message to the WinFS team was "no pressure, ship whenever you feel like it." But I also don't like Scoble's response, which is full of enabling language and only serves to justify Microsoft making the same mistake again and again.

Here is a little experiment in software scheduling. Assume you have a project that is due to ship in two years, and you do it one of two ways:

A) Schedule two years worth of work, and do it.

B) Schedule four years worth of work (meaning, you think it will take two years but it would really take four), and discover after a year that you are way behind, and cut half the feature set (thus reducing it to what plan A ships).

With plan B, assume half your time during the initial year was wasted because it was working on stuff you wound up cutting. I think this is fair; in some cases you work on the highest-priority stuff (that will be kept) first, but in other cases you spend a lot of time on things that you cut entirely.

Furthermore, assume it takes 3 months to refocus the project to do half the work. Doing only half is a significant cut, so I think 3 months is fair (especially since you probably won't realize right away how much you need to cut, so there will be some churn involved).

Then you have to actually finish the reduced project, and since you have only done 6 months of work on those features, you are still 18 months from shipping.

If you add it up, Plan B takes 2 years and 9 months to do what Plan A does in 2 years. So you waste 3/11 of your time doing it the Plan B way.

More sobering is the fact that AT THE MOMENT YOU REALIZE YOU ARE HOSED (one year into the project), with Plan B you are still 1 year and 9 months from shipping. Which is only 3 months less than if you just toss everything aside and start over with Plan A. In fact you could argue that the benefits of starting clean are worth three months, but I won't.

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

Shipping WinFS

Here's an article about WinFS delays, which Scoble linked to, and then followed up with typical Microsoft defense, which is that shipping complex software is hard, and we have this installed base, and we have to worry about security...or as Artie Lange would summarize it, Wah wah wah.

Those are all true, but it's not like they suddenly became true. Even security was on the radar long enough ago that the WinFS team would have had it in mind when planning WinFS. So the issue is not that WinFS is taking a long time; it's that Microsoft sat down, considered what it had to do architect, spec, design, write, test, evangelize, market, etc. WinFS, made a top-down schedule, a bottoms-up schedule, a sideways schedule -- and that schedule was COMPLETELY WRONG. Not like it was off by 10%. It was off by somewhere north of 100%. And that's just really really bad. For one thing it made us go out at the PDC and trumpet WinFS and then have to announce nine months later that it wasn't going to ship as planned, or anywhere near as planned. Which in turn leads customers to lose faith in Microsoft's ability to plan software deliverables, which makes it very hard to customers to plan their technology spending (at least if it involves Microsoft).

The fact is that Microsoft went through a period where it completely lost the ability to predict how long systems software would take to develop. My theory is that all the "taxes" that were added to developers -- more design specs, more security analysis, more code reviews, etc. -- meant that experience gained shipping the current generation of software simply had no relevance when planning the next generation. People might think, "Well this would have taken me one year before, so now with the extra stuff it will take eighteen months" -- and in reality the right answer might have been two years or four years or who knows. The company did not have a handle on the expected productivity of its employees.

Microsoft may be emerging from this period and regaining its abililty to make schedules, but in the "dark ages" it produced the original schedule for the Longhorn wave, and held the PDC last fall where it talked about all those things, and it's still dealing with the effects of that.

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

December 11, 2004

Microsoft Holds Inventory Blowout Sale

An announcement went out Thursday about a big sale to be held on Microsoft's campus this weekend, promising "Save 30-50% off of MS Store prices on the entire inventory of excess, returned, and obsolete Microsoft hardware, consumer software, Xbox games, and PC games" (but not Office or Windows).

It was in Building 33 and started at 10 am. Because of kids' basketball games, I didn't get there until 10:30.

This is a picture of Building 33 -- actually it's not quite all of Building 33, because the Executive Briefing Center is also in the building, to the left of the conference center, but it's most of Building 33:

The sale was in the McKinley room, there on the right. I came out of the elevator just outside the door and the first thing I realized was, "Oh, the line goes out the door of the room". Then I walked to the "Main Entrance" and thought, "Oh, the line goes outside!" Then I walked outside and realized, "Oh, the line wraps around to the front of the building!!" And then I walked around to the front and realized, "Oh, the line extends the entire length of the building and into the EBC parking lot!!!" (the EBC parking lot is to the left of the building in the diagram above).

This is a picture from Dylan Greene's Microsoft photo album:

It's of the Executive Briefing Center, which is on the left of the Conference Center. That is, using the diagram above, this picture was taken by someone standing on the left edge of the browser window, looking to the right. Anyway the line stretched just about to the point where this picture was taken from. According to this map of campus (which is old, St. Andrews has been built), Building 33 is about 200 yards long, so the line was at least that long.

I felt bad because there were lots of people in line with their kids, probably looking for Sidewinder joysticks or USB speakers or other nifty hardware products that Microsoft has stopped making...and I don't think they were even letting anyone in because the room was already packed. I was hoping to score some surplus Easy Ball mice to sell on eBay, but when I saw the line I abandoned the mission and went home.

I was looking around for Conference Center pictures and I dug up this aerial view of Microsoft campus, which is centered on Building 33, although it's not super-obvious where it is unless you know what to look for (if you move the mouse over the image, you are looking for latitude 47.6428, longitude -122.126). RedWest is just at the top to the immediate left of the highway, the Original 6 buildings are just south of the EBC. Building 1, where I had my first Microsoft office, is latitude 47.6412, longitude -122.1256.

Posted by AdamBa at 06:32 PM | Comments (1) | TrackBack

December 10, 2004

Cars Vs. Software

There's a meme going around about "If Cars Were Like Microsoft Windows"...there's one version here and another one here. Basically they'd crash all the time, you'd get annual fees, etc.

The counterargument is that if cars had grown in functionality the way software had, they would get 500 miles to the gallon, cost $100, etc. (actually I think that may have been the original argument; the other stuff is the counterargument).

Both of these contain some truth. But I'll tell you one thing about "If Microsoft Made Cars" -- you would have a lot better control over accessory power. Sometimes I sit around and try to imagine automotive engineers who are thinking about the headlights on a car..."Hey Bob, if the customer leaves their lights on and turns the engine off, what do you think they want?" "Gee Joe, I bet they are trying to drain their battery so they get stranded" "I think you're right, Bob" "OK Joe, let's design it that way".

It really amazes me to see cars with all this fancy timed lighting, where the interior lights stay on for a minute after the engine is stopped, then gradually fade out...and they still will keep the headlights on until the battery dies.

Anyway, I was reading the Consumer Reports review of the Chrysler Bling-o-matic 300, and they showed a picture of a configuration screen, where it actually let you configure things like how long the accessory power stayed on after you turned the engine off. So maybe, just maybe, it does something intelligent with the lights. Hallelujah!!

Posted by AdamBa at 09:51 PM | Comments (3) | TrackBack

Running as Non-Admin, Day 10

OK, the non-admin experiment is doing so well I really don't need to blog about it anymore.

Hit one snag the other day. When I download stuff off the web (like .exe installers) I usually save it in C:\. I tried and I didn't have permissions in C:\. Turns out it was owned by the Administrators group, which I was no longer a member of, and random authenticated users didn't have write permission (they did have read). The same was true for the various system directories.

So I brought up Internet Explorer running as local Administrator and tried to modify the ACL on C:\. Except the UI doesn't really show it as C:\, it shows it as "Local Disk (C:)". And no changes to the ACL actually take effect -- it lets you make the changes in the UI, but choosing Apply doesn't really change them.

I tried other directories and it works, and I tried in regular Explorer (not IE) and it behaves the same way, so I'm not sure what is up.

Modifying ACLs is a tricky thing to specify from the command-line due to their complexity. I could probably do it with cacls.exe, but there are risks -- like the sun going supernova before I figure out how to make it work. Monad has get-acl and set-acl cmdlets, but they return/consume a .Net FileSecurity object which you would then need to use methods to crack open and modify -- Monad would allow it, but again it would be tricky to figure out exactly how.

So instead, I just put the file in c:\temp, and it all works. Probably better anyway, but if anyone knows how to use the UI to set the ACL on the root directory of a disk, I'm interested.

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

December 08, 2004

Construction Toy at the Imagine Children's Muesum

A little while ago I discussed the Imagine Children's Museum and mentioned this cool construction toy they had downstairs. I couldn't remember the name, but some investigations reveals that the name is...VLON. No wait, actually it's Maxamec. The website has some pictures if you want to look, but you can't buy it online. It's sold through a network of distributors. The distributor for the Seattle area is named Patty Birchman, and if anyone asks I can tell you her email address (you can also buy it at the museum).

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

Amazon.com Ranking Details

MSDN blogger Sebby posted a link to Morris Rosenthal's detailed discussion of Amazon.com rankings and how the algorithm has changed recently. Basically to focus more on the current sell rate, without factoring in historical sales. The ranking system is not public; this is all reverse-engineered, I'm not sure how.

If you're an author you probably spend some time watching your Amazon ranking, so this page is quite interesting. I noticed that the rank for Proudly Serving My Corporate Masters recently dropped from the mid 100,000s to around 500,000. Meanwhile Find the Bug these days has a rank that roughly circles around 40,000, which according to Rosenthal indicates selling about 6 copies a week. It's an interesting read, although when I tried it, his "relaxation rank" thing didn't work (I got the same rank as the main page).

He mentions "rank checking" services. WTF? So I Googled "Amazon rank checking" and found -- besides a bunch of authors saying "My name is Joe and I check my Amazon rank all the time" -- at least two sites, AmazonScan (which seems to be down right now) and the Books & Writers site. In both cases you subscribe and then it tracks your titles for you.

Another Amazon factoid: The "Better Together" section, where it suggests you buy one book with another, can actually be a sponsored association, where you pick another book that you want yours offered with. It's called BXGY (for Buy X, Get Y) and there's an FAQ about it. Amazon also creates BXGY links on its own, although the paid ones override those.

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

December 06, 2004

Decade of Diapers

There was snow on the ground when I woke up on December 6, 1994. I drove to building 18, where the Consumer group was, and returned a game I had checked out of their software library. Then I went to my office, but I felt that more important things were going on elsewhere. Early in the afternoon I went with my wife to the obstetrician, who confirmed that she was in labor. And at 11:03 pm, our son was born.

From that moment until a month ago, we always had at least one child under the age of 3 (Microsoft interviewing question: what is the minimum number of children we could have?). Since 3 is the "age of reason" for young children (all the warnings about toys with small parts apply to 36 months or younger), we are now free to scatter marbles all over the floor of our house. We actually had a vague notion that we could wrap up potty training on our youngest by today, thus making it an exact ten years of diapers, but as with most ideas about potty training, it didn't happen. Ah well. They still get to go to college.

It's been quite a ten years. Beyond the ever-growing family, there's been 2 houses, 4 cars, 2 stints at Microsoft in 5 different offices, 13 months in Montreal, 2 books...a good time, I hope, was had by all.

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

Running as Non-Admin, Day 6

Non-admin has been working so well on my main desktop, I decided to switch my laptop over too.

Things worked fine, as they did on my desktop machine. But when I logged on as Administrator to remove my domain account from the Administrators group, I had a message on the taskbar telling me that the system could not find a certificate to log me on to the wireless network.

Microsoft has a wireless network on campus, and you need to obtain a certificate to be able to access it. You have to be connect to the physical (meaning non-wireless -- what do you call that? A land line?) network to get the certificate. I hadn't realized that the certificate was actually tied to the account you logged in as, but evidently it was. In fact some testing confirmed that if you login as an account that does have a wireless certificate, and then log on as an account that does not, you have wireless network connectivity for about 30 seconds while it figures this out, and then it cuts you off.

I imagined some future day where I would be on the wireless network and needing to do something as local Administrator, but also need to get on the wireless network. One example would be briefly adding my domain account back to the Administrators group. To do this in the UI, you have to log off, log back on as Administrator, and then add your domain account to the Administrators group, which requires browsing the domain, which you couldn't do if you lost your wireless connectivity when you logged on as Administrator.

(I will interrupt myself at this point to mention that Aaron Margosis's excellent MakeMeAdmin script solves this problem, by allowing you to temporarily add your domain account to the Administrators group without a) logging on as Administrator or b) using the UI. This is basically all you need, since once your local account is administrator you have no need to actually log on as local Administrator. But there seem to be some cases where you can't do the stuff you need from the command prompt, so I'll continue on my quest. It also occurs to me as I am writing this that I could stay logged on as my domain account, therefore preserving my wireless connectivity, and run the computer management MMC console as the local administrator. This would work, but MakeMeAdmin.cmd is much easier and simpler.)

Anyway, I decided I should get a wireless certificate for my laptop's Administrator account.

The first step was to go to the appropriate corporate network site. This requires my domain credentials. But when I right-click on Internet Explorer in the Start menu, it doesn't have "Run As" as an option. Aaron, once again, comes to the rescue, pointing out in his RunAs With Explorer post that although "Run As" is not available when you right-click on IE from the Start Menu OR the desktop shortcut, it IS available when you right-click on it from the Quick Launch area (the little icons just to the right of the Start button). I was browsing his site on my desktop, so I tested this there -- first I had to turn on Quick Launch from taskbar Properties -- and indeed that IE icon has the full set of options. Why does this one have it but the other two (Start menu and desktop) don't? HTFSIK!!! But I hate things like this where somebody at Microsoft obviously did some thinking about this, and either missed one case, or made a choice I disagree with.

Moving right along, I switch over to my laptop, which is logged in as Administrator, enable Quick Launch on the taskbar...and there's no IE icon. I have no idea why, and a quick spin through IE config shows no obvious way to turn it on.

Well, not a big deal, I can just do Aaron's other suggestion, which is to use runas.exe to run iexplore.exe (which is IE) as my domain account. So I type "runas.exe /user:[my domain account] iexplore.exe". Only problem is, it can't find iexplore.exe. I launch IE from the Start menu and confirm the process is indeed called iexplore.exe. I guess it's not in my path? I run "dir /s iexplore.exe" from c:\, and it comes up blank. Well, grand maux, grand remedes, as they say. So I fire up Monad and run "get-process iexplore.exe | pick Path" which 'fesses up that the file is in "\Program Files\Internet Explorer". But it's still hidden from dir, unless you use the /a:s switch. At least the hiding of the file from dir doesn't block you from running it, so now I can use runas.exe to get IE up as my domain account.

(Digression: Internet Explorer will prompt you for credentials on websites as needed, but as I browse the corporate network looking for the page to set up wireless certificates I get prompted about 5 times, so it's not very convenient unless I want IE to cache my domain password, which I really don't.)

Eventually I made it to the internal website where you set up your wireless certificate. It warns that if the user and machine account are not in the same domain it "may" not work, and also that you have to be local admin to set up the certificate (which is reasonable). You actually need two certificates, one for the computer and one for the user (I presumably have the computer one but don't have the user one for the local Administrator account).

It turns out that domain accounts are set for Auto Enrollment, meaning when you join the computer to a domain, it automatically obtains client and computer certificates. This also means that the case of trying to add a user certificate is unusual...but nonetheless the instructions are excellent, with screen shots of every dialog box. Score one for Microsoft IT.

SADLY when I get down to the end of things, I can't add a certificate for the local Administrator account. The specific error is inability to browse the Active Directory, but I don't know if this is just a bump in the road that could be overcome if I knew how, or a by-design feature whose effect (preventing you from getting a wireless certificate for a non-domain account) is actually intentional.

So I can't use the wireless net as local Administrator...luckily, with clever stuff like MakeMeAdmin.cmd, I shouldn't ever have to. Unfortunately the same could not necessarily be said for Joe Random User.

Posted by AdamBa at 01:21 PM | Comments (4) | TrackBack

December 04, 2004

Memo to Washington State Democrats -- Give it Up!

The Washington Democratic Party has ponied up $700,000 to pay for a hand recount of all votes in Washington state. This money came from various sources, including John Kerry, who must have money left over that he was planning to spend on lawyers for his election.

I'm as blue as they come, but this is completely lame. First of all, why is the hand count more accurate? I picture some old guy sitting there saying "872,645...872,646...872,647..." Perhaps a bit of an exaggeration, but here's a couple of quotes from the article: "State elections information manager Paul Miller said that, alone, hand counts are likely less accurate." "Logan will do everything possible to make an accurate hand count, though he thinks manual counts are intrinsically less accurate, spokeswoman Egan said."

The original recount was more accurate because ballots that failed the machine scan were examined to see if the voter's intent was clear, and a substitute ballot was run through. But how is a hand recound any more accurate than that?

The interesting thing here is that a) the question "How many people voted for each candidate?" does have a definite single answer, and b) that answer is, as far as I can tell, completely impossible to determine. You could count ten times and you would get ten different answers. It's like trying to determine what color dinosaurs were. If you assume dinosaurs did exist, they had to be some color. And people can make educated guesses about what color they were, based on what we know about plants that existed then and planetary temperatures and surviving birds and lizards and whatnot. But in the end there is no way to really know what color dinosaurs were.

Anyway, try to imagine a scenario where the Democrats actually win the hand recount. How would people feel about the validity of elections then? Is this really worth it? Plus Democrats should keep in mind they they got lucky in 1996 and 2000 when the Republicans threw up unelectable candidates, allowing Gary Locke to win two terms as governor. Let the Republicans have one.

Sure, it's a bummer when your candidate loses by 42 votes. If 22 people had changed sides, you would have won. I'm sure at least 43 people forgot to vote, or didn't vote because their kids were sick, or couldn't find their polling place, or were unexpectedly out of town, or whatever. I'm sure at least 43 votes were just out-and-out paid for. But such is life!!

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

December 02, 2004

Running as Non-Admin, Day 4

An uneventful day for Adam the non-admin. No news is good news in this case. I installed a new build of Monad and it ran fine. "Installing" Monad at this point just means copying a directory over. Or I could build the whole project in about ten minutes.

The internal builds of Monad just recently gained the ability to directly refer to UNC paths from the command like (e.g. "dir \\server\share"). It's a complicated story why it didn't used to work...anyway I was testing this by doing "dir \\mymachine\c$" and it was failing. Oh right, I'm not admin on \\mymachine, so I can't see the c$ share.

I should point out Aaron Margosis's blog. The subtitle says it all: "The Non-Admin blog - running with least privilege on the desktop." It's pretty sparse timewise, but it has some great information.

Posted by AdamBa at 08:53 PM | Comments (1) | TrackBack

December 01, 2004

Running as Non-Admin, Day 2/3

A few more adventures running as non-admin. I had a beta of Whidbey (.Net 2.0) on my machine, and when I went to uninstall it, it said I had to be admininstrator to run setup. OK, that's reasonable. I figured I could just fire up an instance of "Add/Remove Programs" that ran as the local Administrator account.

Unfortunately I could not, because Control Panel is a "special" shortcut that doesn't let you set itself to run as a specific user. Next!

To make a user an administrator, I right-click on "My Computer" and select "Manage", which brings up MMC in the computer management console. Since I figured I might occasionally need to make my domain account admin again (I had installed Whidbey under my domain account when it was admin; I figured it was safest to uninstall it from the same situation, rather than uninstalling it when I was logged on as local administrator), I wanted to create a shortcut to that console that ran as local administrator -- that way I would not have to log out, log on as local Administrator, and then log back on as the domain account.

MMC is just an app, but the "My Computer" element on the Start menu is also magic in some way, in that you can't easily figure out what the "Manage" menu item really links to. And when I run mmc.exe directly, it gives me a generic empty console. Luckily, if I click on the "Console" menu, it brings up a "recently used" list that included compmgmt.msc, which is the computer management console. So I manually created a shortcut to "mmc compmgmt.msc", and on THAT I was able to set it up to run as local Administrator.

Other than that, it worked. I could now use that shortcut to make my domain account admin without logging on as local Administrator (I still had to log off and on to have the change take effect, since once you are logged on your token doesn't change privilege (that's probably not QUITE accurate)).

There was one funny glitch when I ran MMC as an admin domain account and changed that account itself to non-admin -- it made the change, but then got an error trying to save it. I guess this is because the file/registry/whatever permissions are re-checked at that point. Actually it's a little strange. At the moment when I do the write to commit the change of the account being non-admin, I am still admin. So it should work. Is it failing doing a second write? Yet when it fails I am still admin, not half-admin. I think what probably happens is there is an explicit check for exactly this case -- it's the kind of thing a tester would think of checking -- and it fails intentionally and backs out cleanly.

But things mostly worked well. For example when I ran as local Administrator and had to browse Active Directory to find my domain account (so I could add it as admin), it correctly prompted me for an account that had privilege to browse.

Posted by AdamBa at 07:24 PM | Comments (12) | TrackBack

Windows Server Division Gets Jiggy

The Windows Server Division -- my division -- has a page where you can offer feedback. You can all astro-turf this page and say Microsoft needs a great command line in Windows Server. Of course the first item doesn't even have this as one of the potential topic areas. You would have to put it under "I have a visionary idea for the future". Who knew doing something Unix did 30 years ago was visionary.

Make sure you put that you have 12,500+ PCs and 500+ servers and Linux as the main OS. Then click on "Enter Additional Feedback" and write "I've got $1 billion sitting here and I'm lookin' to buy me some server OS technology!"

Whoops, I was playing with the form to see what clicking on "Enter Additional Feedback" did if you actually entered data. Turns out the first thing it does is submit the first page of feedback! Ignore that one, guys (where I suggest that Windows Server should spit dollar bills out the floppy drive and find my lunch if I lose it).

Seriously though, do use this page to submit feedback. Microsoft is VERY concerned with connecting with customers right now. Meaning: everyone has review goals about this. Someone will read what you write! This is a win-win for everyone.

Meanwhile, Bob Muglia, Imperial Head Bonbon and Grand Jujube of the Windows Server Division, sent email today about "Connecting With Our Community" and one of the things that Bob is going to do is start a blog. And he also recommends that employees should communicate with customers directly "through newsgroups, online chats, webcasts, blogs, or the EEC". OK! Does this mean I can blog from work?

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