<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El Tramo</title>
	<atom:link href="http://el-tramo.be/feed" rel="self" type="application/rss+xml" />
	<link>http://el-tramo.be</link>
	<description>Remko Tronçon&#039;s Homepage</description>
	<lastBuildDate>Tue, 24 Aug 2010 17:46:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eclipse CPPUnit Error Parser</title>
		<link>http://el-tramo.be/blog/ecppunit</link>
		<comments>http://el-tramo.be/blog/ecppunit#comments</comments>
		<pubDate>Tue, 24 Aug 2010 17:45:55 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[CDT]]></category>
		<category><![CDATA[CppUnit]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Swift]]></category>

		<guid isPermaLink="false">http://el-tramo.be/?p=667</guid>
		<description><![CDATA[I&#8217;ve recently been experimenting with using Eclipse CDT as IDE for Swift development. One of the handy things is that Eclipse CDT has support for parsing compiler error messages, allowing you to quickly navigate to the failing source code line by simply clicking on the error message. Although Eclipse CDT supports all the compilers we [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been experimenting with using <a href="http://eclipse.org/cdt">Eclipse CDT</a> as IDE for <a href="http://swift.im">Swift</a> development. One of the handy things is that Eclipse CDT has support for parsing compiler error messages, allowing you to quickly navigate to the failing source code line by simply clicking on the error message. Although Eclipse CDT supports all the compilers we use for Swift out of the box, I was still missing the easy navigation for fixing failing <a href="http://cppunit.sourceforge.net">CPPUnit</a> tests. Since the error parser (just like almost everything else from Eclipse) is extensible, I wrote a small plugin for parsing CPPUnit error messages.</p>
<p><span id="more-667"></span></p>
<p>You can get the plugin by opening Eclipse&#8217;s <em>Install new software</em> menu, adding <code><a href="http://el-tramo.be/eclipse">http://el-tramo.be/eclipse</a></code> as a plugin repository, and selecting the ECPPUnit plugin from the list of available software.</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/ecppunit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swift 1.0-beta6 released</title>
		<link>http://el-tramo.be/blog/swift-1-0beta6</link>
		<comments>http://el-tramo.be/blog/swift-1-0beta6#comments</comments>
		<pubDate>Mon, 23 Aug 2010 19:54:58 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Swift]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://el-tramo.be/?p=669</guid>
		<description><![CDATA[It&#8217;s been a while since we released the previous Swift beta. As a result, the sixth beta is quite packed with bugfixes, speedups, and general improvements. The list of changes is too long to describe here, so head on over to http://swift.im/releases/swift-1.0beta6/ for details and downloads of the last Swift beta, and let us know [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since we released the previous Swift beta. As a result, the sixth beta is quite packed with bugfixes, speedups, and general improvements. The list of changes is too long to describe here, so head on over to <a href="http://swift.im/releases/swift-1.0beta6/">http://swift.im/releases/swift-1.0beta6/</a> for details and downloads of the last Swift beta, and let us know what you think in the MUC room – <a href="xmpp:swift@rooms.swift.im?join">swift@rooms.swift.im</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/swift-1-0beta6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swift 1.0beta2 released</title>
		<link>http://el-tramo.be/blog/swift-1_0beta2</link>
		<comments>http://el-tramo.be/blog/swift-1_0beta2#comments</comments>
		<pubDate>Fri, 11 Jun 2010 19:08:15 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Swift]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://el-tramo.be/?p=656</guid>
		<description><![CDATA[It’s only been 2 weeks since we released the first public beta of Swift, and we already got a lot of feedback. Thanks to all of you who joined the MUC and sent us their comments and bugreports!
We decided that, before moving on to implementing the remaining missing features, we would first fix a bunch [...]]]></description>
			<content:encoded><![CDATA[<p>It’s only been 2 weeks since we <a href="http://www.kismith.co.uk/wordpress/index.php/2010/05/28/first-public-swift-beta-released/">released the first public beta of Swift</a>, and we already got a lot of feedback. Thanks to all of you who joined the MUC and sent us their comments and bugreports!</p>
<p>We decided that, before moving on to implementing the remaining missing features, we would first fix a bunch of small-yet-annoying ‘papercut’ bugs, and quickly release a <a href="http://swift.im/releases/swift-1.0beta2">new beta</a>. This way, we hope to make the Swift experience a bit smoother for our valiant testers while we are busy implementing some of the larger changes. So, if you’re running Swift on a frequent basis, or would like to jump into our beta feedback cycle, head on over to the <a href="http://swift.im/releases/swift-1.0beta2">Swift 1.0beta2 page</a>, and download the latest beta (we even have Ubuntu packages now!)</p>
<p>We are aiming to put out new betas on a regular basis, so stay tuned for more Swift goodness!</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/swift-1_0beta2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(Still) Hard at Work</title>
		<link>http://el-tramo.be/blog/swift-gource</link>
		<comments>http://el-tramo.be/blog/swift-gource#comments</comments>
		<pubDate>Fri, 09 Apr 2010 21:26:13 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Swift]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Gource]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://el-tramo.be/?p=625</guid>
		<description><![CDATA[Several people have been asking us about the status of Swift lately. Rest assured, we’ve been hard at work in the past months, despite all the job changes, house movings, and marriages slowing us down sometimes. And we have proof: below is a Gource visualization of the Swift Git repository from the past months (and [...]]]></description>
			<content:encoded><![CDATA[<p>Several people have been asking us about the status of <a href="http://swift.im">Swift</a> lately. Rest assured, we’ve been hard at work in the past months, despite all the job changes, house movings, and marriages slowing us down sometimes. And we have proof: below is a <a href="http://code.google.com/p/gource/">Gource</a> visualization of the Swift Git repository from the past months (and we definitely wouldn’t fake <em>that</em>).  Swift is getting very near to the beta stage, so stay tuned for more updates!</p>
<p><span id="more-625"></span></p>
<p style="text-align: center">
<object width="450" height="280"><param name="movie" value="http://www.youtube.com/v/sLw92fs0B6I&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/sLw92fs0B6I&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="450" height="280"></embed></object>
</p>
<p><em>(Note: For some reason, the video starts out a bit flaky, but it gets better after a few seconds)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/swift-gource/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confessions of a Public Speaker</title>
		<link>http://el-tramo.be/blog/confessions-of-a-public-speaker</link>
		<comments>http://el-tramo.be/blog/confessions-of-a-public-speaker#comments</comments>
		<pubDate>Mon, 21 Dec 2009 10:21:09 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[O'Reilly]]></category>
		<category><![CDATA[Presenting]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://el-tramo.be/?p=574</guid>
		<description><![CDATA[
Although I love the thrill of speaking in public, I unfortunately don’t get to do it as often as I used to (once, maybe twice a year lately). The few times I do speak, though, I’ld like it to be as good as possible. That’s why I was very interested in O’Reilly’s announcement of Scott [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="float: right;" src="http://covers.oreilly.com/images/9780596802004/cat.gif" alt="" width="144" height="221" /></p>
<p>Although I love the thrill of speaking in public, I unfortunately don’t get to do it as often as I used to (once, maybe twice a year lately). The few times I <em>do</em> speak, though, I’ld like it to be as good as possible. That’s why I was very interested in <a href="http://oreilly.com">O’Reilly</a>’s announcement of <a href="http://www.scottberkun.com/">Scott Berkun</a>’s <em><a href="http://oreilly.com/catalog/9780596802004">Confessions of a Public Speaker</a><span style="font-style: normal;">, and</span></em> so I put the book on my shopping list right away. Not having heard of the author before, I was hoping for the best (light, interesting, with a touch of “funny”), but expecting the worst (“I am your presentation <em>God</em>; people sell their own mother to hear my voice<em>;</em> although you are not worthy, I will lower myself to your level and give some insight in why I am so fantastic.”). After receiving the book in the mail, I read it from the first page to the last in merely one day (a new personal record). Needless to say the book exceeded my expectations.</p>
<p><span id="more-574"></span></p>
<p>The book talks about many aspects of public speaking: why are we affraid of talking in public, and how can we avoid this? How is it to earn a living of public speaking? How do you work a tough room? How can you attract people to your talk? How do you keep people from falling asleep? How should you get and interpret feedback? What to do if your talk sucks? What to do when things go wrong? What are the little things pros do? The list just goes on and on.</p>
<p>Not only is this book packed with handy tips and anecdotes, it’s also written in a very light and funny way, making this book both extremely pleasant and interesting to read. A must-read for virtually anyone, especially those who sometimes speak in front of an audience (even small ones)!</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/confessions-of-a-public-speaker/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beautiful (XMPP) Testing</title>
		<link>http://el-tramo.be/blog/beautiful-xmpp-testing</link>
		<comments>http://el-tramo.be/blog/beautiful-xmpp-testing#comments</comments>
		<pubDate>Mon, 02 Nov 2009 14:43:20 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Swift]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Nothing But Nets]]></category>
		<category><![CDATA[O’Reilly]]></category>
		<category><![CDATA[Unit Testing]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://el-tramo.be/?p=540</guid>
		<description><![CDATA[
O’Reilly recently released the book Beautiful Testing, a collection of essays about testing and QA in general. As I mentioned earlier, I wrote an article in that book on (unit) testing XMPP protocols, using Swift as a motivating example. Since the book’s scope may (oddly enough) not always be as interesting for developers in general, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/catalog/9780596159825"><img class="alignright" style="float: right;" src="http://covers.oreilly.com/images/9780596159825/cat.gif" alt="" width="144" height="189" /></a></p>
<p>O’Reilly recently released the book <em><a href="http://oreilly.com/catalog/9780596159825">Beautiful Testing</a></em>, a collection of essays about testing and QA in general. As I <a href="/blog/beautiful-xmpp-testing-intro">mentioned earlier</a>, I wrote an article in that book on (unit) testing XMPP protocols, using <a href="http://swift.im">Swift</a> as a motivating example. Since the book’s scope may (oddly enough) not always be as interesting for developers in general, I released my article under a <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution</a> license (thanks to the good folks from O’Reilly for encouraging us to do this), which you can find <a href="/documents/beautiful-xmpp-testing/index.php">here</a> (or directly from my <a href="/git/beautiful-xmpp-testing/">Git repository</a>). The original excerpt from the book (including the index, list of biographies, and all the fancy artwork) is also <a href="/documents/beautiful-xmpp-testing/BeautifulXMPPTesting-OReilly.pdf">available for download</a> under the same license.</p>
<p>I of course encourage you to buy either the PDF or dead tree version of the book, as all the proceeds of the book go to <a href="http://www.nothingbutnets.net/">charity</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/beautiful-xmpp-testing/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Watch</title>
		<link>http://el-tramo.be/blog/the-watch</link>
		<comments>http://el-tramo.be/blog/the-watch#comments</comments>
		<pubDate>Fri, 04 Sep 2009 18:23:59 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Casio]]></category>
		<category><![CDATA[Jaeger-LeCoultre]]></category>
		<category><![CDATA[Reverso]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Swatch]]></category>
		<category><![CDATA[Switzerland]]></category>
		<category><![CDATA[Watches]]></category>

		<guid isPermaLink="false">/?p=490</guid>
		<description><![CDATA[
When I was a kid, I used to be fascinated by Swiss clocks and watches (actually, mostly anything that was made in Switzerland). However, my attention in watches seems to have faded shortly after I got my very own black &#38; red strapped Swatch: only a few years later, I replaced the Swatch with a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="/files/blog/the-watch.jpg" alt="" width="173" height="173" /></p>
<p>When I was a kid, I used to be fascinated by Swiss clocks and watches (actually, mostly anything that was made in Switzerland). However, my attention in watches seems to have faded shortly after I got my very own black &amp; red strapped Swatch: only a few years later, I replaced the Swatch with a digital Casio with built-in calculator, because it looked flashy and cool. I have to admit that the watches I wore (if any) haven’t really improved much since then. However, since I recently came to be without a timepiece again, I took the opportunity to read up on watches before buying a new one. I ordered the first well-rated book on the subject I could find, which happened to be Gene Stone&#8217;s <em><a href="http://www.amazon.co.uk/Watch-Gene-Stone/dp/0810930935/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1251921623&amp;sr=1-1">The Watch</a></em>. It turns out that this book was one of the most entertaining books I recently read, and I must admit I have become a watch fanatic ever since I read it.</p>
<p><span id="more-490"></span></p>
<p><em>The Watch</em> begins with a history of time, covering all kinds of timekeeping tools, from the pyramids of ancient egypt, up to the cell phones of today. After this brief history, the author motivates his choice of 50 brands that he describes in detail in the remainder of the book. He concludes the introduction with an entertaining comparison of the watch manufacturer scene with an old European court, consisting of a king, a queen, a prime minister, a knight, and so on.</p>
<p>The main part of the book consists of an in-depth description of 50 of the most notable and famous historical watch brands out there, old and new, literally ranging from A (Lange &amp; Söhne) to Z(enith). The book tells the (often very extended) history behind each brand, the multitude of relations between the different watchmakers, and the most famous watches of each brand. These stories are a very interesting read, and serve as an excellent crash course into the world of watches for newcomers like me (whose knowledge of brands is limited to the obvious Rolex, Swatch, and Omega). However, what really puts the cherry on the cake are undoubtedly the 500 gorgeous high-quality pictures of watches and their movements, depicted in extremely high detail. On any given day, I find it fascinating to pick up the book, flip through the pages, and enjoy just looking at these photos for a while.</p>
<p>After the theory behind the watches and their history, the last part of the book focuses on the actual owning, exploring, and collecting of watches. Besides a handful of tips from the author, this part comes with several testimonies from different people, talking about how they got interested in watches, why they are so fascinated about them, and which one is their ultimate favorite. On top of this, the author created a few top 10s of watches, including “models that everybody should know”, “models that are fun to look at”, “models that look good”, and “brands to look out for”. Again, very valuable information for the uninitated like me.</p>
<p>You can feel that the author has a passion for watches, knows what he’s talking about, and put a lot of love into this book to share his passion and knowledge with the rest of the world. All this makes <em>The Watch</em> both a fascinating and entertaining to read, or, if you don’t feel like reading, a nice way to feast your eyes on pretty shiny pictures.</p>
<p>If, like me, you&#8217;re interested in reading even more about watches after finishing <em>The Watch</em>, I can recommend <a href="http://www.amazon.co.uk/Cult-Watches-Worlds-Enduring-Classics/dp/1858943876"><em>Cult Watches: The World&#8217;s Enduring Classics</em></a> by Michael Balfour. Where <em>The Watch</em> discusses the history of many brands and a variety of their collections, <em>Cult Watches</em> picks out 30 specific “cult” watches (including my favorite, <a href="http://jaeger-lecoultre.com">Jaeger-LeCoultre</a>’s <a href="http://www.jaeger-lecoultre.com/eu/en/watches/reverso-classique/grande-reverso-976">Reverso</a>), and tells the detailed story behind each watch and its manufacturer, also accompanied by a lot (though not nearly as many) of high-quality photographs of the insides and outsides of these timepieces. And although most of the watches in this book are mentioned in <em>The Watch</em> as well, some brands that are only mentioned briefly in that book (such as Longines) are mentioned in more detail in <em>Cult Watches</em>. All this makes <em>Cult Watches</em> a nice addition to Gene Stone’s broad reference book.</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/the-watch/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>“XMPP: The Definitive Guide” Code Examples</title>
		<link>http://el-tramo.be/blog/xmpp-tdg-code</link>
		<comments>http://el-tramo.be/blog/xmpp-tdg-code#comments</comments>
		<pubDate>Mon, 13 Jul 2009 17:06:01 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SleekXMPP]]></category>
		<category><![CDATA[XMPP]]></category>
		<category><![CDATA[XMPP-TDG]]></category>

		<guid isPermaLink="false">/?p=473</guid>
		<description><![CDATA[Although the primary focus of XMPP: The Definitive Guide is explaning the XMPP protocol and all its extensions through text and illustrations, we also included a few Python code examples to help people get started with implementing their own ideas. In fact, we devoted a whole chapter to building an XMPP application, starting out with [...]]]></description>
			<content:encoded><![CDATA[<p>Although the primary focus of <a href="http://oreilly.com/catalog/9780596521264/"><em>XMPP: The Definitive Guide</em></a> is explaning the XMPP protocol and all its extensions through text and illustrations, we also included a few Python code examples to help people get started with implementing their own ideas. In fact, we devoted a whole chapter to building an XMPP application, starting out with a simple bot implementation, but gradually extending the application into a full server component. For people who want to try this out for themselves, we’re releasing the <a href="/git/xmpp-tdg/snapshot/xmpp-tdg-master.zip">source code of all code examples</a>, including a <a href="/git/xmpp-tdg/tree/code/EchoBot">simple echo bot</a>, and different variants of the <a href="/git/xmpp-tdg/tree/code/CheshiR">CheshiR microblogging platform XMPP interface</a>.</p>
<p><span id="more-473"></span></p>
<p>All examples are built using the lightweight <a href="http://code.google.com/p/sleekxmpp/">SleekXMPP</a> Python XMPP library. In fact, SleekXMPP is so lightweight that we included a version in the source bundle, making it even easier to get started implementing your own bots and components.</p>
<p>Do bear in mind that these examples only serve illustrative purposes for the book, so don’t expect very robust code. Although making this code fail-safe is not really our primary goal (since that would involve a lot of code that would only distract the reader), we <em>do</em> welcome bug reports or fixes.</p>
<p>The code examples are available as a <a href="/git/xmpp-tdg/snapshot/xmpp-tdg-master.zip">source package</a>, or directly from the <a href="/git/xmpp-tdg">Git repository</a> (mirrored on <a href="http://github.com/remko/xmpp-tdg">GitHub</a>). We will soon put a link to the package on <a href="http://oreilly.com/catalog/9780596521264/">the book’s webpage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/xmpp-tdg-code/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating from Openfire to Prosody</title>
		<link>http://el-tramo.be/blog/openfire-to-prosody-migration</link>
		<comments>http://el-tramo.be/blog/openfire-to-prosody-migration#comments</comments>
		<pubDate>Fri, 03 Jul 2009 07:07:19 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Openfire]]></category>
		<category><![CDATA[Prosody]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">/?p=426</guid>
		<description><![CDATA[Because Openfire has been hogging too much of my limited el-tramo.be server resources lately, and because I don’t need a beast of an XMPP server for only 2 users, I decided to replace it by the lightweight Prosody. The migration went flawless, with the help of two tools: Sleek Migrate, and a Prosody XEP-0227 Importer.

First [...]]]></description>
			<content:encoded><![CDATA[<p>Because <a href="http://www.igniterealtime.org/projects/openfire/index.jsp">Openfire</a> has been hogging too much of my limited <a href="http://el-tramo.be">el-tramo.be</a> server resources lately, and because I don’t need a beast of an XMPP server for only 2 users, I decided to replace it by the lightweight <a href="http://prosody.im/">Prosody</a>. The migration went flawless, with the help of two tools: <a href="http://www.kismith.co.uk/wordpress/index.php/2008/11/30/sleek-migrate/">Sleek Migrate</a>, and a <a href="/git/xep227-to-prosody">Prosody XEP-0227 Importer</a>.</p>
<p><span id="more-426"></span></p>
<p>First of all, I used Sleek Migrate to retrieve the roster (and other) data from the server, and store it in the standard <a href="http://xmpp.org/extensions/xep-0227.html">XEP-0227</a> format. I extended the tool a bit such that it supports Openfire’s User Import/Export format, a format generated by an <a href="http://www.igniterealtime.org/projects/openfire/plugins/userimportexport/readme.html">Openfire plugin</a> that is distributed with the server software by default. Using this format as input for Sleek Migrate avoids the need to create a user file manually. The changes I made to Sleek Migrate are currently available from <a href="/git/sleekmigrate">my Git repository</a>, awaiting to be pushed to the main repository.</p>
<p>I then wrote a short script that populates the Prosody data dir with the server data from the XEP-0227 XML file. Currently, the script only generates roster and account data, but adding <a href="http://xmpp.org/extensions/xep-0054.html">vCard</a> and <a href="http://xmpp.org/extensions/xep-0049.html">Private XML Storage</a> (used amongst others to store <a href="http://xmpp.org/extensions/attic/xep-0048-1.0.html">MUC bookmarks</a>) should not be very hard. Until Prosody creates a native XEP-0227 importer, you can get the script from <a href="/git/xep227-to-prosody">my Git repository</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/openfire-to-prosody-migration/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Integrating DocBook with WordPress</title>
		<link>http://el-tramo.be/blog/integrating-docbook-with-wordpress</link>
		<comments>http://el-tramo.be/blog/integrating-docbook-with-wordpress#comments</comments>
		<pubDate>Sat, 27 Jun 2009 18:28:36 +0000</pubDate>
		<dc:creator>Remko Tronçon</dc:creator>
				<category><![CDATA[Writing]]></category>
		<category><![CDATA[DocBook]]></category>
		<category><![CDATA[DocBook Kit]]></category>
		<category><![CDATA[DocBook XSL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://el-tramo.be/?p=409</guid>
		<description><![CDATA[I added a DocBook XSL customization layer to my DocBook Kit that outputs an HTML/PHP version of the document that automatically integrates with a WordPress blog. The stylesheet also (optionally) adds a link to the downloadable PDF of the document. An example document integrating with this blog can be seen here.
The custom stylesheet is based [...]]]></description>
			<content:encoded><![CDATA[<p>I added a DocBook XSL <a href="/git/docbook-kit/tree/style/wordpress">customization layer</a> to my <a href="/blog/docbook-kit">DocBook Kit</a> that outputs an HTML/PHP version of the document that automatically integrates with a WordPress blog. The stylesheet also (optionally) adds a link to the downloadable PDF of the document. An example document integrating with this blog can be seen <a href="/documents/example/index.php">here</a>.</p>
<p><span id="more-409"></span>The custom stylesheet is based on the standard DocBook XSL XHTML stylesheet. However, instead of inserting an HTML header, it inserts PHP calls to include the WordPress headers and footers. The only tricky part of this is to tell WordPress what the title of the resulting page should be. I hacked this in by creating a class with the bare minimum fields required by <code>wp_title() </code>(which is used by WordPress to print the title of the document). The resulting template looks like this:</p>
<blockquote>
<pre>&lt;?php
  require('../wordpress/wp-blog-header.php');
  class MyPost { var $post_title = "My Title"; }
  $wp_query-&gt;is_home = false;
  $wp_query-&gt;is_single = true;
  $wp_query-&gt;queried_object = new MyPost();
  get_header();
?&gt;
&lt;div id="content" class="narrowcolumn" role="main"&gt;
  ...
&lt;/div&gt;
&lt;?php
  get_sidebar();
  get_footer();
?&gt;</pre>
</blockquote>
<p>The DocBook kit is available from my <a href="/git/docbook-kit">Git repository</a> (or on <a href="http://github.com/remko/docbook-kit">GitHub</a>, or as a <a href="/git/docbook-kit/snapshot/docbook-kit-master.zip">ZIP</a> file). More information about the kit can be found <a href="/blog/docbook-kit">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://el-tramo.be/blog/integrating-docbook-with-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.369 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-09-02 22:43:55 -->
