<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Thomas Koch - information technologie</title>
    <link>http://koch.ro/blog/</link>
    <description>Dubio Sapientiae Initium.</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.4.1-1 - http://www.s9y.org/</generator>
    <pubDate>Sat, 14 Aug 2010 13:08:50 GMT</pubDate>

    <image>
        <url>http://koch.ro/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Thomas Koch - information technologie - Dubio Sapientiae Initium.</title>
        <link>http://koch.ro/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Free Software in companies</title>
    <link>http://koch.ro/blog/index.php?/archives/146-Free-Software-in-companies.html</link>
            <category>Debian</category>
            <category>free software</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/146-Free-Software-in-companies.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=146</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=146</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    &lt;div&gt;
At work we currently have a discussion: I&#039;d like to develop some components as Free
Software. My bosses like the idea, but the client goes nuts only thinking about it.
&lt;br/&gt;
So as part of the discussion I thought to collect those companies who actively advertise their
Free Software. I know about the big ones, but it would be even more interesting
to get a list of succesful small companies that share at least part of their
inhouse projects. On the other hand it would not be too interesting to list full
Free Software companies like Red Hat.
&lt;br/&gt;
It would also be fine to share this list in some wiki (FSFE?) when it grows
larger. For some companies I also list very popular projects from my point of
view.
&lt;h4&gt;big companies&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://sourceforge.net/adobe/&quot;&gt;Adobe&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://developers.facebook.com/opensource/&quot;&gt;Facebook&lt;/a&gt;: Cassandra, Thrift, Scribe, HipHop for PHP, ...
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://developer.yahoo.com/&quot;&gt;Yahoo&lt;/a&gt;: YUI, Design Pattern Library, YSlow, Hadoop, ZooKeeper
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://twitter.com/about/opensource&quot;&gt;Twitter&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://code.google.com/opensource/&quot;&gt;Google&lt;/a&gt;: Chromium Browser, Google Summer of Code, Android, Google Web Toolkit (GWT), Protocol Buffers - data interchange format, Java Collections Library, unladen-swallow - faster implementation of Python, ...
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;&quot;&gt;IBM&lt;/a&gt;: &lt;a href=&quot;http://www.ibm.com/developerworks/opensource/&quot;&gt;Developerworks (Tutorials)&lt;/a&gt;, Eclipse, International Components for Unicode (ICU)
  &lt;/li&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;middle sized companies&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://about.digg.com/opensource&quot;&gt;Digg&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;small companies&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://101tec.com&quot;&gt;101tec&lt;/a&gt; (now &lt;a href=&quot;&quot;&gt;Datameer&lt;/a&gt;): 
      &lt;a href=&quot;http://katta.sourceforge.net/&quot;&gt;Katta (distributed lucene on Hadoop)&lt;/a&gt;,
      &lt;a href=&quot;http://github.com/sgroschupf/zkclient&quot;&gt;zkClient&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;br /&gt;
Update: Need to add &lt;a href=&quot;http://www.danga.com/&quot;&gt;Danga&lt;/a&gt; (Gearman), &lt;a href=&quot;https://fosswiki.liip.ch/&quot;&gt;Liip.ch&lt;/a&gt; with &lt;a href=&quot;http://okapi.liip.ch/&quot;&gt;Okapi&lt;/a&gt;, Flux CMS, &lt;a href=&quot;https://fosswiki.liip.ch/display/jackalope/Home&quot;&gt;Jackalope&lt;/a&gt;, &lt;a href=&quot;http://github.com/rackspace&quot;&gt;rackspace&lt;/a&gt;  
    </content:encoded>

    <pubDate>Fri, 06 Aug 2010 10:46:25 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/146-guid.html</guid>
    
</item>
<item>
    <title>Wohngemeinschaft in Konstanz / Kreuzlingen am Bodensee</title>
    <link>http://koch.ro/blog/index.php?/archives/145-Wohngemeinschaft-in-Konstanz-Kreuzlingen-am-Bodensee.html</link>
            <category>freie software</category>
            <category>software culture</category>
            <category>Webtreff</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/145-Wohngemeinschaft-in-Konstanz-Kreuzlingen-am-Bodensee.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=145</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=145</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Vor einigen Wochen habe ich meine Freunde &lt;a href=&quot;http://zellmi.de/&quot;&gt;Zellmi&lt;/a&gt; und &lt;a href=&quot;http://www.natali-haug.de&quot;&gt;Natalie&lt;/a&gt; in ihrer neuen Heimat, der &lt;a href=&quot;http://www.kommune-kowa.de/pmwiki/pmwiki.php&quot;&gt;Kommune Waltershausen&lt;/a&gt; (KoWa) besucht. Es hat mir sehr gut gefallen und ich wäre am liebsten gleich eingezogen. Aber meine Frau und ich sind gerade erst an den Bodensee gezogen und auch beide beruflich gebunden. Also warum nicht so etwas ähnliches am Bodensee beginnen? Es muss ja nicht gleich eine Kommune sein; eine Wohngemeinschaft wäre ein Anfang. Die Miete ist der größte Haufen Geld, den wir jeden Monat erwirtschaften müssen. Und dann arbeiten wir so lange, dass wir den Wohnraum meist nur zum schlafen nutzen. Was für eine Verschwendung. Und dann halten wir diese Wohnung im Winter auch noch warm, obwohl keiner zu hause ist.&lt;br /&gt;
Wenn wir mal die Zeit haben, uns selber Essen zuzubereiten, dann tun wir das für zwei Personen. Was für eine Verschwendung von Zeit und Energie! In der (KoWa) wird immer für die ganze Gemeinschaft von über 10 Personen gekocht. Jeder kommt etwa alle 2 Wochen einmal dran.&lt;br /&gt;
Die Mitglieder der Kommune berichten, dass sie durch die gemeinsame Nutzung von Aufenthalts- und Sanitärräumen, Sammeleinkauf und gemeinschaftliches Essen deutlich kostengünstiger lebten. Dann sollte diese Wohnform doch gerade in einer so teuren Wohnregion wie am Bodensee die richtige Wahl sein!&lt;br /&gt;
Gerade lese ich, dass in Konstanz und Kreuzlingen ein riesiges Überangebot an Büroflächen existiert: &lt;a href=&quot;http://www.tmw-kn.com/blog/2010/07/29/so-viel-buro-platz-wie-auf-funf-fussballfeldern/&quot;&gt;Teil 1&lt;/a&gt;, &lt;a href=&quot;http://www.tmw-kn.com/blog/2010/07/30/ein-nagelneuer-palazzo-mit-22000-quadratmetern/&quot;&gt;Teil 2&lt;/a&gt;. Es ist also vielleicht gar nicht so utopisch mit mehreren Leuten eine geeignete Immobilie günstig zu erwerben.&lt;br /&gt;
Wer hat also Interesse? Einfach einen Kommentar schreiben oder Mail an thomas (at) koch punkt ro.&lt;br /&gt;
Vielleicht können wir ja mit &lt;a href=&quot;http://identi.ca/miradlo&quot;&gt;Ute Hauth&lt;/a&gt; kooperieren. Sie und andere möchten einen Co-working space in Konstanz aufbauen. Kann man in einer geeigneten Immobilie sowohl Arbeitsbereiche als auch Wohnbereiche haben?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update:&lt;/b&gt; Ein schönes Vorbild, das &lt;a href=&quot;http://t3n.de/news/rainbow-mansion-276249/&quot;&gt;Rainbow Mansion&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update2:&lt;/b&gt; Links zum Thema: &lt;a href=&quot;http://www.fgw-ev.de/&quot;&gt;Forum Gemeinschaftliches Wohnen e.V.&lt;/a&gt;, &lt;a href=&quot;http://www.i3-enzkloesterle.de/&quot;&gt;i3 gemeinschaftlich leben &amp;amp; wohnen&lt;/a&gt;, &lt;a href=&quot;http://www.wohnprojekte-portal.de&quot;&gt;Wohnprojekte Portal&lt;/a&gt;. Auf meine Anfrage in einem Couchsurfing.org Forum hat nach wenigen Stunden bereits eine Interessentin geantwortet, die auch aktiv auf ein Projekt hinarbeitet. 
    </content:encoded>

    <pubDate>Thu, 05 Aug 2010 08:32:22 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/145-guid.html</guid>
    
</item>
<item>
    <title>NoSQL summer at lake constance</title>
    <link>http://koch.ro/blog/index.php?/archives/143-NoSQL-summer-at-lake-constance.html</link>
            <category>Debian</category>
            <category>eZ Publish</category>
            <category>free software</category>
            <category>freie software</category>
            <category>PHP</category>
            <category>Webtreff</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/143-NoSQL-summer-at-lake-constance.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=143</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=143</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Have you already started to try out these new storage/database things commonly referred to as NoSQL? (For you google-bot, I&#039;m talking about CouchDB, Cassandra, HBase, Hadoop, Hypertable, MongoDB, Tokyo Cabinet, etc). Well, it&#039;s one thing to install and use them but another to understand all the computer science background about them.&lt;br /&gt;
Therefor many developers around the world thought to make this summer a &lt;a href=&quot;http://nosqlsummer.org/&quot;&gt;NoSQL summer&lt;/a&gt;. Local meetings are held in many cities: London, Los Angeles, New York, Paris, &lt;a href=&quot;http://nosqlsummer.org/city/lake-constance&quot;&gt;lake constance&lt;/a&gt; ... &lt;img src=&quot;http://koch.ro/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
If you like to meet for a beer and learn and discuss about some of the hottest stuff in computing, then come around! Please &lt;a href=&quot;http://www.youtick.net/v493/(hash)/eb3ed31aae7e8897db12450b8a444064&quot;&gt;select the dates when you can join&lt;/a&gt; and the &lt;a href=&quot;http://www.youtick.net/v495/(hash)/763bc7afdbce0fd31e25c4f7fc6a4870&quot;&gt;papers you&#039;d like to discuss&lt;/a&gt;. You can subscribe to email announcements or ical and rss feeds at the &lt;a href=&quot;http://nosqlsummer.org/city/lake-constance&quot;&gt;lake constance nosql summer page&lt;/a&gt;.  
    </content:encoded>

    <pubDate>Thu, 17 Jun 2010 09:31:00 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/143-guid.html</guid>
    
</item>
<item>
    <title>udev ate my laptop today?</title>
    <link>http://koch.ro/blog/index.php?/archives/140-udev-ate-my-laptop-today.html</link>
            <category>Debian</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/140-udev-ate-my-laptop-today.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=140</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    I finally got punished today for using unstable without knowing enough about my system. &lt;img src=&quot;http://koch.ro/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Since I can&#039;t access my emails I&#039;m hoping for help from planet-debian. Please excuse...&lt;br /&gt;
&lt;br /&gt;
So the last words of my machine:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
Loading, please wait...
  One or more specified logical volume(s) not found.
Unable to find LVM volume mylvm/root_crypt
  One or more specified logical volume(s) not found.
Unable to find LVM volume mylvm/swap_crypt
File descriptor 3 (/conf/conf.d/cryptroot) leaked on lvm invocation. Parent PID 
352: /bin/sh
udevd-work[77]: kernel-provided name &#039;dm-0&#039; and NAME= &#039;mapper/mylvm-swap&#039; 
disagree, please use SYMLINK+= or change the kernel to provide the proper name
&lt;/pre&gt;&lt;blink&gt;_&lt;/blink&gt;&lt;br /&gt;
&lt;br /&gt;
Please, if you can help me, write a comment to this blogpost!&lt;br /&gt;
(Thank you, &lt;a href=&quot;http://hboeck.de/&quot;&gt;Hanno&lt;/a&gt; for borrowing me your laptop!)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;update:&lt;/strong&gt; It wasn&#039;t udev (this time). Sorry. The problem was, that I updated libdevmapper without also updating dmsetup. I could boot into an older kernel and solve this. A Bug against the LVM Debian package is already filled.  
    </content:encoded>

    <pubDate>Sat, 12 Jun 2010 11:10:57 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/140-guid.html</guid>
    
</item>
<item>
    <title>tnt is not topgit</title>
    <link>http://koch.ro/blog/index.php?/archives/139-tnt-is-not-topgit.html</link>
            <category>Debian</category>
            <category>free software</category>
            <category>vcs-pkg</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/139-tnt-is-not-topgit.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=139</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=139</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    &lt;div&gt;As I&#039;ve already written, I&#039;m working on an &lt;a href=&quot;http://www.koch.ro/blog/index.php?/archives/138-Design-document-for-a-patch-management-system-on-a-DVCS.html&quot;&gt;alternative to topgit&lt;/a&gt;. I made a
first attempt in perl some weeks ago, but gave up after some frustrating hours.
Yesterday I started again in python and had a very nice time putting together
the groundwork and the first two commands.
&lt;br/&gt;
It may be noted, that I&#039;ve no previous programming experience in neither perl
nor python!

&lt;br/&gt;
By now, I can create a patchset branch and add a patch branch to it. There&#039;s
still a lot to do. For my talk at the &lt;a
href=&quot;http://wiki.debconf.org/wiki/Miniconf-LT-Berlin/2010&quot;&gt;Debian Mini
Conference&lt;/a&gt; in Berlin next month I&#039;d like to be able to update patch
branches, export patchsets and give a status summary.

&lt;br/&gt;
Maybe I can already find somebody who&#039;s interested in joining me with this
project? The code is in my &lt;a href=&quot;http://github.com/thkoch2001&quot;&gt;github
account&lt;/a&gt;, however the name will most probably change.

&lt;br/&gt;
One reason that I&#039;ve been much faster in python is the fantastic &lt;a
href=&quot;http://pypi.python.org/pypi/GitPython/0.2.0-beta1&quot;&gt;python-git&lt;/a&gt;
library. I can only recommend it!

&lt;br/&gt;
In other news: I&#039;m searching a &lt;a
href=&quot;http://www.couchsurfing.org/people/thkoch2001/&quot;&gt;couch to surf&lt;/a&gt; in
Berlin from june 7.-12. I prefer couchsurfing over hotels mostly to get to know
nice people around the world. Please contact me, if you&#039;d like to host me for a
night or two. (thomas at koch punkt ro)
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update:&lt;/b&gt; &lt;a href=&quot;http://wiki.debconf.org/upload/8/89/Patch_management_dvcs.pdf&quot;&gt;Slides of my talk at the debconf are available&lt;/a&gt;.   
    </content:encoded>

    <pubDate>Sun, 16 May 2010 16:43:49 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/139-guid.html</guid>
    
</item>
<item>
    <title>Design document for a patch management system on a DVCS</title>
    <link>http://koch.ro/blog/index.php?/archives/138-Design-document-for-a-patch-management-system-on-a-DVCS.html</link>
            <category>Debian</category>
            <category>vcs-pkg</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/138-Design-document-for-a-patch-management-system-on-a-DVCS.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=138</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=138</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Dear friends of Debian,&lt;br /&gt;
&lt;br /&gt;
this is &lt;a href=&quot;http://wiki.debian.org/ThomasKoch&quot;&gt;my&lt;/a&gt; first post to Planet Debian. - The planet with the most geeky &lt;a href=&quot;http://wiki.debian.org/PlanetDebian&quot;&gt;registration procedure&lt;/a&gt; in the known universe!&lt;br /&gt;
&lt;br /&gt;
I proposed an &lt;a href=&quot;http://lists.alioth.debian.org/pipermail/vcs-pkg-discuss/2010-March/000702.html&quot;&gt;alternative to topgit&lt;/a&gt; some days ago on the &lt;a href=&quot;http://vcs-pkg.org/&quot;&gt;vcs-pkg.org&lt;/a&gt; list. Martin asked (and encouraged) me to give a better explanation of the idea, which I&#039;ll hereby try. Sorry for not giving any drawings, but I&#039;m totally incapable of anything graphical.&lt;br /&gt;
&lt;br /&gt;
Hopefully, I&#039;ll manage to come to the &lt;a href=&quot;http://wiki.debconf.org/wiki/Miniconf-LT-Berlin/2010&quot;&gt;Debian Miniconf in Berlin&lt;/a&gt;. Then we could discuss the idea further and maybe even start implementing it. (Somebody would need to help me with my first steps in Perl then...)&lt;br /&gt;
&lt;br /&gt;
The following text is &lt;a href=&quot;http://github.com/thkoch2001/topgit-alternative&quot;&gt;available on github&lt;/a&gt;. Please help me expand it!&lt;br /&gt;
&lt;br /&gt;
&lt;h1 class=&quot;title&quot;&gt;Design document for a patch management system on a DVCS&lt;/h1&gt;&lt;br /&gt;
&lt;div class=&quot;section&quot; id=&quot;requirements&quot;&gt;
&lt;h1&gt;Requirements&lt;/h1&gt;
&lt;p&gt;The system to implement manages patchsets. A patchset is a set of patches with
a tree-ish dependency graph between the patches. There&#039;s one distinct root of
this dependency graph.&lt;/p&gt;
&lt;p&gt;Patches are managed as branches with each branch representing a patch.
Modification of a patch is done by a commit to the respective branch. A branch
representing a patch as part of a patchset is called patchbranch.&lt;/p&gt;
&lt;p&gt;The patch of a patchbranch is created as the diff between the root of the
patchbranch and the head.&lt;/p&gt;
&lt;p&gt;The most important management methods are:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Export a patchset in different formats&lt;ul&gt;
&lt;li&gt;quilt&lt;/li&gt;
&lt;li&gt;a merged commit of all patches&lt;/li&gt;
&lt;li&gt;a line of commits with each commit representing one patch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Update a patchset against an updated root.&lt;/li&gt;
&lt;li&gt;Copy a patchset&lt;/li&gt;
&lt;li&gt;Delete a patchset from direct visibility while preserving all history about
it&lt;/li&gt;
&lt;li&gt;Hide and unhide a patchset from direct visibility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additional requirements:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;The system should be implementable on top of GIT, Mercurial and eventually
Bazaar.&lt;/li&gt;
&lt;li&gt;The system must easily cope with multiple different and independent patchsets.&lt;/li&gt;
&lt;li&gt;All information about a patchset must be encoded in one distinct branch.
Publishing this one branch must be sufficient to allow somebody else to
recreate the patchset with all of its patchbranches.&lt;/li&gt;
&lt;li&gt;The system should not rely on the presence of hooks.&lt;/li&gt;
&lt;li&gt;The system should not require the addition of management files in patch
branches (like .topmsg and .topdeps in topgit)&lt;/li&gt;
&lt;li&gt;The system must be easy to understand for a regular user of the underlying
DVCS.&lt;/li&gt;
&lt;li&gt;The implementation may allow a patchset to depend on another patchset(s).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;section&quot; id=&quot;implementation&quot;&gt;
&lt;h1&gt;implementation&lt;/h1&gt;
&lt;div class=&quot;section&quot; id=&quot;patchset-meta-branch&quot;&gt;
&lt;h2&gt;patchset meta branch&lt;/h2&gt;
&lt;p&gt;A patchset meta branch holds all informations about one patchset. First, it
holds references to the top commits of all patch branches in the form of parent
references of commits. Thus pushing the patchset meta branch automatically also
pushes all commits of all patch branches.&lt;/p&gt;
&lt;p&gt;Secondly, the patchset meta branch contains meta informations about the
patchset. These meta informations are:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;The names of all patch branches together with the most recent commit
identifier of a particular patch branch. Let&#039;s save this information in a
file called branches.&lt;/li&gt;
&lt;li&gt;A message for each patch branch that explains the patch. These messages can
be saved in the file tree as msg/${PATCH-BRANCH-NAME}&lt;/li&gt;
&lt;li&gt;References to the dependencies of the patch (other patches of the same
patchset or the root of the patchset). This is also encoded in the file
branches.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since the patchset meta branch holds all this informations, it is possible, to
delete all patch branches and recreate them from this informations.&lt;/p&gt;
&lt;p&gt;Although the commits of the patchset meta branches hold references to the patch
branches, its file tree does not need to contain any files from the referenced
patches. This may confuse the underlying DVCS, but the patch meta branch is not
ment to be directly inspected.&lt;/p&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;section&quot; id=&quot;the-branches-file&quot;&gt;
&lt;h2&gt;The branches file&lt;/h2&gt;
&lt;p&gt;A branches file for a fictive patchset could look like:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
# patch branches without an explicit dependency depend on the root of the
# patchset tree
# A Root can be given as either a fix commit (seen here), a branch or a tag.
# A fixed commit or tag is useful to maintain a patchset against an older
# upstream version
ROOT: 6a8589de32d490806ab86432a3181370e65953ca
# A tag as a dependency
#ROOT: upstream/0.1.2
# A branch as a dependency
#ROOT: upstream

# A regular patch with it&#039;s name and last commit
BRANCH: debian/use-debian-jars-in-build-xml 4bab542c261ff1a1ae87151c3536f19ef02d7937

# two other regular patches
BRANCH: upstream-jira/HDFS-1234 a8e4af13106582ca1bfbbcaeb0537f73faf46d87
BRANCH: upstream-jira/MAP-REDUCE-007 e3426bcbcb2537478f851edcf6eb04b34f6c7106

# This patch depends on the above two patches
# The sha1 below the dependency patches references a merge commit of the two
# dependencies
BRANCH: upstream-jira/HDFS-008 517851aa829d77e09bc5e59985fed1b0aa339cc6
DEPENDENCIES:
  upstream-jira/HDFS-1234
  upstream-jira/MAP-REDUCE-007
    cc294f2e4773c4ff71efb83648a0e16835fca841

# A patch branch that belongs to the patch branch, but won&#039;t get exported (yet)
BRANCH: upstream-jira/HDFS-9999 74257905azgsa4689bc5e59985fed1b0aa339cc6
BRANCH-FLAGS: noexport
&lt;/pre&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
  
    </content:encoded>

    <pubDate>Fri, 02 Apr 2010 12:48:33 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/138-guid.html</guid>
    
</item>
<item>
    <title>Zookeeper for web developers</title>
    <link>http://koch.ro/blog/index.php?/archives/137-Zookeeper-for-web-developers.html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
            <category>Webtreff</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/137-Zookeeper-for-web-developers.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=137</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=137</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Have you ever developed any kind of distributed system? When doing so for the first time, you&#039;re very likely to fall in the trap of &lt;a href=&quot;http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing&quot;&gt;the Fallacies of Distributed Computing&lt;/a&gt;. I&#039;ve done so, you&#039;ll do so too.&lt;br /&gt;
Now &lt;a href=&quot;http://hadoop.apache.org/zookeeper/&quot;&gt;zookeeper&lt;/a&gt; is an application, that helps you implement many &lt;a href=&quot;http://hadoop.apache.org/zookeeper/docs/current/recipes.html&quot;&gt;distributed protocols&lt;/a&gt; on top of it. The hard work of implementing fault tolerance, assuring consistency and that kind of stuff is done by zookeeper in the background. A zookeeper cluster consists of at least three servers running zookeeper (zk). A client can connect to each zk server and issue read and write requests. Zookeeper guaranties that a write either fails or is consistent and that a read will get you the most recent state.&lt;br /&gt;
Zookeeper exposes a filesystem like hierarchy of so called znodes. Every znode can have children but also stores data. The data stored in a znode is assumed to be small (less then 1MB). Clients can subscribe to different events on a znode and will be notified of changes in the znode itself of it&#039;s children.&lt;br /&gt;
Some usage examples come to my mind, which could be especially interesting for PHP developers:&lt;br /&gt;
&lt;ul&gt; &lt;li&gt;save the PHP session in zk and have it therefor available to all web servers&lt;/li&gt; &lt;li&gt;save a shopping card&lt;/li&gt; &lt;li&gt;save the online status of a user (for a chat system)&lt;/li&gt; &lt;li&gt;synchronize configuration files&lt;/li&gt; &lt;li&gt;master election: many monitoring servers, but only one is active at any given time&lt;/li&gt; &lt;li&gt;logging system: bookkeeper is a zk contribution, that receives your logs and assures they&#039;ll be kept save&lt;/li&gt;&lt;li&gt;create a lock on a document in a CMS&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;
&lt;a href=&quot;http://wiki.apache.org/hadoop/ZooKeeper/PoweredBy&quot;&gt;Companies that use zk&lt;/a&gt; include Facebook, Yahoo, Rackspace and as rumors tell also twitter.&lt;br /&gt;
Now this is all kind and sweet, the only sad thing is, there&#039;s no PHP binding yet. There are bindings for Java, C, Python and Perl. So if you&#039;re desperately searching what PHP extension you should write next, just take the zk C binding and expose it to PHP!&lt;br /&gt;
Maybe you&#039;re a student and would like to participate in the Google Summer of Code? It should be possible to find a mentor for this project either in the PHP or zk project.&lt;br /&gt;
For GSOC the project could include a PHP session implementation in the extension code and the possibility of persistent zk sessions across PHP calls.&lt;br /&gt;
If you&#039;re in the region of eastern Switzerland: There&#039;ll be a presentation about zookeeper at the &lt;a href=&quot;http://lists.koch.ro/listinfo/webtreff&quot;&gt;Webtreff Kreuzlingen&lt;/a&gt; on one of the next mondays. 
    </content:encoded>

    <pubDate>Fri, 19 Feb 2010 10:42:48 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/137-guid.html</guid>
    
</item>
<item>
    <title>Going to FOSDEM 2010</title>
    <link>http://koch.ro/blog/index.php?/archives/136-Going-to-FOSDEM-2010.html</link>
            <category>eZ Publish</category>
            <category>free software</category>
            <category>freie software</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/136-Going-to-FOSDEM-2010.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=136</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=136</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    I&#039;m going to fosdem 2010.  &lt;p&gt; &lt;a href=&quot;http://www.fosdem.org/2010&quot;&gt;&lt;img height=&quot;89px&quot; width=&quot;150px&quot; alt=&quot;I&#039;m going to Fosdem 2010&quot; src=&quot;http://www.fosdem.org/promo/going-to&quot; title=&quot;I&#039;m going to Fosdem 2010&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;
These are things I&#039;d like to attend:&lt;br /&gt;
 &lt;TABLE&gt;&lt;thead&gt; &lt;TR&gt; &lt;TH&gt;time&lt;/TH&gt; &lt;TH&gt;room&lt;/TH&gt; &lt;TH&gt;topic&lt;/TH&gt; &lt;TH&gt;speaker&lt;/TH&gt; &lt;/TR&gt; &lt;/thead&gt; &lt;TBODY&gt; &lt;TR&gt; &lt;TD &gt;10:45-11:30&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;Promoting Open Source Methods at a Large Company&lt;/TD&gt; &lt;TD &gt;Brooks Davis&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;13:15-13:45&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;AY&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;Packaging Java Software for Debian&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;Thomas Koch&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;13:40-13:55&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;CiviCRM: Common goals of FOSS and Not For Profit Organisations&lt;/TD&gt; &lt;TD &gt;Xavier DUTOIT&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;14:00-14:45&lt;/TD&gt; &lt;TD &gt;H.1308&lt;/TD&gt; &lt;TD &gt;The Maemo Community Council: a case-study in governance&lt;/TD&gt; &lt;TD &gt;Dave Neary&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;14:00-15:30&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 1&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;14:00-14:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;What is my system doing - Full System Observability with SystemTap&lt;/TD&gt; &lt;TD &gt;Mark Wielaard&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;14:30-15:00&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;Building Federated Social Networks on XMPP&lt;/TD&gt; &lt;TD &gt;Tuomas Koski, Simon Tennant&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:00-15:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;Ganglia: 10 years of monitoring clusters and grids&lt;/TD&gt; &lt;TD &gt;Bernard Li&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:00-15:30&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;XMPP and the Social Web&lt;/TD&gt; &lt;TD &gt;Alard Weisscher, Laurent Eschenauer&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:30-16:00&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;PubSub Gone Wild: Info Sharing at Mediamatic&lt;/TD&gt; &lt;TD &gt;Ralph Meijer&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;16:00-17:30&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 2&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:00-16:15&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;SIP Communicator: Skype-like conf calls with SIP Communicator&lt;/TD&gt; &lt;TD &gt;Emil Ivov&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:20-16:35&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;Kamailio (OpenSER) 3.0.0: redefinition of SIP server&lt;/TD&gt; &lt;TD &gt;Daniel-Constantin Mierla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:40-16:55&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;asterisk: An introduction to Asterisk Development&lt;/TD&gt; &lt;TD &gt;Mark Michelson&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;17:00-17:15&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;csync: Roaming Home Directories&lt;/TD&gt; &lt;TD &gt;Andreas Schneider&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;17:30-18:00&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;Jingle Nodes: An Open Alternative to Skype&lt;/TD&gt; &lt;TD &gt;Tiago Camargo&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;18:00-18:30&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;Multi-User Jingle: Voice and Video Conferencing with XMPP&lt;/TD&gt; &lt;TD &gt;Dafydd Harries, Sjoerd Simons&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;18:15-19:00&lt;/TD&gt; &lt;TD &gt;H.1302&lt;/TD&gt; &lt;TD &gt;Spacewalk: Linux Systems Lifecycle Management&lt;/TD&gt; &lt;TD &gt;Marcus Moeller, Sandro Mathys&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;09:15-10:00&lt;/TD&gt; &lt;TD &gt;H.1302&lt;/TD&gt; &lt;TD &gt;Linux distribution for the cloud&lt;/TD&gt; &lt;TD &gt;Peter Eisentraut&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;10:00-10:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;RepRap - Manufacturing for the Masses&lt;/TD&gt; &lt;TD &gt;Adrian Bowyer&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;10:30-12:00&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 3&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;11:00-11:45&lt;/TD&gt; &lt;TD &gt;AW1.120&lt;/TD&gt; &lt;TD &gt;My life with HBase&lt;/TD&gt; &lt;TD &gt;Lars George&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;11:00-11:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;Tor: Building, Growing, and Extending Online Anonymity&lt;/TD&gt; &lt;TD &gt;Andrew Lewman&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;12:15-13:00&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;H.1302&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;Cross distro packaging with (top)git&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;Thomas Koch&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;12:15-13:00&lt;/TD&gt; &lt;TD &gt;H.1308&lt;/TD&gt; &lt;TD &gt;Shared libraries in Debian&lt;/TD&gt; &lt;TD &gt;Sune Vuorela&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;13:00-14:30&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 4&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;13:15-14:00&lt;/TD&gt; &lt;TD &gt;AW1.120&lt;/TD&gt; &lt;TD &gt;CouchDB, a database designed for the web and more&lt;/TD&gt; &lt;TD &gt;Benoit Chesneau&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;14:00-14:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;Large scale data analysis made easy - Apache Hadoop&lt;/TD&gt; &lt;TD &gt;Isabel Drost&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;15:00-16:30&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 5&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:30-16:15&lt;/TD&gt; &lt;TD &gt;H.1308&lt;/TD&gt; &lt;TD &gt;Continuous Packaging with Project-Builder.org&lt;/TD&gt; &lt;TD &gt;Bruno Cornec&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:30-16:15&lt;/TD&gt; &lt;TD &gt;AW1.120&lt;/TD&gt; &lt;TD &gt;Comparing the MapReduce way in CouchDB with the SQL way in a RDBMS&lt;/TD&gt; &lt;TD &gt;Stéphane Combaudon&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:15-16:45&lt;/TD&gt; &lt;TD &gt;AW1.120&lt;/TD&gt; &lt;TD &gt;Designing a scalable content management system on NoSQL technologies&lt;/TD&gt; &lt;TD &gt;Evert Arckens&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:15-17:00&lt;/TD&gt; &lt;TD &gt;H.1308&lt;/TD&gt; &lt;TD &gt;Debian Secrets: power tools for power users&lt;/TD&gt; &lt;TD &gt;Wouter Verhelst&lt;/TD&gt; &lt;/TR&gt; &lt;/TBODY&gt; &lt;/TABLE&gt; 
    </content:encoded>

    <pubDate>Sat, 30 Jan 2010 20:52:08 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/136-guid.html</guid>
    
</item>
<item>
    <title>Exploring Eclipse, PDT and Eclim</title>
    <link>http://koch.ro/blog/index.php?/archives/134-Exploring-Eclipse,-PDT-and-Eclim.html</link>
            <category>PHP</category>
            <category>VIM</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/134-Exploring-Eclipse,-PDT-and-Eclim.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=134</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=134</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Back in 2006 I learned, that KWrite (a simple text editor) was not enough to write PHP code with. I tried eclipse, but it seemed too complex and was way too slow on my old laptop.&lt;br /&gt;
&lt;br /&gt;
So inspired by the &lt;a href=&quot;http://schlitt.info/opensource/blog/0488_comfortable_php_editing_with_vim_5.html&quot;&gt;Comfortable PHP editing with VIM&lt;/a&gt; series of Tobias Schlitt I learned VIM. &lt;br /&gt;
&lt;br /&gt;
My blogpost about &lt;a href=&quot;http://koch.ro/blog/index.php?/archives/63-VIM-an-a-PHP-IDE.html&quot;&gt;Vim as an IDE for PHP&lt;/a&gt; is a popular page and I often get requests about details of my setup. Please don&#039;t ask me anymore, since I intend to move away from this setup!&lt;br /&gt;
&lt;br /&gt;
Some weeks ago I&#039;ve been at a conference (&lt;a href=&quot;http://gearconf.com/&quot;&gt;GearConf&lt;/a&gt;) about team collaboration. Some of the tools presented there (like &lt;a href=&quot;http://www.eclipse.org/mylyn/&quot;&gt;Mylyn&lt;/a&gt;) made me jealous of the java people.&lt;br /&gt;
&lt;br /&gt;
So it was time to reconsider Eclipse. However editing text with what&#039;s called an &quot;editor&quot; in eclipse is a pain to say the least. But life&#039;s good and somebody already created &lt;a href=&quot;http://eclim.sourceforge.net/&quot;&gt;eclim&lt;/a&gt;. Eclim allows you to keep using gvim for text editing but integrates with Eclipse to give you code completion, manual lookup, code projects and more.&lt;br /&gt;
This alone may not convince you, since I already have this integrated in vim. But there are at least three major advantages of vim+eclipse:&lt;br /&gt;
&lt;ul&gt;  &lt;li&gt;There&#039;s not only the integration for PHP but also Java, Javascript, Python, Ruby, C/C++, CSS, HTML and XML&lt;/li&gt;  &lt;li&gt;Eclipse comes with a bunch of other cool plugins (like Mylin)&lt;/li&gt;  &lt;li&gt;The code completion from eclipse is much more powerful then anything you can do with VIM. For example it also proposes you the correct classmembers after foo:: or $bar-&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;a href=&quot;http://ou.jiayong.name/&quot;&gt;My collegue Jiayong&lt;/a&gt; just installed the bundled version of PDT with eclipse, ran the eclim installer and was ready.&lt;br /&gt;
&lt;br /&gt;
However I&#039;m much more addicted to pain, so I took the &lt;a href=&quot;https://launchpad.net/ubuntu/+source/eclipse&quot;&gt;Ubuntu packages of eclipse 3.5.1&lt;/a&gt;, &lt;a href=&quot;http://www.venukb.com/2006/08/20/install-eclipse-plugins-the-easy-way/&quot;&gt;linked&lt;/a&gt; the pdt runtime download and all dependencies in a separate directory, checked out the GIT repository of eclim, configured the classpath in the ant buildfile and build eclim from source. The deployment of eclim can be looked up from the ant buildfile.&lt;br /&gt;
There are some more tweaks to do, which I can point out later, if you should dare to follow this road. You shouldn&#039;t have a need for this until you&#039;d be interested to become famous and beloved and &lt;a href=&quot;http://wiki.debian.org/Java/RequestedPackages&quot;&gt;package PDT or eclim&lt;/a&gt; for Debian.&lt;br /&gt;
&lt;br /&gt;
Do you already have experiences with eclim+pdt? Are there tutorials I&#039;ve not found? Are you interested to come with me to explore this setup?  
    </content:encoded>

    <pubDate>Sat, 24 Oct 2009 16:48:24 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/134-guid.html</guid>
    
</item>
<item>
    <title>eZ Components Template is not slow...</title>
    <link>http://koch.ro/blog/index.php?/archives/133-eZ-Components-Template-is-not-slow....html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/133-eZ-Components-Template-is-not-slow....html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=133</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    ... you may just not have used it appropriately. Fabien Potencier has &lt;a href=&quot;http://fabien.potencier.org/article/34/templating-engines-in-php&quot;&gt;blogged about templating engines&lt;/a&gt;, compared their speed and finally concluded that his own templating engine is the fastest. Not only that, but my beloved &lt;a href=&quot;http://ezcomponents.org/docs/tutorials/Template&quot;&gt;eZ Components Template&lt;/a&gt; engine, which we use with great pleasure at &lt;a href=&quot;http://www.ymc.ch&quot;&gt;YMC&lt;/a&gt;, came out as the slowest in his benchmark. (Althought he complimented it as &quot;probably the one which have the most features&quot;.)&lt;br /&gt;
&lt;br /&gt;
Dear Fabien, I think it&#039;s not fair to blog a benchmark without publishing the code you used to do the benchmark! But even without the code and without doing my own benchmark, I can offer some explanations, why eZ Components may have been the slowest in your benchmark and why you&#039;ve compared apples with oranges. I take the compiled template code from the &lt;a href=&quot;http://www.twig-project.org/book/05-Hacking-Twig&quot;&gt;Twig site&lt;/a&gt;: &lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;/&amp;#42;&amp;#160;Hello&amp;#160;{{&amp;#160;name&amp;#160;}}&amp;#160;&amp;#42;/
class&amp;#160;__TwigTemplate_1121b6f109fe93ebe8c6e22e3712bceb&amp;#160;extends&amp;#160;Twig_Template
{
&amp;#160;&amp;#160;public&amp;#160;function&amp;#160;display&amp;#40;$context&amp;#41;
&amp;#160;&amp;#160;{
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$this-&amp;#62;env-&amp;#62;initRuntime&amp;#40;&amp;#41;;
&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;//&amp;#160;line&amp;#160;1
&amp;#160;&amp;#160;&amp;#160;&amp;#160;echo&amp;#160;&quot;Hello&amp;#160;&quot;;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;echo&amp;#160;&amp;#40;isset&amp;#40;$context&amp;#91;&#039;name&#039;&amp;#93;&amp;#41;&amp;#160;?&amp;#160;$context&amp;#91;&#039;name&#039;&amp;#93;&amp;#160;&amp;#58;&amp;#160;null&amp;#41;;
&amp;#160;&amp;#160;}
}&lt;/div&gt;&lt;br /&gt;
Thinks to keep in mind from the Twig compiled template: &lt;ul&gt;
&lt;li&gt;There&#039;s direct output via echo (which is captured by Twig and not directly sent out)&lt;/li&gt;
&lt;li&gt;The template variables are sent in the array $context&lt;/li&gt;
&lt;li&gt;There&#039;s no error check, whether the required template variable &#039;name&#039; is actually sent to the template&lt;/li&gt;
&lt;li&gt;The content of the variables is not escaped&lt;/li&gt;
&lt;/ul&gt;Now let&#039;s compare this with the compiled code produced by eZ Components Template. First the template:&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;{use&amp;#160;$name}
{use&amp;#160;$items}
&amp;#160;
Hello&amp;#160;{$name}
&amp;#160;
{foreach&amp;#160;$items&amp;#160;as&amp;#160;$item}
&amp;#160;&amp;#42;&amp;#160;{$item}
{/foreach}
&amp;#160;&lt;/div&gt;&lt;br /&gt;
And the resulting code:&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;&amp;#60;?php
//&amp;#160;Generated&amp;#160;PHP&amp;#160;file&amp;#160;from&amp;#160;template&amp;#160;code.
//&amp;#160;If&amp;#160;you&amp;#160;modify&amp;#160;this&amp;#160;file&amp;#160;your&amp;#160;changes&amp;#160;will&amp;#160;be&amp;#160;lost&amp;#160;when&amp;#160;it&amp;#160;is&amp;#160;regenerated.
$this-&amp;#62;checkRequirements&amp;#40;1,array&amp;#40;&quot;disableCache&quot;&amp;#160;=&amp;#62;&amp;#160;false&amp;#41;&amp;#41;;
$i_output&amp;#160;=&amp;#160;&quot;&quot;;
if&amp;#160;&amp;#40;&amp;#160;!isset&amp;#40;$this-&amp;#62;send-&amp;#62;name&amp;#41;&amp;#41;
{

&amp;#160;&amp;#160;&amp;#160;&amp;#160;throw&amp;#160;new&amp;#160;ezcTemplateRuntimeException&amp;#40;&amp;#160;sprintf&amp;#40;&quot;The&amp;#160;external&amp;#160;&amp;#40;use&amp;#41;&amp;#160;variable&amp;#160;&#039;%s&#039;&amp;#160;is&amp;#160;not&amp;#160;set&amp;#160;in&amp;#160;template&amp;#58;&amp;#160;%s&amp;#160;and&amp;#160;called&amp;#160;from&amp;#160;%s&quot;,&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&#039;name&#039;,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$this-&amp;#62;template-&amp;#62;stream,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#40;&amp;#160;sizeof&amp;#40;$this-&amp;#62;template-&amp;#62;streamStack&amp;#41;&amp;#160;&amp;#62;=&amp;#160;2&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;?&amp;#160;$this-&amp;#62;template-&amp;#62;streamStack&amp;#91;sizeof&amp;#40;$this-&amp;#62;template-&amp;#62;streamStack&amp;#41;&amp;#160;-&amp;#160;2&amp;#93;&amp;#160;&amp;#58;&amp;#160;&#039;the&amp;#160;application&amp;#160;code&#039;&amp;#41;&amp;#160;&amp;#41;&amp;#160;&amp;#41;;
}
if&amp;#160;&amp;#40;&amp;#160;!isset&amp;#40;$this-&amp;#62;send-&amp;#62;items&amp;#41;&amp;#41;
{

&amp;#160;&amp;#160;&amp;#160;&amp;#160;throw&amp;#160;new&amp;#160;ezcTemplateRuntimeException&amp;#40;&amp;#160;sprintf&amp;#40;&quot;The&amp;#160;external&amp;#160;&amp;#40;use&amp;#41;&amp;#160;variable&amp;#160;&#039;%s&#039;&amp;#160;is&amp;#160;not&amp;#160;set&amp;#160;in&amp;#160;template&amp;#58;&amp;#160;%s&amp;#160;and&amp;#160;called&amp;#160;from&amp;#160;%s&quot;,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&#039;items&#039;,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$this-&amp;#62;template-&amp;#62;stream,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#40;&amp;#160;sizeof&amp;#40;$this-&amp;#62;template-&amp;#62;streamStack&amp;#41;&amp;#160;&amp;#62;=&amp;#160;2&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;?&amp;#160;$this-&amp;#62;template-&amp;#62;streamStack&amp;#91;sizeof&amp;#40;$this-&amp;#62;template-&amp;#62;streamStack&amp;#41;&amp;#160;-&amp;#160;2&amp;#93;&amp;#160;&amp;#58;&amp;#160;&#039;the&amp;#160;application&amp;#160;code&#039;&amp;#41;&amp;#160;&amp;#41;&amp;#160;&amp;#41;;
}
$i_output&amp;#160;.=&amp;#160;&quot;&amp;#160;\nHello&amp;#160;&quot;;
$i_output&amp;#160;.=&amp;#160;htmlspecialchars&amp;#40;$this-&amp;#62;send-&amp;#62;name&amp;#41;;
$i_output&amp;#160;.=&amp;#160;&quot;\n&amp;#160;\n&quot;;
foreach&amp;#160;&amp;#40;$this-&amp;#62;send-&amp;#62;items&amp;#160;as&amp;#160;$t_item&amp;#41;
{
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$i_output&amp;#160;.=&amp;#160;&quot;&amp;#42;&amp;#160;&quot;;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$i_output&amp;#160;.=&amp;#160;htmlspecialchars&amp;#40;$t_item&amp;#41;;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$i_output&amp;#160;.=&amp;#160;&quot;\n&quot;;
}
return&amp;#160;$i_output;
?&amp;#62;&lt;/div&gt;&lt;br /&gt;
The differences are:&lt;ul&gt;
&lt;li&gt;The output is collected in a variable, not with PHP&#039;s output buffering. I don&#039;t know whether this has a performance impact, but in any case it allows for much greater flexibility in the implementation of the template engine. Thus it&#039;s possible for example to&lt;bail out with an exception without worring about the output buffer&lt;/li&gt;
&lt;li&gt;The template variables do not come in a simple array but as an object of type ezcTemplateVariableCollection. This is surely slower as an array, but also allows to do great things.&lt;/li&gt;
&lt;li&gt;My favorite eZC Template feature: Every variable needs to be declared at the top of the template! I wish PHP would be that strict.&lt;/li&gt;
&lt;li&gt;And now the point which may be responsible for the observed performance impact: eZC Template by default escapes all variables with htmlspecialchars. This is of course configurable and so I could compare template execution time with escaping turned on and of: For an array of thousand elements it more then doubles the time.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
So in conclusion: Please post the benchmark code, so that we can debug it and please compare the template engines with the same features turned on or off! 
    </content:encoded>

    <pubDate>Fri, 09 Oct 2009 13:40:42 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/133-guid.html</guid>
    
</item>
<item>
    <title>Timeline of PHP quality assurance tools</title>
    <link>http://koch.ro/blog/index.php?/archives/132-Timeline-of-PHP-quality-assurance-tools.html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
            <category>PHPUnit</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/132-Timeline-of-PHP-quality-assurance-tools.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=132</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=132</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    I&#039;ll be giving a talk on PHP quality assurance tools next week at the &lt;a href=&quot;http://gearconf.com/&quot;&gt;gearconf&lt;/a&gt; in Düsseldorf. The event is focused on team collaboration and most of the audience will come from other languages then PHP. Since I&#039;m not a contributor to any QA tool I&#039;ll center around the user perspective and the process of establishing these tools in a small to middle web company like &lt;a href=&quot;http://www.ymc.ch&quot;&gt;YMC&lt;/a&gt;.&lt;br /&gt;
As an outline for the first part I thought to give an historical view on QA in PHP and therefor made a timeline of PHP QA milestones: &lt;img width=&quot;80%&quot; height=&quot;80%&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://koch.ro/blog/uploads/free_software/phpqa_timeline.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
The dates as text:&lt;ul&gt;
  &lt;li&gt;~1997 JUnit&lt;/li&gt;
  &lt;li&gt;6.4.2002 PHPUnit 0.1&lt;/li&gt;
  &lt;li&gt;28.8.2003 PHPUnit 1.0.0-alpha1 Release&lt;/li&gt;
  &lt;li&gt;13.7.2004 PHP5.0.0&lt;/li&gt;
  &lt;li&gt;14.7.2004 release PHPUnit2&lt;/li&gt;
  &lt;li&gt;30.1.2006 eZ Components 1.0&lt;/li&gt;
  &lt;li&gt;~sept 2006 ZF uses PHPUnit (issue #374)&lt;/li&gt;
  &lt;li&gt;4.10.2006 first integration of Selenium in PHPUnit&lt;/li&gt;
  &lt;li&gt;1.7.2007 Zend Framework 1.0&lt;/li&gt;
  &lt;li&gt;18.11.2007 first release of PHPUnderControl&lt;/li&gt;
  &lt;li&gt;19.11.2007 Project Mess Detection in PHPUnit&lt;/li&gt;
  &lt;li&gt;6.2.2008 first release PHP_Depend&lt;/li&gt;
  &lt;li&gt;march 2009 qualityassuranceinphpprojects.com, thePHP.cc&lt;/li&gt;
&lt;/ul&gt;main sources:&lt;br /&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.slideshare.net/sebastian_bergmann/von-entwurfsmustern-und-unit-tests&quot;&gt;Von Entwurfsmustern und Unit Tests&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://sebastian-bergmann.de/&quot;&gt;Blog of Sebastian Bergmann&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://manuel-pichler.de/&quot;&gt;Blog of Manuel Pichler&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Did I get all this right? Are there things I should have added? 
    </content:encoded>

    <pubDate>Sat, 26 Sep 2009 16:58:46 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/132-guid.html</guid>
    
</item>
<item>
    <title>talking on basic income at google open source jam</title>
    <link>http://koch.ro/blog/index.php?/archives/128-talking-on-basic-income-at-google-open-source-jam.html</link>
            <category>free software</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/128-talking-on-basic-income-at-google-open-source-jam.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=128</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=128</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Tomorrow evening I&#039;ll be going to google&#039;s open source jam in Zürich. I want to explain, why free software and the idea of basic income do play together well. The slides are already prepared: &lt;br /&gt;
&lt;a href=&quot;http://koch.ro/blog/uploads/presentations/google_jam_talk_basic_income.pdf&quot; title=&quot;google_jam_talk_basic_income.pdf&quot; target=&quot;_blank&quot;&gt;google_jam_talk_basic_income.pdf&lt;/a&gt;  
    </content:encoded>

    <pubDate>Wed, 12 Aug 2009 16:42:25 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/128-guid.html</guid>
    
</item>
<item>
    <title>openruhr.de übernimmt ruhrtux Idee</title>
    <link>http://koch.ro/blog/index.php?/archives/127-openruhr.de-uebernimmt-ruhrtux-Idee.html</link>
            <category>freie software</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/127-openruhr.de-uebernimmt-ruhrtux-Idee.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=127</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=127</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Im Herbst 2007 hatte ich die Idee, die Initiative &lt;a href=&quot;http://www.xing.com/app/forum?op=showarticles;id=6624983&quot;&gt;Ruhrtux&lt;/a&gt; zu starten. Es ging darum, Freie Software und Freie Kultur als Bestandteil der Kulturhauptstadt 2010, dem Ruhrgebiet, zu vertreten. Leider habe ich für diese Idee keine Unterstützer gefunden, weder das &quot;Linux und Open Source Kompetenzzentrum NRW&quot; noch die &quot;Ruhr Networker&quot; oder das Linux Hotel in Gestalt von Herrn Wiesemann zeigten Interesse sich in irgendeiner Weise für die Idee zu engagieren.&lt;br /&gt;
&lt;br /&gt;
Inzwischen ist die Webseite &lt;a href=&quot;http://meta.rrzn.uni-hannover.de/meta/cgi-bin/meta.ger1?start=1&amp;eingabe=ruhrtux&amp;mm=and&amp;maxtreffer=200&amp;time=2&amp;hitsPerServer=2&amp;textmenge=2&amp;wissRank=on&amp;sprueche=on&amp;wikiboost=on&amp;QuickTips=beschleuniger&amp;synonyme=on&amp;linkTest=no&amp;check_time=3&amp;dmoz=on&amp;exalead=on&amp;suchclip=on&amp;wikipedia=on&amp;yacy=on&amp;witch=on&amp;overture=on&amp;fastbot=on&amp;metarss=on&amp;Nachrichten=on&amp;mrwong=on&amp;netzsuchende=on&amp;atsearch=on&amp;qualigo=on&amp;nebel=on&amp;BASE=on&amp;portalu=on&amp;fportal=on&amp;harvest=on&amp;clewwa=on&amp;bildersuche=on&amp;audioclipping=on&amp;premiumpresse=on&quot;&gt;ruhrtux.de&lt;/a&gt; wieder offline und man findet nur noch Spuren davon im Netz.&lt;br /&gt;
&lt;br /&gt;
Heute sehe ich, dass Herr Wiesemann die Initiative openruhr.de startet. - Vor allem anscheinend als Werbung für sein Linux Hotel. Na dann viel Glück. Ich habe meine Lektion gelernt.  
    </content:encoded>

    <pubDate>Fri, 07 Aug 2009 10:06:31 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/127-guid.html</guid>
    
</item>
<item>
    <title>PHP SAPI to run gearman workers</title>
    <link>http://koch.ro/blog/index.php?/archives/126-PHP-SAPI-to-run-gearman-workers.html</link>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/126-PHP-SAPI-to-run-gearman-workers.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=126</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=126</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    &lt;a href=&quot;http://gearman.org/&quot;&gt;Gearman&lt;/a&gt; is a system to run jobs on multiple servers. We at &lt;a href=&quot;http://www.ymc.ch&quot;&gt;YMC&lt;/a&gt; are working know to integrate gearman in our cluster solution. Since we&#039;re a PHP shop, the jobs should be written in PHP.&lt;br /&gt;
There already is a solution with the &lt;a href=&quot;http://gearman.org/index.php?id=download#gearman_php_extension&quot;&gt;gearman PHP extension&lt;/a&gt; by &lt;a href=&quot;http://jluedke.com/?cat=4&quot;&gt;James M. Luedke&lt;/a&gt;. But I wanted to run multiple workers on one machine and having them use an opcode cache. The solution is a dedicated PHP binary (SAPI), which runs many worker threads in one process. The &lt;a href=&quot;http://github.com/thkoch2001/php-src/tree/gearman_worker_sapi&quot;&gt;code (see /sapi/gearman_worker) in branch gearman_worker&lt;/a&gt; is already usable and I&#039;d be happy to receive comments on it. After all I&#039;m not (yet) a C expert.&lt;br /&gt;
&lt;br /&gt;
TODOS:&lt;ul&gt;&lt;li&gt;graceful stop on SIGTERM&lt;/li&gt;&lt;li&gt;include the possibility to run cron-like scripts in a loop&lt;/li&gt;&lt;li&gt;pause, if available memory is too low&lt;/li&gt;&lt;li&gt;documentation&lt;/li&gt;&lt;li&gt;get it into upstream&lt;/li&gt;&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 20 Jul 2009 09:17:44 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/126-guid.html</guid>
    
</item>
<item>
    <title>eZ Components: The Good The Bad and the Ugly</title>
    <link>http://koch.ro/blog/index.php?/archives/125-eZ-Components-The-Good-The-Bad-and-the-Ugly.html</link>
            <category>english</category>
            <category>eZ Publish</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/125-eZ-Components-The-Good-The-Bad-and-the-Ugly.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=125</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=125</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    I&#039;ve been nominated &lt;a href=&quot;http://ez.no/company/news/nominees_for_ez_awards_2007&quot;&gt;again&lt;/a&gt; for the &lt;a href=&quot;http://ez.no/company/ez_conference_awards/ez_awards&quot;&gt;eZ Components Award&lt;/a&gt;. Thanks to &lt;a href=&quot;http://ez.no&quot;&gt;eZ Systems&lt;/a&gt; for honour and to me employer &lt;a href=&quot;http://www.ymc.ch&quot;&gt;YMC&lt;/a&gt; for the food!&lt;br /&gt;
So this is a good occasion to assemble a list I&#039;ve had in mind for a longer time. In a big project like &lt;a href=&quot;http://ezcomponents.org&quot;&gt;eZ Components&lt;/a&gt;, which has been programmed by many contributors over a long time it is natural, that there are some better and some worse parts. So which components are the good, the bad and the ugly? Maybe this kind of overview could also be done by other users of other libraries too. Then we could assemble a big comparison table of framework or library components and one could pick the best parts of each.&lt;br /&gt;
You&#039;ll notice that even if I consider myself a power user of eZ Components, I won&#039;t give a rating for every component, because there are still a few, I&#039;ve not intensively used by now. So let&#039;s complete this table in a wiki somewhere together!&lt;br /&gt;
&lt;br /&gt;
So IMHO: &lt;table style=&quot;border:1px solid gray;&quot; rules=&quot;all&quot;&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Component&lt;/th&gt;&lt;th&gt;rating&lt;/th&gt;&lt;th&gt;justification&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Authentication&lt;/td&gt;   &lt;td&gt;works       &lt;/td&gt;&lt;td&gt;the component should better not handle $_SESSION itself      &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Cache&lt;/td&gt;            &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Configuration&lt;/td&gt;    &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;ConsoleTools&lt;/td&gt;     &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Database&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;DatabaseSchema&lt;/td&gt;   &lt;td&gt;bad         &lt;/td&gt;&lt;td&gt;You want to have more control over your database schema.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Document&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;first ReST parser in PHP? Also many other formats!&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;EventLog&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Feed&lt;/td&gt;             &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Graph&lt;/td&gt;            &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;ImageAnalysis&lt;/td&gt;    &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;ImageConversion&lt;/td&gt;  &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Mail&lt;/td&gt;             &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;MvcTools&lt;/td&gt;         &lt;td&gt;works       &lt;/td&gt;&lt;td&gt;too few documentation of best practices&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;PersistentObject&lt;/td&gt; &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Search&lt;/td&gt;           &lt;td&gt;ugly        &lt;/td&gt;&lt;td&gt;sorry, but it&#039;s not flexible enough for more then the most basic needs&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;SignalSlot&lt;/td&gt;       &lt;td&gt;bad         &lt;/td&gt;&lt;td&gt;haven&#039;t seen any use case that convinces me&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;SystemInformation&lt;/td&gt;&lt;td&gt;bad         &lt;/td&gt;&lt;td&gt;doesn&#039;t comply to ezc coding guidelines&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Template&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;stable, fast, easily extensible&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Translation&lt;/td&gt;      &lt;td&gt;works       &lt;/td&gt;&lt;td&gt;Misses the important XLIFF format, but can be extended&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Tree&lt;/td&gt;             &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Url&lt;/td&gt;              &lt;td&gt;bad         &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;UserInput&lt;/td&gt;        &lt;td&gt;ugly        &lt;/td&gt;&lt;td&gt;see my attempt for a new &lt;a href=&quot;http://github.com/thkoch2001/ymc-htmlform/tree/master&quot;&gt;form component&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Webdav&lt;/td&gt;           &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;but looks very promissing!&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Workflow&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; The numbers: &lt;ul&gt; &lt;li&gt;not used yet: 6/25&lt;/li&gt; &lt;li&gt;works: 3/25&lt;/li&gt; &lt;li&gt;great: 10/25&lt;/li&gt; &lt;li&gt;bad: 4/25&lt;/li&gt; &lt;li&gt;ugly: 2/25&lt;/li&gt; &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Wed, 17 Jun 2009 11:07:21 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/125-guid.html</guid>
    
</item>

</channel>
</rss>