Shipping ASP.NET 1.1

Last night we updated the ASP.NET site with the links to the download to ASP.NET 1.1 — YEA!!! We RTW’d (Released to Web) 🙂

If you haven’t had a chance to check out ASP.NET 1.1 yet, you can now download the final version. We also wrote some whitepapers/FAQs to help people with some things that you might run into:

I’m working on another one that discusses setting up ASP.NET 1.1 and IIS 6.0 – it should be on the site tomorrow or Monday — just waiting for a final edit pass by our documentation team and some more details from our development team.

Shipping software at Microsoft
… is definitely fun:

There’s the ‘beer bashes’ where everyone gets together Fridays at 4PM — but usually not many people show up because they’re too busy — or they only make a pitstop for a beer and some chips! For ASP.NET 1.1 there was also the big ‘Windows Server 2003’ party in one of the parking garages (due to lovely Seattle weather). And then finally there is the ‘Everett’ (code name for .NET Framework 1.1) ship party.

The ‘Everett’ ship party, which will just be for the people responsible for .NET Framework and VS .NET is being held in, you guessed it: Everett (actually it’s at the ‘Everett Ranch’ — one has to assume…)

For those of you that don’t know, Everett is a small city just north of Seattle. Everett is home of Everett Naval Station – home to the USS Abraham Lincoln – a Nimitz Class nuclear powered aircraft carrier. For those of you that remember ‘Top Gun’ it’s the same boat, er, ship.

I’m not complaing, it’s just that the ship party for .NET Framework 1.0 was in Las Vegas, which I had to miss it due to the recent birth of my son. I guess maybe I am kind of complaing 🙂 … I mean, why can’t someone choose a code nam like ‘Fiji’ or ‘Baja’!

ASP.NET Forums
I’ve had some free time, i.e. ignoring other work/email, the last couple of weeks and focused on the forums. Below are some screen shots:

I’ve done a bunch of other UI and database related work. The screen-shots above are about 2 weeks old now. More about the forums v 1.5 later.

Enough rambling 🙂

When good hardware goes bad

Nothing is more frustrating when you’re working and poof – your monitor goes black and your system stops responding.

I had the joy of that experience today with my primary email and ASP.NET 1.1 development machine. The same machine that has the last 10 days of code updates to the ASP.NET forums (for the new search functionality), the last several months of email, and chapters from both a SAMs and an MSPress book I’m working on. So began 2 hours of my day trying to figure out what the heck happened.

Was it a problem with Windows – seemed to be since I got a couple bluescreens while trying to bring the machine back online – or was it a problem with the hardware? Turns out it was a hardware problem. One of the processor fans – it is a dual proc. – was broken and the processor was overheating.

The odd thing is that this is the second hardware problem I’ve had in the last 2 days. Yesterday one of our web servers for decided to go belly up. So last night and today I’ve had the joy of rebuilding the server and fixing all the bugs that got reintroduced: forgot to turn off request validation and to set the <machineKey /> values.

Is it coincidence or have I somehow angered the hardware gods 🙂

Getting to 0 bugs, Performance Tuning the Forums, and TechEd 2003

Getting to 0 bugs…
If any of you read Scott’s blog, you know that we’ve hit ‘code complete’ on the second milestone of ASP.NET v2 development. The current push is to get the program management (PM) team to 0 bugs.

Getting to 0 bugs for the PM team really doesn’t have a lot to do with actual coding, but more to do with ensuring that the implementation of the feature actually follows the specification. I left yesterday at 5:30 PM with 1 bug (yeah!) only to come in this morning with 7 new bugs (boo!). Luckily most are ‘resolved’, i.e. bugs that I’ve opened and the person it was assigned to has decided that it was ‘fixed’.

One of the workitems I’ve focused on is making our exception messages better. We’ve gone through all the exception messages and tried to make the meaning a little more clear and actionable. Here’s a simple example of the exception message that we currently display (ASP.NET 1.1) when attempting to get process metrics about the ASP.NET worker process with ASP.NET running in an IIS 6.0 worker process.

From this:
Process information is available only when the ASP.NET process model is enabled.

To this:
Process metrics are available only when the ASP.NET process model is enabled. When running on versions of IIS 6 or newer in worker process isolation mode, this feature is not supported.

As you can see it’s not a huge change, but when you consider how many exception messages we have in the system….

Performance tuning the forums
I’ve finally had a few more free cycles this morning to focus on the site. If any of you have noticed, we’ve actually re-enabled the online versions of the new starter kits. I also made some changes to the Control Gallery and IBuySpy tabs so that the forum contents displayed on those tabs is always served from cache.

We love statistics on the site, i.e. total posts, total users, total new users in past 24 hours, etc. The larger our database grows the more costly it was to dynamically calculate this data. I’ve created 3 new tables and modified several procedures so that rather than performing dynamic lookups the lookups can be done in a single table. A great example is the way we used to calculate the total number of users online. We used to select from the Users table all users who’s ‘LastActivityDate’ was (current time – 30 minutes). Turns out the more data we got, the slower this was (imagine that!). So we created a new table forums_OnlineUsers table, and whenever a user performs an activity we update both the Users and forums_OnlineUsers table. But, when we need to get the users currently online … we can just select from the forums_OnlineUsers table (sounds trivial, but it makes a big difference in the number of physical reads SQL has to do — especially since we can index on LastActivityDate in the forums_OnlineUsers table).

Tech-Ed 2003
We just finallized the ASP.NET talks for Tech-Ed 2003 (June, in Dallas, TX — back to my hometown, woo hoo!). We asked for 25 talks and got an astonishing 20 accepted. So far I’m signed up for the following 5:

  • Best Practices and Techniques for Improving Application Performance – Performance best practices talk.
  • Designing and Developing the Community Starter Kit – Overview of the new community starter kit.
  • Tips and Tricks – Cool tips and tricks for ASP.NET developers
  • Deploying and Operating the web site – Discussion of what we do to run
  • What’s new in ASP.NET 1.1 – Overview on the new features in ASP.NET 1.1.

ASP.NET Forums

Last night we updated the ASP.NET Website to ASP.NET 1.1. So far so good, we found a couple of bugs in the forums that we had to patch this morning, but overall the site seems to run faster! Today we got even more good news, we should have our new dual-processor SQL box online by-end-of-week. It’s somewhat amazing that our little SQL Server (single-proc. 750 MHZ 1GB RAM) has handled the load of (we’re serving about 100K unique users / day on the site right now.):

  • All the content from (all content is stored in the DB)
  • All the interactive content from
  • All the interactive content from (requires the most database utilization)
  • All the interactive online versions of the starter kits (such as IBuySpy Store, Portal, etc.)

Unfortunately the search functionality of the forums is killing CPU utilization on the SQL Server. Once we get the new DB in place we’ll dedicate it to the forums — should definitley speed up the site even more!