<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Memory Leak</title>
  <link>http://www.brainlounge.de/</link>
  <atom:link type='application/rss+xml' href='http://www.brainlounge.de' rel='self' />
  <description>Bernd&amp;apos;s Memory Leaks</description>
  <language>en-us</language>
  <copyright>Copyright 2007-2008</copyright>
  <lastBuildDate>Mon, 30 Nov 2009 18:07:28 +0100</lastBuildDate>
  <generator>homegrown</generator>
  <item>
    <title>Careless Whisper, part 2: Habemus muc!</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/careless_whisper_2.html</link>
    <pubDate>Fri, 4 Sep 2009 12:23:00 +0200</pubDate>
    <description>
           &lt;p&gt;
Jabber chat rooms have some advantages over IRC, like a more fine-grained participant control and other details.
One advantage is that participants are identified from their jabber id, so there are virtually no 'ghost' participants 
and it's easy to have a private conference.
          &lt;/p&gt;    
           &lt;p&gt;
In the Jabber world, chat rooms are called 'multi-user chat' or 'MUC' for short. Vysper's MUC implementation has reached
a critical milestone: users can create a room and chat with each other. Not everything is yet fully working.
          &lt;/p&gt;    
           &lt;p&gt;
Trying yourself is pretty easy if you have your Java5, Maven2 and svn ready:
          &lt;/p&gt;    
&lt;ol&gt;
&lt;li&gt;svn co http://svn.apache.org/repos/asf/mina/sandbox/vysper/trunk vysper&lt;/li&gt;
&lt;li&gt;cd vysper&lt;/li&gt;
&lt;li&gt;mvn install -Dmaven.test.skip&lt;/li&gt;
&lt;li&gt;cd server; cd extensions; cd xep0045-muc&lt;/li&gt;
&lt;li&gt;mvn assembly:assembly -DdescriptorId=jar-with-dependencies -Dmaven.test.skip&lt;/li&gt;
&lt;li&gt;cd ..; cd ..&lt;/li&gt;
&lt;li&gt;java -classpath src/main/config/:src/main/resources:../extensions/xep0045-muc/target/xep0045-m1.0.0-SNAPSHOT-jar-with-dependencies.jar  -Dvysper.add.module=org.apache.vysper.xmpp.modules.extension.xep0045_muc.MUCModule org.apache.vysper.xmpp.server.ServerMain
&lt;/li&gt;
&lt;/ol&gt;
           &lt;p&gt;
Windows users, please change '/' into '\' for 7.
          &lt;/p&gt;    
           &lt;p&gt;
Log into the server as "user1@vysper.org" or "user2@...", both have the identical password 'password1' and make sure 
you set the server/host configuration to 'localhost'.
          &lt;/p&gt;    
           &lt;p&gt;
The chat can be found under 'Service Discovery' or 'Services', depending on your client.
          &lt;/p&gt;    
           &lt;p&gt;
As a client, I recommend Psi, but others work, too. However, I didn't get Apple's iChat to log into Vysper yet. 
          &lt;/p&gt;    

        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/careless_whisper_2.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Vysper</category>
    <category>MUC</category>
    <category>XMPP</category>
    <category>IRC</category>
  </item>
  <item>
    <title>Know IDEA, part 2: CSS editing</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/know_idea_2.html</link>
    <pubDate>Fri, 21 Aug 2009 10:17:00 +0200</pubDate>
    <description>
           &lt;p&gt;
Ask the web programmer of your choice about a good IDE for developing CSS, HTML and JS. Most of them will recommend a simple
text editor or a tool which is
Windows only and not developed for at least 5 years... 
          &lt;/p&gt;    
           &lt;p&gt;
Thankfully, I'm not a web programmer, but from time to time, I have my own little share in
editing web frontend code. But I don't know CSS by heart. IDEA supports me with auto-complete in CSS files. It marks styles
which are used nowhere in HTML.
          &lt;/p&gt;    
           &lt;p&gt;
It even displays a little colored box besides codes like "#628c78". Isn't that a beautiful color? Maybe not. Klick on the
box and choose another one. Nice.                       
          &lt;/p&gt;    
           &lt;p&gt;
Now go to an HTML file, enter... &amp;lt;a class=&amp;quot; ...and invoke auto-complete. Now IDEA shows you a list with all defined CSS styles.
Hitting Command-B on a class name brings you directly from HTML to the CSS declaration. That's the 'Integrated' in 'IDE'.
          &lt;/p&gt;    


        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/know_idea_2.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Intellij</category>
    <category>IDEA</category>
    <category>IDE</category>
    <category>CSS</category>
  </item>
  <item>
    <title>Careless Whisper, part 1: Wham!, what a summer.</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/careless_whisper_1.html</link>
    <pubDate>Fri, 21 Aug 2009 10:12:00 +0200</pubDate>
    <description>
           &lt;p&gt;
What a summer for &lt;a href='http://mina.apache.org/vysper/'&gt;Apache Vysper&lt;/a&gt;, your friendly XMPP Server project. At first, we moved within Apache from 
&lt;a href='http://labs.apache.org'&gt;Labs&lt;/a&gt; to &lt;a href='http://mina.apache.org'&gt;MINA&lt;/a&gt;.
Then we got our Google-Summer-of-Code hacker Michael Jackl, who worked successfully on the 
&lt;a href='http://mina.apache.org/vysper/xep-0060-publish-subscribe.html'&gt;publish-subscribe extension&lt;/a&gt;. 
Currently Niklas Gustavsson from &lt;a href='http://mina.apache.org/ftpserver/'&gt;FtpServer&lt;/a&gt; fame is heavily 
working on Multi-user chat. Overall interest in the project increases.
          &lt;/p&gt;
           &lt;p&gt;
Yet, we still have a long way to go from MINA's sandbox to a production ready server. 
Yet today, Vysper is easily embeddable and  extendable while pubsub allows for many interesting applications outside 
the "Jabber world" of plain instant messaging.
          &lt;/p&gt;    


        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/careless_whisper_1.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Vysper</category>
    <category>MINA</category>
    <category>XMPP</category>
    <category>PubSub</category>
    <category>GSoC09</category>
  </item>
  <item>
    <title>Know IDEA, part 1: Column insert</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/know_idea_1.html</link>
    <pubDate>Tue, 18 Aug 2009 11:42:00 +0200</pubDate>
    <description>
           &lt;p&gt;
Most of the day, I'm using one particular software: a Java IDE. I've tried Eclipse. It's nice and everything.
But I've only found that one particular IDE really does (nearly) everything right for me. It gives me a big
productivity boost. You know, those small features and gems that make your day. 
I'm using &lt;a href='http://www.jetbrains.com/idea/'&gt;Jetbrain's Intellij IDEA&lt;/a&gt;.
          &lt;/p&gt;
           &lt;p&gt;
IDEA has a column selection mode. (Menu -&gt; Edit -&gt; Column Mode) This fact in itself is nothing very special.
Microsoft Visual Studio had column mode in the late 80ies, if I remember correctly. It was a hidden feature at first
and proved very helpful over the years. Now, I'm no longer using the Visual suite and they seem to be far behind
the IDE train.
          &lt;/p&gt;
           &lt;p&gt;
Column mode is especially helpful when you want to replace the same text on multiple consecutive lines. You select one or more
column on a couple of lines, just like you would select cells in a spreadsheet. 
          &lt;/p&gt;
           &lt;p&gt;
This selection can be copied and pasted around. Yeah!
          &lt;/p&gt;
           &lt;p&gt;
What's not so obvious is that you can even paste a single line fragment that's already on your clipboard.
And that's how it works: Select and copy some text with regular selection mode. Then switch to column mode, select
a box and hit paste. What you now get is that the copied text is pasted to &lt;i&gt;every single line&lt;/i&gt; of your box 
selection. A multi-paste. 
          &lt;/p&gt;
           &lt;p&gt;
This even works when the selected box is multiple lines, but zero columns. This way, you can prepend text
on multiple lines at once, with one strike, without artifical replace constructs.
          &lt;/p&gt;
           &lt;p&gt;
UPDATE: Emmanuel L&amp;eacute;charny has responded with how to do 
&lt;a href='http://hrabal.blogspot.com/2009/08/eclipse-column-mode-selection.html'&gt;column mode with Eclipse&lt;/a&gt;.
Thanks! 
          &lt;/p&gt;
           &lt;p&gt;
Disclaimer: I'm in no way affiliated with JetBrains. Really. I'm just enthusiastic and a little bit biased. 
That said, I'm a happy user of a free license for  Intellij IDEA, due to my work on Open Source 
projects and I'm grateful for that.
          &lt;/p&gt;    


        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/know_idea_1.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Intellij</category>
    <category>IDEA</category>
    <category>IDE</category>
    <category>Java</category>
  </item>
  <item>
    <title>XMPP at Google</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/xmpp_at_google.html</link>
    <pubDate>Sun, 9 Aug 2009 09:31:00 +0200</pubDate>
    <description>
           &lt;p&gt;
After Google Wave, the company will again use XMPP, now for their Chrome browser's sync feature.
Together with GTalk, this is the third high-level technology from Google featuring XMPP.
          &lt;/p&gt;
           &lt;p&gt;
My guess is, it will only be a question of time until browsers will offer built-in XMPP protocol support, 
making HTTP and AJAX more or less void (I'm not kidding).
          &lt;/p&gt;
           &lt;p&gt;
Greg Wilkin appears to be right when &lt;a href="http://blogs.webtide.com/gregw/entry/google_wave_a_new_paradigm"&gt;he notes&lt;/a&gt; 
that Wave will only use XMPP for server-to-server communications. Sync is  
&lt;a href="http://sites.google.com/a/chromium.org/dev/developers/design-documents/sync"&gt;planned &lt;/a&gt; to exploit Google Talk.
And Google Talk &lt;i&gt;does&lt;/i&gt; support client-bound XMPP connections. Of course, in the browser, the transport for XMPP is still HTTP.
          &lt;/p&gt;
           &lt;p&gt;
At Apache, we've already started building an open source 
&lt;a href="http://markmail.org/search/?q=list%3Amina.dev+vysper#query:list%3Amina.dev%20vysper%20order%3Adate-backward+page:1+state:facets"&gt;
XMPP server&lt;/a&gt;, with my two heros Michael working on PubSub and Niklas 
starting implementing MUC - Multi User Chat (IRC done right). It's hosted at &lt;a href="http://mina.apache.org"&gt;Apache MINA&lt;/a&gt;.
          &lt;/p&gt;
           &lt;p&gt;


          &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/xmpp_at_google.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>XMPP</category>
    <category>Google Wave</category>
    <category>Chrome</category>
    <category>HTTP</category>
    <category>AJAX</category>
    <category>Vysper</category>
  </item>
  <item>
    <title>Sponsoring Open Source</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/sponsoring_open_source.html</link>
    <pubDate>Thu, 2 Jul 2009 18:18:00 +0200</pubDate>
    <description>
           &lt;p&gt;
Getting more involved with the ASF at large, coding time gets eaten up by overhead time, which can be summarized as 
'managing projects'. A big part of this time is not actively managing, but reading coding- and non-coding-related 
mailing lists. 
And believe me, there is a lot to read these days.
            &lt;/p&gt;
           &lt;p&gt;             
Anyway, it's time to get some coding time back.
There are three accounts to take from: 'family time', said 'ASF overhead time' or 'working time'. 
I'll try for the last one, since reducing the other ones is not really an option. And maybe, since my current customer
project doesn't max me out 100%, this might be a good choice.  
            &lt;/p&gt;
Being a freelancer, it's only going to work if I get paid for working on Open Source. 
And there are some big, important projects ahead: 
&lt;ul&gt;
&lt;li&gt;getting &lt;a href="http://cwiki.apache.org/confluence/display/labs/vysper"&gt;Apache Vysper&lt;/a&gt;, 
the only ASL licensed open source XMPP server 
implementation ready for prime time (heard of "Google Wave" already?),&lt;/li&gt; 
&lt;li&gt;moving &lt;a href="http://james.apache.org"&gt;JAMES&lt;/a&gt; over into this century,&lt;/li&gt; 
&lt;li&gt;creating a modularized rsync implementation in Java (a private project of mine, waiting to be open-sourced),&lt;/li&gt; 
&lt;li&gt;getting a brilliant new webmail project at the ASF started (&lt;a href="http://svn.apache.org/repos/asf/labs/hupa/"&gt;here's the code&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
            &lt;/p&gt;
           &lt;p&gt;       
Now, here's the deal: If you sponsor me, I'll work on one if these projects, as your contractor,
 as many days as we agree on. One or more goals may be defined. The smallest working unit is a day (8hrs). 
Only coding time will count (including fixing bugs and creating documentation). 
Anything related to PM is still booked on the 'open source overhead' account, you'll have nothing to do with that. 
            &lt;/p&gt;
           &lt;p&gt;       
You'll get an excellent discount rate from my regular closed source rate. 
Any output will go to the project under the ASL2.0, I retain copyright, the whole work is done in public. 
For any further work, customization or support not going directly to the project (but you) my regular rate applies.
            &lt;/p&gt;
           &lt;p&gt;       
This means: You control what I will be working on during sponsored time. If the project community doesn't accept my work, you'll get it instead.
But our choice of Todos will make sure that it's something the whole project will benefit from and is very likely to be accepted.  
            &lt;/p&gt;
           &lt;p&gt;       
If you think this could work out for you and you have a particular goal in mind get in contact with me at &lt;a href="mailto:open.work@brainlounge.de"&gt;open.work@brainlounge.de&lt;/a&gt;.
          &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/sponsoring_open_source.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Freelancing</category>
    <category>Open Source</category>
    <category>Apache Software Foundation</category>
  </item>
  <item>
    <title>I am available for coffee</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/coffee_or_hiring.html</link>
    <pubDate>Mon, 20 Apr 2009 00:00:00 +0200</pubDate>
    <description>
           &lt;p&gt;       
This week I am at JAX'09, a massive german conference about Agile, SOA, eclipse, Java etc.
I'd like to have a chat or a coffee with you. Just drop me a note at &lt;a href='mailto:bernd@brainlounge.de'&gt;bernd@brainlounge.de&lt;/a&gt;.      
            &lt;/p&gt;
           &lt;p&gt;             
Also, excitingly, my 6 weeks of conferencing and holidays finally come to an end.
I'm currently available for freelancing in Frankfurt/Main, Germany or via telecommuting. 
            &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/coffee_or_hiring.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Freelancing</category>
  </item>
  <item>
    <title>Where's my spec, where's my code?</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_spec_code.html</link>
    <pubDate>Tue, 14 Apr 2009 16:17:00 +0200</pubDate>
    <description>
           &lt;p&gt;             
The essence of XMPP (a.k.a Jabber) is specified in two RFCs, 
&lt;a href="http://ietf.org/rfc/rfc3920.txt"&gt;3920&lt;/a&gt; and &lt;a href="http://ietf.org/rfc/rfc3921.txt"&gt;3921&lt;/a&gt;. Both are solid, reasonably readable documents. For actual implementations though, the current in-progress revisions, named with a "bis" appendix and a counter (like 3920bis-03), are more suitable. Better structure, more examples, more details. They contain all the lessons learned from the XMPP public lists at xmpp.org. 
But they are still &lt;a href="http://tools.ietf.org/html/draft-saintandre-rfc3920bis-09"&gt;moving&lt;/a&gt; &lt;a href="http://tools.ietf.org/html/draft-saintandre-rfc3921bis-08"&gt;targets&lt;/a&gt;.
            &lt;/p&gt;

           &lt;p&gt;             
Furthermore, every XMPP server implementation has to conform to another handful of non-trivial RFCs and a dozen of &lt;a href="http://xmpp.org/extensions/"&gt;XEPs&lt;/a&gt;. It's hard to always know what code is implementing what part of which spec. This gets even more complicated where RFC and -bis contradict each other.
How do we know which spec version is used by every developer?
            &lt;/p&gt;

           &lt;p&gt;             
That must have been the situation for Gerolf Seitz, when he was working on &lt;a href="http://cwiki.apache.org/labs/vysper.html"&gt;Vysper&lt;/a&gt; for a short time. 
            &lt;/p&gt;

           &lt;p&gt;             
He proposed to annotate the source code with information about the related spec section. 
These annotations where unmaintained for a while, mostly because you can have only one annotation of the same type per element (class, method). 
Vysper is implemented following the bis's, but section numbering still changes slightly from revision to revision, which invalidates the annotations. 
Sometimes you want to link to more than one spec (RFC and RFCbis, bis-01 and bis-03, or differenct sections of the same spec). 
Now this is mostly resolved, and I am happy again with @SpecCompliant.
            &lt;/p&gt;

           &lt;p&gt;             
What changed?
            &lt;/p&gt;

           &lt;p&gt;             
At first, (not being very much into annotations) I found out how to have more than one @SpecCompliant at the same place:
            &lt;/p&gt;

           &lt;p&gt;&lt;pre&gt;             
@SpecCompliance(compliant = {
    @SpecCompliant(spec = "RFC3921bis-05", 
                   section = "3.3.3", 
                   status = IN_PROGRESS, 
                   comment = "current impl based hereupon"),
    @SpecCompliant(spec = "RFC3921bis-08", 
                   section = "3.3.3", 
                   status = NOT_STARTED, 
                   comment = "substantial additions from bis-05 
                              not yet taken into account")
})
            &lt;/pre&gt;&lt;/p&gt;
           &lt;p&gt;             
As you can see, comments where added, too.
            &lt;/p&gt;

           &lt;p&gt;             
This gets very helpful. Now, different specs or spec revisions can be annotated side-by-side.
            &lt;/p&gt;

           &lt;p&gt;             
Using a standard JDK tool called &lt;a href="http://java.sun.com/javase/6/docs/technotes/guides/apt/index.html"&gt;apt&lt;/a&gt; 
(hope this link won't stop working for at least the next months) 
and writing some little glue code, a compliance overview doc can be generated, listing all SpecCompliant annotations in one HTML file. That's great. The table links out to the relevant spec section(s) and to the javadoc where this is implemented. 
For a snapshot example, see &lt;a href="http://people.apache.org/~berndf/projects/xmpp-server/vysper/apidocs_r757398/spec_compliance.html"&gt;here&lt;/a&gt;.
            &lt;/p&gt;


           &lt;p&gt;             
Now it's easy to get an idea about our spec coverage and developers can jump directly to the spec from the relevant class or method.
            &lt;/p&gt;

           &lt;p&gt;             
The only thing we still need now is the power which automagically creates the implementation from the spec. Contributions welcome :-)
            &lt;/p&gt;



            &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_spec_code.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>XMPP</category>
    <category>Jabber</category>
    <category>RFC</category>
    <category>XEP</category>
    <category>Java annotations</category>
    <category>apt</category>
    <category>Vysper</category>
  </item>
  <item>
    <title>Speaking at JAX'09</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_ann_jax09.html</link>
    <pubDate>Mon, 15 Dec 2008 07:41:00 +0100</pubDate>
    <description>
           &lt;p&gt;             
At the &lt;a href='http://it-republik.de/jaxenter/jax/'&gt;JAX'09&lt;/a&gt; conference in &lt;a href='http://mainz.de'&gt;Mainz&lt;/a&gt; end of April next year I'll be giving three talks on the whole, wow. One will be about &lt;a href='http://lucene.apache.org'&gt;Apache Lucene&lt;/a&gt;. 
The second will be a short talk about &lt;a href='http://hadoop.apache.org'&gt;Apache Hadoop&lt;/a&gt;, a project which will be hard to fit into 30 minutes.
            &lt;/p&gt;
           &lt;p&gt;             
And I'm especially excited to be able to speak about &lt;a href='http://xmpp.org'&gt;XMPP&lt;/a&gt; again, after the FastFeathertalk I gave at ApacheCon EU 08.
            &lt;/p&gt;
           &lt;p&gt;             
By the way, ApacheCon EU 09 is one month before the JAX and still nothing to be heard about the accepted sessions...  
            &lt;/p&gt;

        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_ann_jax09.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Lucene</category>
    <category>XMPP</category>
    <category>Hadoop</category>
    <category>JAX09</category>
    <category>Java Magazin</category>
    <category>ApacheCon</category>
  </item>
  <item>
    <title>Start of german Lucene Online Series</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_lucene_series_1.html</link>
    <pubDate>Sun, 30 Nov 2008 18:53:00 +0100</pubDate>
    <description>
           &lt;p&gt;
My new online series about the &lt;a href='http://lucene.apache.org'&gt;Apache Lucene&lt;/a&gt; project and its different products went online this week at &lt;a href='http://it-republik.de/jaxenter/'&gt;JAXenter&lt;/a&gt; 
which is also publishing german &lt;a href='http://www.javamagazin.de/'&gt;Java Magazin&lt;/a&gt;. 
It &lt;a href='http://it-republik.de/jaxenter/artikel/Apache-Lucene-sucht-weiter-2040.html'&gt;starts&lt;/a&gt; with a very basic introduction to the Lucene framework.
Later episodes will cover Solr, Nutch and Tika.
            &lt;/p&gt;

        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_lucene_series_1.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Lucene</category>
    <category>Java Magazin</category>
  </item>
  <item>
    <title>XMPP Glorification (Part 1): IQ</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_xmpp_glory_1_iq.html</link>
    <pubDate>Tue, 25 Nov 2008 22:42:00 +0100</pubDate>
    <description>
           &lt;p&gt;
I'm sure most of you developers know that situation: You are working on your day job and what you're doing is not really always the hottest thing on the technical earth, to say the least. So, some relieve and distraction is needed to recover at night. For the last 2 years I've been on-and-off working with XMPP (a.k.a. Jabber), &lt;a href='http://svn.apache.org/repos/asf/labs/vysper/'&gt;implementing&lt;/a&gt; a server as a &lt;a href='http://cwiki.apache.org/labs/vysper.html'&gt;side-project&lt;/a&gt;. And that really gives me the kicks I need.
            &lt;/p&gt;

           &lt;p&gt;
XMPP is a well-architected, well-standardized, powerful, yet reasonably simple messaging protocol. It was created with extensibility in mind and it has in fact lots of &lt;a href='http://xmpp.org/extensions/'&gt;public&lt;/a&gt; and proprietary extensions, which all (if they adhere to the standard) are interoperable. (Which means: Any server or client can savely ignore them, if they don't know them.)
            &lt;/p&gt;

           &lt;p&gt;
What makes XMPP such a natural choice for many messaging applications is that it supports the three major messaging paradigms: point-to-point, broadcast and request/response.
            &lt;/p&gt;

           &lt;p&gt;
While the first two are used for communication between all clients with the server as a router (&lt;a href='http://en.wikipedia.org/wiki/Hub_and_spoke'&gt;hub-and-spoke&lt;/a&gt;), request/response - or "info/query" (IQ) in XMPP terms - is used for client/server interaction.
            &lt;/p&gt;

           &lt;p&gt;
XMPP is bound to a session based on a persistent TCP connection, much like POP3, SMPT, Telnet and similar line protocols. This is in contrast to HTTP which was architected session-less. That led to many workarounds to make sessions work between requests with HTTP, all those pains like cookies, encoding sessions in the URL, recycling TCP connections between request, long polling and whatnot. What once was considered an advantage of HTTP is becoming more and more a burden as servers are required to respond spontaniously to avoid client pull congestion.
            &lt;/p&gt;

           &lt;p&gt;
Theoretically, with a persistent connection, the server can always push data to the client even when the client does not pull because he is off doing something else. But most of the established protocols like POP3 or Telnet refrain from doing so.  And this has always been considered a good choice, since you as a server didn't want to overload your network and clients in times when network and CPU resources where precious goods.
            &lt;/p&gt;

           &lt;p&gt;
In addition to client/server, XMPP supports server/client request/response, too. This does not create a problem since a XMPP client must be prepared to receive Messages and Presence from his peers at any time anyway. So if the server wants to know if the client is still alive, he can send him a ping IQ command and the client will respond with a pong.
            &lt;/p&gt;

           &lt;p&gt;
To me it seems like XMPP opens the door for many new types of applications. It's developed by an &lt;a href='http://xmpp.org/xsf/'&gt;open community&lt;/a&gt; but it lacks a &lt;a href='http://xmpp.org/software/servers.shtml'&gt;server implementation&lt;/a&gt; which is open source in the ASF sense, with the right license and community setup.
            &lt;/p&gt;

           &lt;p&gt;
So if you have some spare cycles, jump in and &lt;a href='http://issues.apache.org/jira/browse/LABS'&gt;help out&lt;/a&gt; on Vysper at Apache Labs. See you there!
            &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_xmpp_glory_1_iq.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>XMPP</category>
    <category>request</category>
    <category>response</category>
    <category>HTTP</category>
    <category>messaging</category>
    <category>internet protocols</category>
  </item>
  <item>
    <title>Looking for a new contract</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_looking_for_a_new_contract.html</link>
    <pubDate>Wed, 25 Jun 2008 08:47:00 +0200</pubDate>
    <description>
           &lt;p&gt;
My current freelancing contract is running out at end of August and I am starting looking for a new project, but only 
in the Frankfurt/Main area or remotely from my Frankfurt office.
            &lt;/p&gt;

           &lt;p&gt;
I am doing Application Server/Java stuff, mainly using the Spring Framework, as customer are quite focused on this
platform these days.   
            &lt;/p&gt;

           &lt;p&gt;
I am very experienced in the whole project lifecycle: doing customer workshops, writing specifications, 
laying out the architecture, training the development team, coding, testing. 
            &lt;/p&gt;

           &lt;p&gt;
So if you need someone for any or all of those tasks, drop me an email at bernd at brainlounge de.
            &lt;/p&gt;

           &lt;p&gt;
Projects involving Apache projects Lucene, Hadoop or JAMES, XMPP/Jabber technology or Scala are especially
tempting for me. 
            &lt;/p&gt;

        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_looking_for_a_new_contract.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>freelancing</category>
  </item>
  <item>
    <title>JAMES integration within Geronimo</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_geronimo_and_james.html</link>
    <pubDate>Sun, 15 Jun 2008 22:41:00 +0200</pubDate>
    <description>
           &lt;p&gt;
That's &lt;a href='http://markmail.org/message/x5t7yl7asvkq3pn2'&gt;great&lt;/a&gt; &lt;a href='http://markmail.org/message/pm5uzq6frojiuxf4'&gt;news&lt;/a&gt;. David Jencks managed to get the &lt;a href='http://james.apache.org'&gt;Apache James Mail Server&lt;/a&gt; running within &lt;a href='http://geronimo.apache.org'&gt;Apache Geronimo&lt;/a&gt;.
It's still experimental, but it's a big step forward. That's also why I started the effort making James Server run with &lt;a href='http://springframework.org'&gt;Spring&lt;/a&gt;.
            &lt;/p&gt;

        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_geronimo_and_james.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>email</category>
    <category>Apache Geronimo</category>
    <category>Apache James</category>
  </item>
  <item>
    <title>(How to scale) In the multi-processor world</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_in_the_multiprocessor_world.html</link>
    <pubDate>Sun, 15 Jun 2008 22:02:00 +0200</pubDate>
    <description>
           &lt;p&gt;
At the time when I got into application development it was common that GUIs became unresponsive when 
applications (3D renderers for example) where busy calculating, or that you could not go on scrolling 
in a text while it was being saved. Multi-threading was the cure to this and 
&lt;a href='http://en.wikipedia.org/wiki/Thread_%28computer_science%29'&gt;threads&lt;/a&gt; were used to 
build multi-tasking applications. Having Threads as a feature in Java was a big plus for moving to 
it from C++. Off-the-shelve PCs had no more than one processor back then. Multi-core was unknown. 
It was sufficient to have one thread for the GUI, one for I/O and one or two for computations and 
you easily had maxed out your machine. Later came thread pools, for multi-plexing database calls, 
or scaling your web server to more clients. 
            &lt;/p&gt;

           &lt;p&gt;
But eventually, one thread per socket connection was no longer scaling well for a web server, either. 
There were too many concurrent threads to be handled efficiently by the OS. 
Every context switch between two threads has an overhead. That's when 
event-driven frameworks like &lt;a href='http://mina.apache.org'&gt;MINA&lt;/a&gt; came to rescue. A thread was only assigned to a connection when 
there is data to process.
            &lt;/p&gt;

           &lt;p&gt;
Today, multicore multi-CPU machines are very common. 
So we no longer need to optimize for our one-and-only processor. 
Instead, we need to optimize for threads running truely in 
parallel on the same machine. 
New sorts of bottlenecks start to appear: One of them is sharing 
variables between threads. Access to memory happens in a processor's local memory, so state has to be copied around between main memory and CPU-local caches (I am simplifying here).
            &lt;/p&gt;

           &lt;p&gt;
There is a &lt;a href='http://www.infoq.com/presentations/erlang-software-for-a-concurrent-world'&gt;fascinating presentation&lt;/a&gt; by Joe Armstrong about how to scale in the multi-processor world 
over at &lt;a href='http://www.infoq.com/news/2008/06/erlang-software-for-a-concurrent'&gt;InfoQ&lt;/a&gt;. 
He also wrote a book about it (&lt;a href="http://www.amazon.de/gp/product/193435600X?ie=UTF8&amp;tag=brainloungede-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=193435600X"&gt;amazon.de link&lt;/a&gt;).
It's about &lt;a href='http://en.wikipedia.org/wiki/Erlang_%28programming_language%29'&gt;Erlang&lt;/a&gt;, a computer language optimized for running on lots of processors and lots of machines. 
It is many years old and used in production, but only became better known to a wider public in the last years.
And if you don't have enough of it then already, listen to the &lt;a href='http://se-radio.net/podcast/2008-03/episode-89-joe-armstrong-erlang'&gt;Erlang interview&lt;/a&gt; 
with Joe Armstrong by &lt;a href='http://se-radio.net/'&gt;se-radio's&lt;/a&gt; Markus Voelter.
            &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_in_the_multiprocessor_world.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>talk</category>
    <category>Joe Armstrong</category>
    <category>Erlang</category>
    <category>Concurrent Programming</category>
    <category>infoq</category>
  </item>
  <item>
    <title>From expo to expo</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_from_expo_to_expo.html</link>
    <pubDate>Fri, 6 Jun 2008 09:10:00 +0200</pubDate>
    <description>
           &lt;p&gt;
&lt;a href='http://openexpo.de'&gt;Open Source Expo&lt;/a&gt; at Karlsruhe was not exactly overcrowed, but both of my talks went fine and I was really enjoying them. Mostly, because people seemed to be interested and asked really good questions. &lt;a href='http://kunterbunti.blogspot.com/'&gt;Christian Geisert&lt;/a&gt; from &lt;a href='http://ofbiz.apache.org/'&gt;Apache OfBiz&lt;/a&gt; fame has some photos &lt;a href='http://picasaweb.google.de/chrisgt/OpenSourceExpo2008InKarlsruhe'&gt;online&lt;/a&gt;.
My slides (in german) are up at &lt;a href='http://people.apache.org/~berndf'&gt;my apache homepage&lt;/a&gt;.
           &lt;p&gt;
            &lt;/p&gt;
Now, the unaffiliated &lt;a href='http://openexpo.ch'&gt;Swiss Open Expo&lt;/a&gt; in late September seems to be more of an event. Many Apache people are presenting, including Henning Schmiedehausen, Bertrand Delacretaz, Lars Eilebrecht and Brian Fitzpatrick. I'll be able to do a talk about &lt;a href='http://hadoop.apache.org'&gt;Apache Hadoop&lt;/a&gt;. If you are able to come to Winterthur, don't miss it. I lived there for a short time, it was beautifully relaxing. And Zurich is just around the corner.
            &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_from_expo_to_expo.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>ASF</category>
    <category>community</category>
    <category>openexpo</category>
    <category>talk</category>
    <category>Apache Hadoop</category>
  </item>
  <item>
    <title>Becoming an ASF member</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_asf_member.html</link>
    <pubDate>Fri, 6 Jun 2008 09:02:00 +0200</pubDate>
    <description>
           &lt;p&gt;
Today, I am happy and excited since I've appearently been elected as an ASF member. Thanks a lot!                             
That's the greatest achievement in my professional life. And it's a pleasure and honour to be working together
with all those great Apache people.  
           &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_asf_member.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>ASF</category>
  </item>
  <item>
    <title>Community-wise, you are wrong every time</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_community-wise_you_are_always_wrong.html</link>
    <pubDate>Mon, 26 May 2008 21:07:00 +0200</pubDate>
    <description>
           &lt;p&gt;
Open source projects aren't conflict free zones. People are trying to get along with each other most of the time, and sometimes this just doesn't work.
That is life. We have to be prepared to be confronted with misbehavior, crossing of social barriers, accusations, misunderstandings, egos, cultures, you name it, when all we really want to do is hack cool stuff. That's the downside of working at &lt;i&gt;really&lt;/i&gt; cool software projects. There are other developers you have to deal with. 
At Apache, conflicts mostly start or at least are fought over 'technical issues'. 
Everybody appearing publicly at Apache - users, committers, members - is ethically bound to communicate in a consensus-driven and open minded way. But if you really don't find a consensus, and every supposedly fruitful technical argument makes people angry, frustrated, annoyed or any other kind of bad mood, there is probably a more substantial underlying community issue ventilating.
           &lt;/p&gt;
           &lt;p&gt;
Warning signs are statements like 'I know I am right, why do you insist in your position?', 'This [my opinion] is a known fact. Period.', 'Everbody knows this, but you!', 'Simply change your tool/IDE/settings/operating system/keyboard layout/brain and shut up!'. 'I don't like people telling me what to do.'
           &lt;/p&gt;
           &lt;p&gt;
This happens when people became unable to let any other opinion approach to there minds that they seem to be shutting down for everything what everybody else is saying. The blue screen of discussion death, so to speak. They become very defending when in fact they there is no reason. Finding consensus becomes impossible.
           &lt;/p&gt;
           &lt;p&gt;
What's the solution when such a situation emerges? That's really difficult. So, let me tell you "The Parabel from the Developer with the Server Bug":
           &lt;/p&gt;
           &lt;p&gt;
Once upon a time there was a developer. He was programming against a server API. He laid out the client application brilliantly. He wrote tests, he reviewed the code. He even briefely talked to other developers about it.
Then he let the client connect to the server. And all his excellent client was telling him is that there was a transmission error. Since he prepared his client program so thoroughly, certainly there was a bug in the server implementation. So he downloaded the sources (lucky him!) and looked into them. There he found ugly code, bad design, potential security holes. He ranted, he cursed. He thought about ways to torture the server app developer. He couldn't find the server bug, even less than the doomed soul writing this crap of a server. He turned away in disgust.
           &lt;/p&gt;
           &lt;p&gt;
In the evening, he met a friend and told his story. They both shook their heads in disbelief about the misery with the server bug. At some point over the third cold beverage his friend asked the developer: Have you checked if it's a bug in your own client code? The developer just laughed.
           &lt;/p&gt;
           &lt;p&gt;
Well, the next day the developer stumbled about a tiny little incorrectness in his own code, a probable misunderstanding of the server API spec. Small change. He started up his client again, and, can you believe it, everything just worked smoothly.
           &lt;/p&gt;
           &lt;p&gt;
That's the end of the story. Is there anything to learn from this? In computer programs, you might be able to find a prove (test case, svn log, etc.) for who did wrong what and when. 
This is not the same for community issues. If a fight breaks out, and you are a part of it, you are wrong every time. Fighting is a community bug. Take a step back before blaming others. Fix your own errors first. Let the others fix their own errors first, too. Then go back to discussion. Be polite. Be overly careful with every single word. Be pragmatic. Try to find a consensus, even if it's only to have a consenus. All parties will be unsatisfied. Maybe it will be painful for you more than the others. Maybe you have to go through this multiple times.
But you have created something beyond just coding. You fixed the community.
           &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_community-wise_you_are_always_wrong.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>ASF</category>
    <category>communities</category>
  </item>
  <item>
    <title>OFBiz booth at Open Source Expo 08</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_ofbiz_openexpo.html</link>
    <pubDate>Sun, 11 May 2008 22:54:00 +0200</pubDate>
    <description>&lt;p&gt;
            &lt;a href='http://openexpo.de/projects.php'&gt;Apparently&lt;/a&gt; the guys from &lt;a href='http://ofbiz.apache.org'&gt;Apache OFBiz&lt;/a&gt; were smart enough to get a booth organized for their project at &lt;a href='http://openexpo.de/'&gt;Open Source Expo 08&lt;/a&gt; in Karlsruhe.
            Great!
           &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_ofbiz_openexpo.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>ASF</category>
    <category>Apache OFBiz</category>
    <category>openexpo</category>
    <category>Open Source Expo 08</category>
  </item>
  <item>
    <title>ASF and Lucene Talks at openexpo.de end of May</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_openexpo_de_08.html</link>
    <pubDate>Fri, 9 May 2008 09:41:00 +0200</pubDate>
    <description>&lt;p&gt;
            I am surprised and happy that my two talks were accepted for &lt;a href='http://openexpo.de/'&gt;Open Source Expo 08&lt;/a&gt; in Karlsruhe, Germany.
            OpenExpo is a two-day event starting on Monday, May 26th, which is the only day when I will be attending. 
           &lt;/p&gt;
           &lt;p&gt;
            I am especially excited about my general talk about &lt;a href='http://apache.org'&gt;The Apache Software Foundation&lt;/a&gt; at 16:50.
            I already have a rough outline of the talk, but if you'd like to give me some input about what I should definitively
            not forget to tell about the ASF, your input is much appreciated. Just post to community@apache.org or drop me a private mail at bernd dot fondermann at brainlounge.de.
           &lt;/p&gt;
           &lt;p&gt;
            The other session is an introductionary talk about &lt;a href='http://lucene.apache.org'&gt;Apache Lucene&lt;/a&gt; (at 10:20), similar to the one I gave in January at &lt;a href='http://www.heise.de/events/2008/open_source_meets_business/'&gt;OSMB&lt;/a&gt;.
           &lt;/p&gt;
           &lt;p&gt;
            Also, if you'd like to meet, you find my cell phone number on the internet, or contact me over xing or linkedin.
           &lt;/p&gt;
           &lt;p&gt;
            Unfortunatly, the ASF - being one of the biggest and most successful communities in Open Source is not representing with its own booth on the expo floor.
            Hopefully we get one organized next year.
           &lt;/p&gt;
           &lt;p&gt;
            See you in &lt;a href='http://www.karlsruhe.de/stadt.de'&gt;Karlsruhe&lt;/a&gt;, the city with the most sun hours in Germany.
           &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_openexpo_de_08.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>ASF</category>
    <category>Apache Lucene</category>
    <category>openexpo</category>
    <category>Open Source Expo 08</category>
    <category>talk</category>
  </item>
  <item>
    <title>e-mail 1.0</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_e-mail_1-0.html</link>
    <pubDate>Thu, 27 Mar 2008 00:40:00 +0100</pubDate>
    <description>&lt;p&gt;
            While bravely fighting with the IMAP implementation in Apache James, 
            &lt;a href='http://www.jroller.com/robertburrelldonkin/'&gt;Robert&lt;/a&gt;
            is hoping for relieve by  
            &lt;a href='http://www.jroller.com/robertburrelldonkin/entry/rmep_next_generation_mail'&gt;new e-mail protocols&lt;/a&gt;. 
            And indeed, it's high time. A lot of energy, both in productivity time and electrical power, is
            wasted. Wasted by huge piles of spam and other types of unsolicited e-mail. And this is not only a social
            phenomenon, it is made possible by the protocols used to transfer mail between
            computers. These protocols (SMTP, IMAP, POP) stem from the information technology middle ages. 
            They are not appropriate for today's needs.
            We need something better. I don't talk about 'e-mail 2.0' here. We need 'e-mail 1.0', first. 
           &lt;/p&gt;
           &lt;p&gt;
            So the proposed goal is to establish &lt;a href='http://code.google.com/p/rmep/'&gt;RMEP&lt;/a&gt;, based on HTTP and XML. 
            I don't think HTTP is an appropriate prerequisite.
            HTTP is a client/server protocol. It is not designed for message transfer. It is designed for hypertext transfer
            in the request/response world. And yes, you can probably make every protocol or type of messaging 
            working embedded into HTTP. But there is no way to hide that the protocol wasn't originally build for this purpose. 
            The interesting parts of such a mail protocol would be contained in the XML part, though. 
            So using HTTP only leads to a half-hearted solution.
            We would start from a broken protocol and end up with a new protocol embedded in an another-purpose host protocol.
           &lt;/p&gt;
           &lt;p&gt;
            The best would be to use a protocol which is especially designed for exchanging messages, 
            both between client/server and server/server, which from the beginning supports security, encryption and compression
            and is extensible. Which is transport agnostic and uses XML as its syntactical foundation.
           &lt;/p&gt;
           &lt;p&gt;
            A protocol matching all this is already in broad use, it is well-specified and understood. Mature, if you want. 
            It's called XMPP, Extensible Messaging and Presence Protocol. The &lt;a href='http://xmpp.org'&gt;community&lt;/a&gt; around XMPP is open and very welcoming.
            And if you want, you can even &lt;a href='http://www.xmpp.org/extensions/xep-0124.html'&gt;transport XMPP via HTTP&lt;/a&gt;. 
            XMPP is not restricted to request/reponse (polling). The server
            can truely push to its clients which reduces network traffic and makes life easier.
           &lt;/p&gt;
           &lt;p&gt;
            XMPP is not RESTful. But access to a single message and complete message structures (trees of mailboxes) could be RESTyfied within XMPP.
            &lt;a href='http://www.xmpp.org/extensions/xep-0013.html'&gt;XEP-0013&lt;/a&gt; could be a starting point.
            Mailboxes and storage would still need to be specified as separate &lt;a href='http://www.xmpp.org/extensions'&gt;XMPP extensions&lt;/a&gt;.  
           &lt;/p&gt;
           &lt;p&gt;
            Let's just hope that in the end the next-generation e-mail protocol (be it RMEP, XMPP or something else) will 
            be chosen for its technical merits and not only because of politics.
           &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_e-mail_1-0.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>email</category>
    <category>XMPP</category>
    <category>Apache James</category>
  </item>
  <item>
    <title>Joseph Weizenbaum passes away at the age of 85</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_entry_joseph_weizenbaum.html</link>
    <pubDate>Fri, 7 Mar 2008 22:02:00 +0100</pubDate>
    <description>&lt;p&gt;
             A sad moment for computer sience and humanity in the information technology age as software developer, researcher and 
             philosopher Joseph Weizenbaum died on March 5th 
             (bios in &lt;a href='http://en.wikipedia.org/wiki/Joseph_Weizenbaum'&gt;en&lt;/a&gt;, &lt;a href='http://de.wikipedia.org/wiki/Joseph_Weizenbaum'&gt;de&lt;/a&gt;,
              &lt;a href='http://www.heise.de/newsticker/meldung/104672'&gt;the news in german&lt;/a&gt;).
           &lt;/p&gt;
           &lt;p&gt;
             He worked and taught for over 30 years at MIT but he always kept a healthy and quite entertaining critical 
             distance towards computer and technology. He constantly reflected about our usage of information technology.
             And more than once he came to the conclusion: Don't use it this way! 
           &lt;/p&gt;
           &lt;p&gt;
             He grew up in Berlin where he also lived for the last decade or so. When he was still a child his family luckily escaped Nazi 
             Germany. Weizenbaum returned to the Nikolaiviertel neighborhood after his wife's death.
           &lt;/p&gt;
           &lt;p&gt;
              His great book &lt;a href='http://en.wikipedia.org/wiki/Computer_Power_and_Human_Reason'&gt;'Computer Power and Human Reason'&lt;/a&gt; 
              had a major influence on me. Still highly recommended! His last article 
              (&lt;a href='http://www.sueddeutsche.de/wissen/artikel/664/151286/'&gt;german original&lt;/a&gt;), 
              published on the day of his 85th birthday in german newspaper Sueddeutsche Zeitung is still laying on my desk beside the 
              laptop. It is about the perception and interpretation of all the information which is accessible to us these times.
              The article's subtitle (printed version only) translates to: "Earth could be paradise, if only we were able to truely understand it."  
           &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_entry_joseph_weizenbaum.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>Joseph Weizenbaum</category>
    <category>cognitive science</category>
    <category>rationality</category>
  </item>
  <item>
    <title>Hackathon on ICE</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_entry_hackathon_on_ice.html</link>
    <pubDate>Tue, 4 Mar 2008 23:31:00 +0100</pubDate>
    <description>&lt;p&gt;
              What is the most comfortable way to get from Frankfurt to ApacheCon EU in Amsterdam? 
              The plane takes you there in one hour but the whole trip takes you around 3 hours from city center to city center.
              It involves riding local trains, walking around at the airports, carrying luggage, 
              and generally a lot of annoying queuing and waiting. The net time left for doing something productive, which 
              of course can only be coding, what else, is reduced to 20 minutes or so. What a waste of time!
           &lt;/p&gt;
           &lt;p&gt;
              So when I will head for &lt;a href="http://www.eu.apachecon.com/eu2008/" &gt;ApacheCon EU&lt;/a&gt; in a few weeks, I will board an &lt;a href='http://en.wikipedia.org/wiki/InterCityExpress'&gt;ICE&lt;/a&gt; 
              train at Frankfurt Central, plug in my 
              laptop into the power plug (there is one for every two seats), put on my headphones and start coding away.
              Exactly four hours and hopefully many unit tests and bug fixes later my private Hackathon ends at Amsterdam Centraal
              and I am warmed up for the real ASF Hackathon.
           &lt;/p&gt;
           &lt;p&gt;
              The two to four hour distance is perfect for taking the train. It's comfortable, easily accessible, secure, flexible and fast.
              And the train is perfect for coding. The majority
              of development for &lt;a href="http://svn.apache.org/repos/asf/labs/vysper/" &gt;Apache Vysper&lt;/a&gt; was done on ICE trains, 
              same for the Spring adoption of &lt;a href="http://james.apache.org" &gt;Apache James&lt;/a&gt;.
           &lt;/p&gt;
           &lt;p&gt;
              By the way. If you can spare two extra hours and want some really nice views on your way between Frankfurt and Amsterdam, then go
              at 120 km/h, instead of 300, and take the 'old' route through the middle rhine valley with its picturesque villages, old castles, vineyards and 
              mysterious &lt;a href='http://en.wikipedia.org/wiki/Loreley'&gt;Loreley&lt;/a&gt;. On this route you have to change trains at &lt;a href="http://en.wikipedia.org/wiki/Cologne"&gt;Cologne&lt;/a&gt;. Then 
              you either face some unit tests and bugs or dream of &lt;a href="http://en.wikipedia.org/wiki/Rhine_Maidens" &gt;maidens&lt;/a&gt; for the rest of the trip.
           &lt;/p&gt;
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_entry_hackathon_on_ice.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>ASF</category>
    <category>Apache Labs</category>
    <category>Vysper</category>
    <category>travelling</category>
    <category>train</category>
  </item>
  <item>
    <title>The X-S-Foundation</title>
    <author>Bernd Fondermann</author>
    <link>http://www.brainlounge.de/blog_entry_x_s_foundation.html</link>
    <pubDate>Tue, 26 Feb 2008 15:04:00 +0100</pubDate>
    <description>&lt;p&gt;XMPP is a protocol which started out as 'Jabber' and was mainly intended for chat. 
           It's still in heavy use for this purpose today, with its more prominent uses in Google's GTalk and Apple's iChat, but has grown far beyond that.
           &lt;a href='http://jabber.org'&gt;The Jabber community&lt;/a&gt; took the effort and made it an IETF standard (&lt;a href='http://www.ietf.org/rfc/rfc3920.txt'&gt;RFC 3920&lt;/a&gt; and &lt;a href='http://www.ietf.org/rfc/rfc3921.txt'&gt;RFC 3921&lt;/a&gt;).
           What makes XMPP a real workhorse are the &lt;a href='http://www.xmpp.org/extensions'&gt;many extension&lt;/a&gt; to the base protocol which make it an all-purpose
           messaging protocol.&lt;/p&gt;
           &lt;p&gt;All standardization is done by the &lt;a href='http://xmpp.org'&gt;XMPP Standards Foundation (XSF)&lt;/a&gt;. The XSF very much resembles
           the &lt;a href='http://apache.org/foundation'&gt;ASF&lt;/a&gt;. Its members are individuals not companies, membership is granted for those with a proven XMPP track record.
           All business is completely done in the open. Everyone is encouraged to participate on the mailing lists.&lt;/p&gt;
           &lt;p&gt;But there are differences. Anyone can apply for membership. Every member must reapply once a year.&lt;/p&gt;
           &lt;p&gt;So it's a pity there are not so many ASF-licensed XMPP server implementations. That's why I started 
           &lt;a href='http://svn.apache.org/repos/asf/labs/vysper/'&gt;Apache Vysper&lt;/a&gt; over there at &lt;a href='http://labs.apache.org/'&gt;Apache Labs&lt;/a&gt;.&lt;/p&gt; 
        </description>
    <guid isPermaLink='true'>http://www.brainlounge.de/blog_entry_x_s_foundation.html</guid>
    <dc:creator>Bernd Fondermann</dc:creator>
    <category>XMPP</category>
    <category>Open Source</category>
    <category>XSF</category>
    <category>ASF</category>
    <category>Apache Labs</category>
    <category>Vysper</category>
  </item>
</channel>
</rss>