When I travel, I tend to bring a lot of interesting gear along with me, and much of that gear is designed to support my other gear. I never know what I might need, so I plan for the worst and try to bring a little bit of everything. For example, I have various chargers for phones/tablets/notebooks, etc., plus a variety of USB/Network cables and adapters, and when I'm travelling overseas I bring adapters for international electrical outlets.
However, I have often found myself at a loss for power outlets in various airports, so last year I invested in an Indiegogo campaign to support a device which I thought needed to be brought to the market: Omnicharge. While it wasn't cheap, it promised 2 fast-charging USB ports and an actual AC/DC power outlet. And I must admit, the prospect of having a way to recharge my laptop and other devices was rather appealing.
During the Indiegogo campaign, I pledged the extra cash for the Omnicharge Pro (Omni 20), which boasts 20400mAh with a maximum output of 100W. The campaign was successfully funded at 4,257% of its original goal, (with a grand total of $3,185,869 pledged), so I guess that I wasn't the only traveller who thought this was an amazing device to add to their "go bag."
I received my Omnicharge a couple months ago, and I have had a chance to travel with it a few times. So far, it has exceeded my expectations. I have been stranded with a dying laptop and no AC power outlet on more than one occasion, and the Omnicharge has rescued my laptop each time. The Omnicharge's screen and menus are easy-to-navigate, and it completely charges my Microsoft Surface Book's drained batteries in an hour (while I am still using it).
Now that the Indiegogo campaign has long-since ended and backers have received their "early bird" releases, you can now purchase one of these devices through Amazon at http://amzn.to/2nnZgrw.
For more in-depth information about the Omnicharge, see the following video-based overview on YouTube:
What a great way to start my day. I just received a call on my work phone from an anonymous number where a guy with a thick accent on the other end of the line began his pitch by claiming, "This is Windows Technical Support. I am calling you today because we have been receiving a bunch of messages from your computer which are telling us that..."
Hehe... seriously? This clueless dude had no idea he was dealing with a Microsoft employee. But then again, I had a busy day planned, so I had no time for squabbling.
I quickly cut him off and said, "Look, I can save us both a bunch of time. Do you know who I work for?"
The would-be con man was immediately taken aback and momentarily at a loss for words, but he managed to eke out a hesitant "No" as a reply.
I continued by saying, "I work for Microsoft."
The scammer attempted to regain his composure and started to reply with, "Oh, then you must know..."
I cut him off again and I asserted, "Yes, I do know. I have worked for Microsoft for over 20 years, and I know that Microsoft does not call customers like you are doing. You are a liar. And what you're doing is illegal."
Predator had turned to prey, and the hapless dolt on the opposite end of the phone began to mumble, "Honestly, sir, I... uh..."
And then I heard nothing but dial tone.
Yup, that was a great way to start my day.
I ran into an interesting problem the other day which warranted some investigation: I was replacing the computer which my dad uses for Windows Media Center, (which he uses as his DVR and to watch movies), and he had an elaborate recording schedule set up for all of his favorite shows and wish lists. The problem for me - as his IT guy - was to figure out how to migrate his recording schedule from his old computer to his new computer, and as it turns out - there was already a command line solution from Microsoft which was pretty easy to use.
The tool in question is called loadmxf.exe, and you can find out more about that utility in the Windows Media Center Guide Listings Format article on MSDN.
That being said, here are the steps to export your recording schedules from one Windows Media Center computer and import them into a new Windows Media Center computer.
On Your Old WMC Computer:
- In Windows Explorer, navigate to the following folder:
- Find the most recent
- Find the
- Copy the latest
"yyyymmdd_hhmmss" file to a share or flash drive
"yyyymmdd_hhmmss" file is an XML file which contains your recording schedule, and you can find detailed information about the data in the file in the Windows Media Center Guide Listings Format article which I mentioned earlier.
On Your New WMC Computer:
"yyyymmdd_hhmmss" file from earlier to the following folder:
- Open a command prompt and type:
"%windir%\ehome\loadmxf.exe" -i "%ProgramData%\Microsoft\eHome\mcepgX-X\backup\recordings\yyyymmdd_hhmmss"
- Once completed, the tool will display the import status
- Open the Windows Media Center application
- All of your scheduled recordings should be displayed in Windows Media Center, however - they will not work until you open each scheduled recording and resave it without making any changes
I read an article the other day about the "tech consultants" who work for Hollywood. (Sorry, I don't remember where I read the original article... and at the moment I don't feel like looking for it, either.)
Anyway, these consultants are acutely aware of the fact that real hacking does not make for gripping Hollywood-style action, so directors and assorted other creative supervisors ask for scenes which make for better movies. These requests - of course - lead to scenes which are so far over the top ridiculous that you have to completely dismiss reality if you actually know anything about computers. That being said, the article also mentioned that since these same consultants are aware that their scenes cannot be realistic, there is something of a competition between consultants to see who can make their scenes the least-plausible. (My favorite is the guy who used Excel and a MacBook to diffuse a nuclear bomb.)
With that in mind, a subreddit has emerged as a repository of all of these utterly ludicrous technology fails, and I have to admit - I'm hooked and I cannot stop laughing...
I ran into an interesting predicament: I couldn't get the right color adjustment settings to work in my video editor to correct some underwater videos from a scuba diving trip. After much trial and error, I came up with an alternative method: I have been able to successfully edit underwater photos to restore their color, so I used FFMPEG to export all of the frames from the source video as individual images, then I used a script to automate my photo editor to batch process all of the images, then I used FFMPEG to reassemble the finished results into a new MP4 file.
The following video of a Goliath Triggerfish in Bora Bora shows a before and after of what that looks like. Overall, I think the results are promising, albeit via a weird and somewhat time-consuming hack.
Exporting Videos as Images with FFMPEG
Here is the basic syntax for automating FFMPEG to export the individual frames:
ffmpeg.exe -i "input.mp4" -r 60 -s hd1080 "C:\path\%6d.png"
Where the following items are defined:
|-i "input.mp4" ||specifies the source MP4 file |
|-r 60 ||specifies the frame rate for the video at 60fps |
|-s hd1080 ||specifies 1920x1080 resolution (there are others) |
|"C:\path\%6d.png" ||specifies the directory for storing the images, and specifies PNG images with file names which are numerically sequenced with a width of 6 digits (e.g. 000000.png to 999999.png) |
Combining Images as a Video with FFMPEG
Here is the basic syntax for automating FFMPEG to combine the individual frames back into an MP4 file:
ffmpeg.exe -framerate 60 -i "C:\path\%6d.png" -c:v libx264 -f mp4 -pix_fmt yuv420p "output.mp4"
Where the following items are defined:
|-framerate 60 ||specifies the frame rate for the output video at 60fps (note that specifying a different framerate than you used for exporting could be used to alter the playback speed of the final video) |
|-i "C:\path\%6d.png" ||specifies the directory where the images are stored, and specifies PNG images with file names which are numerically sequenced with a width of 6 digits (e.g. 000000.png to 999999.png) |
|-c:v libx264 ||specifies the H.264 codec |
|-f mp4 ||specifies an MP4 file |
|-pix_fmt yuv420p ||specifies the pixel format, which could also specify "rgb24" instead of "yuv420p" |
|"output.mp4" ||specifies the final MP4 file |
I just saw this t-shirt and I absolutely love it...
I cannot count the number of times that I have had to explain this simple concept to people who think that something coincidental was the driving force behind a problem which has developed with the technology that they use in their daily lives. For example, imagine the following statement: "I just closed the door and my television no longer works." Those two events obviously sound like completely unrelated events, and yet I have had to answer questions from dozens of people who honestly believe that one inapplicable event like this caused the other unconnected failure.
Oh sure, there are concepts like the Butterfly Effect to consider, but by and large those do not apply in your average, day-to-day situation. More often than not, the cause for most of the technology problems which I help people troubleshoot have nothing to do with what they believe to be the cause. (And believe me - I have heard some amazing theories from various people about the sources of their technological maladies.) My favorite story along these lines is the apocryphal My Car Does Not Like Vanilla Ice Cream story, which I honestly wish was true.
Nevertheless, as a piece of unsolicited advice - when something has gone wrong, it is often best to analyze the failure for what it is instead of trying to analyze what you believe is the origin of your problems.
One of the four computer monitors on my desk has died and I'm left thinking, "Well, darn. How am I going to get any work done?"
(Note: They're actually flat-screen monitors; the CRTs are from Visio.)
Following Google's acquisition of Nik Software, Google has decided to make it's suite of plugins available for free. With that in mind, I thought that I would post a simple "How-To" guide for using the Nik plugins for anyone who is using Corel's PaintShop Pro instead of Adobe's hideously-priced Photoshop software. (Note that Photoshop is really cool, of course - it's just priced and/or licensed badly.)
In any event, here are the steps to use the Nik Collection plugins with Corel's PaintShop Pro on a Windows computer:
- Download the Nik Collection from https://www.google.com/nikcollection/
- Install the collection into the default folder; this should be something like the following path:
- Open a Windows command prompt
- Change directory to the plugins folder for the version of PaintShop which you have installed; for example:
cd /d "%ProgramFiles%\Corel\Corel PaintShop Pro X8 (64-bit)\PlugIns\EN"
- Create a directory junction to the Nik Collection:
mklink /j "Nik Collection" "%ProgramFiles%\Google\Nik Collection"
- When you next open PaintShop, the Nik Collection will show up under Effects->Plugins:
That's all it takes. Have fun!
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:
Yeah, it's a really simple script - but it did the trick. ;-)
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.)
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 which 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.
- 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.)
- 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 which 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 which is harder for the customer, you have just failed your customer. (Sigh.)
- 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 which 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 which 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 which 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? )
- 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 which go all the back to DOS, 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.
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. )
- "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 which 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 which 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 which 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?
- 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:
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.microsoftbob.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 which was entirely different than what I had proposed, so I no longer wanted to work on the team which 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.) 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.
- I reported to WonY when I was an IIS PM, and he sat down the hall from me. Won had a laugh which 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. 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 which have exited 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 which 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 which 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) which 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? )
That about wraps it up for me. So if anyone is still reading by now, here is my statement which 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?