In China there is an old saying "to do a good job, an artisan needs the best tools." As a software engineer I am constantly looking for the best tools in order to make my life easier. Getting the tool, studying it and becoming an expert in using its key features are among the things I do regularly. In this article I would like to share some of the tools I feel absolutely necessary on a Windows platform, particularly from a programmer's perspective.
1. Process Explorer
Created by SysInternals http://technet.microsoft.com/en-us/sysinternals/default.aspx (now part of Microsoft), this is such a wonderful replacement for the Windows Task Manager. You can see what processes are running inside your PC, what modules and files are currently loaded inside them, what threads are executing what functions, at any given moment, plus lots and lots more. When my processes are behaving strangely, this is the first tool I will use.
2. Process Monitor
Also from SysInternals. Process Monitor allows you to monitor what activities a particular process has done on your computer - files touched, registry entries queried and changed, and network locations visited, etc. all in real time. With this tool, many "secrets" a program wants to hide from its users are no longer secrets!
3. AutoRuns
If you wonder why your Windows PC takes so long to start up, get AutoRuns! This little tool lists all the common locations from which programs get started and helps you make informed decisions on what you can turn off at boot time. You might be astonished to find out how many spy-ware have been running on your PC...
4. SystemSuite and Fix-It
So many tools have been packed into these two products there got to be one that you will like! While some people say these are created for average computer users, as a programmer I still find many tools useful for a professional.
As an example, one of my computers at home is really lousy at keeping it clock time. Every so many days the system time becomes totally unreliable. Whenever this happens I would just fire up SystemSuite, navigate into "Fix & Maintain" and click on Clock Sync -> Synchronize. In a moment the time is accurate again and I don't have to rely on anything else to tell me what time it is!
5. sed, grep, zip/unzip, etc.
These Unix tools have been so crucial to my programming life! Make no mistake, there are great UI alternatives that you can fire up, click, click and you are done. However, clicking would involve manual interactions and many times all I want is to shut my eyes and type several keystrokes in a Command Prompt to get a routine thing done. There are simply no replacements to these tools for my purposes.
As an example sometimes I just want to replace a keyword in a text file. If I launch an editor I will have to look at the file content, be careful when clicking some menu items and choose the correct one so a "Find and Replace" function is performed. sed is a great tool in such situations, a simple command line such as
sed "s#ABCD#DCBA#g"
will be able to do the same thing. The beauty is, you don't have to even think about what you are doing. Simply put the above command in a batch file called "a.bat" and each time when you need to perform that routine operation you simply type a in the command prompt and the job is done!
What are the tools that you cannot live without?



Facebook
Twitter
LinkedIn
RSS
votes