Election 2016

I've decided that I'm voting for this guy this year...

Geddy for President

Don't put him down as arrogant. (Unlike some other candidates,)

 

PS - Yeah, sure he's Canadian, but since when has a lack of citizenship slowed down anyone's chances for candidacy? Smile

Geddy Lee or Jacques Offenbach

After careful consideration, I have decided that Geddy Lee of Rush is actually a time traveling musical genius who was also posing as the nineteenth century composer Jacques Offenbach... That would explain why Rush named one of their last tours "Time Machine" and their plethora of science fiction lyrics over the years...

Geddy Lee meets Jacques Offenbach
Geddy Lee or Jacques Offenbach?
You decide.

Windows XP... Really?

This was an advertisement on Facebook today - seriously? Asking people to "upgrade" to Windows XP? That's like asking smart phone users to upgrade to rotary dial.

Upgrade To Windows XP

Adventures With Proxy Servers

One of the things about being an ubergeek is setting up a full Active Directory Domain to manage all of the computers in my house and running my own proxy server to provide Internet access for our home network. I am currently using Microsoft's Threat Management Gateway (TMG), and before that I was using Microsoft's Internet Security and Acceleration (ISA) Server - both of which have allowed me to do some fun things.

For example, for one whole year I intercepted all requests for the Google website and sent them to a website which I had created that looked and acted like Google but used the Bing API to provide the results. (No one could tell the difference, and I eventually wrote a blog about my experiment called Fun with Search Engines.)

At other times I would intercept my kids' Internet requests and send them to a "Your Internet is Turned Off" page when they failed to complete their chores; this was often met with much grumbling on their part. (Although one of my daughters learned how to pirate a neighbor's unsecured WiFi connection, and I was too proud of her ingenuity to get upset at her for skirting around the house rules.)

Running my own proxy server was good for accountability, too: I created a program which crawled all of the proxy server logs and created detailed reports that were dumped in a public share so everyone in the family could see where everyone else was browsing. (I'm a parent - so there is no such thing as "Private Browsing" in my house.)

That being said, I recently ran into a situation where I felt it necessary to interfere with the Internet for a few days. I had seen too many people post spoilers on Facebook about who died on The Walking Dead, and my wife saw too many spoilers about what was happening on Downton Abbey. With that in mind, when Star Wars VII  was hitting the theaters, I decided that I needed to block Facebook for a few days.

But I couldn't just "block" Facebook, I needed to have fun with it... so I did this - I sent all requests for Facebook to the following page until my wife and I had a chance to see Star Wars:

http://www.geekybob.com/star-wars-warning.htm

Yeah, it's a really simple script - but it did the trick. ;-)

Too Cool for School

I just re-discovered this story: my son was a senior in high school when he flew to San Francisco on a choir trip. And even though his flight was leaving Seattle around the same time as a flight which I was taking somewhere else, he didn't want to ride to the airport with me. His exact words were, "I'd rather go with people that I can talk to." (This is a teenage way of saying that I was just not cool enough to be part of his entourage.)

However, after I had arrived at the airport and was calmly waiting for my flight to depart, my wife called to tell me that our son realized when he arrived at the airport that he had left his boarding pass and all of his money for the trip at home. I called my son, who informed me that he had already picked up a new boarding pass from the airline, but he didn't have a way to get the money from home. Feeling sorry for him and ignoring his earlier diss about the ride, I agreed to drop by an ATM and pick up some cash to give my son at his gate, which was in a different terminal of the SEATAC airport.

After finding the nearest ATM and withdrawing the requisite funds, I headed off to catch the airport tram to the terminal where my son was waiting for me. I was already en-route to his location when a thought suddenly dawned on me: why in the world was I hand-carrying the cash all the way to his gate, when he was the one who had forgotten everything?

Once that notion had registered completely in my mind, I called my son and told him to walk to the tram station in his terminal and meet me there. As the tram pulled into the stop near his gate, I saw my son and one of his friends waiting patiently for me to arrive. I hopped off the tram, gave my son the cash, took a quick photo of him, and then hopped back on the tram before the doors were able to close - mission accomplished.

12647463_10207440948434907_4001745846293568425_n

In the end I may have saved the day, but I still wasn't cool enough to give my son a ride to the airport.

Some Thoughts About My 20th Anniversary At Microsoft

At the risk of gratuitous self-aggrandizement - today is my actual 20th anniversary. My 20th anniversary crystal arrived the other day, so I added to the collection on a bookcase in my office. (Although to be honest, they didn't hand out anniversary crystals when I reached my 5th and 10th anniversaries, so I had to buy those after the fact.)

20thAnniversaryCrystal

Things I'm Most-Proud Of...

Disclaimer: Yeah, I realize that I'm definitely bragging here; hence why I labeled this section "Things I'm Most-Proud Of."

  • IIS Express - I came up with the idea for IIS Express one afternoon after writing an SDK sample where I showed that it was possible to create a mini version of IIS that could be used for self-hosting applications and debugging. After I proved that it could work, I faced a huge uphill battle trying to sell the idea for a miniature version of IIS to my bosses, (e.g. ThomasD, VijayS, Mai-lanB, BillS, etc.) Once I had convinced all of them, then I had to convince the Visual Studio team to dump Cassini in favor of IIS Express. (That was no small task, believe me.) Shortly after I had everyone on board, Vijay took over the project while I changed teams for the next year, and Vijay grew my rather simple idea into a full-fledged application. (Kudos to Vijay - I had more modest plans originally.) A few years later I changed teams again and I took over IIS Express, where I added some more cool features to it. Now IIS Express ships everywhere, so it's pretty cool to see how far you can take an SDK sample. Smile
  • Being a PM on the IIS team - This was a dream come true for me. Oh sure, that dream was more of a nightmare in the days before shipping a product, but being a PM for IIS was pretty much everything I thought it would be. By way of nostalgia, here's what the IIS Product team looked like in 2009. (Note: I took the picture, so I'm not in the picture. I prefer it that way.)
    IISTEAM2009
  • RFC 7151 - It took me eight years to get this Internet Standard published, and I wrote most of it as part of my IIS PM work. As I have mentioned before, I get to honestly say that I helped create part of the Internet. (It's a very small part of the Internet, but I still get bragging rights.)
  • Technical Writing - Between my ten years in product support and my years as a writer in this organization, I have written thousands of how-to articles, samples, walkthroughs, blogs, reference topics, and KB articles. It has never ceased to amaze me how much of what I have written has been used by customers; I love seeing code that I wrote in an article show up in customers' blogs or forum posts. It's especially amusing to me when they're passing it off as their code even though it's 100% copied from my samples. (Hey, I always can tell.) If I combined every article that I have written during my tenure at Microsoft, I could create a whole series of books. (Although that would be a really boring books series.)
  • FTP Service for IIS 7 & IIS 8 - There's lots of good stuff in there; our feature team discarded the old FTP service (which no one wanted to use) and we created a first-class service from scratch, for which we received a lot of positive feedback.
  • Being a Customer Advocate - I started in technical support, where I spent 10 years speaking with customers, and I have always hosted my own websites and run my own servers so that I could face many of their same frustrations. For instance, I run a full Windows domain in my house, where family members have individual accounts, and all Internet access goes through my proxy server, and I could use group policy to set restrictions for my kids when they were younger, etc. By using Microsoft's products as a customer, I made countless discoveries from a customer-point-of-view. But that being said, some of the people with whom I have had to work still don't understand their customers; I ran into that situation a lot when I was a PM. For example, when you make something easier for you that is harder for the customer, you have just failed your customer. (Sigh.Sad smile)
  • WebDAV for IIS 7 & IIS 8 - I loved this technology and I was a huge advocate for it. I hated the old version of WebDAV on IIS 6 and earlier, so when I was a PM on the IIS team I helped create a version from scratch that customers would like. Most people don't realize that Windows ships both a WebDAV service and WebDAV client, so you can map dives and share files over HTTP thanks to WebDAV.
  • MetaEdit - This utility was like Regedit for IIS settings and shipped with the Windows Resource Kits. This was a very popular tool in its day, and it was cool to see classes being taught at ATECs for something that I had created. Eventually MetaEdit was replaced by another tool, and IIS 7 made both tools obsolete, but in its day MetaEdit reigned supreme.
  • FrontPage Server Extensions (FPSE) - Customers both loved and hated FPSE, and I knew FPSE inside and out from my days in technical support; for years I was arguably the most-knowledgeable person about FPSE the company. (No exaggeration.) So when I became a PM for IIS, I was able to get them to work in all sorts of scenarios where they weren't designed to work, which helped to create new versions of FPSE that resolved thousands of customer problems for Visual Studio and other Enterprise-level customers. (Seriously - the lack of FPSE was an adoption blocker for thousands of Windows Server 2008 customers.) Then a few years later I got to be the PM who finally killed FPSE as far as Microsoft was concerned. (Or as one customer gratefully remarked as he reached to shake my hand, "So you're the guy who's driving the stake through the heart of FPSE!")

Embarrassing Microsoft Moments...

Here is a collection of amusing stories with which I have been involved over the years:

  • Due to a simple programming error, (which wasn't my error - I swear), one of my servers managed to register "localhost" in the company's name servers, and it started responding to all TCP/IP requests for "localhost" across the entire network. Within a few hours, this mishap had taken down several mission-critical services across the company, so my office was kicked off the network and I received a call from a corporate president asking me to never turn my server back on. (Note - I found the error and fixed it. But I swear it was in someone else's code. Really. Why would I lie about something like that? Smile)
  • I mentioned MetaEdit earlier, and one of my greatest embarrassments was when I famously messed up the version checking dialog box.
  • When I designed the extensibility APIs for the IIS 7 FTP service, I realized later that should have added an extra parameter to one of the method prototypes. I couldn't get approval to change the method in subsequent versions of the FTP service, so I have to live with that for the rest of my life. (Darn. Darn. Darn.)
  • I didn't cause this error, but I helped diagnose it back in my technical support days: Windows has several built-in reserved filenames that all go back to the DOS days, such as PRN, CON, NUL, LPT1, COM2, etc. Back in the earliest days of IIS, most companies only had one server for everything - domain, web server, proxy server, file shares, print sharing, etc. So you could connect to the FTP service and start uploading a text file filled with nothing but page feed commands while using a destination filename of LPT1; if the company had a printer attached to their server, it would spit out all the paper and then pop up a dialog message asking the user to reload the printer. However, this was a modal dialog box, so IIS would hang until the user had completed the task. We called this the "Denial of Paper" attack. Smile

Weird Microsoft Traditions...

We have done some silly things over the years at Microsoft; some of these traditions are still in practice, while others are long-gone. For example:

  • Togas - Believe it or not, employees used to wear togas to work whenever our stock split. (Yeah, it's been years since that happened. Sad smile)
  • "Fire Me" Emails - Locking one's workstation used to be policed by the community, so if you found someone's desktop computer unlocked, you were supposed to send an email to the team that contained the words "FIRE MY LAME @$$!!!" (Eventually this practice was heavily frowned upon.)
  • April Fool's Websites - Okay, this is mostly just me, but over the years I have created several internal-only websites for April Fool's Day - for example:
    • People for the Ethical Treatment of Software (PETS) - this was a take off on PETA that was advocating for the abolition of the cruel conditions under which software is tested
    • Buugle - It looked and acted like Google, but it wasn't...
    • Technical Support Trading Cards - this website looked like baseball cards, but listed off all the stats for technical support employees, (e.g. SDFC = "Solution Delivered First Contact," MPI = "Minutes Per Incident," etc.)
    • Virtual Tech Lead - I created Virtual Tech Lead back when I was a Tech Lead in technical support, and I populated it with a bunch of innocuous statements that most Tech Leads often said. I sent it out to my team on April Fool's Day with the caveat that it was "90% as effective as a real Tech Lead," and it took off across the company's tech support divisions like wildfire. Pretty soon my poor internal-only webserver couldn't keep up with the web traffic so it rolled over and died; I had caused a denial-of-service on myself.
  • Office Pranks - We used to trash people's offices when they went on vacation. I realize that open space offices have put a dent in certain gags like filling an office with balloons, but how hard is it to wrap someone's desk in saran wrap? Smile
  • Anniversary Goodies - Usually people bring in one pound of M&M's for each year on their anniversary. Once I hit my 10-year anniversary I decided that 10 (or more) pounds of M&M's were simply too many for any team to eat, so I started bringing in rum cakes from the Caribbean. Since I work remotely I don't do that now, but my wife surprised me with 20 rum cakes on my desk this morning:
    20thAnniversaryRumCakes

A Few of the Hardest Things for Me at 20 Years...

  • The Demise of IIS - It has been difficult for me to watch IIS slowly get killed off as a product in an effort to encourage customers to host their websites on Azure. I started working with IIS in early 1996, so it's sad for me to see a product wither away and perish ignominiously after I have I spent thousands of hours designing, developing, and documenting it. But time and tide wait for no man, so the wheels of progress soldier on. However, if you want to see what IIS looked like way back in 1996, see http://www.geekybob.com/iis-legacy-screenshots/.
  • Kenny King - I was hired at Microsoft on the same day as Kenny; we were hired within the same hour, to be exact. We quickly became friends and we worked together for years; we bought houses down the street from each other in Texas where our kids grew up together and our wives were like sisters. Kenny was always a rock star with everything he did at Microsoft, and he should be here celebrating his 20th anniversary along with me, but sadly he passed away from cancer shortly before our 19th anniversary with the company.

A Few Manager Anecdotes...

I worked with some great first-level managers at Microsoft - too many to recall - and I worked with some great skip-level managers, too. That being said, here is a list with some of my all-time favorite first-level managers (many of whom are no longer with the company): NancyL, SibhonO, MicheleP, JayV, StaceyC, TerryM, SharonM, BillS, Mai-lanB, EricD, ThomasD, AndrewL, TomW, WonY, and of course - WadeP.

Here are a few small managerial anecdotes - I don't have stories about everyone, so anyone left off the list is not meant as a slight:

  • NancyL was my first manager at Microsoft, and she was on my interview loop when I was originally hired in Arizona. There had been 8,000 job applicants for 100 jobs, so after I was hired I naively asked Nancy why she wanted to hire me when there were so many great people to choose from, to which she replied, "You scared me; I was afraid that someone else would hire you and we would have to compete against you."
  • JayV was one of the best "Big Picture" managers with whom I ever worked; Jay could take a scenario and see how it applied to the company at every level. Yet Jay never lost touch with his individual team members; he would always grab two or three team members and head out to lunch where we'd talk about how things were going. Whenever I have been in a position of leadership during my time at Microsoft, I have actively tried to emulate several of Jay's great qualities.
  • StaceyC was one of my all-time favorite managers; I worked for Stacey on two different teams for a total of six years. Stacey was one of the best "people-persons" with whom I have worked. Even in the hardest of time she had a great attitude, and I watched her successfully manage several teams through some extremely traumatic times.
  • EricD had not had many direct reports when he became my manager, so he called me into his office one day and said, "Look, I'm the guy who makes sure that IIS ships, so I'm usually pretty difficult to work with. So I want you to be my guinea pig - I want to try not to be jerk for you." Despite the ominous sound of that proposal, Eric turned out to be a great manager.
  • JeffH was a really good guy who was in a really difficult position when I worked for him in Technical Support; I had pitched an idea for creating a specialty team of escalation engineers to several managers, and they liked my idea. However, once the team was created my original idea was quickly transformed into something that was entirely different than what I had proposed, so I no longer wanted to work on the team that I had just helped to create. Nevertheless, Jeff really needed the headcount, so he asked me to please stay on the team for six months in order to help get the team started - so I reluctantly agreed. In the end I worked on the team for a year and a half; I hated every minute of it, but I stayed because of Jeff. That was some good leadership on his part.
  • Mai-lanB doubled as my mentor at times; she gave me a lot of great advice on how to manage my career as a PM during our 1:1 meetings, which were often over lunch somewhere off campus. However, Mai-lan's primary weakness was that she was a workaholic like me, so she worried some of her direct reports because she would email them at any time during the day or night with a question. Many people thought they had to have an answer right then, so a lot of her reports spent some restless nights until they figured out that it was okay to answer the next day. But that being said, I also had an unpredictable schedule, so Mai-lan was amazed that I seemed to answer all of her emails 24 hours a day. She eventually asked if I ever slept, to which I replied, "Only when you're on vacation." (Perhaps it takes a workaholic to understand a workaholic.Smile) When Mai-lan's position was unexpectedly cut from the IIS team, she and I had found out immediately before we were scheduled to attend a team meeting, and when I sat next to her, I risked an HR violation by hugging her and saying, "I'm so sorry - I really liked working for you, and you will be sorely missed." Mai-lan simply cried as a response. Sad smile
  • I reported to WonY when I was an IIS PM, and he sat down the hall from me. Won had a laugh that was infectious; you could always tell whenever he had a meeting with someone because sooner or later something would make him laugh, and you could hear it everywhere in the building.
  • It would seem inappropriate to expound upon WadeP's great qualities since I currently report to him and we have a review meeting coming up soon. Smile So I'll just say that I have probably worked for Wade longer than any other manager, and the same can be said about most of Wade's reports. Any manager with a team of faithful, long-term employees and a zero attrition rate must be doing something right.

Windows Versions during my Tenure...

I thought it would be fun to take a look back at all the version of Windows that have existed during my time at Microsoft, with a few of my thoughts about each version. (Note: you should also see Windows turns 30: a visual history, which is a pretty amusing look back at the history of Windows.)

  • Windows 3.1 - Believe it or not, this OS was still widely-used when I was hired, and I had to take tech support calls for it. (How many of you ever knew that there was a 32-bit version of Win31? I did - and I talked customers through getting it up and working.) Win31 wasn't bad, and I knew all sorts of really cool tweaks for customizing ProgMan that were soon to be obsolete. But in its day it was great.
  • Windows NT 3.51 - This was the only viable Windows client and server product at the time that I was hired. Before I started at Microsoft, I was working in the IT department of a small college, and we had used WinNT351 for one of our servers. After I was hired by Microsoft I had to take tech support calls for WinNT351, which were an adventure. In terms of productivity, WinNT351 beat the crap out of Novell, which was far-too-cumbersome for most people, and that is why WinNT eventually took over the server market from Novell.
  • Windows 95 - This was released shortly before I was hired, and Win95 quickly dominated the home PC market. That said, I had a love/hate relationship with Win95; some things were great, others weren't quite where they needed to be. But the built-in networking was great, and it eventually supplanted every other PC-based peer-to-peer networking technology. (Anyone remember LANtastic? ARCnet? Of course not.)
  • Windows NT 4.0 - This was released shortly after I was hired - it was a great OS, and it had lots of stability (unlike its predecessor); both the client and server versions were fantastic. I earned my first MCSE certification on this OS.
  • Windows 98 - I loved this OS, and believe it or not I still run the Win98 core OS (non-GUI) on a legacy machine where I need pure DOS-level functionality for some old MIDI stuff that needs unrestricted physical access to drive hardware.
  • Windows NT Option Pack - This wasn't really a separate OS, but NTOP added amazing Internet-hosting features to Windows NT 4.0.
  • Windows ME - A lot of people hated this OS; I only put it on one computer, and I didn't have any problems with it, so I never understood what the griping was all about.
  • Windows 2000 - This was a good OS, both the client and server versions. That said, I never liked using Win2000 Pro for a desktop machine because it had crappy support for audio/video/MIDI processing, which was an intentional decision from the Windows product team. (Their argument was, "This is a business machine; watch videos and create music on your home PC." Of course, that decision alienated anyone who wanted to use Win2000 Pro as the OS on their home PC. It also helped Apple to take over the recording industry. I earned my second MCSE on this OS.
  • Windows XP - As everyone is well-aware, WinXP was a fantastic product; in many ways it was too amazing for its own good so millions of people still refuse to upgrade from it. WinXP was clearly one of the greatest operating systems ever created, although there is some funny irony here: Microsoft received a lot of bad press about WinXP when it was first released - some people didn't like having to upgrade their systems for a few of the new product requirements. (Of course, Apple users had always forced to do that for years.) In any event, when Vista and Win7 came along a few years later, they also received bad press from people who didn't like having to upgrade, which made me start ignoring early reviews of operating systems.
  • Windows Server 2003/R2 - This OS had some amazing security features, and certainly the best "Old School" version of IIS.
  • Windows Vista - This wasn't a bad OS, although it got lots of bad press because it required more video/memory resources than were typical for many legacy systems, so millions of users were forced to upgrade their systems if they wanted to use it. It never worked correctly on my wife's laptop, which was cause for many unhappy conversations in our house. (e.g. My Wife: "Why did you upgrade my computer to this OS? I hate Vista!")
  • Windows Server 2008/R2 - These were great server operating systems; lots of killer features, and amazing versions of a completely-redesigned IIS.
  • Windows 7 - This is still my favorite OS of all time; it was so amazing that during the beta time frame I reformatted every machine that I had (including my home PCs) and installed the Win7 beta. It was pretty, it was fast, and it did everything right (or so it seemed). Microsoft hit an amazing home run with this OS. One of the least-actualized features of Windows 7 was Windows Media Center (WMC), which should have taken off and dominated the home theater and HTPC markets, but whoever was in charge of that product did not follow through with the right people in the right places to make that happen. WMC on a Windows 7 computer is still the centerpiece of our home entertainment system; it's our DVR, video library, music player, etc.
  • Windows Server 2012/R2 - Once again, these were two great server operating systems, with amazing versions of IIS.
  • Windows 8 - I am almost embarrassed to admit this publicly, but I really wasn't fond of this OS, even though I tried very, very hard to like it. I could wax poetic about my reasons for this decision, but I'll just leave this as it stands.
  • Windows 8.1 - This OS fixed a few of the clunkers in Win8, but unfortunately Microsoft showed off additional fixes (like a replacement Start Menu) that were promised for a Win8.1 update, and that update never happened. The Windows product team decided to hold off and ship those features in Windows 10, and this was a seriously bad decision, for which I heard a great deal of end-user grumbling at Microsoft's expense. (Which may have been was well-deserved.)
  • Windows 10 - I upgraded a couple of computers to Win10 during the beta: one physical computer (which stayed on a particular stable build) and one virtual computer (which I updated when new customer previews were available). I've continued to run Win10 on a few computers since its release, and so far it's much better than the Windows 8 versions. Of course, we completely killed Windows Media Center in Win10, so I'm unhappy about that. (Time to look into running XBMC on a Raspberry Pi? Smile)

That about wraps it up for me. So if anyone is still reading by now, here is my statement that I have always used to summarize how I feel about working at Microsoft: "To me, working for Microsoft is like working for Santa Claus; we make all the coolest toys, and we get to play with them before anyone else."

With that in mind, who wouldn't want to spend 20 years working for Microsoft?

More 511th History: Meeting a British Sergeant Major

I saw the following sketch from Monty Python, and it reminded me of a story which I will relate in a moment. But first, take a quick look at the video:

Here's the story: several years ago, (more years than I would care to admit), I was sent to a remote British outpost somewhere in Europe to work with the Royal Air Force (RAF) for a few weeks. Although I was working with the RAF, the post was actually shared between the British Army and the RAF, so I saw plenty of people from both services during my tenure there.

The work that we were doing was somewhat secretive, so there were several security checkpoints through which everyone was required to pass in order to get to the building where work was done. This usually meant a lot of time standing in front of locked gates, looking up into a camera, saying your name into an intercom, and then waiting for some disembodied security guard to push a button to let you through to the next checkpoint.

One morning I was waiting at one of the gates when a Sergeant Major from the British Army stepped up beside me, and I swear he looked just like Michael Palin in the video that I shared - complete with dress uniform cap and a riding crop tucked under his arm.

I'm not quite sure how things work in the British military, but in the U.S. Army we were taught to render the "Greeting of the Day" to our superiors, so I stifled my urge to laugh as I snapped to a more formal position, and then I exclaimed, "Good Morning, Sergeant Major!" He made no reply, and his eyes barely flickered in my direction; somehow his expression managed to register no emotion or formal acknowledgement whatsoever.

But as the two of us continued our vigil outside the locked gate, his countenance slowly began to change. It was barely perceptible, but gradually the corners of his mouth began to turn downward, while at the same time his arm began to flex and the riding crop began to bow under the mounting tension. My silent companion was like spring which was steadily wound tighter and tighter, and sooner or later I knew that spring was going to break.

Eventually the buzzer sounded and the gate opened, after which the two of us parted ways as we headed off into our separate sections of the building. In a few minutes I was regaling my RAF colleagues with the tale of my awkward experience with the Sergeant Major, and there was plenty of laughter all around. But that being said, I was quietly certain that my RAF comrades-in-arms were surreptitiously rejoicing over the fact that they were not serving in that Army Sergeant Major's chain of command.