Little, mostly useless library of few C++ classes. It uses only STL and sockets, so it should be compilable or easily ported quite anywhere. Tested in use on Linux, some kind of BSD (don't remember which one) and Windows, probably XP, but one may be never sure with that system.

There are pre-historical pages from the time I wrote that. Both have signs of learning a new language.


It is small utility which I originally wrote in about 5 hours. It allows noting down appointments and such, editing and reading. Most of the time, it stays somewhere in a corner, showing 4 numbers (total number of items, yellow of near ones, red of already lost and blue of todo).


It can be downloaded here. You need to unpack it, compile (qmake, make) and copy the binary somewhere. It needs Qt4 libraries.


I would recommend you to configure it to be sticky - present on all desktops, without border and start on login. Where you find this setup depends on your window manager.


This utility allows you to draw on your screen in a way the application still work "under" the drawings. No longer need to point by your finger, you can do that with the e-rodent.


Utility for all the people that concentrate on their computer work so badly they forget to go to school, about medical appointment, about a wedding, about their own wedding an so on.


Mail filter for tracking threads and keeping information about them. It can be used to ignore threads in busy mail lists, track responses to your own mails and so on.


Jabber telnet, takes care of connecting, encryption and login. It may be useful for experiments, learning the XMPP protocol or make development of client easier.

It runs on python (experimentaly found out 2.4 or higher is needed) It is tested only on Linux, but may run elsewhere as well.

Can be downloaded as an archive or from git at git://

The help can be invoked by '--help' argument.


What's that for?

This allows spliting an XML document by its direct children. Thus, if it gets this:


This gets out:


The number states, how many lines is the brock, so it does not need to be parsed again, just counted.

The usefulness of this thing does not, as it may seem, equal to zero. It helps split XMPP stanzas, so they can be parsed by DOM parser. If you do not know, what it means, then the first sentence is not true for you.

Downloadable here.


This arose as a school project. Not that it would be of any practical use, but it may look nice. It just shows a crossing, where some cars move around.

It can be downloaded here. It should contain all documentation.

Clue Play

Once, I got enough using amarok (nothing against, but do I really need a database to keep my playlist?). So I wrote this little thing (well, it does not actually play the files, it runs proper commands to let them play it). Noone wrote a manual, so it will be useful to you only if you can read haskell and bash.

Download it here.


Networked screensaver with railway theme. If you have a room with 20 computers, you might want to take time and install it.


Many computers have the same network connection all the time. Some, mostly laptops, change their connections far too often, so it is desirable to have something that can remember the setups.

One of the easiest ways to do so is a program remembering profiles. This one can do that.


Under many occasions, one may want a process not to run more times in one time. Locking by files is usually non-elegant (the files may stay there, if it is locked, one has to wait and poll again, …). Runq should try to solve this.

The central part is runq-server. This one runs the processes and takes care only one of a kind runs at any given time.

The next part is runq-client. It can be started by:

runq-clien kind command command attributes

The kind specifies, which of the commands are incapable of running in parallel. Command and command attributes is what would be run usually. You can pipe text in and out as usual. Piping of binary data is not tested.

The last part is runq-wrapper. It acts the same as runq-client, except it starts the server, if it is not yet running.

Can be downloaded here.


It is a little bash snippet which enhances cd. It remembers history and makes directories active ‒ if they contain TODO, it is printed and if they contain .activecd script, it is run.


Download the snippet, store it somewhere and source it from your .bashrc.


There is no change in the way you use cd. All active directory actions work by themself. However, a hist command is added. If it is run without arguments, it prints current history:

vorner@tarantula ~ $ hist

There are numbers on the left the directories, lowest are the most recent. If hist is run with one of the numbers, it changes to the corresponding directory.

Another command is hback. It goes back one item in the history and removes it from there.


The web interface of the PCI ID database. You may want to use it for some other hierarchical items or just examine the code.


Remake is a make replacement. It has it's own, new, language which describes rules as classes and applies them to each generated file.

Bluetooth headset connector

I have a bluetooth headset and I use Pulse Audio to give them sound (alsa does not support multiplexing). Unfortunately, it talks to them only when they are connected (it isn't able to connect to them). Connecting can be done by BlueMan, but that has many disadvantages. It consumes space in memory and tray. And worse, you have to click trough menu to connect or disconnect, you can't type it or put it into a script.

So, after I lost my patience, I wrote this perl snippet.

Making it work

To make it work, few things are needed. For one, you need to have perl and Net::DBus module installed.

Another one is, you need to write the address of headset into the script (variable $devname). It can be found by issuing hcitool scan and replacing colons with underscores.


When it is called with an off parameter, it disconnects the headset, otherwise it tries to connect it.

It does not solve pairing and pin entry. You can use hcitool for the first connection (don't worry if it loses the connection after pairing again) and simple-agent for pin entry (included with the BlueZ package).