List of my big software projects

Public projects:
Date Name Description Technologies License
2000 – 2007 Sherlock Holmes Logo of Sherlock Holmes
Universal Google-like search engine – a system for gathering and indexing of textual data (text files, web pages, ...), both locally and over the network. You can test it on Morfeo, which indexes about 100 millions of documents from Czech Internet.
C, Perl, algorithms, data structures Full version commercial, restricted version GPL
1994 – 1996 Dragon History Logo of Dragon History
An adventure game for MS-DOS about a little dragon looking for his lost father. It contains about 40 hand-drawn locations and all dialogues are fully spoken. It is the first Czech game distributed on a CD and it used to be the bestseller (about 7000 copies sold) on the Czech market. There exists a czech, english, and polish version.
Pascal, assembler, low-level graphics, editors, compilers, interpretters Used to be commercial, now it is GPL
2006, 2009 C++, ScummVM, MIDI GPL
1999 – 2000 Partition Surprise Partition table manager – a program for moving, resizing, and converting of filesystems. It resembles Partition Magic, but it can in-place convert FAT into ext2 and vice versa provided that there is a little space free in the partition. C, FAT and EXT2 filesystems GPL, abandoned
1995 – 1996 Catapult A real-time action game for MS-DOS, where each player controls a tank on a battlefield. Players can move, gather improvements, and shoot against other tanks. Single-player, multi-player, and network modes are all supported. Pascal, assembler, low-level graphics, AI, IPX/SPX Used to be commercial, now it is abandoned
1998 DIED A modular command-line DIsc EDitor for MS-DOS. It was my term project and it is completely obsolete now. C, C++, filesystems, DjGpp GPL, abandoned
1995 Geometry An interpretter of geometrical contructions. One describes the figure and the program draws it. It is possible to drag interactively the points by mouse and see how the figure changes. Unfortunately, it completely runs under my own GUI. It won two student competitions. Pascal, compilers, interpretters, GUI, geometry abandoned
Proprietary projects:
1998 – 2002 Authentication server A transparent high-performance authentication server for an Internet portal. Every access to a WWW-page is authenticated by an Apache module against a central server. Several types of authentication (HTTP, cookies, and URL prefixes) are supported. An Apache filter transparently rewrites links within the HTML pages to maintain these prefixes. C, Apache modules and filters, servers, authentication Proprietary
Advertisement system 1 and 2 A simple high-performance advertisement system for an Internet portal. It selects several banners per page and transparently substitures their HTML texts into the WWW-page, records clicks on banners, and draws several statistics. C, PHP, MySQL, Apache modules, servers, statistics, UI
Fully rewritten distributed version of the above. Added a new intelligent on-line scheduler of banner impressions, estimation of the performance of campaign, and much more control over targeting the advertisements. C, PostgreSQL, Apache modules, servers, scheduling, on-line algorithms
Webpark A distributed high-performance WWW-hosting system – tens of thousands of small domains are hosted on a few servers. Files are stored in a modified file-system that records among others the content-type and charset of each document. Data about domains are shared between processes and heavily cached. C, Apache modules, ProFTPd modules, PHP3 modules, MySQL, IPC, Bind, servers
1996 – 1997 Factor analysis A statistical analysis of data from the stock market. The factor analysis method involved computing all eigen-values of matrices of size around 300x300. Data is retrieved from a database and graphs are drawn on the output. C++, Win32, MFC, OLE, ActiveX, ODBC, UI Proprietary
Speculation automaton An online trading program that watches current stock prices and buys/sells stocks according to the instructions of the brokers. C++, Win32, MFC, ODBC, serial terminal, online processing, AI, UI
Advertisement banners A module for MS IIS server that filters HTML pages from a free web-hosting server and inserts advertisement banners there. C++, Win32, ActiveX, COM, MS IIS
Really old projects:
old – 1996 many projects Database systems: salaries, financial log, stocks, properties, and probably much more. Pascal, FoxPro, Object Vision. proprietary, abandoned

Smaller software projects

A short selection:

Witness size of span programs (2008)
A Mathematica worksheet computing the so-called witness size of a given span program over complex numbers. An efficient span program gives a bounded-error quantum algorithm for the function computed by the span program, and our worksheet therefore gives a way of evaluating the quantum query complexity of various Boolean gates. The worksheet allows for limited optimization, as you can specify the span program using some free variables, and it then finds their optimal values giving the most efficient span program.
Adversary bound (2007)
A Matlab program using the SeDuMi optimization package, computing the so-called adversary bound for a given Boolean function. An adversary bound is a lower bound for quantum query complexity of a function. If one manages to get the same adversary bound as the witness size of some span program, then the quantum complexity of the function has been fully characterized. We solve approximately the semidefinite formulation of the problem, and compute both the nonnegative and negative version of the bound.
Algebraic numbers (2005)
This is a Mathematica worksheet with functions implementing arithmetical operations on algebraic numbers. A real number is algebraic if it is a root of a polynomial with integer coefficients (for example, but not restricted to, any number expressed using radicals). Given characteristic polynomials for algebraic numbers x and y, we compute characteristic polynomials for x+y and x*y. Also, polynomials with algebraic coefficients can be normalized into integer polynomials.

This is just a small worksheet for internal use and you need to hack it before using. It might be useful for other people though, because Mathematica's standard modules for these operations are lame.

Lizard (2004)
LiZaRd is an LGPL implementation of the GPL-licensed LZO compression library. LZO is an LZ77-based fast compression scheme with an extremely fast decompressor. It is distributed as a module of libucw, which is a part of our search engine Sherlock Holmes.
Tunnels (2004)
Tunnels is a very elegant implementation of a filtering mechanism. I wrote is as an exercise after I learned about co-routines present in newer version of the glibc library. I used to program content filters for Apache 1.3.X enhanced with mod_czech, and it was extremely cumbersome. With this library, one can implement a filter with hardly any effort, and easily connect several filters into a cascade.
PostScript fonts in TeX (2004)
I wrote a shell script converting directories with PostScript fonts into a form immediately usable in LaTeX documents. It creates and installs the metrics of the fonts, virtual fonts, and configuration files for dvips and pdftex.
mod_czech (2001)
mod_czech is a very good charset recoder that supports HTTP content negotiation, manual charset prefixes and suffixes in the path, changing the source charset in the middle of a file by a special comment, and exceptions for older browsers. I ported the last supported version to a newer version of Apache: from 1.3.12 to 1.3.17.
Fractal image compression (1999–2001)
A term project for the computer graphics course. It is a GTK application that demonstrates the principles of fractal image compression. One can load an image, set up the compression parameters, and watch how the compression algorithm finds optimal transformation. On the decompression side, one can plug in any image as a starting image, and watch the decompression step-by-step.

I later used this project once more as a term project for parallel programming. I added a support for libpvm.

sEmTeX (1999)
I took Martin Mareš's one-floppy TeX distribution EmTeX and improved it. I added a few more macros packages, scripts, upgraded all modules, and coined it sEmTeX (small EmTeX). This distribution was not targeted for an everyday use, but for emergency cases when you need to typeset something in a perfect quality on an alien computer.

The distribution occupies either one or two 3.5" floppy-disks, each containing one self-extractiving program.

Abalone (1998)
Abalone is a modern desk game for 2 to 6 players. I implemented a game client in ncurses and IPC as a term project.
mf2tex (1997)
mf2tex is a package of METAFONT and TeX macros for easy typesetting of TeX labels in METAFONT pictures. You can insert TeX labels into your METAFONT figures and align them to any object in the figure. mf2tex then extracts all labels and creates a TeX include-file that typesets everything together. This package was obsoleted by MetaPost, which is much more suitable for figures than METAFONT.

Valid HTML 4.01!