July 18, 2003 18:46
Design Patterns, MLP, Programming
A bunch of stuff I do on a daily basis (i.e. writing software for big Web sites) is done through tools.

The best way to get something done faster than someone else is not to be smart or hardworking, but to have a tool which doesn't require you to be either.

The single best tool in my toolbox for Java coding is Eclipse. It's free, it's fast, but most importantly it has a ton of refactoring built into it. If you want to export String to a constants file, extract an interface, or just rename a variable, Eclipse will make it point and click. I would buy, pay actual money, just for Eclipse's support for get/set properties. JBuilder 6 Enterprise does not compare.

Eclipse is good for Java files in particular, but it is focused on projects as opposed to random files. It also doesn't have very good support for JSP and JHTML files. jEdit has a great file system editor that file editing in general very well, and it has the best single understanding of file and edit modes that I've seen. In a single file, jEdit will handle Javascript, Java, and HTML formatting and syntax highlighting perfectly, and will even do appropriate code completion if you set it up right.

For JSP files, (especially when you want custom tag completion) then either IntelliJ IDEA or NetBeans will provide you with a more insightful JSP editor.

However, there are some files where you really just want to open it, see it, change a few things and be done with it. jEdit and Eclipse are too big and complex for these kinds of things, so I have yet another editor called Programmer's File Editor.

When I have to find random files (particularly properties and SQL files) I want a fast text search. The IDEs can handle this, but they tend to only index the files immediately in their projects, and waiting around for them is slow. The best desktop search tool I've found is Copernic. It makes a huge difference when I'm dealing with literally over a thousand files all possibly containing relevant data.

For database manipulation and querying, I use DBVisualizer. It's free, Java based, and straight-forward. It handles any kind of database through JDBC, and lets me see the links between files. It beats most of the tools packaged with databases, and while TOAD is superior, it's not free and AFAIK it only works on Oracle.

For CVS editing, I mostly rely on Eclipse. In cases where the CVS server is so out of date that Eclipse breaks, I use SmartCVS. WinCVS has more features, but from a UI perspective, SmartCVS has it all over TortoiseCVS, WinCVS, and most other stand alone tools.

For managing my own personal projects, I use Perforce. Perforce is superior to CVS in many ways. It has better understanding of conflicts and merges, has nicer merging and branching capabilities, and just plain works. It's only good for two clients when it's free, but that's all I need.

I also rely heavily on Cygwin for day to day running of system utilities and shell processes. I run Zsh with some command completion options to manage my systems, and I do just about everything Dynamo related through a Unix interface on a Windows laptop.

For situations where I have to interact with a remote system, I use Putty. The terminal support is much better than the command line ssh I could get from Cygwin, and it's free.

For situations where I need to FTP large amounts of files, I use either Cygwin's ncftp or LeechFTP. Both of them are free, but LeechFTP does very well with queueing and threading multiple FTP sessions. I use WinSCP3 in situations where FTP isn't available.

For situations where I have to integrate with another system and want to see what the actual IP packets are saying, I use Ethereal. The first time you use a packet sniffer is an eye opener. Everything you always assumed was happening is laid bare in front of you. Every handshake, every disconnect, every ARP request can be followed, traced and logged. It's made me a lot more paranoid about encrypting traffic.

In addition to the standard software tools I use to do my work, I also have stuff which just plain makes life easier. I use a utility called PaneKiller which replaces the standard Windows start menu. I use time-tracking software called Punch Time Clock to keep track of my hours. I use RSI software called RSIGuard to remind me when I've been typing too much. It's even smart enough even locks me out when I need a break and refuse to take one.

I also have all the standard web browsing equipment, but I have some extras. I use livehttpheaders to see the output from various web pages and verify that the mime type is correct and the page isn't being cached, and I make heavy use of Mozilla's form manager to make multi-page form submits a little easier. I use Spybot and Ad-aware to double check any software installs I get from the web for nasty spyware or adware utilities.

I use a Palm utility called Keyring to keep track of all my passwords. I use Ecco Pro for random note taking.

Finally, I use HTTrack whenever I want to take a snapshot of an entire website and store it on my laptop. It's very useful for disconnected modes and in situations where you want to see web pages without actually surfing the site.

« Focus | Home | More fun with the server »

Great list. I hope more bloggers will follow your lead and share their toolit.

I think that SmartCVS link should point to http://www.smartcvs.com/

In addition to the use of LeechFTP I recommend to give FileZilla Client & Server a look.

name
url