Stefan Merten's Free Software

Stefan Merten
2 Oktober 2023



This is my Free Software.


Organizational information

Mini-projects

Some of the projects are really tiny (i.e. a single source file). I call these projects mini-projects.

CVS access

I didn't bother to host them on Savannah. However, if there are requests for CVS access I may re-consider this.

Contact

Likewise until now I see no need for setting up mailing lists for these mini-projects. Contact me by mail.

Installation

Unless noted in the manual page of the project the following hints should result in a working installation.

Scripts

Installation of these mini-projects is straight-forward: Just put them in a directory in your path and make them executable.

Some mini-projects have prerequisites which are listed in the manual page. Make sure to have the prerequisites installed.

Perl modules

Perl modules are of course installed with the usual sequence of

tar xvzf <dist>.tar.gz
cd <dist>
perl Makefile.PL
make
make test
make install

Python

Python based projects are of course installed with the usual sequence of

tar xvzf <dist>.tar.gz
cd <dist>
python setup.py install

Unit tests

Some projects may contain a file tests.tgz containing unit tests. Often they are tests for my filterunit unit test tool.

Emacs

Refer to the file itself how to embed the code into your Emacs environment.

MoinMoin

Some mini projects are plugins for MoinMoin and you must put them to the right directory in the plugin structure of your Wiki. For instance see installation instructions for parsers.

Other mini projects are regular scripts.

Please note that the current hoster of this site does not like .py files. Therefore they are extended by a .txt. Please strip the .txt before installation.

Contact, contributions

If you want to contribute something or want to make any other comment, just send me a mail to

free-software AT merten-home DOT de

I'm looking forward to any kind of contribution :-) .

License

All of my Free Software projects are licensed under the terms of the GNU General Public License.


Projects

E-mail tools

I'm working very much with e-mail. So I created some tools working with e-mail.

Some of them work on filed e-mail messages. They expect each message being kept in an own file and the folder structure being reflected by a directory structure. This is exactly the way MH is filing e-mail, so at the moment this might be considered a precondition for using these tools. BTW: Did you know that MH is actually the best mail front end available ;-) .

valiases

valiases mimics the sendmail behaviour of evaluating aliases for mail sent to one or more virtual mail addresses. It checks whether any of the (visibly) addressed mail accounts of a mail matches one of the configured aliases and resends mail to the alias replacement. If you don't have access to /etc/aliases but you need it, this program is for you.

This is a mini-project.

Visit the project page.

mail2chart

mail2chart generates various statistical charts from a bunch of mail messages. The code for generating a certain type of chart is plugged into the program. See the program documentation for which types of charts are supported at the moment.

This program depends heavily on MH for accessing mail messages and gnuplot for generating the charts.

This is a mini-project.

Visit the project page.

mail2thread

mail2thread finds threads in a bunch of mail messages and outputs them in various ways. It is rather sophisticated and can be controlled by various options.

Though only some uses of this program really depend on MH for accessing mail messages, it is most useful when using MH.

This is a mini-project.

Visit the project page.

mail2clf

mail2clf generates a CLF (Common Logfile Format) file from a bunch of mails. It interprets a mail as a hit on a web site. This way a CLF visualization tools (e.g. Webalizer) can be used to visualize some statistical data for a number of mails.

This is a mini-project.

Visit the project page.

Development tools -- CVS

Nearly every file I'm writing is part of a CVS module (i.e. is part of a tree version controlled by cvs). So I wrote some tools for cvs.

lcvs

lcvs maintains a global log file for a CVS module and does automated tagging on each commit. Also, informative email may be sent for changes to the repository. Some generally usefuls functions for CVS are also available.

This is a mini-project.

Visit the project page.

Development tools -- General automation

Nearly every source file I'm writing is handled by gmake in one or another way to produce some result. This allows for a high degree of automation. I'm developing tools to simplify the use of gmake.

mamo

mamo provides modules for gmake defining features for automating arbitrary tasks. mamo is used by naming the objects you have and the objects you want to create. mamo cares about the rest.

Visit the project page.

make3_80_sh

Starting with V3.81 GNU make treats backslash newlines in commands in a POSIX compatible way. This breaks older Makefiles. make3_80-sh is a compatibility layer to use old Makefiles with GNU make V3.81. It also aids migration of such Makefiles.

This is a mini-project.

Visit the project page.

Development tools -- Unit testing

If possible I use unit tests to improve and keep the quality of software.

filterunit

filterunit allows unit tests to be devised for command line programs that use files as input and output. Classical Unix filters are a typical example. filterunit runs the program under test with the specified input files and compares the actual results with the expected results.

This is a mini-project.

Visit the project page.

XML tools

Some work around XML.

oil2xsd

oil2xsd is a suite of XSLT stylesheets converting an OIL ontology into a XML schema.

Visit the project page.

Perl modules and scripts

Since I love Perl I write a lot in Perl. Here are the modules which resulted from that and which are not part of another category.

Carp_Ensure

The Perl module Carp::Ensure adds type checking to Perl. You may check every value for being of an arbitrary complex type you describe by a simple grammar.

This is a mini-project.

Visit the project page.

optrandr

optrandr checks the current X outputs and configures an optimal setting. This can be used to automatically set X outputs to a preferred mode. A typical use case is a laptop using a docking station or not.

This is a mini-project.

Visit the project page.

reStructuredText

To me the ASCII oriented reStructuredText text format seems to be the successor of all the previous ASCII oriented formats.

See also moin2rst below.

rst_el

An Emacs mode for reStructuredText documents. Provides font-locking and a useful editing support.

Maintained by Stefan Merten.

rst.el is also part of the main Docutils distribution and of Emacs itself.

This is a mini-project.

Visit the project page.

xml2rst

A script to convert Docutils internal XML representation (back) to reStructuredText.

This is a mini-project.

Visit the project page.

rst2outline

A reStructuredText slide writer producing an outline format importable by MS Powerpoint.

This is a mini-project.

Visit the project page.

rst2graph

A reStructuredText writer translating the links in a text to a graph which can then be rendered using Graphviz.

This is a mini-project.

Visit the project page.

rstdiff

A reStructuredText writer comparing two input files producing a marked up difference output.

This is a mini-project.

Visit the project page.

odf2docutils

A script to convert Open Document Format (ODF) to docutils internal XML representation.

This is a mini-project.

Visit the project page.

MoinMoin

Stuff making MoinMoin even more useful than it is.

media4moin

A parser plugin for MoinMoin to parse MediaWiki syntax.

This is a mini-project.

Visit the project page.

moinupdate

A script to update a remote MoinMoin Wiki from files in the file system or another MoinMoin using MoinMoin's XML-RPC interface.

This is a mini-project.

Visit the project page.

remoteMoin

A couple of XML-RPC plugins for MoinMoin adding some useful features making a automated usage of MoinMoin easier.

This is a mini-project.

Visit the project page.

moin2rst

A formatter plugin for MoinMoin to format a Wiki page in reStructuredText syntax.

This is a mini-project.

Visit the project page.

Psyprax

Programs helping using Psyprax in a Linux environment.

psyprax

psypraxDownloader.sh allows downloading Psyprax updates for the 32bit version under Linux.

This is a mini-project.

Visit the project page.

Virtualization

Some tools to improve virtualization with QEMU or tools for using the cloud.

qemuaug

qemuaug provides an augmented environment for running QEMU. It provides locking for the image file, transparent use of a fast disk device like a RAM disk, and more.

This is a mini-project.

Visit the project page.

remoteEncFs

remoteEncFs supports some use cases for using a remote file system encrypted with encfs locally. Such file systems can be created with Boxcryptor Classic. In particular remoteEncFs supports local synchronization and mounting local or remote copy.

This is a mini-project.

Visit the project page.

unoconvDocker

unoconvDocker is a script utilizing a dockerized LibreOffice / unoconv installation to provide format conversion. This is particularly useful for converting old StarOffice files to OpenDocument format.

This is a mini-project.

Visit the project page.