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 and obscure.
Ένα καλύτερο ελληνικό πληκτρολόγιο για WindowsΔύστυχοι χρήστες Windows! Δεν φτάνει που υποφέρετε από κακοπροαίρετα προγράμματα κάθε είδους, δεν φτάνει που έχετε το πιο εκνευριστικό λειτουργικό σύστημα στην αγορά, έχετε και χάλια υποστήριξη για γλώσσες με «περίεργους» χαρακτήρες όπως τα ελληνικά. Αφού εμπεδώσαμε ωραία και καλά ότι χρήσιμα σημεία στίξης (όπως η άνω τελεία) είναι πολύ δύσκολα αν δακτυλογραφηθούν στα Windows, μόνο μία προφανής λύση υπάρχει: η αθάνατη ελληνική πατέντα. Και να η δική μου!
mcasm — A Microcode AssemblerThis 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.
ROMtools — Create ROM tables with PythonIf 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 nightmare.
Control Special Features of Logitech Mice with lmctlIn 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. And no Linux support for the buttons or resolution. Research uncovered the sage advice ‘you can't do anything about the extra buttons, live with it’. Hold my beer.
DungeonSpawnIn 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 C Library for the A* AlgorithmA 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: Rough Set-based Attribute ReductionRSAR 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.
ANSI2Img: Convert ANSI to BitmapsThis 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).
Acrobase BBS ClientΗ Acrobase οργανώνει περιστασιακές εικονικές συναντήσεις στην BBS (όχι στο web), για ιστορικούς και συναισθηματικούς λόγους, για να θυμούνται οι παλιοί και να μαθαίνουν οι καινούριοι. Το πρόβλημα με τη διαφορά μεταξύ παλιών και καινούριων είναι ότι οι πρώτοι δεν έχουν πρόχειρο modem, και οι καινούριοι δεν είναι 100% σίγουροι τι είναι modem. Αυτό το πρόγραμμα διευκολύνει τη σύνδεση στην Acrobase BBS και για τις δύο ομάδες.
DungeonMakerDungeonMaker 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 systems.
evrouter2The 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. This is a project in its earliest stages. (and currently abandoned for lack of time)
Extension:EmbargoThis 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.
RGA: The Roguelike Graphics AdapterThis is a branch of the X11 terminal emulator
unicode-rxvt(itself a branch of the
rxvtterminal) 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 emulator.