Tools I Use

The following is a list of tools that I find very helpful. There's several reasons to use these tools, but primarily they make my life easier and I trust them. I'm using these tools because they are worth the price (most are free), or I haven't found something better yet!

Testing Tools

The following are tools that I use to create unit tests and account for code coverage. Unit testing and code coverage are important to me because they ensure that my code works as I intended it to and future changes that can break my functionality will alert me right away, not in production.

Isolation/Mocking/Testing Frameworks

Isolation Frameworks (or sometimes referred to as mocking frameworks) aid in testing. They provide the ability to setup objects quickly to give your tests an expected outcome. When you write your code to work with abstractions, isolation frameworks are key to testing the behavior of your custom code with these abstracted libraries.

IDEs & Text Editors

Editors are the life of code and the plug-ins they come with are the blood. I do all of my professional work in .Net (and other various MS technologies), so I use Visual Studio nearly all the time. I always try to keep up to date with the most recent version, as of this update, I'm using VS2008 Pro, but it's not really Visual Studio that I use, it basically hosts ReSharper for me. JetBrains's ReSharper is a necessity for any .Net programmer that thinks of their job as a serious craft for enabling quality software. When it comes to basic/general/all-purpose text editors, I choose Sublime 2.


Automating a tedious task can save boat loads of time over the lifetime of a project. If there's something that causes any friction, I try to find a better way to avoid the slowness or pain. Here are some tools I use to allow me to be more productive.

Photo/Image Editing

By no means am I a power user when it comes to photo or image editing software. I primarily use them for screen capturing or simple web image editing. When I need to open something up for some quick edits or basic cropping, I use Paint.Net. I'm slowly weaning myself off of GIMP because the shortcuts aren't as natural to me as Paint.Net.

.NET Code Libraries

There's no point in re-inventing the wheel, right? For that reason, it's pointless to write a brand new ORM with every new project. There are many open source libraries out there to help you hook up a lot of the tedious plumbing that's required to build an application. The time I could spend writing all this code would essentially be stealing. For this reason I rely on these tools to help save me time and get my projects done faster. The final reason I use other libraries in my code is that I'm not going to be around forever to maintain this code, if I can give somebody a widely used and highly available codebase to work from, they're going to have a lot easier of a time working with it than if they came in and had to piece together what my brain was building at that time.

Python Packages

What do I use in when working with Python?

  • South
  • Django
  • Flask

Version Control Systems

Also known as Source Code Management or Revision Control. Here are the systems I am familiar with using. Subversion is very widely used and pretty good; the support and tooling around it is great. Git seems to be the best solution I've used, and while adoption rate hasn't quite reached "mainstream" in .NET, it is growing every day.


Sometimes you need to look a little deeper to find the solutions to some problems. Sometimes I'll use tools to expose problems that aren't very easy to see. Fiddler2 is great for seeing all web requests that are made from the computer it's running on. While looking into reasons .Net applications crash, WinDBG has provided to be useful for analyzing crash dump files. Additionally, I've used JetBrains' DotTrace for profiling applications and finding bottlenecks and poor performing code.