<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>linux &amp; the mountains</title>
    <link>https://bzed.de/</link>
    <description>Recent content on linux &amp; the mountains</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <copyright>Copyright 2009-2017 Bernd Zeimetz</copyright>
    <lastBuildDate>Tue, 05 Jan 2021 15:33:00 +0000</lastBuildDate><atom:link href="https://bzed.de/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Building reverse build dependencies in salsa CI</title>
      <link>https://bzed.de/post/2021/01/building_reverse_build_dependencies_in_salsa_ci/</link>
      <pubDate>Tue, 05 Jan 2021 15:33:00 +0000</pubDate>
      
      <guid>https://bzed.de/post/2021/01/building_reverse_build_dependencies_in_salsa_ci/</guid>
      <description>&lt;p&gt;For the next library soname bump of gpsd I needed to rebuild all reverse dependencies.
As this is a task I have to do very often, I came up with some code to generate (and keep uptodate) an include for the gitlab CI.
Right now it is rather uncommented, undocumented, but works well. If you like it, MRs are very welcome.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://salsa.debian.org/bzed/reverse-dependency-ci/&#34;&gt;https://salsa.debian.org/bzed/reverse-dependency-ci/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The generated files are here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://bzed.pages.debian.net/reverse-dependency-ci/&#34;&gt;https://bzed.pages.debian.net/reverse-dependency-ci/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Usage:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;yaml&#34;&gt;
include:
 - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
 - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
 - https://bzed.pages.debian.net/reverse-dependency-ci/gpsd.yml

variables:
 SALSA_CI_ENABLE_REVERSE_DEPENDENCY_BUILD: 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Please do no abuse the salsa CI. Don&amp;rsquo;t build all of your 100 reverse dependencies with every commit!&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Public service annoucement for a modern Debian</title>
      <link>https://bzed.de/post/2019/12/public_service_annoucement_for_a_modern_debian./</link>
      <pubDate>Sun, 08 Dec 2019 01:48:00 +0000</pubDate>
      
      <guid>https://bzed.de/post/2019/12/public_service_annoucement_for_a_modern_debian./</guid>
      <description>&lt;p&gt;&lt;strong&gt;Don&amp;rsquo;t forget to vote!&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;nohighlight&#34;&gt;
echo &#34;
- - -=-=-=-=-=- Don&#39;t Delete Anything Between These Lines =-=-=-=-=-=-=-=-
7b77e0f2-4ff9-4adb-85e4-af249191f27a
[ 1 ] Choice 1: F: Focus on systemd
[ 2 ] Choice 2: B: Systemd but we support exploring alternatives
[ 5 ] Choice 3: A: Support for multiple init systems is Important
[ 6 ] Choice 4: D: Support non-systemd systems, without blocking progress
[ 4 ] Choice 5: H: Support portability, without blocking progress
[ 7 ] Choice 6: E: Support for multiple init systems is Required
[ 8 ] Choice 7: G: Support portability and multiple implementations
[ 3 ] Choice 8: Further Discussion
- - -=-=-=-=-=- Don&#39;t Delete Anything Between These Lines =-=-=-=-=-=-=-=-

&#34; | gpg --clearsign | mail gr_initsystems@vote.debian.org
&lt;/code&gt;&lt;/pre&gt;
</description>
    </item>
    
    <item>
      <title>Collecting statistics from TP-Link HS110 SmartPlugs using collectd</title>
      <link>https://bzed.de/post/2017/12/tp-link_hs110_plugin_for_collectd/</link>
      <pubDate>Wed, 13 Dec 2017 18:15:00 +0000</pubDate>
      
      <guid>https://bzed.de/post/2017/12/tp-link_hs110_plugin_for_collectd/</guid>
      <description>&lt;p&gt;Running a 3d printer alone at home is not necessarily the best idea - so I was
looking for a way to force it off from remote. As &lt;a href=&#34;http://octoprint.org/&#34;&gt;OctoPrint&lt;/a&gt;
user I stumbled upon a
&lt;a href=&#34;https://plugins.octoprint.org/plugins/tplinksmartplug/&#34;&gt;plugin to control TP-Link Smartplugs&lt;/a&gt;,
so I decided to give them a try.
What I found especially nice on the HS110 model was that it is possible to
monitor power usage, current and voltage. Of course I wanted to have a long term graph of it.
The result is a small &lt;a href=&#34;http://collectd.org/&#34;&gt;collectd&lt;/a&gt; plugin, written in Python. It is
available on github: &lt;a href=&#34;https://github.com/bzed/collectd-tplink_hs110&#34;&gt;https://github.com/bzed/collectd-tplink_hs110&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Connecting your 3D printer to OctoPrint automatically</title>
      <link>https://bzed.de/post/2017/11/octoprint_autoconnect_printer/</link>
      <pubDate>Wed, 01 Nov 2017 14:35:00 +0000</pubDate>
      
      <guid>https://bzed.de/post/2017/11/octoprint_autoconnect_printer/</guid>
      <description>&lt;p&gt;Recently I joined the group of 3d printer owners and &lt;a href=&#34;http://octoprint.org/&#34;&gt;OctoPrint&lt;/a&gt;
users. After some days I got annoyed by the fact that so far nobody seems to have
thought about automatically connecting a printer to OctoPrint after turning the
printer on. If you start OctoPrint after your printer, everything works fine. But
here OctoPrint runs 24/7 but I turn off the printer when it is done with printing.&lt;/p&gt;
&lt;p&gt;My solution of the problem is based on udev and systemd and should work on most
recent Linux installations. I&amp;rsquo;ve only tested it on &lt;a href=&#34;https://debian.org/&#34;&gt;Debian&lt;/a&gt;
Stretch, though. I&amp;rsquo;m using the same paths and users as in the official
&lt;a href=&#34;https://github.com/foosel/OctoPrint/wiki/Setup-on-a-Raspberry-Pi-running-Raspbian&#34;&gt;OctoPrint on Raspian setup documentation&lt;/a&gt;.
Make sure to change the user/group and path names if you have a different
installation.&lt;/p&gt;
&lt;h3 id=&#34;talking-to-the-octoprint-api&#34;&gt;Talking to the OctoPrint API&lt;/h3&gt;
&lt;p&gt;First we need a script to talk to the OctoPrint API to issue a connect command.
For that you need to copy the API key from your OctoPrint User settings, also
I&amp;rsquo;m passing the baudrate for my printer, just in case. If OctoPrint ist not
listening on localhost port 5000 make sure to change the URL, too.
For details and other optins please read
&lt;a href=&#34;http://docs.octoprint.org/en/master/api/connection.html&#34;&gt;the API documentation&lt;/a&gt;
and change the code accordingly.&lt;/p&gt;
&lt;p&gt;Save the script to &lt;em&gt;/home/pi/connect_octoprint.py&lt;/em&gt;.
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/home/pi/OctoPrint/venv/bin/python&lt;/span&gt;

OCTOPRINT_URL &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://localhost:5000/api/connection&amp;#39;&lt;/span&gt;
API_KEY &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;AAABBB000YOURAPIKEYHERE000BBBAAA&amp;#39;&lt;/span&gt;
BAUDRATE &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;115200&lt;/span&gt;


&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; requests
&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; sys

port &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sys&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;argv[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
headers &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;X-Api-Key&amp;#39;&lt;/span&gt;: API_KEY}
json &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;connect&amp;#34;&lt;/span&gt;,
  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;port&amp;#34;&lt;/span&gt;: port,
  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;baudrate&amp;#34;&lt;/span&gt;: BAUDRATE,
}

r &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; requests&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;post(
        OCTOPRINT_URL,
        json&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;json,
        headers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;headers
)

&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (r&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status_code &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;204&lt;/span&gt;):
    sys&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;exit(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;:
    &lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt;(r)
    sys&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;exit(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;From now on you&amp;rsquo;ll need root permissions to continue, so use &lt;em&gt;sudo bash&lt;/em&gt;
or login as root.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;creating-a-new-systemd-service&#34;&gt;Creating a new systemd service&lt;/h3&gt;
&lt;p&gt;The next thing we need is a systemd service to execute the script.
Drop the following snippet into &lt;em&gt;/etc/systemd/system/octoprint_connect@.service&lt;/em&gt;
(yes, the @ in the file name is important!).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[Unit]&lt;/span&gt;
&lt;span style=&#34;color:#a6e22e&#34;&gt;Description&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;Connect printer to OctoPrint automatically&lt;/span&gt;
&lt;span style=&#34;color:#a6e22e&#34;&gt;BindsTo&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;dev-%i.device&lt;/span&gt;
&lt;span style=&#34;color:#a6e22e&#34;&gt;After&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;dev-%i.device&lt;/span&gt;

&lt;span style=&#34;color:#66d9ef&#34;&gt;[Service]&lt;/span&gt;
&lt;span style=&#34;color:#a6e22e&#34;&gt;Type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;oneshot&lt;/span&gt;
&lt;span style=&#34;color:#a6e22e&#34;&gt;User&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;pi&lt;/span&gt;
&lt;span style=&#34;color:#a6e22e&#34;&gt;RemainAfterExit&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;yes&lt;/span&gt;
&lt;span style=&#34;color:#a6e22e&#34;&gt;ExecStart&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/home/pi/connect_octoprint.py /dev/%I&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To let systemd know about the new service, run &lt;em&gt;systemctl daemon-reload&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;handling-udev-events&#34;&gt;Handling udev events&lt;/h3&gt;
&lt;p&gt;Finally we need to configure udev to notify systemd as soon as the
3d printer USB device is being connected. For that we need to know
the Verndor and Product ID of the printer&amp;rsquo;s USB port. Normally
it will be some kind of USB-Serial converter.&lt;/p&gt;
&lt;p&gt;To find it, run&lt;/p&gt;
&lt;p&gt;&lt;em&gt;lsusb -v | grep -iE &amp;lsquo;(^bus|idvendor|idproduct)&#39;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You should find lines similar to the following entry:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Bus 001 Device 035: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
  idVendor           0x0403 Future Technology Devices International, Ltd
  idProduct          0x6001 FT232 USB-Serial (UART) IC
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you have no clue which Device your 3d printer is, run &lt;em&gt;lsusb&lt;/em&gt; when it is turned off
and again after turning it on and compare the output.&lt;/p&gt;
&lt;p&gt;In my example the idVendor is &lt;em&gt;0403&lt;/em&gt; and the idProduct &lt;em&gt;6001&lt;/em&gt;.
Create &lt;em&gt;/etc/udev/rules.d/3dprinter.rules&lt;/em&gt; and change my example to match your printer&amp;rsquo;s ids.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;KERNEL==&amp;quot;tty*&amp;quot;, ATTRS{idVendor}==&amp;quot;0403&amp;quot;, ATTRS{idProduct}==&amp;quot;6001&amp;quot;, \
    TAG+=&amp;quot;systemd&amp;quot;, ENV{SYSTEMD_WANTS}=&amp;quot;octoprint_connect@%k.service&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Udev will reload automatically and use the rule - if the syntax is correct.&lt;/p&gt;
&lt;h3 id=&#34;give-it-a-try&#34;&gt;Give it a try&lt;/h3&gt;
&lt;p&gt;Try to powercycle the printer and see if it is connected to OctoPrint automatically.
If you&amp;rsquo;ve done everything right, it should be ready for printing.&lt;/p&gt;
&lt;h3 id=&#34;debugging&#34;&gt;Debugging&lt;/h3&gt;
&lt;p&gt;Debugging this in case it does not work is not a trivial task, but a good start is to look into
the log/output of OctoPrint, maybe the authorization did not work. Next place to look at is
systemd. Running&lt;/p&gt;
&lt;p&gt;_systemctl list-units &amp;lsquo;octoprint_connect*&#39;_&lt;/p&gt;
&lt;p&gt;will show you the name of the
automatically created service. If there is one, you can see its output by running&lt;/p&gt;
&lt;p&gt;&lt;em&gt;journalctl -u octoprint_connect@XXXXXX.service&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;(replace XXXXXX properly from the
systemctl output from above. Details about debugging udev are &lt;a href=&#34;https://wiki.archlinux.org/index.php/udev#Testing_rules_before_loading&#34;&gt;in the Arch wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>bzed-letsencrypt puppet module</title>
      <link>https://bzed.de/post/2016/02/bzed-letsencrypt_puppet_module/</link>
      <pubDate>Fri, 05 Feb 2016 19:55:01 +0000</pubDate>
      
      <guid>https://bzed.de/post/2016/02/bzed-letsencrypt_puppet_module/</guid>
      <description>&lt;p&gt;With the announcement of the &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; dns-01 challenge support
&lt;a href=&#34;http://www.conova.com/&#34;&gt;we&lt;/a&gt; finally had a way to retrieve certificates for those hosts where
http challenges won&amp;rsquo;t work. Also it allows to centralize the signing procedure to avoid the
installation and maintenance of letsencrypt clients on all hosts.&lt;/p&gt;
&lt;p&gt;For an implementation I had the following requirements in my mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Handling of key/csr generation and certificate signing by &lt;a href=&#34;https://puppetlabs.com/community/overview&#34;&gt;puppet&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Private keys don&amp;rsquo;t leave the host they were generated on. If they need to (for HA setups and similar cases), handling needs to be done outside of the letsencrypt puppet module.&lt;/li&gt;
&lt;li&gt;Deployment and cleanup of tokens in our DNS infrastructure should be easy to implement and maintain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After reading trough the source code of various letsencrypt client implementations I
decided to use &lt;a href=&#34;https://github.com/lukas2511/letsencrypt.sh&#34;&gt;letsencrypt.sh&lt;/a&gt;. Mainly
because its dependencies are available pretty much everywhere and adding the
necessary hook is as simple as writing some lines of code in your favourite (scripting) language.
My second favourite was &lt;a href=&#34;https://github.com/xenolf/lego&#34;&gt;lego&lt;/a&gt;, but I wanted to avoid
shipping binaries with puppet, so golang was not an option.&lt;/p&gt;
&lt;p&gt;It took me some days to find enough spare time to write the necessary puppet code,
but finally I managed to release a working module today. It is still not perfect,
but the basic tasks are implemented and the whole key/csr/signing chain works pretty
well.&lt;/p&gt;
&lt;p&gt;And if your hook can handle it, http-01 challenges are possible, too!&lt;/p&gt;
&lt;p&gt;Please give the module a try and send patches if you would like to help to improve it!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Puppet Forge: &lt;a href=&#34;https://forge.puppetlabs.com/bzed/letsencrypt&#34;&gt;https://forge.puppetlabs.com/bzed/letsencrypt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Github: &lt;a href=&#34;https://github.com/bzed/bzed-letsencrypt&#34;&gt;https://github.com/bzed/bzed-letsencrypt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Issue tracker: &lt;a href=&#34;https://github.com/bzed/bzed-letsencrypt/issues&#34;&gt;https://github.com/bzed/bzed-letsencrypt/issues&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>open-vm-tools updated</title>
      <link>https://bzed.de/post/2016/01/open-vm-tools_updated/</link>
      <pubDate>Mon, 04 Jan 2016 10:06:01 +0000</pubDate>
      
      <guid>https://bzed.de/post/2016/01/open-vm-tools_updated/</guid>
      <description>&lt;p&gt;In January 2014 the open-vm-tools package was orphaned and I took the chance to take over the maintenance.
Unfortunately the package is still not 100% in the shape I&amp;rsquo;d like to see it, but I&amp;rsquo;m getting closer.
I have to say Thank You for a lot of good bug reports, especially for those use cases which are
hard to test/reproduce for me (running Debian in a Windows-based VMware Workstation Player for example&amp;hellip;.).&lt;/p&gt;
&lt;p&gt;At &lt;a href=&#34;http://www.conova.com/&#34;&gt;conova communications GmbH&lt;/a&gt;, the company I work for, we are using
the package on all of our Debian VMs, both for customer and internal use. It is essential for us
to have properly working open-vm-tools - not only to be able to shutdown the VM from VMware vCenter, but
also because tools like &lt;a href=&#34;https://www.vmware.com/products/vsphere/features/data-protection&#34;&gt;vSphere Data Protection&lt;/a&gt;
and &lt;a href=&#34;https://www.veeam.com/&#34;&gt;Veeam&lt;/a&gt; depend on it. Good thing is that I can work on and test the
package at work and breakages are detected early and fast normally.&lt;/p&gt;
&lt;p&gt;Getting a good contact to the VMware upstream was easy and the developers there are helpful and reply
pretty fast to their emails. Also as it seems there are finally &amp;ldquo;real&amp;rdquo; commits showing up in the
&lt;a href=&#34;https://github.com/vmware/open-vm-tools/&#34;&gt;open-vm-tools github repository&lt;/a&gt;
again, not only huge single commits with a full release. It is not only nice to see that they are moving into the
right direction again, but also this is really helpful in fixing (urgent) bugs before the next release
of open-vm-tools - or to backport a fix to the versoin in stable/oldstable.&lt;/p&gt;
&lt;p&gt;Since a few days we have open-vm-tools 10.0.5-3227872 in&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;testing &amp;amp; unstable&lt;/li&gt;
&lt;li&gt;jessie-backports&lt;/li&gt;
&lt;li&gt;wheezy-backports-sloppy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are using VMware ESX 5.5 or newer, you should upgrade to the backports versions. Same if you use
a recent VMware player version.&lt;/p&gt;
&lt;p&gt;Please note that since 10.0.0 &lt;strong&gt;the open-vm-dkms package is only necessary if you need the legacy vmxnet module&lt;/strong&gt;.
This is only the case if you are using very old VM hardware versions. &lt;strong&gt;vmxnet3 is shipped in the Debian kernel&lt;/strong&gt;,
so you don&amp;rsquo;t need to compile extra modules to use it. The vmhgfs module was replaced by a fuse-based implementation.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to help maintaining the package, please send bugs/patches via the &lt;a href=&#34;http://bugs.debian.org&#34;&gt;Debian BTS&lt;/a&gt;
or even better - send pull requests for &lt;a href=&#34;https://github.com/bzed/pkg-open-vm-tools&#34;&gt;pkg-open-vm-tools&lt;/a&gt;.
The repository is mirrored to &lt;a href=&#34;https://git.bzed.at/summary/mirror%2Fpkg-open-vm-tools.git&#34;&gt;git.bzed.at&lt;/a&gt; in case
you want to avoid github.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>bzed.de online again</title>
      <link>https://bzed.de/post/2015/11/bzed.de_online_again/</link>
      <pubDate>Tue, 24 Nov 2015 19:41:06 +0000</pubDate>
      
      <guid>https://bzed.de/post/2015/11/bzed.de_online_again/</guid>
      <description>&lt;p&gt;Finally, bzed.de is back online and I&amp;rsquo;m planning to start blogging again! Part
of the reason why I became inactive was the usage of &lt;a href=&#34;http://ikiwiki.info&#34;&gt;ikiwiki&lt;/a&gt;, which is great,
but at end unnecessarily complicated. So I&amp;rsquo;ve migrated by page to
&lt;a href=&#34;http://gohugo.io&#34;&gt;gohugo.io&lt;/a&gt; - a static website generator, written in go.
Hugo has an active community and it is easy to create themes for it or to
enhance it. Also it is using plain
&lt;a href=&#34;https://daringfireball.net/projects/markdown/syntax&#34;&gt;Markdown syntax&lt;/a&gt;
instead of special ikiwiki syntax mixed into it - should make it easy to
migrate away again if necessary.&lt;/p&gt;
&lt;p&gt;In case somebody else would like to convert from ikiwiki to Hugo, here is the
script I&amp;rsquo;ve hacked together to migrate my old blog posts.&lt;/p&gt;
&lt;pre&gt;
&lt;code class=&#34;language-bash&#34;&gt;
#!/bin/bash

find . -type f -name &#39;*.mdwn&#39; | while read i; do
    tmp=`mktemp`
    {
        echo &#39;+++&#39;
        slug=&#34;$(echo $i | sed &#39;s,.*/,,;s,\.mdwn$,,&#39;)&#34;
        echo &#34;slug = \&#34;${slug}\&#34;&#34;
        echo &#34;title = \&#34;$(echo $i | sed &#39;s,.*/,,;s,\.mdwn$,,;s,_, ,g;s/\b\(.\)/\u\1/;s,debian,Debian,g&#39;)\&#34;&#34;
        if grep -q &#39;meta updated&#39; $i; then
            echo -n &#39;date = &#39;
            sed &#39;/meta updated/!d;/.*meta updated.*/s,.*=&#34;,,;s,&#34;.*,,;s,^,&#34;,;s,$,&#34;,&#39; $i
        else
            echo -n &#39;date = &#39;
            git log --diff-filter=A --follow --format=&#39;&#34;%aI&#34;&#39; -1 -- $i
        fi
        if grep -q &#39;\[\[!tag&#39; $i; then
            echo -n &#39;tags =&#39;
            sed &#39;/\[\[!tag/!d;s,[^ ]*tag ,,;s,\]\],,;s,\([^ ]*\),&#34;\1&#34;,g;s/ /,/g;s,^,[,;s,$,],&#39; $i
        fi
        echo &#39;categories = [&#34;linux&#34;]&#39;
        echo &#39;draft = false&#39;
        echo &#39;+++&#39;
        echo &#39;&#39;

        sed -e &#39;/\[\[!tag/d&#39; \
            -e &#39;/meta updated/d&#39; \
            -e &#39;/\[\[!plusone *\]\]/d&#39; \
            -e &#39;s,\[\[!img files[0-9/]*/\([^ ]*\) alt=&#34;\([^&#34;]*\).*,![\2](../\1),g&#39; \
            -e &#39;s,\[\([^]]*\)\](\([^)]*\)),[\1](\2),g&#39; \
            -e &#39;s,\[\[\([^|]*\)|\([^]]*\)\]\],[\1](\2),g&#39; \
            $i
    } &gt; $tmp
    #cat $tmp; rm $tmp 
    mv $tmp `echo $i | sed &#39;s,\.mdwn,.md,g&#39;`
done
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;For the planet Debian readers - only linux related posts will show up on the planet.
If you are interested in my mountain activities and other things I post, please
follow my blog on &lt;a href=&#34;https://bzed.de&#34;&gt;bzed.de&lt;/a&gt; directly.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Report from the Bug Squashing Party in Salzburg</title>
      <link>https://bzed.de/post/2012/06/report_from_the_bug_squashing_party_in_salzburg/</link>
      <pubDate>Fri, 29 Jun 2012 23:00:00 +0000</pubDate>
      
      <guid>https://bzed.de/post/2012/06/report_from_the_bug_squashing_party_in_salzburg/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;../bsp2012_small.png&#34; alt=&#34;bsp_2012_salzburg&#34;&gt;
&lt;img src=&#34;../cityguide_image.jpeg&#34; alt=&#34;photo from salzburg-cityguide.com, Copyright (C) Uwe Brandl&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;participation-and-results&#34;&gt;Participation and Results&lt;/h2&gt;
&lt;p&gt;From June 15-17th we held a Debian BugSquashingParty in Salzburg, hosted and sponsored by
&lt;a href=&#34;http://www.conova.com/&#34;&gt;conova communications GmbH&lt;/a&gt;. It was a fun and busy weekend,
with 15-17 people from 5 countries being around, mainly working on RC bugs in Testing/Unstable.
Gerfried Fuchs (rhonda) also worked on triaging the impact of RC bugs on the version in Squeeze,
while Peter Palfrader (weasel) took care of Tor related things and Debian sysadmin work,
including starting on the new bugs and udd hosts. Phillip Hug (hug) worked on the debian.ch infrastructure.
Together with Miroslav Suchý from Red Hat Bernd Zeimetz (bzed) worked on the packaging of the necessary
libraries and daemons to add (basic) Spacewalk client support to Debian. As soon as the packages passed
NEW and &lt;a href=&#34;http://bugs.debian.org/677871&#34;&gt;#677871&lt;/a&gt; was applied (thanks to the APT guys for working on that
already), managing Debian clients with Spacewalk should work out of the box.
Of course we also had a little keysigning party :)&lt;/p&gt;
&lt;h2 id=&#34;statistics&#34;&gt;Statistics&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;about 68 bugs in unstable/testing were triaged/patched/fixed or at least pinged&lt;/li&gt;
&lt;li&gt;54 bugs were tagged to show if they affect Squeeze, several other bugs were pinged to retrieve necessary
information or to trigger an update in the next stable pointrelease.&lt;/li&gt;
&lt;li&gt;5 packages were introduced into Debian (still in NEW, though) - the Spacewalk client related packages and libapache2-mod-auth-memcookie.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;accomodation&#34;&gt;Accomodation&lt;/h2&gt;
&lt;p&gt;Thanks to Debian funds we were able to provide accomodation for four participants in the JUFA youth hostel in Salzburg.
We had paid in advance for eight, but changing to rooms with a higher category for only 4 people would have been equally or more expensive.&lt;/p&gt;
&lt;h2 id=&#34;pressmedia-coverage&#34;&gt;Press/Media coverage&lt;/h2&gt;
&lt;p&gt;Additionally to being mentioned in the calendars on ProLinux and similar pages, we had some press coverage by the local newspaper and online magazines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.conova.com/fileadmin/user_upload/dl.php?file=files/Presse_Debian_Bug_Squashing_Party_Stadt_Nachrichten.pdf&#34;&gt;Scan of Salzburger Woche / Stadt Nachrichten&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://search.salzburg.com/news/artikel.html?uri=http%3A%2F%2Fsearch.salzburg.com%2Fnews%2Fresource%2Fsn%2Fnews%2Fst152700_15.06.2012_41-40204916&#34;&gt;article on the Salzburger Nachrichten website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://regionaut.meinbezirk.at/salzburg-stadt/leute/debian-bug-squashing-party-erstmals-in-salzburg-d194324.html/action/lesen/1/recommend/1/&#34;&gt;meinbezirk.at&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.salzburg-cityguide.at/de/partyzone/detail/debian-bug-squashing-party---conova_102492&#34;&gt;Salzburg Cityguide - Photogallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;fun-facts&#34;&gt;Fun facts&lt;/h2&gt;
&lt;p&gt;We consumed 2kg of Leberkas, a big plate of &amp;ldquo;Buchteln mit Vanillesosse&amp;rdquo;, about 16000cm^2 of Pizza, about 80 litres of coke, juice, beer and wine and I guess we drank at least the same amount of water. We had coffee made of 1.5kg coffee beans and managed to empty the (formerly well filled) icemaker in the fridge.
Also we had successful training sessions of a standard Debconf game (rules won&amp;rsquo;t be explained here obviously). Maybe we even successfully spread the game to the employees of a commercial linux distribution ;)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Bug squashing party in Salzburg</title>
      <link>https://bzed.de/post/2012/06/bug_squashing_party_in_salzburg/</link>
      <pubDate>Tue, 12 Jun 2012 19:00:00 +0000</pubDate>
      
      <guid>https://bzed.de/post/2012/06/bug_squashing_party_in_salzburg/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;../bsp2012_small.png&#34; alt=&#34;bsp_2012_salzburg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Just as a little reminder, the &lt;a href=&#34;http://wiki.debian.org/BSP/2012/06/at/Salzburg&#34;&gt;Bug Squashing Party in Salzburg&lt;/a&gt; will start in three days.
We still have sponsored accomodation for &lt;del&gt;five&lt;/del&gt; four people left, so don&amp;rsquo;t hesitate to come! Squashing as many RC bugs for Wheezy as possible is on the TODO list for the weekend!
Also we&amp;rsquo;ll work on making Debian a proper &lt;a href=&#34;http://www.redhat.com/spacewalk/&#34;&gt;Spacewalk&lt;/a&gt; client. This might be a bit too late for Wheezy,
but there will be backports :)&lt;/p&gt;
&lt;p&gt;See &lt;em&gt;YOU&lt;/em&gt; in Salzburg!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Working on spacewalk support for and in Debian</title>
      <link>https://bzed.de/post/2012/04/working_on_spacewalk_support_for_and_in_debian/</link>
      <pubDate>Tue, 10 Apr 2012 21:38:00 +0000</pubDate>
      
      <guid>https://bzed.de/post/2012/04/working_on_spacewalk_support_for_and_in_debian/</guid>
      <description>&lt;p&gt;With the latest release of &lt;a href=&#34;http://www.redhat.com/spacewalk/&#34;&gt;Spacewalk&lt;/a&gt; PostgreSQL &lt;a href=&#34;https://fedorahosted.org/spacewalk/wiki/PostgreSQL&#34;&gt;seems to be supported properly&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;finally. Also &lt;a href=&#34;http://osdir.com/ml/spacewalk-devel/2012-03/msg00029.html&#34;&gt;there&lt;/a&gt; &lt;a href=&#34;https://fedorahosted.org/spacewalk/wiki/Deb_support_in_spacewalk&#34;&gt;are&lt;/a&gt; &lt;a href=&#34;https://fedorahosted.org/spacewalk/wiki/RegisteringClients&#34;&gt;efforts&lt;/a&gt;
to support Debian as a client system. So I&amp;rsquo;m thinking about using the &lt;a href=&#34;http://wiki.debian.org/BSP/2012/06/at/Salzburg&#34;&gt;upcoming BugSquashingParty in Salzburg&lt;/a&gt; to&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;analyze the current support of Debian as a client in Spacewalk and maybe work on a better integration&lt;/li&gt;
&lt;li&gt;finalize the packaging and upload the client packages which were prepared by Miroslav Suchý (I hope he will be able to join us!)&lt;/li&gt;
&lt;li&gt;maybe work on packaging the server side of Spacewalk for Debian (Java is involved, so it would be great to have somebody form the Java team around!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;in the hope that &lt;em&gt;you&lt;/em&gt; (yes, you!) are joining me! Please let me know if you are interested to work on Spacewalk related packages, even if you are not able to come to Salzburg.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Nagios-plugins-contrib released</title>
      <link>https://bzed.de/post/2012/02/nagios-plugins-contrib_released/</link>
      <pubDate>Wed, 22 Feb 2012 22:47:19 +0000</pubDate>
      
      <guid>https://bzed.de/post/2012/02/nagios-plugins-contrib_released/</guid>
      <description>&lt;p&gt;Nagios or Icinga users probably know the problem that neither the default plugin packages (nagios-plugins-basic and -standard)
nor the few other plugin packages ship all the plugins you need to monitor your hardware and software properly. And unless you
have &lt;a href=&#34;http://puppetlabs.com/&#34;&gt;puppet&lt;/a&gt;, &lt;a href=&#34;http://cfengine.com/&#34;&gt;cfengine&lt;/a&gt; or some other automation software, you probably just start searching plugins on
&lt;a href=&#34;http://exchange.nagios.org/&#34;&gt;Nagios Exchange&lt;/a&gt;, &lt;a href=&#34;https://www.monitoringexchange.org/&#34;&gt;MonitoringExchange&lt;/a&gt; or some other machines you are monitoring already.&lt;/p&gt;
&lt;p&gt;Your problem shall be solved! &lt;a href=&#34;http://packages.qa.debian.org/n/nagios-plugins-contrib.html&#34;&gt;nagios-plugins-contrib&lt;/a&gt; passed NEW today. It is a collection of various useful plugins,
maintained within the Debian Nagios Maintainer Group. So far it contains only 6 plugins (check_email_delivery, check_ipmi_sensor, check_lm_sensors, check_memcached, check_raid, check_rbl),
but more are going to come.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../lm_sensors.png&#34; alt=&#34;check_lm_sensors in action&#34;&gt;&lt;/p&gt;
&lt;p&gt;To have your favorite plugins added to the package we would like to encourage you to send pull requests, either using &lt;a href=&#34;https://github.com/bzed/pkg-nagios-plugins-contrib&#34;&gt;github&lt;/a&gt;,
&lt;a href=&#34;http://anonscm.debian.org/gitweb/?p=pkg-nagios/pkg-nagios-plugins-contrib;a=summary&#34;&gt;alioth&lt;/a&gt; or your personal repository. Please keep in mind that you&amp;rsquo;ll be added to the Uploaders
of the package automatically to ensure that you keep your plugin updated and in a good shape.
See &lt;a href=&#34;http://anonscm.debian.org/gitweb/?p=pkg-nagios/pkg-nagios-plugins-contrib;a=blob;f=debian/README.source;hb=HEAD&#34;&gt;debian/README.source&lt;/a&gt; for some instructions on adding new plugins.
Unmaintained plugins will be removed!
Of course you can also submit bug reports to
have a new plugin added, but you have to convince somebody to maintain it for you (or that he wants to use the plugin and needs to maintain it therefore :) ).&lt;/p&gt;
&lt;p&gt;We might also also have a similar package in contrib as a lot of commonly used plugins require non-free software, so don&amp;rsquo;t hesitate to prepare plugins for inclusion in such a package and let us know!&lt;/p&gt;
&lt;p&gt;Suggestions and ideas for improvement are always welcome. And so is help to maintain the packages!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Re-indenting files with vim</title>
      <link>https://bzed.de/post/2011/07/re-indenting_files_with_vim/</link>
      <pubDate>Tue, 12 Jul 2011 17:28:45 +0200</pubDate>
      
      <guid>https://bzed.de/post/2011/07/re-indenting_files_with_vim/</guid>
      <description>&lt;p&gt;Sometimes projects with a long history of committers tend to collect various styles of indentation.
Unfortunately not for all programming languages exist specialized tools like &lt;em&gt;indent&lt;/em&gt; for C/C++, so we need to find a different way to mass-indent files properly.
Using &lt;a href=&#34;http://packages.debian.org/search?keywords=vim&#34;&gt;vim&lt;/a&gt; is one of them.&lt;/p&gt;
&lt;p&gt;First you need to create a file (let&amp;rsquo;s call it &lt;em&gt;/tmp/indent.vim&lt;/em&gt;) including all the vim commands you want to run on your code. The following piece is a good start:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-vim&#34;&gt;
gg=G
:x!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now run vim on your source code files, using the created vim script file. The following example reindents all .php files in the current folder and subfolders&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-vim&#34;&gt;
find . -name &#39;*.php&#39; -exec vim -s /tmp/indent.vim {} \;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&amp;rsquo;t like the result it might be that the indentation settings in you .vimrc don&amp;rsquo;t suit your needs. Of course you are able to add other fancy vim commands to modify your files - like adding or modifying copyright headers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Plusone button plugin for ikiwiki</title>
      <link>https://bzed.de/post/2011/07/plusone_button_plugin_for_ikiwiki/</link>
      <pubDate>Sat, 02 Jul 2011 16:29:32 +0200</pubDate>
      
      <guid>https://bzed.de/post/2011/07/plusone_button_plugin_for_ikiwiki/</guid>
      <description>&lt;p&gt;Just published an ikiwiki plugin to add google&amp;rsquo;s +1 buttons. See &lt;a href=&#34;http://ikiwiki.info/plugins/contrib/plusone/&#34;&gt;ikiwiki.info/plugins/contrib/plusone/&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;And if you enable html5 in your ikiwiki settings, it won&amp;rsquo;t show up on planet debian as ugly g:plusone tag.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Merkaartor development version in experimental</title>
      <link>https://bzed.de/post/2010/10/merkaartor_development_version_in_experimental/</link>
      <pubDate>Mon, 25 Oct 2010 15:28:22 +0000</pubDate>
      
      <guid>https://bzed.de/post/2010/10/merkaartor_development_version_in_experimental/</guid>
      <description>&lt;p&gt;For people who do not follow the &lt;a href=&#34;http://merkaartor.be/&#34;&gt;Merkaartor&lt;/a&gt; &lt;a href=&#34;http://merkaartor.be/wiki/merkaartor/MainlingList&#34;&gt;mailing list&lt;/a&gt;: Regulary updated development snapshots are &lt;a href=&#34;http://packages.qa.debian.org/m/merkaartor.html&#34;&gt;available in experimental&lt;/a&gt; again. Please report bugs, either in the Debian BTS or in the &lt;a href=&#34;http://merkaartor.be/projects/merkaartor/issues&#34;&gt;upstream bugtracker&lt;/a&gt;. Latest addition to Merkaartor is a plugin to support the &lt;a href=&#34;http://wiki.openstreetmap.org/wiki/WikiProject_France/Cadastre&#34;&gt;French Cadastre peoject&lt;/a&gt;.
&lt;img src=&#34;../merkaartor.png&#34; alt=&#34;Merkaartor development version 0.17&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Monitoring scientific atlanta cable modems with munin</title>
      <link>https://bzed.de/post/2010/09/monitoring_scientific_atlanta_cable_modems_with_munin/</link>
      <pubDate>Wed, 22 Sep 2010 22:57:23 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/09/monitoring_scientific_atlanta_cable_modems_with_munin/</guid>
      <description>&lt;p&gt;Usually I like to monitor as much as possible. but unfortunately my cable provider does not allow to access the cable modem via SNMP, so I had to find a different way to retrieve at least some basic information. After a bit of googling I figured out how to access the web interface of the Scientific Atlanta modems. The model here is a EPC2203 - seems to work for various models, though.
These modems do not only provide access to the traffic within the cable network on their internal networking port (ever tried tcpdump on that?), but they also have their own IP (192.168.100.1). To be able to access the modem you should add something like&lt;/p&gt;
&lt;pre&gt;
post-up ip addr add 192.168.100.2/31 dev extern0 || true
&lt;/pre&gt;
&lt;p&gt;to the configuration of the interface which is connected to the cable modem. Make sure you&amp;rsquo;re not using the same network internally - or find a proper way to handle it. If you access http://192.168.100.1/ then, you&amp;rsquo;ll be able to retrieve some basic information form the modem. If you google a bit longer, you might even be able to do more stuff!&lt;/p&gt;
&lt;p&gt;But to monitor the power levels and signal-to-noise ratio, this is all we need. I&amp;rsquo;m using &lt;a href=&#34;http://munin-monitoring.org/&#34;&gt;Munin&lt;/a&gt; usually, as the web interface is just much easier to setup than the &lt;a href=&#34;http://collectd.org/&#34;&gt;collectd&lt;/a&gt; CGI (hint, hint!!). Drop the following two scripts into the Munin plugins folder. wget, sed and grep is all they need, so it should be easy to get them working.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-sh&#34;&gt;
#!/bin/sh

# Copyright (c) 2010 Bernd Zeimetz &lt;bzed@debian.org&gt;
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED &#34;AS IS&#34; AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE

PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH

if [ &#34;$1&#34; = &#34;config&#34; ]; then
        echo graph_title cable modem power level
        echo &#39;graph_args --base 1000&#39;
        echo &#39;graph_vlabel dBmV&#39;
        echo &#39;graph_category network&#39;
        echo &#39;graph_info This graph shows receive and transmit power levels of the Scientific-Atlanta cable modem.&#39;
        echo &#34;receive.label receive&#34;
        echo &#34;receive.info Receive power level&#34;
        echo &#39;receive.draw LINE2&#39;
        echo &#39;receive.type GAUGE&#39;
        echo &#34;transmit.label transmit&#34;
        echo &#34;transmit.info Transmit power level&#34;
        echo &#34;transmit.draw LINE2&#34;
        echo &#34;transmit.type GAUGE&#34;
        exit 0
fi

wget -q -O - http://192.168.100.1/system.asp | grep dBmV | \
    sed -e &#39;s,.*&amp;nbsp;,,;s, dBmV.*,,&#39; \
        -e &#39;1s/^/receive.value /&#39; \
        -e &#39;2s/^/transmit.value /&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-sh&#34;&gt;
#!/bin/sh

# Copyright (c) 2010 Bernd Zeimetz &lt;bzed@debian.org&gt;
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED &#34;AS IS&#34; AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH

if [ &#34;$1&#34; = &#34;config&#34; ]; then
        echo graph_title cable modem signal to noise ratio
        echo &#39;graph_args --base 1000&#39;
        echo &#39;graph_vlabel dB&#39;
        echo &#39;graph_category network&#39;
        echo &#39;graph_info This graph shows the signal to noise ratio of the Scientific-Atlanta cable modem.&#39;
        echo &#34;signalnoise.label ratio&#34;
        echo &#34;signalnoise.info Signal to noise ratio&#34;
        echo &#39;signalnoise.draw LINE2&#39;
        echo &#39;signalnoise.type GAUGE&#39;
        exit 0
fi
wget -q -O - http://192.168.100.1/system.asp |\
     grep &#39;Signal to Noise&#39; | \
     sed &#39;s,.*&amp;nbsp;,signalnoise.value ,;s, dB.*,,&#39;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;../cablemodem_powerlevel-year.png&#34; alt=&#34;Munin plugin cablemodem powerlevel&#34;&gt;
&lt;img src=&#34;../cablemodem_signalnoise-year.png&#34; alt=&#34;Munin plugin cablemodem signal noise ratio&#34;&gt;&lt;/p&gt;
&lt;p&gt;Guess you can easily figure out when I had issues with my cable connection.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Refactoring the guruplug server plus - part two</title>
      <link>https://bzed.de/post/2010/09/refactoring_the_guruplug_server_plus_-_part_two/</link>
      <pubDate>Wed, 22 Sep 2010 11:58:10 +0000</pubDate>
      
      <guid>https://bzed.de/post/2010/09/refactoring_the_guruplug_server_plus_-_part_two/</guid>
      <description>&lt;p&gt;Although the modifications described in my &lt;a href=&#34;https://bzed.de/posts/2010/09/refactoring_the_guruplug_server_plus&#34;&gt;last blog post about refactoring the GuruPlug&lt;/a&gt; resulted in a well working GuruPlug, I&amp;rsquo;ve decided to give it some more air to breath at the top of the case. The large round piece of plastic in the middle asked to be removed - and now a shiny 60mm fan grill protects the board from the bad world outside of the case.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1938.JPG&#34; alt=&#34;GuruPlug Server Plus case with fan grill (1/2)&#34;&gt;
&lt;img src=&#34;../IMG_1949.JPG&#34; alt=&#34;GuruPlug Server Plus case with fan grill (2/2)&#34;&gt;&lt;/p&gt;
&lt;p&gt;So far its working fine and not too hot. Guess I&amp;rsquo;ll see what happens next summer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Refactoring the guruplug server plus</title>
      <link>https://bzed.de/post/2010/09/refactoring_the_guruplug_server_plus/</link>
      <pubDate>Fri, 10 Sep 2010 22:24:12 +0000</pubDate>
      
      <guid>https://bzed.de/post/2010/09/refactoring_the_guruplug_server_plus/</guid>
      <description>&lt;p&gt;As mentioned in &lt;a href=&#34;https://bzed.de/posts/2010/08/the_guruplug_server_plus_-_major_design_and_qa_fail&#34;&gt;my last blog post&lt;/a&gt; the GuruPlug Server Plus needs some major refactoring before it can be used. Not doing so will make you end up with a fried brick. There are various stories in the forums about cooling it properly, so you might want to have a look first instead of following mine blindly. And of course - whatever you do - it is your fault when you end up with a brick, not mine!.&lt;/p&gt;
&lt;h2 id=&#34;replacing-the-power-supply&#34;&gt;Replacing the power supply&lt;/h2&gt;
&lt;p&gt;As I would never ever trust the PSU (see &lt;a href=&#34;https://bzed.de/posts/2010/08/the_guruplug_server_plus_-_major_design_and_qa_fail&#34;&gt;my last blog post&lt;/a&gt; for the gory details) and some additional free space in the case is necessary, it is time to rip it out. As replacement I&amp;rsquo;ve ordered an &lt;a href=&#34;http://www.reichelt.de/?ACTION=3;ARTICLE=35151;PROVID=2402&#34;&gt;external 5V/20W PSU&lt;/a&gt;. To connect it to the plug I&amp;rsquo;ve drilled a hole into the case and added a &lt;a href=&#34;http://www.reichelt.de/?ACTION=3;ARTICLE=8524;PROVID=2402&#34;&gt;proper connector&lt;/a&gt; after soldering the original cable from the old PSU to it. Make sure to add some retainer to stop the cable from touching the CPU/memory heat sinks later.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1926.JPG&#34; alt=&#34;GuruPlug Server Plus PSU replacement&#34;&gt;
&lt;img src=&#34;../IMG_1902.JPG&#34; alt=&#34;GuruPlug Server Plus PSU cabling&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;proper-heatsinks&#34;&gt;Proper heatsinks&lt;/h2&gt;
&lt;p&gt;One of the biggest problems in the original GuruPlug design is the heat spreading and collecting piece of alloy, which probably makes things even worse than better. After some discussion in #debian-devel the idea came up, that the board should be able to run fine without a heatsink - at least when idling. That is the case, indeed. So let&amp;rsquo;s get rid of that piece of alloy, together with the holders and springs.&lt;/p&gt;
&lt;p&gt;Unfortunately heat things are necessary to handle some work load. To mount them make sure you get some good thermal glue as you don&amp;rsquo;t want to insulate the chips from their heat sinks. I&amp;rsquo;ve used &lt;a href=&#34;http://www.reichelt.de/?ACTION=3;ARTICLE=38063;PROVID=2402&#34;&gt;Arctic Silver II thermal glue&lt;/a&gt; - not cheap, but working well.
Make sure to clean the heat sinks and chips properly with alcohol (2-Propanol is my favourite for that), so there is no fat and dust left. When you use the glue be careful to read the documentation properly and make sure you apply only as much as necessary - a thin coating is enough. After applying the glue and mounting the heat sink you need a clamp to put some pressure on it while the glue dries.&lt;/p&gt;
&lt;h3 id=&#34;heat-sinks-for-the-memory&#34;&gt;Heat sinks for the memory&lt;/h3&gt;
&lt;p&gt;As there is a lot of space around the memory chips, I&amp;rsquo;ve got some &lt;a href=&#34;http://www.reichelt.de/?ACTION=3;ARTICLE=100974;PROVID=2402&#34;&gt;14x14x6mm&lt;/a&gt; heat sinks. Luckily there are only small parts on the other side of the board, so it was not hard to attach clamps to ensure the glue is able to dry properly. In case largish amounts of glue are squeezing out between heat sink and chip you probably want to start from scratch and clean everything (quickly!) with alcohol again.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1877.JPG&#34; alt=&#34;GuruPlug Server Plus memory heat sink clamping&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;gigabit-ethernet-phy-and-cpu-heatsinks&#34;&gt;Gigabit Ethernet PHY and CPU heatsinks&lt;/h3&gt;
&lt;p&gt;PHY and CPU need proper heatsinks as they&amp;rsquo;re becoming pretty hot under load. Due to space limitations I had to stick with a &lt;a href=&#34;http://www.reichelt.de/?ACTION=3;ARTICLE=100980;PROVID=2402&#34;&gt;17x17x20mm&lt;/a&gt; heat sink for the PHY. I&amp;rsquo;ve tried to get a largish heat sink with BGA mount for the CPU, but I was not able to find one in short time and without ordering 1000 of them. So I&amp;rsquo;ve got another one of the 17x17x20mm model for the CPU. Later I found two other heat sinks which might fit on the GuruPlug&amp;rsquo;s CPU: &lt;a href=&#34;http://www.mercateo.com/p/139A-1373255/KUEHLKOERPER_19X19X25MM_Typ_MBH19002_25P_2_6.html&#34;&gt;Malico 19x19x25mm&lt;/a&gt; or a &lt;a href=&#34;http://www.mercateo.com/p/139A-1669111/HEAT_SINK_MAXIGRIP_Typ_ATS_51190R_C2_R0.html&#34;&gt;Advanced Thermal Solutions Maxigrip&lt;/a&gt;. But for now the smaller one will have to do the job, also I&amp;rsquo;m scared to removed it without destroying the CPU.&lt;/p&gt;
&lt;p&gt;To mount the heat sink on the PHY a bit of preparation is necessary to ensure that the glue doesn&amp;rsquo;t result in short cuts on the IC&amp;rsquo;s pins. The arctic silver documentation recommends to use silicone on the pins to stop the glue. As I neither had the proper silicone nor did I want to make such a mess, I&amp;rsquo;ve decided to get a sticky insulating tape and some tooth picks to mount it properly on the IC pins. Make sure to do a proper job here! With good clamps you can work on the PHY while the memory heat sink glue is still drying.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1878.JPG&#34; alt=&#34;GuruPlug Server Plus - preparing the PHY&#34;&gt;&lt;/p&gt;
&lt;p&gt;The other problem on this side of the board is that some higher parts are mounted on the lower side of the board, so make sure to get some foam to protect them from your clamps. Except of the size of the heat sinks there is no real difference to the small ones: add glue, mount the heat sink and fix it with a clamp.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1882.JPG&#34; alt=&#34;GuruPlug Server Plus - mounting the PHY heatsink&#34;&gt;&lt;/p&gt;
&lt;p&gt;Before the glue dries completely make sure you remove the duct tape strips again. Be careful not to wipe any excess glue onto the IC pins. If you manage to do so you might want to remove and clean everything properly. So just be careful and everything should be fine.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1884.JPG&#34; alt=&#34;GuruPlug Server Plus - mounting the PHY heatsink 3&#34;&gt;&lt;/p&gt;
&lt;p&gt;Mounting the heat sink on the CPU is easier as the CPU is a nice BGA package. No need to protect pins an there are none.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1885.JPG&#34; alt=&#34;GuruPlug Server Plus - mounting the CPU heatsink&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;finished&#34;&gt;Finished&lt;/h3&gt;
&lt;p&gt;As you&amp;rsquo;re able to see on the photo I did not the very perfect job, but fine enough to work properly.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1891.JPG&#34; alt=&#34;GuruPlug Server Plus - heatsinks&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;first-tests-with-the-new-heatsinks&#34;&gt;First tests with the new heatsinks&lt;/h2&gt;
&lt;p&gt;Some tests with stress and some heavy network traffic showed quickly that the heat sinks are working well! But not well enough to be able to mount them into the original closed case (how the hell was this supposed to work before!?). Without any air to breath the temperature on the CPU heat sink went up to 85 deg C quickly. So on the CPU&amp;rsquo;s die are  &amp;gt; 100 deg C, which is at least close to the max allowed temperature.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1894.JPG&#34; alt=&#34;GuruPlug Server Plus - still too hot&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;adding-air-holes&#34;&gt;Adding air holes&lt;/h2&gt;
&lt;p&gt;Obviously some additional air holes are necessary. After meeting my drill and cutter, the original case looks a bit like a piece of cheese now.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1905.JPG&#34; alt=&#34;GuruPlug Server Plus - case with air holes 1&#34;&gt;
&lt;img src=&#34;../IMG_1909.JPG&#34; alt=&#34;GuruPlug Server Plus - case with air holes 2&#34;&gt;&lt;/p&gt;
&lt;p&gt;Some more tests show that the temperature sticks around 76 deg C under heavy load now. That is still pretty hot, especially when the temperature in the room becomes hotter in summer. As I&amp;rsquo;m not going to run a lot of traffic trough it (my cable connection is limited to 20 MBit/s anyway), I guess it will work. Below is a graph I&amp;rsquo;ve recorded with my multimeter and &lt;a href=&#34;http://packages.debian.org/qtdmm&#34;&gt;qtdmm&lt;/a&gt;. It shows that the temperature rises to ~76 deg C and stays there.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../qtdmm.png&#34; alt=&#34;GuruPlug Server Plus - temperature curve&#34;&gt;&lt;/p&gt;
&lt;p&gt;Not sure if I could introuce some more load, the CPU had a load of 6 running stress. Network traffic was around 2x100MBit/s again. I could imagine with 2xGBit the CPU and PHY would become much hotter (no idea if it would be able to handle it at all, though). The PHY was usually a bit cooler than the CPU, so I didn&amp;rsquo;t spend time to measure the temperature properly.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;My opinion is still the the original design of the plug is an insane QA and design failure. There is no way that it could ever work as shipped originally. If I&amp;rsquo;d have to design a new case for it, it should have a single insulated compartment for a PSU to ensure that no contact with high voltage is possible. The case around all other parts should be made of alloy with a lot of air holes. So the case could be used as heat sink (properly done, not with these insulating duct tape strips) and at the same time allow air circulation and a nice view on the LEDs on the board. Of course the case would be much more expensive than, but I&amp;rsquo;m sure it would work properly and would be worth the money. And if done peoperly, it would look much better than this blinking plastic thing. I could imagine it would sell well!&lt;/p&gt;
&lt;p&gt;So at the end I&amp;rsquo;m wondering what GlobalScale Technologies will do. I doubt it will be possible to create the &amp;lsquo;professional upgrade kit&amp;rsquo; as they had announced before. Replacing all units is the only proper way. We&amp;rsquo;ll see what happens. At least my GuruPlug is working well now and it will be used as replacement for my OpenWRT router soon. WiFi is not working, but that will be handled by my media center anyway.&lt;/p&gt;
&lt;h2 id=&#34;update&#34;&gt;Update&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;I&amp;rsquo;ve done some more modifications - keep on reading &lt;a href=&#34;https://bzed.de/posts/2010/09/refactoring_the_guruplug_server_plus_-_part_two&#34;&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1913.JPG&#34; alt=&#34;GuruPlug Server Plus - running plug&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The guruplug server plus - major design and qa fail</title>
      <link>https://bzed.de/post/2010/08/the_guruplug_server_plus_-_major_design_and_qa_fail/</link>
      <pubDate>Sun, 29 Aug 2010 10:25:24 +0000</pubDate>
      
      <guid>https://bzed.de/post/2010/08/the_guruplug_server_plus_-_major_design_and_qa_fail/</guid>
      <description>&lt;p&gt;As a lot of people are coming to my blog to read the &lt;a href=&#34;https://bzed.de/posts/2010/05/installing_debian_on_the_guruplug_server_plus&#34;&gt;installing instructions for Debian on the GuruPlug Server Plus&lt;/a&gt;, I shall not hide my opinion about it: &lt;b&gt;It is a major design and QA fail. Don&amp;rsquo;t waste your money on it&lt;/b&gt;.&lt;/p&gt;
&lt;h2 id=&#34;the-power-supply&#34;&gt;The power supply&lt;/h2&gt;
&lt;p&gt;Although I&amp;rsquo;ve ordered the Guruplug pretty early with the promise, that I&amp;rsquo;d have it in April, it arrived at the end of May due to &lt;a href=&#34;http://www.newit.co.uk/forum/index.php/topic,323.msg1514.html#msg1514&#34;&gt;QA issues with the power supply&lt;/a&gt;. While I appreciate that they didn&amp;rsquo;t deliver broken power supplies, I would have preferred not to receive one which was &amp;ldquo;fixed&amp;rdquo; by somebody who uses the soldering iron like an axe. Here are some macro photos to show the gory details:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1867.JPG&#34; alt=&#34;GuruPlug Server Plus PSU 1&#34;&gt;
&lt;img src=&#34;../IMG_1869.JPG&#34; alt=&#34;GuruPlug Server Plus PSU 2&#34;&gt;
&lt;img src=&#34;../IMG_1870.JPG&#34; alt=&#34;GuruPlug Server Plus PSU 3&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;software-issues&#34;&gt;Software issues&lt;/h2&gt;
&lt;p&gt;The version of UBoot which shipped with the device was only able to boot from NAND and network. Booting from USB failed and ext2 support was missing, too. Didn&amp;rsquo;t have a look if the community came up with a fixed UBoot version yet, but in my opinion a piece of hardware for &amp;gt;100 EUR should not have such flaws.&lt;/p&gt;
&lt;h2 id=&#34;thermal-issues&#34;&gt;Thermal issues&lt;/h2&gt;
&lt;p&gt;Using the Guruplug with more than one 100 MBit/s connection is just not possible, as it would toast itself to death. For the details have a look at &lt;a href=&#34;https://www.newit.co.uk/forum/index.php/topic,388.0.html&#34;&gt;this&lt;/a&gt; discussion in the NewIT forum, it links to a lot of interesting photos and postings.
This issue is a major design and QA failure. Even without knowing what the datasheets say, it is easy to imagine that a thin piece of alloy is not the proper way to cool a CPU and network chip. Especially not when it is mounted with cheapish pads instead of a proper paste.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1871.JPG&#34; alt=&#34;GuruPlug Server Plus Cooling 1&#34;&gt;&lt;/p&gt;
&lt;p&gt;As it seems the plan was to send the heat to the shielding of the network/USB/eSata ports (the area is marked red as my first plan was to remove that part of the alloy and reuse the heat-spreader), a strong indication for that is that this is the only area with holes for air circulation. I could imagine that it was not possible to have these holes next to the PSU, which was mounted above the heat-spreader, to avoid electrical shocks.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1873.JPG&#34; alt=&#34;GuruPlug Server Plus Cooling 2&#34;&gt;&lt;/p&gt;
&lt;p&gt;As there was no other opening for the heat to leave the case, even the microSD card became pretty hot - I&amp;rsquo;ve measured temperatures around 60 deg. C next to the card - while CPU and 100MB/s network were idling.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;http://www.globalscaletechnologies.com/news.aspx?showarticle=4&#34;&gt;official information from GlobalScale Technologies&lt;/a&gt; is that only 10/100MBit/s should be used as workaround to avoid overheating until a &amp;ldquo;Professional Upgrade Kit&amp;rdquo; is released. As mentioned &lt;a href=&#34;http://www.newit.co.uk/forum/index.php/topic,323.msg2538.html#msg2538&#34;&gt;here&lt;/a&gt; the upgrade kit announcement was removed silently from GST&amp;rsquo;s website. To be honest, this doesn&amp;rsquo;t make me wonder. There is no way to fix the Guruplug with an external fan or any other external magic as the only way to fix it is to cool the CPU and networking chip properly.&lt;/p&gt;
&lt;p&gt;There are various workarounds for the cooling issues posted to the forums. I&amp;rsquo;ve decided to rip out the power supply and heat spreader out of the case and get a nice external PSU. The new connector is mounted, ready to supply the GuruPlug&amp;rsquo;s board with power.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../IMG_1874.JPG&#34; alt=&#34;GuruPlug Server Plus power connector&#34;&gt;&lt;/p&gt;
&lt;p&gt;Currently I&amp;rsquo;m waiting for the new heat sinks and glue to arrive. Then I&amp;rsquo;ll give it a try to mount eveything in the small case again, probably with some additional air holes. As soon as I have a workign solution, I&amp;rsquo;ll blog about it again.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Gimp-plugin-registry 3.5-1</title>
      <link>https://bzed.de/post/2010/07/gimp-plugin-registry_3.5-1/</link>
      <pubDate>Sun, 04 Jul 2010 22:41:34 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/07/gimp-plugin-registry_3.5-1/</guid>
      <description>&lt;p&gt;During the last three months and since my &lt;a href=&#34;https://bzed.de/posts/2010/04/gimp-plugin-registry_package_updated&#34;&gt;last blog-post about gimp-plugin-registry&lt;/a&gt; a lot happened: Mainly a large number of new plugins was added, but also various enhancements and bugfixes went into the package, together with updates for various already included plugins.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../gimp_screenshot.png&#34; alt=&#34;The GIMP screenshot with open FX-Foundry menu&#34;&gt;&lt;/p&gt;
&lt;p&gt;For those who don&amp;rsquo;t know &lt;a href=&#34;http://packages.debian.org/sid/gimp-plugin-registry&#34;&gt;gimp-plugin-registry&lt;/a&gt; yet, it is a collection of scripts and plugins for &lt;a href=&#34;http://www.gimp.org/&#34;&gt;The GIMP&lt;/a&gt;. The name is based on the webpage &lt;a href=&#34;http://registry.gimp.org/&#34;&gt;GIMP Plugin Registry&lt;/a&gt;, where most (new) plugins and scripts are listed. So far the package ships with 170 scripts/plugins. Most of the scripts are written in TinyScheme, but there are also several plugins in C or Python. Probably most noticeable is the inclusion of the &lt;a href=&#34;http://gimpfx-foundry.sourceforge.net/&#34;&gt;GIMP FX Foundry&lt;/a&gt;, which is an awesome collection of 124 scripts.&lt;/p&gt;
&lt;p&gt;Below follows a list of all scripts and plugins as shown in the long description of the Debian package. New plugins are marked with a &lt;strong&gt;bold&lt;/strong&gt; fontface.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add Film Grain (2.4):
Helps adding realistic film grain to BW images.&lt;/li&gt;
&lt;li&gt;btn4ws (0.8.0.1):
Generates a series of buttons in three states (passive, active, pressed)
with various selectable effects on them, as well as XHTML, CSS and
JavaScript code for using the buttons.&lt;/li&gt;
&lt;li&gt;Black and White Film Simulation (1.1):
Converts the selected layer into Black and White using
the channel mixer. Tries to produce results resembling
tonal qualities of film.&lt;/li&gt;
&lt;li&gt;CMYK Tiff 2 PDF for Gimp (20090321):
This plugin completes the prepress workflow of using Separate+ to generate
CMYK Tiff images by allowing you to convert the saved CMYK Tiff image into
a PDF file.&lt;/li&gt;
&lt;li&gt;Contact Sheet (2.02):
Generates a contact sheet(s) for a directory of images.&lt;/li&gt;
&lt;li&gt;David&amp;rsquo;s Batch Processor (1.1.9):
A simple batch processing plugin for The Gimp - it allows
the user to automatically perform operations (such as resize)
on a collection of image files.&lt;/li&gt;
&lt;li&gt;Diana-Holga2 (c):
Diana/Holga Toys Cameras effect simulator.&lt;/li&gt;
&lt;li&gt;El Samuko GIMP Scripts:
&lt;ul&gt;
&lt;li&gt;Antique Photo Border Script:
This script simulates a yellowed and slightly jagged border
like these of old photographies.&lt;/li&gt;
&lt;li&gt;Che Guevara Script:
This script generates a poster like the famous Che Guevara
one from Jim Fitzpatrick.&lt;/li&gt;
&lt;li&gt;Cyanotype Script:
This script simulates the Cyanotype printing process.&lt;/li&gt;
&lt;li&gt;Difference Layer Script
This script generates two difference layers from the two layers
on the top. It&amp;rsquo;s similar to GIMP&amp;rsquo;s built-in Grain Extract/Merge
function, but the tonal range is bigger.
Now you can apply further editing and &amp;ldquo;switch on/off&amp;rdquo; the
adjustment by switching the visibility of the subtractive and
the additive layer.
Also you can change the modification intensity by changing the
intensity of these two layers.&lt;/li&gt;
&lt;li&gt;Escape Line Script:
This script creates escaping lines from any point. It&amp;rsquo;s similar
in function to the built-in Line-Nova Script, but much more
flexible. So you can chose the center, the thickness, the angle,
the length, the offset and the randomness.&lt;/li&gt;
&lt;li&gt;Film Grain Script:
This is yet another script which simulates the typical film grain
of high ISO pictures.&lt;/li&gt;
&lt;li&gt;First Photo Border Script:
This script simulates the cut-off of the first picture of a film
roll of cheap cameras like Lomo.&lt;/li&gt;
&lt;li&gt;Lomo Script with Old Style Colors
This script simulates the Lomo effect.&lt;/li&gt;
&lt;li&gt;Movie 300 Script:
This script simulates the color style of the movie &amp;ldquo;300&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;National Geographic Script:
This script simulates a high quality (portrait) photo like
these from the National Geographic.&lt;/li&gt;
&lt;li&gt;Obama &amp;ldquo;HOPE&amp;rdquo; Script:
This script generates a poster like the famous Obama &amp;ldquo;HOPE&amp;rdquo;
one from Shepard Fairey.&lt;/li&gt;
&lt;li&gt;Rainy Landscape Script:
This script changes a dry landscape to a wet one.&lt;/li&gt;
&lt;li&gt;Photochrom Script:
This script simulates a photochrom image, a lithographic printing
process from the 1890&amp;rsquo;s.&lt;/li&gt;
&lt;li&gt;Sprocket Hole Script:
This script simulates complete exposed 35mm film strips with frame
numbers, lettering, overexposed sprocketholes and DX film edge barcodes.&lt;/li&gt;
&lt;li&gt;Sunny Landscape Script:
This script changes a rainy landscape to a sunny one.&lt;/li&gt;
&lt;li&gt;Technicolor 2 Color Script:
This script simulates the 2 Color Technicolor effect.&lt;/li&gt;
&lt;li&gt;Technicolor 3 Color Script:
This script simulates the 3 Color Technicolor effect.&lt;/li&gt;
&lt;li&gt;Vintage Look Script:
This script simulates a 70s vintage look.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EZ Perspective:
Specialized tool for easily correcting or changing perspective.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Fix-CA (3.0.2):
Corrects chromatic aberration in photos&lt;/li&gt;
&lt;li&gt;Focus-Blur (3.2.5):
This plugin tries to simulate an out-of-focus blur&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GIMP FX Foundry (r111):
Probably the largest script collection available for The GIMP.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GIMP-Mask:
Do and undo several popular image masking (that is, censoring)&lt;/strong&gt;
methods (CP, FL, Q0, MEKO).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warming and Cooling Filters (May 24, 2010):
Warm or cool an image using one of several methods:
Wratten, Roy&amp;rsquo;s Warm, Brauer&amp;rsquo;s Warm, Pasty Cadaveric Look&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Layer-Effects (2.4):
This is a series of scripts that implement various layer effects:
Drop Shadow, Inner Shadow, Outer Glow, Inner Glow, Bevel and Emboss,
Satin, Color Overlay, Gradient Overlay, Pattern Overlay, Stroke&lt;/li&gt;
&lt;li&gt;Liquid Rescale (0.7.0):
Content-aware rescaling. Keeps the features of the image while
rescaling along a single direction.&lt;/li&gt;
&lt;li&gt;Normalmap (1.2.2):
Allows you to convert images into RGB normal maps for use in
per-pixel lighting applications.&lt;/li&gt;
&lt;li&gt;Planet Render (1-2):
Creates a planet. Color, size and sun orientation
can be set.&lt;/li&gt;
&lt;li&gt;Refocus (0.9.1):
The GIMP plugin to refocus images using FIR Wiener filtering.
During image processing operations such as scanning and scaling, images
tend to get blurry. The blurred impression of these images is due to the
fact that image pixels are averaged with their neighbors. Blurred images
don&amp;rsquo;t have sharp boundaries and look as though they have been taken with
an unfocused camera.&lt;/li&gt;
&lt;li&gt;Save for Web (0.29.0):
Allows to experiment with various popular web format options. It shows
an automatically updated preview and file size statistics.&lt;/li&gt;
&lt;li&gt;Separate+ (0.5.6):
Separate+ is a plug-in that generates color separations from an RGB
image, proofs CMYK colors on the monitor and exports the CMYK TIFF file.&lt;/li&gt;
&lt;li&gt;Smart Sharpen (redux) (2.4):
This script implements the redux version of smart sharpening. It utilizes
the Unsharp Mask or Refocus plugin to sharpen the image.&lt;/li&gt;
&lt;li&gt;Streak-Camera simulation (0.6):
A streak camera images an object through a slit -
thus getting a &amp;ldquo;one dimensional image&amp;rdquo;. This image is
propagated along the second dimension of the image plane
at a constant speed. The result is a picture of the time
dependency of the object.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traditional Orton:
This is an effect invented by Michael Orton in the 1990’s, which
consists of taking two copies of an image, one blurred, and one sharp,
and mixing them to produce an image with a dreamy quality. It is
especially well suited to landscape and flower photography.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Wavelet Decompose (0.1.2):
The wavelet decompose plugin decomposes a layer of an image into layers
of wavelet scales. This means that you can edit the image on different
detail scales (frequencies). The trivial recomposition of the image can
be done by GIMP&amp;rsquo;s layer modes so you can see the results of your
modifications instantly. Among the applications are retouching, noise
reduction, and enhancing global contrast.&lt;/li&gt;
&lt;li&gt;Wavelet Denoise (0.3.1):
The wavelet denoise plugin is a tool to selectively reduce noise in
individual channels of an image with optional RGB&amp;lt;-&amp;gt;YCbCr conversion.
It has a user interface to adjust the amount of denoising applied. The
wavelet nature of the algorithm makes the processing quite fast.&lt;/li&gt;
&lt;li&gt;X11 Mouse Cursor (XMC) plug-in (2.0.6):
Enables GIMP to import and export X11 mouse cursor files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If there is any interest from other distributions to include the package, I&amp;rsquo;d be happy to help out to make an integration as easy as possible. The few interesting parts could be ripped out of debian/rules and shipped as a normal Makefile, so they could be used easily. More complicated is the generation of the package description and copyright information, but I guess instead of writing debian/coyright and debian/control, it should be possible to integrate the information into a rpm spec file template or similar files. So in case you&amp;rsquo;re interested to port the package to Fedora, OpenSuSE or some other distribution, don&amp;rsquo;t hesitate to contact me! The sources are available via git, see &lt;a href=&#34;http://git.recluse.de/?p=debian/pkg-gimp-plugin-registry.git;a=summary&#34;&gt;git.recluse.de&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;For wishes, suggestions and bug reports either use the &lt;a href=&#34;http://bugs.debian.org&#34;&gt;Debian BTS&lt;/a&gt; or &lt;a href=&#34;https://bugs.launchpad.net/ubuntu/+source/gimp-plugin-registry&#34;&gt;Launchpad&lt;/a&gt;. While I prefer bugs via the BTS, it might be easier for non-Debian users to file bugs in the Ubuntu Launchpad.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Creating a google sitemap for ikiwiki</title>
      <link>https://bzed.de/post/2010/06/creating_a_google_sitemap_for_ikiwiki/</link>
      <pubDate>Wed, 23 Jun 2010 20:23:49 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/06/creating_a_google_sitemap_for_ikiwiki/</guid>
      <description>&lt;p&gt;ikiwiki is &lt;a href=&#34;http://ikiwiki.info/todo/Google_Sitemap_protocol/&#34;&gt;not yet able&lt;/a&gt; to create a Google sitemap internally, so I&amp;rsquo;m using &lt;a href=&#34;http://packages.debian.org/search?keywords=google-sitemapgen&#34;&gt;google-sitemapgen&lt;/a&gt;. To run it automatically when the website is being updated, I&amp;rsquo;ve changed the git hook to run it after the ikiwiki hook.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the ikiwiki setup file let git_wrapper point to a file which is not the post-update hook, so you&amp;rsquo;re able to run it from your own skript. I&amp;rsquo;m using &lt;em&gt;/path/to/myikiwiki.git/hooks/post-update.ikiwiki&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Write a skript which runs as post-update hook and executes the created hook from ikiwiki and google-sitemapgen with a proper configuration. My versions of both files are listed below.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;/path/to/myikiwiki.git/hooks/post-update&lt;/strong&gt;
[[!format  sh &amp;quot;&amp;quot;&amp;quot;
#!/bin/sh&lt;/p&gt;
&lt;p&gt;/path/to/myikiwiki.git/hooks/post-update.ikiwiki&lt;/p&gt;
&lt;p&gt;/usr/bin/google-sitemapgen &amp;ndash;config=/path/to/mywikiconfig/sitemap_config.xml&lt;/p&gt;
&lt;p&gt;exec git-update-server-info
&amp;ldquo;&amp;quot;&amp;quot;]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;/path/to/mywikiconfig/sitemap_config.xml&lt;/strong&gt;
[[!format  xml &amp;quot;&amp;rdquo;&amp;quot;&lt;/p&gt;
&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;
&lt;p&gt;&amp;lt;site
base_url=&amp;ldquo;&lt;a href=&#34;http://bzed.de/%22&#34;&gt;http://bzed.de/&amp;quot;&lt;/a&gt;
store_into=&amp;quot;/path/to/bzed.de/sitemap.xml.gz&amp;rdquo;
verbose=&amp;ldquo;0&amp;rdquo;
suppress_search_engine_notify=&amp;ldquo;0&amp;rdquo;
default_encoding=&amp;ldquo;UTF-8&amp;rdquo;&lt;/p&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;directory
path=&#34;/path/to/bzed.de&#34;
url=&#34;http://bzed.de/&#34;
default_file=&#34;index.html&#34;
/&gt;&lt;/p&gt;
  &lt;!-- Exclude URLs that end with a &#39;~&#39;   (IE: emacs backup files)      --&gt;
&lt;p&gt;&lt;filter  action=&#34;drop&#34;  type=&#34;wildcard&#34;  pattern=&#34;*~&#34;           /&gt;&lt;/p&gt;
  &lt;!-- Exclude URLs within UNIX-style hidden files or directories       --&gt;
&lt;p&gt;&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;    pattern=&#34;/\.[^/]*&#34;     /&gt;&lt;/p&gt;
  &lt;!-- Exclude ikiwiki directories --&gt;
&lt;p&gt;&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/helponformatting/[^/]*&#34;           /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/ikiwiki/[^/]*&#34;                    /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/markdown/[^/]*&#34;                   /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/openid/[^/]*&#34;                     /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/pagespec/[^/]*&#34;                   /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/preprocessordirective/[^/]*&#34;      /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/sandbox/[^/]*&#34;                    /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/shortcuts/[^/]*&#34;                  /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/smileys/[^/]*&#34;                    /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/subpage/[^/]*&#34;                    /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/templates/[^/]*&#34;                  /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/theme/[^/]*&#34;                      /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/wikiicons/[^/]*&#34;                  /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/wikilink/[^/]*&#34;                   /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;regexp&#34;  pattern=&#34;/wmd/[^/]*&#34;                        /&gt;&lt;/p&gt;
  &lt;!-- Exclude css files, favicon and javascript --&gt;
&lt;p&gt;&lt;filter  action=&#34;drop&#34;  type=&#34;wildcard&#34;    pattern=&#34;*.css&#34;                         /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;wildcard&#34;    pattern=&#34;*favicon.ico&#34;                  /&gt;
&lt;filter  action=&#34;drop&#34;  type=&#34;wildcard&#34;    pattern=&#34;*.js&#34;                          /&gt;&lt;/p&gt;
  &lt;!-- Exclude ikiwiki.cgi --&gt;
&lt;p&gt;&lt;filter  action=&#34;drop&#34;  type=&#34;wildcard&#34;    pattern=&#34;ikiwiki.cgi&#34;                   /&gt;&lt;/p&gt;
&lt;/site&gt;
&#34;&#34;&#34;]]
&lt;p&gt;See the examples and README files in &lt;em&gt;/usr/share/doc/google-sitemapgen/&lt;/em&gt; for an introduction into configuring google-sitemapgen.&lt;/p&gt;
&lt;p&gt;So far the generated sitemaps works very well, especially for search engines which are not able to use the rss feeds like Google does.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Signs of bad package maintenance</title>
      <link>https://bzed.de/post/2010/06/signs_of_bad_package_maintenance/</link>
      <pubDate>Sun, 13 Jun 2010 02:13:52 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/06/signs_of_bad_package_maintenance/</guid>
      <description>&lt;p&gt;&amp;lt;rant&amp;gt;Recently I&amp;rsquo;ve adopted a package, mainly as Merkaartor uses it now. It made me sad to see in which bad condition the package was. Here are just a few things I had to do to bring it into shape:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The former maintainer removed the documentation and added a +dfsg to the version as there were a few hints left that it is under GFDL or under no license at all. So I&amp;rsquo;ve mailed upstream and asked him to remove it and put the documentation under the same license as the rest of the project in an obvious way. Took a few hours and upstream responded and fixed the issue. Seems the former maintainer didn&amp;rsquo;t even bother to talk to upstream about it. And he didn&amp;rsquo;t bother to replace the removed manpages.&lt;/li&gt;
&lt;li&gt;The Perl binding was never built. The Python extensions were only built for the default Python version instead for all supported versions. Putting gtk and non-gtk Python extensions into the same binary package also didn&amp;rsquo;t make much sense.&lt;/li&gt;
&lt;li&gt;Symbol files for the libraries were not in the packaging.&lt;/li&gt;
&lt;li&gt;Neither the copyright file was complete, nor the description, nor the necessary dependencies for some packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These points were only the larger issues, a lot more were fixed by me or by QA uploads while the package was orphaned. For me it seems that the former maintainer of that package threw some stuff together just to be able to upload the package - or at least run out of spare time to maintain a package properly several years ago.&lt;/p&gt;
&lt;p&gt;To all the people who maintain packages - and it doesn&amp;rsquo;t matter if you maintain a single package or hundreds of them: &lt;strong&gt;Please&lt;/strong&gt; orphan or at least RFA your packages if you don&amp;rsquo;t have the proper time to maintain (all of) them. Don&amp;rsquo;t open new ITPs if you obviously don&amp;rsquo;t have the time to maintain the packages you have already. Talk with your upstreams, they&amp;rsquo;re usually happy about it. Look at Lintian warnings and errors instead of overriding them. If you take patches from NMUs, say &amp;lsquo;thanks&amp;rsquo; to the poor soul who had to create them for you in debian/changelog instead of taking the work without any notice.&lt;/p&gt;
&lt;p&gt;Remember - Debian is a community effort, not a run for the highest number of maintained packages on your QA page.&amp;lt;/rant&amp;gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Styling changes in ikiwiki 3.20100610</title>
      <link>https://bzed.de/post/2010/06/styling_changes_in_ikiwiki_3.20100610/</link>
      <pubDate>Sat, 12 Jun 2010 01:53:00 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/06/styling_changes_in_ikiwiki_3.20100610/</guid>
      <description>&lt;p&gt;Some minutes before the release of 3.20100610 we convinced &lt;a href=&#34;http://kitenet.net/~joey/&#34;&gt;Joey&lt;/a&gt; in #ikiwiki to commit the following changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The part of the page which is usually parallel to the sidebar lives within a new div with the id &amp;ldquo;pagebody&amp;rdquo; now. This is the proper fix for the issue and workaround described &lt;a href=&#34;https://bzed.de/posts/2010/05/new_css_for_bzed.de&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;pre&lt;/em&gt; elements will show a scrollbar automatically now, thanks to &lt;em&gt;overflow: auto;&lt;/em&gt; in the CSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We hope that nobody wants to hit us with a bat now :-)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Merkaartor 0.16.0 available in unstable</title>
      <link>https://bzed.de/post/2010/06/merkaartor_0.16.0_available_in_unstable/</link>
      <pubDate>Sat, 12 Jun 2010 01:10:13 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/06/merkaartor_0.16.0_available_in_unstable/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://packages.debian.org/source/sid/merkaartor&#34;&gt;Merkaartor 0.16.0&lt;/a&gt; was uploaded to Debian/unstable several days ago and should be available on all architectures now.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../merkaartor.png&#34; alt=&#34;Merkaartor&#34;&gt;&lt;/p&gt;
&lt;p&gt;As usual please help testing the new version - upstream and me will try to fix all bugs as fast as possible. Below follows the long list of new features, for the full list of changes see the &lt;a href=&#34;http://gitorious.org/merkaartor/main/blobs/0.16-fixes/CHANGELOG&#34;&gt;CHANGELOG&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ramer-Douglas-Peucker simplification of ways (in Roads menu)&lt;/li&gt;
&lt;li&gt;support for JOSM remote protocol on port 8111&lt;/li&gt;
&lt;li&gt;support for &amp;ldquo;standard&amp;rdquo; (as in &lt;a href=&#34;http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification&#34;&gt;http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification&lt;/a&gt;) TMS&lt;/li&gt;
&lt;li&gt;Preliminary support for OpenStreetBugs (Refs #983)&lt;/li&gt;
&lt;li&gt;POC of a Gosmore map adapter&lt;/li&gt;
&lt;li&gt;Allow to delete features from the context menu of the Features dock&lt;/li&gt;
&lt;li&gt;Accept mlon/mlat URLs as emitted by mkgmap logging&lt;/li&gt;
&lt;li&gt;Walking Papers backgound plugin + load WP scans as geotagged images&lt;/li&gt;
&lt;li&gt;Import from OSC (osmChange format)&lt;/li&gt;
&lt;li&gt;Feature-Force Delete action (deletes the feature without entry in the undo nor upload list)&lt;/li&gt;
&lt;li&gt;Export to OSC (osmChange format)&lt;/li&gt;
&lt;li&gt;CSV POI import&lt;/li&gt;
&lt;li&gt;OSGB36 to the default list of projections&lt;/li&gt;
&lt;li&gt;Add SHP feature attributes as not uploadable OSM Feature tags&lt;/li&gt;
&lt;li&gt;Allow to save geotagged images&lt;/li&gt;
&lt;li&gt;show geotagged photos on the map (disable via &amp;lsquo;view-Show Photos on map&amp;rsquo;)&lt;/li&gt;
&lt;li&gt;Templates xsd (by Jonathan Bennett) (closes #2809; closes #2707)&lt;/li&gt;
&lt;li&gt;allow to re-order relation members (closes #2759)&lt;/li&gt;
&lt;li&gt;add a projection editor&lt;/li&gt;
&lt;li&gt;allow google maps links in goto and download dialogs&lt;/li&gt;
&lt;li&gt;Allow to tile (and cache) arbitrary WMS&amp;rsquo;es (only EPSG:4326 and google projection supported)&lt;/li&gt;
&lt;li&gt;Export to OSC (osmChange format)&lt;/li&gt;
&lt;li&gt;CSV POI import&lt;/li&gt;
&lt;li&gt;OSGB36 to the default list of projections&lt;/li&gt;
&lt;li&gt;Add SHP feature attributes as not uploadable OSM Feature tags&lt;/li&gt;
&lt;li&gt;Allow to save geotagged images&lt;/li&gt;
&lt;li&gt;show geotagged photos on the map (disable via &amp;lsquo;view-Show Photos on map&amp;rsquo;)&lt;/li&gt;
&lt;li&gt;Templates xsd (by Jonathan Bennett) (closes #2809; closes #2707)&lt;/li&gt;
&lt;li&gt;allow to re-order relation members (closes #2759)&lt;/li&gt;
&lt;li&gt;add a projection editor&lt;/li&gt;
&lt;li&gt;allow google maps links in goto and download dialogs&lt;/li&gt;
&lt;li&gt;Allow to tile (and cache) arbitrary WMS&amp;rsquo;es (only EPSG:4326 and google projection supported)&lt;/li&gt;
&lt;li&gt;support for WMS-C servers (see &lt;a href=&#34;http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers&#34;&gt;http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers&lt;/a&gt;) (closes #2598)&lt;/li&gt;
&lt;li&gt;add the possibility to show a lat/lon grid&lt;/li&gt;
&lt;li&gt;Allow to zoom on the location of a GeoTIFF image&lt;/li&gt;
&lt;li&gt;Brazilian Portuguese translation (by Marcio Moraes)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Installing Debian on the guruplug server plus</title>
      <link>https://bzed.de/post/2010/05/installing_debian_on_the_guruplug_server_plus/</link>
      <pubDate>Sat, 29 May 2010 15:36:42 +0000</pubDate>
      
      <guid>https://bzed.de/post/2010/05/installing_debian_on_the_guruplug_server_plus/</guid>
      <description>&lt;p&gt;&lt;b&gt; &amp;ndash; Before buying or using a GuruPlug make sure you first read &amp;ldquo;&lt;a href=&#34;https://bzed.de/posts/2010/08/the_guruplug_server_plus_-_major_design_and_qa_fail&#34;&gt;the guruplug server plus - major design and qa fail&lt;/a&gt;&amp;rdquo; and &amp;ldquo;&lt;a href=&#34;https://bzed.de/2010/09/refactoring_the_guruplug_server_plus&#34;&gt;refactoring the guruplug server plus&lt;/a&gt;&amp;rdquo; &amp;ndash; &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Yesterday finally my &lt;a href=&#34;http://www.globalscaletechnologies.com/p-32-guruplug-server-plus.aspx&#34;&gt;GuruPlug Server Plus&lt;/a&gt; arrived. Took longer than expected, but as it &lt;a href=&#34;http://www.newit.co.uk/forum/index.php/topic,323.msg1514.html#msg1514&#34;&gt;seems&lt;/a&gt; Globalscale had some issues with the power supplies and they were replaced before shipping the GuruPlugs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../guruplug.png&#34; alt=&#34;GuruPlug Server Plus and JTAG Board&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-guruplug&#34;&gt;The GuruPlug&lt;/h2&gt;
&lt;p&gt;Basically the GuruPlugs are an enhanced version of the well known SheevaPlugs, the biggest difference is probably the need for an external JTAG/UART&amp;lt;&amp;gt;RS232 board to access the serial console. Good thing is that the board comes with a normal JTAG connector and an additional RS232 connector and 2.5V DC power outlet, so it will be useful for other devices, too. Globalscale could have chosen different connectors with less wiggly cables, though.&lt;/p&gt;
&lt;p&gt;As I was not able to find a useful howto about installing Debian on the Guruplug, I&amp;rsquo;ve written down what I did to install Debian unstable on a micro SD card using the Debian installer for the GuruPlug. I did not have a look who modified the Debian installer to work on the plug, but thanks for that! The instructions below are based on Martin Michlmayer&amp;rsquo;s awesome &lt;a href=&#34;http://www.cyrius.com/debian/kirkwood/sheevaplug/&#34;&gt;SheevaPlug documentation&lt;/a&gt;, the hints from &lt;a href=&#34;http://oinkzwurgl.org/guruplug&#34;&gt;oinkzwurgl.org/guruplug&lt;/a&gt; and various forum posts in the &lt;a href=&#34;http://plugcomputer.org/plugforum/&#34;&gt;plugforum&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;preparations&#34;&gt;Preparations&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Please note that I&amp;rsquo;m not resposible for whatever you&amp;rsquo;re doing with your plug. If you follow this tutorial and end up with a brick, it is your fault, not mine.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To install the GuruPlug you &lt;em&gt;need&lt;/em&gt; the JTAG Board. Connect the UART port to the GuruPlug and the JTAG board to your computer, it should show up as FTDI (thanks for using good chips!) USB&amp;lt;&amp;gt;Serial converter. Serial port settings are &lt;em&gt;115200, 8-N-1, no hw/sw flow control&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The other thing you should prepare is a working tftpd, I&amp;rsquo;m using aftpd.&lt;/p&gt;
&lt;pre&gt;apt-get install atftpd&lt;/pre&gt;
&lt;p&gt;Recent versions share files from &lt;em&gt;/srv/tftp/&lt;/em&gt;, in case you&amp;rsquo;re running Lenny &lt;em&gt;/var/lib/tftpboot/&lt;/em&gt; should be the place to drop your files.&lt;/p&gt;
&lt;p&gt;When everything is connected properly the boot process should show up in minicom, make sure to press some key to enter uBoot. The first thing you should do is to save the original uBoot environment in case you want to restore the factory settings later. Run&lt;/p&gt;
&lt;pre&gt;printenv&lt;/pre&gt;
&lt;p&gt;and save the output somewhere.&lt;/p&gt;
&lt;h2 id=&#34;upgrading-uboot&#34;&gt;Upgrading uBoot&lt;/h2&gt;
&lt;p&gt;Unfortunately the uBoot version on the GuruPlug is pretty old and seems to have some issues in booting from USB devices, so the first thing you should do is to upgrade it. You might want to investigate if there is even a better, more recent uBoot version available somewhere, or build one on your own, but I didn&amp;rsquo;t bother and took the uBoot.guruplug.bin from &lt;a href=&#34;http://www.plugcomputer.org/index.php/us/resources/downloads?func=select&amp;amp;id=15&#34;&gt;here&lt;/a&gt;. The main issue with that is that booting from USB still seems to be buggy (even for FAT partitions) and that ext2load is still not supported. Otherwise it works well :-). I&amp;rsquo;m mainly following Martin Michlmayer&amp;rsquo;s &lt;a href=&#34;http://www.cyrius.com/debian/kirkwood/sheevaplug/uBoot-upgrade.html&#34;&gt;tutorial&lt;/a&gt; again.&lt;/p&gt;
&lt;p&gt;Download the uBoot.guruplug.bin and drop it into the tftpd directory. Make sure you always set the plug&amp;rsquo;s IP address (&lt;em&gt;ipaddr&lt;/em&gt;) and your server&amp;rsquo;s IP address (&lt;em&gt;serverip&lt;/em&gt;) properly. I&amp;rsquo;ll use &lt;em&gt;192.168.121.253&lt;/em&gt; for the plug and &lt;em&gt;192.168.121.2&lt;/em&gt; for the server in all examples, make sure to change that for your own needs. Stop if something goes wrong, especially when the tftp download failed.&lt;/p&gt;
&lt;pre&gt;
setenv ipaddr 192.168.121.253
setenv serverip 192.168.121.2
tftp 0x6400000 uBoot.guruplug.bin
nand erase 0x00000000 0x0100000
nand write 0x6400000 0x0000000 0x80000
reset
&lt;/pre&gt;
&lt;p&gt;Enter uBoot again after the reset.&lt;/p&gt;
&lt;h2 id=&#34;preparing-the-installer&#34;&gt;Preparing the installer&lt;/h2&gt;
&lt;p&gt;Download &lt;a href=&#34;http://people.debian.org/~joeyh/d-i/armel/images/daily/kirkwood/netboot/marvell/guruplug/uImage&#34;&gt;uImage&lt;/a&gt; and &lt;a href=&#34;http://people.debian.org/~joeyh/d-i/armel/images/daily/kirkwood/netboot/marvell/guruplug/uInitrd&#34;&gt;uInitrd&lt;/a&gt; to your tftpd directory.&lt;/p&gt;
&lt;p&gt;Although I&amp;rsquo;ve heard that setting mainlineLinux/arcNumber in the uBoot environment is not necessary anymore for very recent kernel, lets set them to make sure the Debian kernel works:&lt;/p&gt;
&lt;pre&gt;
setenv mainlineLinux yes
setenv arcNumber 2097
saveenv
reset
&lt;/pre&gt;
&lt;p&gt;Again, enter uBoot after the reset.&lt;/p&gt;
&lt;h2 id=&#34;running-the-installer&#34;&gt;Running the installer&lt;/h2&gt;
&lt;p&gt;Run the following in the uBoot console:&lt;/p&gt;
&lt;pre&gt;
setenv ipaddr 192.168.121.253
setenv serverip 192.168.121.2
tftpboot 0x01100000 uInitrd
tftpboot 0x00800000 uImage
setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
bootm 0x00800000 0x01100000
&lt;/pre&gt;
&lt;p&gt;You should see the installer starting now. You might want to follow the following hints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Before configuring the network, go back and set the debconf priority to low, Then continue. While chosing the Debian mirror, chose &lt;em&gt;sid&lt;/em&gt; as the Debian version to install. If you don&amp;rsquo;t have sid as choice, use a different mirror. The kernel in testing does not boot on the GuruPlug, you need 2.6.32-13 from sid.&lt;/li&gt;
&lt;li&gt;You might want to load the &amp;lsquo;network console&amp;rsquo; installer component and continue via ssh. Makes things fater and colourful.&lt;/li&gt;
&lt;li&gt;Suggested partitioning: I&amp;rsquo;ve installed Debian to an 8GB micro SDcard. The SDcard reader is connected via USB and shows up as /dev/sdb (/dev/sda should be the internal NAND and not shown by the installer). I&amp;rsquo;ve used 150MB ext2 for /boot and the rest of the space for /, using ext4. You might want to use the noatime option on both filesystems to avoid unnecessary write access to the SDcard. You might choose to add a swap partition, but SDcards are so slow, so I&amp;rsquo;ve skipped that.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you continue the installation, you will hit the following problem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The uBoot is not able to boot from your /boot anyway. USB support is buggy and ext2load missing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&amp;rsquo;ll work around this issue by writing the kernel and initrd into the plug&amp;rsquo;s NAND. To do so, enter a shell in the installer and chroot into the install target. We&amp;rsquo;ll then scp the necessary uImage and uInitrd to our tftpd directory:&lt;/p&gt;
&lt;pre&gt;
chroot /target /bin/bash
cd /boot
scp uI* root@192.168.121.2:/srv/tftp
&lt;/pre&gt;
&lt;p&gt;Now leave the shell, finish the installation and reboot, enter uBoot again.&lt;/p&gt;
&lt;h2 id=&#34;make-the-plug-bootable&#34;&gt;Make the plug bootable&lt;/h2&gt;
&lt;p&gt;To write kernel and initrd to the NAND memory, we have to transfer it via tftp first, then erase the NAND area we want to write to and then write it to the NAND. The values I&amp;rsquo;ve chosen here should be fine for the current Debian kernel, but you might need to change the necessary size for the initrd. To do so have a look at the output while transferring the initrd - the transferred bytes are displayed. They have to fit into the amount of bytes you write (the last option to nand write.e).&lt;/p&gt;
&lt;pre&gt;
setenv ipaddr 192.168.121.253
setenv serverip 192.168.121.2
tftp 0x6400000 uImage
nand erase 0x100000 0x400000
nand write.e 0x6400000 0x100000 0x400000
tftp 0x6400000 uInitrd
nand erase 0x500000 0x1fb00000
nand write.e 0x6400000 0x500000 0x600000
&lt;/pre&gt;
&lt;p&gt;Now we need to set the necessary boot options. Make sure to change the root device if you&amp;rsquo;ve chosen a different layout from that I&amp;rsquo;ve suggested above, or if you&amp;rsquo;re not using a SDcard.&lt;/p&gt;
&lt;pre&gt;
setenv bootargs_debian &#39;console=ttyS0,115200 root=/dev/sdb2&#39;
setenv bootcmd_nand &#39;nand start; nand read.e 0x00800000 0x100000 0x400000; nand read.e 0x01100000 0x500000 0x600000&#39;
setenv bootcmd &#39;setenv bootargs $(bootargs_debian); run bootcmd_nand; bootm 0x00800000 0x01100000&#39;
saveenv
run bootcmd
&lt;/pre&gt;
&lt;h2 id=&#34;finish&#34;&gt;Finish&lt;/h2&gt;
&lt;p&gt;Your GuruPlug should boot your new Debian installation now. Have fun! I&amp;rsquo;ll try to keep the howto updated for changes in uBoot and the installer, but I might not have the time to so quickly. Patches and comments are welcome!.&lt;/p&gt;
&lt;pre&gt;
root@guruplug:~# uname -a
Linux guruplug 2.6.32-5-kirkwood #1 Fri May 21 05:44:29 UTC 2010 armv5tel GNU/Linux
root@guruplug:~# cat /proc/cpuinfo 
Processor	: Feroceon 88FR131 rev 1 (v5l)
BogoMIPS	: 1192.75
Features	: swp half thumb fastmult edsp 
CPU implementer	: 0x56
CPU architecture: 5TE
CPU variant	: 0x2
CPU part	: 0x131
CPU revision	: 1

Hardware	: Marvell GuruPlug Reference Board
Revision	: 0000
Serial		: 0000000000000000
root@guruplug:~# 
&lt;/pre&gt;
</description>
    </item>
    
    <item>
      <title>Merkaartor - countdown to 0.16</title>
      <link>https://bzed.de/post/2010/05/merkaartor_-_countdown_to_0.16/</link>
      <pubDate>Thu, 20 May 2010 22:44:09 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/05/merkaartor_-_countdown_to_0.16/</guid>
      <description>&lt;p&gt;As &lt;a href=&#34;http://lists.openstreetmap.org/pipermail/merkaartor/2010-May/002279.html&#34;&gt;announced&lt;/a&gt; on the Merkaartor mailing lists, version 0.16 is planned to be released on 6th June. Therefore I&amp;rsquo;ve uploaded a git snapshot to &lt;a href=&#34;http://packages.debian.org/source/experimental/merkaartor&#34;&gt;experimental&lt;/a&gt; today. Please give it a try and report all problems, either to the Debian BTS or directly in the &lt;a href=&#34;http://redmine.semperpax.com/projects/merkaartor/issues?set_filter=1&amp;amp;tracker_id=1&#34;&gt;upstream bug tracker&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../merkaartor_screenshot.png&#34; alt=&#34;Merkaartor 0.16 screenshot&#34;&gt;&lt;/p&gt;
&lt;p&gt;Version 0.16 will contain a lot of new features and various bugfixes and enhancements. For me the most important additions are support for &lt;a href=&#34;http://walking-papers.org/&#34;&gt;Walking Papers&lt;/a&gt; and support for &lt;a href=&#34;http://openstreetbugs.schokokeks.org/&#34;&gt;OpenStreetBugs&lt;/a&gt;. Also Merkaartor uses libgps now, so it is able to connect to recent versions of &lt;a href=&#34;http://gpsd.berlios.de/&#34;&gt;gpsd&lt;/a&gt;.
With thanks to Chris Browet, the upstream author of Merkaartor, the next version of gpsd will ship with libQgpsmm, a C++/QT library to connect to gpsd. It should be possible to compile libQgpsmm under most platforms which are supported by QT4, including windows. Merkaartor will use libQgpsmm when available, so even Windows users will be able to use a remote gpsd instance.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Deb.li - the Debian ShortURL Service - status update</title>
      <link>https://bzed.de/post/2010/05/deb.li_-_the_debian_shorturl_service_-_status_update/</link>
      <pubDate>Wed, 19 May 2010 01:11:30 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/05/deb.li_-_the_debian_shorturl_service_-_status_update/</guid>
      <description>&lt;p&gt;Although my progress in adding new features is not too fast (hint: &lt;a href=&#34;http://git.recluse.de/?p=debian/go.debian.net.git;a=summary&#34;&gt;patches and help is welcome&lt;/a&gt;), I&amp;rsquo;m quite happy with the progress of &lt;a href=&#34;http://deb.li&#34;&gt;deb.li&lt;/a&gt;. As mentioned on my last &lt;a href=&#34;http://deb.li/4BE7F84D.5040104@bzed.de&#34;&gt;post&lt;/a&gt; on &lt;a href=&#34;mailto:debian-devel@l.d.o&#34;&gt;debian-devel@l.d.o&lt;/a&gt;, I&amp;rsquo;ve spent some time to migrate it to the new, but very well written microframework &lt;a href=&#34;http://flask.pocoo.org&#34;&gt;Flask&lt;/a&gt;, which is based on &lt;a href=&#34;http://werkzeug.pocoo.org/&#34;&gt;Werkzeug&lt;/a&gt;, the probably most advanced WSGI utility module. The migration also allowed me to clean up several pieces of messy code which were necessary to work around some issues in python-bottle.&lt;/p&gt;
&lt;p&gt;Also I&amp;rsquo;ve started to bring the layout and CSS into a nice shape. The templates are finished already, just a bit CSS is missing now.&lt;/p&gt;
&lt;p&gt;Last but not least - the ciabot git script in the example clients is finished and used in a few git based projects on &lt;a href=&#34;http://alioth.debian.org&#34;&gt;alioth.debian.org&lt;/a&gt; now. Just link &lt;em&gt;/var/lib/gforge/chroot/home/users/bzed/godebian-client/ciabot.py&lt;/em&gt; to &lt;em&gt;hooks/update&lt;/em&gt; and set your CIA project name by running &lt;em&gt;git config hooks.cia-project your-project-name&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;As usual - comments, bugreports and patches are welcome!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>New css for bzed.de</title>
      <link>https://bzed.de/post/2010/05/new_css_for_bzed.de/</link>
      <pubDate>Wed, 19 May 2010 01:11:30 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/05/new_css_for_bzed.de/</guid>
      <description>&lt;p&gt;After more than a year of using &lt;a href=&#34;http://ikiwiki.info&#34;&gt;ikiwiki&lt;/a&gt; to run &lt;a href=&#34;index&#34;&gt;bzed.de&lt;/a&gt; I thought it would be a good time replace the darkish-brown style by something bright. Also I wanted to get righ of the massive changes I had to do on the template files to make the old layout work.&lt;/p&gt;
&lt;p&gt;Unfortunately I hit one of the - in my opinion - major problems in the ikiwiki templates again: You can&amp;rsquo;t rely on all &amp;lt;div&amp;gt;s being available on all pages, which is quite annoying when you need them to style the page with CSS. So I had to make a tiny change to &lt;em&gt;page.tmpl&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;[[!format  diff &amp;quot;&amp;quot;&amp;quot;
diff &amp;ndash;git a/templates/page.tmpl b/templates/page.tmpl
index 8a9911f..dbf78a0 100644
&amp;mdash; a/templates/page.tmpl
+++ b/templates/page.tmpl
@@ -111,8 +111,8 @@
&amp;lt;TMPL_VAR CONTENT&amp;gt;
&amp;lt;TMPL_IF HTML5&amp;gt;&lt;/section&gt;&amp;lt;TMPL_ELSE&amp;gt;&lt;/div&gt;&amp;lt;/TMPL_IF&amp;gt;&lt;/p&gt;
&lt;p&gt;-&amp;lt;TMPL_IF COMMENTS&amp;gt;
&amp;lt;TMPL_IF HTML5&amp;gt;&lt;section id=&#34;comments&#34;&gt;&amp;lt;TMPL_ELSE&amp;gt;&lt;div id=&#34;comments&#34;&gt;&amp;lt;/TMPL_IF&amp;gt;
+&amp;lt;TMPL_IF COMMENTS&amp;gt;
&amp;lt;TMPL_VAR COMMENTS&amp;gt;
&amp;lt;TMPL_IF ADDCOMMENTURL&amp;gt;&lt;/p&gt;
 &lt;div class=&#34;addcomment&#34;&gt;
@@ -121,8 +121,8 @@
 &lt;TMPL_ELSE&gt;
 &lt;div class=&#34;addcomment&#34;&gt;Comments on this page are closed.&lt;/div&gt;
 &lt;/TMPL_IF&gt;
-&lt;TMPL_IF HTML5&gt;&lt;/section&gt;&lt;TMPL_ELSE&gt;&lt;/div&gt;&lt;/TMPL_IF&gt;
 &lt;/TMPL_IF&gt;
+&lt;TMPL_IF HTML5&gt;&lt;/section&gt;&lt;TMPL_ELSE&gt;&lt;/div&gt;&lt;/TMPL_IF&gt;
&lt;p&gt;&amp;lt;TMPL_IF HTML5&amp;gt;&lt;footer id=&#34;footer&#34; class=&#34;pagefooter&#34;&gt;&amp;lt;TMPL_ELSE&amp;gt;&lt;div id=&#34;footer&#34; class=&#34;pagefooter&#34;&gt;&amp;lt;/TMPL_IF&amp;gt;
&amp;lt;TMPL_IF HTML5&amp;gt;&lt;nav id=&#34;pageinfo&#34;&gt;&amp;lt;TMPL_ELSE&amp;gt;&lt;div id=&#34;pageinfo&#34;&gt;&amp;lt;/TMPL_IF&amp;gt;
&amp;ldquo;&amp;quot;&amp;quot;]]&lt;/p&gt;
&lt;p&gt;Everything else is a bit of CSS in local.css and some images. There are still various things which could be optimized, but there are more important things to do now :).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Gimp-plugin-registry package updated</title>
      <link>https://bzed.de/post/2010/04/gimp-plugin-registry_package_updated/</link>
      <pubDate>Thu, 15 Apr 2010 21:05:47 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/04/gimp-plugin-registry_package_updated/</guid>
      <description>&lt;p&gt;Yesterday I finally found the time to update &lt;a href=&#34;http://packages.debian.org/sid/gimp-plugin-registry&#34;&gt;gimp-plugin-registry&lt;/a&gt;, the (hopefully!) largest and best collection of plugins for &lt;a href=&#34;http://www.gimp.org/&#34;&gt;The GIMP&lt;/a&gt;. As usual here comes a short summary of the changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The wonderful scripts from &lt;a href=&#34;http://sites.google.com/site/elsamuko/gimp&#34;&gt;El Samuko&lt;/a&gt; are included now:&lt;/li&gt;
&lt;li&gt;Antique Photo Border Script&lt;/li&gt;
&lt;li&gt;Che Guevara Script&lt;/li&gt;
&lt;li&gt;Cyanotype Script&lt;/li&gt;
&lt;li&gt;Difference Layer Script&lt;/li&gt;
&lt;li&gt;Escape Line Script&lt;/li&gt;
&lt;li&gt;Film Grain Script&lt;/li&gt;
&lt;li&gt;First Photo Border Script&lt;/li&gt;
&lt;li&gt;Lomo Script with Old Style Colors&lt;/li&gt;
&lt;li&gt;Movie 300 Script&lt;/li&gt;
&lt;li&gt;National Geographic Script&lt;/li&gt;
&lt;li&gt;Obama &amp;ldquo;HOPE&amp;rdquo; Script&lt;/li&gt;
&lt;li&gt;Rainy Landscape Script&lt;/li&gt;
&lt;li&gt;Photochrom Script&lt;/li&gt;
&lt;li&gt;Sprocket Hole Script&lt;/li&gt;
&lt;li&gt;Sunny Landscape Script&lt;/li&gt;
&lt;li&gt;Technicolor 2 Color Script&lt;/li&gt;
&lt;li&gt;Technicolor 3 Color Script&lt;/li&gt;
&lt;li&gt;Vintage Look Script&lt;/li&gt;
&lt;li&gt;Included the X11 Mouce Curser (XMC) plugin as requested by KiBi.&lt;/li&gt;
&lt;li&gt;Removed the GREYStoration plugin. This plugin was superseded by the gimp-gmic plugin, which is built from the gmic source. Most of the packaging work was done by Jakub Wilk (thanks!), it is &lt;a href=&#34;http://ftp-master.debian.org/new/gmic_1.3.4.1+dfsg-1.html&#34;&gt;waiting in NEW&lt;/a&gt; currently. Btw, gmic lives in the collab-maint git folder, don&amp;rsquo;t hesitate to help with the packaging work.&lt;/li&gt;
&lt;li&gt;The following plugins were updated:&lt;/li&gt;
&lt;li&gt;focus-blur&lt;/li&gt;
&lt;li&gt;contactsheet&lt;/li&gt;
&lt;li&gt;normalmap&lt;/li&gt;
&lt;li&gt;save-for-web&lt;/li&gt;
&lt;li&gt;seperate+&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hope you like my work, suggestions and bug reports are welcome as usual!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Deb.li - the Debian ShortURL Service - beta test</title>
      <link>https://bzed.de/post/2010/04/deb.li_-_the_debian_shorturl_service_-_beta_test/</link>
      <pubDate>Sun, 04 Apr 2010 01:46:45 +0200</pubDate>
      
      <guid>https://bzed.de/post/2010/04/deb.li_-_the_debian_shorturl_service_-_beta_test/</guid>
      <description>&lt;p&gt;After several other Debian developers convinced me that a ShortURL service,
which is under control of a Debian Developer would be useful for them, I&amp;rsquo;ve
spent some time to write the necessary code for it. And if it will be used
regulary, I&amp;rsquo;ll ask DSA if they want to host it on a proper machine.&lt;/p&gt;
&lt;p&gt;So I&amp;rsquo;m happy to announce the public beta test of &lt;a href=&#34;http://deb.li&#34;&gt;deb.li&lt;/a&gt; (also available
under &lt;a href=&#34;http://go.debian.net&#34;&gt;go.debian.net&lt;/a&gt;)! Please note that neither the content of the pages nor the CSS is finished&amp;hellip; :)&lt;/p&gt;
&lt;p&gt;As this should not become just another random, spammer-attracting ShortURL
service, I will not provide a web based form to add new URLs. Instead new URLs
have to be added via a simple JSON-RPC based interface. Other ways to add new
URLs will be added on request (or by sending patches ;)), at least an
email-gateway similar to db.debian.org is planned.&lt;/p&gt;
&lt;p&gt;The small piece of documentation which exists so far is available at
&lt;a href=&#34;http://wiki.debian.org/deb.li&#34;&gt;wiki.debian.org/deb.li&lt;/a&gt;
And if you want to give it a try now, log into alioth.debian.org and have a look
into &lt;pre&gt;/var/lib/gforge/chroot/home/users/bzed/godebian-client&lt;/pre&gt; - the usage is
documented in the &lt;a href=&#34;http://git.recluse.de/?p=debian/godebian-client.git;a=blob;f=README;hb=master&#34;&gt;README&lt;/a&gt; file and should be pretty straight forward.&lt;/p&gt;
&lt;p&gt;I hope it will be useful - comments, bugreports and patches are welcome!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Assimilated</title>
      <link>https://bzed.de/post/2010/03/assimilated/</link>
      <pubDate>Sat, 13 Mar 2010 17:09:08 +0100</pubDate>
      
      <guid>https://bzed.de/post/2010/03/assimilated/</guid>
      <description>&lt;p&gt;[[!img /_images/fedora_assimilated.jpg alt=&amp;ldquo;At the Chemnitzer Linux Tage the fedora project was assimilated by the Debian project as fedora realized that rpm is crap ;)&amp;rdquo; ]]&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Merkaartor svn snapshot uploaded to experimental</title>
      <link>https://bzed.de/post/2010/02/merkaartor_svn_snapshot_uploaded_to_experimental/</link>
      <pubDate>Thu, 18 Feb 2010 16:01:28 +0100</pubDate>
      
      <guid>https://bzed.de/post/2010/02/merkaartor_svn_snapshot_uploaded_to_experimental/</guid>
      <description>&lt;p&gt;As the release of version 0.15 of &lt;a href=&#34;http://www.merkaartor.org/&#34;&gt;Merkaartor&lt;/a&gt; (a map editor for &lt;a href=&#34;http://www.openstreetmap.org&#34;&gt;OpenStreetMap.org&lt;/a&gt;)  is planned for the end of February, I&amp;rsquo;ve uploaded a &lt;a href=&#34;http://packages.debian.org/source/experimental/merkaartor&#34;&gt;svn snapshot based on revision 19956&lt;/a&gt; to Debian experimental. Please test it and report bugs to the &lt;a href=&#34;http://bugs.debian.org&#34;&gt;BTS&lt;/a&gt; as soon as possible, so I can triage and forward them to upstream.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Caching issues in django</title>
      <link>https://bzed.de/post/2010/02/caching_issues_in_django/</link>
      <pubDate>Wed, 10 Feb 2010 15:41:13 +0100</pubDate>
      
      <guid>https://bzed.de/post/2010/02/caching_issues_in_django/</guid>
      <description>&lt;p&gt;Yesterday I stumbled upon an interesting and broken behaviour of Django: Running &lt;a href=&#34;http://www.credativ.de&#34;&gt;two&lt;/a&gt; &lt;a href=&#34;http://www.credativ.co.uk&#34;&gt;instances&lt;/a&gt; with the same memcached as cache backend might result in displaying the wrong template from the cache in case we have template files with the same name but a different content.&lt;/p&gt;
&lt;p&gt;This behaviour is also visible in all django applications which use the cache backend without taking care of settings.CACHE_MIDDLEWARE_KEY_PREFIX. As mentioned in the &lt;a href=&#34;http://code.djangoproject.com/ticket/12831&#34;&gt;bug report&lt;/a&gt; a design decision is necessary here, as the setting was only supposed to be used in middlewares. On the other side not honouring the setting everywhere makes it impossible to use different (unrelated) Django instances with one memcached. While this is not such a big issue for template data, it should be - for example - possible to insert faked &lt;a href=&#34;http://www.django-cms.org/&#34;&gt;django CMS&lt;/a&gt; user permissions into memcached as they are cached there, too.&lt;/p&gt;
&lt;p&gt;One possible solution is to ensure that settings.CACHE_MIDDLEWARE_KEY_PREFIX (or a similar setting with a better name) is used for every access. Using the following snippet as &lt;a href=&#34;http://docs.djangoproject.com/en/dev/topics/cache/#using-a-custom-cache-backend&#34;&gt;custom cache backend&lt;/a&gt; ensures this. Additionally it is much harder to insert faked cache content by using a md5 hexdigest as key. Although you should never store sensitive data in memcached - if you need to cache such data, use locmem, file or db as cache backend, as they allow to limit access to the data properly.&lt;/p&gt;
&lt;pre&gt;
from django.conf import settings
from django.core.cache.backends.memcached import CacheClass as DjangoMemcachedCacheClass
from django.utils.hashcompat import md5_constructor

class CacheClass(DjangoMemcachedCacheClass):
    def __init__(self, server, params):
        self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
        super(CacheClass, self).__init__(server, params)

    def _genkey(self, origkey):
        return md5_constructor(&#34;%s:%s&#34; %(self.key_prefix, origkey)).hexdigest()

    def add(self, key, value, timeout=0):
        return super(CacheClass, self).add(self._genkey(key), value, timeout)

    def get(self, key, default=None):
        return super(CacheClass, self).get(self._genkey(key), default)

    def set(self, key, value, timeout=0):
        return super(CacheClass, self).set(self._genkey(key), value, timeout)

    def delete(self, key):
        return super(CacheClass, self).delete(self._genkey(key))

    def get_many(self, keys):
        return super(CacheClass, self).get_many(self._genkey(key))

    def incr(self, key, delta=1):
        return super(CacheClass, self).incr(self._genkey(key), delta)

    def decr(self, key, delta=1):
        return super(CacheClass, self).decr(self._genkey(key), delta)

&lt;/pre&gt;
</description>
    </item>
    
    <item>
      <title>The ganneff way of becoming a Debian package maintainer</title>
      <link>https://bzed.de/post/2009/11/the_ganneff_way_of_becoming_a_debian_package_maintainer/</link>
      <pubDate>Sat, 28 Nov 2009 22:46:43 +0100</pubDate>
      
      <guid>https://bzed.de/post/2009/11/the_ganneff_way_of_becoming_a_debian_package_maintainer/</guid>
      <description>&lt;p&gt;Once there was a project called Debian and a Ganneff&amp;hellip;. (unfortunately in German only&amp;hellip;.)&lt;/p&gt;
&lt;pre&gt;

22:20 &lt; cb&gt; Das ist doch voll die Arbeit Maintainer zu werden :-). Ich geb
gewünschte Pakete immer nur weiter an einen der da sowieso schon den Kernel
betreut :-)
22:21 &lt; Ganneff&gt; es is nur viel arbeit wenn du keinen schimmer hast
22:22 &lt; cb&gt; ja ich hab nur das seepferdchen *g*
22:22 &lt; Obilan&gt; Knusper: ja sicher ist es das
22:22 &lt; Knusper&gt; kopf -&gt; tisch
22:22 &lt; cb&gt; Knusper, wenn du die verwaisten pakete findest siehst du auf
der gleichen seite auch die links wie man maintainer wird
22:22 &lt; Knusper&gt; die hab ich gefunden
22:22 &lt; cb&gt; zumindest hab ich das das letzte mal dort gesehen
22:24 &lt; Ganneff&gt; wnpp?
22:24 &lt; Knusper&gt; aber man brauch dann schon leute, die einen &#34;hoffieren&#34;
22:26 &lt; Ganneff&gt; du brauchst erstmal die ahnung nen paket zu bauen.
22:26 &lt; Ganneff&gt; dazu siehe new maint guide
22:26 &lt; Ganneff&gt; dann brauchste nen sponsor. dazu gehe zur mentors liste
22:26 &lt; Ganneff&gt; dann machste mit dem eh weng rum (also normal so
paketuploads via dem)
22:26 &lt; Ganneff&gt; und hast da halt schon dein maintenance krams.
22:27 &lt; Ganneff&gt; irgendwann is der sponsor angekotzt von dir und dem
laufenden arbeit generieren
22:27 &lt; Ganneff&gt; der tritt dich dann dass du mal DM anfängst.
22:27 &lt; Ganneff&gt; das machste dann, und jemand anders tritt dir deine pakete
als dmua zurecht, nachdem du in nem keyring irgendwo steckst.
22:27 &lt; Ganneff&gt; und dann kannste denn krampf selbst hochladen. aber nix
andres.
22:27 &lt; Ganneff&gt; irgendwann willste was andres. und willst das auch noch
ohne son doofen sponsor
22:28 &lt; Ganneff&gt; dann versuchste dich an DD
22:28 &lt; Knusper&gt; ahhhhhh
22:28 &lt; Ganneff&gt; dazu musste dir nen advocate suchen
22:28 &lt; Ganneff&gt; der is üblicherweise einer dem du vorher im prozess
laufend auf den wecker fielst
22:28 &lt; Ganneff&gt; und er deswegen den nm leutz sagt &#34;oh gott, befreit mich
bloss von dem&#34;
22:28 &lt; Ganneff&gt; die machen das dann, aber sie wollen dir mal etwas
schmerzen zurückgeben
22:28 &lt; Ganneff&gt; desdewegen wirste viele fragen beantworten müssen
22:29 &lt; Ganneff&gt; und wie beim tüv das auto musste hier deine pakete nochmal
vorstellen und checken lassen
22:29 &lt; Ganneff&gt; und dann nochmal fragen beantworten
22:29 &lt; Knusper&gt; thx...
22:29 &lt; Ganneff&gt; irgendwann gehst du dann mit den antworten den nm leuten
so auf den geist dass die dem frontdesk sagen &#34;meine kacke, den wolle mehr
nit mehr sehen, schickts den dochma zu den DAMs, die hamms verdient&#34;
22:30 &lt; Ganneff&gt; und die machen das dann meist. ausser sie mögen dich nich.
dann darfste nochma fragen beantworten
22:30 &lt; Ganneff&gt; bei den dams darfste nur warten. die testen deine geduld
22:30 &lt; Ganneff&gt; irgendwann langweilen die sich aber
22:30 &lt; Ganneff&gt; und dann kriegste plötzlich mail
22:30 &lt; Ganneff&gt; OH MEIN GOTT. EIN NEUER DD.
22:30 &lt; Ganneff&gt; ende
22:30 &lt; Ganneff&gt; kapitel 2:
22:30 &lt; cb&gt; schöne beschreibung
22:30 &lt; Ganneff&gt; du machst ne zeit als dd rum
22:30 &lt; Knusper&gt; LOL
22:30 &lt; Ganneff&gt; votest durch die gegend
22:30 &lt; Ganneff&gt; lädst pakete umher
22:30 &lt; Ganneff&gt; machst bugs in stable
22:30 &lt; Ganneff&gt; gibts dem security team arbeit
22:31 &lt; Ganneff&gt; sprich - du gehst allen auf den sack. denn das is was ein
dd macht. muss ja schliesslich auch spass machen.
22:31 &lt; Ganneff&gt; aber irgendwann, also irgendwann, da wird das langweilig
22:31 &lt; Ganneff&gt; und dann verschwindeste mal ne zeit.
22:31 &lt; Ganneff&gt; weil du weisst - da gibts noch son team. das brauch auch
arbeit
22:31 &lt; Ganneff&gt; die suchen so leute die weggehen und sich verstecken
22:31 &lt; Ganneff&gt; nennt sich mia. die suchen.
22:31 &lt; Ganneff&gt; vielleicht finden die dich ja auch.
22:32 &lt; Ganneff&gt; dann kommste zurück und machst mal wieder etwas arbeit für
security/stable/sonstwen
22:32 &lt; Ganneff&gt; oder nicht, aber das is langweilig, da fliegste einfach.
22:32 &lt; Ganneff&gt; wennde dann gar keinen bock mehr hast und ne längre pause
willst
22:32 &lt; Ganneff&gt; dann gehste und machst eien auf emeritus
22:32 &lt; Ganneff&gt; das sind die rentner, die alten säcke, die sich
zurücklehnen und über die versuche der neuen lachen die sich grad von den
sponsoren quälen lassen
22:33 &lt; Ganneff&gt; ende kap. 2, ich hab keinen bock mehr. (jaja, emeritus)
&lt;/pre&gt;
&lt;p&gt;Cheers to #debian.de on freenode :-)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Douf00 - fat free presentations</title>
      <link>https://bzed.de/post/2009/09/douf00_-_fat_free_presentations/</link>
      <pubDate>Thu, 17 Sep 2009 01:39:21 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/09/douf00_-_fat_free_presentations/</guid>
      <description>&lt;p&gt;Now there is yet another package with a weird name in Debian - &lt;strong&gt;douf00&lt;/strong&gt; - a lightweight, slim and straight forward presentation tool. Written by some guys from a &lt;a href=&#34;http://nicenamecrew.com/about.html&#34;&gt;hacking and security team&lt;/a&gt;, which is mainly based in Vienna - guess that explains the l33t name (if you&amp;rsquo;re scared now, yes, I&amp;rsquo;ve reviewed the code&amp;hellip;). At the &lt;a href=&#34;http://froscon.de/&#34;&gt;FrOSCon&lt;/a&gt; one of the authors asked me if I&amp;rsquo;d be willing to package it for Debian.I&amp;rsquo;m sure you&amp;rsquo;ll love it if you&amp;rsquo;re giving presentations and don&amp;rsquo;t like to mess with Openoffice.org and friends. Below I&amp;rsquo;ve cited some parts of the &lt;a href=&#34;http://github.com/natano/presentation/blob/master/README&#34;&gt;README&lt;/a&gt; - make sure you read the linked file if you want to know more, or just install the package and give it a try.&lt;/p&gt;
&lt;em&gt;
Douf00 is a lightweight, slim and straight forward Presentation Tool.
It assists novice as well as experienced speakers when giving lectures
and business meetings. With its simple presenters Screen that includes
current slide - next slide (preview) as well as timers it is designed
to assist those of us, that are willing to step up their lectures
to the next level.
&lt;/em&gt;
&lt;em&gt;
The main reason why we created douf00 is because
we (nice name crew) travel to conferences very often.
As a matter of fact i always carried my macbook pro to
every event. I always loved keynote and how the presenters
screen works. Not having to worry about your beamer configuration
and presenters screen is really comforting.
However since i love to pack small and play big (on it stuff)
i really felt we had to do something about it.
Given the current situation presenters using linux have to deal
with, we decided to simplify it.
Of corse as a geek i would love to travel just with my netback
saving valuable space in my backpack. In reality i was always
caring my heavy macbook pro 15&#34; everywhere just to lecture.
Not only is it bad to give a presentation standing behind your
machine because your presenters remote doesn&#39;t work.
It is also highly annoying to always have to fumble around with
your graphics card.
Given the large verity of tools for creating your slides.
(i.e.: powerpoint, open office impress, apple&#39;s keynote,
latech-beamer,....)
We felt there was no room for yet another slide creation tool.
Nonetheless i noticed my desire to jump onstage, give a really
good presentation without the usual worries.
To be honest i use Keynote from apple on my home computer as i
find it the most comforting tool to create slides.
But now that we have created doufoo i save up on baggage space,
and i finally managed to get rid of all the worries beforehand.
&lt;/em&gt;
&lt;em&gt;
But what is doufoo? - The perfect choice for every presenter that
has more important stuff todo than care about beamer configuration
more than once. Its fast, simple and lightweight.
We think that caring less about your gear and focusing on the
presentation itself is the best way to keep your audience
enthusiastic and entertained.
&lt;/em&gt;
</description>
    </item>
    
    <item>
      <title>German keyboard layout for cyanogenmod</title>
      <link>https://bzed.de/post/2009/08/german_keyboard_layout_for_cyanogenmod/</link>
      <pubDate>Tue, 25 Aug 2009 01:33:16 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/08/german_keyboard_layout_for_cyanogenmod/</guid>
      <description>&lt;p&gt;After installing the really awesome &lt;a href=&#34;http://forum.xda-developers.com/showthread.php?t=537204&#34;&gt;CyanogenMod&lt;/a&gt; on my G1/HTC Dream I was facing the problem that the keyboard layout was switched to qwerty - while I really prefer that on all my computers, it is annoying to use if you have to guess all the Alt keys.&lt;/p&gt;
&lt;p&gt;There are several opinions &lt;a href=&#34;http://forum.xda-developers.com/showthread.php?t=504710&amp;amp;page=3&#34;&gt;out there&lt;/a&gt; about what to do to change the keyboard layout - the following procedure works well for me:&lt;/p&gt;
&lt;p&gt;First download the android sdk if you haven&amp;rsquo;t done so yet, you&amp;rsquo;ll need &lt;em&gt;adb&lt;/em&gt; from the tools directory. Connect your phone via USB and run&lt;/p&gt;
&lt;pre&gt;adb devices&lt;/pre&gt;
&lt;p&gt;to check if adb is able to detect the phone. If not, you probably need to &lt;a href=&#34;posts/2009/05/howto_set_android_developer_device_permissions_with_udev/&#34;&gt;setup the device permissions&lt;/a&gt; correctly. If adb is able to detect your devices, use it to remount /system read-write and enter a shell:&lt;/p&gt;
&lt;pre&gt;
adb remount
adb shell
&lt;/pre&gt;
&lt;p&gt;Paste the following into the adb shell - please note that the phone will reboot. If you don&amp;rsquo;t want that, don&amp;rsquo;t paste the reboot line.&lt;/p&gt;
&lt;pre&gt;
cp /system/usr/keychars/trout-keypad-qwertz.kcm.bin /system/usr/keychars/trout-keypad-v3.kcm.bin
cp /system/usr/keychars/trout-keypad-qwertz.kcm.bin /system/usr/keychars/trout-keypad-v2.kcm.bin
cp /system/usr/keychars/trout-keypad-qwertz.kcm.bin /system/usr/keychars/trout-keypad.kcm.bin
cp /system/usr/keylayout/trout-keypad-qwertz.kl /system/usr/keylayout/trout-keypad-v3.kl
cp /system/usr/keylayout/trout-keypad-qwertz.kl /system/usr/keylayout/trout-keypad-v2.kl
cp /system/usr/keylayout/trout-keypad-qwertz.kl /system/usr/keylayout/trout-keypad.kl
reboot
&lt;/pre&gt;
&lt;p&gt;Now your keyboard layout should be qwertz again.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Retrieving debconf translations from the bts</title>
      <link>https://bzed.de/post/2009/07/retrieving_debconf_translations_from_the_bts/</link>
      <pubDate>Wed, 22 Jul 2009 17:17:16 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/07/retrieving_debconf_translations_from_the_bts/</guid>
      <description>&lt;p&gt;Downloading debconf translations from the bts and committing them to my packaging repository was always a task which pretty much annoyed me. Today I spent some time on writing a script which does this job for me. There is still much to improve - it is more like a prove of concept - but it works for me. With some love and probably a rewrite in Perl or Python it is a good candidate for devscripts probably.&lt;/p&gt;
&lt;pre&gt;
&lt;code class=&#34;language-bash&#34;&gt;
#!/bin/bash

set -e
[ -d debian/po ] || exit 255
[ -r debian/control ] || exit 255

function get_ci_message() {
	echo &#34;Updating debconf translation: ${2}&#34;
	echo &#34;&#34;
	echo &#34;Thanks: $(echo ${3} | sed &#39;s, &lt;[^&lt;]*@[^&gt;]*&gt;.*,,&#39;)&#34;
	echo &#34;Closes: #${1}&#34;
}

pkg_source=$(grep &#39;^Source:&#39; debian/control| awk &#39;{print$2}&#39;)
for bug in $(bts select source:${pkg_source} tag:l10n tag:patch status:open); do
	#sanety check - stop if there is somethign left to commit.
	git status | grep -qE &#39;^nothing.*to commit&#39; || exit 255

	#cache bug files
	bts cache ${bug}

	# po files are gzip or bz2 compressed sometimes
	find ~/.devscripts_cache/bts/${bug} -type f -name &#39;*.po.gz&#39; -exec gunzip {} \;
	find ~/.devscripts_cache/bts/${bug} -type f -name &#39;*.po.bz2&#39; -exec bunzip2 {} \;

	#find the last .po file from the attachments
	pofile=$(find ~/.devscripts_cache/bts/${bug} -type f -name &#39;*.po&#39; |\
			sort | tail -1)
	if [ -z ${pofile} ]; then
		echo &#34;Ignoring bug #${bug} - no po file found&#34;
		continue
	fi

	# find the basename of the .po file, some translators use
	# packagename.xy.po, we try to work around that
	basename=$(basename ${pofile} | sed &#39;s,.*\.\([a-z][a-z].po\),\1,&#39;)

	# sanety check if we have a filename like xy.po now
	if ! echo ${basename} | grep -qE &#39;^[a-z][a-z].po$&#39;; then
		echo &#34;Ignoring bug #${bug} - ${basename} not a useful name&#34;
		continue
	fi

	cp ${pofile} debian/po/${basename}

	#git add and commit it.
	git add debian/po/${basename}

	author=$(bts status ${bug} |\
		grep &#39;^originator&#39; |\
		awk -F &#39;\t&#39; &#39;{print $2}&#39;)

	get_ci_message ${bug} ${basename} ${author} | git commit -F - --author=&#34;${author}&#34;
	bts cleancache ${bug}
done
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;The git commit messages are prepared for usage with git-dch, which is my favourite way to write the Debian changelog.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The script is using the originator information from the bug as author information for the commit now. Thanks to Santi for the comment! I could not test the changes yet, but I assume it will work well :)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Pidgin-blinklight replacement for other messengers</title>
      <link>https://bzed.de/post/2009/07/pidgin-blinklight_replacement_for_other_messengers/</link>
      <pubDate>Wed, 22 Jul 2009 11:39:22 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/07/pidgin-blinklight_replacement_for_other_messengers/</guid>
      <description>&lt;p&gt;One of my favourite plugins for &lt;em&gt;pidgin&lt;/em&gt; is &lt;em&gt;pidgin-blinklight&lt;/em&gt;, which blinks my ThinkPad&amp;rsquo;s ThinkLight upon the arrival of new messages. Pretty useful as it is not as annoying (especially for others around you) as playing weird sounds. Unfortunately such a plugin is not available for other messengers like &lt;em&gt;psi&lt;/em&gt; - but you&amp;rsquo;re able to specify your own sound player. So I came up with the following script, which is my default sound player in psi now.&lt;/p&gt;
&lt;pre&gt;
#!/bin/bash

IBMLIGHT=&#34;/proc/acpi/ibm/light&#34;

function light_is_on() {
	[ &#34;on&#34; = &#34;`grep status ${IBMLIGHT} | awk &#39;{print $2}&#39;`&#34; ]
	return $?
}

function light_off() {
	echo off &gt; ${IBMLIGHT}
}

function light_on() {
	echo on &gt; ${IBMLIGHT}
}

if light_is_on; then
	light_off
	sleep 0.2
	light_on
	sleep 0.1
	light_off
	sleep 0.2
	light_on
else
	light_on
	sleep 0.2
	light_off
fi
&lt;/pre&gt;
&lt;p&gt;Hint: In case you want a blinking light and sound, just add something like &lt;em&gt;exec /usr/bin/play $@&lt;/em&gt; at the end of the script.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Gpsd 2.39-3 in Debian experimental</title>
      <link>https://bzed.de/post/2009/07/gpsd_2.39-3_in_debian_experimental/</link>
      <pubDate>Sat, 04 Jul 2009 22:56:07 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/07/gpsd_2.39-3_in_debian_experimental/</guid>
      <description>&lt;p&gt;Since a few days a new revision of &lt;a href=&#34;http://packages.debian.org/experimental/gpsd&#34;&gt;gpsd&lt;/a&gt; is available in Debian/experimental. If you&amp;rsquo;re a gpsd user, please give it a try as it contains various changes to the debconf templates and the config script. Although I don&amp;rsquo;t expect any problems, it is better to test it well. Also there&amp;rsquo;re several updates of the template translations missing and I want to give the translators some more time before uploading the package to unstable.&lt;/p&gt;
&lt;p&gt;The other important change in the package was to add a gpsd-dbg package which contains all debug symbols and python-dbg builds of the extensions. Hopefully it will help to debug all gpsd related issues, although until now I did not have a single bug report where they would have been necessary.&lt;/p&gt;
&lt;p&gt;Finally my thanks go to Christian Perrier and Justin B Rye for reviewing and fixing all the descriptions and templates.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Looking for a grip replacement</title>
      <link>https://bzed.de/post/2009/06/looking_for_a_grip_replacement/</link>
      <pubDate>Sun, 28 Jun 2009 23:50:10 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/06/looking_for_a_grip_replacement/</guid>
      <description>&lt;p&gt;Today was the first day I needed a tool to rip an audio CD after the removal of &lt;a href=&#34;http://packages.debian.org/lenny/grip&#34;&gt;grip&lt;/a&gt; from testing/unstable. Unfortunately I did not find an appropriate replacement yet. At the moment I&amp;rsquo;m using &lt;a href=&#34;http://packages.debian.org/sid/asunder&#34;&gt;asunder&lt;/a&gt;, which is nice, but missing a &lt;em&gt;lot&lt;/em&gt; of the features grip had.&lt;/p&gt;
&lt;p&gt;Dear lazyweb, is there a proper replacement for grip out there, or is anybody willing to take over the upstream maintenance for grip?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Vmbuilder for Debian</title>
      <link>https://bzed.de/post/2009/06/vmbuilder_for_debian/</link>
      <pubDate>Sun, 07 Jun 2009 20:25:09 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/06/vmbuilder_for_debian/</guid>
      <description>&lt;p&gt;As we needed it for one of our customers, I&amp;rsquo;ve started to add support for &lt;a href=&#34;http://www.debian.org&#34;&gt;Debian&lt;/a&gt; to the &lt;a href=&#34;https://launchpad.net/vmbuilder&#34;&gt;Ubuntu VMBuilder&lt;/a&gt;. My changes are not merged into trunk yet, but you can get them by running &lt;em&gt;bzr branch lp:~bzed/vmbuilder/debian&lt;/em&gt;. At the moment there is only support for Etch, I&amp;rsquo;ll add Lenny and Squeeze as soon as I find the time for it, probably next week - patches are welcome.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Howto set android developer device permissions with udev</title>
      <link>https://bzed.de/post/2009/05/howto_set_android_developer_device_permissions_with_udev/</link>
      <pubDate>Sun, 24 May 2009 22:33:47 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/05/howto_set_android_developer_device_permissions_with_udev/</guid>
      <description>&lt;p&gt;As there&amp;rsquo;re several, more or less well working howtos about creating udev rules to allow access to the USB debug devices of Android phones out there in the wild, I decided to write my own one. The udev rules file I provide here works at least for the HTC Dream models (aka T-Mobile G1 and Google Devphone) and the ZTE Blade (aka Orange San Francisco), probably for other phones, too.&lt;/p&gt;
&lt;p&gt;As a computer may be used by more than one user, I&amp;rsquo;ve decided to create a group called &lt;em&gt;androiddev&lt;/em&gt;. Members of the group will be allowed to access the debug interface. Running (hint: become &lt;em&gt;root&lt;/em&gt; first)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;addgroup &amp;ndash;system androiddev&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;will create the group for you. Add your developers to the group with&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;adduser username androiddev&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(of course replace &lt;em&gt;username&lt;/em&gt; with the user you&amp;rsquo;d like to add) and we&amp;rsquo;re ready to configure udev. Open &lt;strong&gt;/etc/udev/rules.d/android.rules&lt;/strong&gt; in an editor and add the following lines:&lt;/p&gt;
&lt;pre&gt;
# HTC G1. Maybe other models, too
SUBSYSTEMS==&#34;usb&#34;, ATTRS{idVendor}==&#34;0bb4&#34;, ATTRS{idProduct}==&#34;0c01&#34;, MODE=&#34;0660&#34;, OWNER=&#34;root&#34;, GROUP=&#34;androiddev&#34;, SYMLINK+=&#34;android%n&#34;
SUBSYSTEMS==&#34;usb&#34;, ATTRS{idVendor}==&#34;0bb4&#34;, ATTRS{idProduct}==&#34;0c02&#34;, MODE=&#34;0660&#34;, OWNER=&#34;root&#34;, GROUP=&#34;androiddev&#34;, SYMLINK+=&#34;android%n&#34;
SUBSYSTEMS==&#34;usb&#34;, ATTRS{idVendor}==&#34;0bb4&#34;, ATTRS{idProduct}==&#34;0fff&#34;, MODE=&#34;0660&#34;, OWNER=&#34;root&#34;, GROUP=&#34;androiddev&#34;, SYMLINK+=&#34;android%n&#34;

# ZTE Blade
SUBSYSTEMS==&#34;usb&#34;, ATTRS{idVendor}==&#34;19d2&#34;, ATTRS{idProduct}==&#34;1354&#34;, MODE=&#34;0660&#34;, OWNER=&#34;root&#34;, GROUP=&#34;androiddev&#34;, SYMLINK+=&#34;android%n&#34;
SUBSYSTEMS==&#34;usb&#34;, ATTRS{idVendor}==&#34;18d1&#34;, ATTRS{idProduct}==&#34;d00d&#34;, MODE=&#34;0660&#34;, OWNER=&#34;root&#34;, GROUP=&#34;androiddev&#34;, SYMLINK+=&#34;android%n&#34;
&lt;/pre&gt;
&lt;p&gt;That&amp;rsquo;s it. Udev will reload and activate the new ruleset. Don&amp;rsquo;t forget to re-login to make sure your new shiny group will show up! Now have fun with &lt;em&gt;adb&lt;/em&gt; and &lt;em&gt;fastboot&lt;/em&gt; :) Thanks to TauPan from #debian/freenode.net who gave me the idea for this blog post.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Second Update:&lt;/strong&gt; Added the proper line for fastboot and cleaned up the howto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Third Update:&lt;/strong&gt; Adding lines for ZTE Blade (aka Orange San Francisco).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Package build time: cdbs vs dh</title>
      <link>https://bzed.de/post/2009/04/package_build_time_cdbs_vs_dh/</link>
      <pubDate>Mon, 20 Apr 2009 13:43:04 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/04/package_build_time_cdbs_vs_dh/</guid>
      <description>&lt;p&gt;Most people (at least those who hear me shouting on irc) probably know that I&amp;rsquo;m not a fan of cdbs. While working on &lt;a href=&#34;http://packages.qa.debian.org/g/geoclue.html&#34;&gt;geoclue&lt;/a&gt;, which builds a lot of binary packages I realized, that cdbs wastes an insane amount of time by calling dh_* for every single package. One of the reasons geoclue uses cdbs is that the maintainer likes the short debian/rules file. We&amp;rsquo;ll, compare yourself:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;cdbs&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

include /usr/share/cdbs/1/rules/patchsys-quilt.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk
include /usr/share/cdbs/1/rules/utils.mk

common-binary-predeb-arch:: list-missing

clean::
	rm -f providers/gypsy/Makefile
	rm -rf debian/tmp
&lt;/pre&gt;
&lt;p&gt;Build time: dpkg-buildpackage -B  132.20s user 41.52s system 90% cpu &lt;strong&gt;3:11.13 total&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;dh(1)&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/make -f
# -*- makefile -*-

include /usr/share/quilt/quilt.make

build: $(QUILT_STAMPFN) build-stamp
build-stamp:
	dh build
	touch $@

%:
	dh $@

clean: clean-patched unpatch
clean-patched:
	dh clean
	rm -f providers/gypsy/Makefile
	rm -f build-stamp

.PHONY: patch unpatch clean clean-patched build 
&lt;/pre&gt;
&lt;p&gt;Build time: dpkg-buildpackage -B  85.63s user 32.91s system 91% cpu &lt;strong&gt;2:08.91 total&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So cdbs wasted about one minute of time using a 2.4 GHz Intel Core2Duo. I&amp;rsquo;m wondering how much more time it takes on slow architectures like mips(el) and arm(el). One more argument against the unmaintaible mess of makefiles called cdbs.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Gimp-plugin-registry updated</title>
      <link>https://bzed.de/post/2009/04/gimp-plugin-registry_updated/</link>
      <pubDate>Sun, 19 Apr 2009 00:57:40 +0200</pubDate>
      
      <guid>https://bzed.de/post/2009/04/gimp-plugin-registry_updated/</guid>
      <description>&lt;p&gt;Somehow I managed to forget to blog about this for some time - version 2.1-1 of &lt;a href=&#34;http://packages.debian.org/sid/gimp-plugin-registry&#34;&gt;gimp-plugin-registry&lt;/a&gt; is available in testing since several days. For detailed changes please have a look in the changelog, for the impatient - here is the summary:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New plugins: btn4ws, sprocket-hole, cmyk-tiff-2-pdf, dustcleaner (back again, was removed for stable as it was not mature enough)&lt;/li&gt;
&lt;li&gt;New upstream versions of the following plugins: lqr, DBP, diana-holga2, focusblur, GREYCstoration, LayerEffects (now using Python), normalmap, save-for-web, seperate+, wavelet-denoise&lt;/li&gt;
&lt;li&gt;Removed plugins: exposure-blend&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As usual let me know if there&amp;rsquo;s a nice plugin you&amp;rsquo;d like to see in the package.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Gimp-plugin-registry update planned</title>
      <link>https://bzed.de/post/2009/03/gimp-plugin-registry_update_planned/</link>
      <pubDate>Fri, 13 Mar 2009 13:30:24 +0100</pubDate>
      
      <guid>https://bzed.de/post/2009/03/gimp-plugin-registry_update_planned/</guid>
      <description>&lt;p&gt;Within the next days I plan to update the &lt;a href=&#34;http://packages.debian.org/sid/gimp-plugin-registry&#34;&gt;gimp-plugin-registry&lt;/a&gt; package, including the latest versions of all plugins. So if you&amp;rsquo;d like to see a new fance plugin in the package, or you have any other wish, please add a comment here, or even better, file a wishlist bug report against the package. Patches are welcome, git repository informations are listed below.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://git.recluse.de/?p=debian/pkg-gimp-plugin-registry.git;a=summary&#34;&gt;gitweb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;git://git.recluse.de/debian/pkg-gimp-plugin-registry.git&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://git.recluse.de/repos/debian/pkg-gimp-plugin-registry.git&#34;&gt;http://git.recluse.de/repos/debian/pkg-gimp-plugin-registry.git&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Extra points if you find new/forked versions of plugins which are/were listed on &lt;a href=&#34;http://registry.gimp.org&#34;&gt;registry.gimp.org&lt;/a&gt; but disappeared or are not updated anymore. Since the page moved to a blog-like style, and old plugin entries are not updated as before, it became harder for me keep the plugins uptodate. Help is appreciated.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Why you should use gpsd over gypsy</title>
      <link>https://bzed.de/post/2009/02/why_you_should_use_gpsd_over_gypsy/</link>
      <pubDate>Tue, 24 Feb 2009 01:48:05 +0100</pubDate>
      
      <guid>https://bzed.de/post/2009/02/why_you_should_use_gpsd_over_gypsy/</guid>
      <description>&lt;p&gt;While working on the Debian packages of &lt;a href=&#34;http://www.navit-project.org/&#34;&gt;navit&lt;/a&gt; I stumbled upon &lt;a href=&#34;http://gypsy.freedesktop.org/wiki/&#34;&gt;gypsy&lt;/a&gt;, as the &lt;em&gt;libgypsy&lt;/em&gt; is used by navit to listen to notifications about location changes via D-Bus.&lt;/p&gt;
&lt;p&gt;As maintainer of the &lt;a href=&#34;http://gpsd.berlios.de/&#34;&gt;gpsd&lt;/a&gt; &lt;a href=&#34;http://packages.qa.debian.org/g/gpsd.html&#34;&gt;package&lt;/a&gt; I started to wonder what the opinion of the gpsd developers about gypsy is - especially after reading that &lt;em&gt;&amp;ldquo;Gypsy was designed to fix the &lt;a href=&#34;http://gypsy.freedesktop.org/why-not-gpsd.html&#34;&gt;numerous design flaws&lt;/a&gt; found in GPSD&amp;rdquo;&lt;/em&gt;. Well, &lt;a href=&#34;http://gpsd.berlios.de/gypsy.html&#34;&gt;here is their answer&lt;/a&gt;, which I support fully.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m blogging about it as I think it is important to know about this details if you plan to do something useful with a gps device, for example on mobile phones like the &lt;a href=&#34;http://wiki.openmoko.org/wiki/Neo_FreeRunner&#34;&gt;OpenMoko Freerunner&lt;/a&gt;. gpsd works very well on embedded devices, and if there&amp;rsquo;s a feature missing just contact the developers. They&amp;rsquo;re very responsive and like to implement useful features, if they can get a spec to do so (and even better, the hardware to test it). So I&amp;rsquo;m really wondering if it wouldn&amp;rsquo;t make sense to replace the minimal NMEA/UBX implementation in the &lt;a href=&#34;http://www.freesmartphone.org&#34;&gt;FSO&lt;/a&gt; &lt;a href=&#34;http://git.freesmartphone.org/?p=framework.git;a=tree;f=framework/subsystems/ogpsd;h=856c8f8778bc65e40d5491c4cd173975b878301a;hb=HEAD&#34;&gt;Framework Daemon&lt;/a&gt; by gpsd, even if that means to compile code instead of writing Python code, which is much faster for rapid prototyping, of course.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Awesome calendar widget</title>
      <link>https://bzed.de/post/2009/02/awesome_calendar_widget/</link>
      <pubDate>Mon, 23 Feb 2009 01:18:25 +0100</pubDate>
      
      <guid>https://bzed.de/post/2009/02/awesome_calendar_widget/</guid>
      <description>&lt;p&gt;One of the things I was missing in my favourite windowmanager &lt;a href=&#34;http://awesome.naquadah.org/&#34;&gt;awesome&lt;/a&gt; was a calendar widget. So I spent some minutes and coded it. Moving the mouse over the time widget will show a &lt;em&gt;naughty&lt;/em&gt; popup with the current month, use your mouse buttons (and the shift key) to scroll trough the months. The only annoying thing was to figure out how to change the text of an existing notification: &lt;code&gt;notification.box.widgets[2].text = &amp;quot;new test&amp;quot;&lt;/code&gt; is neither easy to figure out nor to use.&lt;/p&gt;
&lt;p&gt;But here&amp;rsquo;s the code for your &lt;em&gt;rc.lua&lt;/em&gt; - in case you want to have a license for it - the code is published as public domain or under the ISC license, what ever you prefer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: With thanks to a hint from &lt;em&gt;madduck&lt;/em&gt;, the naughty popup is now aware of the screen your mouse is pointing to.&lt;/p&gt;
&lt;pre&gt;
function displayMonth(month,year,weekStart)
    local t,wkSt=os.time{year=year, month=month+1, day=0},weekStart or 1
    local d=os.date(&#34;*t&#34;,t)
    local mthDays,stDay=d.day,(d.wday-d.day-wkSt+1)%7

    local lines = {}

    for x=0,6 do
        lines[x+1] = os.date(&#34;%a &#34;,os.time{year=2006,month=1,day=x+wkSt})
    end
    lines[8] = &#34;    &#34;

    local writeLine = 1
    while writeLine &lt; (stDay + 1) do
        lines[writeLine] = lines[writeLine] .. &#34;   &#34;
        writeLine = writeLine + 1
    end
        
    for x=1,mthDays do
        if writeLine == 8 then
            writeLine = 1
        end
        if writeLine == 1 or x == 1 then
            lines[8] = lines[8] .. os.date(&#34; %V&#34;,os.time{year=year,month=month,day=x})
        end
        if (#(tostring(x)) == 1) then
            x = &#34; &#34; .. x
        end
        lines[writeLine] = lines[writeLine] .. &#34; &#34; .. x
        writeLine = writeLine + 1
    end
    local header = os.date(&#34;%B %Y\n&#34;,os.time{year=year,month=month,day=1})
    header = string.rep(&#34; &#34;, math.floor((#(lines[1]) - #header) / 2 )) .. header

    return header .. table.concat(lines, &#39;\n&#39;)
end

local calendar = {}
function switchNaughtyMonth(switchMonths)
    if (#calendar &lt; 3) then return end
    local swMonths = switchMonths or 1
    calendar[1] = calendar[1] + swMonths
    calendar[3].box.widgets[2].text = displayMonth(calendar[1], calendar[2], 2)
end

mytextbox.mouse_enter = function ()
    local month, year = os.date(&#39;%m&#39;), os.date(&#39;%Y&#39;)
    calendar = { month, year, 
                naughty.notify({
                    text = displayMonth(month, year, 2),
                    timeout = 0, hover_timeout = 0.5,
                    width = 200, screen = mouse.screen
                })
               }
end 
mytextbox.mouse_leave = function () naughty.destroy(calendar[3]) end

mytextbox:buttons({
    button({ }, 1, function()
        switchNaughtyMonth(-1)
    end),
    button({ }, 3, function()
        switchNaughtyMonth(1)
    end),
    button({ }, 4, function()
        switchNaughtyMonth(-1)
    end),
    button({ }, 5, function()
        switchNaughtyMonth(1)
    end),
    button({ &#39;Shift&#39; }, 1, function()
        switchNaughtyMonth(-12)
    end),
    button({ &#39;Shift&#39; }, 3, function()
        switchNaughtyMonth(12)
    end),
    button({ &#39;Shift&#39; }, 4, function()
        switchNaughtyMonth(-12)
    end),
    button({ &#39;Shift&#39; }, 5, function()
        switchNaughtyMonth(12)
    end)
})
&lt;/pre&gt;
</description>
    </item>
    
    <item>
      <title>Migrating to ikiwiki</title>
      <link>https://bzed.de/post/2009/02/migrating_to_ikiwiki/</link>
      <pubDate>Sun, 15 Feb 2009 03:31:57 +0100</pubDate>
      
      <guid>https://bzed.de/post/2009/02/migrating_to_ikiwiki/</guid>
      <description>&lt;p&gt;Hi Planet Debian!&lt;/p&gt;
&lt;p&gt;After being away from the planet for more than a year now, I&amp;rsquo;m finally back :)
My plan to migrate to &lt;a href=&#34;http://ikiwiki.info/&#34;&gt;ikiwiki&lt;/a&gt; got postponed a lot of times as I had more important things to do. The migration of the content of my old wiki is still not complete, but I hope to finish that soon.
Why I&amp;rsquo;ve migrated away from &lt;a href=&#34;http://www.dokuwiki.org/&#34;&gt;Dokuwiki&lt;/a&gt;? Mainly because I really prefer to have a git backend and being able to add content with vim. The other reason is that php sucks. Dokuwiki really rocks otherwise, and I&amp;rsquo;ll keep recommending it to the not-so-geekish people.&lt;/p&gt;
&lt;p&gt;Be prepared to see more posts from me soon :) In the meantime it would be great if you&amp;rsquo;d tell me if therere CSS problems somewhere, I&amp;rsquo;ve tested it with Iceweasel only. Thanks in advance!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Curriculum Vitae - Bernd Zeimetz</title>
      <link>https://bzed.de/contact/cv/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://bzed.de/contact/cv/</guid>
      <description>&lt;p&gt;My curriculum vitae is available as PDF download in &lt;a href=&#34;pdf/cv_de.pdf&#34;&gt;German&lt;/a&gt; and &lt;a href=&#34;pdf/cv.pdf&#34;&gt;English&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Imprint</title>
      <link>https://bzed.de/contact/imprint/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://bzed.de/contact/imprint/</guid>
      <description>&lt;p&gt;This page is maintained by&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Bernd Zeimetz
Hauptstr. 37
5071 Wals bei Salzburg
AUSTRIA

German Post address:
Forsthausstr. 8
56288 Kastellaun
GERMANY

mobile phone:
(+43) 699 15018006

bernd@bzed.de
bzed@debian.org

GPG-Fingerprint:
    ECA1 E3F2 8E11 2432 D485  DD95 EB36 171A 6FF9 435F
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This data may not be used for advertising purposes.
The content of pages referenced using external links is under the responsibility of the respective author. At the time of linking, I could not find any illegal or offending content there. If you find a change in this, please inform me.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pub   rsa4096/EB36171A6FF9435F 2009-05-11 [SC] [expires: 2022-01-30]
      Key fingerprint = ECA1 E3F2 8E11 2432 D485  DD95 EB36 171A 6FF9 435F
uid                 [ultimate] Bernd Zeimetz &amp;lt;bernd@bzed.de&amp;gt;
uid                 [ultimate] Bernd Zeimetz &amp;lt;bzed@debian.org&amp;gt;
uid                 [ultimate] [jpeg image of size 3107]
sub   rsa4096/00B610F585403595 2009-05-11 [E] [expires: 2022-01-30]
sub   rsa4096/0697AB1BC8A80631 2014-04-24 [E] [expires: 2022-01-30]
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

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
=SYD3
-----END PGP PUBLIC KEY BLOCK-----
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
  </channel>
</rss>
