Tijmen 09:18, 16 June 2009

I intend to dedicate several (short) posts on the various tools I use to increase my productivity. At some point I will post a complete list of my must-have tools, but for now I want to focus on a new find (for me): the Everything search engine, by voidtools. Everything is a very silly name for a tool and its functionality is not ground-breaking: it searches for files on your local machine, based on their filename. This is obviously not rocket science, but it has a few distinctive characteristics. The first is performance: it indexes an average system in seconds. Literally. Searching is very snappy as well. Another big advantage is its low footprint. it uses up very little memory and disk space, and since its indexing process is very fast, there is no noticeable background disk churning like you get with default Windows search or other third party tools.

So, after this intro there are a few things worth mentioning: using Everything together with Launchy, and setting up Everything on a fileserver.

 

Everything on a (personal) fileserver

Everything can only index local disks. It does not index network shares or other remote locations (so NAS users are out of luck I suppose). However, you can run Everything as a service on a file server and have your local Everything client connect to this server. As an alternative, you could just run Everything on the desktop at the server, but that requires staying logged in all the time. In any case, you need to install Everything on the server and make it start an ETP server.

To install everything as a service, you need to follow these steps:

  1. Install Everything on the server
  2. Disable "run on system start". Go to the tools menu, click options. On the general tab, uncheck "Start everything on system start up", and click OK
  3. Open up a command prompt, CD into the folder where Everything was installed, and enter everything.exe -install_service
  4. This installs the server, but it does not set the command line option correctly: it only runs Everything as a service for the local computer (i.e., the server), but we want Everything to run as an ETP server. To do this, type the following at the command prompt: sc config everything binPath= "c:\program files (x86)\everything\everything.exe -svc -host" (replacing the path with your install path of choice, obviously).
  5. Stop and start the service (either through control panel or the geeky way, by issuing net stop everything (sounds kind of cool), followed by net start everything).

After this, configuration is done. Fire up Everything on another computer connected to the file server and use the option "Connect to ETP server" on the tools menu. I've had to use the IP number of my server since it did not do a name lookup, but I am not running any local DNS or hosts file, so YMMV.

Side note: Everything defaults to opening networked files on shares named after the local drive letters, so it opens the folder documents on the E-disk of the server as \\server\E\documents\. Not a huge problem, but something to be aware of. I have not found a setting in the INI file (old skool!) to change this.

 

Using Everything from Launchy

This next bit is directly from Lifehacker. Simply add a shortcut in a location that is indexed by Launchy, and use "C:\Program Files (x86)\Everything\Everything.exe" -search as the target. Name it appropriately (for example, "find") and re-index Launchy. Now you can type "find", TAB, and enter your search text. In order to do a search on your fileserver, make another shortcut, but add -connect 192.168.1.1 before the -search  option. I've named this shortcut "dfind", since my servername starts with a D.

 

I first read about Everything on the top 10 tiny & awesome Windows utilities at Lifehacker.

Tijmen 05:23, 1 June 2009

I've finally finished reading the excellent Working effectively with legacy code by Michael Feathers. It has been quite a struggle but that's merely because of the amount of useful information in it.

 

The author declares all code that is not under test to be legacy code. Ayende (author of Rhino mocks) basically based his mocking framework on the concepts in the book. Not surprisingly, he recommends the book as well.

 

I recently worked on an application written by another team that had zero unit tests. It did have a winforms test app included but that was merely for integration testing and required quite a bit of tweaking before anything useful could come out.

I started with isolating large chunks of functionality using Dependency injection with Unity. I then used StructureMap's automocker to bring most of the codebase under test (+80%).

Adding the required features was made much easier when most code was under test. This inspired me to throw a talk on TDD at meet the Masters in Microsoft at Avanade.

 

I´ll be hosting another talk about PEX next week and in preparing I will be diving into the book´s concepts. As most of these are written for either Java or C++, my focus will be around utilizing the same concepts in the beautiful world of .Net.