Internet over copper sucks

I am subscribed to the fastest available ADSL 2+ (24Mbps) connection here in Sydney, and my connection at three different houses I’ve lived in has always been unreliable.  Currently where I’m living, the connection actually goes down whenever it starts raining!  😕  It also frequently goes down just at random, when it’s not raining.  P2P seems to worsen the situation (not surprisingly), but usenet is superior anyway, so that’s not a problem anymore.  Granted, I am pretty far from the exchange (~4km), hopefully copper will be replaced with optic fibre in the next decade.

So a while back I wrote a small utility that shows an icon in the system tray reflecting whether you can contact (via ping) a remote host (google, or your ISP’s DNS server, for example).

Online icon: lookalive-up

Offline icon: lookalive-down

Clicking the icon shows your the history of ping times:

Look Alive

It can be run on startup, passing the name or IP of the remote host as an argument.  For example:

"lookalive.exe www.google.com"

You can also specify the period (in seconds) between pings (default is 1 second), so to ping www.google.com every 5 seconds:

"lookalive.exe www.google.com 5"

If you have multiple hosts you wish to ping, you can run the application multiple times and a spearate icon in the system tray is displayed for each host. To distinguish between them, you can pass a colour:

"lookalive.exe www.google.com 5 blue"

Additional arguments allow calling of an external application and/or showing a balloon notification whenever the state changes and customisation of the system tray icon.

Download the utility for free as an installer or as a standalone EXE.

Cutting your chances of data loss

Data loss is probably the single most traumatic experience possible for those that store their data electronically. In recent years, I have had the good fortune to be spared of this event, touch wood, but I will be forever mourning the loss of the first computer game I wrote, back in the early 90’s on a Mac SE/30.  It was a hypercard stack, 2.1 Mb in size, so I couldn’t back it up on a single floppy.  Eventually, the 40Mb HDD in that great machine died, and I was crushed.  Years of work, all that creativity, a window on my teenage years.  Gone.

But it was just a game after all.  Recently a friend of mine lost pretty much all the photos of their first born child (3 months worth) due to a botched home server upgrade.  Crushing.

We all know the answer is backup, but many people just don’t get around to it, thinking, ‘yeah I should do that’.  Like many people, I have a server at home (Gentoo linux) that is my firewall, dhcp server etc. and of course file server.  I have a 4.5Tb RAID5 (7 x 750Gb drives) which is about 80% full of data that I’ve amassed over the years.  At the moment there are only two clients – a desktop for everyday use, and a media centre hooked up to the TV.  Even though I do have some level of data redundancy since I am using RAID5, data loss will still occur if more than one HDD fails.

Ok, so finally to the point of this post – to boost my data integrity (and aid in learning WPF), I have written a ‘folder mirror’ utility.

Folder Mirror Screenshot

Folder Mirror Screenshot

As you can see, the folder mirroring process can be paused and resumed at will, log files are maintained in a directory of your choice, and a system tray icon is shown, which dynamically displays the percent complete.  To configure which folders to mirror, the program reads a file called folderMirror.config, in which you can define as many folders to copy as desired.  The utility is designed to be used as part of a scheduled backup, such as a scheduled task.  I have it running every day, creating a mirror of  the data I care most about on the two client computers.  So now my chances of losing data due to HDD failure have been cut down to managable odds, and I can sleep much easier.

You can download the utility for free here.

UPDATE: This software is no longer maintained, I recommend you look at using PureSync as a much more powerful free alternative.

Win Library Tool [revised for Windows 8]

UPDATE: This tool has been updated and now works on Windows 8, however from my limited testing, the new metro interface has extremely limited support for libraries. Unfortunately using this tool I couldn’t find a way for photos added from a network drive to appear in the ‘photos’ metro app even though they appear in the library in Windows File Explorer. Windows 8 is astonishingly bad.

Download Executable | Source Code

Windows libraries (introduced in Windows 7) could have been a really useful feature of Windows, however unfortunately they arrived in a slighly cut-down form out of the box.  Microsoft decided against exposing some really useful capabilities to users, like adding network locations, pretty much the first thing I tried to do.  You get this message:

windows7libraryerror

Luckily, you can add network locations (and any other un-indexed locations), but it must be done programatically.  MS supply a command line utility slutil.exe, candidate for the worst named executable in history.  Pretty sure it stands for shell_library_util.  Anyway, I decided to write a tool to make it easy to add network locations, and added a few other features as well:

  • Add network (UNC or mapped drive) and any other un-indexed folders to libraries.
  • Backup library configuration, such that a saved set of libraries can be instantly restored at any point (like after a re-install of the OS or for transfer between multiple computers).
  • Create a mirror of all libraries (using symbolic links) in [SystemDrive]:\libraries.  This means you can reference all your files using a much shorter path, and also provides another entry-point to your files in many places in the Operating System (e.g. file open/save dialogs).
  • Change a library’s icon.

Hopefully it’s easy enough to use, so I don’t have to explain it 🙂

You can download it for free below.  (Note: This will only run on >= Windows 7.)

Download Installer | Source Code

I must give credit to Josh Smith for his TreeView CodeProject article, upon which this solution is modelled.

The application uses the Microsoft API CodePack to manipulate libraries, which I encourage you to check out if you are writing software to integrate / take advantage of new features in Windows 7.

If you want to learn why and how libraries were introduced in Windows 7, including diving into the .library-ms file format, you can read this MSDN article.

Now featured on Tekzilla!