Numerous pieces of software I am working on, in different states of completion, activity, or abandonment. Listed in no particular order. If you are interested in any particular piece of software you find here, feel free to contact me.
A high-performance media streaming server; emphasis has been put on performance. Currently has no trouble serving something like 400 clients @1.5MBit/s each on a dual PPC machine.
Known to work on: Linux (Kernel 2.4.x and up); FreeBSD (4.8 and 5.1); Mac OS X (10.3; older versions unsupported)
Download sources flss.tar.gz or visit the project page
Sophisticated reference counting scheme, highly efficient and modular event dispatcher and lots of other tools for writing multi-threaded efficient server applications. About as useful as ACE, less complicated, not as complete, and a lot more efficient. Documentation and download available here.
Known to work on: Linux (Kernel 2.4.x and up); FreeBSD (4.8 and 5.1); Mac OS X (10.3; older versions unsupported)
revoke - a Linux implementation
The revoke system call as supported by *BSD systems allows
to revoke access to a specific file from other processes; all currently
opened instances of the file are closed, almost as if the processes
themselves had called the close system call on the
file descriptors.
This system call is useful when access to certain files (e.g. device special files using pam_devperm) has been granted to users temporarily, but at some point in time the system has to make sure that none of the previous users is capable of accessing this file anymore; it may also be useful for forced umount. It is both friendlier than using fuser to kill all relevant processes, and additionally avoids all the races.
State: got tracking of fds working on UML/i386, but got stuck at revoking mmap'ed regions which turns out to be anything else but straight forward.
This work was part of my diploma thesis; it provides timing and synchronization support inside the X server. It goes far beyond what the existing XSync extension can do, for the full description what it can do and why I consider it necessary you have to read the thesis at the moment.
It is implemented as a loadable module for the XFree86 Server.
Known to work on: Linux/i386 with XFree86 4.1 and following; probably any i386 system running XFree86.
Download sources: xtime.tar.gz
Some parts of the XFree/X.Org codebase just kept annoying me enough so that I started to see if I can write my own X Server. It appears I can. So I do.
Very much work in progress and not worth of a release, so what you find here might even compile if you are lucky: xng.tar.gz
As of yet I am unsure where this project will finally be headed; I am trying to fix some of the IMHO most annoying misfeatures of X11, but I don't know if all of this is fixable within the scope of X11. For example the server implements RBAC security, all objects (windows, pixmaps, graphics contexts) have access controls lists, clients are associated to security roles etc so that it should in principle be possible to run "untrusted" applications against the same server, on the same system and still be able to securely communicate with trusted applications; however this breaks quite a lot of the assumptions behind X11, basically none of the existing window managers can work under these circumstances.
Known to work on: Well, it does not work anywhere at the moment. However it compiles on Linux.
Provides a name service switch module that can act as a cache for passwd and group name services; it can e.g. store the data retrieved from an LDAP server and retrieve this data when the LDAP server is not available. See also pam_offlinecache module below.
It it intended to be useful for large organizations with centralized authentication and authorization management. It allows notebooks that are part of the organizational structure to be used while disconnected from the network, without the need to manually create user and group accounts on each machine.
Known to work on: Linux, glibc 2.2 required. Porting to FreeBSD ought to be easy enough, so bug me in case you are interested.
Provides a pam service module that can the passwords that users employ to successfully login to a machine; the passwords are stored in hashed form. This can be used to "cache" passwords submitted to a centralized authentication system (e.g. kerberos), and authenticate these users locally to the machine in case the centralized service is unavailable. See also pam_offlinecache module above.
It it intended to be useful for large organizations with centralized authentication and authorization management. It allows notebooks that are part of the organizational structure to be used while disconnected from the network, without the need to manually distribute passwords to every machine.
Known to work on: Linux, glibc 2.2 required. Porting to FreeBSD ought to be easy enough, so bug me in case you are interested.