fish.cx


Improve your life - install the IFL protocol today! (download)
Up to: fish.cx

Tools

I've been using Windows for a long time, and have collected vast numbers of little utilities. Some of them are good. For a long time I've been meaning to put up this webpage, telling people which ones they are. I think they're all free to download and use for non-commercial purposes unless otherwise marked, but I may make mistakes.

Metapad

ifl:metapad
http://liquidninja.com/metapad/

My current text editor of choice. It's a drop-in replacement for notepad. It loads almost instantaneously, so is great for making quick notes, has search-and-replace, and block indentation. The biggest features it misses are syntax highlighting and macro recording. Note that this is not an emacs or a vim, but I seldom need that and can fall back to more powerful tools when I do. I don't believe that with great power should come great lack of usability.

Powertoys (inc. TweakUI)

ifl:powertoys
http://www.microsoft.com/windows95/downloads/contents/wutoys/w95pwrtoysset/default.asp (good)
http://www.microsoft.com/windowsxp/pro/downloads/powertoys.asp (newer, less useful)

This control panel applet is an absolute necessity on all versions of Windows. It's the first thing I install on a new machine. Unfortunately, it looks like the latest (officially WinXP-only, I don't know whether that's true) version may suck a bit, so I'm sticking with the previous lot (I'm taking the same view of XP itself. Win2k is currently the only sensible Microsoft OS to be using; if you can get it to install, that is). "Command-prompt here", tab completion in command prompts and icon cache refreshing are probably the most useful aspects.

CRC32 Property Page Shell Extension

ifl:CRC+BrainChk
http://www.preface.co.uk/

This adds a page to the "Properties" of each file in explorer which displays a 32-bit number called a CRC (cyclic redundancy check). This is a number which has been stirred up by reading through the contents of the file. If two files have the same number, they probably have the same contents (unless someone's deliberately made them match). Note to self: Do an MD5 version one day.

PC Magazine Utilities (inc. UnClean)

ifl:pc+magazine+utilities
http://www.pcmag.com/article2/0,4149,2737,00.asp

update: Unfortunately they've decided to attempt to charge for these. They aren't that good. You may be able to find old versions in other locations though, e.g. here for InCtrl5.zip. AllTheWeb.com is good for that kind of search.

UnClean is great for Win2k users. Win2k's "Add/Remove Programs" menu loads every icon of every program you've installed before letting you uninstall anything. This takes ages. UnClean, a freebie from Ziff-Davis, is a replacement which doesn't do that. You should also look at the other listed utilities, many of them (particularly those by Neil Rubenking) are good.

Tools For Programmers

Unix-on-Windows

Cygwin and MSYS

ifl:cygwin, ifl:msys+mingw
http://www.cygwin.com/", http://www.mingw.org/msys.shtml

Unix programmers have a lot of tools available to them. Windows programmers should get these attempts to port a large number of them.

Cygwin provides a host environment which pretends to be Unix, MSYS/MinGW tries to be as native as possible. The result is that Cygwin lets you run mainly unmodified Unix apps, whereas MinGW lets you write Unix-like apps which compile to standalone Windows exes.

Even if you aren't a programmer, you should install Cygwin with XFree86, since you can then download and (with some patience) run some programs written for linux.

C/C++ Compilers - GCC, .NET, LCC-Win32, Borland C++Builder, Watcom, Digital Mars

ifl:gcc (ifl:devcpp),
ifl:free+visual+c%2b%2b+command+line,
ifl:lcc-win32,
ifl:borland+compiler,
ifl:openwatcom,
ifl:digitalmars

http://gcc.gnu.org/ (http://www.bloodshed.net/devcpp.html),
http://www.winprog.org/tutorial/msvc.html,
http://www.cs.virginia.edu/~lcc-win32/,
http://www.borland.com/bcppbuilder/freecompiler/,
http://www.openwatcom.org/,
http://www.digitalmars.com/

See http://www.thefreecountry.com/compilers/cpp.shtml for a fuller list.

TODO: Rewrite this to emphasise the IDE/compiler split

I should start by admitting that for the past few years, Microsoft Visual C++ has pretty much ruled the windows-programming roost (or the Intel Compiler for fast code). This has been upgraded to version 7 and re-branded as the .NET C++ compiler, which Microsoft gives away in the (ifl:).NET Framework SDK. You won't have an IDE with that, but see below.

Note that Microsoft has never cared about standards compliance in their C++ compiler. If you want a standards-compliant compiler, the best of the best seems to be the (ifl:)Comeau compiler is probably what you should try (it has good warnings too). But for the warnings you can often stick code snippets into their online trial, and GCC is pretty hot on its heels now for compliance.

GCC is an excellent free compiler (version 3.2 is said to rival the Intel compiler), and it's (ifl:)Open Source. It's pretty standards-compliant these days and gives good warnings. I strongly recommend getting it in the form of Dev-C++, which is a great IDE which basically clones MSVC's IDE, but driving the GNU tools. It includes a decent MSVC-alike frontend to the GNU debugger (gdb). It's looking pretty full-featured these days and I'm starting to use it for real projects. On the other hand, I've just discovered (ifl:)MinGW Developer Studio which uses wxWindows and MinGW to make a very compelling free-as-in-beer IDE which runs on both Windows and Linux.

If you only want to program in C, LCC-Win32 is another good Free/Open Source compiler, with a nice IDE and Windows resource editor. There's a "heavily-modified" version of LCC with a good-looking IDE called (ifl:)Pelles C which can also do PocketPC development apparently (quite a claim, I must verify this). Borland and Watcom have made their old versions freely available, and Watcom are in the process of going Open Source. For a long time, Watcom was highly spoken of. These days, the UI and docs both look a bit long-in-the-tooth, and is hard to recommend really. With Borland, you only get the compiler, without any decent docs or IDE. GCC suffers from this a bit too. Borland also make you jump through huge numbers of compiler-specific hoops. Note also that Microsoft give away a very powerful debugger (e.g. better than the one used in MSVC), in their (ifl:)Microsoft Debugging Tools. You should also get the (ifl:)Platform SDK, which is basically the most up-to-date header files which Microsoft have released for the ever-changing Windows platform. They're both big downloads I'm afraid.

Lucian Wischik has an excellent page specific to the Borland C++Builder, including how to interface it to Microsoft's debugging format (as well as lots of other interesting stuff).

The Digital Mars compiler is "a drop-in replacement for Symantec C++, or can be used independently". I think it started from the Zortech/Symantec C++ codebase. It seems to be one of the nicer compilers, and claims to have the fastest compile/link times. The more advanced language features such as member templates and argument dependent ("koenig") lookup have only been added quite recently (on 2 Mar 2003), so might be slightly flaky. The downloadable version doesn't have an IDE or debugger. Don't be too put off by the "this has never been tested" licence agreement.

Java

If you're into Java (I'm not a Java programmer, but I quite like Java), GCC 3 can now compile it to native code I believe, which may or may not interest you. In terms of IDEs, make sure you're taking full advantage of Java's support for refactoring and using a tool designed for refactoring. I believe that the Open Source eclipse.org IDE fits the bill, though I must admit, if the refactoring support is there, I haven't worked out how to get at it yet (I haven't tried that hard though).

I've also had Borland's (ifl:)JBuilder recommended to me as an alternative to eclipse. The Personal edition is free to download, but as with C++Builder, not Open Source. Oh, and it's a 50 meg download, plus another 50 meg for the docs. But you're a Java programmer, so you're used to that.

Python

ifl:python
http://www.python.org/
ifl:activepython

This is a quite elegant and powerful scripting language, with a large and fast-growing community supporting it. I lurve Python. It also binds nicely to (ifl:)wxWindows via (ifl:)wxPython, giving powerful and portable native-look UI support, which can be quickly ported to C++. ActiveState's Python distribution is very friendly, and includes some extra Windows-specific stuff (win32all). I'm not sure of all the differences between it and the python.org distro, but ActivePython seems good to me.

Pascal/Delphi/Kylix

OpenSource Pascal/Delphi has taken off in a big way, and is now quite a promising language for fast multi-platform development. As far as I can tell, the only OpenSource product which deliberately attempts to clone Delphi is (ifl:)Lazarus. It's really pretty these days, but it is still in beta and it's hard to tell how much development is happening. It's a Delphi-clone IDE with (ifl:)Free Pascal as a backend. You could also try replacing the compiler with (ifl:)Virtual Pascal, (ifl:)GNU Pascal or the experimental Inno Pascal, though there probably isn't much advantage to doing that. An alternative IDE is (ifl:)Dev-Pascal from the same people (Bloodshed Software) as Dev-C++. That's quite reasonable too. Dev-Pascal has downloads with GNU Pascal or Free Pascal included. Virtual Pascal comes with a DOS-box-based IDE and debugger. Free Pascal has links to other IDEs, and Bloodshed has this useful compiler resources page: http://www.bloodshed.net/compilers/ (ifl:bloodshed+compilers+list). Bloodshed have a separately downloadable debugger called Insight which is a frontend for the GNU debugger, GDB. It works for C, C++, Pascal and probably others. The Microsoft one linked above for C/C++ is more powerful but is harder to learn.

Installers

There are only two contenders that I know of, (ifl:)Inno Setup, which is great, and Nullsoft's (ifl:)NSIS, which is less great but still quite good, and a bit simpler. I used to recommend Martijn Laan's "My Inno Setup Extensions", aka ISX (ifl:isx+inno+setup), in preference to InnoSetup itself, but fortunately InnoSetup now contains all of the enhancements from ISX, including the extremely powerful Pascal script (with support for external DLLs).

Actually, it looks like Microsoft now provide a tool for creating installers based on the "Windows installer" mechanism, but only for Visual Studio owners. I haven't tried it, but you can get it here if you're one: (ifl:)Visual Studio Installer. It doesn't look very good to me though.

Other languages

I haven't done any serious programming in any of these, so treat this with a pinch of salt. I also can't be bothered to link to them, they're easy to find. Anyway, I've heard good things about these languages: For a better language comparison page, try "My Programming Language Crisis" (Keith Waclena's, in fact), or Doug Bagley's The Great Computer Language Shootout.