not so recent news

[2023-03-29] grapheqd version 7 supports IPv6 addresses and can listen on multiple addresses at the same time.

[2023-03-28] As announced 18 days ago, ampctrld is a re-implementation of ampcontrol in plain C. It has two new features: It allows you to assign user-defined names to input sources, and can listen on multiple addresses, i.e. an IPv4 and an IPv6 address at the same time. Additionally, it saves system resources:

ampctrld memory consumption

And:

pkg delete node

[2023-03-27] How to get the base64 encoded SHA hash of an existing file, part two:

[2023-03-10] New version of ampcontrol handles initial connection errors, and makes use of the new Buffer API of Node.js.
I need to rewrite it again, though. This time in C, since memory consumption of Node.js is far too heavyweight for my taste:

ampcontrol memory consumption

[2023-02-25]

[2023-02-16] LogBlitz version 13 allows you to assign user roles based on additional environment settings.

[2023-02-15] LogBlitz version 12 introduces user roles.

[2023-01-28] LogBlitz version 11 saves selected filenames in a cookie, and uses different cookies for each user.

[2022-12-18] How to get the base64 encoded SHA hash of an existing file:

[2022-12-09] LogBlitz version 10 comes with a performance improvement if you don't search for regular expressions.

[2022-12-04] My new howto Apache and form based login makes use of mod_auth_form.

[2022-11-01]

[2022-10-27] How to create a Small Python container for Docker

[2022-10-19]

[2022-10-18] New version of s3file.py fixes a highly dangerous error in the examples output (DELETE where GET was meant), and has examples for dealing with metadata.

[2022-10-15] New version of check_tvh.py reloads the cuse kernel module as well.

[2022-10-12] My howto pgAdmin 4 on Gentoo now covers the latest version of pgAdmin 4, and explains how to handle updates of Python.

[2022-09-14] LogBlitz version 9 displays its execution time, and adds the name of the current user to the title of the logout link.

[2022-08-30] If you upgrade to LogBlitz version 8, you might configure a logout url.

[2022-08-25]

[2022-07-31] New howto: Automatic version numbers with Git.

[2022-07-15] Tvhead2TVB version 1.0.1.0 handles activation through a program's info popup correctly, and uses JGoodies as UI library, which comes bundled with TV-Browser.

[2022-06-25] grapheqd version 5 has 3 new features:

[2022-06-18] New howto: pgAdmin 4 on Gentoo.

[2022-06-13] Older versions of the ConvertFrom-SecureString cmdlet did not have an -AsPlainText parameter. When you have to use PowerShell prior to version 7, you might use ConvertSecureStringToPlainText.ps1.

[2022-06-06] Gave both s3file.py and nextcron.py their own pages:

[2022-06-05] New version of s3file.py has command shortcuts for:

[2022-06-02] LogBlitz version 7 supports pyre2, highlights non-matching lines in case of an inverted search, and contains several optimizations.

[2022-05-26] LogBlitz version 6 allows you to display lines before and after each matching line, and highlights every found query string.

[2022-05-14] LogBlitz version 5 allows you to display line numbers and to restrict users to certain logfiles and subdirectories, stores your current settings in a cookie, and comes with a performance improvement.

[2022-04-28] graypold version 10 uses a new version numbering, and fixes a bug which was introduced in version 0.8 and prevented you from bypassing graylisting for certain senders and/or recipients.

[2022-04-19]

[2022-03-16] graypold 0.9 does not fail the SPF check anymore if the sender's address is empty

[2022-02-19] New version of s3file.py comes with builtin help and examples, allows you to pass and display HTTP headers, may read credentials from a config file, and supports Python 3 only

[2022-01-16] How to combine Apache and Fail2ban in order to show a nice "access denied" page without blocking the client's ip address

[2021-11-21] New version of update_znuny.sh now even updates Znuny on FreeBSD across major releases, e.g. 6.0.38 -> 6.1.2

[2021-10-30]

[2021-10-28] update_znuny.sh updates Znuny on FreeBSD.

[2021-10-25] New version of nextcron.py now handles environment variables like HOME, MAILTO, etc., and dcron's @noauto correctly.

[2021-10-23]

[2021-10-14] graypold 0.8 now supports SPF

[2021-10-10]

[2021-06-13] LogBlitz version 2 allows you to display log entries in reverse order, i.e. latest ones first.

[2021-06-07] FastCGI with nginx and fcgiwrap on FreeBSD

[2021-06-06] LogBlitz is a CGI script to search through your (sys-)log files.

[2021-05-24] New version of rrdquery.pl fixes a bug which accepted aggregate functions written in lowercase only.

[2021-05-16] New version of kvmlib natively, i.e. without VM_EXTRA, supports:

[2021-05-09] New version of zfs-snap is compatible with (Open)ZFS on FreeBSD 13.

[2021-03-21] New version of kvmlib comes with 3 new features:

[2021-01-23] If you compile ftp6proxy version 4 with support for netgraph along with ipfw, then it makes use of Capsicum.

[2021-01-17] You can now deploy ftp6proxy version 3 in a pure ipfw environment without pf. By default, it chroot's itself to /var/empty, has been prepared to support Capsicum, and allows you to specify a syslog facility.

[2021-01-12] New version of check_tvh.py supports the commandline option -f or --force in order to restart webcamd and Tvheadend forcefully.

[2020-12-31] New version of zfs-snap accepts a frequency per filesystem or volume, which optionally indicates the time that must have passed since the last snapshot was taken.

[2020-12-24]

[2020-12-05] Updated howto Upgrading PostgreSQL with pg_upgrade on FreeBSD now mounts devfs inside the jail.

[2020-08-15] grapheqd version 4 fixes a bug that became apparent on a MIPS box running Linux (thread stack size too small).

[2020-07-22] grapheqd version 3 comes with support for OSS on FreeBSD, fading to immitate afterglow, a client/server mode, and several bux fixes.

[2020-07-19] grapheqd version 2 comes with slowly decreasing peak values, improved error handling, and revised logging.

[2020-07-16] grapheqd displays the frequency spectrum of an audio signal via its HTML5 webpage or ASCII interface.

[2020-07-10] rrdquery.pl retrieves one datasource from an RRD (round robin database) and optionally filters its values.

[2020-07-07] Building a digital video recorder with FreeBSD.

[2020-04-05] New version of kvmlib does not connect all network interfaces to one virtual hub anymore, but makes use of the netdev and device commandline options of qemu in order to connect each virtual network card only to its assigned tap interface on the host.

[2020-03-15] privatebinc.py is a simple Python client for PrivateBin.

[2020-02-23]

[2019-11-24] New version of check_tvh.py supports Python 3 and reports the size of memory allocated by device drivers

[2019-11-23] New version of kvmlib supports inserting and ejecting of cdrom images via commandline

[2019-11-09] Resizing an UFS2 filesystem on FreeBSD 4.x

[2019-10-05] Updated my howto Upgrading PostgreSQL with pg_upgrade on FreeBSD which now uses /etc/libmap.conf instead of LD_LIBRARY_PATH

[2019-08-03] Negotiate authentication with Python and PycURL on FreeBSD

[2019-07-01]

[2019-06-23] Updated jupdate.sh, which is a script to update jails on FreeBSD

[2019-06-10]

[2019-05-25] Uploaded a script in order to update jails on FreeBSD

[2019-04-15] Pidgin and the new ICQ WIM protocol on Gentoo

[2019-04-14] Transparent proxy with nginx and pf on FreeBSD

[2019-03-26] new version of ampcontrol avoids stalling after NET/USB commands and accepts multiple consecutive volume changes

[2019-03-25] OAuth IDP with NetScaler

[2019-03-19]

[2019-03-18]

[2019-01-06] How to netboot and install NetBSD/sparc updated to NetBSD 8.0. You still have to use the second stage bootloader from NetBSD 3.1.1, though.

[2018-12-26] As recent versions of MacOS support Time Machine backups on an SMB share, I updated my howto Building a FreeBSD backup server

[2018-12-25] I've been using Linux almost exclusively on the desktop at home for 15 years now. Time to switch to a graphical login screen with xdm on Linux

[2018-12-24] kvmlib now supports absolute filenames for disk images, e.g. /dev/sdb

[2018-12-09] UTF8 filenames with Java

[2018-11-25] kvmlib now supports different image formats, e.g. qcow2

[2018-11-04] ipc.py demonstrates how to use POSIX / BSD IPC with Python

[2018-10-29] Updated guaca as guacamole on FreeBSD now expects the client and server configuration in different directories

[2018-10-28] Updated both my howtos on Upgrading PostgreSQL with pg_upgrade on FreeBSD and PostgreSQL with replication slots on FreeBSD as PostgreSQL 11 was released a couple of days ago

[2018-10-27]

[2018-10-14] mysql2oracle.pl copies an OTRS database from MySQL to Oracle

[2018-09-29] New version of Captcha.pm uses Digest::SHA instead of Digest::SHA1, as the former comes bundled with recent versions of Perl

[2018-09-22] Patches for libidn to support the German ligature ß updated to version 1.34

[2018-06-17] kvmlib now supports up to 10 network cards, a serial console, and shutdown of JunOS based devices via serial console

[2018-06-02] How to use dehydrated on FreeBSD to automatically get SSL certificates from Let's Encrypt

[2018-05-22] Minimal logging with Apache

[2018-05-05] pomavold 0.7 comes with a udev rules file

[2018-05-02] pomavold 0.6 prevents multiple instances per USB device

[2018-04-15]

[2018-04-08] released graypold-0.7

[2018-02-22] AuthFail version 2 for OTRS 6

[2018-02-07] Added a small section to kvmlib about booting from an iSCSI lun and passing a PCI device from the host to a guest

[2018-01-07] How to netboot and install NetBSD/sparc updated due to Meltdown and Spectre ;-)

[2017-11-12] Upgrading PostgreSQL with pg_upgrade on FreeBSD

[2017-11-05]

[2017-10-31] New release of ampcontrol allows you to adjust the volume in 5dB steps by simply clicking on the volume display

[2017-10-05]

[2017-09-25] watchdog.sh is a simple shell script for FreeBSD to demote local carp announcements if a daemon is not running

[2017-09-22] New version of check_tvh.py checks whether another instance is already running, and will exit if it has been running for 42 seconds

[2017-09-19] imapnotes is a Python script to read and write notes stored on an IMAPS server

[2017-09-03]

[2017-08-11] Latest kvmlib implements the restart commandline option in order to restart a virtual machine.

[2017-08-10] check_tvh.py checks and restarts webcamd and Tvheadend on FreeBSD

[2017-06-17] New version of ampcontrol fixes some issues with various browsers

[2017-05-21] licq-1.8.2.20170520.patch is a patch for licq 1.8.2 to build on a recent Gentoo Linux box

[2017-03-17] s3blkdev 0.10 fixes another bug where a not yet synced block could get deleted

[2017-03-15] s3blkdev 0.9 fixes a bug where a not yet synced block could get deleted

[2017-03-11] Monitoring sendmail with snmp on FreeBSD

[2017-03-05] Guacamole on FreeBSD, including adhoc sessions and the NoAuth extension

[2017-02-25] Backup restore on a NetScaler

[2017-02-18] AmpControl & ampcontrol are a Java application and a Node.js application, respectively, to control your Onkyo receiver or amplifier

[2017-02-12] OTRS modules and patches

[2017-02-04] NanoBSD for Raspberry Pi based on FreeBSD 11.0

[2017-02-02] Cacti and Fail2ban

[2017-01-22] Running CDE on FreeBSD on a Mac Mini

[2017-01-14] Captcha.pm is a simple Perl module providing CAPTCHA images and code checking

[2016-12-27]

[2016-12-25]

[2016-11-20] New version of kvmlib does not rely on netcat anymore, places pid files in /tmp (which should be a tmpfs residing in memory), and has more commandline options to terminate or kill intractable virtual machines.

[2016-10-29]

[2016-10-03] New version of kvmlib creates ethernet bridges and tap interfaces dynamically, i.e. no need to create them during system boot anymore

[2016-06-26] syswatch.pl now can not only send email when a log entry matches a (positive) pattern, but will ignore the entry when it matches a (negative) pattern. E.g. if your /usr/local/etc/syswatch.conf looks like this one:

ERROR
!ERROR debug
!ERROR test
faulty

Then syswatch.pl will send an email for each log entry that contains the word ERROR, but only if it's not followed by either debug or test, and for each log entry that contains the word faulty.

[2016-05-29] Redundant ethernet bridge with FreeBSD and tinc

[2016-05-08]

[2016-04-17]

[2016-03-30] Adding custom MIBs to SNMP

[2016-03-21] Huawei E392 USB LTE modem on FreeBSD

[2016-01-30] s3blkdev 0.6 comes with an HTML frontend based on Node.js. Here's a screenshot.

[2016-01-17] freebsd-update with a custom kernel

[2016-01-10]

[2016-01-03]

[2015-12-14]

[2015-10-24] Version 0.2 of s3blkdev:

[2015-10-03] s3blkdev is a gateway between S3 compatible storages and Linux network block devices (NBD)

[2015-09-05]

[2015-07-04]

[2015-06-22] Advanced TCP Bandwidth Calculator shows why a single TCP connection almost never saturates a data link

[2015-06-21] adpasswd.php shows how to change your active directory password with PHP

[2015-06-07] OpenVPN routing with BIRD on FreeBSD

[2015-06-04] mksnapback creates and deletes filesystem snapshots on FreeBSD during system boot and shutdown

[2015-05-25] minicom.scpt launches minicom (or any other console program) like a normal Mac OS X application

[2015-05-17]

[2015-05-02]

[2015-04-13]

[2015-04-12]

[2015-04-06] A few things I came across while setting up sslh in transparent mode on FreeBSD

[2015-01-04]

[2014-12-24] Bandnudel V0.3 fixes a tiny bug (minutes vs. seconds) and is a small code cleanup

[2014-12-21] How to create a bootable USB flash drive to install VMware ESXi 5.5 from

[2014-12-09] Both AugTV 0.0.0.8 and graypold 0.6 fix signal handling issues, plus graypold 0.6 fixes two MySQL related issues

[2014-12-07] graypold 0.5 is an almost complete rewrite of my graylisting daemon. There's no blackwhite list anymore as one can easily achieve that functionality with Postfix lookup tables. Mail sent by SASL authenticated users now can open the graylisting for mails sent in the opposite direction. Thus, when an authenticated user sends an email, the reply will be delivered immediately. And by using different local unix sockets, a Postfix admin can now decide whether (s)he wants only graylisting, mail counting, SASL graylisting bypassing, or any combination of those there functions.

[2014-12-06] AugTV 0.0.0.7 no longer comes with a cgi script and thus does not depend on a webserver and any sudo rules for osascript. Instead, I wrote a nice helper app called augtvd.app which contains a small webserver written in Perl and the reminders of the old cgi script.

[2014-11-27] Looking for VMware tools for FreeBSD 10.1? Grab the ones which come bundled with ESXi 5.5U2!

[2014-11-22] Is Firefox moaning Getting printer information failed when you try to print to a network printer? Make sure that you have the correct PPD file in /etc/cups/ppd and that it has the same name as your local printer queue.

[2014-09-12] Let FreeBSD's inetd listen on a Unix socket

[2014-08-20]

[2014-08-10] You might want to use vmrun2.sh or vmrun3.sh in order to start Ubuntu 14.04 server or CentOS 7 virtual machines, respectively, on a recent FreeBSD with bhyve installed.

[2014-07-25]

[2014-07-20] openvpn.ovpn is an OpenVPN connection profile template and may be of help if you run OpenVPN on your mobile phone or tablet

[2014-07-12] ftp6proxy is an IPv6 (and IPv4) ftp proxy for FreeBSD based firewalls. In contrast to ftp-proxy and libalias/natd/ppp, it doesn't support NAT or rewrite packets. It just temporarily opens the firewall to pass through the data channel.

[2014-07-02] Released version 0.2 of tcpoptd which you can use to modify tcp header options. It now supports IPv6.

[2014-06-28] How to delete an ipfw rule on FreeBSD using Perl, e.g. firewall rule #2342:

use Socket qw(:all);

my $IP_FW_DEL = 51;
my $rule_num = 2342;

socket(my $ipfw_sock, AF_INET, SOCK_RAW, IPPROTO_RAW) or die $!;
setsockopt($ipfw_sock, IPPROTO_IP, $IP_FW_DEL, $rule_num) or die $!;

[2014-05-31] TightVNC moans "Rect too large"? Replace it by TigerVNC and launch vncviewer with parameter "-AutoSelect=0"!

[2014-05-29] How to update OTRS on FreeBSD

[2014-05-04]

[2014-04-29] NanoBSD for Raspberry PI

[2014-03-24] How I unbricked my WRT610N with OpenWRT

[2014-02-19] If you use GD with Perl, but getting an error like libgd 2.0.33 or higher required for copyRotated support, then apply patch-Makefile.PL to Makefile.PL and recompile GD. See also my post on the freebsd-perl mailing list.

[2014-02-15] VMware Tools on FreeBSD 10

[2014-02-09] You might want to use vmrun.sh in order to start Gentoo Linux virtual machines on a recent FreeBSD with bhyve installed. This is a slightly modified version of the shell script normally found in /usr/share/examples/bhyve. See also this related post.

[2014-01-19] Added a wlan card and two antennas to my NanoBSD router, uploaded some pictures and new config files

[2014-01-12] kvmlib is a shell script I use to start and stop KVM based virtual machines

[2014-01-02] If avahi-daemon sporadically exits with an error like "poll(): Invalid argument", then put patch-avahi-common_simple-watch.c into /usr/ports/net/avahi-app/files on your FreeBSD box and reinstall avahi. See also

[2013-12-22] Building a FreeBSD backup server for Time Machine and Linux boxes

[2013-12-14] Printing on Gentoo is a short howto that features all the good stuff: avahi, dbus, cups, and a Mac :-)

[2013-12-07]

[2013-12-03]

[2013-12-02] graypold 0.4 writes a syslog entry for every mail so that Fail2ban can ban an IP address for sending too many mails

[2013-11-27] released version 0.3 of my graylisting daemon graypold which now can count mails and recipients

[2013-11-09] Updated How to install FreeBSD on a Raspberry Pi (bcm2835-rpi-b.dts and thus bcm2835-rpi-b.dtb were renamed to rpi.dts and rpi.dtb, respectively, added DB_FROM_SRC=1 to make distribution; thanks Derek!)

[2013-11-03] How to resize an UFS2 filesystem on FreeBSD

[2013-11-01] How to update a FreeBSD system (see also)

[2013-10-26] NanoBSD: config files and description of my DSL router

[2013-10-23] Slave root zone and forward zones with Bind might not work as expected

[2013-10-19] How to solve missing icons and symbols on Mac OS X

[2013-10-14] AugTV 0.0.0.5 fixes a small bug and exports playlists (*.m3u) for all your movies and music

[2013-10-05]

[2013-10-03] Uploaded some additional pictures

[2013-09-23] rmks.py proxies a vnc connection to the console of virtual machine running on a VMware ESXi 5.x host

[2013-08-24] How to create a key and a self-signed certificate in one step without being prompted for any questions using OpenSSL, e.g. for a host called host.domain.tld:

openssl req -new -x509 -batch -days 3650 -newkey rsa:2048 -nodes -subj /CN=host.domain.tld -keyout host.domain.tld.key.pem -out host.domain.tld.cer.pem

[2013-08-13] Python with mod_wsgi

[2013-07-07]

[2013-06-29] Set up two special purpose virtual hosts:

[2013-05-31] Updated my FreeBSD WAN simulator howto

[2013-05-19] How to setup Tagged VLANs on Mac OS X

[2013-05-18]

[2013-05-08] On FreeBSD, the man page of ipfw isn't very specific about the syntax of a dummynet pipe when it comes to the mask and src-ip/src-ip6/dst-ip/dst-ip6 parameters. As long as you stick to IPv4, you have two equivalent options:

pipe 1 config mask src-ip 0xffffff00 bw 23KBit/s ...

and

pipe 1 config mask src-ip /24 bw 23KBit/s ...

If you're limiting IPv6 traffic, you should use the latter variant only:

pipe 2 config mask dst-ip6 /64 bw 42KBit/s ...

Internally, the variable which holds the value of src-ip/src-ip6/dst-ip/dst-ip6 is an unsigned 32 bits integer, which overflows and yields an error if given anything larger than 0xffffffff.

[2013-05-05] Added PostgreSQL to my FreeBSD package repository for Raspberry Pi

[2013-04-27] How to build a simple FreeBSD WAN simulator

[2013-04-06] tcpoptd modifies TCP header options

[2013-04-01] Seems as if VMware Fusion (when network is set to NAT/PAT mode aka "Share with my Mac") completely rewrites the TCP header. At least TCP header options and source port always get re-arranged and overwritten, while unknown header options are removed.

[2013-03-24] mdnsproxy forwards multicast DNS requests to unicast DNS servers

[2013-02-28] How to build a BGP looking glass with OpenBSD

[2013-02-04] Uploaded some FreeBSD packages for a Raspberry Pi which I compiled from a fresh ports' checkout on FreeBSD 10.0-CURRENT

[2013-02-01] Updated How to install FreeBSD on a Raspberry Pi once again (enabled procfs, vlan, and ipfw)

[2013-01-31] Updated How to install FreeBSD on a Raspberry Pi (enabled devd in /etc/rc.conf, corrected pathes in steps 26 and 27, added /etc/localtime)

[2013-01-27] pomavold 0.4 let you specify a timeout it waits for before accessing devices.

[2013-01-25] How to install FreeBSD on a Raspberry Pi

[2013-01-06] How to netboot and install NetBSD/sparc, a spin-off of a short discussion on G+

[2012-12-19] How to build NVidia drivers 304.64 for Linux 3.7.x on a 64-bit Gentoo box:

  1. mkdir -p /etc/portage/patches/x11-drivers/nvidia-drivers-304.64
  2. download http://www.lwfinger.com/nvidia_patches/patch_nvidia_304_60.run_for_3.7
  3. rename patch_nvidia_304_60.run_for_3.7 to patch_nvidia_304_60.run_for_3.7.patch
  4. move patch_nvidia_304_60.run_for_3.7.patch into /etc/portage/patches/x11-drivers/nvidia-drivers-304.64
  5. emerge nvidia-drivers

[2012-12-18] David Doll found a typo in my VMware Tools on FreeBSD 9 howto

[2012-11-23]

[2012-10-29] What a productive weekend - publicating all the stuff that has piled up over the past few weeks: clucp is a copy tool for Corosync clusters

[2012-10-28]

[2012-10-27] howto build Percona on FreeBSD

[2012-10-24] pomavold 0.3 doesn't dim the light if you just mute the left (=mono) channel

[2012-10-20] pomavold 0.2 doesn't die if a mixer hasn't a mute button and takes into account that light intensity of a PowerMate isn't linear

[2012-10-08] fproxy 0.6 doesn't die if

[2012-09-05] Updated Block allocation strategies of various filesystems as I did some tests on NTFS, too.

[2012-09-04] Block allocation strategies of various filesystems

[2012-09-02]

[2012-09-01] Fun with sparse files

[2012-08-13] pomavold lets you control the volume of your soundcard with a Griffin PowerMate

[2012-08-05] VMware Tools on FreeBSD 9 (updated the howto, not the patches)

[2012-07-15]

[2012-06-26] fproxy 0.5: new commandline option -d, 2-clause BSD license applied

[2012-05-20] VMware Tools on FreeBSD 9

[2012-05-11] How to read the Windows eventlog (warning, source code included)

[2012-02-19] Updated finitrd, my ramdisk for Linux systems that have their root partition inside an LVM volume. The ramdisk uses ext4 by default now.

[2012-02-18] Updated after 4 years: graypold (part of my Postfix policy daemons) is now IPv6 ready. Added an improved rc script for FreeBSD, too.

[2012-01-15] fproxy 0.41 - just a code cleanup

[2011-12-28] Simple DVD authoring on Linux

[2011-11-29] Removed ipv6.ogris.de and its 6to4 address. Published a real IPv6 address for www.ogris.de and ogris.de

[2011-11-06]

[2011-08-14] xmlrpc.pl el-cheapo XML-RPC with Perl and xinetd - don't try this in a hostile environment

[2011-08-05] How to join Unix-like systems to an Active Directory

[2011-08-01] Some thoughts about splice() on Linux

[2011-07-31] Updated after 4 years: fproxy 0.4 comes with a bugfix and an enhanced log format

[2011-07-07] Uploaded a CORBA howto which shows my experience with several ORBs

[2011-03-21] Got some strange error like input must be 8 bytes long at /usr/local/lib/perl5/site_perl/5.10.1/mach/Crypt/DES.pm line 59 with Perl's Net::SSH::Perl? Try my patch for DES.pm. It inserts a utf8::downgrade($data); in encrypt() and decrypt() along with a use utf8;.

[2011-03-21] I wrote a small server in C# that creates a thread for each connection. It looks like this:

TcpClient client = tcpListener.AcceptTcpClient();
MyHandler handler = new MyHandler(client);
Thread thread = new Thread(handler.Run);
thread.IsBackground = true;
thread.Start();

After it served some clients, I noticed in the Task Manager that it consumes several hundreds of RAM, holds thousands of handles, but only runs 15 threads. The Process Explorer revealed that these handles are thread handles. Turns out that you have to call thread.Abort() explicitly to get rid of those handles. So I added the following:

foreach (Thread t in allThreads) {
  if (!t.IsAlive) {
    t.Abort();
  }
}

This is different from Java where a threads terminates as soon as its run() method returns. Of course I could use System.Threading.ThreadPool. But then I don't know which threads are currently running unless I track each instance of MyHandler. For that I would have to extend the MyHandler class:

class MyHandler {
  private bool _running = true;

  public void Run() {
    try {
      ...
    } finally {
      _running = false;
    }
  }

  public bool Running { get { return _running; } }
}

I don't like both of these approaches.

[2011-01-30] On my workstation at home I sometimes use qemu-kvm to start a virtualized Windows XP. For my personal reference I uploaded my qemu-wxp.sh and tun.sh shell scripts. Put the later one in /usr/local/libexec.

[2011-01-06] updated my short howto on IPv6, added a section called Impact on home networks

[2011-01-02] short howto on IPv6

[2011-01-01] IPv6 is here! See http://ipv6.ogris.de. Same stuff, different protocol. Magic!

[2010-11-28] With FreeBSD 8.1 running in VirtualBox, Jonsen Yang discovered that my patch for CARP IP loadbalancing panics the kernel. So I setup a VirtualBox on my Mac Mini, recompiled the kernel with options WITNESS, and encountered some non-sleepable locks being held. Here is an adjusted patch.

[2010-11-11] smtppipe version 0.21 fixes an embarrassing bug

[2010-11-01] uploaded two patches against Libidn 1.16 to support the German ligature ß (sharp s, unicode codepoint 0x00df) as part of IDNA2008 or IDNA-bis.
Put both files into /usr/ports/dns/libidn/files on your FreeBSD box and do a portupgrade -f libidn

[2010-10-30]

[2010-09-20] Note to self:

[2010-07-01] The beauty of FreeBSD. Today: Fibre Channel and Multipathing

That's it. Works out of the box.

[2010-06-19] updated my patch for carp ip loadbalancing to build on FreeBSD 8.0

[2010-06-13] released AugTV, a plugin for TV-Browser to schedule recordings on EyeTV

[2010-06-12] released AmpControl, a small Java application to control your Onkyo receiver or amplifier

[2010-06-07] registered the domain ogr.is

[2010-05-16] wrote a howto about WANem hard disc install & bridge setup

[2010-04-11]

[2010-04-03] some selected photos I took