Marc André Selig – Downloads

Here are some files to download. All of these may be distributed under the GNU General Public License, version 2 or later, unless otherwise noted.

Most of my programming work is closed-source or confidential, unfortunately.


Contents in alphabetical order


autograce

Autograce is a simple AppleScript to change the grace period of your screensaver automatically, depending on the BSSID of your current WLAN. If you're at home, after the screen saver activates, you've got one hour before having to re-enter your password. If you're away, this time is reduced to five seconds.

Here's the corresponding blog post, together with a little bit of information on how to install it.


calmas

calmas is a Web Runtime widget to access your emacs diary (calendar) on your smartphone. You can sync your diary directly to your phone (using obexfs or bluetooth-sendto or the software that came with your phone), or upload it to your web server. This web app retrieves it and displays it both as a home screen widget and as a full screen app. It has support for todo lists, configurable caching, support for both offline operation and online operation with configurable automatic refreshes. The program is currently localized for German and English; further translations can be integrated easily.

Download links: calmas-1.14.wgz, GnuPG signature, documentation, changelog. The WGZ file will install directly to your phone, but it also contains the complete source code.

The program has been tested on Symbian^3 and Symbian Anna. It should run on other Symbian platforms as well (notably S60v5, probably S60v3 without home screen support), and possibly on other phones supporting Web Runtime applications.

calmas is published under version 3 (or later) of the GPL.


mutt-ldif-query

mutt-ldif-query is a very simple script to interface your LDIF address book file to the mutt mail user agent. Just add a configuration line like

set query_command="mutt-ldif-query ~/.addr.ldif '%s'"

to your .muttrc, of course replacing ~/.addr.ldif with the path to your address file.


GPS/GPX helpers: txt2gpx.pl, fixgpx.pl

txt2gpx.pl converts geographical coordinates from a text file to GPX. The input file should either be given as an argument, or should be fed on stdin. While reading the input text file, it looks for geographical coordinates in the format "N12°34.567' E23°45.678'" (with some leeway for whitespaces). It then outputs a GPX file with waypoints corresponding to these coordinates. Waypoint names will consist of an optional prefix (which can be set using the -p parameter) and a number. txt2gpx.pl adds a time tag (for the current time) and groundspeak extensions for (a fictitious) id, cache name (same as waypoint name), and cache type ("Other").

fixgpx.pl standardizes geographical coordinates in a GPX file. It is helpful if you are in the habit of creating GPX files manually, but are too lazy to convert the coordinates. While reading the input GPX file, it looks for geographical coordinates that were given in the format lat="N12°34.567'" lon="W23°45.678'", or lat="N12°34'34''" lon="W23°45'41''", and converts them to valid decimal GPX coordinates (lat="12.576116666667" lon="-23.7613"). Nothing else is changed. fixgpx.pl can either be called with the target file as an argument, or it can be used in a pipe.


scpsync.sh

scpsync.sh will push out changes from a local file hierarchy to a remote host using only ssh and scp. On the remote system, only find, mkdir, and rmdir will be used; there is no need for rsync or an ftp server. This comes in handy for situations where I push files to an embedded system, where there's no space to install lots of software.

There's a bit of documentation at the beginning of the script.


auswert

auswert is a piece of software allowing you to perform micro-evaluation of video tapes of psychological or psychiatric interviews. The program reads video time codes from a hardware reader board and allows the user to record what happens at what time on the tape by simply pressing down a key while watching the tape. Several keys may be pressed at the same time, allowing several modalities to be coded simultaneously.

This is somewhat outdated, having been replaced by auswertk, a version with a nice graphical interface, using PerlTK. However, auswertk has never been packaged for distribution. Send e-mail if you need it.


palm-ldif2csv

palm-ldif2csv converts an LDIF input file to a CSV file (comma separated values) suitable e.g. for transfer to a Palm device by pilot-addresses. In a synchronization script, you might use something like this:

  palm-ldif2csv <$SHARED/addr.ldif >$TEMP/addr.new
  pilot-addresses -a -d LDIF -c LDIF -r $TEMP/addr.new
  rm $TEMP/addr.new

Of course, you can use this simply to convert LDIF to CSV, without any connection whatsoever to Palm synchronization: The variable @fields specifies which LDIF fields appear in the CSV file in which order.


palm-mailfolder

palm-mailfolder reads a mail folder from a Palm over a HotSync connection. This is RCS version 1.4, dated 2000/08/18.


ip-saver.pl

ip-saver.pl is a CGI script to record IP addresses. This is RCS version 1.2, dated 2000/08/25. People identify themselves to the script with a handle and a key; the script automatically records their IP address. They can remove the entry at any time with the help of their key. The IP address of any handle may be directly accessed with ip-saver.pl?handle=handle&getit=1. This is useful for secure IP telephony, e.g. with an international version of nautilus or similar software.

I am no longer updating this; we have gone with dynamic DNS instead, which was a bit of a hassle to set up back then, but much easier to use. Nowadays, secure VoIP solutions have done away with making the user find out where his partner is.


gsm-readsms

gsm-readsms lets you read the SMS memory of a compliant GSM mobile phone that is connected to your computer via IrDA IRCOMM (i.e. an infrared port) or a standard serial cable. I have tested this with a Nokia 6210, but it uses standard commands and should work with practically all phones that contain a "real" modem.

A few variables for customization are at the beginning of the script. Notably, you should set the interface your phone is connected to.

gsm-readsms reads both the SIM memory and the ME memory, if present. Messages are appended to a file called newsms in the current working directory; this can be customized. Inbound messages are timestamped as well! For safety reasons, messages are not deleted from the ME.

Please note that, due to a deficiency in chat, this program cannot transfer 8 bit data. It tries to work around this by using a different character standard, but some special characters (notably, the German "ß") cannot be escaped properly. This could in theory be amended by using PDU mode, but I could not find (i.e. was too lazy to look for) relevant documentation. Feedback welcomed!


ldif-sort

ldif-sort is a primitive script that sorts an LDIF file by surname (field sn). Records without an sn field are appended after the sorted records.


wailr.pl

wmailr.pl lets you access an IMAP mailbox via WAP WML 1.1.

The script should be dropped into any /cgi-bin capable directory, there's no configuration necessary. The script uses Net::IMAP::Simple to access your mailbox. It supports multiple folders including (limited) folder creation and removal, plus archiving and/or deleting messages using an Archive and a Trash folder.

Point your WAP browser to wmailr.pl and enter your credentials. You can (and probably should) set a bookmark to a particular mailbox by using wmailr.pl?host=mail.myhost.com&user=mylogin&folder=0; this will ask you for a password, then drop you into the folder selection dialog. Either your cellphone or your WAP gateway will have to allow cookies for this script to work.

(There are alternative login methods available. Use the source, Luke!)

All navigation inside the script is done via <do> tags. This means that the full screen size is available for text, and that the pages generated by the script are as small as possible, saving time and money. On the downside, it also means that you will have to navigate via a browser-side menu that is usually called "Options".

(It is trivial to add navigational aids. My personal tradeoff was to minimize size and maximize speed. If you will accept larger page sizes, just add whatever buttons or links you feel comfortable with. Remember that most WAP browsers have a very strict limit on maximum page size, typically somewhere near 1400 bytes uncompiled, so you will have to reduce $msgchunksize.)


Home | Impressum | Updated 2012-02-28