Bill Gates affect on my mood

Being a new employee at Microsoft leaves me at a bit of a disadvantage in weeks like this.  First, we hear that our “chief blogging officer”, Robert Scoble is leaving the company.  Today, it’s been announced that BillG will be stepping back his responsibilities at the companies once again.  It is not like this wasn’t expected, but it is a bit disheartening, none-the-less. 

Bill Gates has had a profound affect on my life.  I grew up in a poor town with family that worked VERY hard to provide for us, but by no means were we wealthy.  However, when I was writing code on my Atari 800XL in fifth grade, I told my mom that I would be working for Microsoft one day.  Since then, Bill Gates’ drive has inspired this poor kid from East Liverpool, OH to succeed.  No matter what life throws at you, who makes fun of you or attacks you with pies you can always come out on top.  Like BillG, I didn’t finish college — but unlike Mr. Gates, I quit because I ran out of money.  None-the-less, in my mind, I said “If Bill can succeed without a degree, so can I!”  Over the years, my life has thrown one curve ball after another at me.  I’ve had good times and bad. The one common factor in all those years has been Microsoft software;  I’ve made my career of it; I’ve based my life on it;  My house and my belt clip are embedded with it;  I’ve tied my success (if I can call it that) to it.  So with all of this said, it’s a deeply saddening experience to see the man who is responsible for getting it all started is now slowly backing out of his role here.

However…

If you talk to the larger percentage of Microsoft employees, most of us have had little to no interaction with Bill. Our software goes in and out the door much without his micro-management or interference.  How much of the Microsoft Office 2007 feature set was designed or coded by Mr. Gates? What drivers for Windows Vista do you think Bill had a part in creating?  My guess is, very little of our software is directly controlled by Bill.  Instead, he delegates those responsibilities as he sees fit.

I think it’s great that Bill gets to follow this path with his life. There is such an emphasis on giving at Microsoft. I’m proud to be part of a company that thinks about more than what goes on inside its own walls.  I, too, intend to do charity work full time at some point in my life. I think, one again, Bill is setting an example for my own life.  I obviously will not likely be able to do this to the same degree that Bill Gates is, but the example has been set and I admire the man.

Microsoft will go on making great software on and off the desktop for years to come and Bill is responsible for the spark that started this software industry off in such spectacular fashion. It’s time for someone else to take the torch and move on while Bill starts a new spark in charitable giving. If it’s possible for someone 11 levels under Mr Gates to say this, I’m proud of him for doing this and I can’t wait to see what he accomplishes with The Gates Foundation when he goes full time with it in 2008.

Good luck, Mr. Gates, and God Bless.

ASP.NET 1.1, IIS 6.0 and 64-bit Windows

A few days ago, one of the many distribution lists I belong to was presented with the following requests:

I’m trying to create a Web Service in Visual Studio .NET 2003 and am getting an error “Visual Studio .NET has detected that the specified Web server is not running ASP .NET version 1.1. You will be unable to run ASP .NET Web applications or services.”

The individual said that he had checked the script maps and everything seemed to be in order on the server.  They had installed and uninstalled the ASP.NET extensions several times using aspnet_regiis.exe.  After a few more communications the poster added:

(Potential complication: my machine is a 64-bit OS; does this change the equation?)

The answer is that running 64-bit Windows does have an affect on your ability to run ASP.NET 1.1 in IIS 6.  ASP.NET 1.1 only supports running in 32-bit mode.  Fortunately, IIS 6 on 64-bit Windows can run in either 64-bit mode or 32-bit mode.

The following steps to run IIS 6 in 32-bit mode can be found in our MSDN documentation:

  1. Click Start, click Run, type cmd, and then click OK.
  2. Type the following command to enable the 32-bit mode:

    cscript %SYSTEMDRIVE%inetpubadminscriptsadsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

  3. Type the following command to install the version of ASP.NET 1.1 and to install the script maps at the IIS root and under:

    %SYSTEMROOT%Microsoft.NETFrameworkv1.1.4322aspnet_regiis.exe -i

  4. Make sure that the status of ASP.NET version 1.1.4322 is set to Allowed in the Web service extension list in Internet Information Services Manager.

After following these instructions, the issue still wasn’t resolved.  In fact, the script maps for the web application were not being properly updated.  I had the customer execute the “aspnet_regiis -ua” which would remove all versions of ASP.NET from the machine.  To reinstall the ASP.NET 1.1 again, you then need to reissue the “aspnet_regiis -i” command (use “aspnet_regiis -i -enable” if you are using Windows 2003).  This should allow you to run ASP.NET 1.1 on IIS 6.

Keep in mind, however, that IIS 6.0 cannot run in both 64-bit mode and 32-bit mode at the same time. By running IIS 6.0 in 32-bit mode on 64-bit Windows, ASP.NET 2.0 applications will also run in 32-bit mode.

Work-life balance; Robert Scoble

Since coming to Microsoft, I have heard a LOT about our policy on “work-life balance”.   If you aren’t familiar with what work-life balance is, a simple search on the web should satisfy your curiosity.  Essentially, we believe that people work best when they are satisified with their accomplishments at work as well as their lives at home.  Microsoft will often say that their greatest asset is their employees.  However, Microsoft doesn’t actually believe that last statement.  Now if you are a manager or an HR rep at Microsoft, and you just read that last statement, you probably just spewed your soda (“pop” for some of you) all over your flat-screen and keyboard.  Never fear.  Let me explain that.  If Microsoft actually believed that employees were an asset, they would treat them like they owned them.  This is NOT the case.  In fact, Microsoft treats us more like a guest that they don’t want to leave.  I’m sure this week will be particularly hard for Microsoft as one of our more prominent guests have announced they are leaving.  I’m glad that Robert has seen fit to shut down the critics who opened their mouths before getting the facts straight

I often hear about how Microsoft doesn’t pay enough or treat their employees right.  While that may or may not be true (depending on who you talk to), Microsoft has proved with their benefits that they do care deeply about their employees.  From day one at Microsoft, you are given a package of benefits so thick that it takes two days of new employee orientation to help you get familiar with them — and even then, you are left bewildered with all of the benefits and resources at your disposal.  One such benefit that is actually a “requirement” at Microsoft is work-life balance.  In the past three months since my arrival, I’ve been pressured to make sure I have been enjoying life while getting my work done at the same time. 

However, here I sit at work on the weekend, trying to pound out some of my work while there are less distractions and no meetings to attend.  This is by choice, obviously, and if anyone from my team knew I was here, I’m sure I would get reminded that my “life” is just as important as work.  Of course, at the moment I decide to take a quick break, a member of my team walks in and “catches” me with a pocket full of ping pong balls on my way from the ping pong table. See, I’ve got work-life balance! (Thank goodness they didn’t catch me working instead).

This post was prompted by the news of Scoble’s departure and the folks that immediately took that opportunity to bash Microsoft over “letting him go”. And that they didn’t “do everything they could to make sure he stayed put”.  I’m sure that everything was done to encourage him to stay — but remember — he is just guest and not an asset.  Therefor he is entitled to leave any time that he wants for whatever reason he wants.

I’m very sorry to hear Robert Scoble is leaving Microsoft, but very happy that he cleared the air about life at Microsoft before it got out of hand. 

Good luck, Robert!

Improving code performance

Recently, an old co-worker contacted me to ask me a question about code performance. Specifically, he was emitting IL from his code and had some questions about some of the opcode usage he witnessed when viewing the IL of some compiled assemblies.  The question was based on a simple application he wrote in C#, compiled, and disassembled.  He did this to see how the C# compiler produced IL and give him clues in how he should emit IL.  The function in question was as follows:


public object GetProp(string name)
{   if (name == “X”
   {    return this.X;
   }
   return null;
}

Now, the code obviously isn’t meant to do anything other than lend some insight into the IL.  Compiling to ‘debug’ the following IL was produced.

.method public hidebysig instance object
        GetProp(string name) cil managed
{
// Code size       35 (0x23)
.maxstack  2
.locals init ([0] object CS$1$0000,
          [1] bool CS$4$0001)
IL_0000:  nop
IL_0001:  ldarg.1
IL_0002:  ldstr      “X”
IL_0007:  call       bool [mscorlib]System.String::op_Equality(string, string)
IL_000c:  ldc.i4.0
IL_000d:  ceq
IL_000f:  stloc.1
IL_0010:  ldloc.1
IL_0011:  brtrue.s   IL_001d
IL_0013:  nop
IL_0014:  ldarg.0
IL_0015:  call       instance string class TestApp.TClass`1::get_X()
IL_001a:  stloc.0
IL_001b:  br.s       IL_0021
IL_001d:  ldnull
IL_001e:  stloc.0
IL_001f:  br.s       IL_0021
IL_0021:  ldloc.0
IL_0022:  ret
} // end of method TClass`1::GetProp

The question was, why was the stloc.1 and ldloc.1 needed after the ceq instruction at IL_000d (there are actually other issues in this small snippet, but I’ll focus on this particular one) . I, too, tried to resolve the issue and batted a few guesses around.  I proffered two ideas, and then ultimately suggested that the JIT compiler would likely be modifying this code anyway (particularly once it was recompiled in ‘release’ with optimization).

Still curious as to why the compiler produced the stloc and ldloc opcodes, I asked around internally until Vance set me straight with this blog post.

Introduction: What does ‘foreach’ actually do?
http://blogs.msdn.com/vancem/archive/2006/02/20/535807.aspx


Essentially, he states what I initially felt — that the JIT transformations on the IL are so dramatic, that you cannot judge an application’s performance based on the IL.  He also gives some great information on how to view your JITed code — with release optimizations and everything.  The other side to this is, that after further review, the inefficiencies of the IL were fixed in the optimized IL anyway once the code was set to ‘release’. 

Sometimes, it’s really easy to get side-tracked by these discussions in your quest for software glory.  I’m glad to know we have people like Vance around to set me straight when I do.


IIS 7 on a MacBook !

The IIS 7 Commander-in-chief, Bill Staples , has just released a screenshot of his new 17″ MacBook running IIS 7!  I simply must get one now!

Beta 2 Live – IIS.NET now open!

Now that Beta 2 has been announced and IIS 7 is now publicly available to beta testers on both the Vista and Longhorn platforms, our new portal, IIS.NET is now open and live!  Many long hours were spent on this by some great guys here at Microsoft.  Be sure to stop by and tell them what you think of the site!

IIS 7.0 UE team is hiring!

We’re hiring!  Take a look at the details below

“Do you love Internet and Web server technologies? Join the IIS UE team and work on the coolest version of Internet Information Services (IIS) ever. IIS 7.0 joins forces with ASP.NET to deliver a Web application development platform that’s getting rave reviews from customers.

We’re looking for a programmer writer to define and deliver essential developer-focused, solution-based documentation for a programming audience. Your responsibilities will include writing API reference topics, conceptual topics about IIS, and code examples that demonstrate product features. You’ll be responsible for multiple feature areas, so good organizational skills and the ability to prioritize your workload are a must.”


(continue)

Online Training: Beginners Guide to VB.NET

Microsoft Learning has put together a great series of training courses which are available now at a substantial discount.  Take advantage of the deal while it lasts (sale ends June 30th)!

https://www.microsoftelearning.com/visualstudio2005/#upgradingfromVB60

Also, don’t forget to check out the free training videos for VB.NET Express Edition. They provide a great starting point for anyone looking to break into the Visual Basic .NET market.

http://msdn.microsoft.com/vstudio/express/vb/learning/

What technology actually improves your life?

Nearly a year ago, I blogged about the fact that I had no “cool” technologies in my house.  I didn’t own a single gadget that anyone would consider to be “up to date” by any standard. I didn’t own a PDA, a laptop, or even a modern cell-phone.  I didn’t have flat-panel monitors or anything other than a standard 27″ television — with a broken power button at that.  I had several computers in the house, but all of them were at least a year and a half old. 

I decided after posting that complaint that things were going to change.  I released my death grip on my cash that I had been hording and sprung for a new, improved, gadget-savvy image.

Flash forward to today — 11 months after that post.  As I got ready to head into work, I closed up my 17″ widescreen HP media center ready laptop and turned off my HP printer/copier/fax.  I packed up my Gateway Tablet PC and shoved it into my Microsoft backpack along with my 60GB video iPod, assorted USB flashdrives, bluetooth adapters, folding headphones, and the like.  I strapped my 8.1 MegaPixel Nikon digital camera and Audiovox Smart Phone to my belt.  I put my Motorola bluetooth hands-free headset on my ear.  I walked into the living room and turned off my 50″ Plasma TV and shoved the wireless controllers for my Xbox 360 under the TV stand.  I walked out to my car and looked at the windshield cluttered with an XM SkyFi2 satelite radio, a Sirius satelite radio, and a Microsoft Streets and Trips GPS device.  Now, I say all of this to point out that I’ve gone from one extreme to another and at no small expense.  I sometimes wonder if I should have just hung onto my cash, but in other instances, I really enjoy my products.

I asked myself as I traveled to work this morning “Have I gotten my money’s worth out of these devices? Have they made my life better — or just more expensive?”  It seems that many of today’s top technological gadgets are great at overcoming technological problems, but do they really enrich our lives?  My Smartphone is one device that I just couldn’t live without.  I keep track of my appointments, birthdays, phone numbers and so much more on that little thing.  I also keep a copy of Microsoft Pocket Streets and Trips on there — which is a great little tool for getting around.  There is no question that this device makes my life easier in today’s society that requires that I know how to contact any number of people, keep track of appointments and schedules that change every hour, or keep me up to date with birthdays of family members all the way on the other side of the country.  My camera is great. Photos are so hard for me to keep track of.  I keep a few but they are usually buried in boxes that I have to dig for if I want to view them again.  I can snap pictures of the mountains out here in the Pacific Northwest and immediately send them to my parents.  The camera is a great addition to my “technical family.” That said — there are other devices that just seem to be excessive (Who needs XM and Sirius and an iPod?  Could I do without them? Most likely.)

I could go on and on talking about my devices.  Instead, I’d like to hear from you.  What technologies have made your life better?  These could be services, pieces of hardware, or even websites in general.  I want to know what technologies make a difference in your everyday life and what technologies have you invested your hard-earned money into that haven’t been worth it.

Snagged from Sahil: Bad programmer diseases

Sahil has once again shown true insight and provided a list of common diseases found in our industry. Do you have any of these symptoms?


http://codebetter.com/blogs/sahil.malik/archive/2006/05/03/64255.aspx