Alexios' Home Page

This page has (finally) moved!

You can find my new, updated web site here. Please update your bookmarks, this page will go away eventually.

Hacks and Projects 

Home ► Programming ►

If by ‘hacks’ you understand unauthorised and/or illegal activities, go away. I mean it. We doan take kindly to no folks like yous here.

This is a table of various hacks and projects of mine. Some have been released, others haven't. I'm usually in the process of (re-)releasing old projects, and digging up old ones to add to this page.
Name Language Platform State
AMANDA 8mm tape label (hack) Postscript Released (download)
AMANDA DLT tape label (hack) Postscript Released (download)
AMANDA-watcher (web application) PHP Pre-alpha
BEFH (Application) C PalmOS Released (download)
DuoTone (GIMP script) Any Released (download)
EvRouter (utility) C Linux 2.4+ (GNU libc) Released (download)
Font Editor (application) C Oric To be re-released
Full Frame (GIMP script) Any Released (download)
Fungus, the Befunge Machine (hack) C, Perl POSIX Not released
Garmintools (small project) C, C++, Perl POSIX Released (download)
Greek Support (fonts & keymaps) Linux Released (download)
Kareltima III (small project) C, MySQL POSIX & SDL, DOS Released (download)
LMCtl (utility) C POSIX (GNU libc) Released (download)
Megistos BBS (large project) C Linux/i386 Released (download)
My .sig hack (sig hack) Befunge Available
Oric C Compiler (group project) C, 6502 Assembly Oric Historical
PDFhelp & friends (typesetting project) LATEX & Makefile To be released
Photo Frame (GIMP script) Any Released (download)
RSAR (research project) C POSIX Released (download)
Resist! (Application) C PalmOS Released (download)
Slime (game) C, 6502 Assembly Oric To be re-released
Solo (Application) C PalmOS Released (download)
Soup! (silly hack) Befunge Available
TTYConv (utility) C POSIX (GNU libc) Released (download)
The Bedroomlan Jukebox (web application) PHP, MySQL Not released
The Bedroomlan Jukebox Plugin (XMMS plugin) C, MySQL POSIX Ready for release
Typhoon DBMS (Debianisation/modernisation) C Linux, OS/2 Released (download)
URLshot (small utility) Perl POSIX & X11 Released (download)
VCSAstat (utility) C POSIX To be released
bedroomlan-colourlogs (utility) Perl Mature, not released
htpc-tvmenu (Freevo executable skin) Python POSIX, Win32 Pre-alpha
nice-article-new (typesetting style) LATEX To be released
nice-book-new (typesetting style) LATEX To be released

There are 33 projects listed, 18 (55%) of which have been released.

Where to Download

Download Software Here.

Most of the software described below (all that's fit to release, anyway) is available here.

All distribution files are digitally signed. You can get my public key from the usual keyservers, or you can download it from my home page.

I'm also maintaining an unofficial Debian repository. This is mainly for my sake (I run several Debian-based machines), but you can use it too. To access the repository, add the following to your /etc/apt/sources.list file:

deb http://bedroomlan.dyndns.org/~alexios/files/debian/ ./
deb-src http://bedroomlan.dyndns.org/~alexios/files/debian/ ./
You will then be able to download binaries and sources using APT.

Research Tools 

For the time being, the only released research tool I have is Rough Set-based Attribute Reduction (RSAR). This is a complete rewrite of the original tool in C, incorporating drastic speed improvements.

PERL Hacks 

PERL is a very useful language, for the right type of task. It's lovely for prototyping and text handling, and the odd more complex job (PERL freaks and unilinguals: get a life, it's not useful for everything; no programming language is).

I have tens of little PERL scripts here and there, but most are what PERL scripts usually are: tiny tools to do one task right. Not really fit for release. The ones that are fit for release are here.

URLshot reads in a list of URLs, and generates consistent-looking thumbnail screenshots of each of them. It's used to generate thumbnails for the links pages on The Machine Room.

Megistos 

[Megistos logo]If programming can be seen as poetry, then Megistos is a huge epic. Or maybe a soap opera.

It's a multi-user, user-friendly BBS with good internationalisation features and extensibility. This is a good old text-based BBS. None of yer fancy web wossnames. Although it is being adapted to work as a web-based system as well (this was the aim from the start).

Megistos is far too huge to describe in any detail here. Please visit the Megistos homepage for more information and the obligatory screenshots.

Befunge Hacks 

[Befunge logo]Ah, Befunge: Chris Pressey's esoteric language. Befunge is very high up in the list of my favourite languages. Not because it's useful, or fast, or particularly good at something (unless that something is confusing people). But because it's elegant, compact and stylish and looks like noise.

A little programme I use as an example is: 1+:.:25*::,*-!#@_#. It prints out the integers from 1 to 100.

Fungus: a prototype hardware specification of a Funge machine, a microcodable CPU capable of interpreting funges at the (macrocode) machine code level. Why? Well, so far we've had Lisp machines and Fortran machines and these days, right about everything is a C machine. I want a funge machine (don't worry, the doctors tell me I harmless). This is an incomplete paper describing the architecture. It's perverted, it's baroque, it's vector-based, it's 18 bits wide and it's available in PDF (166 kbytes) and compressed Postscript (106 kbytes). If you think this is extreme, remember they've been thinking about Java machines for the past few years. Har har har. I have a Sourceforge project for this, but it's really only ‘project-squatting’. Haven't put anything there.

For something (slightly) less insane, a Befunge programme I'm particularly happy with is in my signature.

Soup! isn't the smallest quine in Befunge. But then, it's not really a quine: it just generates ASCII art copies of itself. Massive obfuscation alert.

Postscript Hacks 

Relatively few people know Postscript is Turing-complete and a proper programming language. And not by ‘mistake’ (can you say Sendmail?), but by conscious design. I like Postscript. Except when it's generated by Microsoft software, or from PDF. Then it's ugly and horrible. Anyway.

An 8mm tape label for the AMANDA network backup system. This is heavily based on the EXB-8500.ps template that came with Amanda, but it looks real purrty and has some other properties too.

The BedroomLAN Jukebox 

[Jukebox screenshot]This is an ongoing project (read: it dragged on for ages and is still not complete in any sense of the word). It started off as a Perl and CGI project. Now it's in PHP which works much better. It comes with an XMMS plugin on a remote computer to play songs and the web interface is functional enough for people to queue music and listen to it.

The jukebox back-end is multi-user and allows people to queue up songs by artist, disc, title or genre. There's a rating system based on user feedback and how many times a song has been played. The format of the files doesn't really matter, as long as XMMS can play them (the back-end is generic enough to co-exist with different players, such as streamers for MP3 or Ogg Vorbis).

The XMMS front-end plugin is generalised: it can dequeue songs off any MySQL database server and play them. It's kind enough to notify the server of the player's current status (playing, paused, volume level, song being played, et cetera), and even accepts remote commands queued by the back-end.

As of early November 2001, I'm in the process of releasing the XMMS plugin (I'm building Debian packages). Watch this space. The rest of the jukebox remains unreleased so far.

DOS Programs 

Okay, fine. I admit it. I spent the first three years of the Nineties programming for various flavours of DOS. It was good discipline and it made me appreciate good operating systems (DOS is neither).

Kareltima III is one of my most famous hacks of that time ― people have actually asked to see it. Written in early 1993, it mimics Roguelike games (more correctly, it is a Roguelike game) and spoofs Richard Garriot's Ultima series.

PalmOS 

Unlike DOS, I like writing software for PalmOS. It's simple, fun, and productive. But then, I like programming on platforms with limits, where you can take full advantage of the hardware. I have three rather simple applications for Palm devices. They are all available with source, distributed under the terms of the GNU General Public License.

BEFH (Bastard Excuse From Hell) is a BOFH excuse calendar. It comes with an extensive collection of excuses from the famous telnet-based excuse server, and a Perl script to add your own excuses to the database. It features the infamous Scary Devil Monastery coat of arms (European etherkiller sable) and the Monks' favourite unit of suckitude (Lovelace, Ll). Get it at PalmGear or download source and binaries here (74 kbytes). In ZIP format.

Solo is a very simple and small puzzle for Palm devices. Remove pieces from the board by jumping over other pieces, until either there's only one piece left, or no moves are possible. This version contains seven different board setups to try. Includes English and Greek version of the application, plus (badly written) source code (GCC). Get it at PalmGear or download source and binaries here (28 kbytes). In ZIP format.

Resist! is a resistor calculator. It has a few useful features, like two-way operation (decodes and encodes resistor colour bands); support for E-series (currently E3, E6, E12 and E24); approximates resistors to match E-series preferred values; and both scientific and engineering notation. Get it at PalmGear or download source and binaries here (26 kbytes). In ZIP format.

GIMP 

I was being taught Scheme just as the GIMP was being first created. When the Scheme-based, Script-Fu engine was added to the popular image editor, I was a kiddy in a candy store. I made a few web sites with Script-Fu scripts until I discovered a more Makefile-friendly way of doing some of those tasks (namely, Imagemagick). But the GIMP is always installed on my machine, and I occasionally write scripts and add-ons for it.

Full Frame simulates full-frame photographic printing, which I've always liked for my printed photos.

Photo Frame is a much simpler version of the above script that uses rectangular frames. I find it useful for publishing photography on the web as it simplifies a simple task that I need to do repetitively when processing my digital photos.

Download these scripts here. To install, simply copy to your personal GIMP scripts directory. Under UNIX, this is usually ~/.gimp*/scripts/. Then reload the GIMP or go to Xtns → Script-Fu → Refresh. The scripts are provided under the terms of the GNU General Public License, version 2.