An examination of factors leading to abating customer loyalty towards magazine subscriptions

Published March 31st, 2008, updatedApril 9th, 2008.

What makes magazine readers cancel their subscriptions? This is an interesting question that gains in importance for magazine publishers and their service providers. Within a fully developed market, retaining customers is seen as a key to market dominance and long-lasting profits (Rowley and Dawes, 1999). To achieve this, it is important to understand the factors that lead to abating customer loyalty counter these factors.

From the figures of the advertising market, one finds that the German market spans a volume of 12 billion Euros per year (Rüdell, 2007). It is dominated by traditional media, whereof television, newspapers, magazines and journals are the most important players. About 25 percent of this market is assigned to popular magazines and professional journals. Nearly 6000 different titles have been published in 2004 with a steady upward tendency during the preceding decade (ibid).

However, this trend might be finished soon. As the magazine market is believed to be fully developed, rivalry among competitors emerges (Gassmann, 2006). This proposition is confirmed by the figures for the German advertising market. Where the number of published magazines increased by 20 percent within the last decade, the net advertising income had a peak in 2000 and then, fell down by 25 percent (Rüdell, 2007).

Besides this emerging rivalry, changes in European legislation additionally increase the pressure towards the industry. Whereas the national markets were protected by strong market entrance barriers in the past, the ongoing unification of European law might erode these barriers soon.

For instance, whereas subscriptions in France have to be actively renewed, subscriptions in Germany continue unless a subscriber gives notice. Regulations like this supported separate distribution channels and fragmented the European market into smaller national markets. This leads to a specialisation of many companies within the industry. In Germany, a diverse supply chain emerged with many small companies with a dedicated focus. Today, this supply chain consists of publishers, content holders, news agencies, print offices, distributors, call centres, data processing companies, retailers and others.

However, with the ongoing unification of European law, these barriers are likely to fade and competitors from other national markets might enter the market. Though, many of the smaller companies are highly specialised and thus, very sensible to changes in this isolated market.

So, the companies within this market face new challenges and are forced to take action. Due to the unifications in European law and the increasing rivalry with foreign competitors, they have to adopt their current strategies and prepare for stronger competition. From the Boston Matrix (Henderson, 1970), one can find two generic strategies to counter this. First, companies can enter new markets and grow therein. Second, they can focus on their competitors and try to increase their market share within an existing market.

According to Blank (2006), some US companies decided for the first option: they have placed large investments in online communities and portal sites. This enables them to diverse their investments and allow further growth. However, a similar trend cannot be identified for European companies. Gassmann (2006) states that German publishers are doubtful as most of them have no web strategy at all.

From there, it is consequential to investigate the second option from the decision matrix: increasing the current market share. To do so, it is important to understand the rules of the market and to perform better than competitors. One important component to achieve this superior performance is seen in customer retention. Therefore, it is essential to understand the motivation that makes customers cancel their subscriptions and to create an authoritative strategy to counter this. It is the aim of this thesis to examine the factors that lead to abating customer loyalty to magazine subscriptions and thus, enable companies within the market to adopt their strategies and increase their customer base.

preview this book
buy this book

Entropy Password Generator

Published March 27th, 2008, updatedMarch 17th, 2013.

Entropy is a password generator. It generates two kinds of passwords: i) low entropy passwords that humans can easily remember and ii) high entropy passwords as commonly used in stored sessions. The low entropy passwords are generated from the Basic English vocabulary by C.K. Ogdeni. The high entropy passwords are random alpha numeric passwords where similar looking characters are stripped.

Basic English Passwords (low entropy / e=649,527,500)
note564still             cover624powder           box300person
discovery371spring       over425such              arm781great
daughter658advertisement woman600cushion          help695money
not750sweet              where289brain            present557see
brain787polish           sticky446change          fly679fear
body411oven              system475house           frequent497size
dog303level              cushion435boy            great870language
porter288doubt           awake847pull             hat783burn              

Mixed Alpha Numeric Passwords (high entropy / e=10^18)
6rt84tZrvUkLrtE2 AG7HQEjxQDg4Znao v9DUzzJc8X97FQqj cXTQmY3gvvkvwhTx
wce4yXfhdnwjEnU9 hGKfFYuRwQMkAnqg BEmtkbjtLEyKM3YW wVgxoX82TfGmxbuT
ho3zNKvZCBQ3wgJ6 mvKTTyy6TN9zCCZ8 fKr8eWL34XDNQyKG wCQFtYHQcaxmoAep
Mp7dMC8gDBMa9qGh TGRKnW58cT8z66a4 dZAt2ghzCbDkdmJA P2XpNxFRDjcfQG83
gch7TqT2d6RYzpGb xeZWbqDegADXoRnu xmmeJXkFdTXzcWam t9JL3DpKoMPMYrac
URcVPrCRuQETzVVe aJnw4wghHcj3jCqr 9g9pVYtGtq5RhCaG oJ4y3k8rdjmnUE6w
aTWyu76uu5TPgkCv aLeffq6MVNfAnxp7 EnqeUkjHPkgwv3AG q5Zmmc3GzJyxneHn

This application is writte in Python and supports both, a CGI interface for your web server and a command line interface. From a security perspective, I strongly recommend the command line version after reading the source code.

use service
github repo

Shift Happens

Published March 24th, 2008, updatedMarch 25th, 2008.

The Shift Happens campaign. An interesting video focused on the U.S. education system showing how our world is changing.

PySqlite2: Unicode Bug while Processing Non-unicode Text

Published March 5th, 2008, updatedSeptember 11th, 2008.

Pysqlite-2.3.2 accepts binary data on inserts but selects return unicode strings. This results in unicode conversion bugs when non-unicode bytes are stored in the database.

As sqlite3 accepts binary data in text fields, this seems to be a bug in pysqlite. To fix it, one could i) either restrict inserts to unicode strings or ii) change the result from unicode to binary.

However, the first would break compatibility with sqlite and that latter would break compatibility with existing code. Thus, this should be discussed with the authors.

import sqlite3

connection = sqlite3.connect(':memory:')
cursor = connection.cursor()
cursor.execute('''CREATE TABLE test (t TEXT)''')
cursor.execute('''INSERT INTO test (t) VALUES (?)''', (chr(128),))
cursor.execute('''SELECT t FROM test''')
# Traceback (most recent call last):
# File "", line 10, in 
#     cursor.execute('''SELECT t FROM test''')
#     sqlite3.OperationalError: Could not decode to UTF-8 column 't' with text '?'

print cursor.fetchone()

pysqlite ticket
Debian ticket
download source code

Web Applications on Mobile Devices

Published March 4th, 2008.

Today, Google announced the release of Gears for Mobile Devices. This is good news as it empowers mobile developers to create mighty applications in a wise known from modern web applications. So, what does this mean and what is it good for?

The mobile world consists of cell phones, smart phones and PDAs/handhelds. Leaving aside the cell phones, one finds useable devices with and without a stylus, capable of getting an Internet connection on their own or via some bluetooth or wifi link. These devices are dominated by two major operating systems: i) Windows Mobile and ii) Symbian OS. There are also some Linux platforms out there (Maemo, OpenMoko, Android), but their market share is not yet relevant. Thus, it is straight forward to focus on the two established platforms in the first instance.

Developing applications for Windows Mobile is pretty easy; all you need is Visual Studio (not the Express Edition) and you can start with C++, C#/Visual Basic, JScript or ASP.NET. It is quite the same with Symbian OS, wich gives you C++, C#/Visual Basic, Java, Ruby, Python and Perl among others. However, creating cross platform applications gets a bit more complicated – and it is unlikely that you can port them to an emerging platform easily.

Tough, what both platforms have in common is a capable web browser. From the diversity of microbrowsers, one finds Internet Explorer, Opera Mobile, Web Kit- and Mozilla-based browsers to be the common ones. All those browsers support JavaScript, XMLHttpRequests, CSS and what else you need to create rich client applications.

Mobile Browser Overview 2008

What these browsers are lacking is permanent storage: when you loose your internet connection, you cannot save or load any data. This issues was solved for the fully featured desktop browsers recenty (see Adobe Air, Google Gears, or Microsoft Silverlight) and Gears is now available for mobile devices, too. According to the Google Code Blog, they currently support IE Mobile and plan the integration of other mobile browsers in the near future.

Social Bookmarking

Published February 29th, 2008, updatedAugust 31st, 2008.

At, Andreas and I run a copy of the social bookmarking software Scuttle. Basically, it is an open source implementation of (or at least, as delicious was back in 2006). Scuttle development has slowed down, but we keep up running this service and patch bugs every now and then. If you want to join us, read the documentation here and feel free to add your bookmarks there.

Scuttle Social Bookmarking

use service
download patches

Operating Systems Lifecycle Chart

Published February 10th, 2008, updatedJanuary 9th, 2014.

This chart shows the lifecycle of major enterprise operating systems. The end of life is marked by the end of official security support. The chart will be updated every now and then.

2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
Windows XP
Oct 25, 2001 – Apr 8, 2014
Solaris 9
May 18, 2002 – Oct 30, 2014
Windows Server 2003
Apr 24, 2003 – Jul 14, 2015
Red Hat Enterprise Linux 3
Oct 23, 2003Jan 30, 2014
Solaris 10
Jan 31, 2005 – Jan 31 2018
Red Hat Enterprise Linux 4
Feb 15, 2005Feb 28, 2015
SUSE Linux Enterprise Server 10 + LTSP
Jul 17, 2006 – Jul 31, 2016
Windows Vista
Nov 6, 2006 – Apr 10, 2017
Red Hat Enterprise Linux 5
14 Mar, 20072020
Windows Server 2008
Feb 4, 2008Jul 10, 2018
FreeBSD 7
Feb 27, 2008Feb 28, 2013
Ubuntu 8.04LTS (Hardy Heron)
Apr 24, 2008 – Apr 2013
Debian 5.0 (Lenny)
Feb 14, 2009 – Feb 6, 2012 (Next+1yr)
SUSE Linux Enterprise Server 11 + LTSP
Mar 24, 2009Mar 31, 2019
Windows Server 2008 R2
Jul 22, 2009Jan 14, 2020
Windows 7
Oct 23rd, 2009Jan 14, 2020
FreeBSD 8
Nov 25, 20092015+
Ubuntu 10.04LTS (Lucid Lynx)
Apr 24, 2010 – Apr 2015
Red Hat Enterprise Linux 6
Nov 10, 20102023
Debian 6 (Squeeze)
Feb 6, 2011 – May 4, 2014 (Next+1yr)
Solaris 11
Nov 8, 20112024
FreeBSD 9
Jan 12, 20122015+
Ubuntu 12.04LTS
Apr 26, 2012 – Apr 2017
Windows Server 2012 / Windows 8
Sep 4, 2012Jan 10, 2023
Debian 7 (Wheezy)
May 4, 2013 – 2016 (Next+1yr)
FreeBSD 10
Jan, 20142016+
Ubuntu 14.04LTS
Apr 2014 – Apr 2019
Red Hat Enterprise Linux 7
SUSE Linux Enterprise Server 12 + LTSP
Debian 8 (Jessie)
2015 – 2018 (Next+1yr)
2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

Contact Information

Published February 10th, 2008, updatedSeptember 20th, 2012.

Benjamin Schweizer

Mönchsgrundstraße 16
74193 Schwaigern

cell +49.152.52741218
irc gopher@freenode
pgp key 0xC46C7FF9

Linked In
Git Hub
Sickos Wiki
Sickos Bookmarks

Lorem Ipsum

Published January 21st, 2008, updatedJanuary 24th, 2008.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse erat orci, condimentum vel, dictum vitae, interdum non, massa. Duis sed nunc nec dolor interdum porttitor. Integer blandit cursus risus. Duis sagittis, pede sit amet porttitor posuere, purus nisl mollis dolor, ac mollis est justo id arcu. Etiam placerat ligula at quam. Proin ante. Morbi suscipit tincidunt eros. Nulla vitae elit in quam blandit vulputate. Sed non nunc. Aenean arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin egestas velit quis tortor viverra rutrum.

Cras erat. Vestibulum cursus rutrum nulla. Praesent velit. Vivamus lacus dui, tincidunt a, pretium eu, sagittis id, nisi. Proin at elit. Nunc pretium pede ac leo. Nam sem velit, egestas nec, tristique at, venenatis eu, nisl. Mauris a enim. Aenean hendrerit faucibus velit. Duis nonummy condimentum quam. Suspendisse convallis arcu at mauris. Sed neque lacus, volutpat a, congue eget, convallis et, sapien. Pellentesque placerat mattis nulla. Nullam mollis lacus in pede. Nam ac arcu. Vivamus ipsum sapien, convallis vitae, mollis id, ullamcorper at, libero.

Nam lectus. Cras quis arcu. Vestibulum ultricies orci eget est. Nunc in arcu eget nulla pretium hendrerit. Fusce porttitor auctor arcu. Pellentesque et felis. Nunc posuere hendrerit diam. Vivamus tellus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent hendrerit elementum nunc. Aliquam at ipsum id eros aliquet ultrices. Maecenas rutrum, magna at luctus malesuada, quam nisi egestas nunc, ut venenatis metus mi vulputate neque. Pellentesque quis sapien. In hac habitasse platea dictumst. Pellentesque lectus nibh, tempus sed, dictum vitae, imperdiet non, ipsum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

Integer posuere dolor at augue. Etiam dictum tellus lacinia enim. Phasellus posuere hendrerit nulla. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas sed tortor. Vivamus sem enim, varius non, viverra quis, sagittis eget, nisl. Proin pulvinar imperdiet sem. Vestibulum eu odio. Proin dapibus egestas diam. Suspendisse potenti. Curabitur dapibus nulla et lectus. Nunc consequat elit vitae erat. Sed blandit, sem sit amet tempus fringilla, nisl diam condimentum nibh, adipiscing fermentum orci eros sed nibh. Aenean sit amet odio in pede sagittis auctor. Quisque mi. Nam feugiat. Vestibulum ipsum. Nullam ut leo ut justo porta posuere.

Cras vulputate nisi et lectus. Maecenas at lorem ac ligula suscipit condimentum. Mauris in dui et tortor bibendum dignissim. Nam a diam. Aenean molestie, justo sit amet tincidunt iaculis, libero odio imperdiet odio, nec ultrices lectus libero ut lacus. Vivamus iaculis tellus sit amet leo. Maecenas non nulla in tortor mattis ultricies. Praesent turpis mauris, mattis non, vestibulum sed, egestas quis, metus. Aenean venenatis viverra felis. Sed ultrices mauris id lorem. Vestibulum bibendum est non lorem.

Web Watchdog

Published November 28th, 2007, updatedMarch 7th, 2008.

The Web Watchdog notifies you when a website gets updated. Instead of continuously returning to blogs, forums or discussion boards, you can ask the Web Watchdog to do this for you.

Web Watchdog, Bookmarklet

use service
download source code


Published October 17th, 2007, updatedApril 10th, 2008.

Ipmap is a GTK-based IP address grapher, inspired by an XKCD comic and glTail. It reads data from standard input and maps IP/size pairs on a grid (see the screenshot). Due to this simple interface, it is easy to create filters for a variety of data sources. The program comes along with some example filters, including tcpdump ouput, Apache/ProFTPd’s access logs and Squid logs.

download source code


Published June 6th, 2007, updatedFebruary 29th, 2008.

“The pickle module implements a fundamental, but powerful algorithm for serializing and de-serializing a Python object structure.” Pedit is an interactive editor for such data structures, making them handy on the command line. The code is work-in-progress but yet useful…

Here’s a sample:

# /tmp/foo.pickle - pedit

      "key": "value",

# eof.

download source code

Squid LDAP Authentication

Published May 9th, 2007, updatedFebruary 29th, 2008.

This is a proposed patch for squid_auth_ldap, the authentication helper of the Squid Cache. It increases the maximum filter length to 32k and thus, enables long search filters. Wow:-)

# patch for squid-2.6.STABLE11, enables long search filters
# author: Benjamin Schweizer 
# diff -r squid-2.6.STABLE11/helpers/basic_auth/LDAP/squid_ldap_auth.c \
>  * 2007-05-09: Benjamin Schweizer 
>  *             - Increased buffer size to support long search filters.
< char buf[256];
>     char buf[32768];
< while (fgets(buf, 256, stdin) != NULL) {
>     while (fgets(buf, sizeof(buf), stdin) != NULL) {
< char filter[256];
> 	char filter[32768];

download source code

As of Aug 27, 2007, this patch is included in the cvs tree.

Wiki Plugin for Vim Editor

Published April 18th, 2007, updatedMarch 7th, 2008.

This is a wiki plugin for the Unix editor Vim. It enables you to use syntax highlighting, hyperlinking etc. within your favourite text editor. Based upon Tim Hemel‘s original wiked, the code perceived many changes to fit the needs at

We use it here ( for server documentation, notes, logbooks, howtos and many other tasks where we savor syntax highlighting and hyperlinking. In contrast to Tim Timewaster’s original wiked, we have found that many wiki-like syntax highlightings are useless within a text environment. So, we have limited on these features:


Words within brackets are interpreted as hyperlinks and automagically added to the tags file. You can jump to the target using Vim’s tag feature (as in ctags/etags). This is achieved by either entering

  :tag <link>

into the ex status line or by the keyboard combination <ctrl>-<+>. (This is <strg>-<alt-gr>-<9> on German keyboard layouts, see the vim manual for details on tagging).

To install this wiked release, simply copy .vim/ and .vimrc/ to your home directory. If you understand what you do, you can also integrate it with your existing configuration; you need at leat “syntax on” and “filetype plugin on” in your vimrc and the Perl scripts and .vim files at the appropriate places.

download source code

GnuDIP/MiniDIP Password Encryption

Published January 18th, 2007, updatedFebruary 29th, 2008.

This is a patch for GnuDIP‘s minidip server. It switches the password storage format from plain text to md5 hashes, so you can copy passwords from GnuDIP to MiniDIP and vice versa. Furthermore, this allows you to use arbitrary characters in your passwords without breaking the format of the config files. Use GnuDIP’s encpass utility to encrypt passwords.

# patch for gnudip-2.3.5, changes auth database to md5
# author: Benjamin Schweizer 
# diff -r gnudip-2.3.5/gnudip/sbin/ \
< $checkpass = md5_hex(md5_hex($checkpass) . '.' . $salt)
> # 2007-01-18, schweizer: storing passwords md5 hashed (as in gnudip/mysql)
> #$checkpass = md5_hex(md5_hex($checkpass) . '.' . $salt)
> $checkpass = md5_hex($checkpass . '.' . $salt)

download source code


Published December 28th, 2006, updatedFebruary 29th, 2008.

Shinypages is an easy to use publishing platform. It enables you to create instant websites, empowers your friends to contribute and limit access to the people that you want to view your pages. Both, an easy to use interface and latest Web 2.0 technology ensure that what you see is what you get.

use service

Squid Efficiency Plugin for Munin

Published November 16th, 2006, updatedNovember 25th, 2009.

This is a plugin for the Munin monitoring system. It graphs the cache efficiency of your Squid proxy servers and shows nice graphs for average byte and request hits.

download source code

2009-11-17: there’s an updated version available with support for squid3
2009-11-25: here’s another update, volker added clean config settings

Groupwise on SLES9

Published July 5th, 2006, updatedFebruary 21st, 2008.


Here are some short notes on the installation of GroupWise 7.0 Web Access on SUSE Linux Enterprise Server 9 (SLES9). The setup consists of a NetWare/Groupwise server that holds the web access agent and a Linux box that runs the web application (a Tomcat container).


  • get the installation files from the GroupWise 7 Linux CDs (gw700lnx.iso) and make them accessible, say in /tmp/gw700lnx/
  • locate and install the WebAccess RPM, “rpm -ivh novell-groupwise-webaccess-7.0-20050803.i386.rpm”
  • copy the GroupWise directory holding your domain directory from yout NetWare box to some local directory; you’ll need at least your wpdomain.db in, say /tmp/gwweb-root/
  • install Apache2, Tomcat5, J2EE and the “apache2-jakarta-tomcat-connectors” RPMs from the SLES9 installation media
  • ensure that Apache2 runs with Jakarta (mod_jk)
  • run ./install from the GroupWise 7 Linux CDs (/tmp/gw700lnx/install); you’ll need an X server
    • enter your settings, using the local domain directory (/tmp/gwweb-root/)
    • if it crashes during LDAP browsing, enter the values without browsing
    • this creates the essential file /opt/novell/groupwise/webaccess/commgr.cfg
    • and it copies the defaults from /opt/novell/groupwise/webaccess/default to the same directory

Apache Configuration

(assuming /etc/apache2/ as current working directory)

  • add these lines to your webserver’s config (vhosts.d/something.conf), they will include the Novell configuration file:
    <ifmodule mod_jk.c>
        Include /etc/opt/novell/gw/gw.conf

Tomcat Configuration

(assuming /usr/share/tomcat/ as current working directory)

  • chmod /opt/novell/groupwise/webaccess/commgr.cfg so that it is readable to Tomcat
  • symlink /var/opt/novell/gw/ to ./webapps/gw, so that Tomcat finds the webapplication


  • start Tomcat and Apache
  • try to login at http://localhost/gw/
  • check the logs of the involved applications, Tomcat/Catalina (/usr/share/tomcat/logs/), Apache (/var/log/apache2/) and GWWA (/opt/novell/groupwise/webaccess/logs/); when you find the compile error in GWWA’s logs reporting that “” cannot be found, ignore this (it is at least not the reason why the web application hangs)


Published April 24th, 2006, updatedFebruary 29th, 2008.

This is a caching and scaling proxy for images that are accessible via http. It is designed for the use in weblogs where you want to refer to images on foreign hosts without the need of manual mirroring or scaling. After an initial fetch, the (scaled) pictures remain in the local cache directory. It is tried to reload the image when the cache expires, otherwise the old image is delivered.

download source code

Kerio Mailserver Storage Format

Published October 12th, 2005, updatedFebruary 10th, 2008.

Here are some notes on the Kerio Mailserver, version 6.1. My interest lays on the storage as I’m going to do some data injection :-)

kerio/$ ls

store/mail/domain.tld/username/ - that's it. see below.
store/mail/domain.tld/#public/ - shared user?
store/logs/ - ascii text log files and index for each of them
store/queue/nn/* - hashes or maildir or somewhat?
store/queue/pickup/ - working directory?
store/spamassassin/* - uninteresting
store/tmp/* - not interesting

kerio/store/mail/domain.tld/username/$ ls

Calendar - Calendar data, vcal + index
Contacts - Contacts, vcard + index
Deleted Items - All types + index
Drafts - mail?
INBOX - mail?
Junk E-mail - mail?
Sent Items - mail?
Tasks - unknown
filter.siv - mail filters, perl-like syntax - shared folders mapping, simple xml
settings.usr - serialized php structure
stats.usr - unknown
sub.fld - optional (mail) folders

kerio/store/mail/domain.tld/username/Folder/$ ls

#assoc/ - unknown
#msgs/*.eml - VCALENDAR, VCARD, Mail, whatever
subfolders/ - like Folder, unsure where they are linked
deleted.fld - ??? unix timestamp + filename
index.fld - see below.
properties.fld - unknown
search.fld - sqlite2 database, somewhat broken; useless (or other format???)
sort.fld - unknown, may be cache
status.fld - unknown

kerio/store/mail/domain.tld/username/Folder/$ cat index.fld

U00000001 F80000001 S1133 D43032abf M4305f1b7 I0001 CIPM.Appointment

Unnnnnnnn = file name (#msg/nnnnnnnn.eml)
Fnnnnnnnn = unknown (assuming signed int, always? -2^31+1)
Snnnn = unknown
Dnnnnnnnn = create date (hex encoded unix timestamp)
Mnnnnnnnn = modify date (hex encoded unix timestamp)
Innnn = incremental counter
CIPM.* = file type
… = optional data behind

kerio/store/mail/domain.tld/username/Folder/$ cat deleted.fld

431d8fa3 00000005

timestamp (hex encoded) + filename

kerio/store/mail/domain.tld/username/Folder/$ cat status.fld

Auser@domain.tld lrswicda

T – unknown
G – unique id, probably used to identify folder
V – timestamp, folder create date
U – next filename to use
C – counter?
M – folder type?
D – unknown, some delete flag?
R – unknown
N – unknown
S – unknown
A – mail address / user id + permissions?

That’s all. May be it helps you to tinker with the backend.

WordPress Flickr Sidebar Plugin

Published October 5th, 2005, updatedFebruary 29th, 2008.


wp_flickr_sidebar is a plugin that shows a moblog in a WordPress sidebar. It can be configured to display any Flickr feed with a specified width and number of pictures. The plugin supports caching and resolution-dependent fetching.


Shorts steps for the impatient:

  • extract the files to the plugin directory (currently one file)
  • drop a copy of magpierss in /magpierss (or symlink it or fix the constants)
  • ensure that you have libgd2 and the php bindings installed
  • activate the plugin somewhere on the WordPress setup page
  • configure the plugin using the WordPress options dialog from within the admin menu
  • add <?php wp_flickr_sidebar_feed() ?> to your template/sidebar


After installation, the plugin should

  • fetch your feed using magpie
  • print a bunch of images which link to the plugin itself

and when called as an image, it should

  • fetch your images
  • convert them using gd
  • display them

If something went wrong (missing libs, wrong permissions, typos), you should see an error message as long as the bug is in stage 1. To see error messages in the standalone jpeg section, set this line as a comment:

// (header("Content-type: image/jpeg");)

When you’ve fixed your problem, come back here end tell us, please.
q: after commenting the header line, i see an error message that says there is no imagecreatefromjpeg()
a: install/update the gd graphics library and php bindings q: it does not work anymore a: flickr changed the uri schema, update to version 0.2


Windows Serial Console Daemon

Published May 11th, 2003, updatedFebruary 29th, 2008.

wconsd is a serial console server for Windows NT/2k/XP. It maps local com ports to an IP socket and makes it accessible with any TCP/IP terminal. I use it with PuTTY to set up routers when no IP address is assigned… PuTTY just feels better than Hyperterminal or TeraTerm;)

downlad source code
downlad binaries

update: PuTTY 0.59 (Jan 24, 2007) includes native support for serial consoles.

Echolot, a Network Station Monitor

Published December 29th, 2002, updatedFebruary 29th, 2008.

Echolot is a network station monitor. It sniffs ARP packets on ethernet network devices and stores them in an IPTraf-compatible database. These unique addresses could be used to find known hosts on any LAN (a popular FTP server at a LAN party), or to find unknown hosts on a company LAN (such as intruders).

download source code