<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">
  <channel>
    <title>niemueller.de</title>
    <link>http://www.niemueller.de/</link>
    <description>Tim's news - more or less personal</description>
    <language>en</language>
    <image>
      <title>niemueller.de</title>
      <url>http://www.niemueller.de/images/niemueller.rss.png</url>
      <link>http://www.niemueller.de/</link>
    </image>
    <pubDate>Thu, 12 Jan 2012 13:37:58 +0100</pubDate>

    <lastBuildDate>Thu, 12 Jan 2012 13:37:58 +0100</lastBuildDate>

    <item>
      <title>Extending VM disk (1 comment)</title>
      <link>http://www.niemueller.de/blog/show.php?id=246</link>
      <guid>http://www.niemueller.de/blog/show.php?id=246</guid>
      <pubDate>Thu, 12 Jan 2012 13:37:58 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;&lt;p&gt;Consider the following situation: a &lt;a href=&quot;http://www.centos.org&quot; rel=&quot;external&quot;&gt;CentOS&lt;/a&gt; 6.2 host (this can also be &lt;a href=&quot;http://www.fedoraproject.org&quot; rel=&quot;external&quot;&gt;Fedora&lt;/a&gt; or &lt;a href=&quot;http://www.redhat.com/rhel/&quot; rel=&quot;external&quot;&gt;RHEL&lt;/a&gt; for that matter) using &lt;a href=&quot;http://www.linux-kvm.org&quot; rel=&quot;external&quot;&gt;KVM&lt;/a&gt; to run virtual machines (VM). The host uses the Logical Volume Manager (LVM) as storage to create disks for the VMs. Now one of the machines needs more disk space then was originally envisioned and thus the space must be extended. The guest system in turn is also running CentOS 6.2 and itself using LVM to setup its storage.&lt;/p&gt;

&lt;p&gt;So we have the following entities to deal with:&lt;br/&gt;
&lt;b&gt;Host&lt;/b&gt;: The physical machine running CentOS 6.2 and KVM.&lt;br/&gt;
&lt;b&gt;Guest&lt;/b&gt;: Virtual machine running in KVM.&lt;br/&gt;
&lt;b&gt;vg_host/lv_vm&lt;/b&gt;: The logical volume on the host system which constitutes the disk drive of the Guest.&lt;br/&gt;
&lt;b&gt;/dev/vda2&lt;/b&gt;: The second partition on the first virtio disk in the Guest. It contains the only physical volume used on the Guest.&lt;br/&gt;
&lt;b&gt;vg_vm&lt;/b&gt;: The volume group on the Guest where the only physical volume is /dev/vda2.&lt;br/&gt;
&lt;b&gt;vg_vm/lv_root&lt;/b&gt;: The logical volume in the Guest volume group which facilitates the root of Guest's filesystem.&lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;To keep things simple we assume that there is only a single mount point for the Guest, i.e. /usr etc. are not split off onto own partitions or logical volumes. Replace vg_host, lv_vm, and vg_vm with the actual values from your system. vgdisplay and lvdisplay can help you to find out about it.&lt;/p&gt;

&lt;p&gt;So the following steps are necessary to get more disk space into the VM.
&lt;ol&gt;
  &lt;li&gt;On Host: Extend vg_host/lv_vm&lt;/li&gt;
  &lt;li&gt;On Guest Extend /dev/vda2 partition&lt;/li&gt;
  &lt;li&gt;On Guest Extend /dev/vda2 physical volume&lt;/li&gt;
  &lt;li&gt;On Guest Extend vg_vm/lv_root logical volume&lt;/li&gt;
  &lt;li&gt;On Guest Extend vg_vm/lv_root file system&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;Therefore, execute the following steps.
&lt;p&gt;0. &lt;b&gt;Stop the VM&lt;/b&gt;: &lt;pre&gt;virsh shutdown VM&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;1. &lt;b&gt;On Host: Extend vg_host/lv_vm&lt;/b&gt;: this code extends by 10GB, change as appropriate, make sure there is enough free space left in the volume group.
&lt;pre&gt;lvresize -L+10G vg_host/lv_vm&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;b&gt;On Guest Extend /dev/vda2 partition&lt;/b&gt;: This is critical, take special care! It is important to choose the proper starting cylinder. The suggested start might be wrong, therefore first print the current start and keep it. Sorry this is the German output, but you should be able to match it properly.
&lt;pre&gt;
fdisk /dev/vda2
Befehl (m f&Atilde;&frac14;r Hilfe): p
   Ger&Atilde;&curren;t  boot.     Anfang        Ende     Bl&Atilde;&para;cke   Id  System
/dev/vda1   *           3        1018      512000   83  Linux
Partition 1 endet nicht an einer Zylindergrenze.
/dev/vda2            1018       21391    10267648   8e  Linux LVM
Partition 2 endet nicht an einer Zylindergrenze.
Befehl (m f&Atilde;&frac14;r Hilfe): d
Partitionsnummer (1-4): 2

Befehl (m f&Atilde;&frac14;r Hilfe): n
Befehl  Aktion
   e      Erweiterte
   p      Prim&Atilde;&curren;re Partition (1-4)
p
Partitionsnummer (1-4): 2
Erster Zylinder (1-62415, Vorgabe: 1): 1018
Last Zylinder, +Zylinder or +size{K,M,G} (1018-62415, Vorgabe: 62415): 
Benutze den Standardwert 62415

Befehl (m f&Atilde;&frac14;r Hilfe): p

Platte /dev/vda: 32.2 GByte, 32212254720 Byte
16 K&Atilde;&para;pfe, 63 Sektoren/Spur, 62415 Zylinder
Einheiten = Zylinder von 1008 &Atilde;— 512 = 516096 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000407f8

   Ger&Atilde;&curren;t  boot.     Anfang        Ende     Bl&Atilde;&para;cke   Id  System
/dev/vda1   *           3        1018      512000   83  Linux
Partition 1 endet nicht an einer Zylindergrenze.
/dev/vda2            1018       62415    30944136   83  Linux
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;You now need to reboot because the partition is currently in use.&lt;/p&gt;

&lt;p&gt;3. &lt;b&gt;On Guest Extend /dev/vda2 physical volume&lt;/b&gt;: extend to maximal size. Make sure you have rebooted your system or otherwise this won't work (even though it doesn't report any errors).
&lt;pre&gt;# pvresize /dev/vda2
  Physical volume &quot;/dev/vda2&quot; changed
  1 physical volume(s) resized / 0 physical volume(s) not resized&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;4. &lt;b&gt;On Guest Extend vg_vm/lv_root logical volume&lt;/b&gt;
&lt;pre&gt;lvresize -l+100%FREE vg_vm/lv_root&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;5. &lt;b&gt;On Guest Extend vg_vm/lv_root file system&lt;/b&gt;: this can be done while the file system is mounted and active. But you'd probably be screwed on a power failure or so.
&lt;pre&gt;resize2fs vg_vm/lv_root&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Done!&lt;/b&gt; Now &lt;tt&gt;df -h&lt;/tt&gt; should report the full space.&lt;/p&gt;&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>The long road to Kerberos/LDAP/NFSv4 and a shortcut (1 comment)</title>
      <link>http://www.niemueller.de/blog/show.php?id=245</link>
      <guid>http://www.niemueller.de/blog/show.php?id=245</guid>
      <pubDate>Fri, 22 Apr 2011 00:38:04 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;Recently we got a new server at university. It will replace the current file and authentication server which uses NIS and NFSv3. It provides us with a good opportunity to upgrade to something more secure and efficient. So I took on the journey to setup &lt;a href=&quot;http://www.openldap.org/&quot; rel=&quot;external&quot;&gt;OpenLDAP&lt;/a&gt; as user directory, &lt;a href=&quot;http://web.mit.edu/kerberos/www/&quot; rel=&quot;external&quot;&gt;Kerberos&lt;/a&gt; for authentication, and &lt;a href=&quot;https://wiki.linux-nfs.org/&quot; rel=&quot;external&quot;&gt;NFSv4&lt;/a&gt; for file sharing. But the way took a little time, only to find out later a shortcut which makes it almost a piece of cake. The long way still provides insightful information, therefore it's still useful to try it do-it-yourself style first.&lt;br/&gt;&lt;br/&gt;Rather than writing yet another howto, I will link to documents that I used during the initial setup. The most relevant source is the &lt;a href=&quot;http://www.itp.uzh.ch/~dpotter/howto/kerberos&quot; rel=&quot;external&quot;&gt;Kerberos/LDAP/NFSv4 HOWTO&lt;/a&gt;. It describes the way pretty much step by step. If you want to replace NIS like us the &lt;a href=&quot;http://aput.net/~jheiss/krbldap/howto.html&quot; rel=&quot;external&quot;&gt;Replacing NIS with Kerberos and LDAP HOWTO&lt;/a&gt; is a good read. We use &lt;a href=&quot;http://www.centos.org&quot; rel=&quot;external&quot;&gt;CentOS 5.6&lt;/a&gt; on the file server. The most common pitfall to run into then is that the NFS code there only supports weak ciphers. As client we used a &lt;a href=&quot;http://www.fedoraproject.org&quot; rel=&quot;external&quot;&gt;Fedora 14&lt;/a&gt; machine, which will only try strong ciphers by default (cf. for example Red Hat/Fedora bug reports &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=652273&quot; rel=&quot;external&quot;&gt;#652273&lt;/a&gt; and &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=573968&quot; rel=&quot;external&quot;&gt;#573968&lt;/a&gt;). First edit &lt;tt&gt;/etc/krb5.conf&lt;/tt&gt; and set &lt;tt&gt;allow_weak_crypto = yes&lt;/tt&gt; in the &lt;tt&gt;[libdefaults]&lt;/tt&gt; section. Then make sure to add &lt;tt&gt;-e des-cbc-crc:normal&lt;/tt&gt; to the ktadd command to export keys to the keytab for the NFS service keys (nfs/host@REALM). It is described in the &lt;a href=&quot;http://www.citi.umich.edu/projects/nfsv4/linux/krb5-setup.html&quot; rel=&quot;external&quot;&gt;NFSv4 Kerberos Setup Guide&lt;/a&gt;, as well as the mentioned howto, but something to be easily missed and hard to diagnose when new to the system. The &lt;a href=&quot;http://www.citi.umich.edu/projects/nfsv4/linux/faq/&quot; rel=&quot;external&quot;&gt;NFSv4 Linux FAQ&lt;/a&gt; provides some tips for NFS problems. Another document describes &lt;a href=&quot;http://research.imb.uq.edu.au/~l.rathbone/ldap/kerberos.shtml&quot; rel=&quot;external&quot;&gt;common Kerberos issues&lt;/a&gt;. When googling the &lt;a href=&quot;https://help.ubuntu.com/community/NFSv4Howto&quot; rel=&quot;external&quot;&gt;Ubuntu NFSv4 HOWTO&lt;/a&gt; frequently comes up, but it does not provide much useful additional information.&lt;br/&gt;&lt;br/&gt;Once I had it running I was pointed to &lt;a href=&quot;http://www.freeipa.org&quot; rel=&quot;external&quot;&gt;FreeIPA&lt;/a&gt;. It is an integrated solution that combines the &lt;a href=&quot;http://directory.fedoraproject.org/&quot; rel=&quot;external&quot;&gt;389 directory server&lt;/a&gt;, Kerberos, and the &lt;a href=&quot;http://pki.fedoraproject.org&quot; rel=&quot;external&quot;&gt;Dogtag Certificate System&lt;/a&gt; with nice console administration tools and a helpful WebUI. I went straight for version 2.0.0 for which a new &lt;a href=&quot;http://obriend.fedorapeople.org/freeIPA2.0/Identity_and_Policy_Management_Guide/html-single/&quot; rel=&quot;external&quot;&gt;Enterprise Identity Management Guide&lt;/a&gt; is currently work in progress. FreeIPA 2.0.0 is not perfect, yet, and I had to &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=696819&quot; rel=&quot;external&quot;&gt;report&lt;/a&gt; a &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=697887&quot; rel=&quot;external&quot;&gt;few&lt;/a&gt; &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=697890&quot; rel=&quot;external&quot;&gt;bugs&lt;/a&gt;, but it makes the overall process much easier. You still need to allo weak cryptos if CentOS/RHEL 5 is involved by yourself, IPA won't do that automatically for you. If you run into problems that the authentication fails (add -vvvvv as RPC idmapd and gssd/svcgssd flags to see this), wipe out the keys on both server and client and get new ones with the &lt;tt&gt;-e des-cbc-crc:normal&lt;/tt&gt; for the NFS service keys! The nice people behind the project are extremely helpful if you ask nicely via IRC.&lt;br/&gt;&lt;br/&gt;Have fun and enjoy secure authentication and encrypted file sharing as we hopefully will once the system is deployed.&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Fawkes in Google Summer of Code 2011 with Fedora</title>
      <link>http://www.niemueller.de/blog/show.php?id=244</link>
      <guid>http://www.niemueller.de/blog/show.php?id=244</guid>
      <pubDate>Wed, 23 Mar 2011 12:47:58 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;&lt;a href=&quot;http://www.fawkesrobotics.org&quot; rel=&quot;external&quot;&gt;Fawkes&lt;/a&gt; participates in the &lt;a href=&quot;http://www.google-melange.com/&quot; rel=&quot;external&quot;&gt;Google Summer of Code 2011&lt;/a&gt; under the umbrella of the &lt;a href=&quot;http://fedoraproject.org/&quot; rel=&quot;external&quot;&gt;Fedora Project&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;The &lt;a href=&quot;http://fedoraproject.org/wiki/SIGs/Robotics&quot; rel=&quot;external&quot;&gt;Fedora Robotics SIG&lt;/a&gt; has completed the &lt;a href=&quot;http://fedoraproject.org/wiki/Features/RoboticsSuite&quot; rel=&quot;external&quot;&gt;Fedora Robotics Suite&lt;/a&gt;, a set of robotics related software packages that are readily available in Fedora Linux. Fawkes is one prominent member of this package set. The original idea also envisioned creating an educational application, where a user would learn step by step to control a robot, then instruct, and finally program it. The project could not be completed due to a developer shortage.&lt;br/&gt;&lt;br/&gt;The project has now been proposed as one possible candidate for the Google Summer of Code 2011 with the Fedora Project as mentoring organization. If you are a student with a background in robotics and experience in C++ software development please consider applying for this project. The Fedora Robotics SIG comprises many developers of upstream software projects providing a good way to get in touch with those projects. It will also be a very visible feature of the Fedora Robotics effort providing a good show case for later applications.&lt;br/&gt;&lt;br/&gt;To apply please read information on the &lt;a href=&quot;http://fedoraproject.org/wiki/Summer_coding_ideas_for_2011#Educational_Application_for_Fedora_Robotics_Suite&quot; rel=&quot;external&quot;&gt;Fedora GSoC 2011 page&lt;/a&gt; and &lt;a href=&quot;/about/contact.php&quot;&gt;contact Tim Niemueller&lt;/a&gt; of the Fedora Robotics SIG.&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>UniMensa RWTH Datenbank wieder verfÃ¼gbar</title>
      <link>http://www.niemueller.de/blog/show.php?id=243</link>
      <guid>http://www.niemueller.de/blog/show.php?id=243</guid>
      <pubDate>Mon, 07 Feb 2011 11:04:03 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;Die w&Atilde;&para;chentlich aktualisierte RWTH Mensa Datenbank ist nun wieder verf&Atilde;&frac14;gbar. Vielen Dank an Holger Jeromin f&Atilde;&frac14;r das Beisteuern eines Scripts zum Auslesen der neuen Website des Studentenwerks.&lt;br/&gt;&lt;br/&gt;Damit stehen die Mensapl&Atilde;&curren;ne wieder f&Atilde;&frac14;r Palm und per WAP zur Verf&Atilde;&frac14;gung, und auch andere Dienste wie das Aussenden per Skyper von der &lt;a href=&quot;http://dl0ua.ihf.rwth-aachen.de/&quot; rel=&quot;external&quot;&gt;Amateurfunkgruppe der RWTH-Aachen&lt;/a&gt; sollten damit wieder funktionieren. Sollte es noch Probleme geben, bitte eine kurze Nachricht an mich.&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Fedora now includes Fawkes</title>
      <link>http://www.niemueller.de/blog/show.php?id=242</link>
      <guid>http://www.niemueller.de/blog/show.php?id=242</guid>
      <pubDate>Tue, 16 Nov 2010 18:22:08 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;Recently we &lt;a href=&quot;http://www.fawkesrobotics.org/blog/2010/11/01/fedora-review-request/&quot; rel=&quot;external&quot;&gt;proposed Fawkes for inclusion into Fedora&lt;/a&gt;. The review has completed and the package has been accepted! &lt;a href=&quot;http://www.fawkesrobotics.org&quot; rel=&quot;external&quot;&gt;Fawkes&lt;/a&gt; and its development environment can now be installed out of the box, see the &lt;a href=&quot;http://www.fawkesrobotics.org/download/#binary&quot; rel=&quot;external&quot;&gt;download page&lt;/a&gt; for instructions.&lt;br/&gt;&lt;br/&gt;On a related note Fawkes has been chosen by the &lt;a href=&quot;https://fedoraproject.org/wiki/SIGs/Robotics&quot; rel=&quot;external&quot;&gt;Fedora Robotics SIG&lt;/a&gt; to play a major role in the &lt;a href=&quot;https://fedoraproject.org/wiki/Robotics_Spin&quot; rel=&quot;external&quot;&gt;Fedora Robotics Spin&lt;/a&gt; along with &lt;a href=&quot;http://playerstage.sourceforge.net&quot; rel=&quot;external&quot;&gt;Player and Stage&lt;/a&gt;. The main idea of this spin is to have software on a LiveDVD providing a ready-to-use robotic simulation environment, with a demo application to introduce users step by step to the available software. Additionally as much robotics related software as possible, ranging from packages for hardware access (laser scanners, robotic arms) and robotic middleware frameworks, to full-blown simulation environments and libraries relevant for robotic applications like vision processing or task control will be added. The Robotics Spin has been proposed as a &lt;a href=&quot;https://fedoraproject.org/wiki/Features/RoboticsSpin&quot; rel=&quot;external&quot;&gt;Fedora 15 Feature&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;For this LiveDVD Fawkes will be used in combination with Player and Stage to provide the environment for the demonstration application. In particular, the behavior engine based on Lua will be the tools used to guide the user to complete tasks of increasing complexity within the simulation environment. Among others like Player/Stage and the &lt;a href=&quot;http://sserver.sourceforge.net&quot; rel=&quot;external&quot;&gt;RoboCup 3D Soccer Server&lt;/a&gt; Fawkes will be one of the highlighted robot software packages.&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Twitter annoyances (2 comments)</title>
      <link>http://www.niemueller.de/blog/show.php?id=241</link>
      <guid>http://www.niemueller.de/blog/show.php?id=241</guid>
      <pubDate>Thu, 02 Sep 2010 22:14:54 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;After Twitter &lt;a href=&quot;http://dev.twitter.com/announcements&quot; rel=&quot;external&quot;&gt;disabled basic authentication&lt;/a&gt; yesterday, basically all Open Source Twitter clients ceased working (e.g. &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=629192&quot; rel=&quot;external&quot;&gt;bug #629192&lt;/a&gt;). I tried some clients from the Fedora repositories, but none seems to work. I liked the simplicity of &lt;a href=&quot;http://pino-app.appspot.com/&quot; rel=&quot;external&quot;&gt;Pino&lt;/a&gt;, but now it's just dead wood. &lt;a href=&quot;http://mauku.henrikhedberg.com/&quot; rel=&quot;external&quot;&gt;Mauku&lt;/a&gt; on the N900 is also broken. Not even the personal timeline RSS feed works anymore, although still advertised on the Twitter website.&lt;br/&gt;&lt;br/&gt;ars technica has an &lt;a href=&quot;http://arstechnica.com/security/guides/2010/09/twitter-a-case-study-on-how-to-do-oauth-wrong.ars&quot; rel=&quot;external&quot;&gt;article&lt;/a&gt; which describes the &lt;a href=&quot;http://arstechnica.com/security/guides/2010/09/twitter-a-case-study-on-how-to-do-oauth-wrong.ars/2&quot; rel=&quot;external&quot;&gt;the problem with FOSS clients on page 2&lt;/a&gt; and it doesn't look good so far. It seems finally to be time to switch to &lt;a href=&quot;http://identi.ca/&quot; rel=&quot;external&quot;&gt;identi.ca&lt;/a&gt; (&lt;a href=&quot;http://identi.ca/timn&quot; rel=&quot;external&quot;&gt;me&lt;/a&gt;).&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Releases of Fawkes 0.4 and roslua</title>
      <link>http://www.niemueller.de/blog/show.php?id=240</link>
      <guid>http://www.niemueller.de/blog/show.php?id=240</guid>
      <pubDate>Tue, 17 Aug 2010 06:05:50 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;Yesterday I have released &lt;a href=&quot;http://www.fawkesrobotics.org&quot; rel=&quot;external&quot;&gt;Fawkes 0.4&lt;/a&gt;, the robot software framework &lt;a href=&quot;http://robocup.rwth-aachen.de&quot; rel=&quot;external&quot;&gt;we&lt;/a&gt; have developed at RWTH Aachen University, with contributions from TU Graz and University of Cape Town. Various obstacles made it one year for the release to materialize, but finally it's here with lots of new stuff, check out the &lt;a href=&quot;http://www.fawkesrobotics.org/blog/2010/08/17/fawkes-zero-point-four/&quot; rel=&quot;external&quot;&gt;announcement&lt;/a&gt;. Many people have helped with this release, good to see. Fedora packages are on their way, now that we support system-wide installation.&lt;br/&gt;&lt;br/&gt;Recently I have also been busy working on software for another robot software framework -- &lt;a href=&quot;http://www.ros.org&quot; rel=&quot;external&quot;&gt;ROS&lt;/a&gt;. As part of my research stay with Dr. Siddharta Srinivasa from Intel Research Pittsburgh at the Carnegie Mellon University I have developed &lt;a href=&quot;http://github.com/timn/roslua&quot; rel=&quot;external&quot;&gt;roslua&lt;/a&gt;, a ROS client library for Lua. This is only the first step in porting &lt;a href=&quot;http://www.fawkesrobotics.org/publications/2009/rc2009-lua-behavior-engine/&quot; rel=&quot;external&quot;&gt;Fawkes' behavior engine&lt;/a&gt; to ROS. You can find the full &lt;a href=&quot;http://www.ros.org/news/2010/08/ros-client-library-for-lua.html&quot; rel=&quot;external&quot;&gt;announcement on the ROS website&lt;/a&gt;. So after &quot;the discovery&quot; I still can be kind of productive. More is cooking, stay tuned.&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>To sleep or not to sleep</title>
      <link>http://www.niemueller.de/blog/show.php?id=239</link>
      <guid>http://www.niemueller.de/blog/show.php?id=239</guid>
      <pubDate>Wed, 04 Aug 2010 20:15:26 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;Today looked for a problem for about an hour which I thought might be worth sharing. The following (most likely common) scenario was to be implemented: one process wants to start another and be notified if something happens to the child process. The proper way to achieve this is to &lt;code&gt;fork()&lt;/code&gt;, then &lt;code&gt;execl()&lt;/code&gt; the new program in the child, and have the parent call &lt;code&gt;wait()&lt;/code&gt; to check for state changes of children.&lt;br/&gt;&lt;br/&gt;Now, in I'd guess likewise common is to start with a test program that incorporates sleep(). Fail! After an hour it turns out that the sleep() call will block the &lt;code&gt;SIGCHLD&lt;/code&gt; signal (cf. &lt;a href=&quot;http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sleep.c;h=0e41a1133812db2ef79e56a53b7b19e8e1b50274;hb=6164128f1ca84eea240b66f977054e16b94b3c86#l75&quot; rel=&quot;external&quot;&gt;sleep.c&lt;/a&gt;). But it does &lt;i&gt;not&lt;/i&gt; unblock the signal afterwards. Since the &lt;code&gt;wait()&lt;/code&gt; call depends on &lt;code&gt;SIGCHLD&lt;/code&gt;, no event would be received&lt;br/&gt;and &lt;code&gt;wait()&lt;/code&gt; would starve.&lt;br/&gt;&lt;br/&gt;So either you need to unblock the signal after calling &lt;code&gt;sleep()&lt;/code&gt;, or better call &lt;code&gt;usleep()&lt;/code&gt; which does not suffer this problem (cf. &lt;a href=&quot;http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/usleep.c;h=f770c57884811dfcc4de40b3b4d48057edee33df;hb=6164128f1ca84eea240b66f977054e16b94b3c86&quot; rel=&quot;external&quot;&gt;usleep.c&lt;/a&gt;).&lt;br/&gt;&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Dead routers which did not die</title>
      <link>http://www.niemueller.de/blog/show.php?id=238</link>
      <guid>http://www.niemueller.de/blog/show.php?id=238</guid>
      <pubDate>Sat, 13 Mar 2010 12:06:42 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;In the last few months three routers I maintained died on me. All where little home routers. Two of them &lt;a href=&quot;http://wiki.openwrt.org/oldwiki/openwrtdocs/hardware/asus/wl500gp&quot; rel=&quot;external&quot;&gt;Asus WL-500GP&lt;/a&gt;, and recently a &lt;a href=&quot;http://www.fon.com&quot; rel=&quot;external&quot;&gt;Fonera&lt;/a&gt; (first generation). The routers appeared to be live, but could not be reached, neither over Wifi nor Ethernet. The LEDs were lit or sometimes flashing. On the second router, one of the Asus ones, on a closer look it had some strange look, where all LEDs were off shortly, then back to seemingly normal. Sniffing on the Ethernet revealed some strange packages which contained the hex string 0xDEADDEAD and a message to boot into failsafe mode.&lt;br/&gt;&lt;br/&gt;Now, to make a long story short: all the routers were just fine, what was indeed broken were the &lt;b&gt;power supplies&lt;/b&gt; - on all of those three. Replacing the power supply brought the device back to normal in all three cases. I haven't made an effort to measure what caused this problem, but it seems to be insufficient current.&lt;br/&gt;&lt;br/&gt;So next time a (home) router dies on you, consider borrowing a compatible power supply first and test the device again, it might save some money and effort, besides reducing the electronic scrap on the planet.&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Setup git tracking branch for existing branch (1 comment)</title>
      <link>http://www.niemueller.de/blog/show.php?id=237</link>
      <guid>http://www.niemueller.de/blog/show.php?id=237</guid>
      <pubDate>Sat, 20 Feb 2010 12:59:08 +0100</pubDate>
      <description>&lt;span class=&quot;longtext&quot;&gt;Something that I did many web searches is how to setup up tracking of a remote git branch for an existing local branch. That regularly happens for example if I start with a local topic branch, and then push it to the central repository. Now, git does neither automatically setup that this (new) remote branch should be tracked for the local branch nor did I find a convenient command or argument to do so. So here is what is required, assuming that the remote repository is named origin, the local branch is topicbr, and the remote branch is timn/topicbr, and you are in the local git repository:&lt;br/&gt;&lt;pre&gt;git config branch.topicbr.remote origingit config branch.topicbr.merge refs/heads/timn/topicbr&lt;/pre&gt;.&lt;br/&gt;It's that easy and now I have a place to look it up next time I need it...&lt;/span&gt;&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;</description>
    </item>

  </channel>
</rss>
