WTF???

Yep. Disco-Nova (as the persons that have been going through the other parts of the site - Disco-Nova currently consists of only one person (even though I've gotten used to talking of myself in plural)) is finally offering some code to the open source community. If it is of some use to someone, we're delighted. If not, we honestly are not interested. If the code provided has bugs or some error in design, we're definetly interested.

Actually, the author of all Disco-Nova's applications, Markku Uttula, has previously contributed to some open source projects, but has always done it (more or less) anonymously or as a part of a team. However, today it seems I've had enough to drink, and I feel confident enough to post what I've done to the public. Previously you've only had my code in compiled executable form, and have had no idea of how it was coded (well - to be honest, some have had).

I do most of my coding with Delphi and/or Kylix. Recently I've done my codeing with Borland Delphi 7 (I formerly used Delphi 4 for many years, but finally in 2003 managed to obtain a license for a later version - and I honestly thank everyone involved for this).

Anyway - sorry for the lack of content. Maybe (actually, it's very propable) I will some day get drunk again and write some more - or perhaps I have an interesting problem I wish to solve and share my findings with others. You never know...

Current Open Source projects

Handling standard multi-part mail with Synapse

Honestly - this is my first attempt to write anything open source, so it is very limited. And it heavily relies on what other people have provided. The target for this program (that I had the urge to make when I was "under heavy influence of alcoholic substances") is to take a file that is in accordance to RFC-2045 (standard Multi-Part -message like most of the eMail-messages today are) and extract any textual content it might have and store said parts into files.

The application is available as full sourcecode and compiled executable. Just pick whichever suits you better.

Accessing POP3 mailbox with PHP

I created these classes while I was pondering a problem I encountered in comp.lang.php (that's a Usenet-group, not a webforum). They are designed to retrieve messages (or message headers) from user's mailbox using POP3-protocol with PHP.

This is a work in progress, so don't expect it to do everything. There's a great possibility there are some bugs in the code, so use on your own risk.

The classes and a (very simple) example of using them are available as PHP-scripts.

Logging JavaScript errors in webserver's log using Ajax

This was a crazy test to see if it'd be possible to log errors triggered by JavaScript (on the client side) in the logfile of the webserver (on the server side, of course). It appears to be possible.

There is still lot to do before this'll be "usefull", but I believe it'll give developers an idea of the possibilities Ajax offers us.

The script and an example of using it (with PHP) are available.

PHP class for reading ID3v1-tag from MP3-file

I was inspired to write this overly simplistic class by an article by Kae Verens (yep, I know he wasn't talking about ID3 but tagging of blog-messages into different categories, but I still got the idea from there). It's only function is to read an ID3-metadata tag from MP3-file (if one exists). The class and an example of using it are available.

Perhaps some day I'll have the time to update this example to also handle ID3v2.x-tags.

Simulating Microsoft Office Excel's Freeze Panes-functionality on a browser

For some reason, many of the clients I work with are rather fond of Microsoft Office Excel's Freeze Panes-functionality, and wish me to implement "something similar" for reports that are supposed to be viewed on browsers. The problem is that the requested task is not really as straight forward as it sounds.

I have managed to put together a sort of mock imitation of what they want using some JavaScript that actually works rather consistently between different browsers (of recent make and model:). The example isn't pretty to look at (it's just a "technology demo") and the solution is still far from perfect, but it's a start, none the less.