<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title type="html">metz&amp;middot;log</title>
    <link href="http://metz.gehn.net"/>
    <link type="application/atom+xml" rel="self" href="http://metz.gehn.net/atom.xml"/>
    <updated>2012-01-06T22:57:57+01:00</updated>
    <id>http://metz.gehn.net/</id>
    <author>
        <name>mETz</name>
        <email>metz+blog@gehn.net</email>
    </author>

    
    <entry>
        <id>http://metz.gehn.net/2012/01/running-trac-on-nginx-and-phusion-passenger</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2012/01/running-trac-on-nginx-and-phusion-passenger"/>
        <title type="html">Running Trac on Nginx with Phusion Passenger</title>
        <updated>2012-01-06T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;I'm currently investigating ways to replace Apache httpd with
&lt;a href=&quot;http://nginx.org&quot;&gt;Nginx&lt;/a&gt; on &lt;a href=&quot;http://www.srcbox.net&quot;&gt;srcbox.net&lt;/a&gt;. One of the
services that runs on the webserver is &lt;a href=&quot;http://trac.edgewall.org&quot;&gt;Trac&lt;/a&gt; for
hosting a wiki-based website and bug tracking for software projects. Because
I'm already using &lt;a href=&quot;http://www.modrails.com&quot;&gt;Phusion Passenger&lt;/a&gt; for hosting Ruby
on Rails projects, I decided to also give it a try to host WSGI applications
together with Nginx.&lt;/p&gt;

&lt;p&gt;Please note that this post is quite similar to the one written by &lt;a href=&quot;http://grahamedgecombe.com/blog/hosting-trac-with-passenger-and-nginx&quot;&gt;Graham
Edgecombe&lt;/a&gt;
about the same subject. I found a few things missing and notable so I decided
to do my own little writeup on what I had to do to get things working.&lt;/p&gt;

&lt;h1&gt;Trac Setup&lt;/h1&gt;

&lt;p&gt;As the actual Trac setup is already present on my server and I just wanted to
replicate a similar setup in my testing VM, I setup Trac like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installed package &lt;code&gt;trac&lt;/code&gt;, I used version 0.12.x which is available via
&lt;a href=&quot;http://backports.debian.org&quot;&gt;Debian Backports&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added a system user that owns all trac project files and is used to run
the WSGI webserver processes:

&lt;pre&gt;&lt;code&gt;adduser --system --home /var/lib/trac --group --disabled-password --disabled-login trac
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Initialized a trac environment below trac home:

&lt;pre&gt;&lt;code&gt;trac-admin /var/lib/trac/project initenv
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Deployed the webserver files using:

&lt;pre&gt;&lt;code&gt;trac-admin /var/lib/trac/project deploy /var/www/trac/
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Added symlinks to make Phusion Passenger accept Trac as a WSGI application:

&lt;pre&gt;&lt;code&gt;ln -s /var/www/trac/htdocs /var/www/trac/public
ln -s /var/www/trac/cgi-bin/trac.wsgi /var/www/trac/passenger_wsgi.py
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;Installing Nginx&lt;/h1&gt;

&lt;p&gt;Nginx installation is quite a bit of work if you're used to a single &lt;code&gt;aptitude
install package&lt;/code&gt;, all features/modules have to be enabled/added at build-time
which means rebuilding Nginx if you want to use Phusion Passenger.  Because I
plan to move authentication to a central place soon I also added &lt;a href=&quot;http://web.iti.upv.es/~sto/nginx/&quot;&gt;Nginx HTTP
Auth PAM&lt;/a&gt; to the mix. Furthermore I'm also
tinkering with the idea to give &lt;a href=&quot;http://www.owncloud.org&quot;&gt;owncloud&lt;/a&gt; a spin
so WebDAV support is probably helpful too.&lt;/p&gt;

&lt;p&gt;The installation basically went like this (rough steps, this is &lt;strong&gt;not&lt;/strong&gt; a place
for step-by-step tutorials):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downloaded latest stable &lt;a href=&quot;http://nginx.org&quot;&gt;Nginx&lt;/a&gt; release&lt;/li&gt;
&lt;li&gt;Downloaded latest &lt;a href=&quot;http://web.iti.upv.es/~sto/nginx/&quot;&gt;ngx_http_auth_pam_module&lt;/a&gt;
release&lt;/li&gt;
&lt;li&gt;Unpacked both in a convenient place&lt;/li&gt;
&lt;li&gt;Installed Phusion Passenger via rubygems (I used ruby and gem from
&lt;code&gt;ruby1.9.1&lt;/code&gt; in Debian Squeeze)&lt;/li&gt;
&lt;li&gt;Ran &lt;code&gt;passenger-install-nginx-module&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Chose &lt;code&gt;2. No: I want to customize my Nginx installation.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Told the installer where to find unpacked Nginx sources&lt;/li&gt;
&lt;li&gt;Added additional configure arguments. For Auth PAM and optionally needed
WebDAV support I used:

&lt;pre&gt;&lt;code&gt;--add-module=/path/to/unpacked/ngx_http_auth_pam_module --with-http_dav_module
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Grabbed an Espresso until the build was finished (didn't really take long)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;On Debian it's probably helpful to install a fake webserver package to satisfy
dependencies for other packages that depend on &lt;code&gt;http-server&lt;/code&gt;. I used equivs to
generate myself an nginx-dummy package.&lt;/p&gt;

&lt;h1&gt;Configuring Nginx&lt;/h1&gt;

&lt;p&gt;For starting up Nginx I simply grabbed the init-script from the Debian source
package of nginx, , put it into &lt;code&gt;/etc/init.d/&lt;/code&gt;, adapted the paths to my Nginx
install in &lt;code&gt;/opt/nginx&lt;/code&gt; and installed it in the default runlevels using
&lt;code&gt;insserv nginx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Adding a virtual host to Nginx that serves Ruby on Rails or a
WSGI application is usually very easy, for Trac however a tiny bit more
care had to be taken...&lt;/p&gt;

&lt;h2&gt;Pitfall 1: HTTP Auth&lt;/h2&gt;

&lt;p&gt;With Trac there's one catch: HTTP Authentication.
It took me quite some time to find out why HTTP-Auth worked fine according to
the Nginx &lt;code&gt;access.log&lt;/code&gt; but Trac still thought I wasn't logged in:
Nginx needs to forward the user name to the WSGI application. For Phusion
Passenger this can be done using the following line:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;passenger_set_cgi_param REMOTE_USER $remote_user;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Pitfall 2: Location Blocks&lt;/h2&gt;

&lt;p&gt;Nginx uses location blocks for different behavior depending on the
url. For Trac the &lt;code&gt;/login&lt;/code&gt; path should trigger HTTP authentication.
Together with Phusion Passenger all I got after successful login however was
a simple &quot;404 Not Found&quot; page.&lt;/p&gt;

&lt;p&gt;It turned out that for location blocks one has to enable Phusion Passenger
again, a prior &lt;code&gt;passenger_enabled on;&lt;/code&gt; line in the parent block does &lt;strong&gt;not&lt;/strong&gt;
apply to the inner location block.&lt;/p&gt;

&lt;h2&gt;Final Nginx Config&lt;/h2&gt;

&lt;p&gt;The complete host configuration for my test setup that contains all needed
things to avoid the above pitfalls looks like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;nginx&quot;&gt;&lt;span class=&quot;k&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;listen&lt;/span&gt;                  &lt;span class=&quot;mi&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;server_name&lt;/span&gt;             &lt;span class=&quot;s&quot;&gt;trac.domain.lan&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;root&lt;/span&gt;                    &lt;span class=&quot;s&quot;&gt;/var/www/trac/public&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;passenger_enabled&lt;/span&gt;       &lt;span class=&quot;no&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# Forward HTTP-Auth user to WSGI&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;passenger_set_cgi_param&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;REMOTE_USER&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$remote_user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;kn&quot;&gt;location&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/login&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;kn&quot;&gt;auth_pam&lt;/span&gt;                &lt;span class=&quot;s&quot;&gt;&amp;quot;Trac&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;domain.lan&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Restricted&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Access&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;c1&quot;&gt;# Use the same PAM service as dovecot for now&lt;/span&gt;
        &lt;span class=&quot;kn&quot;&gt;auth_pam_service_name&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&amp;quot;dovecot&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;c1&quot;&gt;# Reenable Passenger to get a redirect after login instead of a 404&lt;/span&gt;
        &lt;span class=&quot;kn&quot;&gt;passenger_enabled&lt;/span&gt;       &lt;span class=&quot;no&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;c1&quot;&gt;# Forward HTTP-Auth user to WSGI&lt;/span&gt;
        &lt;span class=&quot;kn&quot;&gt;passenger_set_cgi_param&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;REMOTE_USER&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$remote_user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h1&gt;What next?&lt;/h1&gt;

&lt;p&gt;This setup is probably still far from complete. Most notable things that I did not
setup or test yet include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paths for a manual Nginx install do not obey the FHS at all,
logs and temporary files end up on the wrong partition which is a bad
idea security wise.&lt;/li&gt;
&lt;li&gt;Log rotation is missing. I can probably grab parts from the Debian Nginx
package again.&lt;/li&gt;
&lt;li&gt;Serve multiple projects/environments with the above webserver setup&lt;/li&gt;
&lt;li&gt;Replace the rather ugly HTTP Authentication with Trac Account Manager plugin&lt;/li&gt;
&lt;li&gt;Use TLS and enforce login to happen encrypted only&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Of course Trac is by far not the only web-application, I'm probably going to
document a few other things I have installed as part of my new Nginx test
installation :)&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2011/11/tv-reloaded-with-hdhomerun</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2011/11/tv-reloaded-with-hdhomerun"/>
        <title type="html">TV reloaded with HDHomerun</title>
        <updated>2011-11-16T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;After about two years of complete TV absence both due to technical reasons (TV
socket in wrong room on the other side of my flat) as well as the quality of
the programme (ads, fake reality shows, lack of real movies), I nevertheless
decided to get myself a network-enabled TV-tuner. Being network-enabled was
both an easy way to get around the need for new cabling as well as making TV
available to all the machines scattered throughout the rooms.&lt;/p&gt;

&lt;h1&gt;Hardware&lt;/h1&gt;

&lt;p&gt;The most interesting device I found and also ordered is a HDHomerun
&lt;a href=&quot;http://www.silicondust.com/products/models/hdhr3-eu/&quot;&gt;HDHR3-EU&lt;/a&gt;
from SiliconDust, a small black box with coax input for TV (DVB-C or DVB-T),
the usual 5V power-supply and an ethernet port. It contains two tuners so two
channels can be watched and/or recorded in parallel.&lt;/p&gt;

&lt;p&gt;&lt;figure&gt;
&lt;a href=&quot;/2011/11/tv-reloaded-with-hdhomerun/hdhr3-eu.jpeg&quot; title=&quot;HDHomerun HDHR3-EU&quot;&gt;&lt;img src=&quot;/2011/11/tv-reloaded-with-hdhomerun/hdhr3-eu.thumb.jpeg&quot; /&gt;&lt;/a&gt;
&lt;/figure&gt;&lt;/p&gt;

&lt;p&gt;The good thing about HDHomerun devices is, that they work with a broad range of
software. They are also fairly well documented and SiliconDust even has created
a library and a cross-platform commandline tool to configure their devices. In
fact, the software is even available in Debian Squeeze (hdhomerun-config and
libhdhomerun).&lt;/p&gt;

&lt;p&gt;Getting the device running network-wise was only a matter of plugging things
together.  It automatically grabbed an IP-address via DHCP and the
hdhomerun-config tool could immediately find the device.&lt;/p&gt;

&lt;h1&gt;Software&lt;/h1&gt;

&lt;p&gt;At first I was mostly interested in getting the box working with EyeTV 3 which
I used together with my FireDTV in the past. A first channel-scan however
did not find a single channel. After some cable unplugging, checking again with
trusty FireDTV and attempts to manually set a frequency on one of the tuners
I found two settings that were quite important for my DVB-C setup:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;hdhomerun_config DEVICEID &lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt; /sys/dvbc_modulation &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;a8qam256-9600 a8qam64-6900 a8qam128-6900&amp;quot;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;hdhomerun_config DEVICEID &lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt; /tuner0/channelmap eu-cable
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;hdhomerun_config DEVICEID &lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt; /tuner1/channelmap eu-cable
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;The first command sets the DVB-C modulations used when autotuning on a certain
frequency. Unfortunately the current HDHR3 firmware (20111025) seems to have an
off-by-one bug that drops the last modulation in the list and I only tried
setting the two needed values at first. After adding the unneeded QAM128 value
at the end I had all modulations set that I needed. According to the very
helpful support-folks at &lt;a href=&quot;irc://irc.freenode.net/#hdhomerun&quot;&gt;#hdhomerun on
FreeNode&lt;/a&gt; this should already be fixed in
the next firmware release.&lt;/p&gt;

&lt;p&gt;The other two lines set the range of channels used when doing a full
channel-scan. This might be unneeded for software that has its own list of
&quot;interesting&quot; frequencies but at least for scanning with the commandline tool
this has a huge impact on the frequency-range that gets scanned.&lt;/p&gt;

&lt;p&gt;As I later found out, most of this would have propably been set by the first
run of the HDHomerun Config GUI which I did not install on my Mac, d'oh.&lt;/p&gt;

&lt;h1&gt;First Impressions&lt;/h1&gt;

&lt;p&gt;So far I'm pretty happy with my current TV setup. Watching TV while recording
something else works fine and so does EPG, plus I even found some new HD
channels since I last had TV at home. The initial setup was a bit tricky but
the extensive documentation as well as the geek-friendly support channel (IRC)
pretty much make up for all the tinkering. Also I now have a new
network-enabled toy to play with so depending on my free-time maybe I can whip
up some helpful software for these devices (GKrellM HDHomerun status plugin
anyone?).&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2011/11/gkrellm-gio-event-loops</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2011/11/gkrellm-gio-event-loops"/>
        <title type="html">GKrellM, GIO and Event Loops</title>
        <updated>2011-11-07T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;While maintaining GKrellM for Windows I have found several things in the code
that I wanted to improve. Apart from the Preferences Dialog which needs quite a
bit of cleanup, the biggest offender both in terms of portability as well as
readability is the socket code.&lt;/p&gt;

&lt;p&gt;Currently, the socket handling in gkrellm and gkrellmd is really low-level, it
uses plain socket API, i.e. raw calls to &lt;code&gt;accept()&lt;/code&gt;,
&lt;code&gt;send()&lt;/code&gt;, &lt;code&gt;select()&lt;/code&gt; etc. GLib and GIO in particular have
support for abstracting most of this away. They also feature asynchronous
versions of most of the blocking system-calls around socket handling which is
a good thing especially for GUI-applications.&lt;/p&gt;

&lt;p&gt;So I started to get this into GKrellM...&lt;/p&gt;

&lt;h3&gt;Starting with an event loop&lt;/h3&gt;

&lt;p&gt;I began porting with gkrellmd first because this is presumably the simpler
case. The biggest change needed for gkrellmd was to make it use a GLib
mainloop instead of its own event loop, that one was limited to socket events.&lt;/p&gt;

&lt;p&gt;The old loop looked a bit like the following, the complete version is available
at
&lt;a href=&quot;http://git.srcbox.net/gkrellm/tree/server/main.c?id=50b126e08553e7449125723142ed062ff7f062ef#n1257&quot;&gt;server/main.c&lt;/a&gt;
in git.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;c&quot;&gt;&lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;cm&quot;&gt;/* Block until at least one filedescriptor needs attention or&lt;/span&gt;
&lt;span class=&quot;cm&quot;&gt;       maximum wait time was reached */&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max_fd&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;test_fds&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

    &lt;span class=&quot;cm&quot;&gt;/* Iterate over filedescriptors and check for activity */&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fd&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fd&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;max_fd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;is_server_fd&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;cm&quot;&gt;/* activity on listening socket */&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;client_fd&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;accept&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(...);&lt;/span&gt;
            &lt;span class=&quot;cm&quot;&gt;/* host lookup, reverse lookup etc. */&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;cm&quot;&gt;/* activity on client socket, try reading */&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;ioctl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;FIONREAD&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nbytes&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;gkrellmd_client_read&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;nbytes&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;cm&quot;&gt;/* Update krells, send updated data to clients */&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;gkrellmd_update_monitors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This loop works remarkably well most of the time, but it has a few
shortcomings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;updating monitors has to wait for all socket-work to finish&lt;/li&gt;
&lt;li&gt;hostname lookups while accepting new clients block the whole loop until they
finish or a system-dependent timeout is reached&lt;/li&gt;
&lt;li&gt;errors of &lt;code&gt;ioctl()&lt;/code&gt; are not checked for (also nbytes is never
initialized, oops)&lt;/li&gt;
&lt;li&gt;the time that &lt;code&gt;select()&lt;/code&gt; waits also defines the update frequency
for the monitors&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Especially the possible blocking while accepting a new client may affect
monitor update timing and keep already connected clients from receiving
updates. This is usually not a big problem if clients are on the same network
and name lookup for the network is working reliable but that doesn't mean
things can never go wrong.&lt;/p&gt;

&lt;p&gt;The GLib way of creating, running and deleting an event loop that already
updates gkrellm monitors regularly looks like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;c&quot;&gt;&lt;span class=&quot;n&quot;&gt;g_timeout_add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_GK&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;update_HZ&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gkrellmd_update_monitors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gk_main_loop&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;g_main_loop_new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;FALSE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;g_main_loop_run&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gk_main_loop&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;g_main_loop_unref&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gk_main_loop&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Of course this does not yet have all the features of the old gkrellmd event
loop but I'll tackle that in my next post about me diving into
socket-communication using GIO.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2011/09/blog-reboot</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2011/09/blog-reboot"/>
        <title type="html">Blog Reboot</title>
        <updated>2011-09-10T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;After quite some hiatus (more than two years according to my last post) I
decided to give this site a facelift and actually start some &quot;real&quot; blogging,
meaning more frequent posting even in the absence of new software releases.&lt;/p&gt;

&lt;h3&gt;The Why&lt;/h3&gt;

&lt;p&gt;Main reason for getting this site back on track is that I finally started
having some real free time again (weekends that actually deserve being called
&quot;weekends&quot; instead of &quot;extended workdays&quot;) and a refreshed interested to get
back into Open Source development.&lt;/p&gt;

&lt;p&gt;Visiting this years &lt;a href=&quot;http://desktopsummit.org&quot;&gt;Desktop Summit&lt;/a&gt; in Berlin was
quite inspiring with all the interesting talks and projects. Especially the
mixture of both Gnome and KDE people was quite cool. Having a look at both
camps shows that there's similar problems on both sides (where's the desktop
heading towards with so many new mobile gadgets, keeping or dropping
cross-platform support) as well as (continued) plans to integrate both desktop
&quot;worlds&quot;. The most interesting project in terms of integration for me right now
is &lt;a href=&quot;http://p11-glue.freedesktop.org/p11-kit.html&quot;&gt;pk11-kit&lt;/a&gt;: GKrellM could
benefit from good key/trust management once it gets TLS connection support
(stay tuned, I'll definetely come back to this topic).&lt;/p&gt;

&lt;h3&gt;The What&lt;/h3&gt;

&lt;p&gt;So what is to be expected here in the future? For a start, the projects
formerly hosted here will stay as a static archive. Although all projects are
unmaintained by now and I don't think anybody still uses software like
&lt;a href=&quot;/projects/floodcast/&quot;&gt;Floodcast&lt;/a&gt;, there still might be some interest in
getting the source code and maybe reusing parts of it.&lt;/p&gt;

&lt;p&gt;For the future, I plan to post more about what I'm working on or wasting my
time with. This includes for instance code snippets for interesting problems or
chronically undocumented APIs (yes, I'm looking at you GLib). As I'm also some
sort of admin for quite a few systems, I'll also &quot;document&quot; my endeavours of
software I haven't worked with before (possible first candidates include
&lt;a href=&quot;http://www.nginx.org/&quot;&gt;Nginx&lt;/a&gt;, &lt;a href=&quot;http://unbound.net/&quot;&gt;Unbound&lt;/a&gt; and
&lt;a href=&quot;http://www.nlnetlabs.nl/projects/nsd/&quot;&gt;NSD&lt;/a&gt;).&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2009/01/gkrellm-232-for-windows-new-project-home</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2009/01/gkrellm-232-for-windows-new-project-home"/>
        <title type="html">GKrellM 2.3.2 for Windows &amp; new project home</title>
        <updated>2009-01-01T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Originally intended to be released shortly after the gkrellm-2.3.2 release
(released 2008-10-04), I stumbled across some bugs here and there so in the end
it took much longer.&lt;/p&gt;

&lt;p&gt;Most important changes after the gkrellm-2.3.2 release:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wait up to 10 seconds for a running SpeedFan that has not detected its
sensors yet&lt;/li&gt;
&lt;li&gt;Fix plugin calls that have a variable number of arguments&lt;/li&gt;
&lt;li&gt;Unify search-paths for plugins and themes in both gkrellm and gkrellmd on
win32&lt;/li&gt;
&lt;li&gt;Fix file operations (i.e. config load/save) on non-ascii locales&lt;/li&gt;
&lt;li&gt;Fix transmit bytes for network interfaces&lt;/li&gt;
&lt;li&gt;fix taskbar-entry being visible with gtk+ 2.14.4 by setting the toolwindow
window-type using standard gtk-functions&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Furthermore GKrellMd is now an NT-service allowing remote-monitoring on servers
that nobody is logged on to (plus it does not crash every second minute, one of
the most reported things since I released 2.3.0).&lt;/p&gt;

&lt;p&gt;The installer also changed quite a bit and now always installs the GTK+
runtime. If you don't want that you can still use the ZIP though. Installing
gkrellmd only is now supported as well (plus it doesn't install all the gui
stuff). Due to the massive changes in the installer I recommend to uninstall
any older GKrellM version before installing the new one.&lt;/p&gt;

&lt;p&gt;Please have a look at the new version which is now available at
&lt;a href=&quot;http://www.srcbox.net/projects/gkrellm/&quot;&gt;srcbox.net&lt;/a&gt;.
The old GKrellM pages on this site will go away soon so please update any
bookmarks you might have.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2008/02/gkrellmd-as-a-service</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2008/02/gkrellmd-as-a-service"/>
        <title type="html">GKrellMd as a service</title>
        <updated>2008-02-07T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;As some of you might know, Windows has something similar to daemons, its so
called &quot;services&quot;. Lately I have been able to find some free time and managed
to make a true Windows service out of gkrellmd. Running gkrellmd as a service
instead of as a simple application has quite some benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No need to login in order to start gkrellmd (very important for monitoring
  servers!)&lt;/li&gt;
&lt;li&gt;You cannot accidentally quit gkrellmd by right clicking its (now
  non-existent) tray icon anymore&lt;/li&gt;
&lt;li&gt;Running as a service ensures having admin rights (needed for monitoring)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Because debugging services can be a bit complicated, I added a new commandline
switch that will allow running gkrellmd.exe inside a standard console window.
That way users can still track down problems easily.&lt;/p&gt;

&lt;p&gt;On a sidenote, Gtk+ 2.12.6 has fixed
&lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=503326&quot;&gt;Bug #503326&lt;/a&gt;
which means I can finally release gkrellm and gkrellmd after some more cleanups.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2007/12/gkrellm-231-in-the-works</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2007/12/gkrellm-231-in-the-works"/>
        <title type="html">GKrellM 2.3.1 in the works</title>
        <updated>2007-12-16T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;I'm currently updating my build system and will look into some of the bugs that
I found in the last release. I also spotted a few problems with the new release
(mainly clock/calendar formatting) so it will take some more time before I can
release something usable. Even though university currently keeps me busy (gotta
hold a speech at dec. 21th, still busy with the slides for that) I hope to give
you 2.3.1 as a xmas present :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Unfortunately GTK+ 2.12.3 crashes GKrellM 2.3.1 when
changing the clock/calendar format, this will probably delay the release (no
christmas present, sorry).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second Update:&lt;/strong&gt; I found Gtk+
&lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=503326&quot;&gt;Bug#503326&lt;/a&gt; to be the cause
for the crash. I'm not yet sure if I should just ship Gtk+ 2.10.x as done before,
wait for this bug to get fixed or use Gtk+ 2.12.1 which is said to not exhibit
this crash.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2007/08/taglib-for-windows-2007-08-06-snapshot</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2007/08/taglib-for-windows-2007-08-06-snapshot"/>
        <title type="html">TagLib for Windows (2007-08-06 Snapshot)</title>
        <updated>2007-08-06T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;As many bugfixes have been committed to the TagLib repository in july, I
decided to update the snapshot for Windows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; I removed the last snapshot and will do so for any future snapshot,
only releases will stay online for a longer time.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2007/07/gkrellm-230-for-windows-released</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2007/07/gkrellm-230-for-windows-released"/>
        <title type="html">GKrellM 2.3.0 for Windows released</title>
        <updated>2007-07-31T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Today I built and packaged GKrellM 2.3.0 for Windows. It is available both in
form of a handy installer as well as plain Zip-File. As this is the first
release made by me I'm very interested in any kind of
&lt;a href=&quot;&amp;amp;#109;a&amp;amp;#105;l&amp;amp;#116;&amp;amp;#111;:&amp;amp;#109;&amp;amp;#69;&amp;amp;#84;&amp;amp;#122;&amp;amp;#56;&amp;amp;#49;&amp;amp;#64;&amp;amp;#119;&amp;amp;#101;&amp;amp;#98;&amp;amp;#46;&amp;amp;#100;&amp;amp;#101;&quot;&gt;feedback&lt;/a&gt;
, even if it's just as short as &quot;it works&quot; :)&lt;/p&gt;

&lt;p&gt;More information about GKrellM for Windows can be found on
&lt;a href=&quot;http://www.srcbox.net/projects/gkrellm&quot;&gt;srcbox.net&lt;/a&gt;.
General information about GKrellM is available at
&lt;a href=&quot;http://gkrellm.net&quot;&gt;gkrellm.net&lt;/a&gt;.
New versions and bugfixes will be announced on this page and on the
&lt;a href=&quot;http://www.archive.lists.netservicesgroup.com&quot;&gt;GKrellM mailinglist&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally GKrellM is back on Windows and available for everybody :)&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2007/06/development-on-a-mac</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2007/06/development-on-a-mac"/>
        <title type="html">Development on a Mac</title>
        <updated>2007-06-23T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Today I installed Eclipse 3.3RC4 and CDT 4.0RC3 in the hope that it wouldn't be
as dog slow as Eclipse had been on the MacBook I lent from university few weeks
ago. Fortunately trying it out again was a huge success. Code completion works
like a charm, as does the rest I tested so far.&lt;/p&gt;

&lt;p&gt;My testing project was &lt;a href=&quot;/projects/qlinecontrol/&quot;&gt;QLineControl&lt;/a&gt; which even made
its way into a universal binary now (i.e. it will run on PowerPC-based machines
running OS X as well).&lt;/p&gt;

&lt;p&gt;Next is getting Qt 4.3 copied into the application-bundle so one can install
&lt;a href=&quot;/projects/qlinecontrol/&quot;&gt;QLineControl&lt;/a&gt; as easy as usual: drag it into the
Applications folder and be done.  Furthermore I plan to make
&lt;a href=&quot;/projects/qlinecontrol/&quot;&gt;QLineControl&lt;/a&gt; feel a bit more mac-like, right now it
feels a bit weird compared to most other apps.  For instance it shouldn't quit
just because you happened to close its mainwindow.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2007/06/new-laptop</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2007/06/new-laptop"/>
        <title type="html">New Laptop</title>
        <updated>2007-06-21T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Finally made a decision and got myself a white 2.0 GHz MacBook with 2GB memory.
So far I'm pretty happy with it, except for some weird glitches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kyocera printer drivers decided to install into a directory with no execute
permissions (except for root) so I couldn't select my printer model&lt;/li&gt;
&lt;li&gt;DVD-Player refused to see any of my DVDs. Fixing permissions fortunately made
the problem go away. I guess Apple added the &quot;fix file permissions&quot; feature
in their harddisk tool for a reason.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Next thing is installing XCode, Qt 4.3 and some recent Eclipse 3.3 build so I
can code on the road again :)&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2007/06/taglib-for-windows-snapshot</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2007/06/taglib-for-windows-snapshot"/>
        <title type="html">TagLib for Windows snapshot</title>
        <updated>2007-06-07T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Today I updated the TagLib port to Windows (see &lt;a href=&quot;/downloads/&quot;&gt;Downloads&lt;/a&gt;) ,
based on latest TagLib sources (taken from svn). Furthermore I remove all old
binaries and snapshots as they were too outdated and/or unmaintained by me.&lt;/p&gt;

&lt;p&gt;Most important change: the MSVC build is gone. This is because I decided to
stop using MSVC, mainly due to its unclear runtime-library license (read: I
didn't even find a license and shipping them with your own software is said to
be illegal, something I will not risk). Furthermore it's way easier for me if I
only have to struggle with one compiler at a time.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2007/05/about-ports-apples-and-more</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2007/05/about-ports-apples-and-more"/>
        <title type="html">About Ports, Apples and more</title>
        <updated>2007-05-18T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Yes, I'm still alive, unfortunately university is occupying most of my time
right now. Nevertheless I managed to update this site to Wordpress 2.2 and
managed to make it look somewhat right, even on broken browsers (i.e. Internet
Explorer)&lt;/p&gt;

&lt;p&gt;On the porting side I just managed to fix the swap-display in GKrellM on
Windows. So far the values were just bad guesswork and started to look
completely wrong after I installed 3gb memory. Eventually I'll put up a zip so
people can test GKrellM on Windows before 2.0.11 is out.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/projects/qlinecontrol/&quot;&gt;QLineControl&lt;/a&gt; also had some progress, most notably I
managed to compile it on Mac OS X thanks to the MacBook I got for testing
purposes (have to bring it back to university next week).  This of course
brings me to the next topic: what kind of laptop to buy this time (my old one
died last year). So far bets are on for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.apple.com/macbook/&quot;&gt;MacBook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://shop.lenovo.com/us/notebooks/thinkpad/&quot;&gt;ThinkPad T60 or T61&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Getting a Mac would allow me to develop and port applications for OS X but this
would also imply more work because of yet another OS. Quite a complex decision
IMO (plus I dislike the white MacBook case).&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/11/porting-fun</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/11/porting-fun"/>
        <title type="html">Porting Fun</title>
        <updated>2006-11-06T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;The last few weeks I finally managed to do some coding at home again (currently
busy with my internship that ends in january), most of it is porting unix apps
to windows though ;)&lt;/p&gt;

&lt;p&gt;I managed to compile &lt;a href=&quot;http://www.gkrellm.net&quot;&gt;GKrellM&lt;/a&gt; on windows
and right now I'm busy cleaning out remaining bugs in order to have
well-working binaries out when 2.2.11 sees the light. More on this later.&lt;/p&gt;

&lt;p&gt;With the release of &lt;a href=&quot;http://qt.nokia.com&quot;&gt;Qt&lt;/a&gt; 4.2 I
also came back to &lt;a href=&quot;/projects/qlinecontrol/&quot;&gt;QLineControl&lt;/a&gt; and I'm
currently preparing for 0.2 release. Unfortunately I still didn't release KLCC
and right now I'm uncertain if anybody actually still needs it (if you do, tell
me).&lt;/p&gt;

&lt;p&gt;Finally I'm also motivated to work on KDE 4 again, I'll probably give the
&lt;a href=&quot;http://phonon.kde.org/&quot;&gt;Phonon&lt;/a&gt; API a new try.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/08/thesis-finished</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/08/thesis-finished"/>
        <title type="html">Thesis finished!</title>
        <updated>2006-08-29T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Today I did the oral part of my bachelor thesis and received an overall grade
of 13.5 out of 15 points for my thesis. Except me to be back to real-life in a
few days.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/06/busy-whats-coming-up-next</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/06/busy-whats-coming-up-next"/>
        <title type="html">Busy &amp; What's coming up next</title>
        <updated>2006-06-11T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;I'm currently busy finishing my bachelor thesis, it's hopefully over on june
30th ;)&lt;/p&gt;

&lt;p&gt;For july I have probably planned more than what I actually have time for, I'll
try it anyway:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add cmake support and win32 patches to taglib, most of this is already done
but needs testing&lt;/li&gt;
&lt;li&gt;Dive into the &lt;a href=&quot;http://phonon.kde.org/&quot;&gt;Phonon API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Port Noatun3 (&quot;make-it-snow&quot; branch) to kdelibs4_snapshot and use Phonon as
the only backend&lt;/li&gt;
&lt;li&gt;Last KLCC release&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Sync systray code with &lt;a href=&quot;http://psi-im.org/&quot;&gt;PSI&lt;/a&gt; repository&lt;/del&gt;
(Qt 4.2 will have QSystemTrayIcon)&lt;/li&gt;
&lt;li&gt;Eventually some real life stuff&lt;/li&gt;
&lt;/ul&gt;

</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/04/debian-repository-fixed</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/04/debian-repository-fixed"/>
        <title type="html">Debian repository fixed</title>
        <updated>2006-04-02T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Apparently it was a bad idea to update the directory structure inside the
repository without properly recreating the list of packages and sources. As
that is fixed now, you can continue downloading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Another update&lt;/strong&gt;: For whatever reason apt-cacher did not like
Packages and Sources files being gzipped, therefore I now also uploaded
bzip2-compressed and uncompressed files so all versions of apt and apt-cacher
should be happy.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/03/semester-break-over</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/03/semester-break-over"/>
        <title type="html">Semester break over</title>
        <updated>2006-03-09T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Lectures are starting next week so the fun is over (already).&lt;/p&gt;

&lt;p&gt;Most of my free-time went into working, I went to a few parties on weekends and
had to take a break last week because I caught a rather nasty flu which lasted
until sunday.&lt;/p&gt;

&lt;p&gt;On the coding side of life there was way less action than planned. I didn't
look into KDE4 and didn't write a single line of code for Noatun3 either.&lt;/p&gt;

&lt;p&gt;I started a small OpenGL-based Pong game with a friend of mine but there's
nothing fancy to look at yet, maybe later this year, in case we don't loose
motivation, opengl is not the funniest API on earth.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/02/trayicon-code-for-qt4</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/02/trayicon-code-for-qt4"/>
        <title type="html">Trayicon code for Qt4</title>
        <updated>2006-02-13T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Today I cleaned up the code and uploaded a little bit of code others might find
useful too, a trayicon class for Qt4. It works on Windows, Linux (X11) and Mac
OS X (didn't test OS X though). It's a port of the trayicon code from
&lt;a href=&quot;http://psi-im.org&quot;&gt;Psi&lt;/a&gt;, I didn't change anything except for making it
work with Qt4.&lt;/p&gt;

&lt;p&gt;If you think this might be fun to try out then download
&lt;a href=&quot;/files/trayicon.tar.bz2&quot;&gt;trayicon.tar.bz2&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/02/semester-break-started</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/02/semester-break-started"/>
        <title type="html">Semester break started</title>
        <updated>2006-02-03T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;And another semester is over. Now I've got about four weeks that I'll mostly
spend with coding, partying and, unfortunately, working.&lt;/p&gt;

&lt;p&gt;Most interesting projects for my &quot;holidays&quot; will probably be qmediacatalog (not
released yet), qlinecontrol and maybe Noatun3 if I get a working debian package
of qt-copy and compile kdelibs (man, I hate to waste time on compiling these
days).&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/01/flexplaylist-049-qlinecontrol-01-out-of-the-door</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/01/flexplaylist-049-qlinecontrol-01-out-of-the-door"/>
        <title type="html">FlexPlaylist 0.4.9 and QLineControl 0.1 released</title>
        <updated>2006-01-25T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Time to announce &lt;a href=&quot;/projects/qlinecontrol/&quot;&gt;QLineControl&lt;/a&gt; 0.1 officially as I
uploaded both the sourcecode and windows-binaries now (Debian packages have
been available for some days already).&lt;/p&gt;

&lt;p&gt;I also did a (last?) release of &lt;a href=&quot;/projects/flexplaylist/&quot;&gt;FlexPlaylist&lt;/a&gt;, 0.4.9
changes were&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FIX: Use a more natural order when adding folders recursively (go into
subfolders before adding files from the current folder)&lt;/li&gt;
&lt;li&gt;Use standard icons for player controls in statusbar&lt;/li&gt;
&lt;li&gt;Draw player controls in statusbar using drawing functions provided by the
currently selected KDE-/QT-style.&lt;/li&gt;
&lt;li&gt;FIX: More reliable detection of the playlist-windows being visible&lt;/li&gt;
&lt;li&gt;Add a simple configure check for Noatun headers and abort if they were not
found&lt;/li&gt;
&lt;li&gt;Add debian packaging&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For Noatun 3 I'm still a bit uncertain about which way to go. I can either
stick to playlist files like in FlexPlaylist or improve further on
SimplePlaylist which uses sqlite as its data-storage.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2006/01/new-year-new-look</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2006/01/new-year-new-look"/>
        <title type="html">New year, new look</title>
        <updated>2006-01-22T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;After a looong time of silence I decided to give this site a new look (and a
new backend).&lt;/p&gt;

&lt;p&gt;Most important for visitors should be the updated project pages and the project
which I'm currently working on (&lt;a href=&quot;/projects/qlinecontrol/&quot;&gt;QLineControl&lt;/a&gt;). I
will also try and post more often than I did before (WordPress should make that
a little bit easier).&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2005/07/time-for-some-icecream</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2005/07/time-for-some-icecream"/>
        <title type="html">Time for some ice(cream)</title>
        <updated>2005-07-01T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;As it's getting too quiet in here I'm going to do a small status report what
I'm working on or why I'm not working at all:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MediaControl: just added mpd-supported to it, many thanks go to William Robinson for all the work he put into this patch&lt;/li&gt;
&lt;li&gt;FlexPlaylist: is more or less dead, the code was getting to chaotic and I broke my port to Noatun3 without having a backup&lt;/li&gt;
&lt;li&gt;SimplePlaylist: I started writing a new playlist from scratch featuring a sqlite-backend, it will hopefully be part of Noatun3&lt;/li&gt;
&lt;li&gt;Floodcast: put on ice until I have finished the Engine-API for Noatun3 so I can port it over as well&lt;/li&gt;
&lt;li&gt;Noatun3: a mostly rewritten Noatun version scheduled for KDE 4, it's in kde subversion-repository, as is simpleplaylist&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Apart from that I'm currently busy with writing university exams and, after
that, start a &quot;Praktikum&quot;, no holidays for me in 2005.&lt;/p&gt;

&lt;p&gt;At least the weather is fine over here so I'll stop writing stuff and get me
some icecream now.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2005/03/ping</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2005/03/ping"/>
        <title type="html">ping</title>
        <updated>2005-03-28T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Yes, I'm still alive. I'm currently redoing some parts of this site, no huge
changes though. And in case you don't like the blue look I also added a
greenish one (note: the banner at the top needs an overhaul, that'll come
later).&lt;/p&gt;

&lt;p&gt;On the software side of life I'm currently working on a new project. A first
screenshot is available in the &lt;a href=&quot;/screenshots/&quot;&gt;Screenshots Section&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/09/ears-wide-open-floodcast-0012</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/09/ears-wide-open-floodcast-0012"/>
        <title type="html">Ears Wide Open - Floodcast 0.0.12</title>
        <updated>2004-09-21T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;And another one, changes this time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;turn on/off floodcast from its control-panel&lt;/li&gt;
&lt;li&gt;new option: automatically reconnect on shoutcast connection errors&lt;/li&gt;
&lt;li&gt;Shoutcast compatible title-streaming in standalone-mode (yes, finally people can see what track you are rocking to)&lt;/li&gt;
&lt;li&gt;status-window now also for forward-mode&lt;/li&gt;
&lt;li&gt;on-demand retrieval of listener-stats in forward-mode (not automated due to bandwidth considerations)&lt;/li&gt;
&lt;li&gt;removed kdDebug statement that kept floodcast from compiling on KDE 3.2.x&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Don't wait until tomorrow, go and grab your copy of
&lt;a href=&quot;/files/floodcast-0.0.12.tar.bz2&quot;&gt;floodcast-0.0.12.tar.bz2&lt;/a&gt; today.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/08/releases-flooding-in-floodcast-0011</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/08/releases-flooding-in-floodcast-0011"/>
        <title type="html">Releases flooding in - Floodcast 0.0.11</title>
        <updated>2004-08-17T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Changes this time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;support for CBR/ABR/VBR mp3 encoding. You can choose whatever you like (note: CBR is still the most common setting for streaming to shoutcast-servers)&lt;/li&gt;
&lt;li&gt;add Brazilian translation, thanks to Rogerio Pereira&lt;/li&gt;
&lt;li&gt;add (incomplete) German translation&lt;/li&gt;
&lt;li&gt;reintegrate status-window for standalone server, it was left out so far to ease restructuring&lt;/li&gt;
&lt;li&gt;fix hostname lookups in status-window&lt;/li&gt;
&lt;li&gt;update connection times in status-window every 10 seconds and not only once a minute&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Just visit the &lt;a href=&quot;/downloads/&quot;&gt;Downloads Section&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/08/floodcast-0010</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/08/floodcast-0010"/>
        <title type="html">Floodcast 0.0.10</title>
        <updated>2004-08-15T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Coding again and proudly presenting another master-piece of weird software,
changes this time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;abort streaming after 3 failed send calls, this might help for buggy
connections&lt;/li&gt;
&lt;li&gt;use QTimer for syncing with shoutcast server instead of blocking noatun all
the time&lt;/li&gt;
&lt;li&gt;allow streaming with a fixed track-name instead of using tags from noatun&lt;/li&gt;
&lt;li&gt;buffer encoded mp3 data before sending it in order to avoid dropouts, not
sure if this helps much&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Go grab it at the &lt;a href=&quot;/downloads/&quot;&gt;Downloads Section&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/07/updated-site-layout-and-contents</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/07/updated-site-layout-and-contents"/>
        <title type="html">Updated site layout and contents</title>
        <updated>2004-07-21T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Bye bye &amp;lt;table&amp;gt;, hello &amp;lt;div&amp;gt; and CSS. Except for a few places this
page is a table-free-zone now. Due to Internet Exploder not handling
display:table-cell at all I still had to make the main layout a table
(otherwise IE users would see the menubar below the main-contents).&lt;/p&gt;

&lt;p&gt;Other things include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;font-sizes and margins more eye-friendly&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/links/&quot;&gt;Links section&lt;/a&gt; was cleaned up a bit, the least I want to have is
dead links.&lt;/li&gt;
&lt;li&gt;more full-size screenshots in &lt;a href=&quot;/projects/&quot;&gt;Projects section&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;New hardware specs added to My
System section&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Over the next few days I'll iron out remaining quirks and check how much of
this homebrew mess validates with W3 specs.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/07/projects-left-over</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/07/projects-left-over"/>
        <title type="html">Projects left over</title>
        <updated>2004-07-12T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Ok, my exams are over now and I can do more on all the stuff I'm working on.
Currently I plan to put effort into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://freshmeat.net/projects/klcc/&quot;&gt;KLCC&lt;/a&gt;, fix as many bugs
as possible and do a (KDE 3.2 only) release&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/projects/flexplaylist/&quot;&gt;FlexPlaylist&lt;/a&gt;, maybe the long awaited 0.5 (but with
no translations due to lack of  help)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/projects/floodcast/&quot;&gt;Floodcast 0.1.0&lt;/a&gt; - Including a history for shoutcast
servers you streamed to&lt;/li&gt;
&lt;li&gt;kdelirc - Not a project of mine but rather unmaintained and urging one or two
important features&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The following projects are abandoned by me now: KNetLoad (there's another port
of it and the only plus mine has is being a kicker-applet). Kopete (I'm using
&lt;a href=&quot;http://www.licq.org/&quot;&gt;Licq&lt;/a&gt; again, Kopete was wasting more
time than anything else and still the outcome was incredible low).&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/07/now-where-are-the-news</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/07/now-where-are-the-news"/>
        <title type="html">Now where are the news?</title>
        <updated>2004-07-04T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Due to the exams I have to write and learn for there's nothing new up here but
in about two weeks that will change.&lt;/p&gt;

&lt;p&gt;As a sidenote: I'm now maintaining
&lt;a href=&quot;http://freshmeat.net/projects/klcc/%22%20target=%22_blank&quot;&gt;KLCC&lt;/a&gt;, a very
nice KDE client for linecontrol.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/05/fix-floodcast-009b</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/05/fix-floodcast-009b"/>
        <title type="html">Fix: Floodcast 0.0.9b</title>
        <updated>2004-05-15T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;&lt;a href=&quot;/projects/floodcast/&quot;&gt;Floodcast&lt;/a&gt; 0.0.9b is out. It fixes a grave bug that can
hang your whole X11-session when you get disconnected from the server
unexpectedly (caused by a flood of duplicated messageboxes). Now you just get
one messagebox and get disconnected immediately (sidenote: autoreconnect is
planned for a later release).&lt;/p&gt;

&lt;p&gt;Please get &lt;del&gt;floodcast-0.0.9b.tar.bz2&lt;/del&gt; instead of the plain 0.0.9
prerelease, thanks.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/05/floodcast-009</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/05/floodcast-009"/>
        <title type="html">Floodcast 0.0.9</title>
        <updated>2004-05-08T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;&lt;a href=&quot;/projects/floodcast/&quot;&gt;Floodcast&lt;/a&gt; 0.0.9 is out. It's a streaming plugin for
Noatun that allows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running a very simple standalone server on the machine Noatun is running on&lt;/li&gt;
&lt;li&gt;Forwarding whatever sound is currently played in Noatun to some
ShoutCast/IceCast server&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Streaming to an Icecast-server is untested so far. Also only mp3-streaming
through lame is supported right now but eventually I will add support for ogg
vorbis too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: This plugin needs
&lt;a href=&quot;http://www.icecast.org/download.php&quot;&gt;libshout&lt;/a&gt; so make sure
you have it installed.&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2004/05/still-here</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2004/05/still-here"/>
        <title type="html">Still here</title>
        <updated>2004-05-02T00:00:00+02:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;Sorry for the extreme lack of updates, unfortunately Flexplaylist 0.5.0 is not
out yet.  Things I worked on in the meantime:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/projects/flexplaylist&quot;&gt;FlexPlaylist 0.5.0&lt;/a&gt; of course, finally
added support for translations, if you want to translate FlexPlaylist just
&lt;a href=&quot;mailto:metz%20AT%20gehn%20DOT%20net&quot;&gt;mail me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Noatun, added support for reading shoutcast stream titles, it will appear in
KDE 3.3 and I have an unreleased patch for KDE 3.2&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/projects/floodcast&quot;&gt;Floodcast&lt;/a&gt;, it's back. I got my hands on the last
Floodcast code and made it working with current Noatun versions plus I added
support for forwarding. This is by far the most comfortable shoutcast-plugin
I've seen (compared to the ones for XMMS)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://kopete.kde.org&quot;&gt;Kopete&lt;/a&gt;, after a longer
break I'm finally back at it too. Work so far includes some API fscking in
libkopete and incorporating a cool RTF patch into OSCAR. Now you can finally
see the ugly fonts and colors your friends use&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/projects/mediacontrol/&quot;&gt;MediaControl&lt;/a&gt;, no news due to the stuff
mentioned before, I plan to make some more things configurable and move at
least Noatun to a DCOP-signal API so mediacontrol does not poll Noatun but
instead gets informed about changes&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Btw, I hope to release most of the above projects soon (except for
&lt;a href=&quot;http://kopete.kde.org&quot;&gt;Kopete&lt;/a&gt; of course, which has a time-schedule of its
own).&lt;/p&gt;
</content>
    </entry>
    
    <entry>
        <id>http://metz.gehn.net/2003/12/flexplaylist-048-hopefully-the-last-05-prerelease</id>
        <link type="text/html" rel="alternate" href="http://metz.gehn.net/2003/12/flexplaylist-048-hopefully-the-last-05-prerelease"/>
        <title type="html">Flexplaylist 0.4.8, hopefully the last 0.5 prerelease</title>
        <updated>2003-12-25T00:00:00+01:00</updated>
        <author>
            <name>mETz</name>
            <uri>http://metz.gehn.net/</uri>
        </author>
        <content type="html">&lt;p&gt;And another prerelease before 0.5 is out.&lt;/p&gt;

&lt;p&gt;Changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added action to go to currently played song (handy for large lists)&lt;/li&gt;
&lt;li&gt;Massive speedup on clearing playlist (don't update statusbar for every
removed file)&lt;/li&gt;
&lt;li&gt;Lots of code cleanups (less debug output, less old commented code and unused
methods)&lt;/li&gt;
&lt;li&gt;Temporary messages in statusbar for loading/saving playlists&lt;/li&gt;
&lt;li&gt;Don't add files to playlist that can't be played by Noatun (needed for adding
whole directories)&lt;/li&gt;
&lt;li&gt;Greatly improved filters for fileselectors, now allows to filter for certain
playlist formats&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Go get &lt;a href=&quot;/files/CurrentSources/flexplaylist-0.4.8.tar.bz2&quot;&gt;flexplaylist-0.4.8.tar.bz2&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    
</feed>

