A look at Mike's own bag of developer tools shows that more .NET code is in his future.
"One only needs two things in life: WD-40 to make
things go, and duct tape to make them stop."
Apologies to Weilacher (whoever he or she was; the Web appears to be
silent on this subject), but my annual tools column would be pretty slim
if I only listed WD-40 and duct tape, neither of which is all that useful
in software development in any case. Over the last year, my solution development
has concentrated on .NET. I expect that if you're pursuing any of Microsoft's
developer certifications, yours has done the same. So, this year, you'll
find some .NET-centric tools on the list. If you still haven't sipped
the .NET Kool-Aid, don't despair—there are some more generally useful
tools here as well.
I'll start with a pair of tools that have made the .NET development part
of my life much simpler: NUnit and NDoc.
Tools for Testing
NUnit (http://nunit.org/) is a free, open-source
unit-testing framework for .NET applications. I've written about unit testing
and test-driven development in the past (click
for some examples) and likely will do so in the future. Test-driven development
in particular is one of those simple ideas that can make a huge difference
in personal productivity. At this point, I'm sold—every .NET application
that I work on gets its own set of unit tests. If you work in Visual Studio
.NET, you'll also want to take a look at the rapidly developing NUnitAddin,
which integrates NUnit directly with the IDE; http://dotnetweblogs.com/NUnitAddin/
will get you that one.
is also a free, open-source tool, but it's somewhat more specialized.
If you're working in C#, NDoc strips the XML comments from your source
code, uses reflection to ferret out information about the actual assembly
you're building, and slices and dices the two together to produce lovely
HTML Help files in the same style as the MSDN documentation for the .NET
Framework Class Library. If you're building libraries of any sort, whether
commercial or internal, this one can save you a bunch of time on the documentation
end of things.
Pulling It All Together
When you start juggling multiple applications (like NUnit and NDoc,
not to mention Visual Studio .NET and Visual SourceSafe) on a single project,
a good build utility becomes a necessity. I'm still quite fond of the commercial
product FinalBuilder (http://www.atozedsoftware.com/finalbuilder/),
in part because its GUI approach to things appeals to me and in part because
it just plain works. If the $300 price tag is too much for you, take a look
at the open-source NAnt project (http://nant.sourceforge.net/)
or Microsoft's BuildIt (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
dnbda/html/tdlg_app.asp). Either one will help you pull together all
the pieces of a complex build process into a single operation. You might
think this is just a convenience, rather than an essential tool. But, the
first time you omit an essential step of your build process because you
got pressured and forgot, you'll wish you'd automated the process.
While I'm talking about commercial .NET tools, I want to mention the trio
of excellent add-ins from FMS (http://www.fmsinc.com/):
- Total .NET Xref, for finding things anywhere in a solution
- Total .NET Analyzer, for checking code according to dozens of rules
- Total .NET SourceBook, a repository of useful code, updated via a
FMS's products are too expensive for the casual user, but if you're doing
serious development in .NET you definitely need to at least take a look.
Another tool I like enough to pay for is VMware (http://www.vmware.com).
The idea of VMware is simple: It provides a virtual computer that runs in
a window, so you can simulate a completely different computer without having
to buy more hardware. It's a rare day when I don't fire up at least one
instance of VMware. I've used it for testing with non-English versions of
Windows, for playing with beta operating systems and software, for testing
apps among a dozen different Web browsers, and for playing computer games
that won't run on Windows 2000.
Caught by Web Services
An area that's captured an increasing amount of my attention lately
is Web services. When you're trying to get a feel for a new Web service
and don't want to bother building any client software, .NET WebService Studio
will come to your rescue and won't cost you a cent. The tool will let you
connect to any WSDL endpoint; then, it builds its own simple user interface
to invoke the Web service interactively.
.NET WebService Studio will give you a pretty good idea what's going on
when you invoke a Web service, but sometimes you need to do heavier-duty
debugging. At those times, I turn to Mindreef SOAPscope (http://www.mindreef.com/),
a $99 commercial solution that works as a transparent monitoring proxy for
SOAP messages. When you're not sure which component in your environment
is messing up, a few hours of sniffing the wire with SOAPscope may be all
you need to settle things.
Digging Into XML
And as long as I'm in the XML mindset, let me mention XMLSPY (http://www.altova.com).
Depending on which edition you purchase, you can spend anywhere from $99
to $990 on this tool. It does such a great job of dealing with the endless
morass of XML standards. With its powerful editing tools, XMLSPY is worth
it if you need to touch XML more than occasionally.
Thinking of XML somehow puts me in the mood to look at stuff at a very low
level, and I've found a variety of tools for digging into components at
a low level indeed. For all the times when the documentation is inadequate,
here are four that have earned a place on my Start menu:
- Nogoop Software's ActiveX Inspector and .NET Inspector are great for
digging into components. They can instantiate things, peer at the internals
of running applications, browse types and more. They even implement
form design surfaces so you can play with visual components. $45 each
- ActiveXplorer looks at both COM and .NET components and shines at
providing an exhaustive inventory of everything on your computer and
letting you easily see their object hierarchies. With repair, dependency
and HTML help generation capabilities, ActiveXplorer is great for managing
busy development environments. $149 from http://www.aivosto.com/index.html.
- Outside of the component world, PE Explorer from HeavenTools does
a great job. It can dissect many aspects of the internals of Windows
executable files and is especially good at inspecting, editing and extracting
embedded resources. $129 from http://www.heaventools.com.
- Finally, back on the .NET front, there's Lutz Roeder's Reflector.
This is sort of like the Object Browser or, rather, what the Object
Browser might grow up to be if Microsoft put serious work into it. In
addition to class browsing, Reflector features integration with MSDN
and XML documentation, an IL disassembler, prototypes in multiple languages
and more. Free from http://www.aisto.com/roeder/dotnet/.
Instead, Burn Music on CDs
If you're an MSDN subscriber, you've probably noticed that new downloads
are available only as ISO images these days. That's a bit of a nuisance
if you don't actually feel like burning CDs just to test the latest release
of Microsoft "Fruitbat." At least, it was a nuisance for me until I downloaded
IsoBuster, a utility that makes child's play out of extracting files from
an ISO image. Depending on your needs, there are both freeware and shareware
versions at http://www.smart-projects.net/isobuster/.
Keeping up on Everything
Finally, I want to mention an application that's not quite a development
tool, but still an essential part of my day: NewsGator. An RSS aggregator,
NewsGator, can keep up with RSS files (XML headline summaries), which are
published by thousands of sites around the Internet, including many development
sites. With NewsGator installed, my RSS feeds get automatically slurped
into my Outlook session as posts in a folder, where I can inspect them along
with my e-mail. This makes it wonderfully simple to keep tabs on all sorts
of stuff around the Net. $29 will get you a copy from http://www.newsgator.com.
If you're new to RSS, and want to learn more (or check out alternative aggregators),
I maintain some pointers at http://www.larkfarm.com/rss_resources.htm.
What's in Your Toolbox?
One of the nice things about this job is that I get to look back at the
end of each year and realize that there is still plenty of nifty software
being produced. But no matter how much time I put into finding useful tools
for developers, I'm sure there are other things out there that I've missed.
That's where you come in: Do you know a useful tool I neglected to mention?
Please drop me a line and let me know about it! I'll use the most interesting
comments in a future issue of my Developer