I spend far too much of my time writing software. I now use C#/.Net almost exclusively, but before that used a combination of C++ and Visual Basic. I spent a while using COM to drive Microsoft Office programs - especially Outlook combined with the WinInet interface to send stuff to the Web. The main output of this is an Outlook add-in that allows Microsoft Outlook users to manage attachments better, thus reducing (a) the size of your inbox and (b) the number of hassling notes from IT support.
My most recent addition to the page is a Noteworthy User Tool that lets you export Noteworthy files to LilyPond.
I've also written a brief tutorial on how to use WinInet from Visual Basic and adapted some information on how to get Exif data from JPEGs from digital cameras using C#.
Finally, my weather software can output data in XML format, so I've written a brief introduction on how to format this using XSL stylesheets.
Let's be clear about this from the start - most of the functionality of this was lifted from Mike Wiering's original NWC2LY which he wrote in Pascal. The original and the source are still on the web. I've not contacted Mike, but from the history section of his site, it looks like he stopped developing this around 2005, so I've had a go myself. I ported it to C# and have made a number of changes in how it works.
This top section has a description of the Noteworthy user tool that outputs a single stave of music. Further down the page is a Noteworthy Text file to LilyPond converter that will do a whole score with a single mouse click.
There's 1 thing from Noteworthy that I know it won't currently handle, but I'm suspicious of its musical "legality":


This version is 0.1.0.3 - uploaded 1 Feb 2010. Changes from 0.1.0.2 include:
This version is 0.1.0.2 - uploaded 21 Jan 2010. Changes from 0.1.0.1
0.1.0.1 changes from 0.1.0.0:
If you download it and find a bug, please let me know.
Download the executable (called nwc2ly.exe) here.
To install the tool, do the following:
This is a standalone Windows program that allows you to enter the location of a Noteworthy text file (*.nwctxt) and then converts this to a set of files to create a LilyPond score. The program creates 2 files for the music for each stave in Noteworthy - an interim file I've given the file extension *.nwcextract, and a final LilyPonfd file (*.ly). The nwcextract files are used during the creation of the final files and can be deleted if required - they are the Noteworthy text for that single stave. However, they're sometimes useful in debugging. It also creates a .ly file for each lyric line. There is than a final .ly file, named after the input file, which stiches all the individual stave/voice files together.
As above, if you download it and find a bug, please let me know.
Download the executable (called NWCTXT2ly.exe) here. This is version 0.1.0.0 and was uploaded on 1 February 2010.
I run a weather site, and wrote this so that I can retrieve images that have been uploaded to the site, for the sake of backup. Its main feature for this purpose is that it can be configured not to download files that are already in the target directory. Download the executable (called HolmesFTP.exe) here.
I run it from a batchfile using a line typically looking like the one below:
"c:\Program Files\HolmesSoft\Holmesftp">ftpgif.log -d -s ftp.holmessoft.co.uk username password "C:\FileDownload\gifs" "htdocs/HomePage/Weather" "*.gif"
If you run the program with no parameters, you will get the following information:
usage is -u/-d -o/-s server username password "localdir" "remotedir" "filename"
-u for upload to server, -d for download from server
-o to overwrite existing files, -s to skip copying existing files
localdir\file must be in inverted commas
filename is used for local or remote file, depending on upload or download
use * for wildcards
In the batch file, the >ftpgif.log redirects output to a log file, so I can check what has gone on later.
In this example, I am downloading all gif files from the remote directory htdocs/HomePage/Weather on the server ftp.holmessoft.co.uk to the local directory C:\FileDownload\gifs, and only downloading files that I don't already have.
This is a Visual C# application that I used to experiment with image handling and a few other bits and pieces. It's riddled with bugs. To use it, run the .exe and then open a jpg file you want as part of your set of web pages. (You can open multiple files to start, but I've not added a re-ordering mechanism, so my advice is to open the first picture of your set. You can also open gif files, but it'll crash the app.) Then set the Title to the title of your picture set, and set the output directory where you want to save your html and converted jpgs. For each picture you can choose a maximum height and width, a target image size or a jpg compression value. Click Convert to convert the picture to your target values. This will be previewed in the right hand pane, which resizes with the main panel. You should also title each picture - this will appear on the thumbnails page, and you can give each a description, which will appear on the page with the full size image. You can also choose whether to output the Exif data (data the camera uses to describe the exposure, etc.). When you've done your first photo, click Add New and repeat. To save your storyboard, click File; Save Photospace. The details are saved as an XML file.
To output the jpgs and the html, click File; Write HTML. You can edit the titles etc., and re-output the results. Use the arrows at the bottom of the eindow to move back and forth through the photos.
Controlling the size of your Outlook message store can be a pain - you need to delete attachments from messages you've sent, and file attachments from messages you've received. However, doing that always used to cause me 2 problems - 1) it was a hassle and 2) I lost the little "paper clip" icon in Outlook which showed that those mails had attachments - and I tend to remember which mail I'm looking for with reference to that. So I've written a program that can either delete an attachment and replace it with a much smaller icon which tells you the name of the file you sent before it was deleted, or can save the file to your hard disk and replace it with a shortcut. In both of these cases the paper clip stays, and in the case of the shortcut, you can double click the shortcut and load the file up, just as before. Except the file only occupies space on your disk, not in your mail store. As a final productivity tool, the Outlook Attachment Exporter will even expand .zip files into their constituent files, at the click of a button.
When it's installed, it adds a button to the Outlook main screen so all you need to do is select a message and click the button. It will also navigate up and down your messages, so you can export a number in one go. It remembers where each type of attachment (.doc, .xls, etc.) was last stored and offers that as first choice to store the current attachment. It can be made to be friendly with the current Outlook 2002 security model, thus obviating the need to keep clicking the Outlook dialog box. (If this is still a hassle, an ex-colleague at BT has suggested installing the software from MAPIlab. I've not personally done this so can't recommend it, but it may be of use to you.
This is what the thing looks like:

To install it, download the setup program (2.6 Meg) and run it from wherever you have saved it. If you do find this useful, please email me and let me know - if I enhance it I can then tell you of any improvements.
As stated above, this program allows people who share a dial up Internet connection to monitor and terminate 'phone calls from the remote computer. Once it's been installed on your server (the one with the dial up connection), it puts an entry in your Start Up group so that the program is always running. It appears as a 'phone icon in your system tray. If you double click the icon, or right click it and click "Open Monitor" a dialog box something like the one below appears. This provides 2 alternative ways of accessing the program from a remote browser (Server IP: and Server Name:) plus details of any dial up session currently in progress. If one is in progress, it can be stopped by clicking the "Hang Up" button.

If you type the server details into the address bar of a browser on the network (either the name or the IP address should work - don't forget the ":88" bit - it's important) then, if there is currently an active connection, a page like the one here should appear, or if there's no active connection, one like this should be displayed. Clicking the "Terminate the Call" button in the online page will close the dial-up connection. That's all there is to it.
To run it, download the setup program and run it from wherever you've saved it.