DevConnections Day 4: The Last Day#

Started this morning early, packing up and checking out - Kent and I would fly out together this afternoon. I need to get back tonight because I leave on Saturday for Barcelona and Tech Ed Europe IT Forum.

First thing this morning was my second session with Kent, called Load Testing ASP.NET Applications for Performance and Scaling. Had some technical problems with the network, but I solved them on the fly while Kent did a soft-shoe number.

I use my big tank of a laptop, the Dell M90, to do this demo. I'm running two virtual machines at once: one has the load test environment on it, the other is the web server, databases, etc.

We dig into all the goodies around load testing - using perfmon, using WAST (old, but free) and Visual Studio for Testers (new, not free).

The 75 minutes tears by... there's so much to talk about in this space. But we get to run a few real tests along the way and talk about what their results mean.

As soon as the session was done I was running across the conference center again, this time to a RunAs Radio Live session with Chris Avis. Since RunAs Radio is only a half hour show, we actually recorded two separate topics, one on deployment, the other on spam management in Exchange.

When we were done there, I had a few minutes to rest before running off with Carl to do the DotNetNuke Futures Panel. All the senior folks from DotNetNukeCorp were on the panel talking about taking DotNetNuke to the next level. The reality is that DotNetNuke has gotten successful enough that it needs full time people just to manage the volunteers, much less dig into the less-cool stuff that needs to be built to make DotNetNuke fully viable in the enterprise space.

Carl and I sat at either end of the table, managed questions from the audience and generally kept things moving along. I'm sure it'll be a great .NET Rocks show when its published.

The moment the panel was done, I shook hands with everyone and ran - back to the speakers lounge to pick up Kent and head for the airport.

We had a little excitement at the airport with Kent's ticket (we flew Philippine Airlines home, it was the only thing that fit the schedule), but otherwise, the day went well.

And now I'm home. For like, 48 hours. Then its off to Barcelona!

Thursday, November 8, 2007 5:27:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevConnections Day 3: End of the Tradeshow, Beginning of Sessions#

And just like that, the tradeshow is over. Well, by the afternoon, anyway. I worked in the booth for the morning shift, but had to ditch after lunch to work with Kent on our first session of the conference: ASP.NET Scaling Strategies and Tactics. All these sessions are residuals of all the consulting and research we've done creating Strangeloop.

The session starts on the strategies of scaling first, and really there are only two: Specialization and Distribution. Most folks think only about distribution when they're scaling a web site, that is, adding more servers. But specialization not only plays a critical role, but should play it first. Specialization is all about breaking down your web application into smaller bits, whether it be separate SSL servers, image servers, etc.

Once you've done some specialization, distribution gets easier and more flexible.

That's the strategic part of the session, then we dig into the tactics, more of the details around what it takes to put those strategies into practice. For example, you can set up your own image servers to take the load off your ASP.NET servers, or can switch to a Content Delivery Network (like Akamai) to handle images. Most of the time, these tactics are specific to the application, ie, it depends.

When the session was over, I hustled across the conference center to do a .NET Rocks Live with Carl. Our guest - Kent Alstad. Since Kent was on the ASP.NET Scalability Panel back at Tech Ed in June, we've received a number of emails from folks asking for more... so we delivered. Since Kent was with us already, it was pretty easy.

We had a great crowd for the .NET Rocks Live, they really whooped it up. I'm sure you'll hear it when the show is published.

After that session I dropped into the Speaker Party for a couple of hours, up in the penthouse suites of The Hotel at Mandalay Bay. Waaay too many people in too small a space, incredibly loud and lots and lots of fun.

I didn't stay long though, I headed out to dinner at Sensi at the Bellagio with the Strangeloop folks and a few key influencers.

Tomorrow is another crazy busy day!

Wednesday, November 7, 2007 4:55:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevConnections Day 2: Microsoft Day#

Today is tradeshow day... actually, its Microsoft day, the day when all the sessions are given by Microsoft folks. But its also the day where the tradeshow floor is open the most. DevConnections has an interesting technique for tradeshow floors where they close it regularly, then open it again an hour or so later.

While its a bit confusing, the logic is pretty straightforward: They close the tradeshow when sessions are on, which gives the folks working the tradeshow a break. Then they open it again for break times where there is snacks, lunch, etc. The result is that as a vendor, you get a chance to get off your feet regularly, and then you get these big surges of people visiting all at once.

Jeff and Paul from the Strangeloop sales team are loving it, the interest level is insanely high, every time the doors open to let the attendees in, we're swamped. We have eight staff for the booth including myself, and at times, its not enough.

Kent, Josh and I have been running the load test demos of the AS1000 back-to-back, keeping the cubes full. Lots and lots of questions about how things work and how to get one ASAP.

At the end of the day, the evening event is called Microsoft Unplugged, where Carl and I hosted a game show to give away all sorts of swag (my favorite job!).

Tuesday, November 6, 2007 5:26:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevConnections Day 1: Opening Day#

Well, now I know why Jenn said she was pleased the rack was functional - apparently it took a serious fall. One wheel broken in half, two wheels bent, a huge dent in side... its a miracle the servers survived. I can't imagine what happened to the rack, I'm thinking it took a 6-10 foot fall.

However, everything in the rack is functional and the booth looks fantastic. It's the same design as the one we had at Interop in New York, but instead of having the columns and header wrapped in vinyl, all the surfaces are rigid panels with art on them.

Today was pre-con day at DevConnections, with full and half day workshops. Its ends with a dessert reception and the opening of the tradeshow floor for two hours.


Here's an odd shot of the booth, you can see the rigid panels with art work on them on the far column. Kent is doing a presentation. I definitely did not take enough pictures of the booth this time around.

For two hours, we were run off our feet - everyone is interested in Strangeloop and the AS1000. It was all we could do to hand out datasheets fast enough!

Monday, November 5, 2007 4:17:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevConnections Day 0: DevExpress Summit Part 2#

Its the day before DevConnections actually gets into full swing, Jenn and Trevor arrived yesterday afternoon, so they were in place and good to go.

DevExpress' presentations started at noon today, and around the same time I got an SMS from Jenn saying the demo rack has arrived - woohoo! Appears to be functional, they're doing testing now.

The DevExpress presentation started out with a hilarious demo - Sarah, who is a professional model, has had a small amount of training with Mark to use CodeRush to create a set of classes for Employee and Manager. The demo is a race between Dustin Campbell and Sarah, Dustin doesn't have code rush, but he can type really fast. But Sarah won - she coded the class faster than Dustin could. Its a very compelling demonstration of the productivity gains that CodeRush offers. DevExpress is doing the contest repeatedly in their booth at DevConnections.

Mark Miller got on stage today to show off the latest incarnation of Refactor Pro, they're planning on having 150 refactorings by the end of the year. There's a free version that comes with Visual Studio 2005 and 2008, but the Pro edition is $99. And as Mark says, that's only 67 cents a refactoring. Heck of a deal, and an incredible product.

Its so much fun to watch Mark use CodeRush - it makes Visual Studio an extension of his crazy mind. He codes incredibly fast while touring us through the features of Refactor Pro.

Sunday, November 4, 2007 3:07:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevConnections Day -1: The DevExpress Summit Part 1#

Had a slow, lazy morning today, since the DevExpress meetings didn't start until noon (gotta love that).

Wandered from the hotel part of the Mandalay Bay all the way to the South Convention Center, which is most of the way to Utah. The DevExpress event is in one room on the third floor, which means its a hundred feet up, since the ceilings in the Convention Center are at least 40 feet high.

Most of DevExpress is here too, including Ray (CEO), Julian (CTO), Mark (Chief Scientist), Dustin, Kevin, Courtney and a whole host of developers. Its impressive to meet the team like this, and its obvious they're very, very proud of their software.

Today we're primarily focused on their newest products, including controls for WPF and Silverlight. Apparently much of what we've seen will be on display at DevConnections as well.

Kent is here with me and he's thinking hard about how Strangeloop and DevExpress could work together. What if some of the DevExpress controls were AS1000 sensitive, and knew how to automatically take advantage of it being there?

Saturday, November 3, 2007 2:53:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevConnections Day -2: Arriving in Vegas#

I've flown into Las Vegas for DevConnections a couple of days early to hang with the DevExpress folks. DevExpress has invited a small group of folks to show off their latest incarnation of all their products.

Kent Alstad has come along with me as well, we're going to be doing some presentations at DevConnections together, as well as working hard in the Strangeloop booth.

We shipped the demo rack directly from Interop in New York to here, supposedly it'll arrive on Sunday. Jenn and Trevor are handling set up for the booth, but I'm sure I'll drop by during the set up.

Not much actually happened today, the flight was uneventful (and direct), and DevExpress supplied a limo to get us to the Mandalay Bay, so we could bypass the inevitably massive taxi line at the airport.

We met up with some of the DevExpess folks for dinner tonight and got a few hints of what we'd see tomorrow... I guess we'll see tomorrow!

Friday, November 2, 2007 2:07:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Interop Day 4: Tradeshow Closes#

And then suddenly, its over.

The tradeshow at Interop is only two days: Wednesday and Thursday. Each day the booth was open for six and a half hours. Doesn't seem like much.

So why am I so tired?

We talked to a lot of folks at Interop about Strangeloop - almost all were IT and/or network folks. Some had no ASP.NET or no web site at all, so there wasn't much to talk about. But many more were very conscious of the fact that they had challenges with performance and scaling of their web sites.

One of my favorite visits was a fellow who said "I'm not responsible for the web site, but my boss needs to know about this" after seeing the entire demonstration. He took a data sheet and all sorts of info. Half an hour later he was back with his boss in tow and I did the whole pitch again. At the end his boss looked at him and said "you've got their info? Good."

Its a great feeling, being in the right place at the right time. And that seems to be the reaction of the majority of folks we talked to at Interop.

As soon as the show was over the booth came down. Amazing how quickly it came apart, considering how long it took to set up. The server rack was packed up for shipping in no time. I grabbed one of the big banners to take back to the office in Vancouver.

Tomorrow I head home for about a week, then Las Vegas for DevConnections!

Thursday, October 25, 2007 7:02:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Interop Day 3: The Tradeshow Floor Opens!#

Not much to say about Day 1 and 2 of Interop - we were too busy getting ready for the tradeshow to get to see any sessions at all.

Our booth design for Interop uses a 20x20 island, we're right beside Riverbed. The booth itself has two columns kitty-corner from each other, supporting a central span. This cuts the booth in half. On one side is the reception counter with scanners, documents, etc. The other half is the presentation area, where we have a small podium, a big screen and a bunch of cubes to sit on.

 The booth at Interop 2007

This photo is during set up on Tuesday... things are just about finished. You can see the server rack on the right in one of the columns. Its controlled by the laptop on the podium - this is where we do the live demonstrations of the AS1000. On the other side of that column and on both sides of the other column are demo stations for showing how the AS1000 works.

Folks really like this booth design, I'm thrilled with it. Lots of other vendors were coming over and taking pictures of it. I feel like we really utilized our space well, the live demo packs people in, and when they have more questions they can move over to the other demo stations to get answers.

We're doing three demos on the live station at Interop. One is done by Stephen Forte, the CTO of Corzen. He's talking about how the challenges of Corzen's business in rolling out new features quickly and constantly to their customers. Spending time on optimization is just not an option, they're looking to the AS1000 to minimize that concern.

Kent and I are also doing demonstrations, using Visual Studio for Testers to do load tests against the rack with and without the AS1000 to demonstrate how it improves performance and scalability.

Carl Franklin is here as well and is video taping the demonstrations so that we can put them up on the Strangeloop site for future viewing.

Wednesday, October 24, 2007 6:38:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevReach Day Two#

Carl and I grabbed an interview with Dino Esposito in a quiet room during the conference, his viewpoint on Silverlight and ASP.NET technologies is always interesting.

Dino's session on "What Partial Rendering is not AJAX" rang true for me as well - his point is that the essence of AJAX is pushing page rendering to the browser, rather than computing it on the server. But partial rendering still computes the HTML on the server and sends it to the browser to display. This undermines the goal of AJAX.

I had last session of the day (and conference) and a huge crowd for my load testing talk today, as usual there were relatively few folks in the audience that had done load testing before, so a lot of my talk focused on the fundamentals of why and where for load testing. The data we've gathered around Strangeloop is great stuff for getting people started.

Tuesday, October 2, 2007 1:41:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevReach Day One#

Sold out! Yep, the show is packed. Its not the biggest show in the world, but the attendees are focused and excited to be here. The keynote speech today included the local Microsoft folks and Telerik and, of course, Tim Huckaby! Tim's stories around building great applications that change the world are hard to touch. The audience was spellbound.

My work came in the afternoon, I took the Scaling Habits of ASP.NET Applications out for a spin again, with lots of interesting questions and discussion afterward.

In the evening Carl and I ran a panel discussion on WPF with Tim Huckaby, Brian Noyes and Todd Anglin.

Tomorrow is the last day, then we're touring Sofia!

Monday, October 1, 2007 1:25:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


DevReach 2007!#

Less than a week at home and I'm back in Europe, now in Sofia, Bulgaria for DevReach.

This is the second year of this conference, this time around Telerik is very deeply involved. I've been helping out with bringing in speakers, including Stephen Forte, Tim Huckaby and Joel Semeniuk.

And yes, this time Carl has made it here in one piece. No more travel disasters for him!

Saturday, September 29, 2007 2:31:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


SDC Day 3 - The Speakers Tour#

One of the great things about the SDC conference is the Speakers Tour. The conference has always been a Monday-Tuesday show, followed on Wednesday by the organizers taking all the speakers out on a tour of the Netherlands.

In ten years, we've done all sorts of things - explored Rotterdam, the waterfront, tulip gardens, gone go-kart racing, paintballing... you name it.

This year was different again for everyone in general, but especially me.

Instead of actually touring around, the tour brought everyone to the seaside. Because of the fall date, the weather is much more pleasant by the sea, although rather windy. We worked from a base location of a restaurant on the beach. There were a number of things going on around the restaurant, including kite flying and various other games. After lunch all the speakers, spouses and crew took bikes to the storm management and water control works. Much of the Netherlands is below sea level, so the Dutch take management of the sea very, very seriously.

But I didn't do any of the tour activities... I was making dinner!

Remi Caron, my friend and one of the conference organizers, approached me a few weeks ago asking if I thought it would be fun to cook for the conference. So the two of us took on the task. We had access to the restaurant for doing the cooking, including some huge grills. We're cooking for about 50 people.

We spent the morning shopping, buying all the supplies for the meal, which included ribs, burgers and salmon. I usually blend pork and beef together when I make burgers, I was surprised to find that butchers in the Netherlands regularly stock such mixtures, so it was pretty easy to get those things together.

We made a number of salads as well, and bought dessert - cleaned out a nice little bakery of all its pastries.

The afternoon was spent in prep work, making salads, burgers, preparing buns, and so on.

Then, when everyone left on the bikes, we started cooking. Burgers went first because they can keep, followed by ribs. Remi prepared the ribs restaurant style, having boiled them with spices and flavors during the day, they just needed grilling and glazing. The salmon went last, which was a combined effort - Remi's spices, my cooking technique of cooking whole, on foil, one turn... just to medium. The trick to great fish is not overcooking it.

In the end, we had too much of everything, but that's to be expected, really. It was fun to make rather North American food for Europeans, all the ingredients are available, they just don't normally cook like that. The guy who owned the restaurant asked Remi and I if we were available next summer for work.

And the SDC folks gave me an iPod Nano as a thank you present!

Now I'm off to Prague... going to drive across Germany on the autobahn and back again. Good fun.

Wednesday, September 19, 2007 2:25:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


SDC Day 2 - End of the Conference#

So Mark, Karen and I managed to put together something Mondays-like last night. Not exactly a Mondays without Carl, but close enough. Without any recording gear, its going to disappear into history. The SDC folks seemed to enjoy it, lots of laughs.

Just to make it more exciting, I participated in the DotNetNuke Futures Panel right before Mondays. We had originally intended to make the panel discussion into a .NET Rocks show, but without recording gear, that couldn't happen. There's going to be another panel like this at DevConnections in Las Vegas, we'll see if we can't record that one for .NET Rocks instead. If you haven't been paying attention, DotNetNuke is going through a major reorganization as it becomes one of the larger Open Source projects in the world. SDC is hosting the Open Force Europe conference, so folks here are learning what the reorganization means to them.

Today I was even busier - my famous SQL Tips & Tricks session first thing in the morning, then Load Testing with Kent Alstad (more great content generated by our work on Strangeloop) before lunch and then closing the conference in the last slot with Steve Forte doing a SQL Server Q&A session. We left the content of the Q&A session largely open, the attendees were very interested in SQL 2008. Fortunately, Steve and I disagree on a number of features, so it was, shall we say, an "animated conversation."

Tomorrow is the speaker's tour, which will have a number of new twists!

Tuesday, September 18, 2007 3:32:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


SDC Day 1 - Carl's Not Here#

The SDC conference is starting, and Carl is not here.

Some sort of travel disaster has happened for Carl, resulting in him losing some baggage and being unable to travel until he gets it back.

This seriously complicates doing Mondays tonight, since he had the recording gear, as well as having to cover off his sessions.

And we're not going to get any .NET Rocks shows either - which is a shame, we had some cool stuff planned to do here.

But that's how it goes sometimes. My schedule is plenty full doing all sorts of scaling and performance sessions with Kent Alstad. So far we've done the Scaling Habits of ASP.NET Applications and ASP.NET Scaling Strategies and Tactics. Tomorrow we'll get to take a new session out for a spin - Load Testing!

All these new sessions have really come about because of the research we're doing at Strangeloop Networks. Building an appliance to accelerate ASP.NET applications means running lots and lots of tests. The result of which is a huge pile of performance data. My head is stuffed full of so many stats and details on how ASP.NET applications scale that I figure I might as well share it with everyone.

Monday, September 17, 2007 4:42:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Software Developers Conference in the Netherlands, 2007!#

On the road again, this time in the Netherlands for SDC.

This is the tenth year I've done this conference, but the first time I've been in the Netherlands in the fall - in previous years this conference has been in the spring (typically in May).

The weather in September in the Netherlands is awesome. Its warm, occasionally cloudy... we might get some rain this week, but for the most part its been awesome.

Last year the whole family came along and we also went to Paris. This year I'm traveling with a buddy, and we're planning on driving across Germany to Prague after the conference. Roadtrip!

Sunday, September 16, 2007 1:07:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Sleepless in New York!#

Back in New York again! I've lost count of the number of times I've been in New York this year.

This time the event is Sleepless in New York, Infusion's weekend of Sharepoint madness. The event is actually being held in Microsoft's New York office on the Avenue of the Americas and 52nd Street, just a few blocks from Central Park.

On .NET Rocks, Carl and I only announced Sleepless a few times, as an opportunity for folks to compete to win prizes by learning about Sharepoint and then building an application, all in a weekend. The number of contestants was quickly overwhelming and we had to close registration early.

The result was an amazing group of twelve contestants - people from all over North America, brought in for a weekend in New York and all the Sharepoint they can stand.

Some folks from the Sharepoint team in Redmond are here as well, Carl and I are taking everything in.

Saturday, September 8, 2007 2:07:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Carl's Birthday!#

After spending a week in New York, we hopped on the Amtrak and headed for New London in time for Carl's 40th birthday party.

We're staying in a cool older hotel near the seaside on the edge of New London.

Carl's party was, of course, totally over the top. He held it at his home, and had an entire barbeque pig brought in for dinner. All sorts of interesting folks, including Kim Tripp, Paul Randal, Scott Hanselman and Miguel Castro attended.

After the party, we headed over to the studio to record Mondays. This time we had an audience, most of the folks from the party came to listen. To record a Mondays together we all have to be stuffed into audio isolation booths. There are three in the studio - a pair in the main room that face each other and one across the hall. Mark and Karen were in the pair, so they could see each other. I was in the booth across the hall, so it was almost like being back home in that I couldn't see anyone, just hear them through the headphones.

Carl was in the main studio room with the audience, which is why he's able to interact with them.

Recording the show was hilarious, not only did we have good bits, but the general chaos of having everyone there just kicked everything up a notch.

Saturday, August 18, 2007 2:07:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Interview with John Bristowe is Posted#

A couple of weeks ago I was in Calgary to do my SQL Querying presentation for the Calgary .NET Users Group. While there, John Bristowe interviewed me. That interview is now posted.

Actually, its really three separate interviews. The first starts off as a short history of my career in computers (30 years this August), how I got into .NET Rocks and RunAs Radio, speaking about SQL Server and my Querying Talk. After that we jumped into Strangeloop, what its about and where it came from. Finally, we ended up talking career advice... John asked me my thoughts on how developers can grow in their jobs.

I'd go on, but its probably best just to listen to the interview, its about a half hour long.

Friday, July 13, 2007 6:07:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Speaking at the SoCalCodeCamp!#

Blame Michele Leroux Bustamante for this one - she talked me into coming down to do a couple of presentations at the SoCal Code Camp.

I did my Querying Talk again, but also took The Scaling Habits of ASP.NET out for a spin for the first time since the Vancouver TechFest.

Scaling Habits is a fun talk for me because it really is a tour through the evolution of an ASP.NET application - from those early days where you're one guy with a clever idea for a web app, through to what it takes to run a large scale site with multiple servers and the related bureaucracy for operating it.

Along the way I talk about the elements of the evolving site - how much traffic is typical, the kinds of metrics that matter, and so on. And most importantly, what it takes to move to the next level of evolution for the application.

At the core of this whole concept is the idea of the Performance Equation. The Performance Equation

A quick description of each factor in the performance equation:

R Response time (in seconds)
Payload Total number of bytes being transmitted
Bandwidth The transfer rate available
RTT Round Trip Time
AppTurns Number of requests that make up the web page
Concurrent Requests How many requests will be run simultaneously to build the page
Cs Compute time on the server
Cc Compute time on the client

Now I can't take credit for this equation, I did not invent it. The original one comes from the "Field Guide to Application Delivery Systems" by Peter Sevcik and Rebecca Wetzel from NetForecast. However, I did make one change to it - the original equation does not account for simultaneous downloading of resource files and the base overhead of the page file itself. That is represented by the separate addition of an RTT and dividing the rest of the AppTurns by the number of concurrent requests.

So all of these factors go into the time it takes for a web page to fully render on your web browser after you request it.

When I display the equation to an audience, I always ask the question: "What part do you work on?" When I'm talking to ASP.NET developers, invariably the answer is Cs - Compute time on the server. After all, that's the code you wrote. But if you don't know what Cs is in relation to all the other factors of the equation, how do you know if that's the right thing to work on?

Some other interesting issues I've run into once I started looking at web performance this way:

  • In many cases bandwidth is just not the issue, we have lots. But when it *is* an issue, often we don't test with the same bandwidth that the customer has, so we don't realize when bandwidth is a problem.
  • Round Trip Time is the ping time between the customer and the server. Again, since we often test with servers that are so close to us that the ping time is ultra-low, we don't have test conditions that match with our customers. Its amazing how huge a factor bad RTT can be for performance.
  • AppTurns of course exacerbate RTT times, because its a multiplier - if you have a dozen JS files, a dozen CSS files and thirty images (which is remarkably common), you're talking about over 50 AppTurns, and even divided by Concurrent Requests, that expands response time by lots of seconds.
  • Normally, with Internet Explorer and FireFox, the number of Concurrent Requests is four. It can be adjusted at the client computer, but its very rarely done. It is possible to do a trick with URI renaming where each resource appears to come from a separate server so that you can fool the web browsers into doing more than four concurrent requests.
  • Compute time on the client becomes a significant issue when you get heavy with the Javascript, most often seen with AJAX-style pages. In my opinion, getting the browser more involved in generating a web page is a good idea, but you need to account for the cost involved. If you're only looking at server compute times, then of course AJAX looks like a brilliant solution - because you've hidden the cost.

Now that's not to say that Compute Time on the Server isn't important to the equation - it *might* be. But you should know for sure before you pour your time into improving it. Going through the exercise of breaking down where the total response time goes is a critical first step to making sure your effort is going to the right place.

Thanks again to all the folks at the SoCal Code Camp - I had a fantastic time, I'd love to come down again!

Sunday, July 1, 2007 5:07:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


SQL Querying at the Calgary .NET User Group!#

I dropped into the Calgary .NET User Group to do my famous SQL Query Tips & Techniques session. John Bristowe was nice enough to put me up for the night, but not before he got an interview out of me.

I've done the querying talk for a number of years now, and I update it regularly. I promised the folks there that I'd make the code available, so I've attached it with all the latest stuff, including my exploration of running totals.

Had a great time, a fun crowd to talk to... I'll have to bring the Strangeloop gear out there once we're ready for a road show and let 'em see what we've been up to.

Here's the sample code, including the script to build the database: (8.12 KB)
Wednesday, June 27, 2007 6:07:14 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Stephen Forte Calls From Pakistan#

So I get home from a busy day of reviewing patents for Strangeloop to discover a voice mail message.

When I play back the message, it sounds like 800 people shouting into a cell phone "Where's Richard?!?"

Stephen Forte cracks me up.

Sorry I'm not there, folks.

By the way, my passport did show up on Monday. Turns out the consul did what he said he would do and issued the visa on June 12.

But it looks like it wasn't picked up until June 15, and even then, it was a drop off at the UPS Store, rather than a pick up. So it must have sat in an outbox for three days.


Tuesday, June 19, 2007 1:57:51 AM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


Passport Disaster! No Pakistan Conference For Me...#

Right now I'm supposed to be on an airplane, flying to New York, on my way to Lahore and Karachi, in Pakistan, for the Pakistan Developers Conference.

But I'm not. I'm still at home. The reason? No passport.

To travel to Pakistan, especially to speak at a conference, you need a visa. And the only way for me to get a visa is to send my passport to the Pakistan Consulate in Ottawa. Its supposed to take three business days to get a visa.

With overnight courier, that's an entire week without my passport. Which may not sound like much to you, but to me, its very challenging to schedule... I use my passport a lot, especially during spring conference season.

So I called the consulate in advance and let them know the situation: That I was going to be in the United States (for TechEd), but as soon as I got back, I'd overnight the paperwork to them. They said if I included a letter of explanation about my urgency, they would expedite the visa.

Well, something has gone wrong - because I don't have my passport back. And I'm supposed to be on a plane now.

I've let the conference organizers know, and I talked to Steve about it, he's going to cover some of my material, so hopefully the attendees will get all the content.

But I'm pretty disappointed. This is my second trip to Pakistan, first time to Lahore, and I was really looking forward to it. The attendees are always so enthusiastic, its really a pleasure to be there.

I expect my passport will arrive on Monday now, too late to do anything about the conference.


Friday, June 15, 2007 4:12:33 PM (Pacific Standard Time, UTC-08:00) #    Comments [3]  | 


Tech Ed US 2007 Day 2: Speaker Idol Begins!#

We weren't too late last night, so getting up the next morning wasn't all that tough. Got to the Fish Bowl early, the first heat of Speaker Idol was at 9:45am. I spent a lot of the morning in email exchanges with folks for the three panels: Identity, VSTS and ASP.NET Scalability. I realized the stage is best set up for four panelists, each with headsets, plus Carl and I sitting off to the side with our own headsets, and then there's one wireless wand microphone on the floor.

In between panel emails there are emails from nervous Speaker Idol contestants, confirming rules, asking for suggestions, and so on.

Ten minutes before Heat 1 begins, we realize not all the judges can make it. I pulled Chris Kinsman in to cover for Joel who had a session.

Good news is, all the contestants show up. And then a big crowd shows up, over a hundred people. The AV guys are awesome, get everyone geared up and things moves right along. The competitors for the first heat were Mike Azocar, Bill Baldasti and Bob Roudebush. Going last was Kent Alstad, our first wild card. All the presentations are excellent, the judges complain about having to pick a winner, but do their job. The first heat winner is selected: its Bob Roudebush, with his great demonstration of the File Server Resource Manager in Windows Server 2003 R2.

At the end of Heat 1, the wildcard slots quickly disappeared. My four wild cards, in order of the heats, are Kent Alstad, Mark Miller, Rob Windsor and Steve Smith.

When the heat is over, I change shirts and head for the Strangeloop booth which has just opened. Lee is there now, arriving late last night. Things are in full swing, lots of people visiting the booth, seeing the demo, taking data sheets and getting excited about what we're up to. During that time the judges for the Best of Tech Ed competition came by to see AppScaler. We were very excited to be a Finalist, and the judge seemed to "get" what AppScaler was all about.

After helping out for a couple of hours I headed back to the Fish Bowl to gear up for Speaker Idol Heat 2 and continue sorting out who and when for the .NET Rocks panels. Change back to the DNR shirt.

Speaker Idol Heat 2 goes even smoother. The contestants are Brad McGehee, Alain Tadros, Dandy Weyn and the wild card, none other than Mark Miller (who knew he'd never presented at Tech Ed?). Again, the presentations are killer effective. Its amazing how much information these guys can pack into five minutes. The judges rule and Alain Tadros wins with a great code-on-the-fly demo of anonymous delegates.

I spent the rest of the afternoon locking down the panels, sending out invites. We'd have two panels on Wednesday, in between the Speaker Idol heats. First would be the ASP.NET Scalability panel, then the VSTS panel. On Thursday morning we'd do the Identity panel and the Speaker Idol finals. With the details locked down, I fired off the scheduling info to the CommNet folks to get it posted out to the Tech Ed attendees.

In the midst of all this, Greg Hughes arrived. Greg has been my co-host on RunAs Radio from the very beginning of the show, but this was the first time we'd actually met face to face. Our goal for RunAs was to get four interviews recorded with interesting folks at Tech Ed. We debated topics for awhile, but the list tightened up to IIS7, Network Access Protection, Forefront/ISA, Server Virtualization, Cardspace/Identity and anything else Longhorn Server we could find.

As the afternoon wound down, Carl and I rip out the Wednesday morning bluecast message. The mission turns to finding a good dinner. Orlando restaurants are plentiful, but mediocre for the most part. I guess its the nature of the place... its a total tourist town, and there really isn't any penalty for having a lousy restaurant, people keep showing up.

But we were told by numerous folks in the know that Vitos Chop House was the place to go. So we went. Greg, Mark Dunn, Carl & Tina and I all headed over there for a big steak dinner. Lo and behold, sitting a couple of tables away was the entire DevExpress gang, including Mark Miller! The dinner was good (when you're in a town of one star restaurants, being a three star makes you a knock out), and ultimately Mark came and sat with us as well. Lots of laughter and silliness. Our noise attracts attention, Chris Kinsman finds us from the other end of the restaurant.

We split up from dinner. Carl head for The Groove to jam. Mark Miller and I adjourn to the hotel bar to talk for awhile (I drank, Mark doesn't need alcohol). In bed shortly after midnight. Tomorrow is the half way mark!

Tuesday, June 5, 2007 10:17:30 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Tech Ed US 2007 Day 1: Getting Started#

When I got into the Rosen yesterday evening, I discovered that the server box had arrived from Denver. I left it at the bell desk, since there was no reason to drag it up to the room. But since I'd chatted with Birgit and Virginia that evening, we agreed to meet in the morning, get the beastie over to the tradeshow and set up. Jon, Josh and Kent were also arriving today.

I had wisely stocked myself up with bottles of water when I was over at Tech Ed registering, so I could deal with the after affects of significant amounts of scotch consumed the night before. Tech Ed is the Super Bowl of Microsoft Conferences, and you don't want to miss a bit of it. So its up late partying every night, and up early the next morning to get to work.

So we all gathered at the Strangeloop booth, reviewed the demos and went over procedures in general. I also had my box of shirts.

My life for this Tech Ed is a complex one. I have a lot of shirts, and depending on what work I'm doing, I have to change shirts. I have the following shirts:

  • Tech Ed Speaker Shirt (for speaking, duh!)
  • .NET Rocks Shirt (all DNR related events)
  • Strangeloop Shirt (whenever I'm going to be at the booth)

So over the course of the day, I'm going to switch between these shirts several times. I wear a t-shirt underneath to avoid horrifying anyone. And where do I do all this quick change work? Why, in the Fish Bowl!

After checking in at the Strangeloop booth, I headed over to the Virtual Tech Ed stage, where The 64 Bit Question, Speaker Idol and all the .NET Rocks panels were going to take place. In behind the stage is a video recording studio and an editing room, each of which have two walls of plexiglass. They look like people aquariums, and were quickly dubbed The Fish Bowl. And that's when I finally met Zaak and Katrina in person. Zaak runs Virtual Tech Ed, and we'd been on the phone with each other at least once a week for the past two months. The Virtual Tech Ed stage was the fruition of all the work we'd been doing.

Carl and I took over one corner of the Fish Bowl and met a number of the other inhabitants, including Dean Andrews, who was working with a group of folks who do Bluecasting. Bluecasting utilizes Bluetooth technology to push content (in this case, MP3 files) onto Bluetooth devices, like cell phones. Dean wanted to make it easy for people to find out what was available on the Virtual Tech Ed web site. After talking to him for a few minutes I offered up the services of Carl and I. We have lots of practice making short bits (2-3 minutes) with music and news. We planned to create one for every day of the conference.

It was around that time that Steve Forte and Pat Hynds showed up. Pat and Duane Laflotte had a conference session on Identity right after lunch, and they had an idea. Since fundamentally Identity is all about how you know who someone is, they wanted to do a physical demonstration. So Pat and Duane asked Steve and I to impersonate them. We would show up early for the session, walk up on stage and start presenting it. Steve went so far as to grab a piece of paper and scrawl "Patrick Hynds" on it and stuff it in front of his own Tempo Tempo Forte Forte name tag.

When the time came, Steve and I went on stage and dropped into our usual pre-session duet banter, only calling each other Pat and Duane. When it was actually time to start, we introduced ourselves and started the session. I even made a point of fumbling over the pronunciation of Duane's last name. About two minutes into it, Pat and Duane rush in, apologize for being late, and say "what are you guys doing on stage?" We get into an argument about who is really supposed to be presenting the session. Pat had left his badge on the podium, so he picks it up and puts it on. Steve runs into the crowd and asks an attendee, "doesn't my badge say Patrick Hynds" which of course it does, in badly scrawled pen. Then Pat says "But I'm Patrick Hynds, I have the official badge!" and someone else from the audience yells out "He just picked that badge up from the podium!"

So then we held a poll, asking the audience who they thought the real Patrick Hynds was. And most people picked Steve! Then we flipped the slide and showed photos along side the names. The crowd laughed. That was mine and Steve's cue to get out of the way, and Patrick dropped directly into "How DO you know for certain who someone is?"

The gag worked, and it made a point about Identity. Mission accomplished. Back to the floor, visited the Developer Learning Center area and chatted with Erika Maki about putting together some panels for .NET Rocks. She suggested VSTS, which I thought was a fine idea. Next stop, the RD booth where Steve stayed and ultimately I ended up back at the Fish Bowl.

While I was off being silly on stage, Carl was working hard on getting The 64 Bit Question slide deck finalized. We had pulled all the prizes together and sorted out the questions into Developer, IT Pro and .NET Rocks Trivia categories. The swag was wide ranging: from polar fleece sweaters to USB keys to software packages from Telerik, Data Dynamics and DevExpress. While we were comparing notes and organizing that, I had sent out an email to all of the Speaker Idol contestants to meet at the Virtual Tech Ed stage for a briefing. I was also starting to pull together the various panel ideas we had, including a panel on Identity and a panel on ASP.NET Scaling. Lots and lots of emails.

Speaker Idol briefing went well, but on such short notice, only about half the contestants showed up. The judges (Steve, Kate, Michele and Joel) dropped by as well. We talked about the flow of the stage, how all laptops are prepped in advance as well as mike checks. The routine on stage itself: Carl and I introduce you, ask you a bit about yourself, then get off the stage so you can do your five minute presentation. When you're done, we all clap, Carl and I return to the stage, talk to the judges a bit, they offer their critique, and the next contestant comes up. When all the contestants are done, they all return to the stage and the judges pick a winner. We also talked about wildcard participants - there are three contestants per heat, selected in advance. But there's room for four in each heat, so someone watching a heat can come up afterward and we'll put them into the next heat. I had already found a wild card for the first heat, I figured the rest would go quickly.

At 6pm Carl and I started The 64 Bit Question, just as folks were headed down for the opening of the sponsor booths. We drew a big crowd, mostly IT folks (wish we had more IT questions), and the swag went quickly. Some of the questions are quite funny, and the audience has a good time. After an hour or so, all the goodies are given out and we can head over to the Strangeloop booth.

So count the shirt changes: in the morning I arrived in a civilian shirt. By noon I changed to a speaker shirt for the Identity gag. Then I changed to the DNR shirt for the Speaker Idol briefing and 64 Bit Question. Then into the Strangeloop shirt to help out at the booth. Finally I switched back to the civ shirt as the reception ended and we could go to dinner. Somewhere in all that, Kent arrived as well. Before heading out Carl and I ducked into the Fish Bowl for awhile and laid down the Tuesday Bluecast recording. After that we ate at Jacks in the Rosen Plaza hotel. We were underwhelmed with the food, but the company was good - Strangeloopers (Jon, Josh, Kent, Virginia and Birgit) plus Steve and Carl.

Sometime in the afternoon I discovered that Scott Hanselman had blogged about the blogging session he'd contributed so much to (he asked me for my notes so that he could). Its at

Tomorrow would be the first heats of Speaker Idol, and things would really get moving!

Monday, June 4, 2007 10:17:30 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Tech Ed US 2007 Day 0: The RD Summit#

Today I discovered I'm in the wrong Rosen. The Rosen Center is the speaker hotel, the Rosen Plaza is just another hotel. The conference center beside the hotel is the wrong conference center, Tech Ed is held across the street from the Rosen Center. Its only a couple of blocks away, which translates into a mile-plus walk in the steaming swamp heat that is Orlando.

Woke up early and headed for the Peabody Hotel, more or less across the street. The Regional Director (RD) Summit meeting was being held there, Tech Eds are the usual place you'll find a concentration of RDs. RD Summits are comprised typically of three things:

  • Insider discussions with Microsoft where they brief us on NDA stuff that will be coming in the future (such as announcements at Tech Ed)
  • Interactive discussions with teams around products in earlier stages of development (stuff that is really, really NDA)
  • RD specific tasks, like direction of the program, awards, stuff like that

The pack of RDs this year wasn't the biggest, with many trickling in over the course of the day. Sunday is also pre-con day for Tech Ed, and RDs are prone to pre-cons... Kim Tripp, Tim Huckaby and Kate Gregory were all doing pre-cons. Steve Forte, Carl Franklin and Scott Golightly showed up noonish.

I was there early, but that's because I was worried - I had foolishly agreed to give a talk to the RDs. A talk on blogging. This is a problem for two reasons.

  1. I am only a marginally effective blogger.
  2. Giving a presentation to Regional Directors is a worse-case scenario for any presenter.

So, how to deal with these two issues.

The RD Manager at the moment, Kim Sanchez (Kevin Schuler is on leave), asked me if I would put together a talk on ideas around being a more effective blogger. One of the anchor points of The Region, the new Regional Director web site, is a feed from the blogs of the RDs. The goal of the talk was to help the RDs to know how to be more effective at blogging - not that they're bad bloggers, but we can always get better. My response was "Why me? Ask Scott Hanselman, he's the master blogger of the RDs." Unfortunately, Scott wasn't coming to Tech Ed.

So I did the next best thing: I asked Scott to talk to me about blogging. I put on my head set, opened up One Note and then typed as fast as I could for about two hours.

Its not that I didn't have my own ideas about blogging. Its just that Scott thinks so much about it and brain dumps so quickly, it seemed silly to start anywhere else. At the end of two hours, my brain and fingers were sore, but I had a heck of a start on a talk. Then I spent some time gathering some other viewpoints, pulling together some links, and presto-change-o, I had a talk. Which brings us to issue #2: presenting it to the RDs.

Many of the best speakers you've ever seen at any conference ever are Regional Directors. And there they are, watching me. And I'm not this great blogger, I've researched the topic, but fundamentally, I'm a hypocrite advocating things like using FeedBurner and URL rewriting when I'm not using them (but I will start soon, I promise!). I wanted to convey the fact that I'm just the messenger and I know I'm full of crap... which gave me an idea. I pitched it to Kim, and she agreed to supply rubber dog poop. So just before I went up to present the blogging talk, a couple of plastic bags containing rubber dog poop were placed on each table. My theory was, if I was full of crap, they could throw them at me.

Richard Hundhausen immediately complied and I caught my first poop. So far so good. The presentation went well, with several RDs that are into blogging engaging in lively debate. I should point out that an RD Summit is really a gathering of friends who don't get to see each other all that often. And like most groups of friends who rarely get together, they love to grind on each other. So the debate was really lively, which was good for me, since that meant they were grinding on each other, rather than me.

My real mistake was not considering that we scheduled the blogging talk over lunch, which is not the most appetizing time to have rubber dog poop on the table. On the other hand, a number of poops immediately went missing and were put to work in harassment missions on the MVP Summit next door.

No, I'm not going to go through my blogging talk in detail: I'll let Scott do that. He asked for my notes, so I sent them over, he planned to blog about it some time soon.

Shortly after that Steve Forte arrived and I decided I needed to get out of the room for awhile... I was more nervous than I thought! So I took the opportunity to take a walk, discover I was at the wrong Rosen hotel, figure out which conference center Tech Ed was in and get registered.

This year I'm registered as Staff, rather than a Speaker. This is really, really useful for me, since it makes it very easy to get in and out of almost anything at Tech Ed when I'm trying to find a guest or record a show for .NET Rocks. Stevie registered at the same time, but for some reason his badge said Stephen Forte Forte. When I saw Forte Forte, I immediately said "Tempo Tempo!" which connects to a long running story about some hot Turkish pop stars . And Stevie's reaction to that when they offered to fix his badge was to get it changed to Tempo Tempo Forte Forte. They agreed, and he was pleased.Strangeloop Setup_sm

From the registration area we wandered over to the sponsors' booths to check out the Strangeloop booth. It looked awesome, even not entirely set up.

After that it was time for speaker check-in with the speaker boss, Lynn Edwards. Stephen and I walked into the Speaker Room and immediately dropped to our knees and went prostrate in our standard response to being before Lynn... "We are NOT WORTHY!" It makes Lynn happy. We got our speaker shirts and headed back for the Peabody in time for the group photo.

The group photo this year was taken out on the pool deck, and took longer than usual because we waited for Tim Huckaby and Kate Gregory to show up... they kept calling as they ran from the conference center back to the Peabody to be in the photo. In total, there were about 35 RDs in the picture.

Then it was time to head back down to the summit room for the awards portion of the day. The RD Program gives out bronze, silver and gold awards based on your reach. I won gold again this year along with about a dozen other RDs. The final award given out is RD of the Year, and this year it went to... none other than Carl Franklin! A fine standing ovation was given. I think Carl was quite surprised.

The awards ended and we all loaded into a bus to head to the RD Party at Tu Tu Tango. Its an interesting place, vaguely resembling the Spanish Tapas Bars of Barcelona. There's occasionally a flamenco performance, and lots of little tasty plates of food. But for the most part, the RDs do what the RDs always want to do when they're together - they talked. Endlessly. And drank.

After three hours or so the party was winding up so it was time to move onto another party, this one the Party with Palermo! Jeff Palermo is a friend of the show, Iraqi vet and one of the nHibernate Mafia out of Austin. And he throws these really great parties at conferences. The last one was at the MVP Summit. This one was at the Glo Lounge, and about 450 people showed up. .NET Rocks! also sponsored the party, so Carl and I were greeted with plenty of cheers when we arrived. More talking and drinking ensued. At the party Carl met an old friend of his named Tina. Tina and Carl met waaaay back when Carl was living in Orlando, going to audio engineering school. Tina is a charmer, she fit in with our unruly mob just fine.

Eventually even the Party with Palermo was winding down, somewhere around midnight. But we weren't done yet, so we gathered up and headed back to the Rosen Plaza for more drinks. Our group ended up being Stephen Forte, Chris Menegay, Carl & Tina and our new friend Arthur (another blue badge pitching in with the RD program) and April (who works with the MVP program). At some point during the Party with Palermo Steve and Arthur had entered into a competition to get the most compromising photograph of themselves with a woman they had just met. This meant that Steve and Arthur were constantly flirting with the wait staff and other female patrons.

Arthur managed to convince all four of the quite beautiful waitresses at the Glo Lounge to pose with him in fairly provocative poses. Steve upped the ante by laying down on a pool table and getting Tina to straddle him and feed him cherries. You see the progression here. So having moved onto the Rosen, they were looking for more opportunities.

In the middle of all this entered Brigit and Virginia, part of the Strangeloop team. They were quick to order drinks and get out of the line of fire to watch the festivities. For me, it was a bit of a Seinfeld-esque "Worlds Colliding" moment. But, that's life in the big city. Eventually around 2am Birgit and Virginia headed up to their room. Steve ended the competition by convincing a pretty lady from another table near by to pose with him for a photo. She pulled down her shirt to maximize cleavage and shoved his nose in there. Arthur surrendered.

It wasn't long before there was no more booze to be had, and we dispersed to our respective hotels. Tomorrow the conference would really begin.

Sunday, June 3, 2007 10:59:30 PM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Heading out for Tech Ed Orlando!#

Well, its that happy time again... off to Orlando!

Carl and I have a ton of things to do at Tech Ed US this year. Most everything we're doing is focused around the Virtual Tech Ed Stage down in the main conference hall across from the sponsor's area.

On Monday evening we'll be doing The 64 Bit Question, where the audience will get to win all kinds of prizes for answering questions about .NET and .NET Rocks!

Then there's Speaker Idol. We've got twelve contestants that are going to give five minute talks before an audience and panel of judges. The winner of Speaker Idol gets a speaking slot at Tech Ed US 2008, including all the perks a speaker gets: airfare, hotel, etc. There are four rounds of three speakers each, two on Tuesday, two on Wednesday. The winner of each round goes on to the finals on Thursday.

And, just to really spice things up, we're offering up a wildcard slot for each round. Think you can handle it? Get a hold of me and I'll get you into the competition. When Carl and I did Speaker Idol in Europe, one of the wildcards made it to the finals!

In between all this craziness we're going to do all sorts of panel discussions on a variety of topics. We've got several worked out already, if you have ideas for more, let me know and perhaps we can put you on the Virtual Tech Ed Stage. Also, we'll be recording .NET Rocks! and RunAs Radio as well. My co-host for RunAs, Greg Hughes, is going to hang with us for a few days.

I'm going to work hard to blog routinely from Tech Ed. Somehow I'll fit it all in.

So if you're at Tech Ed, drop by the Virtual Tech Ed stage and say hi!

Friday, June 1, 2007 10:50:39 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


ASP.NET Scaling Chalk Talk at TechEd US#

I've been assembling my notes for my Chalk Talk on ASP.NET Scaling at TechEd US in Orlando.

The Chalk Talk will be held on Friday June 8 at 1pm, in the ASP.NET Community Area.

The biggest challenge in talking about scaling is to not fall into a discussion on performance. Most folks mix conversation about scaling and performance together, on the assumption that excellent performance provides excellent scaling. It isn't true - in some cases, to get great scalability, you have to impede performance. In reality, the best case scenario for scaling up an application is to maintain performance, not to improve it.

Performance is all about how quickly your web page responds to a request, scale is about how many requests you can handle at once. The "at once" part of that statement is important, since the idea that excellent performance provides excellent scale only is true when requests are not "at once", but fairly close together. If you could compute every page in 50ms and you only got requests every 100ms, you'd only be handling one request at a time... your great performance has given you the illusion of great scale. A lot of people consider this scaling, but its not really. Real scale is all about how your site handles simultaneous traffic.

There are two fundamental techniques for scaling: specialization and distribution.

Specialization is the process of separating out specific tasks that your web application does and building/buying specialized resources to handle those tasks better. You already do this - you have a separate database from your web servers. When you get into large scale web sites, image handling often becomes a specialization. You could set up dedicate image servers, or even offload that work to a third party company like Akamai. Getting the load of image handling out of your web servers allows them to handle more of the requests that they need to handle: Processing ASP.NET web pages. Obviously the challenge of making specialization work is going through every web page and altering the image tags so that they point at the image servers: Time consuming, but not especially hard. That's scaling by specialization.

The other technique for scaling is distribution. The key to distribution is creating multiple copies of the same resources and balancing work between them. Typically this would be multiple, identical web servers and a load balancer. The challenge to making distribution work well is effective load balancing, and that means a lack of affinity. That means no data specific to a given session kept in the web server, all of that information has to be available to every web server in the farm. There are a variety of affinite resources in ASP.NET, the best known of which is Session, and there are a variety of methods for making those resources non-affinite, the best known method being to write them to SQL Server.

This is where we get into the performance/scaling compromise: moving Session data out of the web server and over to SQL Server definitely slows down performance, in exchange for being much more scalable. But this is not a simple curve - sure, this method is slower per request on average, but that speed doesn't change for longer as the number of simultaneous requests increases.

Distribution also opens up advantages for reliability and maintainability, in exchange for dealing with the complexity of multiple servers. That's outside the scope of purely looking at scalability, but its certainly relevant to the equation over all. Its also important to remember that scalability isn't the only reason to have a web farm.

Of course, you can combine these two techniques, having specialized resources and distributing them across multiple servers. And this adds an additional advantage: You can scale each of those specialized resources independently. So if you need to improve the scalability of images, expand the image server farm.

The key to both these techniques is good instrumentation: You need to know where the problems are. Specialization helps because it creates clear boundaries between the various resources involved in a web application. And often you'll find that the non-affinity step you skipped becomes your key problem scaling up - and it will be instrumentation that will show that too you. Of course, then we get into the argument of whether or not the instrumentation *is* the problem, because it too exerts a certain amount of load on the servers.

There's more than just this to talk about as well: There are a variety of techniques for going to a non-affinity solution, there's also the challenges of caching at scale and invalidation.

And don't forget the database! As you scale up your web farm, the database can represent a serious bottleneck. Solving that is a huge task on its own, involving its own implementations around specialization and distribution.

I had originally suggested this topic as a breakout session, but I'm really looking forward to doing it as a Chalk Talk, for the higher level of interaction I expect to have with the audience. Chalk Talks are a lot more intimate, I'm going to steer clear of a slide deck and focus on using the white board to look at the various evolutions of a web application as it scales up.

Hope to see you there!

Friday, May 25, 2007 10:56:04 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Devteach in Montreal now, this fall in Vancouver!#

I'm in Montreal this week for DevTeach, the biggest little developers show in Canada.

Carl is here as well, along with many other of my favorite speakers.

On Wednesday I'll be doing my famous SQL Querying Tips & Tricks session, updated for 2007 (now with more Running Totals!).

But the biggest news came this morning: DevTeach is coming to Vancouver, November 26-30 2007!

I'm sure we'll pack the house in Vancouver, the number of speakers I've talked to over the years that have been waiting for a chance to come to Vancouver in the guise of a conference is amazing. I think its the best city in the world, but then I'm biased.

November is the rainy season for Vancouver, but if you like to ski, the end of November is right around the time the mountains open. There are three local mountains (Grouse, Seymour and Cypress) that you can take a local bus to. And then of course there's Whistler/Blackcomb, a couple of hours away. And there's another dozen ski mountains further away than that.

And besides, you're there to geek, and there's gonna be a lot of geekiness around at the end of November!


Tuesday, May 15, 2007 8:56:13 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Getting Back to Blogging#

So here's a funny story.

Not counting the post from June 2006 where I provided my sample code for TechEd US in Boston, it was about a year ago since my last blog post.

I was the middle of some serious water cooling upgrades, PWOP had a bunch of new shows under way and things were just hopping.

And I got the fish tank in my office rebuilt and up and running with a new tank, new plumbing and some lovely salt water fish.

It lasted about 12 hours, then it burst. 120 gallons of salt water all over the floor.

Took six months to clean up.

I didn't want to talk about it. It was very difficult to get work done, to do much of anything.

But that's all over now, and I miss you guys.

And there's a TON to talk about! New machines, new companies, new shows! All good stuff.

I'm in Orlando at the moment at DevConnections. Carl and I are going to interview Scott Guthrie in front of an audience tomorrow. That'll be fun.

I'll keep you posted. Promise.

Monday, March 26, 2007 1:06:43 PM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 



I'm hanging out in the United Kingdom in Reading, just outside of London, attending the VBUG Conference.

Carl and Mark Miller are here as well.

Yesterday I did my famous advanced querying session, I've attached my demo files here for the folks who wanted them.

AdvQuerying_Setup.sql (3.48 KB)

AdvQuerying.sql (23.52 KB)

I'm also including my error handling queries, since I had enough time to quickly show off how SQL Server 2005 can actually handle an error: in this example, I handle a deadlock inside a stored procedure.

Error Handling Main.sql (1.48 KB)

Error Handling Second.sql (.26 KB)

Besides my session, Carl and I did a DNR Live, talking to the four fellows involved in a Code Off - the concept is that all four developers, working independently, build four different UIs over top of a common set of banking web services. The four clients included WinForms, Office, ASP.NET and mobility clients (PDA and Smartphone). They had about four hours to build the clients, and the results were impressive. It was an incredibly compelling demonstration of how capable Visual Studio 2005 is.

The conference ends today, then I'm off to London for the weekend before heading home.

Thursday, November 24, 2005 2:09:17 AM (Pacific Standard Time, UTC-08:00) #    Comments [8]  | 


Hanging in Phoenix#

We got to Phoenix yesterday, and today we have a show at the Microsoft office in Phoenix.

The extra day is needed, not just for driving distance, but for sanity... its been a long trip, we need time to recover.

Plus I had a bunch of "real" work to do.

In between all this fun, John Bristowe and Co. put together a podcast called Plumbers at Work.

I'm hard on podcasts, I was before I was involved with .NET Rocks, and doubly so now. I won't listen to just anything, as soon as it gets annoying, I turn it off. But I listened to this entire show, and I encourage you to as well. Nice work JB!

Wednesday, November 2, 2005 2:44:58 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


A Weekend in Austin#

We've had such a great time in Texas, I'm almost loath to leave.

Dallas, Houston and Austin have all been great hosts.

Jeff Palermo, here in Austin, went above and beyond: not only setting up the show, but also securing a venue for recording Mondays and hosting a barbeque tonight. Thanks Jeff!

Tomorrow we have a stop over in El Paso before going on to Phoenix for our 15th show.

Sunday, October 30, 2005 10:13:33 PM (Pacific Standard Time, UTC-08:00) #    Comments [3]  | 


Dallas Bound#

Today is our longest haul to date, from Memphis to Dallas.

As I write this we're on the I-40 travelling 66mph heading 235, having crossed from Tennessee into Arkansas. The nav system says its an eight hour trip.

Geoff the sound guy was all excited to cross the Mississippi, naturally it was completely fogged in, the water not visible at all.

Last night's visit to the Memphis .NET Users Group brought a welcome relief from pizza - finally some barbeque! Everyone enjoyed some pulled pork sandwiches and beans, and the show itself went really well.

Three stops in Texas: Dallas, Houston and Austin. Check for show details.

Wednesday, October 26, 2005 5:32:13 AM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Chillin' in Atlanta#

With the Orlando show cancelled, we got a weekend off to spend in Atlanta.

Lots of housekeeping, catching up work, editing shows, doing laundry, mundane stuff like that.

Today we topped out, visiting the eastern-most Frys there is, down in Duluth, GA.

In case you're not sure, I'm pretty excited about the whole thing, here's the close up:

Not that we bought much, but just walking through a Frys makes me happy.

After that, we hit Benihana for dinner.

Tomorrow - Nashville.

Sunday, October 23, 2005 6:51:53 PM (Pacific Standard Time, UTC-08:00) #    Comments [5]  | 


Orlando Date Cancelled#

Looks like I spoke too soon - the folks on the ground in Orlando have now cancelled the show.

With evacuations already under way, it just doesn't make any sense to drive into trouble.

We'll make it up to them at some point, maybe a special trip (by plane, of course) in the spring.

Meantime, we have some extra time in Atlanta... this could be trouble.

Wednesday, October 19, 2005 12:51:32 PM (Pacific Standard Time, UTC-08:00) #    Comments [4]  | 


Online in the RV#

The RoadTrip is under way, we've completed our first two shows in Boston, MA and Hartford, CT.

The crowds were appreciative of our talks, our info and the loot! We gave away some great stuff to Carl's renditions of Clementine.

We've been online on the RV (where I wrote this blog post), using GSM cell phones (courtesy Cingular) through our laptops. Along the way we've used the web cam to make faces at our kids and generally behave silly.

Tonight we're talking in New York, tomorrow at the New Jersey Code Camp. And Sunday we head for Philly to hangout with the Otaku Generation folks and record a Mondays!

Friday, October 14, 2005 11:26:31 AM (Pacific Standard Time, UTC-08:00) #    Comments [3]  | 



At Tech Ed Orlando a bunch of the RDs got together to record ten minute videos called GrokTalks.

The idea of the GrokTalk came from the thought that often in conferences we find a useful tidbit in a session that is only about ten minutes long... so why not do only those ten minutes?

My GrokTalk focused on the new error handling capabilities of SQL Server 2005 and how you can use them to recover from a deadlock inside of a stored procedure. You can take a look at my video and the others at


Monday, June 27, 2005 8:02:43 AM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Post-Tech Ed#

I had every intention of blogging through Tech Ed, but it didn't happen.

One week ago today (Monday), I was walking from my hotel room to Tech Ed in a really foul mood. Being grouchy is rather unusual for me, but you can ask Steve Forte and Cathi Gero, they were there, and boy, was I grouchy.

I guess its been a few years since I've done back-to-back conferences, having done the SDC conference in the Netherlands the previous week, my body was trying to tell me I should be at home by then.

All of this changed when I got on stage with Steve to do our Advanced Querying session.

Y'know, speaking at conferences is really a money losing proposition for the majority of speakers, myself included. I would be making more money staying at home and working. But its really, really fun. Really. Engaging a big group of people (and there was about 800 people in the room) is a challenge, its exciting, and when it goes well, you're in orbit for the rest of the day. And I think it went pretty well - lots of laughter and ooh-aahs.

So to my audience at my first session: THANKS! You made my week.

Some folks have been emailing me, unable to find the samples for the session. I've attached two files here, the first is the setup file which creates the sample tables.

Setup.sql (3.57 KB)

The second is the demo script itself with all the queries Steve and I showed.

SS2k-YukonSamples.sql (24.42 KB)

We got a ton of response on this session, and some cool new ideas for a new version next year.

My second session on Tuesday was the Profiler session, with my special guest Vipul Shah who jumped in to show off the cool new features of Profiler in SQL Server 2005. Its a cool session, but I think with Profiler 2005 coming, I'm going to have to rewrite it to really dig into the new capabilities of the tool.

As I explained in the session, my real focus on the Profiler session was to let developers know that things can happen to your queries between your code and SQL Server, and Profiler is really the only way to know. The big example I show is ADO 2.5 messing with a SELECT statement and stored procedure, wrapping them in cursors. I haven't found the same behaviour in ADO.NET, so I think the demo is getting moot.

I'm thinking next year I'll revise the session to make it more of a “Using Profiler as a Diagnostic Tool” type session.

On Wednesday Carl Franklin and I did .NET Rocks! in front of a live audience. I think there were close to a thousand people in the room, which was at the far end of the conference center. And I do mean the far end - I figured by the time we got there we'd walked to Cuba. We interviewed the Team System guys, I think the show went really well, it was fun to dig into more of the story behind Team System... and even better to have a bunch of fans watching the show!

Alas, my version of the standard DNR disclaimer (normally Geoff's domain) didn't make the cut of the show, but either way, a good listen.

Tech Ed may be over, but the Tech Ed Charity Auction isn't. 23 Tech Ed speakers, including me, are donating an hour of consulting time via phone, email or IM. You can bid on EBay at The auction ends on June 16, so bid soon, and bid often.

Monday, June 13, 2005 5:15:38 PM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


Recapping SDC#

When we say Beer Night, we mean it!

Near the beginning of this evening session, Kent Alstad and Remi Caron conspired to bring Steve and I these huge two liter beers in Heineken labelled boots. I finished mine, Steve didn't. Not that he wasted it, he filled a dozen regular sized glasses from the boot.

The session itself was a melage of SQL Server 2005 topics, our slide deck and five slides: the title slide called the session “Estaban, 'splain dis Jukon to me!” It got less serious from there.

We had a fine discussion on the horror and fear around using the CLR inside of SQL Server, Ted Neward and Markus Egger got into it before Steve put the brakes on what was turning into an entirely too serious discussion.

I have to thank Kim Tripp for firmly planting all the details of Snapshot Isolation into my head, I think I was able to deliver a coherent explanation to everyone when the topic came up.

The beer continued to flow after the session, but we still knocked out some good talks the next morning. The conference was a ton of fun, its nice to see the SDGN group growing bigger and better still.

The day after the conference we went on the traditional Holland Tour, although this year it wasn't traditional at all... we actually got to sleep in a bit, rather than leaving at 8am as we have many years, we weren't loaded up and gone until 10! First stop was the Airborne Museum in Arnhem, which showed the history of the northern-most (and unsuccessful) part of operation Market-Garden.

Suitably subdued, our next stop after doing several spirals around the Netherlands was a paintball center!

The paintball matches were about 10 on 10, doing various missions: capture the flag, deliver your flag, and the Blackhawk down scenario, where you have a VIP stuck in the helicopter and have to go in and rescue them.

Our team won three of four matches, and I have to say that even our loss was pretty sketchy. I'd attribute our success to some great players, including the crazy fire teams of Steve Forte and Arnot, Ted Neward and Kent Alstad, Remi and Rob and the implacable Cathi Gero, who knows exactly what a VIP should do - stay alive and book it down the trail!

Saturday, June 4, 2005 6:55:19 AM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


SDC Day One#

I'm sitting in the back of the main hall at the SDC 2005 Conference outside Arnhem, in the Netherlands.

There's a keynote going on... in Dutch.

I've just finished my first session, the Advanced Querying Tips & Tricks session that I'll do again next week at Tech Ed Orlando. The session went very well, I did it solo, in Orlando it'll be a duet with Stephen Forte.

After lunch Kent Alstad and I are up, talking about requirements. We've done the session before, its been updated, and its a lot of fun. We argue a fair bit, usually me causing trouble complaining about all this planning he wants to do.

Tonight, Steve and I are on again... in the schedule its called “Mid Evening Beer Session with Technical Content.“ In the past its been called a Geek Night and other silly things. Its really Steve and I talking about any old thing and generally behaving foolishly. As the beer flows, it gets more foolish. Looks like its going to be a packed house tonight...


Monday, May 30, 2005 3:17:44 AM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


My poor, neglected blog...#

Six weeks since my last entry... and its not that I don't have anything to say, but I've been so busy, by the time I get home, I just want to sleep.

Various highlights of the past six weeks:

  • Hung out with Tim Huckaby and his family the weekend of April 16th, lots of fun!
  • Kate Gregory and I did a duet deep dive at the end of April, talking about VSTO.
  • All the Canadian RDs got together at Microsoft Canada in Mississauga, where we found out that Craig Flanagan, our intrepid leader, was moving on to bigger and more XBoxie things.
  • Fellow RD Guy Barrette spent a week out here doing talks on Visual Studio 2005 and had a chance to visit my little toyland.
  • I test ran my SQL Querying talk for Tech Ed at both the Victoria .NET User Group and VANTUG!

Which brings me up to current events... I leave this afternoon for the Netherlands to present at SDC 2005 at Papendal outside Arnhem. From there I'm headed to New London, Connecticut to spend some time with Carl and do a few shows (including something new!). After THAT, Carl and I are both headed down to Tech Ed in Orlando (same flights and everything).

I'm doing two sessions at Tech Ed, one is my Advanced Querying Techniques, Tips & Tricks session, which drills into various querying tricks I've collected over the years. This year I'm doing it with Steve Forte, and we're going to compare and contrast SQL Server 2000 and SQL Server 2005 to demonstrate how many of this slick querying techniques change with the latest and greatest.

The other session is a reprisal of my SQL Profiler for the Developer session that I did last year - there won't be any ice cream bars this year I'm afraid. However, I do have a special guest, Vipul Shah is going to show off some of the new goodies in SQL Server 2005 for Profiler junkies.

So finally, I'll stagger home around June 9th, all spring conferenced out.

Maybe then I'll get to fixing my monster machine... it burned up a week after I finished building it, and its sat there dead ever since. Did I mention I've been busy? There isn't going to be any easy fixes, everything worked perfect, but there's just not enough cooling in that little eight inch radiator.

Friday, May 27, 2005 10:57:27 AM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


.NET Rocks! at Tech Ed Orlando!#

Well, we're all confirmed now, Carl and I will be doing an episode of .NET Rocks! at Tech Ed Orlando this year. We'll be recording it over lunch on Wednesday, June 8th. Of course, you're all invited to watch the taping: .NET Rocks! live is much sillier than what actually ends up in the recorded version.

We really wanted to put together a cool show for a live taping, and I think we really lucked out - we're going to be talking to folks from the Visual Studio 2005 Team System development team.

  • Michael Leworthy (VSTS general)
  • Eric Lee (TFS and Test)
  • Ajay Sudan (Architect and Developer)
  • Bindia Hallauer (MSF)

Looks like its going to be a ton of fun. We had a great time doing .NET Rocks! in front of a live audience at DevConnections in Orlando, this show looks like it'll be a blast.

Sunday, April 10, 2005 9:17:27 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Out of Florida, into the Fire...#

Been an intense few days.

Spent about 36 hours in Orlando, arriving Monday night and leaving Wednesday morning.

In between I visited with many of the speakers at DevConnections, recorded DotNetRocks with Rocky Lhotka and Bill Vaughn, recorded Mondays, had a couple of great meals, talked about The Daily Commute at great length with Carl and squeezed in a soak in the hot tub.

Not a whole lot of room for sleep in that 36 hours - I don't remember much of the flight home.

Now I'm back home, and back into the fray again... not just work, but now fellow Canadian RD Barry Gervin asked me to pitch in on his Architect's Breakfast - Enterprise Integration Patterns on March 30. Being a sucker for free food, I couldn't very well say no. I'll be moderating one of the tables and trying hard not to cause too many problems. Integration is a huge part of my life these days and always a fun topic to talk about. So if you haven't already signed up, now you have extra incentive - if goaded enough, I'll tell a story or two.


Thursday, March 24, 2005 2:33:51 PM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


Enroute to Florida, DotNetRocks in the news (again)...#

I'm enroute to Orlando via Seatac, Carl sends me this link to an article on podcasting in the Hartford Courant.

Meantime, Carl got TheDailyCommute web site up and running... there's a few more details to work out, but don't worry, you'll be blown away with this service. This is the future of podcasting.

What's next? People have been asking about a .NET Rocks World Tour... I was thinking maybe we should just go from Tech Ed to Tech Ed. Lemme know whatcha think!

Sunday, March 20, 2005 9:49:35 AM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


DotNetRocks comes to Florida...#

Two ways, too...

Carl and I just finished interviewing Ken Getz, we dug into VS2005, ADO.NET, Vonage and other cool toys. Between Ken and I, Carl hardly got a word in edgewise...

Oh, and the Florida reference? Ken recently moved there.

The second Florida reference is next week's show, which is going to be recorded at the DevConnections conference in Orlando, Florida. That's right, Carl and I will be together, rather than on opposite coasts, along with Geoff. We're interviewing Bill Vaughn and Rocky Lhotka on Tuesday, March 22nd. Oh, and if you're at the conference, you can come and watch!

Thursday, March 17, 2005 7:25:41 PM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Blyth and Hanselman Strike Again...#

Yeop, those two are at it again.

Maybe there's some competition for the best Tech Ed video that I wasn't aware of, this one is amazing...


Thursday, March 17, 2005 7:20:00 PM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


Hanselman and Blyth - Tech Ed Promo Genius#
Friday, March 11, 2005 10:13:44 PM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


TechEd 2005 (Jonathan Goodyear is up to no good)#

Fellow RD Jonathan Goodyear filled the RDs in on a little secret that's going to take place at TechEd 2005... unfortunately, I can't tell you what it is.

But you can get a hint at Jon's site at

Just another reason to attend TechEd 2005, as if you needed any more incentive.

Oh, and I'll be there too: I'm presenting two sessions, my famous SQL Profiler for the Developer session (which I'm told would have won “funniest session of Tech Ed” last year if such an award existed) and one of my favorite sessions of all time, but never-before-presented-at-TechEd, SQL Querying Tips & Techniques session.

Thursday, March 3, 2005 11:15:36 AM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Dustin' Off the Ole Blog...#

Been a long while since I've posted to the blog - and no, I still haven't finished the Kili picture site. I will one of these days.

So here's a recap of the fun post-Kili:

Back in November I got together with all the DotNetRocks folks for a little party and we invited along some friends - about thirty people showed up in Las Vegas for some laughs and a first screening of DotNetRocks: The Movie. It was about that time that DNR reorganized, cutting back to one hour and focusing on a more serious interview approach to the show. The silly stuff (which includes me as the ToyBoy) moved over to a new show called Mondays - What Sunday Threw Up.

Also in November my buddy Joel Semeniuk dropped into Vancouver to do a presentation on Smart Client Development to the local users groups. Which was helpful for me, because I'd do the same presentation to the Victoria .NET Users Group the following week.

This year Christmas and New Years were low key events - last year the fam went to Costa Rica, which was good fun, but not exactly winter time any more. My favorite goodie for Christmas was a new set of chef's knives. Yeah I know, its weird, not a tech toy at all, but I already got lots of 'em, and everyone has given up trying to buy them for me, I'm too particular. But a good Heckel knife, well, that's a great gift.

So what's coming up? Well, DNR's 100th show is coming and I've been invited to reminisce with Carl and the gang. There's a new tour on Interoperability coming too. And I've got a whole bunch of crazy new hardware to set up. And then there's some really important stuff (see next post).

Sunday, January 23, 2005 8:00:10 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


MOM 2005 and SQL Server 2005 at VANTUG#

Had a great time last night at the VANTUG General Meeting. Excellent turn out too - almost every seat was filled.

I demonstrated Microsoft Operations Manager 2005. This is a very cool technology for those of us who are responsible for the care and feeding of a bunch of servers. MOM 2005 is part of Microsoft System Center, which also includes Systems Management Server. And Microsoft System Center is a key player in the Dynamic Systems Initiative (DSI), one of Microsoft's three major initiatives (along with Trustworthy Computing and the .NET Platform).

The Dynamic Systems Initiative focuses on making all aspects of software and hardware manageable. At the software level that means building applications with management in mind - the most obvious thing putting Windows Management Instrumentation (WMI) points throughout your application. Software like SQL Server and Exchange report a steady stream of WMI data points to anyone listening. Think of it as SNMP on steroids. And MOM is all about consuming WMI data.

You can instrument your own applications in .NET from the System.Management namespaces, creating your own custom events, performance counters, and so on. Its not a simple thing to do, but if you're serious about being an application that can be maintained and used in the long term, its worth the effort. Log files are not enough any more, you want to work and play in the DSI world.

Ultimately, doing DSI properly means spending less money and time on keeping servers operational. Its a worthy goal, but like all of Microsoft's major initiatives, its not going to happen overnight: its a combination of new software, new thinking and new work. A couple of years from now, we'll look back on the way we manage systems today the same way we look at email pre-Internet.

Besides having fun with MOM 2005, I showed off the new error handling abilities of SQL Server 2005, essentially doing an abbreviated version of my T-SQL Error Handling in SQL Server 2005 session from Tech Ed Malaysia.

After that, it was all about toys. Here's the goodies I showed off:

Unfortunately, we didn't get to talking about my home server rig, but I'm sure I'll get a chance in the next month or so to talk about the trials and tribulations of keeping a half dozen servers happy and healthy at home.


DSI | Speaking | SQL Server | Toys
Thursday, September 23, 2004 10:34:44 AM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Tech Ed Malaysia Post-Mortem#

I'm finally back home from Kuala Lumpur after 22 hours of travelling. I couldn't bring myself to blog in my near hallucinatory travel state, so I've had a good night's sleep, woken up very early and am busy catching stuff up, including this.

Tech Ed Malaysia was lots of fun, the attendees were very enthusiastic and friendly. The speaker cadre was astounding, very talented folks and lots of fun to be around.

Although the hotel was in the middle of nowhere (I started calling it the “New Jersey of Kuala Lumpur”), we did manage to get into town a number of times and do some fine exploring. We ate a chinese dinner from an outdoor kitchen in an alleyway, and bought all kinds of gadgets from various shops.

Saturday was my last full day in Kuala Lumpur, and I started it out with doing DotNetRocks from my hotel room. I had brought my full audio rig with me, including the large condensor mike and digitizer. What I hadn't realized when I first packed it up is that the power supply for the digitizer does not support 220 volts, unlike my laptop power supply. Tim Huckaby lent me his power converter (thanks Tim!) but I didn't have the smarts to actually test it out in advance.

Since Kuala Lumpur is exactly twelve time zones away from New London Connecticut where Carl and the DNR studios actually are, I was doing the show Saturday morning live with them working Friday night. So I'm up and on my laptop at 7am, talking to Carl (where its 7pm). We talk about the toys and how to do the show and agree to reconvene at 8:15am for a sound check before the show starts at 9am.

By 7:30am I'm off for a shower and some breakfast. I'd wanted to talk about the Low Yat Plaza we'd found the night before, which is this incredible toy boy heaven. Kim Tripp had taken some photos of it and I wanted to blog those before the show so everyone could see this crazy place. Kim loaded the pictures on a USB key for me and I went back to my room.

I get back to my room and I can't open the door - mysteriously, the flip bar lock had set itself! I went down to the front desk to get some help, and they sent a maintenance guy up. In theory, these locks can only be unlocked when the door is closed, but the fellow was confident he could open it. Apparently it happens all the time?!?

It took him a half hour of fiddling, but he did get the door open. Then it was my turn for some stupidity. I wired up my audio rig, but the digitizer wouldn't power up. I couldn't make Tim's power converter work! Finally, I had missed set up time, the show had to start, so I had a good hour to futz around before break time when we'd have another chance to test things out. I figured I might as well dump the pictures and return Kim's USB key, she was leaving in another hour or so.

When I told Kim my woes, she produced another power converter for me to try, so I went back up to my room, new block in hand. Kim's block had European plugs on it, and the European plugs on my power adapter were too loose to hold her heavy block in place, so I had to use Tim's block as a converter to hold things together... the resulting contraption stuck the better part of a foot out of the wall, so I braced it with my chair to stop it from falling out.

So, from the wall working outward, the plug adapter (my laptop plug is coming out the top), into which Tim's converter (acting as an adapter) is plugged into, then Kim's converter, and finally the digitzer brick.

This did the trick - I was finally up and running. At the half way point in the show we took some time to test latency (ping-pong), which turned out to be brutal: apparently doing VOIP half way around the world takes six seconds. Here's what my running audio rig looked like:

So in the end, the show came off fine, with the severe lag I couldn't chat with Carl and Rory much, but just sort of blurted out how much fun I was having in KL, the toys to talk about and the contest. As soon as the contest was under way I disconnected and ran to return Kim's power block to her before she had to leave.

With Kim gone, Goksin, Malek, Adam, Brian and I were free to do some serious toy shopping. We headed first to Central Market, picking up T-shirts, jewelry and other odds and ends. Brian and Adam cut out early, Brian had to head to the airport by 6pm, and Adam wanted to show Brian his tool before he left. So the three remaining shoppers headed back to the Low Yat Plaza to really check out the toys. Our mission - to get gigged.

Malek, Goksin and I all wanted gigabyte storage bits. Malek and Goksin were after 1GB SD cards, and we all wanted 1GB USB key. Kim had been gloating all week about her gigabyte scores in Singapore, having acquired a 1GB Compact Flash card AND a 1GB USB key. And to top it off, she bought a 2GB Compact Flash on our first visit to Low Yat the night before. She's the gig queen, and we wanted to at least be in the club.

We started at the very top level of the mall and worked downward, and it didn't take long to find this tiny Pretek 1GB USB drive. I started calling it “The gigabyte you can fit up your nose.“ Unfortunately, we were in a show room and they had none to sell! Supposedly there was a store on the lower levels had had them, so we headed there. Along the way we did find two 1GB SD cards, so Malek and Goksin were in the gig club for sure.

When we finally found the Pretek dealer, he had only ONE of the little drives. Very annoying, but we bought it anyway. Then we went back up to the top floor to complain. The fellow there was nice enough to call around to the other shops in the mall and found one more little drive, so I got one as well. So we three boys are all in the gig club, although Queen Kim leads the way as usual.

Speaking of Queen Kim, as we were wrapping up our toy feeding frenzy, Kim phones from Singapore! She's holding in her hands the Canon 20D digital SLR, and wants to confer with the ToyBoy on pricing... she figured the price converted to about $1675 US... I told her to buy buy buy! The camera isn't even available in the US yet, I believe its going to be released Oct 15th, and the best pre-order street price I've found is $1500... a $175 premium is worth it to be first!

Ultimately, I don't know if she actually bought the camera, I hope she did, I'm sure I'll hear about it soon enough.

After shopping we ate dinner at a Japanese buffet, then headed back to the hotel - Malek had a ride to the airport for 11pm. Enough time for a couple of quick beers before he was gone.

The next morning Goksin and I got up early and had breakfast together. Goksin left at 6am, I left at 7am. I called Goksin when I was ticketed and through customs at the airport, poor Malek was still there. Apparently Emiriates airlines had botched his reservation and left him for dead. Goksin, in the finest tradition of the Anti-Suckiness club, got a ticket for his buddy to get him as far as London, I'm sure he'll get himself the rest of the way home from there with a fine tale to tell. The three of us had a cup of tea together in the airport before dispersing for our various gates for home.

Speaking | Tech Ed | Toys | Travel
Monday, September 20, 2004 5:24:34 AM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Advanced Querying Techniques#

This session is one of my favorite “grab-bag” type sessions, and judging by the reaction of the attendees, one of their favorites too. I've never been mobbed with USB keys at the end of a session before. For those of you who didn't grab the code immediately off of me after the session, or from Tech Ed's COMM Net, I'm including it here as well.

In the session I explored essentially four areas of querying techniques. To some degree, they built on each other.

Initially I explored subquerying, an area lots of people dabble in, but haven't really hammered out all the details on. My personal favorite of the subquery examples is a duplicate detection query. In the real world, duplicate data gets entered, and we have to go clean it up. This query returns rows for every duplicate product, showing the oldest ID as the “real” one as well as the duplicate. You can adapt this query to clean up your database, transferring any foreign key rows to the oldest ID, etc.

SELECT Product_ID, Product_Name, Price,
 (SELECT MIN(Product_ID) FROM Products AS P1
  WHERE Products.Product_Name = P1.Product_Name) AS OldID
FROM Products WHERE Product_ID NOT IN
 (SELECT MIN(Product_ID) FROM Products AS P2
  WHERE Products.Product_Name = P2.Product_Name)

This version of the query show both a correlated subquery in the SELECT clause and the WHERE clause, as well as doing that one trick that subqueries are so good at - finding exceptions. The NOT IN statement says “give me only those rows that are not one of the minimum IDs for that product name.“

While I'm not going to go through every technique in the session, attached is the sample code for all of the techniques, including the very popular Rozenshtein cross-tab technique - both static and dynamic.

Advanced (42.34 KB)

Monday, September 20, 2004 4:03:01 AM (Pacific Standard Time, UTC-08:00) #    Comments [6]  | 


SQL Server Profiler for the Developer#

This is one of those “I always wanted to write this” sessions about a bit of software I think not enough people know about - the SQL Server Profiler.

Profiler is your friend - it shows you what arrives at SQL Server from your application. And, believe it or not, what arrives there is not always what you sent. Sometimes middleware messes with your SQL.

Profiler can also help you trace down tricky things, like where deadlocks are happening. A deadlock occurs when two connections each hold one resource that the other needs to finish a transaction. Neither one will finish unless the other gives up its resource. When SQL Server detects a deadlock, it picks a loser, failing that transaction with a 1205 error. The other connection can then complete its transaction.

Obviously, the best way to avoid deadlocks is to not ever do that - always lock resources in the same order. I make a list of the sequence in which I'll modify tables and then always write my stored procedures to do updates in that sequence. That way, stored procedures can block each other, but not deadlock. However, this still doesn't get rid of all deadlocks.

And the problem is, the error you get for deadlocks is a bit vague - the error message returns what the competing SPID was, which would typically indicate the other computer who's transaction succeeded, but not what table was involved in the deadlock. In the session (and included in the attachment for this blog entry) is the sample code to show a deadlock in Profiler and then you can use the Object ID information around the deadlock to query sysobjects and find what table/resource was involved in the deadlock.

Also in the sample are some queries for testing out the Index Tuning Wizard, part of the Profiler and a tool that will look at the queries in a Profiler Trace file and decide if any new indexes would benefit performance. It'll also recommend removing indexes that aren't ever used.

Finally, there's my little VB6 sample app that's good for playing with ADO 2.x to see how OLE DB can mess with your SQL - in the session I demonstrated how OLE DB actually converts your SQL statement into a cursor to fulfill your request for a modifyable server-side recordset. (375.31 KB)
Monday, September 20, 2004 3:43:25 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  | 


From Interoperability to Migration: SQL Server and Linux Databases Working Together#

This is the same session I did at Tech Ed San Diego with my buddy Steve Forte... unfortunately, Steve had a problem with his flights that meant he had to leave before the session actually started, making my duet more of a solo...

Steve and I have been doing duets for years, so I dragged a couple of photos out that we had used in the past for duet sessions...

This picture was taken around 1998 at the Papendal facility near Arnhem in the Netherlands, Steve (looks awfully young, doesn't he?) and I are working on our first joint session called “XML for N-Tier”.

This photo was taken at a costume party on Halloween of 2000 in Phoenix, Steve and I are dressed as the three musketeers, our third (Tom Howe) is taking the picture.

The interoperability session focuses on how you can use SQL Server to interoperate with other databases, in this case its Oracle 10g running on Red Hat Linux Fedora Core 1. The idea was to run two Virtual PC sessions, one with Windows 2003 and SQL Server 2000, the other Red Hat and Oracle 10g.

I used Werner Puschitz's step-by-step instructions to Installing Oracle 10g on Red Hat. Even then, its tricky, lots of places to go wrong. And since I'm running Linux from a Virtual PC session, part of the challenge is getting Red Hat happy in a VPC environment. Networking is also tough - I didn't want to use fixed IPs on the VPCs, since that would cause other network problems when plugged into various conference networks. Each VPC session grabs a dynamic IP, but the way Oracle is configured, you have to alter a listener file to tell Oracle what IP you're now running under.

On the SQL Server side of things, you need to install the Oracle tools to get Net Manager, which provides communication to Oracle from the Windows 2003 environment. That's another point where you have to specify the IP address of the Oracle server.

In SQL Server itself, the key to making the connection is linked servers - and the easiest way is using sp_addlinkedserver and sp_addlinkedsrvlogin stored procedures to establish the connection. The parameters look like this:

sp_addlinkedserver @server = 'OrclDB', @srvproduct = 'Oracle', @provider = 'MSDAORA', @datasrc = 'larryserv'

  • @server is the name you want to refer to the linked server with.
  • @srvproduct is the name of the database you're linking to. SQL Server checks this name carefully, if you misspelled Oracle, it won't work.
  • @provider is the name of the OLE DB provider to use, in this case its the Microsoft Oracle provider.
  • @datasrc is the name of the Oracle database from Net Manager.

sp_addlinkedsrvlogin @server = 'OrclDB', @useself = false, @locallogin = 'sa', @rmtuser = 'scott', @rmtpassword = 'tiger'

  • @server is the name of the linked server as specified in sp_addlinkedserver.
  • @useself is a flag to tell SQL Server to use the account currently logged into SQL Server on the remote server. Setting this to false means that the login will use the remote user and password supplied.
  • @locallogin is the name of the account that this login can be used by. You can set it to NULL and it works with all accounts. The account can be a SQL login or a Windows login.
  • @rmtuser is the user name to log into the remote server with.
  • @rmtpassword is the password to log into the remote server with.

Once the linked server is established, you can do queries like this:

select * from OrclDB..SYSTEM.TBLCONTACTS where lastname = 'Campbell'

You can see the only unusual aspect of this query is the table notation, indicating the linked server and the schema that the table is associated with. With Oracle, table names are case sensitive, so you have to get the case right.

In the session we discuss not only how to interoperate, but also how to migrate. The key to migration is to move the data last, not first. Build a .NET application that calls SQL Server stored procedures, and use the stored procedures to make the calls through to Oracle. That way you can build your new client without turning off the old client, and the two clients can run side-by-side for as long as necessary. Eventually, everyone will be using the new client since its getting all the new features.

You can start adding tables to SQL Server to add new features, linked servers will allow you to do joining between the two databases if you like. Eventually, when no one is using the old client any more, you can shut it down and begin moving tables from Oracle to SQL Server. You don't have to do them all at once, just move the tables as you have time, altering the stored procedures to point to SQL tables, rather than the linked Oracle tables. Ultimately, all the tables will be moved and you can shut down the remote connection.

On the other hand, you might discover that there's stuff in Oracle you can't do without, and you can maintain this level of interoperability indefinitely.

The session went very well, unfortunately its tough to give out as a demo, since everything is in VPC images... the Oracle/Red Hat image is nearly six gigabytes!

Thursday, September 16, 2004 9:09:09 PM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


T-SQL Error Handling in SQL Server 2005#

My first session at Tech Ed Malaysia focused on the new error handling features of T-SQL in SQL Server 2005.

Although its a cool session, I have to wonder about the practicalities of doing error handling SQL Server, after all, as a server application, its usually our job to receive requests from clients and then report back on the results of the request, whether they're happy noises or error messages. And I see error handling as the ability to actually handle an error - as in, detect it, fix the problem and retry the previously error-causing SQL statement. So when would you ever do this?

The only logical place I can think of is deadlocking. Deadlocking is an artifact of SQL Server, not clients... okay, granted, a poorly written client can generate lots of deadlocks, but no client ever sends the request “can I have a deadlock please”... although for some clients its a pretty close thing.

Deadlocks, for those out there new to the concepts, are not blocking, which is where one SQL statement has to wait while another finishes its business. A deadlock occurs when one connection has a lock and requires another lock, and another connection has the other lock and requires the one held by the first connection. Its unresolvable, so SQL Server detects it, and then picks a loser, who's transaction fails... the winner goes on to complete their transaction with no awareness of the suffering spread.

With SQL Server 2005, we can actual handle deadlocks - recover from them transparently so that the client applications don't even know they're happening. Now that doesn't mean that we shouldn't continue to avoid deadlocks in the first place. The best way is to avoid the scenario I just described: make sure all clients lock resources in the same order, so that they block each other, rather than deadlock. Blocks will naturally resolve on their own (or else timeout). Deadlocks are uglier. Stored procedures can help by making sure that clients can't grab data themselves, they have to go through stored procedures. And then you have rules for writing stored procedures, so that the same tables are modified in the same order in every procedure. As long as you make certain you're locking in the same order, you'll block rather than deadlock.

But even with those efforts, you'll still get the occasional deadlock, as transactional velocities rise and queries take longer and longer to run. That's where this clever bit of code comes in:




  UPDATE tblContact SET LastName = 'SP_LastName_1' WHERE ContactID = 1
  UPDATE tblContact SET LastName = 'SP_LastName_2' WHERE ContactID = 2
  SET @Err = @@ERROR
  IF @Err = 1205
    INSERT INTO ErrorLog (ErrID, ErrMsg) VALUES (@Err, 'Deadlock recovery attempt.')
    WAITFOR DELAY '00:00:10'
  IF @Err = 2627
    SET @ErrMsg = 'PK Violation.'
  IF @ErrMsg IS NULL
    SET @ErrMsg = 'Other Error.'
  INSERT INTO ErrorLog (ErrID, ErrMsg) VALUES (@Err, @ErrMsg)

So in this sample stored procedure, I use the new Try and Catch statements to provide error handling. The code in the Try block executes my intended update statements, in the example I'm just updating two contact rows, changing the last names. The two updates are wrapped in a transaction. If there's no problems, the transaction starts, the two rows are updated, the transaction is committed, and the stored procedure finishes.

Now, to introduce some fun, on a separate connection I do this:

  UPDATE tblContact SET LastName = 'Direct_LastName_2' WHERE ContactID = 2

And then in another connection I execute the stored procedure. So the first connection is holding a lock on ContactID = 2, and the stored procedure has got a lock on ContactID = 1 and is waiting for the lock on ContactID = 2. Now I hop back to the first connection and execute the following:

UPDATE tblContact SET LastName = 'Direct_LastName_1' WHERE ContactID = 1

Now I've created a deadlock situation. The first connection has a lock on ContactID = 2, waiting for a lock on ContactID = 1, and the stored procedure connection has a lock on ContactID = 1 and is waiting for a lock on ContactID = 2. SQL Server detects the deadlock and chooses a loser. Since the stored procedure has its deadlock priority set low, it always loses.

When the deadlock error occurs in the stored procedure, the code in the Catch block executes. The first thing that happens is I retrieve the error code from @@ERROR and take a look at it. If its an error 1205, I know that's a deadlock, so I can do my deadlock recovery. The first step is to rollback the transaction so far. This releases the lock the stored procedure was holding on ContactID = 1, so the other connection finishes the transaction successfully. Since its finished, I can commit it, changing the last names to Direct_LastName_1 and Direct_LastName_2.

Meantime, back at the stored procedure, after rolling back the transaction, the stored procedure records the fact that it had a deadlock into an error logging table, then waits a few seconds to give the other side of the deadlock a chance to finish. Once the wait is over, the GOTO statement jumps execution back up to just above the BEGIN TRY block in the stored procedure, and the updates are attempted again. Since the other transaction is already finished, all is well, the transaction completes and the names are changed to SP_LastName_1 and SP_LastName_2. Who said being the deadlock loser sucked?

Next session - the SQL Server/Windows interop with Oracle/Linux session... supposed to be a duet with Steve Forte, but his flights got messed up and he has to leave early, so I'm doing this one solo again, just like in Montreal. Right after the interop session I'm reprising my SQL Server Profiler for the Developer session.

Wednesday, September 15, 2004 6:00:29 PM (Pacific Standard Time, UTC-08:00) #    Comments [6]  | 


Too Much Fun To Blog...#

Wow, already half way into Tech Ed Malaysia, and I'm finally getting a blog entry done. We're having waaay too much fun.

After flying 13 hours Vancouver to Hong Kong, followed almost immediately by the three hour Hong Kong-Kuala Lumpur leg, I arrived in KL short a day... got on the plane late Thursday night, arrived the afternoon of Saturday. Those darn date lines.

It didn't take me long after arriving to find Tim Huckaby (who was good enough to leave me a message at the desk) and Goksin Bakir (he just called me on my cell phone)... we hung out at the pool and drank beer, complained about jet lag and soaked up the indominable KL heat. That night Brian Noyes join us as well for a trip across the lake to a nice Chinese dinner where they have one sneaky Peking Duck.

Sunday was the super tour day - from 7:30am to 9pm we were out and about with our guide Razali and the fabulous elephants of Kuala Gandah. Tim, Brian, Goksin, Kim and I were made volunteers of the sanctuary, rather than visitors, which gave us more access, but we had to do some work, too... here's some examples:

This is Cek Mek with our guide, Razali. One of our first stops at the sanctuary was to go out in 4x4s to feed Cek Mek... she spends most of her time away from the rest of the herd, hanging out in the jungle. She's one of the two “working” elephants, who are actually used to assist the team in moving wild elephants. The other working elephant is Cek Bunga, who doesn't like people all that much, so we didn't get anywhere near her.

Back at the sanctuary proper, we got into the main compound to visit with more elephants, some big:

...and not so big...

We also got to visit with Lasha, a 2.5 year old male who has been fighting intestinal parasites. He's very weak and thin, so he's being kept from the rest of the herd for his own safety. We went into an area behind the compound to visit with him and give him some goodies to eat.

Kim was especially fond of him...

Later, Kim and Brian brought Lasha out from the holding area in the back to the main area for feeding.

As volunteers, we helped visitors feed the elephants... there is a technique and some safety tips involved!

Later in the afternoon Razali took us on a hike through the jungle, to a little village... maybe a dozen people lived there total, the patriarch of the family is a master blow-darter. He put on a fine display firing a foot long dart into a banana tree a good fifty feet away... after a couple of tries, anyway.

Then Goksin took a shot at it... apparently Goksin is a blowdart shark, nailing the tree on the first shot!

After that, we weren't allowed to play with the blowgun any more. We hiked back to the village. Along the way Razali pointed out and offered up some food from the jungle, including heart of palm and water from a vine.

Between the five of us, we took about 400 pictures, I'll put together a full storyboard one of these days.

So that was Sunday - after returning to the hotel we headed down to the bar and consolidated pictures, plus Steve Forte showed up. We made plans for the next day, taking a tour of the Batu Caves and other religious sites. Kim had to do a pre-conference seminar the whole day, she's still annoyed with us for having fun while she had to work.

This is the entrance to the Batu Caves, all 272 steps of it.

Did I mention there were monkeys (long-tailed macaques, to be exact) everywhere? These are the rats of the monkey world, stealing off of anybody who is slow enough to snag. We saw monkeys running off with bags of peanuts, ice cream bars, you name it. One little bugger grabbed my water bottle, I shook him off, and as he prepared to give another go, I flipped the bottle around and gave him a face full. Yeah yeah, I'm fighting with a monkey, but hey, he started it!

The Batu Caves are ancient limestone, filled with Hindu shrines. And they're huge!

This is the view from the top of the stairs looking into the caves, you can see the first chamber, the roof is 250 feet up. Beyond is stairs into a second open air chamber.

After taking a look at the rock formations, the shrines and the macaques scattered throughout the caves, we headed back down the many stairs and into our taxi for our next stop on the religious tour... the museum of Islamic art. However, the cab driver was a bit confused and took us instead to the National Museum of Malaysian Art... its a nice museum, full of stories of the heritage of Malaysia. But it didn't fit with our theme of all Malaysian faiths, so after a quick walk through we headed back to the cab.

On the second try the cabbie did find the Museum of Islamic Art, and also found out it was closed on Mondays. Ah well. Third stop, a Buddhist Temple. This place was open, and fabulous.

Our cabbie came with us to give us basic instruction on how to get around the temple, including proper observations of lighting some incense, and getting your fortune.

Here Steve and Brian, shoes off, are getting instructions on using the luck sticks. You pick up the sticks in a bunch, then drop them back into the bin a couple of times. Then you pick one, and match its number with a little drawer in the bin. Inside the drawer is a bit of paper with your fortune on it. Those towers with the ladder beside them are wish towers, in a different ritual you put a wish on a bit of paper and the temple staff put the wish in with one of those lights on the towers.

That was enough fun for Monday, we headed back to the hotel.

On Tuesday Steve and I headed back to the Islamic Museum of Art, which was now open... only to discover that you weren't allowed to take photos inside. However, it is an amazing place, lots of old copies of the Quran and other artifacts from the history of Islam. There was a big screen tied to a computer in one room that would read the Quran to you in Arabic, showing simultaneous English translation. Very cool. And the favorite part of the museum was the model room, full of 1/100 scale models of the major mosques around the world, including Mecca and Medina. Incredible structures, temples with room for two million people!

Tuesday afternoon was my first bit of work, a SQL Server “Ask the Experts” panel I sat on with Kim and Steve, along with Rodney Fournier (the cluster god!) and Prakash Sundaresen... Joe Yong from the SQL team showed up to field all the “When is SQL Server 2005 shipping” questions.

Its now early Wednesday morning here in Kuala Lumpur, and the real work begins. I have a session every day til the end now, two on Thursday.

Tuesday, September 14, 2004 3:45:50 PM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Off to Kuala Lumpur...#

I'm just a few hours away from flying off to Kuala Lumpur for Tech Ed Malaysia.

I'm flying on Cathay Pacific, not my usual airline, but their routing kicks ass: Vancouver-Hong Kong-Kuala Lumpur. I leave at 3am Friday morning (that's late, late Thursday night) and arrive around 1pm on Saturday. Its about 24 hours travel, door-to-door, I did the same trip in March for a Business Intelligence workshop.

There's a significant contingent of RDs going... Adam Cogan, Goksin Bakir, Kim Tripp, Malek Kemmou, Steve Forte and Tim Huckaby. So expect some serious speaking, and serious partying.

A bunch of us are heading out with one of my favorite Malaysians, Razali of the Utan Bara Adventure Team. We're going to spend the day with Razali, exploring Malaysian jungle and hanging with the elephants of the Kuala Gandah Elephant Center.

And then there's the actual conference. I'm doing an all SQL Server set of sessions:

  • SQL Server Profiler for the Developer
  • Advanced SQL Querying Techniques
  • T-SQL Error Handling in SQL Server 2005

Plus Steve and I are going to do our duet session on interoperability between SQL Server on Windows 2003 Server and Oracle on Red Hat Linux.

We're staying at a place called the Palace of the Golden Horses, apparently its an amazing resort, I guess we'll find out when I get there.


Thursday, September 9, 2004 5:06:16 PM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


Allchin lays down on Longhorn#

Man, I'm a huge fan of Jim Allchin. He's straight talking, serious and kicks ass. My current favorite quote from Jim: “Malware. I want it dead.” And follows that by saying that he hadn't been able to deliver that 100% for XP SP2. But they're still plugging away.

But the topic of the day was Longhorn. Most people know that the name comes from the Longhorn bar that sits between Whistler (the code name of Windows XP) and Blackcomb (which was supposed to be the next version of Windows). But the reality of Longhorn is that it has grown to be an amazing and complex version of Windows. The highlight peices have been Avalon, Indigo and WinFS. Microsoft has promised a stunning amount of new functionality in Longhorn, and Jim is promising to deliver on it, just in a different form.

What's happened is that the Windows team is fixing the date of Longhorn - for “holiday time 2006.” To do that, they are breaking up the delivery of all these different features.

The exciting part is that versions of Avalon and Indigo are going to be made available for Windows XP and Windows Server 2003. This is great news for developers, we're going to get a chance to build software utilizing the capabilities of these subsystems without having to have Longhorn. We don't have to drive our customers to the latest OS to take advantage of this new technology.

WinFS is being pushed back, to be delivered after Longhorn. The way Jim talked about it, it sounds to me like WinFS is growing in scope - the more they realize the power of object based data storage, the more development they need to do. Jim said they realized they don't want to ship the WinFS client component without the server component, and that means they need more time. It makes sense to me, it sounds like its going to be worth the wait. And it doesn't sound like its going to be long after, either. Jim says that WinFS will be in beta when Longhorn ships. That pretty much means that WinFS must ship in 2007 - Microsoft rarely ever goes over a year in beta.

The obvious question is “what's left for Longhorn?” and the answer is plenty. Sure, Avalon, Indigo and WinFS have been the highlight elements, but there is plenty more in the plan. A vastly more advanced search system is key, along with better functionality all around. The new display driver model of Longhorn is going to make a huge difference, I don't think we'll see the full power of Avalon until that is in place. A vastly improved deployment engine is going to make a big difference to anyone handling more computers than they can reach easily in one room.

In the end, the room applauded Jim, not just for being forthright about the realities, but because I think everyone here realized that this new plan is a better plan. Waiting for a massive shipment of all new code is not the best way to go - break the important bits down and get them out the door. That way we can kick the tires, explore the capabilities, and feed back into Microsoft to make them better. When the whole comes together, it'll be vastly superior to what we originally came up with at the beginning.


Friday, August 27, 2004 12:46:42 PM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


Evangelism Concentration Camp#

I'm down in Redmond at the Evangelism Airlift, also known as the Evangelism Concentration Camp.

We're all in the same hotel together, all sessions are run in the hotel, and the sessions run from 8am to 9:30pm every day. Breakfast, lunch and dinner is included, such as it is... bagels and fruit for breakfast, various catered lunch objects, and dinner has a focus on meat popsicles.

The concentration comes from the non-stop, high-density content about what the next generation (2005) tools can do, should do, and how it should be taught.

For the most part its all Microsoft employees in the audience, but there's a small, but rather vocal (as if they came in any other form) contingent of Regional Directors. Steve Forte (the vocal part), Kim Tripp (the SQL Goddess!) and Chris Kinsman (local dude) are all in the room with me...

Thursday, August 26, 2004 12:37:39 PM (Pacific Standard Time, UTC-08:00) #    Comments [4]  | 


Doing DotNetRocks!#

On June 24th I was a guest on DotNetRocks... but we didn't talk about .NET, we talked about my favorite subject, TOYS! Actually, the focus was on water-cooled computers, which is definitely toy-ish, although we digressed into a number of equally entertaining topics.

There were a variety of questions, so I figured I'd best answer them here. First off, I put together a little photo-pictorial of one of my water cooling conversions.

One of the gizmos I used in that photo-pictorial but didn't take a photo of is this little motherboard power adapter that I plug into my power supply so that I can fire it up without having to actual turn the machine on. It's very useful for being able to run the pump without heating anything delicate up.

Its just a female 20 pin ATX plug that connects pins 13 (ground) and 14 (power supply on) together. So there ya go Geoff, don't say I never did nuthin fer ya.

If you looked at the water cooling page above, you may have noticed I'm using rackmount cases for my workstations. I have a server closet that's all rackmounted, but I also had my desk custom built with rackmount bays as well.

This is one of the bays being fitted out while the office was still under construction. The rack itself is a 12U Middle Atlantic SRSR Rotating Sliding Rail System rack. This rack actually slides out of the bay and then rotates once fully extended so you can get at the back of the case without digging around blind. I have two of these in the office, one for each main workstation bay. There's enough room on the rack for a UPS, two PCs and other sundry gear.

Although we didn't talk a whole lot about it on the show, for rackmount junkies, here are a couple of links to my server rack set ups. The first link is to my old rack, which ran from September 2000 to December 2002. After that, my new rack server closet was up and running, which is how it continues to this day.

This shot was taken today... the rack is essential the same as it was December 19, 2002, except that it's a whole bunch messier. Over the summer I'll be rebuilding most of the systems in here, after all, some of the hard drives are now four years old an essentially ticking time bombs well past their MTBF (Mean Time Before Failure).

Sunday, June 27, 2004 5:50:16 PM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


Wrapping up at DevTeach#

I'm about an hour away from delivering my last session in the last time block at DevTeach in Montreal.

Its a repeat session of my Introduction to OLAP, a session I've done a number of times and can have a lot of fun with. I love the last session of the conference, its a good time for humour and lots of silliness. I did this session in the first block in the first day... 8am Sunday morning is a tough time to present, much less to attend.

The conference has been lots of fun, many of the usual suspects were here (many are already leaving)...

  • Guy Barrette (thanks for setting up the great dinner, Guy!)
  • Jim Duffy (believes he's funnier than I am, and may even be right)
  • Sylvain Duford (behind that enigmatic smile beats the heart of an evil bugger like the rest of us)
  • Markus Egger (Austrian, and not afraid to tell you about it, over and over)
  • Carl Franklin (pick a card, any card)
  • Cathi Gero (way too nice to hang around with this evil crowd)
  • Rob Howard (enjoying his new found freedom)
  • Tom Howe (the indominable, the incomparable, and my dear friend)
  • Don Kiely (from Alaska, and it shows)
  • Kevin Kline (its all about SQL Server, dummy!)
  • Nick Landry (hey, settle down, I'd like to come back to this place again some day, I live here y'know)
  • Julie Lerman (have you seen my husband?)
  • Ted Neward (I call him slash-boy, ask him about it if you get a chance)
  • Rod Paddock (trying to keep Duffy under control, when he isn't hassling Markus)
  • Marcie Robillard (the DataGird Girl herself!)
  • Joel Semeniuk (take my clients - PLEASE!)
  • Rick Strahl (the dude with the hair!)
  • Christian Weyer (popped his sushi cherry and is never going back)

Missed my buddy Steve Forte, who was supposed to come along and do the Oracle/Linux to SQL Server/Windows Interop session with me. I made it work solo, but its not the same. I also presented a brand new session on Error Handling in SQL Server 2005 (Yukon). While I appreciate the sentiment of giving SQL Server real error handling, I'm still debating about its relevance... how many errors occur in SQL Server that don't have to be propogated back to the client anyway? I brought this line of discussion up during the session, and I think the general consensus was that deadlocks were pretty much the only error that we really want to handle on our own.

I was thinking along the same lines and had written a bunch of test code to try catching a deadlock in a stored procedure and recover automatically... to no avail. Blame it on the beta, I'll wait for Beta 2 and see how things behave then.

Marcie (DataGridGirl) Robillard crashed the conference to catch a couple of sessions and ended up presenting one! What's up with that!

Poor Cathi Gero - we pick on her endlessly. The problem is that Cathi is a genuinely nice person, while the rest of us are evil buggers. The number of times over the course of the past three days that I've seen Cathi with her hands over her mouth, turning pink with embarassment are almost beyond count. Here's an example:


Here, Ted Neward is feeding Cathi some odd thing from our dinner at this lovely Belgian restaurant that Guy Barrette arranged for us. Somehow the feeding of Cathi became highly amusing (you can see me laughing in the background) and Cathi was red all over again... I don't know why she puts up with all of us.

After this final session (only a few minutes before I have to go set up), I'm conference free for a couple of months - a relaxing summer polishing barbequing skills and enjoying being at home. Oh sure, I'll still be working, but that's the easy part.

Next conference - Tech Ed in September, Kuala Lumpur for sure, and Tokyo a maybe!

Tuesday, June 22, 2004 10:34:21 AM (Pacific Standard Time, UTC-08:00) #    Comments [6]  | 


Making Databases Work and Play Well With Others...#

Well, Stephen Forte and I pulled off the Oracle/SQL Server Interoperate session today. The crowd wasn’t huge, but they were definitely into it – the questions were outstanding, everyone gets the idea that there are hard choices to make in interoperability. Running three operating systems (Window XP host, VPC of Windows 2003 Server and VPC of Red Hat Fedora) isn't all roses and sunshine, either!

We’ve been handing out lots of RD Bingo cards, and signing even more (you have to get an RD on the card to sign their picture, get a line and you win)… the loot is great. I’m astounded at the number of folks here, getting a cellphone connection (or WiFi connection) is a serious challenge.

Now I get to relax for a couple of days and soak up some sessions before my SQL Server Profiler for the Developer session on Friday.

Monday, May 24, 2004 3:09:41 PM (Pacific Standard Time, UTC-08:00) #    Comments [2]  | 


Tech Ed Prep...#

Ah yes, the panic is on... one more day before I fly down to Los Angeles on my way to Tech Ed San Diego. Naturally, every piece of hardware I own (and I own a lot) is acting up, knowing I'm about to leave town.

I'm presenting two sessions. The first one on Monday is called From Interoperability to Migration: SQL Server and Linux Databases Working Together which I'm doing as a duet with my buddy Steve Forte. The session stems from my time spent “on the dark side“ doing database work in Linux. Although most of my work is done in postgres, this session is going to show interoperability between Oracle 10g on Red Hat Fedora and SQL Server 2000 on Windows Server 2003 (hey, that's what the Microsoft folks wanted, so that's what they get).

I've had to migrate lots of applications over the years, and I see it as the worst kind of development. The problem is, the users see nothing, except the fact that stuff that used to work (on the old app) is now broken (on the new app). And the instinctual order of migration is flawed: we always start by migrating the data, then building the app. After all, you need some data to work from to build the new app. And so you build a tool to repeatedly copy the data from the old system to the new, and one day, you do the dead drop - you migrate the data one last time, and then everybody has to stop using the old app, and use the new app.

And then, inevitably, you find some nasty bug a few hours (or days) later. Now the question is, do you switch back to the old app, or have everyone wait until you fix the new one? If you go back, what about all the work done in the new one? Reverse migration anyone? Aaaugh!

The session focuses on how you can interoperate between applications via their databases, either long term or short term to facilitate migration. The key to the whole thing is SQL Server's ability to use OLE DB to speak to the Oracle database directly. The trick to migration is to move the data last - build your new .NET application to speak to SQL Server using stored procedures, and in the stored procedures you call to Oracle to retrieve the data.

This methodology avoids dead drop migration, since you move the data last. Since there's only one copy of the data, and both applications have access to it, the users can use whatever client they want. In fact, I've done migrations this way where I never cut off the old app, I just kept adding features to the new app until everyone wanted to use the new one, and then quietly turned off the old one.

The second session is SQL Server Profiler for the Developer. I presented the original version of this session waaay back in 1998, with Visual Basic 5 and SQL Server 7. The session came out of my experiences of dealing with even older versions of SQL Server and Visual Basic, and discovering how DAO and ODBC messed with my queries before sending them to the SQL Server. Middleware does stuff, and Profiler is the best way to find out what's really going on with your SQL Server.

Its my first Tech Ed as a Regional Director, so I guess I'll have to go spend some time at the RD Booth and see what craziness Scott Hanselman has come up with.

Thursday, May 20, 2004 11:04:10 AM (Pacific Standard Time, UTC-08:00) #    Comments [10]  | 


There's feature creep in hardware, too...#

Okay, I admit it, I love toys. No, not little plastic whatzits (although they can be pretty cool too, I always had a softspot for transformers), but technology toys. I buy first, I buy often, and I have boxes and boxes of crap that didn't survive their first test runs. I like being on the bleeding edge and I have lots of blood to give.

Plus I'm pretty good at retaining what I see, so once I've looked into a toy once, I usually remember it. I think it was Steve Forte who first called me the Toy Master, when during a phone conversation about whether or not some gadget actually existed, I was firing links over IM to him without a pause in the chatter.

So when my friend Michele Bustamente asked me about networking her two demo laptops together, I knew it was going to turn into a toyfest. Its all about feature creep, y'know.

Besides asking me about the weather in Amsterdam (which was just about the worst I've seen in May yet), we also talked about networking her machines together, and we talked about crossover network cables, switches, point-to-point wireless and other good stuff like that. But, as with all “clients”, if you don't get to the heart of the matter, if you don't ask the magic question “So what do you want to do?” you really miss out on hitting a home run in terms of solving problems.

Besides just wanting to network her two demo laptops together, Michele was also thinking about her Web Services Interoperability Education Day on May 22nd, just before Tech Ed San Diego. There, she figured she'd have at least three machines involved, and possibly two projectors, and wanted to have all the machines talking to each other, possibly with Internet connectivity, and so on, and so on...

Crossover ethernet cables are fine, as long as you're prepared to live with fixed IPs and no additional connectivity. And it falls down as soon as there's three machines involved. Its a one-off solution, and you always need more.

For years I've been carrying around a little D-Link DI-713 whenever I was travelling to any form of geekfest, geekfest being defined as any place where more than two geeks are. Because as soon as you have more than two geeks together, you have connectivity issues. We all have laptops, we all want internet connectivity, and we all want to fire files back and forth between each other.

If you're in a hotel, you soon find out that hotel broadband, while nice, is really a per-machine product, and so if you have three laptops in a room, you end up hopping the wire from machine to machine and then arguing with the manager at the end of the day as to whether or not you should be charge $10 for the day, or $10 per machine per day...

The D-Link box solved the problem: its a NAT router, a switch and a wireless access point all in one. So you can plug the hotel broadband into it and everyone can share, as well as network, or use the wireless connection. It even provided DHCP support so we don't have to mess with the network settings.

Unfortunately, my little D-Link gave up the ghost a few months ago. It owed me nothing, having been the saving grace of many a geekfest, and having logged tens of thousands of miles in baggage, multiple irradiations and so on. It won't be missed though, it'll be replaced.

Meantime, it was apparent to me that Michele needed the same little gizmo for her demos. All those laptops are likely using DHCP, and they need to speak to each other, and could use some Internet access... so a quick sprint around the Internet (I have a great favorites section called Shopping) returned this list of products:

There's more, but they're essentially all the same: a NAT router, a four port switch and a wireless access point. These four all were 802.11a/b/g compatible too. There were a bunch that left out 802.11a, which is fine with me, in my experience it only takes a piece of paper to block 802.11a signals.

The non-a variants get as cheap as $50 US, the tri-mode units are $100-$200 US. They're all relatively compact, but the SMC unit is the smallest (a mere 5"x3.5"x1.25") and hey, if you're travelling, that's important. They all have decent web-based configuration, and they're all routinely updating their firmware. You couldn't go wrong with any of these units really, but I liked the SMC for its compact size and decent looks.

I see these gizmos as essential fare for anyone who's going to be working with more than one geek at a time. When we're all speaking at conferences, there's always a gathering somewhere, often the speaker who got the biggest room. This solves the networking problem.


Toys | Speaking | Travel
Sunday, May 16, 2004 6:38:22 AM (Pacific Standard Time, UTC-08:00) #    Comments [1]  | 


All content © 2023, Richard Campbell
On this page
DevConnections Day 4: The Last Day
DevConnections Day 3: End of the Tradeshow, Beginning of Sessions
DevConnections Day 2: Microsoft Day
DevConnections Day 1: Opening Day
DevConnections Day 0: DevExpress Summit Part 2
DevConnections Day -1: The DevExpress Summit Part 1
DevConnections Day -2: Arriving in Vegas
Interop Day 4: Tradeshow Closes
Interop Day 3: The Tradeshow Floor Opens!
DevReach Day Two
DevReach Day One
DevReach 2007!
SDC Day 3 - The Speakers Tour
SDC Day 2 - End of the Conference
SDC Day 1 - Carl's Not Here
Software Developers Conference in the Netherlands, 2007!
Sleepless in New York!
Carl's Birthday!
Interview with John Bristowe is Posted
Speaking at the SoCalCodeCamp!
SQL Querying at the Calgary .NET User Group!
Stephen Forte Calls From Pakistan
Passport Disaster! No Pakistan Conference For Me...
Tech Ed US 2007 Day 2: Speaker Idol Begins!
Tech Ed US 2007 Day 1: Getting Started
Tech Ed US 2007 Day 0: The RD Summit
Heading out for Tech Ed Orlando!
ASP.NET Scaling Chalk Talk at TechEd US
Devteach in Montreal now, this fall in Vancouver!
Getting Back to Blogging
Hanging in Phoenix
A Weekend in Austin
Dallas Bound
Chillin' in Atlanta
Orlando Date Cancelled
Online in the RV
Post-Tech Ed
Recapping SDC
SDC Day One
My poor, neglected blog...
.NET Rocks! at Tech Ed Orlando!
Out of Florida, into the Fire...
Enroute to Florida, DotNetRocks in the news (again)...
DotNetRocks comes to Florida...
Blyth and Hanselman Strike Again...
Hanselman and Blyth - Tech Ed Promo Genius
TechEd 2005 (Jonathan Goodyear is up to no good)
Dustin' Off the Ole Blog...
MOM 2005 and SQL Server 2005 at VANTUG
Tech Ed Malaysia Post-Mortem
Advanced Querying Techniques
SQL Server Profiler for the Developer
From Interoperability to Migration: SQL Server and Linux Databases Working Together
T-SQL Error Handling in SQL Server 2005
Too Much Fun To Blog...
Off to Kuala Lumpur...
Allchin lays down on Longhorn
Evangelism Concentration Camp
Doing DotNetRocks!
Wrapping up at DevTeach
Making Databases Work and Play Well With Others...
Tech Ed Prep...
There's feature creep in hardware, too...
This site
<February 2023>
Blogroll OPML

Powered by: newtelligence dasBlog 1.9.7067.0

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Send mail to the author(s) E-mail

Theme design by Jelle Druyts

Pick a theme: