Software
Weirdly: adv. In a strikingly odd or unusual manner
C/C++ PHP Java BASIC Games Tools Web Odds and Ends

Over time, as the Internet became a global presence, some of my work branched into that area. This is a short list of some software I've written that is used on-line.

MailMasher
View Code

This is a tool I wrote to help end users remove large e-mails that are waiting for them on the server. A very common problem with e-mail on a dial-up connection occurs when trying to download a large message. It takes so long to download the message that the mail client gives up, thinking that it's not getting any response from the server. This happens all the time with Microsoft's "Outlook Express" and leads to many calls for an ISP's technical support desk.

Although it was previously in use by an ISP for which I performed the gruesome task of technical support, it would appear that they no longer wanted it after I left. So if you would like to see a working version of it, there's currently a copy running at http://very.weirdly.net/mailmasher.php.

Sportlog

Being both an avid cyclist and a bit of a geek, I like to collect statistics on the trips I take on my bicycle. At first I built a simple database to keep track of my numbers, but it's a bit of a pain to manually enter them using MySQL. To make it simpler I decided to write a series of web forms and scripts that could be used to enter the data. This snowballed into a multi-user data tracking system, and a library that can be easily modified to handle a variety of multi-user systems. This involves too many different files to be viewed directly through this web page, but if you would like to see the scripts, they are available through the link above.

If you want to take a look at the page, it can be viewed at http://sportlog.weirdly.net. please note that it is a side project that is slowly being developed, so it is not yet complete. I did just recently add a signup "wizard", so if you want to log into the page and see how it works, you can now do so after signing up for an account.

Diagrami

I took up origami some time ago, and have designed and folded several different shapes over time. Eventually I decided to index them and present them publicly, so I registered the domain www.diagrami.com and started photographing my work. I created a database from which the images and the corresponding information could be retrieved, and wrote the page using PHP and MySQL.

Since then however, I have had the delightful joy of crossing paths with Celeste Agnes, who is now both my fiance and my main consultant on page design. She presented an entire new look for the page and I rewrote the back-end code. The key difference "under the hood" is the fact that it no longer uses MySQL to store and fetch the data. That method was becoming problematic, primarily because I was maintaining the database on a separate machine from the one that hosted the site. I replaced that with my own custom PHP functions that use AWK to query the data from local text files, each file being the eqivalent of a database table.

Java Mandelbrot Set

This is my Java version of the Mandelbrot set. You can zoom in on it by selecting a rectangular region with your mouse. It won't show you any sort of indication that it is selecting that region, but it is. Just click and drag as if you were drawing a diagonal line across the region you want to zoom in on.

Run this applet

Given the amount of calculation that needs to be done, this will run at a relatively slow pace. This applet used to be accompanied by a warning that a fast machine is required. Fortunately, due to the increasing computational power of today's technology, it's not slow enough to worry about. You may notice that it does slow down as you zoom in. This is because, as you magnify the detailed areas, the necessary amount of processing increases.

Java Worm

This applet demonstrates a neat (albeit simple) algorithm that I came up with once when trying to simulate a chain. If you drag your mouse pointer around within the applet, a series of balls drags along begind it, forming a string. It behaves much like one would expect if they dragged a real string around with their finger.

Run this applet

The algorithm behind it is actually a very simple one. It works by taking a series of points which are connected to form the string. Each point in the string needs to be a particular distance from the preceeding one. When you drag the mouse, the first point moves with it. Because of this, it's neighbour follows along and is in turn followed by it's next neighbour and so on down the chain.

In order for them to follow along, a vector is formed between the leading point and the following one. That vector is then divided by it's length, forming a unit vector. The unit vector is then multiplied by the required distance between those two points, and added to the leading one. This gives us the new location of the following point. That process is then repeated all the way through the series.

Comet

This applet is a variation on the previously mentioned worm algorithm. A series of points trails along behind a leading one. In this case, the leading one moves automatically, instead of following the mouse. Also, instead of drawing a series of line segments, it draws a series of filled circles with the colours changing - making it look more like a comet than a worm.

Run this applet