Skip to content

Run your own Dynamic DNS server

Dyn, the company behind the widely known dynamic DNS service DynDNS, will shut down it's free service effectively May 7th, 2014. Of course there are plenty of other free or freemium services out there, but history will repeat itself and these services will vanish over time, or change their business modell.

A while ago I spent an afternoon to implement my own dynamic DNS service.


Continue reading "Run your own Dynamic DNS server"

New PostgreSQL pg_docbot is live

Last night a long-running project of mine went live: pg_docbot v2.

For years, Jan Wieck provided a helper bot (rtfm_please) in the #postgresql IRC channel in the freenode network. Because of protocol changes in the freenode network, this bot was no longer functional. Together with some others we decided to write a quick and dirty new bot. As it is with dirty hacks, not everything was optimal: after timeouts the bot was not able to reconnect - more exactly the POE framework did not even recognize the timeout. Also extending the bot and adding new functionality was complicated. For a while I collected all these problems in my personal bugtracker and about two years ago I started a full rewrite.

Some of the new key features:

  • pg_docbot's channel limit is gone: a user in the freenode network can only join 20something channels, the new bot was designed from the ground to handle multiple IRC connections and circumvent this problem
  • function to identify stale urls: the new ?lost command shows all unconnected urls
  • registered users are now either "op" or "admin": all operators can issue ?learn and ?forget, admins can - of course - do everything
  • new command to post to all channels: the ?wallchan command let the doc post to all channels
  • i18n: every channel has a configured language, default is English - all messages in this channel are posted in the configured language (if translation is available)
  • watchdog on board: every session is monitored and reconnected, if necessary - no more "ads: can you please restart the bot?"
  • nickname handling: every session is monitoring his (registered) nickname and will reclaim the nick if necessary, also nickserv handling is included now
  • commands are recognized in different languages: a nice add-on, by-product of i18n, most commands can be used in different languages - like "search" (English) and "suche" (German)
  • bot can join and leave channels on the fly: not much to say about, just that you can have the bot in a temporary PostgreSQL channel if you like
  • channels can have paswords now: this works both for configured channels as well as on-the-fly joined channels
  • autojoin channels: configured but not joined channels are rejoined after a while, also it is possible to configure but not autojoin channels
  • statistics: the bot runs anonymous stats about his usage, like ?search, ?learn, ?forget and so on

There is still a lot to do, not all of my tickets are closed. If you want pg_docbot talking in your language, please send me translations. The pg_docbot code is on

Next things on my todo list:

  • verify each URL from time to time: mark unreachable as invalid
  • intelligent sort order: not yet sure how to solve this problem, right now there is no specific sort order
  • move pg_docbot to PostgreSQL infrastructure
  • web interface: the bot should redirect the user to his website if there are more then let's say 2 or 3 urls, to avoid flooding the IRC channels
  • integration in website: the pg_docbot database contains very useful knowledge, there are plans to integrate this into the search on the main website
  • integration with every time the bot see's a link from a paste site, it should scan the content and generate a postign on
  • monitor publish new postings in IRC channels
  • allow better search: like using a regexp
  • ...

Continue reading "New PostgreSQL pg_docbot is live"

Making life easy for new (and old) PWN translators

I released version 3.0 of the pwn-translation script. Although the version number is already 3.0, this is the first public available version.

What does it do? You feed one of David Fetter's PostgreSQL weekly news mails into the script and it generates a new mail with all known text parts translated into your native language. This should make life very easy for new - and already existing - pwn translators.

Continue reading "Making life easy for new (and old) PWN translators"

Unterlagen für Tutorial beim Perl-Workshop in Frankfurt/Main

Die Unterlagen für das Tutorial beim Perl-Workshop 2009 in Frankfurt/Main am 25.02.2009 sind unter:

zu finden. Folgende Änderungen wurden gegenüber dem Vortrag vorgenommen:

- ein falscher Variablenbezeichner im "Perl" Teil wurde korrigiert

- Beispiele für Nutzung von SPI in Perl Stored Procedures wurden aufgenommen

Viel Spass mit den Unterlagen

Update: Die Unterlagen aller Vorträge gibt es im Wiki:

PostgreSQL and the Perl Workshop 2009 in Frankfurt (Main)

There will be a workshop "optimize PostgreSQL, combine Perl and PostgreSQL" at the Perl Workshop 2009 on february 25 in Frankfurt/Main in Germany.

More details (in german) are available at:

The full timetable (also mostly in german) for the workshop is available at:

Single line input for psql copy command

I have the following problem:

A database server and another client machine. I have to execute several \copy commands in psql on the client machine to retrieve data and store the output in CSV files. The PostgreSQL COPY command is not an option because it stores the results on the database server, not the client machine. All \copy commands are executed from several files containing SQL commands, which are concated together by a makefile and feeded into psql. So far so good.

My SELECT commands used in the \copy are a bit more complicated and \copy requires to have the entire command on a single line. That can be done in two ways:

- Write the entire command in a single line. But that's hard to debug :-(

- Write the command as i like it and remove the linebreaks before feeding the command into psql.

Continue reading "Single line input for psql copy command"