Tuesday, July 17, 2007

Must-have tools for Windows application developers

Summary: A continuously updated list of free software applications recommended for Windows application developers.

If you find yourself in business of writing, deploying, or troubleshooting software for Windows, you may appreciate the following FREE tools and utilities:

AnVir Task Manager Free shows the detailed information about every running process, as well as applications running automatically on Windows startup (including all hidden applications). AnVir Task Manager is similar to System Explorer, but it offers several distinct features, such as alerts and ability to block auto-started programs, a view showing command-line parameters used by running processes, and more.
Altiris Software Virtualization Solution (SVS) allows you to install and run applications in a virtual sand box on your computer. If you often download and test new applications (especially alpha and beta versions), Altiris SVS can help prevent these applications from corrupting your Windows registry, files, system and user settings, and so on. For more information and review, read the Online Tech Tips review.
AutoHotKey can create hotkeys for keyboard, joystick, and mouse. It can expand abbreviations as you type them (for example, typing "btw" can automatically produce "by the way"). Use AutoHotKey to create custom data-entry forms, user interfaces, and menu bars, remap keys and buttons on your keyboard, joystick, and mouse. The program can convert any script into an executable file that can be run on computers that don't have AutoHotkey installed.
BareTail is a real-time log file monitoring tool, which can handle very large files (over 2 GB), highlight lines with errors, monitor changes in multiple files, and do more.
DiffMerge is an application to compare and merge files and folders. The program is compatible with 42 different character encodings.
Dropcloth allows you to cover inactive desktop windows with a solid background, so that you can focus on just one application without closing out or minimizing anything. This feature is especially helpful when you use multiple applications in a presentation.
Error Code Look-up is a command-line tool, which determines error values from decimal and hexadecimal error codes in Microsoft Windows® operating systems. The tool can look up one or more values at a time. All values on the command line will be looked up in Exchange’s internal tables and presented to you (errors do not need to be specific to Exchange). If available, informational data associated with the value(s) will also be shown.
Fiddler logs all HTTP traffic between your computer and the Internet allowing debug traffic from virtually any application, including Internet Explorer, Mozilla Firefox, Opera, and more.
FileMon monitors and displays file system activity on a system in real-time. Its advanced capabilities make it a powerful tool for exploring the way Windows works, seeing how applications use the files and DLLs, or tracking down problems in system or application file configurations.
Imagicon can convert image files to icons (as well as other image formats). When converting images to icons, you can enable alpha transparency. Supported icon sizes include: 16x16, 32x32, 48x48, 64x64, and 128x128.
Intype is a powerful and intuitive code editor, which is easily extensible and customizable, thanks in part to its support for scripting and native plug-ins. At the time of writing, Intype was still in alpha version, but it looked quite promising. I wish it had a toolbar, though.
InUse (File-In-Use Replace Utility) is a command-line tool, which can replace files in use by the operating system.
NDoc is a code documentation generator, which builds help files from .NET assemblies and the XML documentation files generated by the C# and VB.NET compilers (VB.NET requires the VBCommenter add-in, which I could not find). Unfortunately, the last official release of NDoc was written for .NET Framework 1.1 (let's say thanks to Microsoft for Sandcastle [sarcasm intended], which promised a lot and delivered little), but a reasonably stable alpha build of NDoc 2.0 (targeting .NET Framework 2.0) is still available.
Pixelformer is an advanced icon editor which offers support for different color depths up to 32-bit RGB with alpha channel, lossless target color depth switchin, semi-transparent colors, free-form masking, multiple layer support, in-place supersampling, icon extraction capability, PNG size optimization, Vista icon optimization, and more.
Process Explorer shows which file handles and DLLs processes have opened or loaded.
Process Monitor is an advanced monitoring tool for Windows that shows real-time file system, Registry and process/thread activity. It combines the features of Filemon and Regmon, and adds an extensive list of enhancements including rich and non-destructive filtering, comprehensive event properties such session IDs and user names, reliable process information, full thread stacks with integrated symbol support for each operation, simultaneous logging to a file, and much more.
Reflector for .NET is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector can decompile .NET assemblies back to C# or Visual Basic code. See also .NET Reflector Add-Ins.
RegMon is a utility that monitors changes in Windows Registry. It shows which applications are accessing Registry, which keys they are accessing, and the Registry data that they are reading and writing - all in real-time.
Screen2Exe creates highly compressed screen demos.
SideSlide is a desktop extension which can be used to group related items, such as shortcuts to files and folders, URLs, notes, and more.
SmartClose simplifies and automates the process of closing running applications, which is often required during software installations. It stores the running program information as a system snapshot and restarts/restores them later. The program allows you to exclude programs from being closed and automatically skips applications that are required for the Windows system to run.
SnippetCompiler offers a fast and easy way to compile code snippets written in C# or VB.NET, so that you do not have to create a new Visual Studio project every time you need to test a small code block.
SweptAway is a simple system tray utility that automatically minimizes applications that you aren't using.
SysAngel DVD Generator can be used to create Windows installation DVDs, which include new drivers, service packs, and hot fixes; this will make subsequent OS installations much faster.
SysExporter allows you to copy data displayed in standard list view, tree view, list box, combo box, text box, and WebBrowser/HTML controls from almost any application running on your system. Not many people would need this functionality, but when you need it, it's really handy.
System Explorer is a much better version of the lame built-in Windows Task Manager. It can show additional information about running processes, such as full path to the application executable network connections, and open files. Using System Explorer, you can easily check for suspicious files, search details about files and processes via online databases, and quickly access system utilities. If you like System Explorer, you can configure it so that it gets invoked instead of Task Manager (as I do). Note: To add a column to the Processes view (such as a User Name, which is not visible by default), you need to right-click a column header, and make sure the column is checked.
TopStyle Lite is a simple Cascading Style Sheet (CSS) editor. The tool includes a multi-browser style checker and validator, which alerts you about invalid entries and highlights styles that may be affected by bugs in different Web browsers. TopStyle Lite can create a basic style sheet from an existing HTML file, and all you need to do is simply apply styles to all the relevant tags in this document. Properties can be altered using the drop-down menus, or through manual entry. Any property that isn't supported by the current CSS definition will be highlighted in red, enabling easy location of errors later on. The interface enables you to preview the current style sheet from within the editor itself and locate elements within the style sheet easily and quickly.
Unlocker can help you find who (or what) locks a file and unlock it.
VirtuaWin creates virtual desktops, which can be used to better organize applications. For example, you can use a dedicated virtual desktop when sharing a presentation.
Who's Locking? finds which process is locking a DLL (you can also use this tool to terminate this process).
Windows Grep combines the power and flexibility of traditional command line grep utilities available on DOS, UNIX and other platforms with the ease of use of Microsoft Windows. In addition to searching, Windows Grep also performs global replacing in your files, with complete safety. Windows Grep is designed for searching plain-ASCII text files, such as program source, HTML, RTF and batch files, but it can also search binary files such as word processor documents, databases, spreadsheets and executables.
Windows Installer Cleanup Utility can help resolve installation problems for programs that use Microsoft Windows Installer (MSI). It provides a dialog box in which you can select one or more programs that were installed by Windows Installer and removes the files and registry settings that make up the Windows Installer configuration information for programs that you select. The tool does not remove the application files.
Windows SteadyState offers the ability to revert a computer to a previously stored state every time it reboots (or when an administrator sets it to). Useful for testing new applications from untrusted sources.
Windows SysInternals offer system utilities to manage, troubleshoot, and diagnose the Windows operating system and applications (you can run most of the GUI-based tools directly from the SysInternals Live site).
Windows System Control Center (WSCC) makes it easier to use system utilities offered by SysInternals and NirSoft.
WinMerge is a visual text file differencing and merging tool. I find it easier to use and more comprehensive than WinDiff that comes with Visual Studio SDK.
ZoomIt is a screen zoom and annotation tool for technical presentations.

For more (free) tools, see these sites:

Essential Developer Productivity Tools
Free .NET Refactoring Tools
Scott Hanselman's 2006 Ultimate Developer and Power Users Tool List for Windows
Windows 2000 Resource Kit Tools for administrative tasks

Wednesday, July 11, 2007

Searching beyond Google

Summary: While Google may offer the ultimate search engine and tools, you should not ignore other desktop and Internet search options.

In the world of Web search, there are more than 11 Ways to Search Without Google, although few of them offer compelling alternatives. The main problem with all these general-purpose Web search engines is that they are no better than Google, and a few are probably worse. Take Ms. Dewey for example (figuratively speaking).

I guess, Ms. Dewey can amuse a few male users for a few minutes (until it becomes clear that she ain't gonna get naked), but when it comes to finding information, most of us would rather google.*

Google is likely to remain a Web search leader for a while, but check out AllTheWeb Livesearch (brought to you by Yahoo!). Unlike the maker of the other Live Search (AKA Microsoft), Yahoo! offers a couple of noteworthy innovations:
"Livesearch [...] analyzes your search in real-time and instantly provides Web results with alternate search queries as you type. These suggested queries are based on what other people have searched for. [...] Livesearch makes searching the Web faster and easier by: predicting what you are searching for, suggesting alternate search queries as you type that help you focus your search, and providing relevant results in real-time. It is a big improvement on having to type one search after another to get the results you want."
LiveSearch is still in beta, so it has a few quirks. For example, search results for queries that use international characters (such as Cyrillic letters) sometimes display strings of Unicode values (e.g. u0438\u043e\u0433\u0440\u0430) instead of text. I assume these problems will be fixed.

.NET developers out there: try Dan Appleman's SearchDotNet.com. SearchDotNet is based on the Google's custom search engine. Dan claims that it returns more relevant results about .NET programming. (Since I mentioned Dan Appleman, read his Microsoft + Yahoo = Microhoo? article; it's funny.)

Now, what about desktop search? I was never a fan of desktop search utilities built by Microsoft or Google. From my limited experience, they do more harm than good: the original Goggle Desktop Search was a resource hog, while Widows desktop search caused my Windows XP Explorer to crash, so I had to disable its advanced features. If I need to find something on my desktop, I use either the basic Windows Explorer search or the Windows shell find command. Both options are quite limited, so I was really thrilled to find a free Windows Grep tool:
"[Windows Grep] combines the power and flexibility of traditional command line grep utilities available on DOS, UNIX and other platforms with the ease of use of Microsoft Windows. In addition to searching, Windows Grep also performs global replacing in your files, with complete safety. Windows Grep is designed for searching plain-ASCII text files, such as program source, HTML, RTF and batch files, but it can also search binary files such as word processor documents, databases, spreadsheets and executables."
While not exactly a search tool, Launchy (freeware) is joining the list of my favorite utilities. After installing and making sure Launchy is running, press ALT+SPACE (you can change this shortcut to something else) and enter a few letters of the name of the application or document you want to launch in the dialog box (e.g. enter "Pain" if you want to start Paint); then just pick the desired item from the list of matches found in the indexed directories (you may need to add your custom folders to the predefined search locations).
In addition to launching applications via a couple of keyboard strokes, you can use Launchy to perform basic calculations. Scott Hanselman suggests a few similar tools, but I haven't tried those, yet.

UPDATE (Nov-29-2007): It looks like Google is catching up with Yahoo!'s LiveSearch. To see the Google's implementation of keyword suggestion, enable the Keyword Suggestion option by clicking the Join this experiment button of the corresponding section on the Google Experimental Search Labs page.

Additional references:
Special Search Engines That Are Not Google or Yahoo
Ten Search Engines You've Never Heard of (And Can't Live Without)

*In case you did not know, on June 15, 2006, google became a verb.