Visual Studio 2005 Refactoring is sub-par – level 200

This is a time that envy VB developers who have access to DevExpress’
Refactor tool
which is far better than the meager refactoring support
available for C# devs in Visual Studio 2005.  There was a bunch of
hype around this feature, and it is really useless.  I love
Resharper 1.5 for VS 2003, and I can’t wait until it comes out for VS
2005, but until then, I develop EZWeb with a stock VS 2005
install.  I made a screen shot of renaming a parameter so you can
see what happens. 

Any time you invoke a refactor feature, a modal dialog pops up that
halts your work.  Every time takes at least 15 seconds even for
the small solution I have going.  This feature was very poorly
designed, and I hope it is improved in a service pack. 

Renaming a
method parameter is one of the simplest refactorings.  It can’t
affect code other than in that method, so why is there the need to search
every file in the solution?  Only code inside that method could
_possibly_ be affected.

Another downer is that the refactorings don’t have shortcut keys
defined by default.  You can only get to them with the
mouse.  To keep my hands on the keyboard, custom keyboard mappings
are required. 

Here’s an area where we still need to catch up with Java IDEs – refactoring.

Mike Roberts integrates FitNesse with CruiseControl.Net and Subversion – level 300

A while back, I posted about how my team integrated and versioned our FitNesse wiki with CruiseControl.Net and Subversion.  Mike Roberts found it helpful for creating a similar solution for his team.  He’s shared his experience on his blog.  Hopefully others will find it useful.

For those who don’t know about FitNesse (or Google), Fit is a framework
for creating system-level acceptance tests using Excel worksheets or
Html tables.  FitNesse is a wiki that provides a UI to Fit for
maintaining the acceptance test tables in a hierarchical wiki

My team uses FitNesse tables to allow testers and product managers to
exercise our entire system (or entire subsystems) through their
tables.  This is far more flexible than the application’s UI, and
it allows for more exploratory testing.

The greatest strength of FitNesse acceptance tests is that they are
executable requirements.  When all the acceptance tests pass, we
know we are done.  If a bug surfaces, we write an acceptance test
to describe the bug and we keep it in a large suite that become strong
regression tests.  There is no mistake about the difference in a
bug an a missed requirement as well.  If it doesn’t have an
acceptance test, then it isn’t a requirement. 

Finally, if you’d like to learn more, here’s a great google search.

Share login and other state between ASP.NET and classic ASP – level 300

Sharing a login (some call it single sign-on) between ASP.NET and
classic ASP takes quite a bit of thought.  Even if you have a
single web application with 1 .asp and 1 .aspx, the two are running in
completely separate memory spaces.  You can’t share Session, or
any other piece of information.  Only shared resources can be
accessed by both.  Shared resources could include:

  • File sytem
  • Database
  • Registry
  • Available services (Web services, COM, queues, etc).

That last bullet point is what you want to concentrate on.  Using
the file system or database to act as a Session object substitute is
not something I would recommend even if it would technically
work.  I would recommend against the registry as well since it’s
just a specialized database.

Web services would allow you to expose anything inside the ASPX memory
space, but web services are currently the slowest way to communicate
between processes, so consider the pros and cons before deciding to use

COM+ components are services in themselves, and communications with
them are fast, so they provide a unique way to communicate between
applications without sacrificing performance.  I’d recommend
porting ASP to ASP.NET, but for a time, it might be necessary to make
the two work together.

Using COM or COM+, you can share .Net libraries with your ASP
applications, and if you have your .Net library run as a COM+
application on it’s own, it could hold application state that could be
shared between the ASP and ASP.NET.  If you use this approach, try
to minimize the amount of shared state and only use it as a temporary
means while you convert your ASP application to ASPX.

Hint:  Regasm.exe is a tool for exposing your .Net libraries as COM.

FoxIE expands browsing options for Internet Explorer users – level 100

I haven’t used the stock Internet Explorer in several years, and many people agree that it lacks some essential features found in other browsers like Maxthon and FireFox.  For instance, both of these browsers have tabbed browsing and other convenience features like pop-up blocking and some ad-blocking available. 

Maxthon is a browser shell that uses IE as the rendering engine.  Firefox is a shell also that uses the Mozilla engine.  Browser extensions exist for both, but certainly more exist for Firefox.

I have used Maxthon since it was renamed from MyIE2, and MyIE2 befor that.  Maxthon served me well while Firefox was making it to version 1.0.  I’ve now fully converted to Firefox as my main browser.  I wasn’t satisfied by the stock Firefox, but I’m completely satisfied now that I’ve installed extensions like the developer toolbar, IE Tab (that embeds the IE engine in a Firefox tab), and others.

Since I develop web applications, I need to evaluate the experience in Internet Explorer still, so I still have to deal with that. 

There is an extension for Internet Explorer that I really like initially.  It’s Foxie.  It adds a tab bar to IE as well as search box and other features like a adware/spyware firewall.  It’s early in it’s development, but I’m impressed.