Some software written by me

I have listed here some selected picks from my history as a programmer. The list is in reverse chronological order, i.e. the latest software is first. I have added a name of the contact person, where applicable. You can ask me for further details how to contact the person.

Samba Search

screenshot This web-based search engine is tailored for LAN usage with Samba workgroup server. It keeps all work files typically seen in small office indexed. It digs all textual information from various office formats and maintains one large search index for all files. It offers fast word search from all working files giving the context of the matches and the direct links to the shared files over Samba.

Languages: Perl (maintenance and indexing), MySQL (index), PHP (web pages)
Contact: Petteri Nurmesjärvi, Akustiko Ky

Moblog

screenshot The Moblog (from mobile blog ) is a system, which listens to incoming mails at the user's dedicated mailhost. When a multipart message is detected, all attachments are extracted and written into the database with the message body, subject and other information. This information is viewable in real time on the web page, which fetches information directly from the database. Using the subject and the body of the message as a title and a description for the attached image, this can be used as a live update system for the blog by using mobile devices able to transmit images using email. I wrote the core of the system API and a sample proof-of-concept web page.

Languages: Perl (mail filter), MySQL (database), PHP (web pages)
Libraries: MIME::Parser
Contact: Saku Kärkkäinen

GM Online v1

screenshot screenshot This software has grown accidentally from the collection of simple helper scripts to the full featured online role playing system for D&D D20. The core of the playing is an Irssi IRC-client module, which handles die rolls, combat management and maps. The Game Master loads a prepared map stored as simple ASCII and uses the provided interface for moving players and monsters around the board. Then he can hit the publish button and the module generates separate HTML-maps for every player and the GM. The map generator is able to handle vision conditions like walls, various light sources, infravision and invisibility.

Languages: Perl
Libraries: Irssi, Image::Magick

IND-Nimbus

screenshot Nimbus is an interactive multi-objective optimization system developed in the university of Jyväskylä. I wrote an stand alone application called IND-Nimbus on the top of the existing collection of Fortran 77 algorithms. The graphical interface allows an easy access to the optimization process. For instance, it makes possible to graphically adjust optimization targets and parameters between iterations. It also helps in the selection of the best results by offering different visualizations and tools for filtering solutions by the user defined criteria. The object oriented design as well as the implementation was made by myself, excluding the original Fortran code and the low level graphics.

Languages: Python (the application), C++ (graphics driver), Fortran 77 (optimization), Perl (miscellaneous project tools)
Libraries: wxPython, Agg
Publications: Vesa Ojalehto, Kaisa Miettinen, Marko M. Mäkelä, Issues of Implementing IND-NIMBUS Software for Interactive Multiobjective Optimization, Reports of the Department of Mathematical Information Technology, Series B. Scientific Computing, B8/2005, University of Jyväskylä, 2005.
Contact: Vesa Ojalehto, University of Jyväskylä

Fotokioski

screenshot This is a software for an embedded Linux-based photo automate. The device has different input media slots for digital image input, like CD-ROM and memory sticks. After the user has inserted a media and pressed the start-button on the touch screen, the system reads all images found from the media. The images are then displayed for the selection of printable images. When the favorite images are chosen and the mail address with payment details is entered using the touch screen interface, the system sends the ordered photos to the central handling office, which prepares the photos and mails them to the customer.

Languages: PHP (user interface), Perl (media handling, file transfers)
Contact: Kimmo Virtanen, Kuvaverkko Oy

Gccg

screenshot screenshot Generic Collectible Card Game is a multiplayer multi-platform implementation of a card game engine. The card game engine is designed to be of general purpose core for several modules each defining the game specific behavior. Players download a client for their platform and all modules of interest. After launching the client for one of the games, it connects to the central server of the game chosen. When connected, all aspects of the collecting, trading and playing are available to the player.

Languages: C++ (server core, client core, Gccg-script engine), Gccg-script (module implementations), Perl (installer and various project maintenance tools), Bash (server maintenance scripts)
Libraries: SDL, SDL_net, SDL_image, SDL_ttf
Homepage: http://gccg.sourceforge.net

Oja Median for SPlus

screenshot This program calculates a statistical measure called Oja Median. The algorithm itself was the first one able to solve the problem in more than 2-dimensional case. The package contains also an approximate algorithm, which can solve the problem much faster than the exact algorithm with the given accuracy. The application itself is a SPlus module written in C++.

Languages: SPlus (SPlus interface), C++ (algorithm)
Publications: Tommi Ronkainen, Hannu Oja, Pekka Orponen, Computation of the multivariate Oja median., Developments in Robust Statistics: Proceedings of the International Conference on Robust Statistics (ICORS 2001), pages 344-359, Berlin Heidelberg, 2003. Springer-Verlag.
Homepage: http://www.maths.jyu.fi/~tojuro/oja/
Contact: Hannu Oja, University of Jyväskylä

Web Atlantis

screenshot This is an interface written for good old Play by eMail game Atlantis. The implementation is based on a WWW user interface and a parser, which works as a gateway between old turn reports and modern web. Traditional turn handler runs at the specified intervals. After that the parser reads all turn reports and converts them to the data structures used by the web-interface. The interface reads the data and displays all reports, maps and events visually. The faction and unit control pages of the web interface are able to write traditional command files, which are read by the turn handler normally. The system has also an embedded messaging system. I have written all the code, except the original Atlantis-engine.

Languages: Perl (parser), PHP (web-interface), C++ (data handler to speed up parsing, original Atlantis)
Homepage: http://webatlantis.sourceforge.net

Older Stuff

All the software above is written in Linux-environment (although almost all of them are platform independent). Here is my earlier history as a programmer in brief. Unfortunately most of this stuff has probably disappeared from earth or hidden in some floppy/tape pile and are not available for a screenshot.

PC/Windows

PC/DOS

Atari ST

MSX

Commodore 16

CP/M