diff
|
My favorite file diff tool is vimdiff, which is an invocation of the vim editor using the -d option. I'm a command line weenie, so I still use GNU diff a lot too. For comparing directories and files, doing merges, and editing, the free WinMerge program is nice (http://winmerge.sourceforge.net/ ); its only disadvantage is that it only runs on Windows.
|
Hex dumps
|
A good hex dump tool is xxd; you can download it as part of the vim distribution (http://www.vim.org/download.php).
|
tags for vi and emacs
|
If you use vi and its clones (especially vim; also works with emacs), you should be aware of the wonderful exuberant ctags http://ctags.sourceforge.net/, as it makes navigation in source files much easier. Use it e.g. to tag all the symbols in all the include files in /usr/include (when I'm on Linux, I have a cron job recreate this file every night).
|
Binary file comparisons
|
I wrote a binary file comparison tool bd.c years ago. I used it to compare firmware builds and figure out if they differed, in spite of embedded date/time stamps and CRCs. It's not a GUI tool, but it gets the job done. You can get it at http://www.gdssw.com/tools/ .
|
Web authoring
|
Here's an open source web authoring tool that's simple to set up and use: http://www.nvu.com/ .
|
A better Acrobat
|
The people at Adobe have forgotten the simple roots that their Acrobat reader used to have. Now if you want to read PDF files, you have to download 17 MB of junk. Forget that -- get Foxit reader, a fast PDF viewer. They didn't screw up the scroll wheel support like Adobe did. http://www.foxitsoftware.com/pdf/rd_intro.php. They appear to be giving it away to showcase their PDF library. If I needed to support PDFs in my software, I'd sure as heck take a close look at their library. Update May 2009: even Foxit is feeling the need for more features, ticklers to try to make you buy it, and more bloat. Foxit also has some bugs; some are serious enough to make it exit in the middle of use. Thus, it's not perfect; however, it's also not 41 MB of junk (!) like Acrobat currently is (Foxit Reader is currently at about 3 MB).
|
Database
|
If you need a database, the open source MySQL (http://www.mysql.com/ ) could be a good choice. On Windows, it hooks up easily with an ODBC driver and lets you connect to its databases with the Open Office programs. I also like the O'Reilly book Managing and Using MySQL. If you want to embed an SQL database in a C/C++ application, take a look at SQLite. It fits into a 250 kByte library and is a bit faster (so I hear) than MySQL, which is a screamer. I recently wrote a C++ interface to SQLite for an application and, once I got the SQL queries right, everything else worked right the first time. Boy, what a time-saver.
|
Open Office
|
If you're interested in getting off the Microsoft upgrade-every-few-years treadmill, take a look at Open Office (http://www.openoffice.org/ ). I used MS Word for 20 years, so it took a bit of effort on my part to switch over, since I had numerous macros that helped me in my work. However, I've become very attached to Open Office and how it works -- so much so that I rarely use MS Office anymore. The main program I use is Writer, which looks a bit like MS Word. To be objective, be warned that OO Writer crashes more frequently than Word does. However, to its credit, there was only one time where I lost any work (its recovery process works very well). On the other hand, I've had MS Word absolutely trash some documents to where they were unrecoverable -- and this resulted in a lot of lost work. Even with the crashes, OO is (in my opinion) a better tool than Word.
|
Sysinternals
|
For Windows, check out http://www.sysinternals.com/SystemInformationUtilities.html -- especially Process Explorer. It's a nice replacement for Windows' Task Manager.
|
Passwords
|
We all have to keep track of lots of logins and passwords these days. I like to use KeePass http://keepass.sourceforge.net/ for this. Another good tool is Password Safe (http://passwordsafe.sourceforge.net/ ), but I like KeePass just a little better. One of the advantages of these tools is that you can have the program generate secure passwords for you -- you don't even need to see the password. You then paste it into the app or web page as needed. Another technique for getting better passwords if you touch type is to use a familiar phrase, but shift your hands on the keyboard right one key. Example: the password pythoncookbook will get turned into [uyjpmvpplnppl, which is safe against a dictionary attack. And, if you're being tortured while connected to a lie detector, you can tell your torturers that password is pythoncookbook and be telling the truth! :^)
|
cygwin
|
If you're a UNIX person who has to use a Windows computer, all your favorite and familiar tools can be gotten by installing cygwin (http://www.cygwin.com/ ). If you want to distribute apps under cygwin, the licensing fees are substantial. Instead, get the MinGW compiler (http://www.mingw.org/ ) and you can build native Windows apps and distribute them without any fees. Use wxWidgets (http://www.wxwidgets.org/ ) and you can build C++ cross-platform GUI apps.
|
Python
|
If you're a python programmer, there are lots of good places to find things. Check out Python Cheese Shop and Active State. The O'Reilly Python Cookbook is derived from some of Active State's stuff and is a good book of techniques. My favorite Python book is Beazley, Python Essential Reference. My copy is the 2000 edition and is getting a bit long in the tooth because the Python libraries continue to evolve.
|