We all have different needs due to the platform and/or stack we work with, and simple programmer preference is famous for starting religious wars.
However, in each area there is usually a set of tools that get recommended over and over, even though people might individually prefer one member over the others. Unix text mode code editors, for example, is an extremely contentious issue but no one can deny that most people will choose either vi or emacs.
So, without criticising the alternatives, recommend me developement tools. Text editors for different platforms, version control systems, bug trackers, database engines, templating systems... whatever! What do you enjoy using every day?
I'll edit together the answers as a list of highly recommended tools in each area. Please don't start discussing which is the best ;)
If you're doing a lot of Javascript, the FireBug plugin for Firefox is a must!
The Scott Hanselman's 2007 Ultimate Developer and Power Users Tool List for Windows [1] may give you some ideas.
[1] http://www.hanselman.com/blog/ScottHanselmans2007UltimateDeveloperAndPowerUsersToolListForWindows.aspxAnother one-up for SysInternals. You can mount their tool repository as a shared drive:
\\live.sysinternals.com\Tools
I just copy over all the files into C:\Program Files\Bin, then add that to my PATH.
Generally:
For me (keeping in mind that I mostly do .NET):
The only must have is version control and file backup It doesn't really matter which version control you use as long as you have some way to track what changes have been made to the system.
I could probably not live without WinMerge [1] on Windows. It is a GUI diff/merging program that can generate standard unified diff patches. It also has a couple of cool plugins that let you diff zip files and MS Office documents.
[1] http://winmerge.org/Can't believe I'm seeing Trac (http://trac.edgewall.com) so seldomly, it's such a great tool: combines and integrates Wiki, Bug Tracking, SVN, and Project Planning, plus it has a bazillion plugins: http://trac-hacks.org
.NET Dev:
Continuous build: Hudson [1]
Seriously, the guys who put Hudson together did a great job. It's a single WAR (Java Web ARchive) file that contains an embedded web server and allows you to setup a continuous build server with a single command.
The web interface is great with good feedback through the use of AJAX.
This thing puts a smile on developers' faces when I show it to them. It's that good.
Issue tracking: Jira [2]
The best issue tracking tool I've used in 15 years. Developers and managers like it. Web-based with a clean interface.
[1] https://hudson.dev.java.net/IDEs and Text Editors
Visual Studio
Eclipse
EditPadPro
EditPlus
Notepad++
Notepad2
SlickEdit
FireBug
Diff/Merge
BeyondCompare
WinMerge
Source Control
Subversion
Git
Bazaar
Mercurial
SVK
TortoiseSVN
Build
FinalBuilder
NAnt
Bug/Issue Tracking
Mantis
FogBugz
Trac
Learning/Research
Not going to list a ton of sites but just going to go with the suggestion of The Internet. And, really, that one applies to most things in modern life and not just software development.
(Going to have trouble keeping up! Will do linking later.)
Source Control: Subversion [1]
Source Control GUI: TortoiseSVN [2]
Text Editor: UltraEdit [3]
IDE: Eclipse [4], JDeveloper [5]
Oracle Development: PLSQL Developer [6], TOAD [7]
SFTP/SSH: PuTTY [8], Reflection X Suite [9], FileZilla [10]
RSS: Google RSS Reader
Web Debugging Proxy: Fiddler [11]
Local Development Apache Web Server and MySQL DB: XAMPP [12]
I find TestDriven.NET [1] indispensable when unit testing with .NET. It's by far the best test running tool I've used. It's great when you just need to run a single test in the VS debugger. Just right click on the method in the IDE and choose " Test with -> debugger [2]".
[1] http://www.testdriven.net/For Java, there are loads of great tools for development.
A lot of people are still holdouts and use text editors like Vim. Anecdotally, they are power users who use things like search/replace and the macro tools to do tasks transparently. [1]
There are two great IDEs for Java: Eclipse [2], and Sun's NetBeans [3]. Both tools are particularly hot for doing J2EE development, since they can set up and run your tomcat and glassfish servers and manage deployment.
I'v never managed to get TDD going for myself, but I think a lot of people will like JUnit [4].
One thing I don't like in most IDEs is their XML support. For that I use the Exchanger [5] XML editor. It's a pity it hasn't been updated in a while.
There is, imo, no excuse for not having some sort of version management. Currently, I use Subversion. On OSX, I really like Version [6], and windows has unparalleled integration with TortoiseSVN [7].
I think the future is probably in Distributed Version control, so something like Git might be worth reading up on (guide here) [8]
Virtual Machines can make a big difference to testing stuff, since they can let you break things or set up distributed systems locally. We use Xen [9] for our servers, and I am trying Virtualbox [10] for local testing on my mac.
Finally, I'd say that the GNU utils (grep, tail, pipe, sort, etc) are indispensable for diagnosing problems. I'd recommend looking at things like cygwin [11] or the windows powershell to try and get them if you're in windows.
[1] http://www.vim.orgNUnit [1] for .NET Unit Test Cases. NAnt [2] for .NET automated builds.
Will update the post as soon as I can think of other required tools!
[1] http://www.nunit.org/index.phpClipX [1] for multiple clipboard support in any program, not only inside Visual Studio
SlickRun [2] for quick command execution
Find and Run Robot [3] for fast desktop/start menu search or filesystem search with Locate32 plugin
AutoHotkey [4] for keyboard remappings, with my own keyboard mappings,
F4+F4 To close any window
Alt+Alt To open Find and Run Robot process list (similar to Alt+Tab but with filters)
Alt+1 Send active window to half up screen (useful for comparisons in one monitor)
Alt+2 Send active window to half down screen
Alt+0 Switch active window to monitor 1-2
...
MouseGestures [5] (AutoHotkey script) to enable mouse gestures across applications
[1] http://clipx.orgLinux (Gnome):
Meld
[1] is a great tool that I've been enjoying recently.
From their homepage:
Meld is a visual diff and merge tool. You can compare two or three files and edit them in place (diffs update dynamically). You can compare two or three folders and launch file comparisons. You can browse and view a working copy from popular version control systems such such as CVS, Subversion, Bazaar-ng and Mercurial.
If you're coding with Visual Studio, Visual Assist X [1] is one of the best addons you could ever find.
[1] http://www.wholetomato.com/Procexp and Procmon [1] are critical sysinternals tools for diagnosing tricky configuration problems with assemblies, dlls, registry entries, and the file system. If you are a windows dev and the sysinternal tools are not part of your toolbox and you are cheating yourself.
Fxcop [2] for managed code and Prefast [3] for VC++ code (particularly with SAL annotations) are incredibly helpful for setting a standard code quality bar and keeping it across a team. If your app requires it this can be critical for writing secure code.
VMware and Hyper-V are incredibly useful for setting up and isolating difficult bugs.
Obviously the VS debugger (disclosure .. I worked on the vs debugger). With the VS debugger there are data visualizers that can be incredibly helpful for specifc tasks. Josh Smith's "Mole" [4] for debugging WPF is a good example and I believe there is a 3rd party visualizer for datasets that is much better then the default one.
For deep debugging of the clr you need to use SOS [5], which has support in VS, but is often used from windbg.
For trapping production problems and debugging offline you should implement minidump support [6] in your app.
[1] http://technet.microsoft.com/en-us/sysinternals/bb545027.aspxSome Mac Applications for Web Development.
If there is no $/€ amount listed assume the application is free. My "must haves" are always the top listed one in the group (with the exception of Coda because I haven't purchased it so I don't know). The rest listed are all other very popular applications used by others.
Local Server:
Editors:
IDEs:
FTP:
Graphics:
Styles:
General Development Tools:
Source Control:
Browsers:
Windows Emulators: (you should get these for cheaper almost always)
Utilities: (for everyday things to improve productivity)
Gosh, I know I missed a bunch but I think this is a good foundation for listing applications. To go along with this you really need links to documentation websites, etc. but that is really outside the bounds of the question.
I hope you bought a mac!
[1] http://www.mamp.info/en/index.phpMacOS X.
These are the ones I use every day, on Windows:
Source Control:
Subversion
[1],
TortoiseSVN
[2],
VisualSVN
[3]
Command Prompt Replacement:
Take Command
[4]
Build Control:
FinalBuilder
[5]
Text Editor:
Notepad++
[6]
File/Folder Comparison Tool:
Beyond Compare 3
[7]
IDE:
Visual Studio 2005/2008
[8]
Scripting:
Python
[9],
Komodo
[10]
Topics in Pragmatic Programmer [1] related to tools:
Grab the book for the details.
[1] http://www.pragprog.com/the-pragmatic-programmerA brain, paper and pen
For Regular Expressions:
.NET related:
Delphi related:
Xcode related:
Javascript:
Misc:
Even when working all day long in Visual Studio, emacs is a must-have, if for no other reason than its macros.
Here's what I use everyday:
Here's what I use often:
There is probably better out there, but that's what we use:
To help with traversing through code in a command line environment ctags and cscope make life a lot easier.
One or more large whiteboards and camera to snapshot ideas before you move on to the next.
First, find a good multi-file text editor / IDE and stick with it, learn all you can about it and extend it to your needs. Choose carefully because moving is tough once you've become familiar with one. Key features to look for:
As my main text editor, I love TextPad [1] but it costs a little and doesn't have proper Unicode support. Notepad++ is a good and portable alternative. I use Notepad2 [2] to open single text files because it's very fast and Unicode-smart.
Aptana [3] is quite wonderful for all your web development needs - and is available on Linux too. Especially good if you find code auto-completion useful or are used to Eclipse.
Use Firefox and learn to use Firebug [4]. It will make your web development life so much easier. Oh, and don't forget to get Firebug Lite [5] as a bookmarklet for getting some of those features with IE, Opera, etc. Install the Web Developer [6] extension too which has useful "view cookies", "CSS off", "images off" features etc.
To manage your own development, I like DevProject Manager [7]. Others have covered source control in detail elsewhere on this page, but I like Subversion [8].
A good diff utility is vital, especially for managing releases across servers. WinMerge [9] is great and is available as a Portable App. The best thing about it is that you can navigate directories for changes (like Windows Explorer with diffs visible for all the files - changed/same/new).
Filezilla [10] is a good and portable FTP client, or you could try the FireFTP [11] Firefox extension.
I'd also recommend the following handy utilities:
Certain little tools make everything that little bit easier (all these are XP/Vista):
From a Gnome user's perspective...
Personally, I prefer the following tools, depending on the language I'm developing for:
I have actually put together a list of my favorite tools on my blog:
http://www.coderjournal.com/essential-software/
Then there is always Scott's list, which is way more complete than mine:
http://www.hanselman.com/tools/
Git [1] for version control. Works great by itself, or as a svn client with git-svn.
[1] http://git.or.czI like these free utilities:
My list of daily used applications:
They are not necessarily the best in their fields, but as they say: "pick one tool, take the time to learn it, and squeeze it".
Ok, nobody says that.
[1] http://www.sourcegear.com/diffmerge/now we know that stack overflow needs a merge feature ;)
Well, I know that this is unlikely to be believed, but that's fine by me:-
The C++Builder IDE from Codegear [1] gives me such a great head-start on developing Windows GUI applications that I'm almost unwilling to recommend it in case my competitors catch on.
It's not perfect, but the combination of C++, two-way visual RAD design, a well tried and tested application framework (VCL) and slews of third-party components (basically, all Delphi components since ~1995) hit a sweet spot for me.
Otherwise, +1 for for the usual suspects: SVN, TortoiseSVN, Fogbugz, Winmerge.
[1] http://www.codegear.comTwo apps I use frequently are..
-SQL Prompt from Red-Gate software (Intellisense for SQL)
-Notepad++
MZ Tools and Smart Indenter for Excel development...even if it's not a "proper" language it's nice to write nice code in it!
It depends.
You should consider answering the following questions:
A good
REPL
[1]:
When programming in python I live in
ipython
[2] and am constantly testing things out next to my editor.
When programming in Java
beanshell
[3] gets plenty of use.
When I write PHP I miss having an easy shell to work in.
Edit, save, run, debug, edit takes a lot longer.
I write code in Perl and C.
Debugging:
gdb - for C debugging
perl - for perl debugging
Editing:
vim - I try to never use the mouse. Some prefer Emacs. It's a matter of tradition for me. I typically use vim when I want to focus on a task that I'm familiar with. I use Visual Studio when I absolutely need the context-completion and object-browsing.
MS VS2005 - Microsoft has the best context-completion and object-browsing I've ever used.
Viemu - Sometimes I want vim in visual studio- this is the only tool I know of that provides this capability. However, I've realized that one of the reasons I use vim is to decrease the amount of screen clutter. Viemu doesn't help with that much.
Diffing:
kdiff3 - I don't know how I'd survive without a decent merging and diffing tool. This does the job reasonably well. It's gui-based but you can construct merges using keyboard shortcuts. That's a boon.
Documenting:
MediaWiki - If it's not in the source code, we use a wiki. This is a good solution for non-deliverable document control.
Bug Tracking:
Trac - for small shops, this integrates bug tracking and revision control reasonable well.
Revision Control:
Subversion - Very well supported in the industry. Almost as ubiquitous as CVS. The only feature it's missing is merge-tracking. I understand that's a feature planned for a future version.
I figured that since there are lots of good answers here that I would make my own answer, mark it as The Answer, and edit it up with everyones suggestions. All fine except I can't accept my own answer... Not really sure what to do about that.
These are the tools I use every day.
Some of my favorites:
On Linux, C, C++, Java
Expresso is good but RegexBuddy is much more usable.
Regex Buddy Link [1]
[1] http://www.regexbuddy.com/Hello and good day for everyone
If you plan to play with XML i recommend the use of XMLSpy Enterprise Edition
If you plan to play with databases i recommend the use o AquaFold Aqua Data Studio
if you plan to play with UML i recommend you to use Enterprise Architect
If you plan to play with java i recommend you the use Netbeans
If you plan to play with OS compatibility a i recommend you to use VirtualBox
If you plan to play with php i recommend you to use Delphi for php
if you plan to play with the web i recommend you to use Google Chrome
If you plan to play with .NET framework i recommend you to use Sharpdevelop , Visual Studio better
Thats all With no more.... bye bye
Thanks, a lot of nice tools listed here. Time to try some of them. Here are what I use currently.
For .Net, look here in SO [1]:
Summary:
For .Java, look here in SO [15]:
Summary:
NDepend [1]: It is a static code analyzer that will let you explore your code base, and write quality and design rules.
See all feature of NDepend here http://www.ndepend.com/Features.aspx:
- Code Query Language (CQL)
- Compare Builds
- 82 code metrics
- Manage Complexity and Dependencies
- Detect Dependency Cycles
- Harness Test Coverage Data
- Enforce Immutability and Purity
- Warnings about the health of your Build Process
- Generate custom report from your Build Process
- Diagrams
- Facilities to cope with real-world environment
One tool that I always miss on Windows is a good window manager. I suppose this is one reason why Windows (and Mac) developers tend to like IDEs better than old Unix folks.
On Linux I prefer Blackbox -- it's features fit my work style, and it tends to stay out of my way.
My recommendations aren't specifically programming tools, but they help organize my workspace while I'm getting things done.
WinSplit Revolution [1] -- I like to be able to quickly maximize, tile, and organize my windows with a quick keystroke or two. I threw together a little script to do the same thing in Linux because I could find nothing like it. I can't stand working for long on computers that don't have something like this now.
VirtuaWin [2] -- Virtual desktops for Windows that actually work half-decently. Not an incredibly slow piece of junk like Microsoft's official powertoy.
Launchy [3] -- Launch programs via keyboard. I use Gnome Do [4] on Linux, but it's not as good.
[1] http://www.winsplit-revolution.com/On Linux(Ubuntu):
On Windows(Vista):
For development process tools we use some of the Atlassian products (FishEye repository browsing, Crucible peer reviewing tool, Confluence wiki) and Hudson - which (echoing sentiments above) is on of the greatest development aids I have ever used.
JIRA is the best issue management tool I have ever used, but am still a fan of XPlanner in certain cases.
The more they integrate the better.
ide: visual studio / netbeans (zip file!, almost portable)
editor: notepad++ (portable)
file comparison: winmerge (portable)
source control: subversion, tortoise
ticket control: redmine
file manager: free commander (portable)
explorer: IE, FF (portable), chrome (portable)
FF plugins: firebug, web developer, xmarks
sites: STACKOVERFLOW!!!, gotapi
miscelaneous: launchy (can't live without it!)
virtualization: virtual box (I have a machine image for every environment)
office: openoffice (portable)
lamp stack: xammp (portable!)
disk usage: windirstat (portable), scanner (portable)
pdf viewer: foxit (portable), sumatrapdf (portable)
uncompressor: 7-zip portable
M$ sql comparison tool: sql delta
M$ sql management: visual studio sql manager
mysql
mysql management: phpmyadmin, manager provided with mysql
as you may have noticed, I have a special predilection for portable applications...
I use the Eclipse IDE for Java development with the Subclipse plug-in for revision control of group projects and SVN as the actual revision control program. For C/C++ and python development on Linux I prefer to use gedit. For Ruby development on any platform and C/C++ and Python development on Windows, I prefer to use Scite.
When I am learning algorithms / data structures / programming there are two tools, which are invaluable to me - Microsoft Excel and Idle (Python GUI).
You may laugh - but proving simple things in Excel and using Idle as pimped calculator really speeds my learning process.
Wireshark [1] when you need to know what is actually on the wire. Lots of filtering options and support for a large number of protocols.
[1] http://www.wireshark.org/I've dropped all the eye candy. I've decided to rough it for a while.
I don't see many Unix-platform Development tools here besides the standard vim, emacs, shell utilities, versioning, etc.
Besides those, there are a few really powerful tools out there:
cscope -- Lets you search through LARGE directories worth of code quickly and easily, and even lets you run a find-replace across the whole thing. Best used with C
quilt -- While DVCS is really important, patching has another niche altogether. With quilt, you can easily maintain a series of patches, letting it automatically keep track of the changes you've made and diff them, and later let you roll-back or roll-ahead, and all you need to do to get the changes to someone else is give them the patch-files!
qemu -- A really powerful virtual machine. One really beautiful thing about it is the --nographic option, which lets you run a virtual machine in just text!
guake -- Just an example, though there are other Quake-style terminals that drop down and really let you get to the command-line and back from GUI really quickly.
xchat -- No, really. Almost any open-source project has dev's on an IRC, and the easiest way to find something out is to ping them!
The 1st step to design the web page is to design layout. The layout generators [1] will save your time.
[1] http://www.pagecolumn.com/LLBLGen for code generation, it is brilliant.
Source Control : Subversion
Bug tracking : FogBugz
Text Editing : Ultra Edit and vi
SQL Editor : Aqua Data Studio
Cocoa/ Objective C : XCode
FTP : FileZilla
Browser : Safari / Opera
...and a decent spreadsheet package (Excel) to match and concatenate delimited lists of data together and parse as SQL commands...:)
Cygwin or, if in Vista Ultimate, the Unix Subsystem. Mostly for the purpose of having access to grep.
VIM, putty, firebug, firefox.
Here's what I use daily for console development on a windows machine.
Source Control: TortoiseSVN
IDE: Visual Studio 2005
IDE Addin: Visual Assist X
Diff/Merge: Beyond Compare
Wiki: Trac
An automated build and test environment ... For Java, I use
Everything is built, deployed and tested upon every checkin!
2 spring to mind for me... PSPad [1] for editing and DevProject Manager [2] for storing code snippets
[1] http://www.pspad.com/Agent Ransack is a tool I use for searching many files for contents in Windows. It is fast, and powerful.
I'm mostly developing on FreeBSD but use Mac OS X as my main desktop so I use TextMate [1] for text editing and various UNIX utilities coming from MacPorts [2]. I use Fusion [3] for creating & managing FreeBSD VMs. My version control system of choice is Mercurial [4], a decentralized vcs. Scripting is done in Ruby [5].
Being a Ruby fan, I'd recommend Redmine [6] for bug tracking/releasing/forge. It is evolving quite rapidly and has the same feature set as Trac.
[1] http://macromates.com/When Developing software for Linux I discovered something shocking: There is no such thing as "Essential" tool. you can write code using simple text editor and debug the program by writing logs. And your understanding of the program would probably increase.
However since most of use need to maximize our output in order to create value to our companies every tool that its cost is less then the time it saves should be considered essential.
Beyondcompare
EditPlus
Firefox
Miranda IM
MyBase
EverNote
My current development tool list:
UltraEdit for ASCII editing
MyEclipseIDE, VS2005
JUnit, Ant, Subversion & TortoiseSVN
Sun Glassfish Server
MySQL
PuTTY, FileZilla
Newsgator for RSS reeds
Fiddler for HTTP debugging
I also use Sun's VirtualBox for having different developer setups (java, .NET) without cramming everything into one.
Shameless self plug: I also find my own RefactorBuddy [1] invaluable.
And without reservation, ProGuard [2] Java code obfuscator/shrinker.
[1] http://www.SoftwareMonkey.org/ProgramAs I do all my programming these days as just noodling around, I only use Squeak for stuff, and if I need to achieve anything it will usually involve cygwin commandline tools or Xemacs for text processing.
A sensible alternative for all of those might be something like bigloo + xemacs.
Best Regular Expression Editor I know for Windows is Expresso [1]. It has a designer and even more important, an automated analyzer, that can easily be used for documentation of complex regexp snytax.
For merging I also use SourceGear DiffMerge [2]. And the rest of the tools includes a good Text Editor and a good IDE.
[1] http://www.ultrapico.com/Expresso.htmI'd say something like VMWare or Virtual PC would be a good start. Although it isn't as fast as raw hardware you'll gain time when you want to start clean or when you want to try out something new. Also switching between projects with different tools (versions of visual studio, source control, frameworks, factories & generators) is much faster!
I'm very happy with Subversion + Trac for integrated source code control, repository browser, issue tracker and wiki. I run it on an Apache web server which also provides the authentication mechanism. Trac is very easy to set up and use.
MySQL Workbench is pretty amazing. It's a way to set up your tables/and stuff visually, produce pretty charts to tape to your wall, and it has a nice export tool, for full create scripts, and will also read previous exports to create an ALTER script based on Diffs.
I am a huge fan of Powershell [1]. Don't be fooled by the administrator tools credentials, if you do development in .Net or want a OO scripting language on your Windows box that puts the UNIX equivalents to shame, this is it. I also use GVim [2] and Notepad++ [3] on a daily basis.
[1] http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspxI personally just bought a copy of SlickEdit [1]. Great editor (vim emulation + integrated IDE features = yes please!), expensive, can be kinda clunky. Beyond Compare [2] is a great diff tool. As far as version control, I like Git [3], but SVN [4] is great and widespread. I need a good shell, and fish [5] is my favourite.
[1] http://www.slickedit.com/File/Folder comparison: Beyond Compare [1] (not free). I used WinMerge years ago but it didn't have folder comparisons at the time.
[1] http://www.scootersoftware.com/If you are using Visual studio, you have to get Reshaper
Visual studio is essentially an incomplete product without it. I cannont stess this enough.
http://www.jetbrains.com/resharper/
Want: Visual Studio 2005 Subversion NSIS
Have: Visual C++ 6 PVCS 5 InstallShield 5.5
Yes, the average age of my development tools is 14 years...
IDE: Oracle JDeveloper [1]
It was essentially forced upon me by my job, but now I adore it. It's my first stop for Java/JSP/JSF work (it can also do PHP with a plugin). The zero-configuration embedded application server is also quite awesome.
Also, another vote for Beyond Compare [2]. I just discovered it a few weeks ago when Jeff Atwood blogged about it.
[1] http://www.oracle.com/technology/products/jdev/index.htmlWinMerge [1] for diff/merge and TortoiseSVN [2] for CM are the first things I install after Eclipse.
[1] http://winmerge.org/Bash [1], sed [2], awk [3] for little shell scripting
Beyond Compare is essential for comparisons of files, folders local or remote (ftp). It is awesome!
Check it out at http://www.scootersoftware.com/
For a good list of available tools, check out Scott Hanselman's recommendations. [1]
In practice I don't see how you could really use all of those tools well. Here is a pared down list of what I use in my 2 separate development environments since I split my time roughly in half between C# and Python. About half of these tools are free.
Visio (Used for ER diagrams mainly, but I wouldn't recommend it.)
Eclipse + Pydev + viPlugin (I'm hooked on debugging in an IDE)
Ant for automated builds and remote deployments
Visual Studio 2008 + viEmu
Missing Tools
kdiff3 - works in linux and windows
trac - a great way to view your svn tree + wiki + bug tracking
Windows XP and later:
Programmer's Editor:
On Windows XP and later, I recommend TextPad. It is an excellent low-cost editor, which supports multiple language configurations and good but limited integration with 3rd party tools
I also use UltraEdit-32 from IDM Computer Solutions. It is not as good for multi-language development, but it supports editing files accessible with FTP.
UNIX/Linux remote sessions: puTTY is an excellent free program for this.
rssbandit - rss reader
trayit [1] - for minimizing windows to tray. Hate having too many on taskbar
[1] http://www.teamcti.com/trayit/trayit.htmI am a big fan of xplorer2 [1], it makes navigating the file system more programmer friendly. I am sure everyone will agree that using the search capability in Windows XP is infuriating; Xplorer2 allows you to search across directories and inside files, although not quite grep it is very useful. It comes with a nice lightweight replacement of notepad.
[1] http://www.zabkat.com/Eclipse PDT for PHP development on Linux.
Of the tools I have seen on the list that haven't been mentioned one of my favorites is "Dave's Quick Search Deskbar" which can be found at http://dqsd.net/ it's ability to use switched shortcuts for things like MSDN and the MS Knowledgebase Q articles are outstanding. There are probably 30 of the shortcuts I use constantly when programming and well over 200 odd searches ranging from FedEx Tracking number search.
For quick and dirty UI prototypes I have found I am using the Pencil Firefox add on which is a handy SVG Image editor. There are enough stock UI widgets built in I can make an interface in 3 or 4 minutes to send off as a .PNG for a decent approximation. Pencil can be found at Pencil Homepage [1]
[1] http://www.evolus.vn/Pencil/In addition to many of the above, I'm a big fan of MaxiVista [1]. I use it with two laptops each with an external monitor, and uses it in two scenarios: 1. Extending the screen so that I can use four monitors simultaneously, or 2. Control the secondary computer with the same keyboard/mouse as I use on my primary computer just by moving the cursor over to the next monitor.
[1] http://www.maxivista.com/REsharper Paint.NET Fiddler Notepad++
are my main goto's
While programming I use snagit and evernote.
Snagit [1] is great for screen prints. You can set it up to hot-key captures into a stack of screen captures with a name that counts up. I like to use them to keep a chronology of runs of some of my output. (Techsmith also makes Camtasia studio. A must have for demos.)
Evernote [2] is a great notepad program that creates a continuous tape of just about anything. I paste code into it all the time. It has a nice little search filter. It is pretty cool to grab a copy of the website you are developing each time you change it. Great way to show changes without much work.
[1] http://www.techsmith.com/I'd second IntelliJ IDEA as a Java IDE. I keep on trying others but going back to IDEA. Built in refactoring, almost psychic code completion, good debugging, good integration with almost every popular tool, and usability which has clearly been thought about.
For the Mac:
Textmate
GVim [1] - I've tried to use other editors and larger IDEs and such, and keep coming back to good old gvim.
[1] http://www.vim.org/Environments: Eclipse (C/C++, Java, PHP, Ruby, Rails), EiffelStudio (Eiffel), Visual Studio (.NET), Expression Studio (.NET design)
Text Editors: jEdit
Shells: Cygwin, PowerShell, Unix command line tools for Windows
Compilers: MinGW (Windows, C/C++)
Version Control: TortoiseSVN (SVN), TortoiseCVS (CVS)
Mathematics: R (statistics), Octave, Maxima, Singular CAS (still comparing the functionality of the last 3...I'll probably choose 1)
Art: GIMP, Inkscape (Scalable Vector Graphics)
Slick Edit Gadgets [1] are a great addon to VS...I particularly like the line count. And they are free! The full versions I nice too, but may not be worth the cost for everyone.
VSWindowManager [2] is a great tool for keeping window "Profiles" in Visual Studio. I use it all the time for switching between full window text editing and the usual window with Solution Explorer, Errors, Output, etc.
VisualSVN [3] For VS Subversion integration...if you use VS and work in a subversion environment, this is hands down the best $50 you can spend. The time and sanity saved is worth every penny. I even bought it for work myself because they were too cheap to get it for me...I like it that much.
[1] http://www.slickedit.com/content/view/441There are many, but there are some that I find myself installing before I even get started:
I have found Copernic [1] to be much better than Windows Live Search, even under Vista.
If you have > 1 monitor, then Ultramon [2] is indispensable.
In Firefox, Mouse Gestures [3].
[1] http://www.copernic.com/en/products/agent/download.htmlThere are many, but there are some that I find myself installing before I even get started:
I have found Copernic [1] to be much better than Windows Live Search, even under Vista.
If you have > 1 monitor, then Ultramon [2] is indispensable.
In Firefox, Mouse Gestures [3].
[1] http://www.copernic.com/en/products/agent/download.html