Posts with the category Websites

My own WhatsMyIP Service – Publicly available for everyone!

Today I'm launching my own "What's My IP" service. By accessing the address you will get a text-only response containing only your (external) IP. This can be very useful to check if your internet connection works at all, to check IPv4/IPv6 connectivity, or to update your dynamic DNS...

Read on

Hosted Raspberry Pi at PCExtreme – Reinstalled with Raspbian

My Raspberry Pi running Arch Linux ARM hosted by PCExtreme in the Netherlands wasn't reachable anymore after a forced reboot from their side. Most probably I didn't adapt the configuration of the static IP to newer releases of the network configuration system when I installed upgrades on the RPi. The forced...

Read on

Memcached used as a server side cache for full pages of a Bottle web app

# Install memcached on Arch Linux ARM:
pacman -S memcached
# Start the memcached daemon manually:
memcached -d -m 128 -l -p 11211 -u nobody
# Check the systemd startup file /usr/lib/systemd/system/memcached.service
# Set up memcached to start automatically at system startup
systemctl enable memcached.service
# See for more info

# Install the memcache...

Read on

Deciding between a RPi colocation and hosting it yourself at home

The Raspberry Pi colocation costs 36 EUR incl. VAT per year, see here. If you spend this amount of money for energy only, it's:

Yearly Energy = 36 EUR/year / 0.27 kWh/EUR * 1000 Wh/kWh = 133 333 Wh / year
# to enter it more quickly in your calculator:

Read on

wsgi-request-logger - Logging HTTP Requests With Any WSGI Web Application like Flask, Bottle or Django

I like WSGI (micro-)frameworks like Bottle, Flask or Django and used them for a couple of web applications so far. One thing that I wasn't able to do properly was request logging. It either wasn't in a format I liked, was dependend on the server implementation of WSGI...

Read on

Logging Requests With Bottle Web Applications

Please note that I gave up on this project and started the more generic wsgi-request-logger instead. See this post.

The reasons to do so, are as follows:

  • A bottle plugin is not being called when a non-existent route (404) being hit.
  • A bottle plugin has problems with 500 server errors. It...

Read on

Updating DNS Entries (with nsupdate or alternative implementations) – Run Your Own DynDNS Service

Please refer to my newer and more complete blog post on this topic: Deploy Your Own Bind9 based DDNS Server. has stopped serving DynDNS for free to the great public. If have a (virtual) server, you can simply host your own dynamic DNS service. The most common DNS server...

Read on

IP Address Analysis Using Python

Find out more about IP addresses (IPv4 and IPv6) using the Python module IPy:

#!/usr/bin/env python

from IPy import IP

ip_s = raw_input('Please enter an IP address or range: ')
    i =...

Read on

Convert Wikidot style syntax to Markdown style syntax

I wrote a converter for Wikidot syntax that outputs Markdown syntax. You can use it to move from to any Markdown based wiki / blog / note collection.

I set up an online converter that you can use to convert your Wikidot syntax files to Markdown.

The converter itself...

Read on

Piwik Plugin IntranetSubNetwork: Show IPv4 vs. IPv6 Statistics

I found an interesting plugin called IntranetSubNetwork on the Piwik trac ticket #1054. I was thinking that this would be perfect to adopt it to my needs to determine between IPv4 and IPv6 users on my site. Those needs were already specified in a feature suggestion for Piwik.


Read on

Writing a Small Bottle Web Application with AJAX API For The Koukaam NETIO230A

I needed an easy way to switch power outlets on and off remotely. So I bought a Koukaam NETIO230A and wrote a Python module to communicate with it via TCP. Now I added a Bottle based web app written in Python that uses that class to...

Read on

10 Gigabit Ethernet at Home

If you want to use 10 Gigabit Ethernet at home you have to make a choice what technology you want to use. There are about eleven different standards for 10 Gigabit Ethernet, 6 using fiber optics and about 5 for copper connections.

Products are still relatively costly though. A cheaper alternative...

Read on

AqBanking CLI on Mac OS X with ING DiBa via HBCI

Get the requisite: AqBanking via Homebrew on Mac OS X:

brew install aqbanking
# ↑ At the time of writing (2011-12-28) this will get you AqBanking v5.0.16

Now set up your ING-DiBa online banking account (needs activated HBCI interface):

ktoblzcheck 50010517 5400040302
aqhbci-tool4 --help

Read on

Automized Extraction of Transactions on the ING-DiBa Online Banking Website

This is an iMacros script to extract transaction details on the online banking website of the German branch of the bank ING-DiBa. As this is mostly interesting to Germans, the following blog post is in German. If you want to read it in English, consider translating it using Google...

Read on


ENUM can be used to find out if you can call someone via VoIP instead of a regular call when all you have is the phone number. It works by sending a DNS like query for the phone number.

Possible ENUM servers are:

  • official!

To query +43 780 004711 on run:


Read on

js-Unicode-Selector – A tool to have a closer look at Unicode Symbols

Yesterday, I had to prepare for an exam at the University but instead of learning for it I wrote a small tool to browse the unicode characters. You can have a look at it on It's fun...

Read on

Solve PHP5-GD2 trouble: Missing configuration file gd.ini

I had a nasty problem with Piwik today. I use it on a low traffic website until today (updated to 1.5) I did not mind that the sparklines were not displayed. But today I wanted to fix the problem and at first I didn't come to the conclusion that <a...

Read on

`python-sipgate-xmlrpc` – Easy to use Python bindings for the Sipgate XML-RPC API

The German VoIP provider Sipgate has a great offer for people who want to replace their landline with a modern internet based SIP telephony account. Sipgate offers an XML-RPC API to all its customers (you must at least have created a free 'basic' account). With the API, you...

Read on

Deployment of a Django based Website


Read on

Django Internationalization

Please refer to for up to date information.

There are three steps on the way to Django i18n:

  • For application authors wishing to make sure their Django apps can be used in different locales: Internationalization.
  • For translators wanting to translate Django apps: Localization.
  • For system administrators/final users...

Read on

The Django template engine

Using the template system, a two-step process:

  • First, you compile the raw template code into a Template object.
  • Then, you call the render() method of the Template object with a given context.

Example for use in standalone-mode:

from <span...

Read on

The Django Web Framework

The website of the Django web framework can be found on


The current version of Django (2011-06-13: v1.3) can be installed on Ubuntu/Debian using

sudo apt-get install python-setuptools
sudo easy_install django

(The install-dir on Ubuntu 11.04 will be /usr/local/lib/python2.7/dist-packages. More on the install-dir can be read in a blog...

Read on

Investigating Domain Update Errors (ERROR: 901 Unexpected RCODE - SERVFAIL)

Today I wanted to try out the DNS Service by Hurricane Electric (including a free IPv6 DynDNS service): I have a spare domain and tried to update my domain information to the new nameservers (from the set,,,, at Denic, the German TLD...

Read on

Communicate with the API using Python via tweepy

Install tweepy via PyPI:

easy_install tweepy

Example usage with

import tweepy
username, password = "identi.ca_username", "identi.ca_password"
auth = tweepy.BasicAuthHandler(username, password)
api = tweepy.API(auth, <span...

Read on

A Pygments Highlighter for Code Blocks of Wordpress Posts Written in Markdown Syntax

The WordPress plugin pygments-markdown-highlighter makes the Pygments highlighter available to highlight your code blocks when writing posts in Markdown syntax.

To use it, you need to install Pygments on your web server and install the plugin itself. And you should also have PHP Markdown installed in your blog (and they...

Read on

Open Source (Web) Server Administration Software

Alternatives to Confixx, Plesk etc.

More general server administration


Read on

Access the InterNetworX XML-RPC API via Python

The Domain Hoster InterNetworX (abbr. inwx) offers an XML-RPC interface to access its services. You can even register new domains. Documentation of the XML-RPC API is available for download at (including examples in PHP & Java plus a PDF describing the API).

There is an operational test environment (ote) to...

Read on

Modify Apache Logging to Comply to German privacy law

As I'm not a lawyer, I can't tell you if the following pieces of advice are really needed, just enough or not necessary. I will further investigate the topic and you will be able to read about my findings here.

Deactivate Apache logging

Set the following Apache2 directives in your apache config...

Read on

Spider of Referer and User Agent

Today the spider of the Archive was accessing my site. It looks like this in the server logs: - - [28/Apr/2011:07:12:07 +0200] "GET /robots.txt HTTP/1.1" 200 864 "-" "ia_archiver(OS-Wayback)" - - [28/Apr/2011:07:12:07 +0200] "GET / HTTP/1.1" 200 86476 "-" "ia_archiver(OS-Wayback)"

So the referer is - and the user...

Read on

Change the date of WordPress posts in an SQL Mass Update

When I programatically added most of the blog posts in this blog, I forgot to adjust the date and time of each post to its actual age. So I decided to set it via SQL directly in the database.

First I worked out a SELECT query to filter all the entries...

Read on

Analyse illegal SSH login attempts

Filter the authentication log file for failed authentications and count the attempts (lines in the log file):

grep -i fail /var/log/auth.log | wc -l

Check for all attacks with non existing usernames:

grep -i "Failed password for invalid user" /var/log/auth.log | cut -d " "...

Read on