Public musings, often on software development RSS 2.0
# Wednesday, November 09, 2005

Back with Beta 2 it was found that Microsoft had set the refresh rate for the reports and data warehouse at 2 minutes.  The appropriate setting to avoid having your CPU thrash is about an hour.  As I explained in my May 2005 article this issue is more fully explained here: http://blogs.msdn.com/buckh/archive/2005/04/19/409886.aspx.

The Beta 3 Refresh of TFSMicrosoft resolved this issue.  In order to verify this I went to the service.  Note, under Beta 3 Refresh the controller service has moved slightly to this url: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx.  Once at this url you need to access the 'GetNextInterval' method which accepts an integer.  Pass a 1 or 0 or whatever, and the service will return your servers updated interval value.  My experience is the current default is 3600 which is the correct value.

Wednesday, November 09, 2005 9:56:45 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0] -
.NET | Team System | Technology
# Monday, November 07, 2005

So since the launch was today you've probably started the process of installing Visual Studio 2005 by now.  Hopefully you are also looking at leverageing Team Foundation Server (TFS).  In case you weren't aware the Beta 3 Refresh for TFS is also available.  This is the version of TFS which is compatible with the released version of VS2005.

Here at InterKnowlogy Lacie stood up TFS Beta 3 Refresh today and so we immediately tried to connect from VS2005 to our new TFS server.  That's when we realized we couldn't find the TFS Client in Visual Studio.  I had installed VS 2005 Team Suite so in theory I had everything but still we couldn't find Team Explorer.

In looking to the help, of course there was no indication of what the heck to do if you couldn't open the Team Explorer - no note saying - Hey Make sure you've also installed the TFS Client after your VS 2005 install!

With the release of VS2005 the TFS Client is no longer automatically installed, even if you install the full Team Suite.  Instead you need to separately install the client from the TFS CD on the client.  It took us a few minutes to realize this solution, so if you are standing up TFS be aware that each developer will need to have the TFS client installed.  While this makes it easier to separate the TFS Client Access Licenses from Visual Studio, it still would have been nice to know about the installation requirement.  BTW, this also makes it quite apparent that you don't need VS 2005 Team Suite in order to use TFS, just install the TFS on whichever version of Visual Studio 2005 you are using and you'll get the Team Explorer functionality (or even install it without VS 2005 for those non-developers on your project.)

Monday, November 07, 2005 4:46:59 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0] -
.NET | Team System | Technology
# Sunday, October 30, 2005

Today Tim, Adam, Mike and I headed out for a ride.  We left from Tim's house just after first light and headed out into the Lake Calavera area.  We were headed over to the area we call Flightline (in the flight-path of Palomar Airport) and were headed up an access road on one of the farms out near Calavera.  This particular property has a lake up above the road and for some reason this year there is alot of ground water seeping out.

Well Mike had gotten a little ahead on the climb (because of an earlier mud patch that stopped Tim and I) when he hit the next mud patch.  Mike ran into a challenge and needed to put a foot down because the combination of climbing and mud meant he had stopped moving forward when this happened:

Yep, Mike's leg sank down past his knee in mud.  The picture above shows Tim headed up to help pull Mike out.  It's one of those classic moments that happens out on the trails.  The result was we all walked carefully through this section and afterwards I got this shot of Mike's leg covered in mud:

Fortunately Mike wasn't hurt, although I'm sure it wasn't the most pleasant experience moving forward for the remaining hour plus of riding. Just had to post this one since it's the first time we've ever managed to see it occur and of course how often will you sink past your knee in mud in Southern California before the start of rainy season? And yes that is the nice sticky mud that just doesn't want to wash off even in a stream (like the one at the crossing from Calavera to Flightline.   

The remaining question is did Mike just happen to step where a horse sank about two weeks earlier?  The reason I ask is that a week prior Adam and I came upon a couple horse riders who mentioned that they were avoiding the farm side of Calavera because the mud from some ground water made it so their horse sank up to it's knee the week before (two weeks back total).  Seems possible that Mike found the same spot the horse tried and since the horse had already loosened up a spot Mike was able to go right down in the same spot.

Of note however, I didn't think to take a picture of the new trail created to help cross between Calavera farms and Flightline.  There is an amazing new bridge over the second part of the stream and someone has cut the hillside to make a new scary but amazing trail.

Sunday, October 30, 2005 4:16:30 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0] -
Cycling
# Saturday, October 29, 2005

Just as with a car, your bike (or in this case mine) requires routine maintaince.   Over time routine maintenance (keeping your chain clean and lubed) stops being enough.  My Mountain bike recently reached this point.  It started when the mechnanism in my rear hub started to not spin freely.  I needed a new rear wheel.  Unfortunately the first mechanic I took my bike to told me my problems weren't significant and all I needed to do was repair a broken spoke...  On my next ride out my rear wheel truly died - when I tried to pedal under stress the hub's inner workings were stripped and I went no where.

Well I spoke with the mechanic again and he said yep - you need a new rear wheel, plus my chain was worn as were both my front and rear chain rings.  I was going to need a new wheel and a new crankset - which he would have sold me, but I passed.  After all we're talking about a bike that cost me less than $400.  I searched for and found a good deal, getting a new pair of wheels (that are disc brake compatible - as is my frame) for about $50 (sales aligned and I got about 75% off the retail from this one store).  So I learned to disassemble my rear chain rings from the wheel and transitioned the wheel on my own, allowing me to continue - at least for one ride.

On that ride I snapped my chain - not the first time I've done this.  Replacing the remainder of my drivetrain started when I snapped my chain.  When I put a new chain on the bike I immediately started suffering from what is known as "Chain Suck". Chain suck is characterized by your chain remaining on your front chain ring as you pedal, so instead of it coming free at the bottom of your chain ring and feeding to the back wheel, the chain rides back up and runs into itself coming onto the top of the chain ring.  This stops your pedalling.  Chain suck normally occurs on your small front chain ring and accordingly mostly strikes when you are trying to climb.  It's a significant problem and since it started on my first ride with my new chain it meant I needed more work.

Recognizing that the problem was that my front chain rings were just too worn, I set out to replace them.  Did I need to purchase a whole new front crankset for like $200+?  No.

Fortunately I realized I didn't need to spend $200+ on a new crankset and instead could replace only the chain rings keeping my front cranks.  So instead of paying $200 for a new front crankset I paid $18 for a small chain ring and about $32 for a medium (middle) chain ring.  Throw in a new rear cassette for good measure at $40 and you are talking about rebuilding the key elements of my drive train from about $100 instead of $250 + labor.

So how worn were my components well here are some photos to compare the rings first up my old small front chain ring, then the reassemble crankset with small and medium rings and then the old medium chain ring:

Can you spot how warn my chain ring teeth were.  As you can tell I've been pushing my bike pretty hard and it shows on those rings.  I also replace my rear cassette and here is the reverse angle of my old and new rear cassette, again note how worn the old teeth are:

even though it's clean, you can see how worn the teeth are and how uneven the curves are in the old cassette above vs. the cassette below:

So all told I put in about $150 to rebuild the majority of the drive train elements on my bike.  Doing the work myself saved literally hundreds more in maintenance charges considering the going rate for a simple tune up in Southern California is $50.  The result my bike is once again operational and although I'm still hoping to one day pull down a beautiful full suspension bike (like everyone I ride with) for now my hard-tail is trail ready and I can continue to enjoy views like this one from the top of 2N71.

Saturday, October 29, 2005 4:04:21 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
Cycling
# Friday, October 28, 2005

From today's Team Foundation Server chat, there was a question on how to configure Code Analysis for a web project (since there isn't a project properties for a website).  The TFS experts weren't exactly the right folks to ask so I spoke up that the option was on the websites menu.  However the answer wasn't clear, so I wanted to post a couple screen shots here to show where the actual menu's and configuration elements are... Here is VSTS RC1 with the Websites menu open:

So when you click "Code Analysis Configuration" menu item you'll get the following window for configuration:

Note that you will need to enable Code Analysis from this window since by default (at least in RC1 it is off).   BTW yes I know that the RTM versions of VS have been posted, but not the Team System editions and even so I haven't had a chance to install them. 

Friday, October 28, 2005 10:05:19 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | Team System
# Tuesday, October 25, 2005

I recently received an email from a reader saying that while they liked my article, they really felt that I was off-track and that this blog entry was a better discussion of Partial Classes: http://www.theserverside.net/discussions/thread.tss?thread_id=34255

My article is from about a year ago and located here: http://www.windowsitpro.com/Windows/Article/ArticleID/43726/43726.html#feedbackAnchor

My article at least in my view makes pretty clear what Partial classes support.  First let me state my one concern with the new implementation of partial classes: 

The Partial keyword should be required in every source file of a partial class.

The reason for this has nothing to do with the compiler or pre-processing.  It has to do with developers and debugging.  When I open up a class I have no-way of knowing if it's a partial class, because out somewhere in the project another source file might exist which uses the partial keyword to extend that classes source code.  If the keyword were required I would immediately know that a second source file (which I could then find) existed.  Don't think this will happen... well here's an interesting scenario - if you convert a UI class from .NET 1.1 to .NET 2.0 it doesn't automatically move the generated sections of your source file into a separate source file to reflect the new paradigm.  So now you will have some classes where you will have one source file and others where you will have two source files - how will you know which are which since Visual Studio applies the partial keyword only in the generated and hidden source file?

Of course the question posed by the Server Side blog is would using generated virtual base class and virtual methods be better then just supporting the splitting of a class across multiple source files.  The answer here is an easy to see - No.  Why not?  Well lets start with the impact of the changes on the runtime environment and user.  Using a base class with virtual (overridable) methods means that you have impacted the runtime behavior of the application.  I'm not going to go into details but each overridable method and class in your hierarchy carries with it a minor performance cost.  Thus using a virtual class carries a runtime cost.

Aside from the disadvantages of the runtime cost of using an abstract class with virtual (overridable) methods what about at source time.  Well here again the answers favor using partial classes.  Using an abstract base class means that there will still be a second source file associated with the class.  Thus the Visual Studio behavior of separating/hiding the generated code would still work, unless you wanted to have a second set of generated code for your class.  Now you would be limited to either introducing another abstract base class into your hierarchy or leveraging one of the two physical files (either the generated abstract base class or your own custom class) to hold your other generated code.

Finally using partial classes in the source as opposed to having an abstract hierarchy allows developers the option of separating out complex logic which might need to co-exist within a single class into multiple smaller source files that can be manipulated independently.  This advantage isn't a reason for partial classes, but rather an interesting benefit of having them.

Tuesday, October 25, 2005 11:32:09 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | Technology
# Monday, October 24, 2005

I've been meaning to post an update and it's finally time to forece one out here.  Sunday October 2nd was the Tour de Poway and I mentioned in an earlier post I would be riding the full Century route.  The route was 105 miles and fortunately it was a cool day.  The picture below is me crossing the 101 mile mark. The route covered 105 miles total and with a 7AM start it took me till 2:30 to finish.  Nothing real impressive in that mark, but then my goal was simply to complete in under 8hrs, so I'm satisfied.  My only mechanical on the ride had to do with my handlebar tape that I messed up at the start of the ride. 

Monday, October 24, 2005 10:34:55 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
Cycling
# Wednesday, October 19, 2005

One of the advantages of using Static Code Analysis in Visual Studio 2005 vs the previous FxCop is the ease with which you can customize which rules are run.  For starters there is the fact that you can turn off Static Code Analysis.  This is good because it does increase your compile time.

Secondly however, it is very overwhelming if you're working on a large project and for the first time run Static Code Analysis.  You can wind up with literally hundreds of warnings.  How do you manage this?  The answer is you go back into your project properties and start deselecting categories of warnings.  For example cut off Globalization warnings if you don't want to see all the static strings you've left in your code, or cut off Mobility if your application will never run on a hand-held device... you get the idea.  Limiting your checks to a single category, say performance makes it possible to group them and address them in a manageable manner.

Wednesday, October 19, 2005 3:35:25 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
Team System

The release of Visual Studio Team System is going to impact developers more then they imagine.  One of the tools which has been becoming more and more popular with me as I use it is the Static Code Analysis tool.  I've never been a big fan of source code scanners but as they value of the feedback they provide increases so does my preference toward using them.  The Static Code Analysis module in Visual Studio 2005 fits this model.

I don't want to create a long post, I just want to highlight one particular check which ships with the RC1 version of Static Code Analysis.  This check is in the Performance category.   CA1820 looks at places in your code where you are doing string comparisons, in particular where you are comparing to Null/Nothing or the empty string ("").  When it sees these it triggers a warning to let you know about a new feature of the Framework's string class.

With .NET 2.0 the String class has been enhanced with a static method that checks for Null Or Empty, it's called IsNullOrEmpty.  The CA1820 check lets you know where in your code you should be referencing this new static method.  To use this method just type the following:

VB: If String.IsNullOrEmpty(stringText) Then

C#: if (String.IsNullOrEmpty(stringText))

So in this case the Static Code Analisys is actually identifing places in your code where you can leverage new language features to improve performance.  Of course there are already almost two dozen such performance checks and I'm sure more will be created over time.

Wednesday, October 19, 2005 3:05:15 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
Team System | Technology
# Saturday, October 01, 2005

Microsoft invites it's MVPs up to Redmond once a year for a technical summit.  This is a global event where the product teams come out to talk with the MVPs for their product.  This has been an excellent event which is wrapping up today, and unfortunately many of the details are covered by Non-Disclosure Agreement (NDA).  However, one thing that isn't covered by NDA are our overall impressions of Microsoft's and its plans.  Let me say that the briefing given to all 1500 MVP attendees from Steve Ballmer was great.  Steve accepted questions from the audiance and fielded some rather confrontational questions all without missing a beat.  Similarlly Jim Allchin came out and you could just see the excitement as he demo'd some of the latest and greatest features of Windows Vista.

After the keynotes on the first day we broke into slightly smaller groups where we got briefings on the overall direction of Office or the Visual Studio development suite, or the Windows Server System etc.  These were great overviews before we broke into still smaller groups to meet with out individual product teams on days 2 and 3.  As an MVP for Visual Basic, I joind about 50-100+ other MVPs in the VB track.  There were probably 20 or more members of the VB Team present in the room as well.  The VB Team came out strong, they made it clear that they are interested in convincing those of you who haven't seen the value of .NET to understand just what you are missing out on.  They also made it clear that they aren't in competition with the C# team for features - they are blowing them out of the water.

You see a hint of things to come when you look at the "My" namespace which was delivered with Whidbey.  This namespace is just the start, and no the features aren't a bunch of new namespaces, but a focus on productivity.  If you are a business application developer and you still haven't moved to Visual Basic... well you are starting to fall behind the curve.  The future of VB continues to be focused on developer productivity.  Making it easier then ever for developers to leverage the Microsoft plumbing without needing to write thousands of lines of code.  One of the questions was "If the focus of VB is developer prodcutivity what is the focus of C#?" - the short answer of course is that it's not productivity - at which the room of VB developers laughed.

The great thing about the MVP conference is that it gives those of us who are MVPs that opportunity to see the direction that Microsoft is going as they think about Orcas and the next generation of Visual Studio.  Note, I understand that Dan Appleman has produced an ebook talking about the choice between VB or C# updated for 2005.  I also understand that Dan gives VB a slight edge (details available via his blog at http://www.danappleman.com/index.php?p=27), but let me tell you from sitting in these sessions with the VB team - wow, these guys definitely have a plan for some really cool stuff in the future. (note C# could have almost the same things planned, I don't know as I was in the VB sessions...)

I was also able to arrange to get an opportunity to spend some time with the VSTS team and Noah Coad.  Noah allowed me to join the VSTS MVPs for a brief discussion with some of the program managers and developers for VSTS to talk about what's going on in the current version of VSTS and what they are looking at for the future.  I can assure you that Microsoft has already started working on some of the feedback that people have provided with regards to VSTS.  This is going to be a great suite of tools to make developers more productive moving forward.

Finally I'd like to say Thanks to Ed Hickey and the entire team that worked on setting up and coordinating this event.  Managing 1500 event attendees is never easy and having us spread across the Microsoft campus and several hotels just ups the overall challenge that they faced during this event. 

Saturday, October 01, 2005 11:04:12 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -

Archive
<November 2005>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
About the author/Disclaimer

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

© Copyright 2012
Bill Sheldon
Sign In
All Content © 2012, Bill Sheldon