<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Interrupt-Driven</title>
	<atom:link href="http://www.meerkoetter.org/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.meerkoetter.org/wp</link>
	<description>Personal weblog of Frank Meerkötter</description>
	<lastBuildDate>Mon, 08 Nov 2010 20:41:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Meego &#8211; a first stroll</title>
		<link>http://www.meerkoetter.org/wp/2010/10/30/meego-processes/</link>
		<comments>http://www.meerkoetter.org/wp/2010/10/30/meego-processes/#comments</comments>
		<pubDate>Sat, 30 Oct 2010 18:12:51 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[meego]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=239</guid>
		<description><![CDATA[I was curious about the current state of MeeGo so i decided to have a look at the handset image that was released last Monday (v1.1). The image can be run inside QEMU or inside a chroot environment using Xephyr. &#8230; <a href="http://www.meerkoetter.org/wp/2010/10/30/meego-processes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was curious about the current state of <a href="http://meego.com/">MeeGo</a> so i decided to have a look at the handset image that was released last Monday (v1.1). The image can be run inside QEMU or inside a chroot environment using Xephyr. I decided to go with the QEMU solution.<br />
The setup is outlined here: <a href="http://wiki.meego.com/MeeGo_SDK_with_QEMU">wiki.meego.com/MeeGo_SDK_with_QEMU</a>.</p>
<p>When QEMU is running, the emulated system can be accessed by SSH. So lets see what processes make up a Meego system (i have added some annotations; <em>standard</em> marks processes also found on a typical linux desktop).</p>
<p><code><br />
[meego@localhost ~]$ ps -Hef<br />
UID        PID  PPID  C STIME TTY          TIME CMD<br />
<strong># various kernel threads</strong><br />
root         2     0  0 07:53 ?        00:00:00 [kthreadd]<br />
root         3     2  0 07:53 ?        00:00:00   [ksoftirqd/0]<br />
root         4     2  0 07:53 ?        00:00:00   [migration/0]<br />
root         5     2  0 07:53 ?        00:00:00   [watchdog/0]<br />
root         6     2  0 07:53 ?        00:00:00   [events/0]<br />
root         7     2  0 07:53 ?        00:00:00   [khelper]<br />
root         8     2  0 07:53 ?        00:00:00   [async/mgr]<br />
root         9     2  0 07:53 ?        00:00:00   [pm]<br />
root        10     2  0 07:53 ?        00:00:00   [sync_supers]<br />
root        11     2  0 07:53 ?        00:00:00   [bdi-default]<br />
root        12     2  0 07:53 ?        00:00:00   [kblockd/0]<br />
root        13     2  0 07:53 ?        00:00:00   [kacpid]<br />
root        14     2  0 07:53 ?        00:00:00   [kacpi_notify]<br />
root        15     2  0 07:53 ?        00:00:00   [kacpi_hotplug]<br />
root        16     2  0 07:53 ?        00:00:00   [ata_aux]<br />
root        17     2  0 07:53 ?        00:00:00   [ata_sff/0]<br />
root        18     2  0 07:53 ?        00:00:00   [khubd]<br />
root        19     2  0 07:53 ?        00:00:00   [kseriod]<br />
root        20     2  0 07:53 ?        00:00:00   [kmmcd]<br />
root        21     2  0 07:53 ?        00:00:00   [cfg80211]<br />
root        22     2  0 07:53 ?        00:00:00   [kondemand/0]<br />
root        23     2  0 07:53 ?        00:00:00   [kswapd0]<br />
root        24     2  0 07:53 ?        00:00:00   [aio/0]<br />
root        25     2  0 07:53 ?        00:00:00   [crypto/0]<br />
root        33     2  0 07:53 ?        00:00:00   [scsi_eh_0]<br />
root        34     2  0 07:53 ?        00:00:00   [scsi_eh_1]<br />
root        37     2  0 07:53 ?        00:00:00   [kpsmoused]<br />
root        38     2  0 07:53 ?        00:00:00   [usbhid_resumer]<br />
root        39     2  0 07:53 ?        00:00:00   [l2cap]<br />
root        40     2  0 07:53 ?        00:00:00   [krfcommd]<br />
root        42     2  0 07:53 ?        00:00:00   [kjournald]<br />
root        69     2  0 07:53 ?        00:00:00   [flush-8:0]<br />
<strong># the init process, sysvinit-2.86 (standard)</strong><br />
root         1     0  0 07:53 ?        00:00:00 init [5]<br />
<strong># hotplug support (standard)</strong><br />
root        72     1  0 07:53 ?        00:00:00   /sbin/udevd -d<br />
<strong># system instance of the dbus-daemon, broadcasts system events (standard)</strong><br />
dbus       256     1  0 07:53 ?        00:00:00   dbus-daemon --system --fork<br />
<strong># network connection management, see <a href="http://connman.net/">http://connman.net/</a></strong><br />
root       273     1  0 07:53 ?        00:00:00   /usr/sbin/connmand -W nl80211,wext<br />
<strong># access to hw sensors</strong><br />
root       275     1  0 07:53 ?        00:00:00   /usr/sbin/sensord<br />
<strong># <a href="http://meego.gitorious.org/meego-middleware/timed/">http://meego.gitorious.org/meego-middleware/timed/</a></strong><br />
root       279     1  0 07:53 ?        00:00:00   /usr/bin/timed<br />
<strong># system and kernel logging (standard)</strong><br />
root       281     1  0 07:53 ?        00:00:00   /sbin/syslogd -m 0<br />
root       287     1  0 07:53 ?        00:00:00   /sbin/klogd -x<br />
<strong># wifi connection management (standard)</strong><br />
root       293     1  0 07:53 ?        00:00:00   /sbin/wpa_supplicant -u<br />
<strong># ACPID events (standard)</strong><br />
root       297     1  0 07:53 ?        00:00:00   /usr/sbin/acpid<br />
<strong># the ssh session i am currently using</strong><br />
root       308     1  0 07:53 ?        00:00:00   /usr/sbin/sshd<br />
root       513   308  0 07:54 ?        00:00:00     sshd: meego [priv]<br />
meego      515   513  0 07:54 ?        00:00:00       sshd: meego@pts/0<br />
meego      516   515  0 07:54 pts/0    00:00:00         -bash<br />
meego      923   516  0 08:06 pts/0    00:00:00           ps -feH<br />
root       314     1  0 07:53 tty1     00:00:00   /sbin/mingetty --noclear tty1<br />
root       316     1  0 07:53 ttyS0    00:00:00   /sbin/agetty -L 115200 ttyS0 vt100<br />
<strong># bonjour/zeroconf service discovery (standard)</strong><br />
avahi      322     1  0 07:53 ?        00:00:00   avahi-daemon: running [linux.local]<br />
avahi      323   322  0 07:53 ?        00:00:00     avahi-daemon: chroot helper<br />
<strong># telephony support <a href="http://ofono.org">http://ofono.org</a></strong><br />
root       328     1  0 07:53 ?        00:00:00   /usr/sbin/ofonod<br />
<strong># bluetooth device management (standard)</strong><br />
root       338     1  0 07:53 ?        00:00:00   /usr/sbin/bluetoothd<br />
<strong># user/session handling <a href="http://www.freedesktop.org/wiki/Software/ConsoleKit">http://www.freedesktop.org/wiki/Software/ConsoleKit</a> (standard)<br />
</strong><br />
root       352     1  0 07:53 ?        00:00:00   /usr/sbin/console-kit-daemon --no-daemon<br />
<strong># power management (standard)</strong><br />
root       448     1  0 07:54 ?        00:00:00   /usr/libexec/upowerd<br />
<strong># GPS, multiplexes the access to a GPS device</strong><br />
root       495     1  0 07:54 ?        00:00:00   /usr/libexec/gypsy-daemon --no-daemon<br />
<strong># X session launch utility</strong><br />
meego      741     1  0 07:57 ?        00:00:00   uxlaunch<br />
root       743   741  0 07:57 ?        00:00:00     uxlaunch<br />
<strong># xserver (standard)</strong><br />
root       760   741  1 07:57 tty2     00:00:09     /usr/bin/Xorg :0 -nolisten tcp -dpi 120 -noreset<br />
meego      772   741  1 07:57 ?        00:00:06     /usr/bin/mcompositor<br />
meego      775   741  0 07:57 ?        00:00:00     /usr/bin/mthemedaemon<br />
<strong># the applaunchd helps to start applications faster with the help of boosters<br />
# <a href="http://apidocs.meego.com/mtf/launcher.html">http://apidocs.meego.com/mtf/launcher.html</a></strong><br />
meego      776   741  0 07:57 ?        00:00:00     /usr/bin/applauncherd.bin<br />
<strong># boosters are pre-forked processes that are already initialized to some degree.<br />
# if an app is started they load the app and start is main() function. </strong><br />
meego      788   776  0 07:57 ?        00:00:00       booster-m<br />
meego      789   776  0 07:57 ?        00:00:00       booster-q<br />
<strong># handles prestarted applications <a href="http://apidocs.meego.com/mtf/prestart.html">http://apidocs.meego.com/mtf/prestart.html</a>     </strong><br />
meego      777   741  0 07:57 ?        00:00:00     /usr/bin/applifed<br />
meego      778   741  0 07:57 ?        00:00:00     /usr/bin/mdecorator -remote-theme<br />
<strong># input method</strong><br />
meego      779   741  0 07:57 ?        00:00:01     /usr/bin/meego-im-uiserver -remote-theme<br />
<strong># input feedback deamon (audio/vibra) <a href="http://apidocs.meego.com/mtf/input_feedback.html">http://apidocs.meego.com/mtf/input_feedback.html</a></strong><br />
meego      780   741  0 07:57 ?        00:00:00     /usr/bin/meegofeedbackd<br />
meego      781   741  0 07:57 ?        00:00:01     /usr/bin/sysuid -remote-theme<br />
<strong># dui => direct ui homescreen</strong><br />
meego      782   741  2 07:57 ?        00:00:15     /usr/bin/duihome --desktop -remote-theme<br />
<strong># QMF, process doing mail handling</strong><br />
meego      784   741  0 07:57 ?        00:00:00     /usr/bin/messageserver<br />
meego      798   784  0 07:57 ?        00:00:00       [messageserver] <defunct><br />
<strong># crash handling</strong><br />
meego      785   741  0 07:57 ?        00:00:00     corewatcher-applet<br />
<strong># filesystem crawler</strong><br />
meego      786   741  0 07:57 ?        00:00:00     /usr/libexec/tracker-miner-fs<br />
meego      762     1  0 07:57 ?        00:00:00   /usr/bin/ssh-agent<br />
<strong># user session instance of the dbus daemon, used for application IPC</strong><br />
meego      766     1  0 07:57 ?        00:00:00   dbus-daemon --fork --session --print-pid 9 --print<br />
<strong># user configuration, notifies apps about configuration changes (standard)</strong><br />
meego      769     1  0 07:57 ?        00:00:00   /usr/libexec/gconfd-2<br />
<strong># phone simulation, part of oFono</strong><br />
meego      793     1  0 07:57 ?        00:00:00   phonesim -p 12345 /usr/share/phonesim/default.xml<br />
<strong># system indexing, database daemon (standard)</strong><br />
meego      806     1  0 07:57 ?        00:00:00   /usr/libexec/tracker-store<br />
<strong># photo app that i've started earlier</strong><br />
meego      834     1  4 07:58 ?        00:00:18   meegophotos<br />
<strong># thumbnail service</strong><br />
meego      839     1  0 07:58 ?        00:00:03   /usr/libexec/tumblerd<br />
</code></p>
<p>What really surprised me is how much this system is like a linux desktop. Its using X, a full libc, the standard utilities, dbus etc&#8230; No stripped down libc, no busybox and no framebuffer. On one hand I quite like this but on the other I wonder how this translates to firmware size and memory consumption?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2010/10/30/meego-processes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu: headless install traps</title>
		<link>http://www.meerkoetter.org/wp/2010/10/27/ubuntu-headless-install-traps/</link>
		<comments>http://www.meerkoetter.org/wp/2010/10/27/ubuntu-headless-install-traps/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 03:28:12 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=237</guid>
		<description><![CDATA[Ubuntu can be installed headless using a serial console. A number of people have documented how to do it (for example http://zensonic.dk/?p=264). The theory looks simple, but in practice there are a few traps that can be really frustrating. I&#8217;ve &#8230; <a href="http://www.meerkoetter.org/wp/2010/10/27/ubuntu-headless-install-traps/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ubuntu can be installed headless using a serial console. A number of people have documented how to do it (for example <a href="http://zensonic.dk/?p=264">http://zensonic.dk/?p=264</a>). The theory looks simple, but in practice there are a few traps that can be really frustrating.</p>
<ul>
<li>I&#8217;ve encountered a BIOS where the support for &#8220;keyboard USB legacy&#8221; was disabled by default. This prevented me from interacting with the installer. Using a PS2 keyboard (or an USB/PS2 adapter) might be something to try.</li>
<li>Make sure your serial cable is really a <a href="http://en.wikipedia.org/wiki/Null_modem">null modem.</a></li>
<li>Remember that when you change the console parameter to the kernel, the keyboard layout is english. Typing &#8220;console=ttyS0,115200n8 &#8211;&#8221; on your localized keyboard might result in something unexpected.</li>
<li>Try to boot into the installer with the least number of bootable devices attached. I&#8217;ve encounted problems with a fresh CF-card that had an empty partition that was marked bootable. The BIOS selected it instead of the USB-stick with the Ubuntu installer.</li>
<li>If you know that the BIOS is booting the wrong device you might be able to blindly change the boot-order. Many BIOS have a &#8220;quick boot selection&#8221; feature.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2010/10/27/ubuntu-headless-install-traps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Podcasts: Scott Meyers on C++0x/Johan Bezem on Misra</title>
		<link>http://www.meerkoetter.org/wp/2010/08/06/podcasts-scott-meyers-on-c0xjohan-bezem-on-misra/</link>
		<comments>http://www.meerkoetter.org/wp/2010/08/06/podcasts-scott-meyers-on-c0xjohan-bezem-on-misra/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 22:26:29 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[C++0x]]></category>
		<category><![CDATA[Podcast]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=233</guid>
		<description><![CDATA[Software Engineering radio recently had two episodes which are of particular interest to the C/C++ developer. First Scott Meyers gives a nice high-level overview on the features of the upcoming C++0x standard covering Lambda expressions, Uniform initialization, Initializer lists, threading &#8230; <a href="http://www.meerkoetter.org/wp/2010/08/06/podcasts-scott-meyers-on-c0xjohan-bezem-on-misra/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.se-radio.net/">Software Engineering radio</a> recently had two episodes which are of particular interest to the C/C++ developer.</p>
<p>First <a href="http://www.aristeia.com/">Scott Meyers</a> gives a nice high-level overview on the features of the upcoming C++0x standard covering Lambda expressions, Uniform initialization, Initializer lists, threading and Variadic templates amongst others. Wikipedia has a good <a href="https://secure.wikimedia.org/wikipedia/en/wiki/C%2B%2B0x">article</a> covering C++0x in more detail. The episode is quite entertaining not only because Scott is a good speaker but also because Markus, the host of the podcast (a Java-guy), apparently has several C++WTF moments. <a href="http://www.se-radio.net/2010/04/episode-159-c-0x-with-scott-meyers/">Link &#8211; Episode 159 C++0x</a>.</p>
<p>The second episode is with Johan Bezem who is talking about <a href="http://www.misra.org.uk/">MISRA</a> which is a set of guidelines for C/C++ development promoting safety and reliability. MISRA was developed and still is mainly in use in the automotive industry. To be frank the episode isn&#8217;t as entertaining as the one with Scott but i finished it because it provides an interesting perspective on C development for small/deeply embedded systems. <a href="http://www.se-radio.net/2009/12/episode-152-misra-with-johan-bezem/">Link &#8211; Episode 152 MISRA</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2010/08/06/podcasts-scott-meyers-on-c0xjohan-bezem-on-misra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse CDT language mappings</title>
		<link>http://www.meerkoetter.org/wp/2009/10/31/eclipse-cdt-language-mappings/</link>
		<comments>http://www.meerkoetter.org/wp/2009/10/31/eclipse-cdt-language-mappings/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 17:38:18 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=225</guid>
		<description><![CDATA[Eclipse/CDT fails to parse some file? You don&#8221;t see anything wrong with it, neither does the compiler? Still CDT underlines parts or all of a file to mark a parse error? The most probable cause is that your file has &#8230; <a href="http://www.meerkoetter.org/wp/2009/10/31/eclipse-cdt-language-mappings/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Eclipse/CDT fails to parse some file? You don&#8221;t see anything wrong with it, neither does the compiler? Still CDT underlines parts or all of a file to mark a parse error? The most probable cause is that your file has a file extension that CDT associates with the C language, but it contains some bits of C++.</p>
<p>To solve this problem the CDT offers a feature called language mapping which allows you to override the default for a given file type. This can be done for a single file, for the project or for the whole workspace.</p>
<p>For a single file, right click on a file in the project browser -> select Properties -> C/C++ General -> Language Mappings. The dialog also offers some shortcut to do it on project or workspace level.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2009/10/31/eclipse-cdt-language-mappings/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Integrating the NetworkManager with aiccu</title>
		<link>http://www.meerkoetter.org/wp/2009/10/26/integrating-the-networkmanager-with-aiccu/</link>
		<comments>http://www.meerkoetter.org/wp/2009/10/26/integrating-the-networkmanager-with-aiccu/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 19:55:36 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=228</guid>
		<description><![CDATA[I am using the service of SixXS to connect my laptop with the IPv6 internet. They provide an utility called aiccu to setup the tunnel. Getting it to work is really painless. Just do an &#8220;apt-get install aiccu&#8221;, configure your &#8230; <a href="http://www.meerkoetter.org/wp/2009/10/26/integrating-the-networkmanager-with-aiccu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am using the service of <a href="http://www.sixxs.net/">SixXS</a> to connect my laptop with the IPv6 internet. They provide an utility called aiccu to setup the tunnel. Getting it to work is really painless. Just do an &#8220;apt-get install aiccu&#8221;, configure your SixXS username and password and your done.</p>
<p>The aiccu package provides a traditional startup script which is placed in /etc/init.d and is added to the different run levels. Files on the different levels are executed in alphabetical order. The name of the aiccu script ensures that it is run after the network has been brought up. So as long as the networking on your system is statically configured through /etc/network/interfaces everything is fine.</p>
<p>Unfortunately i am (as most probably other desktop users also) using the NetworkManager to handle my network connections. This means that at the time that the aiccu startup script is run there is no network available which will make the tunnel setup fail.</p>
<p>What i would like to do is to run the aiccu script every time the NetworkManager has established a connection so that the tunnel is re-established. Fortunately NetworkManager provides a way to do this. It will run (in alphabetical order) all the scripts placed in /etc/NetworkManager/dispatcher.d/. The scripts are passed two variables, the interface name and if it is going up or down. The scripts are run as root.</p>
<p>Copy this script to /etc/NetworkManager/dispatcher.d/99aiccu to integrate aiccu with the NetworkManager. It should work with KDE and Gnome.</p>
<p><code><br />
#!/bin/bash</p>
<p>IF=$1<br />
ACTION=$2</p>
<p>if [ "$ACTION" == "up" ]; then<br />
  /etc/init.d/aiccu restart<br />
fi</p>
<p>if [ "$ACTION" == "down" ]; then<br />
  /etc/init.d/aiccu stop<br />
fi<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2009/10/26/integrating-the-networkmanager-with-aiccu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Kubuntu 9.10 DNS/network troubles</title>
		<link>http://www.meerkoetter.org/wp/2009/10/26/kubuntu-910-dnsnetwork-troubles/</link>
		<comments>http://www.meerkoetter.org/wp/2009/10/26/kubuntu-910-dnsnetwork-troubles/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 23:22:41 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=226</guid>
		<description><![CDATA[After installing Kubuntu 9.10 RC1 networking became kind of flaky. It somehow worked but everything was slow and unpredictable. It was most visible while browsing the web. Some pages where loading for ages (5+ minutes), some never finishing to load &#8230; <a href="http://www.meerkoetter.org/wp/2009/10/26/kubuntu-910-dnsnetwork-troubles/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After installing Kubuntu 9.10 RC1 networking became kind of flaky. It somehow worked but everything was slow and unpredictable. It was most visible while browsing the web. Some pages where loading for ages (5+ minutes), some never finishing to load at all while others were just fine after some initial delay. This problem was not only visible in firefox but also in konqueror.</p>
<p>I started wireshark to have a look on what was actually going on. It showed that my computer was sending DNS queries to my local DSL router (SpeedPort W303V; an ISP provided blackbox). This DSL router also works as a local DNS-cache which it is advertising via DHCP. This explains why the DNS queries are sent to the DSL router. The traffic log showed further that requests for A records (IPv4) were properly answered but requests asking for AAAA records (IPv6) were never blessed with a reply. The missing answer was triggering some retry mechanism which was resending the AAAA record request a few times. Only after this mechanism timed out, the browser was actually starting to load a page.</p>
<p>This nicely explains why some pages were loading fine after some initial delay (all content on one server) while others were loading forever (complex sites were a lot of addresses need to be resolved to load all content). It also explains why firefox and konqueror were both affected, DNS resolving is typically handled by the libc.</p>
<p>The DNS cache in my DSL router is apparently not handling requests for IPv6 address records. So far i was not able to figure out what exactly has changed between Kubuntu 9.04 and 9.10. Just replacing the /etc/resolv.conf with a version pointing to an external DNS server solved the problem for now.</p>
<p>Apart from that Kubuntu 9.10 looks very promising. A lot of the KDE4 problems which plagued me in 9.04 are gone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2009/10/26/kubuntu-910-dnsnetwork-troubles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding new sites to the eclipse updater &#8220;hangs&#8221;</title>
		<link>http://www.meerkoetter.org/wp/2009/03/19/adding-new-sites-to-the-eclipse-updater-hangs/</link>
		<comments>http://www.meerkoetter.org/wp/2009/03/19/adding-new-sites-to-the-eclipse-updater-hangs/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 23:10:15 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=208</guid>
		<description><![CDATA[Just for the record: If adding a new site to your eclipse updater seems to hang/times out (entry is always &#8220;pending&#8230;&#8221;), its most probably not a problem with the update site itself but rather some firewall interfering. Make sure you &#8230; <a href="http://www.meerkoetter.org/wp/2009/03/19/adding-new-sites-to-the-eclipse-updater-hangs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Just for the record: If adding a new site to your eclipse updater seems to hang/times out (entry is always &#8220;pending&#8230;&#8221;), its most probably not a problem with the update site itself but rather some firewall interfering. Make sure you have setup the appropriate proxies in eclipse (Window->Preferences->General->Network Connection).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2009/03/19/adding-new-sites-to-the-eclipse-updater-hangs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing a gcc4.4 snapshot on Ubuntu</title>
		<link>http://www.meerkoetter.org/wp/2009/03/08/installing-a-gcc44-snapshot-on-ubuntu/</link>
		<comments>http://www.meerkoetter.org/wp/2009/03/08/installing-a-gcc44-snapshot-on-ubuntu/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 20:44:42 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[C++0x]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=198</guid>
		<description><![CDATA[The upcoming gcc4.4 release adds a few more C++0x features (initializer lists, auto typed variables, defaulted and deleted functions, strongly typed enums, &#8230;) to the in this regard still very incomplete g++. To be able to play with it one &#8230; <a href="http://www.meerkoetter.org/wp/2009/03/08/installing-a-gcc44-snapshot-on-ubuntu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The upcoming gcc4.4 release adds a few more C++0x features (initializer lists, auto typed variables, defaulted and deleted functions, strongly typed enums, &#8230;) to the in this regard still very incomplete g++. To be able to play with it one has to compile a gcc-snapshot which turned out to be fairly easy.</p>
<ul>
<li>Download a copy of the gcc-core and the gcc-g++ snapshot from <a href="http://gcc.gnu.org/snapshots.html">here</a>. I used gcc-core-4.4-20090306.tar.bz2 and gcc-g++-4.4-20090306.tar.bz2</li>
<li>Extract both archives into the same directory. <code>tar xvjf gcc-core-4.4-20090306.tar.bz2 &#038;&#038; tar xvjf gcc-g++-4.4-20090306.tar.bz2 &#038;&#038; cd gcc-4.4-20090306</code></li>
<li>run <code>configure ./configure --prefix=$SOMEPLACE</code>Be sure not to overwrite your default gcc-installation. If anything is missing configure will complain.</li>
<li>On my Ubuntu system i had to install libmpfr-dev to proceed. <code>sudo apt-get install libmpfr-dev</code></li>
<li>Now all it takes is time&#8230;<code>make &#038;&#038; make install</code></li>
</ul>
<p>To use it just put $SOMEPLACE in front of your $PATH. If you are using it to compile code which uses C++0x features (which is the whole point) you have to add -std=c++0x to your compiler command line. Bonus: If you are using Eclipse/CDT you can start it with the modified path and the builder will pickup the new gcc just fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2009/03/08/installing-a-gcc44-snapshot-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse CDT 6 Milestone 5</title>
		<link>http://www.meerkoetter.org/wp/2009/03/07/eclipse-cdt-6-milestone-5/</link>
		<comments>http://www.meerkoetter.org/wp/2009/03/07/eclipse-cdt-6-milestone-5/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 19:11:37 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/?p=196</guid>
		<description><![CDATA[The final release of CDT6 is still a few month ahead (scheduled for ~June) but there are already public milestone builds available. I haven&#8217;t played much with M5 but one thing that directly caught my attention is that you no &#8230; <a href="http://www.meerkoetter.org/wp/2009/03/07/eclipse-cdt-6-milestone-5/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The final release of CDT6 is still a few month ahead (scheduled for ~June) but there are already public milestone builds available. I haven&#8217;t played much with M5 but one thing that directly caught my attention is that you no longer have to manually setup all the include paths in your project. Eclipse will just use all the headers inside your workspace to resolve includes.</p>
<p>This is something i have been longing for for years. If you work inside a large projects tree with a lot of include directories (think public interfaces/private headers of N modules) its really painful to add all these to the project.</p>
<p>It will also enhance the out of the box experience for people importing their first project into eclipse. I know from experience that most people don&#8217;t know that they have to setup the include paths first (how should they? before CDT5 the default setup was not even outlining missing includes!). Without being able to resolve the includes the indexer will not work properly so all the advanced features are not available (go to definition, type hierarchy, global symbol lookup, macro expansion, include browser, etc&#8230;). Confronted with such a crippled project first timers might jump to the conclusion that eclipse has not much more to offer than their trusted editor of choice.</p>
<p>As always i am looking forward to the full release.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2009/03/07/eclipse-cdt-6-milestone-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Elegant human readable enums</title>
		<link>http://www.meerkoetter.org/wp/2008/11/28/elegant-human-readable-enums/</link>
		<comments>http://www.meerkoetter.org/wp/2008/11/28/elegant-human-readable-enums/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 21:15:59 +0000</pubDate>
		<dc:creator>frank</dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://www.meerkoetter.org/wp/2008/11/28/elegant-human-readable-enums/</guid>
		<description><![CDATA[While reading the source of some FOSS project i noticed that the authors have come up with a nice way to get human readable enums through the use of the &#8220;stringification feature&#8221; of the C/C++ preprocessor. The trick is that &#8230; <a href="http://www.meerkoetter.org/wp/2008/11/28/elegant-human-readable-enums/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While reading the source of some FOSS project i noticed that the authors have come up with a nice way to get human readable enums through the use of the <a href="http://gcc.gnu.org/onlinedocs/cpp/Stringification.html">&#8220;stringification feature&#8221;</a> of the C/C++ preprocessor. The trick is that the members of the enum are declared through a macro which can be expanded in different ways.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;iostream&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;cstdlib&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;cassert&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;time.h&gt;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">namespace MyStuff</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">enum</span> Things <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#define THING(X) X,</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#include &quot;things.def&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MAX_THINGS</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span>* <span class="kw4">const</span> ThingNames<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#define THING(X) #X,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^ preprocessor stringification</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#include &quot;things.def&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">NULL</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">const</span> <span class="kw4">char</span> *toString<span class="br0">&#40;</span>Things t<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; assert<span class="br0">&#40;</span>t &gt;= <span class="nu0">0</span> &amp;&amp; t &lt; MAX_THINGS<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> ThingNames<span class="br0">&#91;</span>t<span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc, <span class="kw4">char</span> **argv<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; using namespace MyStuff;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; std::<span class="me2">srand</span><span class="br0">&#40;</span>::<span class="me2">time</span><span class="br0">&#40;</span><span class="kw2">NULL</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i = <span class="nu0">0</span>; i &lt; <span class="nu0">4</span>; ++i<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Things aRandomThing =</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; static_cast&lt;Things&gt;<span class="br0">&#40;</span>std::<span class="me2">rand</span><span class="br0">&#40;</span><span class="br0">&#41;</span> % MAX_THINGS<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; std::<a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> &lt;&lt; toString<span class="br0">&#40;</span>aRandomThing<span class="br0">&#41;</span> &lt;&lt; std::<span class="me2">endl</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>things.def:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#ifndef THING</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#define THING</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#endif</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">THING<span class="br0">&#40;</span>CELLPHONE<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">THING<span class="br0">&#40;</span>NOTEBOOK<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">THING<span class="br0">&#40;</span>CUP_OF_TEA<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">THING<span class="br0">&#40;</span>MOUSE<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#undef THING</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Time after time i am amazed what you can do with some of the advanced preprocessor features like &#8220;token pasting&#8221; or stringification.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meerkoetter.org/wp/2008/11/28/elegant-human-readable-enums/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

