Computers are tools. Fancy, general-purpose, expensive, complicated tools, but tools nonetheless.
Most applications are tools, too. Programmers tend to think of applications used to write or debug other applications as tools and everything else as, well, something else–but this is just perspective. To an end user, an application is a tool that helps them write a book, perform research, calculate (the original purpose of the computer!), and so on.
Ironically, most programmers seem rather reluctant to invest the time in assembling a good set of tools. Can you imagine a carpenter who still hadn’t taken the time to learn how a chop saw worked?
In the spirit of someone writing tools in order to help others write tools, then, I thought I’d post occasionally about some of the tools that I use.
First up: Araxis Merge. An awesome GUI diff and merge tool for both files and directories. Can be integrated with various source control systems; I use it to perform all of my non-trivial integrates in Perforce. Its three-way merge algorithm is great, and it will show intra-line diffs, which are particularly handy when merging Visual Studio and XCode project files.
Bonus: Available on both Mac and Windows.