Programming December 01, 2010

My development toolbox

Below is a list of tools and components that I've found usefull in my work as a developer, primarily of websites with ASP.NET. I've omitted the obvious ones such as Visual Studio and SQL Server Management Studio. This list primary purpose is to act as a checklist for my self but I hope it might give some inspiration to others as well.

Development tools

ReSharper

JetBrains ReSharper is a plugin for Visual Studio that continuously analyses code as we write it. Using Resharper I get immediate feedback wether the code compiles and suggestions to improve it. It also provides very powerfull ways to navigate between classes in a project (the CTRL+T shortcut is just impossible to live without) and between members in classes (ALT+\).

I've heard people complain that ReSharper is slow and buggy and while I can agree with that for earlier versions I think developers who haven't seriously given Resharper or it's competitor CodeRush a chance are borderline ignorant and are conducting professional misconduct.

ReSharper 4.0 default keymap.

.NET Reflector 

Reflector is a free tool with which you can view the source code (or something very similar) of .NET assemblies. There is also a commercial version that let's you debug the code of third party assemblies.

When using third party software, including the .NET framework it self, .NET Reflector is invaluable as it is my greatest source of knowledge and documentation. I even use it sometimes to view code to projects that I have the source code for as Reflector makes it very comfortable to explore code by turning class and variable names into links.

FxCop 

FxCop is a free program from Microsoft that compares code in one or several assemblies to Microsoft's development guidelines. Great for checking your own code or when performing code reviews.

I've written a blog entry that contains a bit more information about how to use FxCop.

dotTrace

dotTrace is a profiling tool for .NET applications, including web based applications, which has proven to be great for locating performance bottlenecks in a couple of projects that I've been involved in. Unfourtunately it costs quite a lot of money but for projects where performance is important it can be well worth it's price.

LogView4Net

LogView4Net is a tool for viewing logs created by Log4Net. It can display logs written to a file, to a SQL Server database, to the eventlog etc.

LINQPad 

LINQPad is a tool for analyzing LINQ queries. It supports a bunch of data sources such as Objects, SQL Server, Entity Framework and XML. While there is a commercial version with auto completion the basic version is free.

Firebug 

The first thing I install after installing Firefox. A must have when it comes to web development. Great for inspecting HTML, debugging Javascript and performance tuning.

TestDriven.Net

My test runner of choice. While it isn't graphical it's very fast and lightweight. When it comes to testing (and development in general) feedback is extremely important, and fast feedback means fast development. TestDriven.Net gives me fast feedback. With that said there are other good test runners out there such as Gallio, and ReSharper's test running feature. 

MeasureIt

A simple and lightweigt Firefox plugin for measuring areas on web pages.

Development frameworks and components

Selenium

There are many tools for testing web applications through the user interface out there. Luckily two of the best ones are free, Watin and Selenium. I've chosen to primarily use Selenium and haven't been disappointed so far. I have also put together a post on how to use Selenium with xUnit.Net.

xUnit.net

In my opinion there are three XUnit frameworks for the .NET framework that are worth using, the original, old and reliable NUnit, the more feature rich MbUnit and the modern xUnit.net. I've chosen to focus on xUnit.net as I like it's modern syntax which is well adapted for test driven development.

Moq

While I've also used Rhino Mocks, lately Moq with it's very fluent and nice syntax has been  my isolation framework, or mocking framework, of choice.

StructureMap

Inversion of Control is a subject dear to me and while it's not necessary to use and IoC container such as StructureMap it can be a great help when creating flexible and testable applications. While there are many competent IoC containers available for the .NET frameword in my opinion the two that stand out when it comes to both features and reliability is StructureMap and Ninject. So far I've mainly been using StructureMap.

Source control

TortoiseSVN

My Subversion client of choice.

Ankh

While I usually use TortoiseSVN when using Subversion I also have Ankh installed for Visual Studio integration as I otherwise keep forgetting to add files that I've added to a project through Visual Studio. 

TortoiseGit

My favorite Git client. Because I haven't bothered to look for any other :-)

Blogging and website maintenance

Clicky

I've tried Google Analytics and Woopra for this site but finally settled for Clicky due to it's lightweight and good looking interface (which I think Woopra lacks) along with it's real time data (which Google Analytics lack). More on why I prefer Clicky over Google Analytics.

Windows Live Writer

I use Windows Live Writer to publish blog posts on this site, using a custom module for Windows Live Writer integration with EPiServer Community that I've created. And I'm loving it.

PreCode

PreCode is a plugin for inserting snippets of code into post written with Windows Live Writer. While PreCode helps with indenting code correctly it doesn't do any syntax highlighting. It does however produce markup that tells SyntaxHighlighter (see below) what type of code it is. 

SyntaxHighlighter

SyntaxHighlighter is a Javascript based program that supports 22+ programming languages and other formats such as HTML and XML.

PS. For updates about new posts, sites I find useful and the occasional rant you can follow me on Twitter. You are also most welcome to subscribe to the RSS-feed.

Joel Abrahamsson

Joel Abrahamsson

I'm a passionate web developer and systems architect living in Stockholm, Sweden. I work as CTO for a large media site and enjoy developing with all technologies, especially .NET, Node.js, and ElasticSearch. Read more

Comments

comments powered by Disqus

More about Programming