<?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>MrBlog</title>
	<atom:link href="http://mrblog.nl/feed" rel="self" type="application/rss+xml" />
	<link>http://mrblog.nl</link>
	<description>eliminating my ignorance one bit at a time</description>
	<lastBuildDate>Thu, 12 Jan 2012 09:54:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19814</generator>
	<atom:link rel='hub' href='http://mrblog.nl/?pushpress=hub'/>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/><atom:link rel='salmon' href='http://mrblog.nl/?salmon=endpoint'/><atom:link rel='http://salmon-protocol.org/ns/salmon-replies' href='http://mrblog.nl/?salmon=endpoint'/><atom:link rel='http://salmon-protocol.org/ns/salmon-mention' href='http://mrblog.nl/?salmon=endpoint'/>		<item>
		<title>Bitcoin, lure or cure?</title>
		<link>http://mrblog.nl/2011/06/03/bitcoin-lure-or-cure.html</link>
		<comments>http://mrblog.nl/2011/06/03/bitcoin-lure-or-cure.html#comments</comments>
		<pubDate>Fri, 03 Jun 2011 09:40:00 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>
		<category><![CDATA[bitcoin]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[foss]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=1139</guid>
		<description><![CDATA[Many people got attracted to bitcoin the last couple of months. This explosion of interest probably caused the monetary value of bitcoins to show the same shape as the google trend-line chart pictured below. In this article I will ignore the exponential increase in monetary value since its inception and focus on some intrinsic properties [...]]]></description>
			<content:encoded><![CDATA[<p><p>Many people got attracted to bitcoin the last couple of months. This explosion of interest probably caused the monetary value of bitcoins to show the same shape as the google trend-line chart pictured below. </p> <p> In this article I will ignore the exponential increase in monetary value since its inception and focus on some intrinsic properties of bitcoin and why those are valuable as such.  </p> <p> The sudden interest in bitcoin is not coincidental in my opinion. The bitcoin <i>ecosystem</i> tries to solve a number of problems with the current systems of trade, currencies and the economical structures in general we have in place for them, like our national banks, the currency and stock exchanges and the IMF. The last couple of years we have been confronted, sometimes in very painful ways, with the shortcomings of those systems and, not in the last place, the shortcomings of the people involved; all of us. </p> <p> <img src="http://mrblog.nl/files/2011/06/wpid-btc-trend.png" style="width: 400px; margin: 15px; float:left;" alt="Google search trend" title="Google search trend" /> </p>  <p> The financial crisis is obviously a complex issue and no single cause can be determined. Whatever these causes are however, they have provided a trigger for many to look for alternatives to create wealth or, more important, create ways to hang on to wealth, especially if there is not a lot of it to hang on to.  </p> <p> For the rest of this article I&#8217;m going to assume you know how bitcoins work. You will not have to be an expert in economics, cryptography or computer programming, but a basic understanding of the workings of bitcoin will be necessary. The websites <a href="http://bitcoin.org">http://bitcoin.org</a> en <a href="http://weusecoins.com">http://weusecoins.com</a> are good starting points.  Some of the points below won&#8217;t make sense if you do not have at least a rudimentary understanding of how the system operates. </p>  <div id="outline-container-1" class="outline-3"> <h3 id="sec-1">The trust issue</h3> <div class="outline-text-3" id="text-1">  <p>  Most people will worry (a lot) if they have money issues. This alone   dictates that you absolutely want to trust all parties involved with   handling your money. </p> <p>   These parties include the people you receive money from, like your   employer, the local banks you trust to keep your money safe for you,   the government which monitors the usage of it, but also the &#8216;coins&#8217;  that represent the money. All of these need your continued trust,   and that is a lot to ask. Especially if things do go wrong at times. </p> <p>   Employers need your trust that they possess enough of the &#8216;stuff&#8217;to   be able pay you for work, local banks need your trust so you let   them keep your savings, governments and central banks need your trust   that they won&#8217;t screw up (by printing too much money for example)   and the coins also need your trust that they are the real deal. All   of the examples in some way betrayed our trust in the past. That has   an effect on people. It may not be visible for a while, but broken   trust <i>sticks</i>. </p> <p> <img src="http://mrblog.nl/files/2011/06/wpid-trust.jpg" style="float:right; width: 300px;" alt="Broken trust" title="Broken trust?" /> </p>  <p>   Bitcoin tries to address some of the trust issues people have; I   think it was one of the main motivations for creating a system like   bitcoin. It does this, amongst other things, by shifting a few of   the trust items from people/institutions to verifiable technology. </p> <p>   For example, instead of trusting a bank to verify transactions to be   valid, because they are the only party who can oversee all   transactions, trust is placed in hashing techniques to demonstrate   that, for example, double spending is very, very unlikely. These   techniques are easier verified and proven to be right than the bank   which is now responsible for it, if only because we don&#8217;t have   access to these verifications. The major goal of both verifications   is to prevent the same coin to be spent multiple times. (fraud) </p> <p>   Another trust shift is the &#8216;keep-save&#8217;mechanism. If you keep your   savings on your savings-account at your bank, the combination of the   banks trustworthiness and, should that fail, the (limited) guarantee   the government gives on your savings makes that you can feel   comfortable on parking your money there. With bitcoin, your trust   will be in cryptographic tools and <i>the network</i> so you keep all your   savings in a computer file. The mechanism you could use to keep it   safe is to encrypt that file and spread it all over the network to   many places to minimise the chances of losing all copies of   it. There is no-one to trust but yourself, but there&#8217;s also no-one   which can protect you in case you screw up yourself. </p> </div>  </div>  <div id="outline-container-2" class="outline-3"> <h3 id="sec-2">Distance is not important, value is</h3> <div class="outline-text-3" id="text-2">  <p>   Another property of the bitcoin system, not unique to it but    especially well implemented I think, is the way it makes the    distance to receivers irrelevant and allows value to be put to use    effectively. I&#8217;ll give an example below. </p> <p>    Say I want to transfer 2 euros to someone which is in a country far    away from mine. The amount of time and money it takes to get this    modest amount into the hands of that someone distant is ridiculous    in the current financial system. My bank does provide a service    but it will cost me at least 10 euros, double that amount if I want    to get it done &#8216;fast&#8217;. Fast, in this case meaning within 24 hours!    For larger sums, the cost may be acceptable, but for small amounts    both time and cost are ridiculous. </p> <p>    There are many services which try to solve at least part of the    problem outlined above. Services like paypal with on-line accounts    to make things go faster, or proxy companies which gather up all the    small amounts and transfer to the real supplier when things have    piled up. Up until bitcoin I did not encounter a service which chose    the simplest concept for this problem: &#8220;Set up a secure, verifiable,    immediate non-refundable transaction between the involved parties.&#8221; </p> <p>    I do not believe the technology to do this has not been available to    banks and/or credit card companies, so that can&#8217;t be the reason    they have not implemented a cheaper and more efficient system. It&#8217;s not    very hard to imagine what their reason is though. Distance used to    be a major hurdle, it is not anymore. </p> <p>    The key differences bitcoin provides here are: </p><ul> <li>the receiver and sender communicate directly, trust is a lot      easier to maintain if there are less parties involved. &#8220;No middle      man needed, nor wanted&#8221; </li> <li>the &#8216;act&#8217;of payment is almost immediate, the receiver can check      almost immediately that a transaction has been made. (Verification      for validity by the network can take a while though) In relation      to the 24 hours described in the first paragraph this can      certainly be considered very fast, near <i>real-time</i> </li> <li>a transaction fee is optional. If you specify one, you make it      more attractive for others in the network to check your      transaction and have a go at collecting that fee. If swift      transaction handling is not important, but transferring, say 0.05 euro,      to a certain person <b>is</b> important, bitcoin is about the only way I      know to do that effectively.  </li> </ul>  <p>   Remember, the amount of 0.05 euro may not be much to you and me, but    there are parts in the world where it can buy you a meal or a bottle    of water. The fact alone that bitcoin makes these kinds of    transactions possible is enough reason to give it more than a casual    look. </p> <p>    Bitcoin increases the value of my € 0.05 by allowing effective use. </p> </div>  </div>  <div id="outline-container-3" class="outline-3"> <h3 id="sec-3">No unreasonable control</h3> <div class="outline-text-3" id="text-3">  <p>   It&#8217;s probably true that bitcoin, or systems like it, scares    financial companies and governments and therefore will have a rough    time ahead. This scare is in part caused by a fear of decreasing    control over the system compared to the <i>classic</i> system. Almost all    economic commentators or government representatives will argue that    &#8216;some form of control&#8217;is needed to correct and stabilise the    system. I&#8217;m not very convinced of that being effective or wanted    anymore. </p> <p>    Recently, the unreasonable control over money flow in the wikileaks    dry-out attempt confirmed this once again for me. It doesn&#8217;t really    matter if companies like mastercard and paypal decide not to handle    transactions for wikileaks themselves or that they have been put    under pressure to do so. The fact that it happens shows they have    control over where I spent my money. I don&#8217;t want that. Bitcoin    offers a system where this type of control is impossible by means of    the system itself; personal threats will be effective I&#8217;m afraid    with any system. </p> <p>    Next to the self-control over spending purposes, anonymity is also    important for some people. The example often used, mostly in    critical pieces on bitcoin, are criminals. Bitcoin makes it    possible, when used in certain ways, to bring money from A to B    without exposing identities to each-other and to third parties. This    is obviously attractive for criminals, including people who want to    evade taxes.  This is a valid concern and should be addressed    properly, but I don&#8217;t think it has anything to do with bitcoin as    such. With regard to <b>this</b> aspect, bitcoin has no other properties    than cash, it&#8217;s just more effective and easier to use than    exchanging bits of paper money. The real use-case here is the    non-criminal people who want to perform semi-anonymous transactions    for valid reasons.  </p> </div>  </div>  <div id="outline-container-4" class="outline-3"> <h3 id="sec-4">So, what&#8217;s the verdict?</h3> <div class="outline-text-3" id="text-4">  <p>  Bitcoin is a good idea, generally speaking. From a technological   viewpoint it&#8217;s excellent. It&#8217;s trivial that libertarians and   anarchists will be attracted by bitcoins, we don&#8217;t need to argue the   case for them. The challenge is to present the extra-, not the   replacement-, values of bitcoin for all the other people out there.   I have touched on three of the most important ones to me. There are more   properties which make it very attractive as an alternate choice for   exchanging value. </p> <p>   Many &#8216;digital cash&#8217;systems have been presented before bitcoin, but   for all of them I could point out critical weaknesses within a very   short time. For many of them this was not even a technical weakness,   but an organisational (like a paranoid initiator, looking for   patent protection) or an economical issue (creating a metal backed   currency in the hands of a private company). With bitcoin there are   certainly weaknesses in the system, but I have not been able to find   a critical one upfront. </p> <p> <img src="http://mrblog.nl/files/2011/06/wpid-verdict.jpg" style="width: 320px; margin: 15px; float:left;" alt="Verdict form" title="Verdict form" /> </p>  <p>   The goal of bitcoin is not necessarily to take over existing   currencies or existing financial systems, although I would love to   see that play out. I would like it to augment the current systems   with new ways to trade, more effective ways to put wealth to use,   more transparent ways to work together. It needs to put banks and   governments on the edge of their seats and keep them a lot more   aware of their obligation to reasonably deal with their control over   over money.  </p> <p>   Having a transparent, technologically sound system for exchanging   value is in the interest of many. I&#8217;m sure bitcoin has many things   that can be improved. Its its complexity of use and the rather   clumsy exposure of meaningless addresses come to mind, but the foundation is   solid and the issues I found are by no means critical or   unsolvable. The fact that bitcoin, the program, is open source does   help to understand and validate the system and thus gain my   trust. This contrasts on many levels with the services offered to me   through financial companies. </p> <p>   When was the last time you validated your bank&#8217;s software? </p> </div> </div> </p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2011/06/03/bitcoin-lure-or-cure.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using StatusNet to simplify some social network problems</title>
		<link>http://mrblog.nl/2011/02/23/using-statusnet-to-simplify-some-social-network-problems.html</link>
		<comments>http://mrblog.nl/2011/02/23/using-statusnet-to-simplify-some-social-network-problems.html#comments</comments>
		<pubDate>Wed, 23 Feb 2011 15:40:00 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>
		<category><![CDATA[statusnet]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=1112</guid>
		<description><![CDATA[I&#8217;m probably not the typical user of social networks. I join them not for social reasons, i.e. interact with friends, but because i&#8217;m interested in the phenomena and the techniques involved. Many of my status updates are about those techniques itself and probably not very interesting reading material for my friends, i.e. the ones I [...]]]></description>
			<content:encoded><![CDATA[<p><p>I&#8217;m probably not the typical user of social networks. I join them not for social reasons, i.e. interact with <i>friends</i>, but because i&#8217;m interested in the phenomena and the techniques involved. Many of <a href="http://o.mrblog.nl/mrb">my status updates</a> are about those techniques itself and probably not very interesting reading material for my friends, i.e. the ones I normally interact with socially. I bet most of them just ignore my updates. I have at times considered splitting my (online) personality into &#8216;<i>ich geek</i>&#8216; and &#8216;<i>ich normal</i>&#8216; (cfr. Schachnovelle, Stefan Zweig) and have the people I know follow the one or the other, but to date I haven&#8217;t found a good way to deal with that. </p>  <div id="outline-container-1" class="outline-3"> <h3 id="sec-1">Register at them all?</h3> <div class="outline-text-3" id="text-1">  <p>Let&#8217;s assume for the moment that I <b>am</b> interested in following my friends through social networks. Scribbling down a list of social networks I would have to join to be able to follow them: </p> <ol> <li><a href="http://twitter.com">Twitter</a> : most people I know are on there, but many are also on    there just because others are on there and not because it is <b>their</b>    primary network; </li> <li><a href="http://hyves.nl">Hyves</a> : Big in the Netherlands only, but used by many of the    people I know as their primary network; </li> <li><a href="http://facebook.com">Facebook</a> : mostly my international contacts use Facebook, but    increasingly more dutch users are switching from hyves to facebook; </li> <li><a href="http://identi.ca">Identi.ca</a> : the largest instance of the <a href="http://status.net">StatusNet</a>    software. Here&#8217;s where most of my geek contacts are.  </li></ol></div> Those four basically cover the usage of social networks by my friends. So, if I want to follow my (actual real life) friends I need to register myself on at least four networks. The actual act of registering isn&#8217;t the problem, that&#8217;s a one time thing. Checking in on a regular basis, (which is what the social part is all about no?), is the real problem. I don&#8217;t want to spent time checking in at 4 different places. That&#8217;s the first problem.  <p> As a consequence of people using different networks, and therefore hindered in communication, several &#8220;<i>solutions</i>&#8221; have popped up. I quoted solutions because they are not really solutions in my view, but workarounds. All of these solutions involve some kind of mirroring updates on one network on the other, so a different audience has access to them. This can be done by the person himself by literally posting it to different networks (semi-automatically) or having one network <i>watch</i> the other (and vice-versa perhaps) and pull in updates when available. Apart from the fact that these mirror operations are not very reliable, the bigger issue is that there&#8217;s duplication without reference. The status on the one network rarely accepts the one on the other as the original and thus the update is now in fact 2 unrelated updates. Especially in an area of short notices like status updates which are very abundant it&#8217;s a big problem when from the start these messages get polluted and split. </p> <p> The third problem is that almost all of these social networks are owned and operated by single companies making you sign a lengthy user agreement you do not want to read nor fully comprehend if you did. This may not be a big issue for most, but it is a problem for me. It sounds unreasonable that I should surrender to unclear conditions if I am unable to avoid their service, for example by being able to choose my own provider or be one myself. </p> <p> So, impracticality, polution of status and unavoidability present my main 3 problems. </p> </div>    <div id="outline-container-2" class="outline-3"> <h3 id="sec-2">Take control</h3> <div class="outline-text-3" id="text-2">  <p>Despite the fact that there are quite a few initiatives to solve at least part of those problems (StatusNet aims at an open federated microblogging platform for example) these initiatives did not bring me any closer yet. In fact, so far they have moved me further away from a solution, because I had to introduce yet another social network to the list initially.  </p> <p> I think there is no real solution to the problems yet. There are a couple of things I did though to make my life a bit easier. </p> <p> First, I chose my <i>entry point</i> to be an open system. For me this meant building my whole setup around a StatusNet instance, controlled by me and running on my own servers (<a href="http://o.mrblog.nl">http://o.mrblog.nl</a>).  This gives me connectivity and basically flawless federation with all statusnet sites. For both twitter and facebook there are bridges which make bidirectional comminication possible (not completely for facebook yet). Because StatusNet is open source and promotes Open Standards I can adjust my local install to my needs if needed. All the data relevant to my social graph is stored locally. </p> <p> Second, I&#8217;ve set up a bridge to Twitter. The StatusNet bridge is mostly working, it needs a kick in the butt about once a week, but other than that it happily transfers status updates back and forth. One change I made to it was to show the twitter status updates in the public timeline instead of just in the personal timeline. This makes it consistent with what StatusNet itself. </p> <p> Third, the bridge to facebook does not work fully yet and to be able to get status updates to facebook, you have to create an application on Facebook to pull out your status updates. So, my friends can hear me, but I can&#8217;t hear them yet. I&#8217;ve worked around that by using gwibber which can merge (client side obviously) the two timelines into one.  </p> <p> The above brings me a bit in the direction where I want to be, but the effort I&#8217;ve had to put in is way too much for this to be a scaleable solution.  </p> </div>  </div>  <div id="outline-container-3" class="outline-3"> <h3 id="sec-3">What&#8217;s still missing</h3> <div class="outline-text-3" id="text-3">  <p>With my setup there are still quite a few annoyances: </p> <ul> <li>I can not subscribe directly to Twitter or Facebook users, I still   have to visit their sites to click on &#8216;Follow&#8217;; </li> <li>There are minor annoyances in bridging my StatusNet updates (@mrb)   and my Twitter updates (@mrvdb) The bridge does not translate the   two usernames properly into eachother (may be a feature?) </li> <li>The facebook bridge is incomplete. </li> <li>Much better filtering, so I can filter out some notices from users   based on a regular expression of some sort. For example, check-in   notices from people I&#8217;m not that interested in, so a filter would be   nice to at least suppress them in my stream. </li> <li>It takes time to keep the stuff running. </li></ul></div>  </div>    <div id="outline-container-4" class="outline-3"> <h3 id="sec-4">Bonus features</h3> <div class="outline-text-3" id="text-4">  <p>By setting it up like I have I got a couple of bonus features: </p> <ul> <li>StatusNet supports a conversation view natively, <a href="http://o.mrblog.nl/conversation/209001">Here&#8217;s an example</a>   Note that the other person is from Twitter. Try to find this view on   twitter itself, i have not been able to. </li> <li>I can do away with <b>some</b> feeds, because I can subscribe to them   directly using StatusNet (using OStatus). Subscribing to   blogspot.com blogs is an example.  </li></ul></div>  </div>      </p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2011/02/23/using-statusnet-to-simplify-some-social-network-problems.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buying apple hardware just to run linux?</title>
		<link>http://mrblog.nl/2010/10/25/buying-apple-hardware-just-to-run-linux.html</link>
		<comments>http://mrblog.nl/2010/10/25/buying-apple-hardware-just-to-run-linux.html#comments</comments>
		<pubDate>Mon, 25 Oct 2010 19:10:00 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=1077</guid>
		<description><![CDATA[As mentioned in my previous post, I moved back to using Linux as my desktop operating system, coming from OSX. I have a couple of notes on the why and some observations about it which may be of interest. My main machine has been a macbook pro 17 inch (or powerbook when they still had [...]]]></description>
			<content:encoded><![CDATA[<p><p>As mentioned in my previous post, I moved back to using Linux as my desktop operating system, coming from OSX. I have a couple of notes on the why and some observations about it which may be of interest. </p> <p> My main machine has been a macbook pro 17 inch (or powerbook when they still had a ppc in them) for a couple of years now and I was pretty much a happy camper using OSX. OSX has represented an ideal mix for my long unix based experience and the need for screen candy and proper support of drivers which make usage of the hardware flawless. </p> <p> In short, my hardware broke down. That is, it broke down a bit. Every once in a while I&#8217;d get coloured stripes on my screen or a yellowish glow or fonts of which the letter &#8216;m&#8217;would not display correctly (go figure). Annoying, but fixable with a reboot and I could live with that, at least for a short period of time. When the machine started rebooting spontaneously and I started losing work because of it, replacement seemed the only option left. </p> <p> As the problem was intermittent and seemed a bit related to how hard I was hitting the cpu with my compiler whip, I decided, before scrapping the machine, to install ubuntu linux on it, just to see how it would deal with the same hardware error and to have a look at the new ubuntu (at that time Lucid) release. </p> <p> The hardware problem was still present under Linux, but I was able to control it. A major help was to be able to control the fanspeed and thus the temperature of the machine. This was something that I never succeeded in doing under OSX. Perhaps I didn&#8217;t look hard enough, or was not experienced enough in OSX details or whatever. Fact remains, I got to control the fans in Linux within the hour and with that a large portion of the problem.  </p> <p> By carefully configuring display settings and upgrading to newer customized kernels I am now in the situation that my machine is basically back to a state where &#8220;<i>scrapping it</i>&#8221; sounds ridiculous and it&#8217;s good to go for a while.  </p> <p> The above process took about 3 to 4 weeks. After that I realized that the level of control I had over my machine felt really good.  </p> <p> Having worked on a daily basis under Linux a notable observation was that I didn&#8217;t really miss anything from OSX, apart from a dedicated blogging application (MarsEdit) and possibly iTunes. Apart from those, most of the applications I used a lot are also available on Linux. Emacs and <a href='http://claws-mail.org' rel='external ' title='Claws email client'>Claws</a> mail actually run a lot better on Linux than they do on OSX. I do have a solution for the blogging (<a href='http://github.com/punchagan/org2blog' rel='external ' title='org2blog '>org2blog</a> with emacs), but replacing iTunes is still a problem; </p> <p> So, now I have apple hardware all over and not using OSX on any of it. At first, that does not sound like a smart thing to do.  From a financial point of view for one, most people argue that apple hardware may be expensive, but a lot of quality software comes included. Throwing the sofware away, which is effectively what you do when you go running linux on that hardware, does not make much sense then, does it? </p> <p> What I found however, is that it is quite a challenge to match the macbook pro specs, build quality and features like the magsafe connector for the same price. Add to that an ability to drive the 30&#8243; screen and it&#8217;s pretty darn difficult to find a machine other than the macbook pro series from apple. (I was charmed by the Sony Vaio Z series, but it can&#8217;t drive the 30&#8243;-screen and it&#8217;s a bit more expensive than an MBP too) Viewed from this (admittedly biased) angle it makes sense, even if you don&#8217;t plan on running OSX to buy a macbook pro again. </p> <p> On top of all what is above, there is another issue which has been bothering me, and apparently I&#8217;m not alone in this, is the general direction Apple is taking. While I love their attention to detail and precise execution of production of their hardware, I loathe the way they treat (iPhone) developers and their strategy of control and censorship. The latest preview of OSX Lion only confirmed my concerns. Notably the appstore developments and the limitation of freedom to run sofware is bothering me. I guess the balance was held in some way with their sort-of-open contributions to several pieces of sofware (darwin, calendarserver, launchd etc.) but lately the scale tipped over for me.  </p> <p> I fully realize this is all subjective and food for rants and all, but hey, it&#8217;s my blog. :-)  </p> </p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2010/10/25/buying-apple-hardware-just-to-run-linux.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using org2blog</title>
		<link>http://mrblog.nl/2010/10/11/using-org2blog.html</link>
		<comments>http://mrblog.nl/2010/10/11/using-org2blog.html#comments</comments>
		<pubDate>Mon, 11 Oct 2010 13:03:00 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[org-mode]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=999</guid>
		<description><![CDATA[The excerpt of the blog post goes here. This particular blog-post is a meta-post about org2lbog]]></description>
			<content:encoded><![CDATA[<p><p>Since moving from OSX to Linux, for reasons I will elaborate on in another post, the only real thing which I missed was the MarsEdit blogging application. The immediate effect is that both this blog and my cobra blog have not seen any posts since the switch. </p> <p> Initially I did make an effort to create a VirtualBox image for MacOSX so I could potentially run OSX applications in my Ubuntu install, but Apple made a pretty good effort to prevent me from running a virtualized OSX, even if you have ticked all their boxes (read: spent enough money on both their hardware and software). So, for the moment, no OSX applications on my main machine anymore. </p> <p> The next step was to decide on a new blogging solution, or perhaps publishing solution, as a replacement for MarsEdit. My requirements were as follows: </p><ul> <li> emacs based solution, preferably integrated with <a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a>; </li> <li> based on an api that wordpress supports; </li> <li> reasonably active project and responsive.  </li> </ul>  <p>Finding a solution that satisfies all 3 of the above requirements basically left me with <a href='http://github.com/punchagan/org2blog' rel='external ' title='org2blog '>org2blog</a>. I did look at a couple of other solutions but none of them met all 3 requirements, amazingly. </p> <p> The use of <a href='http://github.com/punchagan/org2blog' rel='external ' title='org2blog '>org2blog</a> is pretty simple, especially if you are already using orgmode to publish documents. The gist of it is to start an outline header and start writing the blog-post. Alternatively the command <code>M-x <a href='http://github.com/punchagan/org2blog' rel='external ' title='org2blog '>org2blog</a>-new-entry</code> can be used to start a blog-entry in a new buffer (presumably to be saved to a file later on). Once finished writing a <code>C-c d</code> keyboard shortcut publishes a buffer as a draft, where <code>C-c p</code> publishes the buffer as a finalized post. (Posting as a page in wordpress is also possible). </p> <p> I&#8217;m using the <i>post-per-buffer variety</i> for this post, so I can attach the source for this posting at the end more easily. I also found that working in a <i>one-posting-per-file</i> matter is easier. (For starters, the <a href='http://github.com/punchagan/org2blog' rel='external ' title='org2blog '>org2blog</a> key shortcuts work properly). </p> <p> The concept of <a href='http://github.com/punchagan/org2blog' rel='external ' title='org2blog '>org2blog</a> is rather simple. It piggybacks on the excellent export options already present in <a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a> and exports the relevant piece of text to html, takes that output and uses the wordpress xml-rpc api to publish it.  </p> <p> This post contains a small set of examples which should be enough to fullfill the vast majority of my blogging-needs. I need a way to chop up text into paragraphs, marking some of my words with some inline markup and I need a way to insert images in a variety of ways. Additionally I want to be able to attach/link to files, preferably automatically attached to the blog-posting. </p> <p> So, let&#8217;s have a look at the basic ingredients. </p>  <div id="outline-container-1" class="outline-2"> <h2 id="sec-1">Headers</h2> <div class="outline-text-2" id="text-1">  <p>Outline headers in <a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a> (the lines that start with one or more stars) are translated into html header elements.  Here is an example of the first 5 levels of <a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a> outline header levels: </p> </div>  </div>  <div id="outline-container-2" class="outline-2"> <h2 id="sec-2">Header 1</h2> <div class="outline-text-2" id="text-2">   </div>  <div id="outline-container-2_1" class="outline-3"> <h3 id="sec-2_1">Header 2</h3> <div class="outline-text-3" id="text-2_1">   </div>  <div id="outline-container-2_1_1" class="outline-4"> <h4 id="sec-2_1_1">Header 3</h4> <div class="outline-text-4" id="text-2_1_1">  <ul> <li id="sec-2_1_1_1">Header 4<br /> <ul> <li id="sec-2_1_1_1_1">Header 5<br />  </li> </ul> </li> </ul> </div> </div> </div>  </div>  <div id="outline-container-3" class="outline-2"> <h2 id="sec-3">Headers (cont&#8217;d)</h2> <div class="outline-text-2" id="text-3">  <p>The limitation/feature of <a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a> that a paragraph belongs to the immediate header above it is equally valid for the texts produced with the help of <a href='http://github.com/punchagan/org2blog' rel='external ' title='org2blog '>org2blog</a>. In this example, had I not put the <i>Header (cont&#8217;d)</i> header above this paragraph, the text would have belonged to the <i>Header 5</i> header.  </p> <p> With these, basic structuring of text is achieved. Within normal text, inline markup like <b>bold</b>, <i>emphasized</i>, <span style="text-decoration:underline;">underlined</span>, <del>striked through</del>, and <code>monospace</code> and <code>ver ba tim</code> should work as well. (not sure what verbatim should produce, but typically a multiple of spaces is the way to distinguish it from normal monospaced paragraphs)  </p> <p> These two mechanisms should be enough to create readable blobs of texts, but obviously I would like to have some means to make my posts a bit more attractive; by including images. </p> </div>  </div>  <div id="outline-container-4" class="outline-2"> <h2 id="sec-4">Images</h2> <div class="outline-text-2" id="text-4">  <p>Images in <a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a> are basically references / links to image locations. If such an image is a file on the local disk of the machine I&#8217;m working on, I can insert a link to that file in the usual <a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a> way. </p>    <pre class="prettyprint src src-org"><span class="org-org-link">file:filename.png</span>
</pre>    <p> Which results in this: </p> <p> <img src="http://mrblog.nl/files/2010/10/blue.png"  alt="http://mrblog.nl/files/2010/10/blue.png" /> </p> <p> Users of <a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a> may recognize this image as an example of the usage of the ditaa system. Processing of <i>begin_src</i> sections in the org file will be done prior to publishing, so the image does not even need to be linked explicitly, but can be an implicit result of code evaluation like in the example below: </p>    <pre class="example">#+begin_src ditaa :file filename.png :cmdline -r
+---------+
| cBLU    |
|         |
|    +----+
|    |cPNK|
|    |    |
+----+----+
#+end_src
</pre>     <p> <img src="http://mrblog.nl/files/2010/10/blue2.png"  alt="http://mrblog.nl/files/2010/10/blue2.png" /> </p> <p> In this example the ditaa code evaluated delivered a file http://mrblog.nl/files/2010/10/blue2.png which was subsequently uploaded to the blog. (the problem here is that mentioning the filename translates it into the url on the server, the basename of the file is the local filename). </p> <p> Using images which are already somewhere else on the web (I tend to use flickr.com for these) inserting a link to their location should suffice to get the image in the web page. </p> <p> Example: </p>  <div class="figure"> <p><img src="http://farm5.static.flickr.com/4066/4645566650_839553e399.jpg" class="flickr" alt="external image example" title="Workbench" /></p> <p>This text is the image caption.</p> </div>  <p> So, with this basic knowledge I should be able to start publishing again. </p> </div> </div> </p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2010/10/11/using-org2blog.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Xaraya commit history on video</title>
		<link>http://mrblog.nl/2010/04/11/xaraya-commit-history-on-video.html</link>
		<comments>http://mrblog.nl/2010/04/11/xaraya-commit-history-on-video.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 12:07:00 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[revision control]]></category>
		<category><![CDATA[xaraya]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=826</guid>
		<description><![CDATA[Played a little with the gource log visualizer today. It is typically used to visualize committed revisions in a revision control system, although any system that logs events of some kind could be made to work with it I suppose. I happen to have a repository of xaraya going back to 2002 in git, so [...]]]></description>
			<content:encoded><![CDATA[<p>Played a little with the <a href='http://code.google.com/p/gource/' rel='external ' title='Gource revision log visualizer'>gource</a> log visualizer today. It is typically used to visualize committed revisions in a revision control system, although any system that logs events of some kind could be made to work with it I suppose.</p>

<p>I happen to have a repository of xaraya going back to 2002 in git, so I thought I&#8217;d give it a shot.</p>

<p>&#8230;more time passes than originally planned&#8230;</p>

<h4>Result</h4>

<p>8 years of commit history in 10 minutes of video. Produced with <a href='http://code.google.com/p/gource/' rel='external ' title='Gource revision log visualizer'>gource</a> from a git repository of <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a>. The video traces the 2.x main branch back to its origin, repository wise. The start is the import of the CVS postnuke repository into Bitkeeper. Since then xaraya has switched to monotone.</p>

<h5>Gource settings used:</h5>

<pre><code class="prettyprint"><a href='http://code.google.com/p/gource/' rel='external ' title='Gource revision log visualizer'>gource</a> --stop-position 1.0 \
       --camera-mode overview \
       --bloom-intensity 0.18 \
       --user-image-dir .git/avatar \
       --highlight-all-users \
       --output-framerate 60 \
       -s 0.5 \
       -720x576 \
       -a 0.3 \
       --hide filenames \
       --user-scale 1.4 \
       --date-format %Y-%m-%d \
       --disable-progress \
       --output-ppm-stream - \
| ffmpeg -y -b 3000K -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -vpre default <a href='http://code.google.com/p/gource/' rel='external ' title='Gource revision log visualizer'>gource</a>.mp4
</code></pre>

<p>This produced a video of 11 min. 35 seconds. To bring it back to 10 minutes the framerate was increased until the total time fell just below 10 minutes.﻿</p>

<p style="text-align: center"><object width="480" height="385">
<param name="movie" value="http://www.youtube.com/v/fIeDCeh3uL8&amp;hl=en_US&amp;fs=1&amp;" />
<param name="allowFullScreen" value="true" />
<param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/fIeDCeh3uL8&amp;hl=en_US&amp;fs=1&amp;"></embed>
</object>
</p>

<p>I specifically wanted <strong>the whole</strong> history to be in one video of 10 minutes (the Youtube maximum) which means compromising a bit on the quality. If there are things I can do within these assumptions to improve the video, I&#8217;d like to hear them.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2010/04/11/xaraya-commit-history-on-video.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Revisiting Emacs on OSX</title>
		<link>http://mrblog.nl/2009/11/17/revisiting-emacs-on-osx.html</link>
		<comments>http://mrblog.nl/2009/11/17/revisiting-emacs-on-osx.html#comments</comments>
		<pubDate>Tue, 17 Nov 2009 01:00:20 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=795</guid>
		<description><![CDATA[Before I used an Apple machine with OSX, XEmacs was my editor of choice. Recently I saw Emacs 23 being released with native OSX support in the main repository (well, NextStep support formally, but with Cocoa bindings, which makes it OSX native I guess). That alone was enough to revisit the old friend. With caution, [...]]]></description>
			<content:encoded><![CDATA[<p>Before I used an Apple machine with OSX, XEmacs was my editor of
choice. Recently I saw Emacs 23 being released with native OSX support
in the main repository (well, NextStep support formally, but with Cocoa
bindings, which makes it OSX native I guess).</p>

<p>That alone was enough to revisit the old friend. With caution, because I
still feel the pain somewhat of switching to <a href='http://macromates.com' rel='external ' title='TextMate editor for OSX'>TextMate</a> <strong>from</strong>
Xemacs. Another reason is that I sort of lost patience lately with
proprietary applications. (<a href='http://macromates.com' rel='external ' title='TextMate editor for OSX'>TextMate</a> in this case). I&#8217;m finding it less
doable to have to wait for another developer to be able to find the time
to fix issues or provide upgrades within reasonable intervals.</p>

<p>I&#8217;ve had a similar experience with Ecto not that long ago. You&#8217;d think
I&#8217;d have learned by now&#8230; </p>

<p>Using Emacs again instead of <a href='http://macromates.com' rel='external ' title='TextMate editor for OSX'>TextMate</a> was actually quite easy. My
fingers still &#8216;remembered&#8217;the keys to press apparently. However, the
learning curve to use the editor effectively is still steep.  It&#8217;s
still, and now more than it was with the native build, a joy to work
with though.</p>

<p>What keeps (re-)surprising me about Emacs is that there&#8217;s apparently a
mode or package for anything you want to do to get you 80% of the way
and, thanks to the strong customization, the other 20% is around the
corner. </p>

<p>I switched last week and since then I&#8217;ve <em>discovered</em> a mode that lets
me view PDF-files (docview), a mode that connects to my microblog
(identica-mode), spent quite a few hours in <em><a href='http://orgmode.org' rel='external ' title='Emacs Org Mode'>org-mode</a></em> organizing my
notes and task-lists (including syncing them to my iPhone), editting
XML files in nxml-mode and blogging right now with the weblogger
package.</p>

<p>I seriously think you can take a bare iron machine, install a minimal
linux kernel on it, configure Emacs as the &#8216;sole interactive
application&#8217;on it and still end up with a useful machine, not missing
out on any task you&#8217;d want to perform.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/11/17/revisiting-emacs-on-osx.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenObject as LDAP data-source</title>
		<link>http://mrblog.nl/2009/09/29/openobject-as-ldap-data-source.html</link>
		<comments>http://mrblog.nl/2009/09/29/openobject-as-ldap-data-source.html#comments</comments>
		<pubDate>Tue, 29 Sep 2009 17:02:32 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>
		<category><![CDATA[claws]]></category>
		<category><![CDATA[openobject]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=785</guid>
		<description><![CDATA[As a side-effect of Migrating to Claws I lost my OSX addressbook usage, at least for mail. In my company we use OpenERP for CRM, invoicing and other business needs. This means that the majority, if not all the email-addresses I need are in our OpenERP database. So, it made sense to finish an effort [...]]]></description>
			<content:encoded><![CDATA[<p>As a side-effect of <a href="http://mrblog.nl/2009/09/18/a-weeks-worth-of-claws-mail-on-osx.html">Migrating to <a href='http://claws-mail.org' rel='external ' title='Claws email client'>Claws</a></a> I lost my OSX addressbook usage, at least for mail. In my company we use <a href="http://openerp.com"><a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a></a> for CRM, invoicing and other business needs. This means that the majority, if not all the email-addresses I need are in our <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> database. </p>

<p>So, it made sense to finish an effort I started earlier, which is to link <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> to our LDAP server and thus be able to query information from the <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> database through an LDAP interface and have every address available in the <a href='http://claws-mail.org' rel='external ' title='Claws email client'>Claws</a> addressbook (and the OSX addressbook too for that matter). </p>

<p>In an earlier version of <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> we used a specific module for this, which basically published an LDAP entry whenever we changed data in the <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> database. This worked, but was a less than ideal solution, not to mention it stopped working on an <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> upgrade. The solution I wanted was to have the data available in LDAP immediately. This meant making the LDAP server a &#8220;client&#8221; of the <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> database or, said another way, making the <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> database function as an SQL backend to the LDAP server.</p>

<h4>Defining an SQL backend for LDAP</h4>

<p>Creating an SQL backend for slapd is, albeit terse, documented. I mainly used the information at <a href="http://www.openldap.org/faq/data/cache/978.html">the OpenLDAP FAQ</a>. The basic idea is that the LDAP-server connects through ODBC to the database, the <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> database in our case, and translates information found in relational tables to a subtree of the LDAP hierarchy.</p>

<p>To model this information, you have to create at least 3 tables in the database:</p>

<ol>
<li><code>ldap_oc_mappings</code>: which objectClass of LDAP is stored in what table;</li>
<li><code>ldap_attr_mappings</code>: how attributeTypes of an objectClass are resolved from RDBMS data;</li>
<li><code>ldap_entries</code>: what&#8217;s the DN of an entry, and how the entry relates to its objectClass mapping and to its parent DN;</li>
</ol>

<p>The FAQ mentions two other tables, which we do not need. The idea is to specify in these three tables how the LDAP server gets to the entries and what they mean. For addressbook-like entries for mail, the defacto objectClass to use for this is something referred to an &#8216;inetOrgPerson&#8217;. The collection of these objects will be below an objectClass &#8216;organizationalUnit&#8217;, giving the simplest &#8216;tree-relation&#8217;we can think of.</p>

<h4>Making the SQL backend use <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a></h4>

<p>The table <code>ldap_oc-mappings</code> is queried by the LDAP server to map these object classes to tables, so the server knows in which tables to look for the attributes of these two classes. The next two statements insert two rows in that table, one for each object Class, mapping them to the tables <code>ldap_inetOrgPerson</code> and <code>ldap_organizationalUnit</code>, expecting a column <code>id</code> to contain the primary key for the objects.</p>

<pre><code class="prettyprint">INSERT INTO ldap_oc_mappings(name,keytbl,keycol) 
    VALUES('inetOrgPerson','ldap_inetOrgPerson','id');
INSERT INTO ldap_oc_mappings(name,keytbl,keycol) 
    VALUES('organizationalUnit','ldap_ organizationalUnit','id');
</code></pre>

<p>The <code>ldap_inetOrgPerson</code> is actually a view over the <code>res_partner_address</code> table in <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a>, so it uses the data directly. </p>

<pre><code class="prettyprint">CREATE OR REPLACE VIEW ldap_inetorgperson AS 
  SELECT 
    a.id, 
    btrim((COALESCE(a.firstname,'')||' ') || a.lastname) AS cn, 
    btrim((COALESCE(a.firstname,'')||' ') || a.lastname) AS displayname, 
    a.phone AS telephonenumber, 
    a.lastname AS sn, 
    a.firstname AS givenname, 
    a.fax AS facsimiletelephonenumber, 
    a.mobile, 
    a.private_phone AS homephone, 
    lower(a.email) AS mail, 
    a.street, 
    a.zip AS postalcode
  FROM res_partner_address a
  WHERE 
    a.email  ''  AND 
    a.email  '"' AND 
    a.type  =  'contact';
</code></pre>

<p>This gives a dataset of all people who actually have an email-address registered in the <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> database. The column aliases are not needed as such, but make the construction of the <code>ldap_attr_mappings</code> table a bit easier. The second objectClass we registered in <code>ldap_oc_mappings</code>, <code>organizationalUnit</code> can be modelled with one simple row in the table <code>ldap_organizationalUnit</code>:</p>

<pre><code class="prettyprint">INSERT INTO ldap_organizationalUnit(name) VALUES ('addressbook');
</code></pre>

<p>With that row, we basically define one organizational unit in our simple tree named <code>addressbook</code> under which all our objects of type <code>inetOrgPerson</code> will be placed. </p>

<p>So, at this point we have 2 objectClasses registered, we have created the raw data for them. What&#8217;s left? Two things, first, we need to define how the attributes of the raw data relate to the object attributes. For this, the table <code>ldap_attr_mappings</code> contains a row for each attribute. For the <code>telephoneNumber</code> attribute, the data row is as follows:</p>

<pre><code class="prettyprint">INSERT INTO ldap_attr_mappings(
        oc_map_id,name,sel_expr,from_tbls,join_where
    ) 
VALUES(
    1,'telephoneNumber','telephoneNumber','ldap_inetOrgPerson','1=1'
);
</code></pre>

<p>This says basically to the ldap server that in order to get to the <code>telephoneNumber</code> attribute for <code>inetOrgPerson</code> (<code>oc_map_id</code> 1 refers to the first row in the <code>ldap_oc_mappings</code> table), it needs to look in the table <code>ldap_inetOrgPerson</code>, use the same attribute name for the column and apply no special where clause. It is basically a recipe for the server to translate an LDAP request into an SQL query. </p>

<p>For each of the columns in the <code>ldap_inetOrgPerson</code> view, such a row needs to be present in the <code>ldap_attr_mappings</code> table.</p>

<p>Still here? The final step is to create the third meta table <code>ldap_entries</code>. This table is basically the lookup table to map <em>ldap-index values</em> to <em>rdbms-index values</em>.  I have defined <code>ldap_entries</code> as a view on the raw data as follows:</p>

<pre><code class="prettyprint"> CREATE OR REPLACE VIEW ldap_entries AS 
   SELECT 
     0 AS id, 
     'ou=addressbook,dc=hsdev,dc=com' AS dn, 
     2 AS oc_map_id, 
     0 AS parent, 
     0 AS keyval
    UNION 
   SELECT 
     ldap_inetorgperson.id, 
     ('cn=' || ldap_inetorgperson.cn) || 
     ',ou=addressbook,dc=hsdev,dc=com' AS dn, 
     1 AS oc_map_id, 
     0 AS parent, 
     ldap_inetorgperson.id AS keyval
   FROM ldap_inetorgperson;
</code></pre>

<p>This does 2 things, it refers the ldap addres <code>ou=addressbook,dc=hsdev,dc=com</code> as the organizational unit (<code>oc_map_id</code> = 2) and assigns that ID 0. The second part of the UNION then formats each of the inetOrgPerson addresses as an LDAP address in the constructed tree (mine would be: <code>cn=Marcel van der Boom,ou=addressbook,dc=hsdev,dc=com</code>) and maps it to the ID in the raw data table (<code>keyval</code>) and puts the organizational unit as its parent.</p>

<p>With the above a minimal <em>proof of concept</em> can be constructed so that each partner address which has an email-address shows up in LDAP. After this, it&#8217;s a matter of configuring the email-client using the <code>ou=addressbook,dc=hsdev,dc=com</code> as a search base.</p>

<p>Here&#8217;s a picture of my record in the claws address book:</p>

<p style="text-align: center"><a href="http://mrblog.nl/files/2009/09/screen_011.png" target="_blank"><img src="http://mrblog.nl/files/2009/09/screen_011.png" width="500px" alt="screen_011.png" /></a>
</p>

<p>The same concept can be applied to other data in <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> (the partner records themselves come to mind or user accounts). It would not be that hard to wrap the above into an <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> module to manage this. Once the LDAP server has a configuration to use an SQL backend, all configuration can be done in <a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a> itself, modelling access using the meta tables. Perhaps I&#8217;ll do that at some point, if some of my customers would benefit from this too.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/09/29/openobject-as-ldap-data-source.html/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>A weeks worth of claws-mail on OSX</title>
		<link>http://mrblog.nl/2009/09/18/a-weeks-worth-of-claws-mail-on-osx.html</link>
		<comments>http://mrblog.nl/2009/09/18/a-weeks-worth-of-claws-mail-on-osx.html#comments</comments>
		<pubDate>Fri, 18 Sep 2009 08:37:10 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[claws]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=735</guid>
		<description><![CDATA[After installing Snow Leopard I was left with a page of programs and plugins that needed attention because of the upgrade. Most of these were little nuisances and just needed a little reconfiguration. There were a couple of things where Apple decided to rename an app or hide it otherwise from view (Kerberos Ticket manager [...]]]></description>
			<content:encoded><![CDATA[<p>After installing Snow Leopard I was left with a page of programs and plugins that needed attention because of the upgrade. Most of these were little nuisances and just needed a little reconfiguration. There were a couple of things where Apple decided to rename an app or hide it otherwise from view (Kerberos Ticket manager for example).</p>

<p>There were two things on the list which stopped me in my daily work. The first was was the need to recompile the complete macports collection. I won&#8217;t go into the details of everything, but executing a complete reinstall of macports apps takes about a day, not counting the time needed to fix compile errors (wtf, all *.la files missing now?).</p>

<p>The second was the disfunctioning of a number of Mail.app plugins. I guess it&#8217;s not really the plugin authors who have dropped the ball here, as Apple had an early release of SL and many developers were just not ready. However, that didn&#8217;t change the fact my *nix tools and mail were both severely crippled now.</p>

<p>Not looking forward to spending two days to recompile and reconfigure everything and nothing new to show for I decided that a long time wish could be sneaked in. Leaving Mail.app behind and switching to <a href="http://claws-mail.org"><a href='http://claws-mail.org' rel='external ' title='Claws email client'>Claws</a></a> as a mail client. </p>

<p>Specifically, these are the main gripes I have with Mail.app:</p>

<ul>
<li>keyboard navigation is absent for all practical purposes;</li>
<li>tabbing order in compose window or absence of shortcut keys to go to subject/body at once;</li>
<li>weird threading decision; (altho i have to admit it works for the daily chores mail)</li>
<li>no way to configure top/bottom posting;</li>
<li>no nntp support;</li>
<li>IMAP support does not include subscriptions;</li>
<li>somehow it keeps locking up on me with tenacious regularity, i suspect sqlite here; </li>
<li>the direction with yellowy sticky notes, the stationary things are all useless to me;</li>
<li>proprietary, closed program (which I could live with&#8230;)</li>
<li>but worse, it has a non-documented API for plugins, which is an insult to developers.</li>
</ul>

<p>I&#8217;ve always liked claws on linux. Tremendously fast, great keyboard support, a feature-set which is more than I can handle in most areas and a small enough codebase which makes it realistic for me to patch it or write a plugin for, should I feel inclined to do so. The only problem I really had was running OSX, so the lightweightedness would be kinda lost, as I would need a while slew of dependencies. Still, most of them I already had because of our internal implementation of <a href="href="http://openerp.com"><a href='http://openerp.com' rel='external ' title='Open Source ERP and application framework'>OpenERP</a></a></p>

<p>I knew I would be running into issues, so the first couple of days I ran with claws-mail inside <a href="http://virtualbox.org">VirtualBox</a> running an Ubuntu install. This would give me sort of a reference to get everything working without having to worry about compilation digging etc. Installing a new mail application is easy but deciding if it is good enough to replace a program which you use every minute of the day is something else.</p>

<p>I sort of knew after half a day I was going to like it. The slowness of the virtual machine was a little bit in the way, as was its instability, but overall things were looking good. Ok, time to repeat the excercise for real on OSX.</p>

<p>Here&#8217;s the configure step I used:</p>

<pre><code class="prettyprint">export CPPFLAGS=-I/opt/local/include
export LDFLAGS=-L/opt/local/lib

./configure \
  --disable-trayicon-plugin \
  --disable-manual \
  --enable-ipv6 \
  --disable-dillo-viewer-plugin \
  --enable-crash-dialog
</code></pre>

<p>The first two are perhaps redundant, but I wanted to make sure everything came from the ports collection and not from libraries supplied by Apple by default. Compiling afterwards gives you a running, but ugly claws-mail. So, first thing I did was install a bunch of gtk2 stuff to give me a bit of theme-ing options. I used Platypus to create a <a href='http://claws-mail.org' rel='external ' title='Claws email client'>Claws</a>.app; the OSX application bundle so I can have an icon in the Dock:</p>

<p><div class="markdown_generated"><img src="http://mrblog.nl/files/2009/09/screen_006.png" alt="Creating a <a href='http://claws-mail.org' rel='external ' title='Claws email client'>Claws</a> icon" title="" /></div></p>

<p>Apart from the icon, that does not give you much really. The app runs as a child below X11.app so it still misbehaves in many ways, but alas.</p>

<p>Next up was &#8216;mailto&#8217;URI handling. I had thought this to be an easy thing. OSX refuses to accept a shell script as handler though, it must be an app bundle. So, what I needed was an app-bundle, as invisible as possible which can act as an URI handler for claws. The first thing I thought about was adapting <a href="http://mailtomutt.sourceforge.net">MailToMutt</a> to call out to claws instead of mutt. Looking at the source I saw it was pretty much suitable to mutt only, so I set out to write my own, How hard could this be?</p>

<p>As it turns out, such an app in its simplest form would require the following:</p>

<ol>
<li>An info.plist file, as all app bundles have, with some special entries;</li>
<li>A declaration of a handler on how to react to the involved &#8216;Apple Events&#8217;</li>
<li>The code of that handler.</li>
</ol>

<p>The plist has to look something like this:</p>

<p><div class="markdown_generated"><img src="http://mrblog.nl/files/2009/09/screen_007.png" alt="Plist file needed" title="" /></div></p>

<p>There are 2 things in there which make this interesting. First, the highlighted line marks this application as an &#8216;Agent&#8217;which just means to not show it anywhere on screen.</p>

<p>Second, a list of URL-types on which this URIhandler app should react. As you can see I threw a bunch in there which I thought would come in handy someday. What this does is make the app known to OSX as being capable of handling these types of URLs. This is used, for example by the Mail.app application for listing clients in its preference for default Email program:</p>

<p><div class="markdown_generated"><img src="http://mrblog.nl/files/2009/09/screen_009.png" alt="App registered as URL handler" title="" /></div></p>

<p>The second file needed in the XCode project is URLHandler.scriptSuite:</p>

<pre><code class="prettyprint">{
    Name = URLHandler;
    AppleEventCode = "UrHD";

    Commands = {
        "GetURL" = {
            CommandClass = URLHandlerCommand;
            AppleEventCode = GURL;
            AppleEventClassCode = GURL;
        };
    };
}
</code></pre>

<p>which registers <code>URLHandlerCommand</code> as the handler for Events of type GURL (get an URL). </p>

<p>And finally, the third file, <code>URLHanderlerCommand.m</code> which implements that handler:</p>

<pre><code class="prettyprint">@implementation URLHandlerCommand

- (id)performDefaultImplementation {

    NSString *urlString = [self directParameter];
    NSURL    *url = [NSURL URLWithString: urlString];

    // Log what we got
    NSLog(@"url = %@", urlString);

    // Launch _handler script in path
    NSTask *task = [NSTask new];
    NSString *script = [NSString stringWithFormat:@"~/bin/%@_handler",[url scheme]];
    NSLog(@"launchtarget = %@", script);
    [task setLaunchPath:script];

    // Give the URI-string as parameter to that script
    [task setArguments:[NSArray arrayWithObject:urlString]];

    // Catch stdout / stderr
    [task setStandardOutput:[NSPipe pipe]];
    [task setStandardError:[task standardOutput]];

    // Run it
    [task launch];

    // Log the output, if any
    NSData* output = [[[task standardOutput] fileHandleForReading] readDataToEndOfFile];
    NSString* out_string = [[[NSString alloc] initWithData:output encoding:NSUTF8StringEncoding] autorelease];
    NSLog(@"%@",out_string);

    // If we are not there we cant do no harm, so quit.
    [[NSApplication sharedApplication] terminate:nil];

    return nil;
}
@end
</code></pre>

<p>In words: It takes the URL that the user clicked on &#8220;&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#111;&#109;&#101;&#116;&#104;&#105;&#110;&#103;&#64;&#115;&#111;&#109;&#101;&#116;&#104;&#105;&#110;&#103;&#46;&#111;&#114;&#103;&#8221;, turns it into an URL object and calls out to the file <code>mailto_handler</code> in the Users bin directory. </p>

<p>For a &#8216;feed&#8217;URL the app would call the file <code>feed_handler</code> and likewise for the other protocols. The <code>mailto_handler</code> file is just a shell script containing:</p>

<pre><code class="prettyprint">/usr/local/bin/claws-mail --compose $1
</code></pre>

<p>and my <code>~/bin/feed_handler</code> contains:</p>

<pre><code class="prettyprint">/usr/local/bin/claws-mail --subscribe $1
</code></pre>

<p>If you would like a copy of the source of this program, go here: <a href="http://mrblog.nl/files/2009/09/URLHandler.zip">http://mrblog.nl/files/2009/09/URLHandler.zip</a></p>

<p>The rest of the configuration went pretty smooth. I had a little hickup getting GPG signing to work with both PGP and S/MIME signatures. But a quick recompile of gpgme to include s/mime and a <a href="http://www.beitz.org/node/85">specific configuration</a> which was not obvious to me for gpg-agent solved that.</p>

<p>Here&#8217;s a picture of the end result (click on it for large version):</p>

<div style="text-align:center"><a href="http://mrblog.nl/files/2009/09/screen_0101.png" target="_blank"><img src="http://mrblog.nl/files/2009/09/screen_0101.png" alt="screen_010.png" border="0" width="400" /></a></div>

<p>So, is this install perfect? Is it even better than Mail.app? I&#8217;d say, not yet. But the big difference is that I have control now and there&#8217;s only a gap of time and energy between me solving any gripe I might have. </p>

<p>Which of the gripes have I solved with this? Let&#8217;s recap:</p>

<p><span style="color:green;font-weight: bold">✓</span> keyboard navigation is absent for all practical purposes;<br />
keyboard navigation is strong, but not complete, in claws. One thing which is missing is a keyboard way to collaps or expand a folder tree (and thread, for that matter)</p>

<p><span style="color:red;font-weight: bold">✘</span> tabbing order in compose window or absence of shortcut keys to go to subject/body at once<br />
This one is unsolved, at least on osx. There is no key combination which allows to go to subject and / or body directly.</p>

<p><span style="color:green;font-weight: bold">✓</span> weird threading decision; (altho i have to admit it works for the daily chores mail)</p>

<p><span style="color:green;font-weight: bold">✓</span> no way to configure top/bottom posting;<br />
claws has templates, which allow you to configure what a reply (or forward) looks like. This includes the cursor position, so it allows for top-posting, bottom-posting or anywhere posting. And all this is per account.</p>

<p><span style="color:green;font-weight: bold">✓</span> no nntp support;<br />
claws has full nntp support.</p>

<p><span style="color:green;font-weight: bold">✓</span> IMAP support does not include subscriptions;</p>

<p><span style="color:orange;font-weight: bold">?</span> somehow it keeps locking up on me with tenacious regularity, i suspect sqlite here;<br />
We&#8217;ll have to see how claws performs here.</p>

<p><span style="color:green;font-weight: bold">✓</span> the direction with yellowy sticky notes, the stationary things are all useless to me;</p>

<p><span style="color:green;font-weight: bold">✓</span> proprietary, closed program (which I could live with&#8230;)<br />
claws is licensed under the GPL v3</p>

<p><span style="color:green;font-weight: bold">✓</span> but worse, it has a non-documented API for plugins, which is an insult to developers.<br />
i&#8217;m not sure the claws API for plugins is documented (i havent looked) but being open source, there&#8217;s enough to work with.</p>

<p>I&#8217;d say that is a pretty good score! If it feels like that in the real world? Talk to me in 3 months :D I&#8217;m also pretty sure there will be a whole set of new gripes waiting for me around the corner.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/09/18/a-weeks-worth-of-claws-mail-on-osx.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Microblogging workflow</title>
		<link>http://mrblog.nl/2009/08/24/microblogging-workflow.html</link>
		<comments>http://mrblog.nl/2009/08/24/microblogging-workflow.html#comments</comments>
		<pubDate>Mon, 24 Aug 2009 16:29:58 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=724</guid>
		<description><![CDATA[The number of accounts I have on useful networks, social or otherwise, has been on an increasing trend-line for a while. In the beginning, things were simple, but it gets messy pretty quick. One feature which these networks share in some form or another are &#8220;status notices&#8221;. Starting with the &#8216;chat status&#8217;in the Instant Messaging [...]]]></description>
			<content:encoded><![CDATA[<p>The number of accounts I have on <em>useful</em> networks, social or otherwise, has been on an increasing trend-line for a while. In the beginning, things were simple, but it gets messy pretty quick. One feature which these networks share in some form or another are  <em>&#8220;status notices&#8221;</em>. Starting with the &#8216;chat status&#8217;in the Instant Messaging world (like: <em>I&#8217;m busy</em> or <em>Away from computer</em> etc.) to the slightly more verbose microblogging notices which describe what the user is doing or finds interesting in about 140 characters or less. </p>

<p>So, if you have a handful of accounts and you want to update your status or give a notice of something. What do you do? Obviously, you&#8217;d want to avoid going to all those sites and doing them one by one.</p>

<h4>Posting is one thing&#8230;</h4>

<p><a href="http://ping.fm">ping.fm</a> has part of the solution. Their idea is to create one point to send status updates and micro blog notices and they will take care of delivering to all the other networks you are a part of. A huge improvement over posting the same content on all the networks separately.  </p>

<p>However, it&#8217;s only part of the solution. Granted, in the domain of microblogging alone the way to post should be readily available (otherwise the moment is gone) and the content is meant to be short and restricted, so redistribution is likely to succeed to many places as the requirements will be low. Perfect when the only origin of your content is microblog-like. Mine is not, however.</p>

<p>The way authoring works is by choosing a publishing means and place based on the content of the message you are trying to get across to a certain audience.<br />
For microblogging, typically short and &#8216;for everyone who is interested&#8217;this can be anything capable of sending out 140 characters to the nearest more connected hub with a supported API. After that, a <a href="http://ping.fm">ping.fm</a> like service can do the rest. 
For a blog—entry (like this), not suitable as microblog content as such, there needs to happens something additional. The content that should go to the social networks is not the actual content of the blog—entry, but more a notification that it happened, posted in the nicest possible way, and in realtime, as the current times demand.</p>

<p>So, with that, is the problem then reduced to the following two-step?</p>

<ol>
<li>if the content is microblog like: use ping.fm and be done with it;</li>
<li>If the content is not suitable for microblogging, use a specific tool and place and make sure a notification goes out to ping.fm with a back reference.</li>
</ol>

<h4>Authoring needs more</h4>

<p>Sure, if no-one ever talked back, this would be all that is needed. However, the apparent idea behind social networks is that people  <strong>do</strong> talk back. If the <em>&#8216;just playing with this thing&#8217;</em>—stage is over and people start talking back, you&#8217;re back into the old situation where you visit all the networks separately to manage the replies to your notices. In fact, it&#8217;s worse. I could, if forced, live with publishing in many places if it meant getting all replies in one (visible) place. In reality all the replies (in whatever form) are scattered all over the place. </p>

<p>Now what? Aggregate in RSS-like form by creating extensions on all the networks to make it one feed? Bring yet another service into the mix? Use an omnipotent client on every platform you work on? Just accept that you cant communicate with everyone in the same way and that it just takes time?</p>

<p>We need a pong.fm as the counterpart of ping.fm!</p>

<h4>Can we do better?</h4>

<p>In the domain of instant messaging I have more or less solved the problem by installing our own jabber server with gateways to icq, aim, gtalk, other jabber servers etc. This gets me to communicate with everyone, regardless of their choice of IM network, whereas I can use my favourite IM client on all platforms without hassle everywhere. (Quite a bit of hassle on the server though). The interface is the same for all IM networks, I can initiate and reply in the same way and I don&#8217;t need to know anything else; the server is connected to all the networks (obviously I need to register to those networks once on the server, so the server knows where to bring the message) Everything looks like a jabber JID to me in the IM-domain. I want something similar for microblogging!</p>

<p>From the top of my head, such a system should satisfy at least the following:</p>

<ul>
<li>be fully distributed, so others can do &#8216;the same&#8217;and we can federate and scaling is trivial;</li>
<li>be open and standardised, so we all know what &#8216;the same&#8217;means;</li>
<li>be able to integrate with the main microblogging initiatives out there in such a way that it is transparent for all communicating parties (multi-directional);</li>
</ul>

<p>(I&#8217;m ignoring any functional specifications for the moment, just what it should be at an architectural level)</p>

<p>A couple of existing systems popped into my mind while jotting down the above points. First, <a href="http://wave.google.com">google wave</a>, mostly because of its distributed real-time multi-user authoring, their solution for the storage issues involved and a couple of other innovations which seem to fit the above (like basing it on XMPP, making it open and having extension-options on both server and client side).</p>

<p>Another system which I thought of was <a href="http://identi.ca">identi.ca</a> (or rather laconi.ca which is the code-base that runs identi.ca). This actually <strong>is</strong> a microblogging system which already supports cross-posting and federation. Their openness is attractive as well as their initiatives to standardise the microblogging protocol for interoperability. </p>

<p>It&#8217;s still early days for both of these systems however. </p>

<p>Will I be able to run a laconi.ca/wave install on our own servers, &#8220;gateway&#8221; it to our XMPP server and every major other µ-blogging platform out there and just register with my own server(s) and will it feel as if I participate in <strong>one</strong> community as a whole, where I can communicate with everyone, regardless of their choice in whatever the latest popular community is?  </p>

<p>I think the answer is, and will always be: <strong>&#8220;Not yet, but we&#8217;re close&#8221;</strong>. It is just another iteration of the &#8216;Unified Messaging&#8217;paradigm. We&#8217;re getting closer each run, but messaging gets redefined over time, making us chase the end of the rainbow again, once we&#8217;ve (partially) fulfilled an earlier goal.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/08/24/microblogging-workflow.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reasoning my way into new toys</title>
		<link>http://mrblog.nl/2009/08/05/reasoning-my-way-into-new-toys.html</link>
		<comments>http://mrblog.nl/2009/08/05/reasoning-my-way-into-new-toys.html#comments</comments>
		<pubDate>Wed, 05 Aug 2009 13:32:35 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>
		<category><![CDATA[segway]]></category>
		<category><![CDATA[toys]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=665</guid>
		<description><![CDATA[Last Monday was my 40th birthday. I&#8217;m kind of used to having a quiet birthday; most of the people are always on holidays during this time of year. My girlfriend had organised a two day trip, she usually does something like that for my birthday, to an unknown destination to do something unknown. We were [...]]]></description>
			<content:encoded><![CDATA[<p>Last Monday was my 40th birthday. I&#8217;m kind of used to having a quiet birthday; most of the people are always on holidays during this time of year. My girlfriend had organised a two day trip, she usually does something like that for my birthday, to an unknown destination to do something unknown. We were leaving on Sunday and returning on Monday evening.</p>

<p>Sunday we went to an outdoor activity centre where we goofed around in a Rigid Inflatable Boat (RIB), got very muddy on a quad and very wet on some jet-skis. Very good fun and indeed a perfect way to spent a day for my birthday. A good diner-out and sleep-over in a hotel completed the day. I thought it was perfect and I thought it was over…</p>

<p>However, the next day the GPS steered me towards the town centre of <a href="http://www.utrecht.nl/">Utrecht</a> where she got me an hour to play with one of these:</p>

<div style="text-align:center"><img src="http://mrblog.nl/files/2009/08/i2_white_low.jpg" /></div>

<p>For those of you who do not recognise it; it&#8217;s the <a href="http://www.segway.com/individual/models/i2-commuter.php">Segway i2</a> Personal Transporter. A self-balancing two-wheel transportation device. It&#8217;s positioned somewhere in the gap between a bicycle and a pedestrian. </p>

<p>I&#8217;ve been mumbling about these things for a while now, but they cost a small fortune (for a toy, which it would be, for me). On top of that, their added value maximises in the city, and we live nowhere near a city!  So, I can not defend a good reason to want one, other than that this is the most natural way to control a motorised vehicle I have ever driven. (or <em>glide</em>, what seems to be the segway term for driving). </p>

<p>Renting one of these things does not help to cure this curiosity, <em>au contraire!</em> Now I want one even more! </p>

<p>So, as of Monday I find myself thinking about formulating a consistent argument for buying one. A new one costs around € 5000,= so that is serious money.  I have actually done calculations how many kilometres I would have to glide, replacing short trips in my car and saving gas, to earn back the investment. (Quite a few, it turns out)</p>

<p>Would I travel by train more if I had one? The nearest train station is like 10 kilometres from here, which is more or less doable; the range of the segway is advertised as around 40 km on one battery charge. I visit most of my clients by car (most of them are big and are in industrial areas, not in cities), but I guess one out of four trips could be replaced by the segway/train combination.</p>

<p>Would I take it with me if going to town by car? Most definitely. Would we be going on city trips more? I guess, but we would then have to buy 2 of them.</p>

<p>Would I be running the errands in our village with it? I think so. What shops we have here are mostly at 4 to 5 km distance from our home, so that is well within the Segway range. </p>

<p>The above sort of reasoning goes on for a while and at a certain point I have convinced myself it is &#8216;reasonable&#8217;to purchase it. At the very least, there is a feeling of: &#8216;Hey, I have worked hard to earn this money, I have deserved this!&#8217;The reasoning has never failed, assuming the enthusiasm of a product of service did not fade. (If they do, they usually fade quickly for me).</p>

<p>It&#8217;s not that I have regrets over previous toy purchases, but the question remains: &#8220;Is there still a way to prevent me purchasing one&#8221;?</p>

<p>For the moment, I think I am going to construct a symbolic big saving jar with the word &#8216;SEGWAY&#8217;written on it. </p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/08/05/reasoning-my-way-into-new-toys.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Maintenance&#8230;</title>
		<link>http://mrblog.nl/2009/06/22/maintenance.html</link>
		<comments>http://mrblog.nl/2009/06/22/maintenance.html#comments</comments>
		<pubDate>Mon, 22 Jun 2009 15:22:06 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=641</guid>
		<description><![CDATA[Today, I have been fighting playing the html code in templates of WordPress and the CSS of the site. I wanted to display the posts of the Cobra blog a bit more visible than an RSS feed, but not (like it was) importing every entry into this blog, so I came up with a block [...]]]></description>
			<content:encoded><![CDATA[<p>Today, I have been <strike>fighting</strike> playing the html code in templates of WordPress and the CSS of the site. I wanted to display the posts of the <a href="http://cobra.mrblog.nl">Cobra blog</a> a bit more visible than an RSS feed, but not (like it was) importing every entry into this blog, so I came up with a block on the homepage which is fairly visible so it will attract most, but not that disturbing for others. </p>

<p>How a little addition to CSS can make a big difference in how a page looks. CSS3 has a <code>box-shadow</code> property, which puts a nice drop-shadow behind an object. Support is still pretty much lacking from all browsers except the latest Firefox and Safari.</p>

<p>As most people wont have these, here&#8217;s an image (which also has this dropshadow btw):</p>

<div class="wrap" style="text-align:center"><img class="shadow" src="http://mrblog.nl/files/2009/06/screen_008.png" alt="screen_008.png" style="border:thin solid black;width:400px" /></div>

<p>Compare this with the rendering on the homepage in your browser. For guys like me who cant do graphics, CSS3 can still make me look like a pro ;-)</p>

<p>It also turns out that aligning <em>stuff</em> bottom-right is not that easy. (for me at least). Getting the wrapping right took the best part of the day for me. While I&#8217;m pretty proficient in XML and it&#8217;s rules, I keep rowing against the HTML stream I think. Oh well, it&#8217;s sort of decent now. (in FF and Safari at least. I&#8217;ve given up on IE for hobby projects)</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/06/22/maintenance.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Switching to another blog client</title>
		<link>http://mrblog.nl/2009/06/19/switching-to-another-blog-client.html</link>
		<comments>http://mrblog.nl/2009/06/19/switching-to-another-blog-client.html#comments</comments>
		<pubDate>Fri, 19 Jun 2009 10:38:13 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>

		<guid isPermaLink="false">http://mrblog.nl/?p=622</guid>
		<description><![CDATA[After quite a long period of using ecto, I have switched to using Marsedit. Ecto got sold beginning last year by Adriaan to Illuminix. There has been no update of ecto since and I&#8217;m seeing no signs of improvement either. Does this mean ecto as a product is bad? No. I still love the idea [...]]]></description>
			<content:encoded><![CDATA[<p>After quite a long period of using ecto, I have switched to using <a href="http://red-sweater.com/marsedit" title="MarsEdit blogging client">Marsedit</a>. Ecto got sold beginning last year by Adriaan to Illuminix. There has been no update of ecto since and I&#8217;m seeing no signs of improvement either. Does this mean ecto as a product is bad? No. I still love the idea and implementation of it. It is still a rough product though, has a number of annoying bugs and generally needs polishing; in other words: maintenance. After filing a couple of bugs and generally getting minimal or no response to them, time has probably come to expand my options.</p>

<p>With the set-up I have (wordpress-µ self hosted, off-line editing, flickr for images) switching between ecto and MarsEdit is hardly any work at all. Key in the account details in the new client and you&#8217;re basically good to go. </p>

<p>The only drawback I saw upfront was that MarsEdit does not have a wysiwyg like editor as ecto has. I&#8217;m not so much looking for the wysiwyg part, but avoiding the html editing process. I worked around this by installing a server side MarkDown plugin which enables me to edit posts in MarkDown. MarsEdit has a Preview Text Filter which supports MarkDown, so I actually feel the situation has improved.</p>

<p>I find MarsEdit a bit more intuitive in terms of navigation and menu entries and quite a bit faster to work with. The most important thing however is that the product is properly maintained by Daniel Jalkut from Red Sweater Software. In the last year he has updated the application 4 or 5 times with healthy changelogs and (judging by the forums) Daniel is very much on top of things. That looks a lot better than the current ecto situation.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/06/19/switching-to-another-blog-client.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sometimes you run into something on the web&#8230;</title>
		<link>http://mrblog.nl/2009/04/03/sometimes-you-run-into-something-on-the-web.html</link>
		<comments>http://mrblog.nl/2009/04/03/sometimes-you-run-into-something-on-the-web.html#comments</comments>
		<pubDate>Fri, 03 Apr 2009 10:48:29 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>

		<guid isPermaLink="false">http://mrblog.nl/2009/04/03/sometimes-you-run-into-something-on-the-web.html</guid>
		<description><![CDATA[While looking for a solution to a LaTeX path search problem I ran  into…]]></description>
			<content:encoded><![CDATA[<p>While looking for a solution to a LaTeX path search problem i ran into this:</p>

<div class="attribution">
  <blockquote cite="http://hans.fugal.net/blog/2009/03/12/microwave-duty-cycle#comments">
    <p>As you may know, when you change the power setting on most microwaves, it doesn’t change the power output of the magnetron. It changes the duty cycle, i.e. when the magnetron is on and when it is off.</p>
  </blockquote>
  <cite title="Microwave Duty Cycle | The Fugue">
    From: <a href="http://hans.fugal.net/blog/2009/03/12/microwave-duty-cycle#comments">Microwave Duty Cycle | The Fugue</a>
  </cite>
</div>

<p>He&#8217;s a brave soul, I did this years ago too, but was afraid to admit (let alone publish it).
(Oh and I also found the solution to my LaTeX search problem there)</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/04/03/sometimes-you-run-into-something-on-the-web.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kerberos transition started</title>
		<link>http://mrblog.nl/2009/02/19/kerberos-transition-started.html</link>
		<comments>http://mrblog.nl/2009/02/19/kerberos-transition-started.html#comments</comments>
		<pubDate>Thu, 19 Feb 2009 09:16:59 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://mrblog.nl/2009/02/19/kerberos-transition-started.html</guid>
		<description><![CDATA[As of last thursday, I&#8217;ve started to migrate everything in our network to use GSSAPI or Kerberos authentication. The amount of passwords and accounts grew over our heads and the inevitable &#8220;I&#8217;ll use the same everywhere&#8221; started to be apparent. The actual preparation for this already started more than a year ago. We are in [...]]]></description>
			<content:encoded><![CDATA[<p>As of last thursday, I&#8217;ve started to migrate everything in our network to use GSSAPI or Kerberos authentication. The amount of passwords and accounts grew over our heads and the inevitable &#8220;I&#8217;ll use the same everywhere&#8221; started to be apparent.</p>

<p>The actual preparation for this already started more than a year ago. We are in a mixed environment of several Windows varieties, Linux servers and a couple of Macs. It&#8217;s a fairly small network, but complex enough to easily make mistakes or forget something.</p>

<p>The installation of the Kerberos admin server and the domain controller is fairly straightforward if you play by its strict rules. Especially shortcuts in terms of how hostnames get resolved to ip-addresses and vice versa has very little playing room. I had to adapt every <code>/etc/hosts</code> file on every machine to get it to work.</p>

<p>Another thing which Kerberos really does not like is ip-addresses behind a NAT router, be they private ip-addresses or not. We got the actual authentication to work properly across routers, but the password changing only works from machines on the same subnet as the Kerberos server itself. Perhaps I should replicate a slave on each subnet and do password changes against them? (Not sure if that is possible though)</p>

<p>On the client side, I work on OSX myself so that was the first place to convert. Support for Kerberos is built into OSX, although the ticket manager is sort of hidden.</p>

<p style="text-align: center"><br />
<a href="http://mrblog.nl/files/2009/02/krb.png"><img class="shadow" src="http://mrblog.nl/files/2009/02/krb-tm.jpg" width="400" height="339" alt="krb.png" /></a></p>

<p style="text-align: left">The way Kerberos works is sort of like an attraction park. You <em>pay</em> for the entrance ticket by entering your username/password; shown in the upper part of the window above and you get free tickets to all the attractions in the park; shown in the lower part of the picture. In this case there is the Ticket Granting Ticket (the person who hands out tickets if you will), a ticket for the &#8216;http&#8217;service on hawking.hsdev.com (an iCal server in fact), the &#8216;imap&#8217;service on hawking and a host service (ssh) on plato. While doing all this, traffic is encrypted and your password never travels over the network, so that gives most system administrators a good feeling. The traffic of the service itself is not affected by Kerberos, it just does the authentication, nothing more.</p>

<p style="text-align: left">When opening a service like imap, http or whatever has been registered with the Kerberos Realm, there&#8217;s no need to enter a password again, after the initial ticket has been granted within the realm. Even in a small network, this can save a big amount of time.</p>

<p style="text-align: left">Ok, after the Kerberos installation, with the &#8216;host&#8217;services as the initial service to enable on all hosts, the real work started. I made a (big) list of everything in our network which in some way asks for a password. Mail and Calendaring came out on top, not only because everyone used this, but also because I knew my clients were easy to configure for it, so I could focus on the server configuration.</p>

<p style="text-align: left">Surprisingly, because the iCal server runs on Linux, for which it has not been written primarily, was the easiest. Changing the accounts.xml to have empty passwords for the users and putting in the Kerberos realm in the configuration file was enough to get it working.</p>

<p style="text-align: left">For mail, there are three services involved, imap and smtp and sieve. Cyrus uses the sasl library for authentication and we used its internal database for authentication. Making cyrus on debian use GSSAPI is easy, I dont think I had to change anything in fact. The problem is in the multiple ways people tend to get to their mail. Next to their desktop clients there are webmail accesses, iPhones and specific uses of some shared mailboxes. All of these should ideally support Kerberos, but they dont. Until they all do or have been made to do so, the internal sasl database will need to stay for a couple of accounts and thus multiple passwords will still float around.</p>

<p style="text-align: left">I found that most uses can be made to use Kerberos if needed, be it direct or indirect. Many web applications have the option to use http authentication, which in turn can use an apache module to ask Kerberos for user and password information. It&#8217;s not ideal, because control over http authentication sucks (hard to logout, for example), but it will have to do if the goal is to minimize the amount of passwords.</p>

<p style="text-align: left">The amount of steps ahead is still massive, but the first steps are there. The list of things to do also made me look at services more critically and review if we really needed them to be there. I&#8217;m guessing the completion of all the tiny little bits will take the best part of the rest of the year.</p>

<p style="text-align: left">Next up is ejabberd, our clients are iChat and Spark, which both can be Kerberos enabled, so the client side should be easy.</p>

<p style="text-align: left"><br /></p>

<p style="text-align: left"><br /></p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/02/19/kerberos-transition-started.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All blogs under one hood now</title>
		<link>http://mrblog.nl/2009/01/28/all-blogs-under-one-hood-now.html</link>
		<comments>http://mrblog.nl/2009/01/28/all-blogs-under-one-hood-now.html#comments</comments>
		<pubDate>Wed, 28 Jan 2009 18:10:11 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://mrblog.nl/2009/01/28/all-blogs-under-one-hood-now.html</guid>
		<description><![CDATA[Finally gotten around to integrating http://cobra.mrblog.nl and this site to the wordpress—µ installation. This site already ran under wordpress—µ for while, but I wanted to wait for the integration part until most of the 2.7 features appeared in the subversion repository. Creating this site (toplevel mrblog.nl) in the wordpress—µ application was easy, content-wise. Adjusting the [...]]]></description>
			<content:encoded><![CDATA[<p>Finally gotten around to integrating http://cobra.mrblog.nl and this site to the <a href="http://mu.wordpress.org">wordpress</a>—<a href="http://mu.wordpress.org/">µ</a> installation. This site already ran under wordpress—µ for while, but I wanted to wait for the integration part until most of the 2.7 features appeared in the subversion repository.</p>

<p>Creating this site (toplevel mrblog.nl) in the <span style="font-family: 'Trebuchet MS'">wordpress—µ application was easy, content-wise. Adjusting the installation so I could register both independent toplevel blogs (domains) and sites below that took a bit of fiddling around, most of it related to getting the subdomains and its users right.</span></p>

<p>Most of the conversion-work for the cobra blog involved installing the plugins and making sure the users and admins were properly aligned.</p>

<p>In addition to the plugins used for the content I wanted the wordpress feed plugin, so the toplevel blog can syndicate it&#8217;s children. For starters, this blog now syndicates all posts on the cobra blog, thus fulfilling one of the steps i wanted to take with mrblog.nl (it being the parent of *.mrblog.nl in a planet-like construction)</p>

<p>There are some smaller things which I want to correct (like the toplevel syndication pinging back to the child, which is kinda silly) but those can wait.</p>

<div class="iblogger-footer"></div>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2009/01/28/all-blogs-under-one-hood-now.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 years of blogging?</title>
		<link>http://mrblog.nl/2008/11/04/5-years-of-blogging.html</link>
		<comments>http://mrblog.nl/2008/11/04/5-years-of-blogging.html#comments</comments>
		<pubDate>Tue, 04 Nov 2008 17:47:37 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>
		<category><![CDATA[xaraya]]></category>

		<guid isPermaLink="false">http://mrblog.nl/2008/11/04/5-years-of-blogging/</guid>
		<description><![CDATA[I just migrated the posts from this site from Xaraya to a WordPress install, just like I did with My Cobra Blog. Apparently I have been playing for about 5 years with it since my first post. The blog started out as a subdomain of hsdev.com, using an install of Moveable Type (I forgot the [...]]]></description>
			<content:encoded><![CDATA[<p>I just migrated the posts from this site from <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> to a WordPress install, just like I did with <a href="http://cobra.mrblog.nl">My Cobra Blog</a>. Apparently I have been playing for about 5 years with it since my first post. The blog started out as a subdomain of hsdev.com, using an install of Moveable Type (I forgot the version).</p>

<p>I don&#8217;t think I used MT for a long time. At the time I was maintaining/rewriting all the xmlrpc/blogging modules for <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> and it made sense to use my own blog as a testenvironment for it. This weekend I installed <a title="Wordpress " href="http://wordpress.org">WordPress</a> on our servers. Both the <em>&#8220;normal&#8221;</em> version and the <a href="http://mu.wordpress.org">WordPress-µ</a> (Multi-User) were installed. (I had already started with the 2.7 beta, but along the way I sort of realised that the multi user variety is a better choice for me).</p>

<p>So, all new software again for the measly 10 posts I do a year.</p>

<p>The plan is to have mrblog.nl be a &#8216;top-level&#8217;kinda thing, perhaps multi-domain to allow quick creation of blogs and use subdomains for specific purposes (like the cobra blog and I want to experiment with a photo-blog at some point too).</p>

<p>We&#8217;ll see.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2008/11/04/5-years-of-blogging.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A year has passed</title>
		<link>http://mrblog.nl/2008/05/28/a-year-has-passed.html</link>
		<comments>http://mrblog.nl/2008/05/28/a-year-has-passed.html#comments</comments>
		<pubDate>Wed, 28 May 2008 12:03:14 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/108</guid>
		<description><![CDATA[More than a year even, time i come back here again. Most of my publishing has been done at http://cobra.mrblog.nl lately.]]></description>
			<content:encoded><![CDATA[<p>More than a year even, time i come back here again. Most of my publishing has been done at http://cobra.mrblog.nl lately.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2008/05/28/a-year-has-passed.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looks vs Brains</title>
		<link>http://mrblog.nl/2006/04/03/looks-vs-brains.html</link>
		<comments>http://mrblog.nl/2006/04/03/looks-vs-brains.html#comments</comments>
		<pubDate>Mon, 03 Apr 2006 04:39:23 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/106</guid>
		<description><![CDATA[During their lives, people evolve, that&#8217;s a given. For me, they start out as little ugly creatures, which most of us seem to like for some reason, and their brains don&#8217;t seem to do very much either yet. (but who knows, really?) So, low score in looks and brains. The first 25 years seem to [...]]]></description>
			<content:encoded><![CDATA[<p>During their lives, people evolve, that&#8217;s a given. For me, they start out as little ugly creatures, which most of us seem to like for some reason, and their brains don&#8217;t seem to do very much either yet. (but who knows, really?) So, low score in looks and brains.</p>

<p>The first 25 years seem to deal mostly with getting the &#8220;looks&#8221; right. A minority succeeds. A substantially larger part of the population <strong>think</strong> they have succeeded.</p>

<p>In the next 25 years the brains (should) get some more attention. Possibly the earlier mentioned ratio of actual versus perceived success is even worse here. If there is a third or even a fourth quarter for people, looks are pretty much left behind, while in some cases the brains still can produce some occasional surprise.</p>

<p>The above is an intro to what I was really wondering about: How does a software package evolve with respect to &#8220;looks&#8221; and &#8220;brains&#8221; in its life? (As always i&#8217;m mostly focussing on the typical open source package and how that comes to be)</p>

<p>Being the person that I am, that brings roughly this image into my head:</p>

<p style="text-align:center"><a href="http://mrblog.nl/files/2008/11/progdev.jpg"><img class="alignnone size-medium wp-image-78" src="http://mrblog.nl/files/2008/11/progdev.jpg" alt="" width="300" height="300" /></a></p>

<p>Inevitably i tried to catch the question in some sort of equation. Here&#8217;s roughly the train of thought:</p>

<ul>
    <li>as the analogy is a &#8220;natural&#8221; thing some sort of &#8220;natural logarithmic&#8221; component came to mind</li>
    <li>work being mostly done in (large) groups which means that &#8220;things inforce things&#8221; (bad or good) some exponential part should be in there</li>
    <li>it would be nice if we could have a simple number to characterize the curve, like a quality factor Q or something.</li>
</ul>

<p>In the picture above the blue line would be the ideal(?) but rather boring mix where the looks and brains are always completely in balance. (The lifeline starts in the origin following the line with age). The red line would be a &#8220;code-quality&#8221; oriented progression where the green line focusses on looks. The rough idea is to get from the origin to some point on the blue line as far away from the origin as possible. By varying that Q factor that point can be placed anywhere on the blue line. The formula i came up with was this:</p>

<p style="text-align:center"><a href="http://mrblog.nl/files/2008/11/200601200036.jpg"><img class="alignnone size-medium wp-image-67" src="http://mrblog.nl/files/2008/11/200601200036.jpg" alt="" width="44" height="29" /></a></p>

<p>which corresponds to the red line. (the green line is the reciprocal where x and y switched places). The interesting part is to play with the value of Q, look at the graph and reason about the software product. Or vice versa, reason about <em>your</em> project and determine it&#8217;s Q factor.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2006/04/03/looks-vs-brains.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eating my own dogfood</title>
		<link>http://mrblog.nl/2005/12/30/eating-my-own-dogfood.html</link>
		<comments>http://mrblog.nl/2005/12/30/eating-my-own-dogfood.html#comments</comments>
		<pubDate>Fri, 30 Dec 2005 08:43:19 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[revision control]]></category>
		<category><![CDATA[xaraya]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/104</guid>
		<description><![CDATA[We have been considering migrating Xaraya to the creole abstraction layer in the future. Creole is similar to the adodb library we use now. Originally the support for Creole was created to be able to implement a MS-SQL proof of concept quickly. After using the library for a bit I found it much easier to [...]]]></description>
			<content:encoded><![CDATA[<p>We have been considering migrating <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> to the creole abstraction layer in the future. Creole is similar to the <a href="http://adodb.sourceforge.net/" title="adodb library">adodb library</a> we use now. Originally the support for Creole was created to be able to implement a MS-SQL proof of concept quickly. After using the library for a bit I found it much easier to work with than adodb. Creole&#8217;s API is much cleaner and it is PHP5 only, which gives us a head start for future <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> versions.</p>

<p>The <a href="http://monotone.ca" title="Monotone">monotone</a> setup we use allows us to test all this without disturbing main line development. Organizing these bigger changes into scenario&#8217;s allows us to isolate these changes and see where they lead to. The decision to use or to throw away can thus be postponed to a time when we&#8217;re ready to do so.</p>

<p>Since replacing the middleware is potentially a very big step, I noticed we (the <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> group) have some trouble making a decision on what to do with this. Therefore, the creole scenario has been merged into this site to show that a real life site (albeit a small one) can be migrated to creole without any effect. (Note: I&#8217;ve been running creole on other installs for a while now, so I&#8217;ve known this for a while)</p>

<p><strong>Verdict:</strong> one change was necessary to wrap the &#8216;GetRowAssoc&#8217;method present in adodb but not in creole. Everything else worked directly after the merge, so my preliminary conclusion if the decision hangs on &#8216;what impact does this have?&#8217;is that the impact is very minimal. On top of that I think that the issues we might run into are not bad things as such, but chances to improve <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2005/12/30/eating-my-own-dogfood.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filling up your schedule with Xaraya content</title>
		<link>http://mrblog.nl/2005/12/27/filling-up-your-schedule-with-xaraya-content.html</link>
		<comments>http://mrblog.nl/2005/12/27/filling-up-your-schedule-with-xaraya-content.html#comments</comments>
		<pubDate>Tue, 27 Dec 2005 10:26:40 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>
		<category><![CDATA[xaraya]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/102</guid>
		<description><![CDATA[Creating content with Blocklayout in Xaraya is flexible and every once in a while i want to take it for a spin. In the past i&#8217;ve played with creating a XUL theme where Xaraya served it directly as the XUL mimetype, this time i&#8217;ve been playing with creating a calendar feed of any Xaraya content [...]]]></description>
			<content:encoded><![CDATA[<p><p>Creating content with Blocklayout in <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> is flexible and every once in a while i want to take it for a spin. In the past i&#8217;ve played with creating a XUL theme where <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> served it directly as the XUL mimetype, this time i&#8217;ve been playing with creating a calendar feed of any <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> content which has some sort of a date attached to it.</p>What happens is that the content of some part of <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> is fed into an iCal theme which produces output according to the <a title="iCalendar RFC" href="http://www.ietf.org/rfc/rfc2445.txt">iCal standard</a> Blocklayout sets the right content type for us, which allows clients like Apple&#8217;s iCal or Gnome&#8217;s evolution to &#8216;subscribe&#8217;to the calendar feed.</p>

<p><p style="text-align:center"><a href="http://mrblog.nl/files/2008/11/icalxar.png"><img class="alignnone size-medium wp-image-72" src="http://mrblog.nl/files/2008/11/icalxar-300x184.png" alt="" width="300" height="184" /></a></p>Above is an example on how that could look in the iCal application. The Feed block on the right side allows you to do exactly what is described here if you have a client which allows you to subscribe to iCal feeds. I&#8217;ve tested it with Evolution and iCal. The concept is still young but I can see a lot of potential in this.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2005/12/27/filling-up-your-schedule-with-xaraya-content.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smoothly migrating your Xaraya installs to PHP 5</title>
		<link>http://mrblog.nl/2005/12/24/smoothly-migrating-your-xaraya-installs-to-php-5.html</link>
		<comments>http://mrblog.nl/2005/12/24/smoothly-migrating-your-xaraya-installs-to-php-5.html#comments</comments>
		<pubDate>Sat, 24 Dec 2005 08:30:31 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[xaraya]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/101</guid>
		<description><![CDATA[We run about 30 Xaraya installations for our clients on our servers. Some of those clients are eager to migrate to PHP 5 while others are more conventional and want to wait. For others, due to the specific requirements, moving to PHP 5 is not possible yet. How to cater for both of these customers? [...]]]></description>
			<content:encoded><![CDATA[<p>We run about 30 <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> installations for our clients on our servers. Some of those clients are eager to migrate to PHP 5 while others are more conventional and want to wait. For others, due to the specific requirements, moving to PHP 5 is not possible yet. How to cater for both of these customers?</p>

<p>Assuming it&#8217;s common knowledge that if you want to run both php versions on the same server you&#8217;ll have to run two different instances of your webserver, usually on two different ports. In our case, when you access a site you get apache 1.3 with php4 by default. If you access the same site at port 81 (like site.com:81) you get apache 2 with php5.</p>

<p>When you want to make sure that a particular site runs php5 even if accessed through the default port (80) you can include the following in your htaccess file:</p>

<pre>
# Force this site to use port 81 on which php5 is served
RewriteCond %{SERVER_PORT} !81
RewriteRule ^.* http://marcel.hsdev.com:81%{REQUEST_URI} [L,R=301]
</pre>

<p>The first line tests whether the port accessed is <strong>NOT</strong> port 81 and, if the case, redirects the browser to the same request uri, using the 301 status code (&#8220;moved permanently&#8221;) and makes sure it is the last rewrite rule</p>

<p>This setup allows each individual site to decide whether to run on php5, optionally using bleeding edge <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> features like the creole scenario (which requires php5 ) or to server on both php4 and php5. Likewise if you want to <strong>prevent</strong> using php5 it&#8217;s easy to see how the htaccess could be adapted. This situation is however far less common.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2005/12/24/smoothly-migrating-your-xaraya-installs-to-php-5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emerce &#8211; Technologie nieuws: Mention of NLTivo</title>
		<link>http://mrblog.nl/2005/12/09/emerce-technologie-nieuws-mention-of-nltivo.html</link>
		<comments>http://mrblog.nl/2005/12/09/emerce-technologie-nieuws-mention-of-nltivo.html#comments</comments>
		<pubDate>Fri, 09 Dec 2005 10:05:45 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[current affairs]]></category>
		<category><![CDATA[people]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/100</guid>
		<description><![CDATA[Emerce &#8211; Technologie nieuws: TiVo maakt downloaden naar iPod mogelijk: De Tivo-dienst is officieel alleen beschikbaar in de Verenigde Staten en het Verenigd Koninkrijk. In Nederland bestaan ook TiVo-gebruikers. Wie het apparaat hier wil gebruiken moet wel flink sleutelen aan het oorspronkelijke apparaat. De Nederlandse TiVo-gemeenschap assisteert hierbij Translation: &#8220;The TiVo-service is officially only available [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.emerce.nl/nieuws.jsp?id=972005">Emerce &#8211; Technologie nieuws: TiVo maakt downloaden naar iPod mogelijk</a>:</p>

<blockquote>
  De Tivo-dienst is officieel alleen beschikbaar in de Verenigde Staten en het Verenigd Koninkrijk. In Nederland bestaan ook TiVo-gebruikers. Wie het apparaat hier wil gebruiken moet wel flink sleutelen aan het oorspronkelijke apparaat. De <a href="http://www.nltivo.net/index.php/NLTiVo:About" title="NLTivo community site">Nederlandse TiVo-gemeenschap</a> assisteert hierbij
</blockquote>

<blockquote>
  Translation: &#8220;The TiVo-service is officially only available in the United States an the the United Kingdom. In the Netherlands there are also TiVo-users. Who wants to use the device here, has to perform quite a bit of tinkering with the original device. <a href="http://www.nltivo.net/index.php/NLTiVo:About" title="NLTivo community site">The Dutch TiVo community</a> has some useful info.&#8221;
</blockquote>

<p>This community site was started by Dennis and myself. Lately Dennis has done some great work making it easy to create a fully working TiVo in the Netherlands. The critical point is having high quality guide data. Dennis runs a Guide Data server for the community. Several others, including me, run their own emulators for further development.</p>

<p>While it would be great to have an official TiVo service in the Netherlands, it would also destroy the community as it exists today, because the moment an official TiVo subscription can be had, our efforts become illegal, not only by the way TiVo license it hard- and software, but also by the licenses imposed by the several TiVo groups themselves. Most of the open tools developed have an explicit mention you can only use them if there is no official TiVo service available in your area&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2005/12/09/emerce-technologie-nieuws-mention-of-nltivo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xaraya 2.0 Brainstorming</title>
		<link>http://mrblog.nl/2005/11/10/xaraya-20-brainstorming.html</link>
		<comments>http://mrblog.nl/2005/11/10/xaraya-20-brainstorming.html#comments</comments>
		<pubDate>Thu, 10 Nov 2005 13:46:34 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[xaraya]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/99</guid>
		<description><![CDATA[Let&#8217;s try to create a chain of documents like the one John did in Xaraya 2.0 Brainstorming. After a while the common denominators should float to the surface by looking at the whole chain. I tend to view at an application development process like this: make it work make it right make it nice make [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s try to create a chain of documents like the one John did in <a href="http://wyome.com/index.php?module=articles&amp;func=display&amp;ptid=10&amp;aid=473"><a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> 2.0 Brainstorming</a>. After a while the common denominators should float to the surface by looking at the whole chain.</p>

<p>I tend to view at an application development process like this:</p>

<ol>
  <li>make it work</li>
  <li>make it right</li>
  <li>make it nice</li>
  <li>make if fast</li>
</ol>

<p>For <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a>, the 1.0 release signals to me we&#8217;ve been able to make it work. Now, let&#8217;s try to make it right. Some ideas on how follow.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2005/11/10/xaraya-20-brainstorming.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xaraya connects to worldkit</title>
		<link>http://mrblog.nl/2005/06/15/xaraya-connects-to-worldkit.html</link>
		<comments>http://mrblog.nl/2005/06/15/xaraya-connects-to-worldkit.html#comments</comments>
		<pubDate>Wed, 15 Jun 2005 09:32:12 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[integration]]></category>
		<category><![CDATA[xaraya]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/94</guid>
		<description><![CDATA[For play, i constructed a couple of templates on the Xaraya site to connect the Worldkit package to a xaraya installation to construct a geographical map (flash based) of the registered users on the Xaraya site. Worldkit uses an RSS feed with location information to construct an image where the data points are shown on [...]]]></description>
			<content:encoded><![CDATA[<p>For play, i constructed a couple of templates on the <a href="http://xaraya.com" title="<a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> homepage"><a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a></a> site to connect the <a href="http://brainoff.com/worldkit/" title="RSS based Mapping package">Worldkit</a> package to a xaraya installation to construct a <a href="http://xaraya.com/worldmap" title="Map of developer locations">geographical map</a> (flash based) of the registered users on the <a href='http://xaraya.com' rel='external ' title='Xaraya web application framework'>Xaraya</a> site.</p>

<p>Worldkit uses an RSS feed with location information to construct an image where the data points are shown on a map. In doing so, of course the RSS feed can be subscribed to in the &#8216;normal&#8217;way too, giving you an addressbook directly in your aggregator of all people who have provided their longitude and latitude information on the site.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2005/06/15/xaraya-connects-to-worldkit.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gentoo&#8217;s Portage to be ported to Windows Services for UNIX</title>
		<link>http://mrblog.nl/2005/05/17/gentoos-portage-to-be-ported-to-windows-services-for-unix.html</link>
		<comments>http://mrblog.nl/2005/05/17/gentoos-portage-to-be-ported-to-windows-services-for-unix.html#comments</comments>
		<pubDate>Tue, 17 May 2005 19:59:25 +0000</pubDate>
		<dc:creator>mrb</dc:creator>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://marcel.hsdev.com/blogentry/93</guid>
		<description><![CDATA[Gentoo&#8217;s Portage to be ported to Windows Services for UNIX: A group of Windows programmers is working on porting Gentoo&#8217;s Portage over to Windows SFU. If you don&#8217;t know already, Windows Services for UNIX is a full POSIX subsystem for Windows, enabling it to compile and run almost any software that will compile on BSD, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.osnews.com/story.php?news_id=10616">Gentoo&#8217;s Portage to be ported to Windows Services for UNIX</a>:<br /></p>

<blockquote>
  <p>A group of Windows programmers is working on porting Gentoo&#8217;s Portage over to Windows SFU. If you don&#8217;t know already, Windows Services for UNIX is a full POSIX subsystem for Windows, enabling it to compile and run almost any software that will compile on BSD, Solaris, HP/UX, and Linux. Details to &#8220;emerge&#8221; soon.</p>
</blockquote>

<p>That sounds a lot like a <a href="http://mrblog.nl/2004/12/07/opportunity-apt-get-like-program-on-windows/">post i made earlier</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mrblog.nl/2005/05/17/gentoos-portage-to-be-ported-to-windows-services-for-unix.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

