These projects are quite rare for me in that they've reached some
semblance of completion. I know, I know, ‘release early; release
often’. But most of the time my projects don't even reach that
pre-alpha stage before I get distracted by The Shiny. As you might
expect then, these are all smallish projects.
Δύστυχοι χρήστες Windows! Δε φτάνει που υποφέρετε από κακοπροαίρετα
προγράμματα κάθε είδους, δε φτάνει που έχετε το πιο εκνευριστικό
λειτουργικό σύστημα στην αγορά, έχετε και χάλια υποστήριξη για γλώσσες
με «περίεργους» χαρακτήρες όπως τα ελληνικά. Αφού εμπεδώσαμε ωραία και
καλά ότι χρήσιμα σημεία στίξης (όπως η άνω τελεία) είναι πολύ δύσκολα
αν δακτυλογραφηθούν στα Windows, μόνο μία προφανής λύση υπάρχει: η
αθάνατη ελληνική πατέντα. Και να η δική μου!
This is a simple microcode assembler (or microassembler). It can be
used to generate wide, horizontal microcode ROMs for relatively simple
CPU architectures. Using a description of the microcode, it generates
one or more ROM, EPROM, EEPROM, Flash et cetera images suitable for
inclusing in a software emulator, a hardware device, or for use in a
hardware description language such as Verilog or VHDL.
If you’re building complex hardware devices like home-designed CPUs, this may
come in handy! Prototyping home-designed CPUs isn’t an easy task at all. One
might say designing one is difficult, but let’s assume you’ve already done
that. State machines and function generation can be a nightmare to debug. Once
you’ve found the bugs, actually fixing them may prove to be even more of a
The second version of evRouter is a modernised version, essentially rewritten
from scratch. It aims to be equivalent to evrouter, but breaks compatibility in
favour of a new approach of doing things. The project is in the earliest stages
of development, but a proof of concept version exists and works fairly well
(modulo the obligatory bugs, warts, etc). I'm writing this short page to
describe what my aims are, and to see if anyone is interested in providing
feedback with feature requests or wishes. Here come the obligatory bullet
This is a branch of the X11 terminal emulator unicode-rxvt (itself
a branch of the rxvt terminal) with several modifications to make
it more useful for Roguelike development, as well as BBSing. It has 512
user-defined colours, uses Unicode fonts, can report all keyboard and mouse
events (not just characters pressed), and is still a full-fledged terminal
In 2003, I was presented with a lovely Logitech optical mouse (an MX500). It
had a wheel (not an ubiquitous feature then), no fewer than eight buttons, and
an excellent 800 cpi resolution. Unfortunately, Linux would see it as a 400 cpi
device, and two of the buttons would echo the wheel motion. A bit of quick
research on the web uncovered the sage advice ‘you can't do anything about the
extra buttons, live with it’. It also uncovered a list of vendor-specific USB
control commands for Logitech mice (proving yet again that the majority of
Linux users are no longer producers but ― at best ― consumers).
For a few years, back in simpler times, I used Jon Atkins’ imwheel to get X11
to understand the many buttons on my old Primax mouse. Traditionally, X11 only
allowed for up to six buttons, and mine had eight (two were used for wheel
events, as always). Imwheel allowed me to translate the buttons X11 didn’t know
about to key events (but not before I hacked it a bit).
This is a MediaWiki extension to show certain content within a
specified date/time range, before a given date/time, or after a given
date/time. It's useful in hiding content for planned work,
announcements, et cetera. People who use their MediaWikis as simple
Content Management Systems or personal sites may find this useful.
I have had a homebrew moon phase calculator for various LiveJournal
(and similar) sites for a while. It's come to my attention that to
this day, no-one does this. Strange, considering so many cultures base
so much around the moon and a lunar calendar (unlike the solar
Gregorian Calendar in prevailing use all over the world). So, without
further ado, behold the moon phase calculator in S2!
This project aims to bring the power of DungeonSpawn to Python. (or maybe vice
versa!) It originally started as a set of bindings for DungeonMaker, but my own
needs steered it further down the road and prompted various extensions to the
Kareltima is a small series of smaller roguelike games of no small inanity. Set
in a supposedly mystical world, where Gandalf the Grey is in the fake ID
business, pub landlords know their calculus, malacks roam the towns (beware!),
and bored priests are, well, very bored. There are also inexplicably singing
rings and mutant sjutvynheims, whatever those might be.
In the process of making Python Bindings for DungeonMaker, I came across
various shortcomings of the original code. There were behaviours I
wanted to limit or inhibit, and various features were missing. I went
about implementing some of these, and code started accumulating. I
eventually made the decision to fork the original source tree, and
thus was born DungeonSpawn: a version of DungeonMaker with extensions.
A lot of people out there are looking for implementations of the A*
(a-star) algorithm for game writing, myself included. Eventually, I
gave up trying to find one that fit the bill, and wrote one myself. My
needs were complex (and I didn't want a C++ version), so I wrote this
as generic as possible, and I'm releasing it for public
consumption. Bon appetit!
RSAR treats datasets by removing attributes that are unnecessary for a
classification task. It performs greedy feature selection using
various versions of the QuickReduct
algorithm. It is useful in reducing redundancies in nominally-valued
(i.e. discrete) datasets for exploration or as a preprocessing step to
training machine learning algorithms on the data.
This small Python program converts ANSI art to raster images. It
simulates a PC's text mode using different VGA soft fonts (or EGA, or
the CGA ROM font) and renders colourful BBS graphics, affectionately
known as ANSI (after the ANSI.SYS MS-DOS driver that rendered them
back in the day).
DungeonMaker makes complex random dungeons according to the designer's
specifications. They can be as random or as deterministic as you
want. The complex, organic look of the generated dungeons comes from
the use of Artificial Life techniques: tunnels and walls are built by
a-life creatures moving around the map. This is a modernised build of
the library, packaged for modern distributions of modern operating
Η Acrobase οργανώνει περιστασιακές εικονικές συναντήσεις στην BBS (όχι
στο web), για ιστορικούς και συναισθηματικούς λόγους, για να θυμούνται
οι παλιοί και να μαθαίνουν οι καινούριοι. Το πρόβλημα με τη διαφορά
μεταξύ παλιών και καινούριων είναι ότι οι πρώτοι δεν έχουν πρόχειρο
modem, και οι καινούριοι δεν είναι 100% σίγουροι τι είναι
modem. Αυτό το πρόγραμμα διευκολύνει τη σύνδεση στην Acrobase BBS και
για τις δύο ομάδες.
This is a convenient little hack based on GNU iconv. Unlike that utility, which
converts files, TTYConv converts interactive sessions,
performing lenient and error-recovering two-way conversion and taking
care of other issues with interactive sessions.
Once, in the days when PDAs lasted a whole month on one battery charge, I had a
Palm IIIx. I forget how many PDAs and smartphones I’ve had since, but the
M68k-based, greyscale (mostly black & white), 160×160 little plastic box was
probably the best PDA I’ve ever had, and the only PDA I’ve ever written