<?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>Alain M. Lafon</title>
	<atom:link href="http://blog.dispatched.ch/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dispatched.ch</link>
	<description>code, life and struggles thereof</description>
	<lastBuildDate>Thu, 29 Jul 2010 14:08:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=1693</generator>
		<item>
		<title>Things a balrog can do</title>
		<link>http://blog.dispatched.ch/2010/07/29/things-a-balrog-can-do/</link>
		<comments>http://blog.dispatched.ch/2010/07/29/things-a-balrog-can-do/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 14:03:55 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/29/things-a-balrog-can-do/</guid>
		<description><![CDATA[Just a little Venn diagram that came up during lunch break.]]></description>
			<content:encoded><![CDATA[<p>Just a little Venn diagram that came up during lunch break.<br />
<img src="http://blog.dispatched.ch/wp-content/uploads/2010/07/things_a_balrog_can_do.png" alt="" width="300" height="300" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/29/things-a-balrog-can-do/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>0verkill (howto enjoy work properly &#8211; the geeky way)</title>
		<link>http://blog.dispatched.ch/2010/07/20/0verkill-howto-enjoy-work-properly-the-geeky-way/</link>
		<comments>http://blog.dispatched.ch/2010/07/20/0verkill-howto-enjoy-work-properly-the-geeky-way/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:33:52 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/20/0verkill-howto-enjoy-work-properly-the-geeky-way/</guid>
		<description><![CDATA[If you ever lacked an idea on how to spend your time at work properly, here&#8217;s a fun thing to try: 0verkill &#8211; a multiplayer 2D ASCII art shooter.Hell yeah, an ASCII art shooter, you heard right! To hell with those flashy commercials claiming to be proper games! If you&#8217;re on a Debian box (as [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever lacked an idea on how to spend your time at work properly, here&#8217;s a fun thing to try: <em>0verkill &#8211; </em>a multiplayer 2D ASCII art shooter.Hell yeah, an ASCII art shooter, you heard right! To hell with those flashy commercials claiming to be proper games!<br />
<em><br />
</em>If you&#8217;re on a Debian box (as you should), you can install it from the commandline<br />
<strong>$ aptitude install overkill </strong></p>
<p><strong> </strong>If you&#8217;re less lucky, you can also go to the <a href="http://artax.karlin.mff.cuni.cz/%7Ebrain/0verkill/">author&#8217;s homepage</a>, download and build it yourself. The package will feature the game itself, a dedicated server and a level-editor. Plenty of room for a great many gaming sessions!</p>

<div class="ngg-imagebrowser" id="ngg-imagebrowser-11-1180">

	<h3>overkill2</h3>

	<div class="pic">
<a href="http://blog.dispatched.ch/wp-content/gallery/0verkill/overkill2.png" title="" class="shutterset_0verkill" rel="lightbox[1180]">
	<img alt="overkill2" src="http://blog.dispatched.ch/wp-content/gallery/0verkill/overkill2.png"/>
</a>
</div>
	<div class="ngg-imagebrowser-nav"> 
		<div class="back">
			<a class="ngg-browser-prev" id="ngg-prev-120" href="http://blog.dispatched.ch/2010/07/20/0verkill-howto-enjoy-work-properly-the-geeky-way/?pid=120">&#9668; Back</a>
		</div>
		<div class="next">
			<a class="ngg-browser-next" id="ngg-next-119" href="http://blog.dispatched.ch/2010/07/20/0verkill-howto-enjoy-work-properly-the-geeky-way/?pid=119">Next &#9658;</a>
		</div>
		<div class="counter">Picture 1 of 3</div>
		<div class="ngg-imagebrowser-desc"><p></p></div>
	</div>	

</div>	


<p>Notes:<br />
1. There were more players, but I didn&#8217;t managage to get my glorifying screenshot soon enough.<br />
2. Beware of server lag. I played it in a screen session on a Linux VPS. I got a load average of up to 19.48, 7.16, 3.00</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/20/0verkill-howto-enjoy-work-properly-the-geeky-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hack yourself a webcam</title>
		<link>http://blog.dispatched.ch/2010/07/19/hack-yourself-a-webcam/</link>
		<comments>http://blog.dispatched.ch/2010/07/19/hack-yourself-a-webcam/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 21:10:37 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[webcam]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/19/hack-yourself-a-webcam/</guid>
		<description><![CDATA[Google for inurl:&#8221;ViewerFrame?Mode=&#8221; -inurl -intitle and have fun controlling other peoples&#8217; webcams.]]></description>
			<content:encoded><![CDATA[<div class="posterous_autopost">
<p><a href="http://www.google.ch/search?q=inurl:%22ViewerFrame?Mode=%22+-inurl+-intitle">Google</a> for <em><strong>inurl:&#8221;ViewerFrame?Mode=&#8221; -inurl -intitle </strong><span style="font-style: normal;">and have fun controlling other peoples&#8217; webcams.</span></em></p>
<div class="wp-caption alignnone" style="width: 436px"><a href="http://blog.dispatched.ch/wp-content/gallery/hack_a_webcam/controllable_webcam.png" rel="lightbox[1170]"><img class="  " src="http://blog.dispatched.ch/wp-content/gallery/hack_a_webcam/controllable_webcam.png" alt="" width="426" height="274" /></a><p class="wp-caption-text">Some webcam in Japan I presume</p></div>
<p style="text-align: center;">
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/19/hack-yourself-a-webcam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sometimes I just get this feeling..</title>
		<link>http://blog.dispatched.ch/2010/07/19/sometimes-i-just-get-this-feeling/</link>
		<comments>http://blog.dispatched.ch/2010/07/19/sometimes-i-just-get-this-feeling/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 12:54:54 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/19/sometimes-i-just-get-this-feeling/</guid>
		<description><![CDATA[As soon as an incompetent manager gets to have only one say during a project, hell seems to break loose and stuff just gets worse. Finally, after many sessions of hardcore reverse engineering, I have concluded the algorithm used by senior management. Hereby, I share it with the world. &#60;pre&#62; def ask_manager(question=&#34;Can I dump Windows [...]]]></description>
			<content:encoded><![CDATA[<p>As soon as an <span style="text-decoration: line-through;">incompetent</span> manager  gets to have only one say during a project, hell seems to break loose  and stuff just gets worse.</p>
<p>Finally, after many sessions of  hardcore reverse engineering, I have concluded the algorithm used by  senior management. Hereby, I share it with the world.</p>
<pre class="brush: python;">

&lt;pre&gt;  def ask_manager(question=&quot;Can I dump Windows and use Linux?&quot;):
  &quot;&quot;&quot;
   Bend the universe to the magical logic of senior management
  &quot;&quot;&quot;

  if True:
    globals()['True'], globals()['False'] = False, True

  if True:
   return &quot;Do as requested.&quot;
  else:
   return &quot;Do the opposite.&quot;
                        </pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/19/sometimes-i-just-get-this-feeling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My grandfather&#8217;s iPad</title>
		<link>http://blog.dispatched.ch/2010/07/18/my-grandfathers-ipad/</link>
		<comments>http://blog.dispatched.ch/2010/07/18/my-grandfathers-ipad/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 19:28:32 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[grandfather]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[lifestyle]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/18/my-grandfathers-ipad/</guid>
		<description><![CDATA[My grandfather has always been what I would call an all-around techie. He has built himself three houses in his lifetime, with hard work he climbed the ladder to become head of department (100+ employees) in a company working in the metal industry and he still owns the biggest private workshop I&#8217;ve ever seen. He [...]]]></description>
			<content:encoded><![CDATA[<p>My grandfather has always been what I would call an all-around techie. He has built himself three houses in his lifetime, with hard work he climbed the ladder to become head of department (100+ employees) in a company working in the metal industry and he still owns the biggest private workshop I&#8217;ve ever seen. He knows how to build big machinery and repair everyday electronics. Heck, he didn&#8217;t want to buy handrails for his house, so he built a 5meter/5ton &#8220;gadget&#8221; to cold twist 5cm thick steel. That&#8217;s the man my grandfather is &#8211; a real man&#8217;s man.</p>
<p>He will be 76 in a few months, but that doesn&#8217;t slow him down. He owns a big screen Plasma and always carries his mobile phone. The only &#8220;weak spot&#8221; considering regular use of technology is computers. It has been over ten years now since he retired. Back in the day his company just started using computers for accounting. But well, what do you have secretaries for?(;</p>
<p>Anyway, the first computer he bought was a brand new Pentium II. Back in the day Win98 was considered state of the art and Linux was not made for n00bs. Understandingly, he never grew into it. Neither did I. But while I switched to Linux, he didn&#8217;t find any good use for his computer.</p>
<p>When I bought my first Apple Macbook in 2007, I installed his second machine (coincidentally my previous PC). It was an IBM dual PIII workstation/monster with lots of RAM. Before it changed owners, I operated it with 6 graphics cards and 6 HDDs. I also got my grandfather a modem, a printer and a fax. The workstation ran Ubuntu 2006/04 which was a decent improvement on Win98.</p>
<p>Even though Ubuntu already had a pretty good user interface, usage was still clunky. He had to go to the &#8220;computer room&#8221;, switch off the phone, switch on the modem, boot the PC, connect to the internet. He had to use peripherals he was absolutely not used to. I didn&#8217;t think it was this hard to use a mouse, but when you&#8217;re 70 and never had to use one, this device really can be a deal killer. Honestly, who invented the single left click, the double click and the right click methodology? When he kept asking me over and over when to do what, I realized how bad a design decision this really was.</p>
<p>Skip a few years ahead. We&#8217;re in June 2010 now. Apple reveals the iPad.</p>
<p>I decided pretty fast I had to get this device for my grandfather. I was sure he would love to use a computer for mail, news, his favorite croatian radio program (which is normally broadcasted via medium wave &#8211; in Germany there&#8217;s only reception at night), games and reading about cooking and gardening. There was just no way he would do it with a standard PC in the back of his house. But he would do it on his couch if what he wanted was only one click away. Besides, he always fancied my iPhone as a pretty cool device.</p>
<p>So I went to my local Apple Store and got on the priority list. A couple of weeks later I got mail saying I had 24h time to fetch it from the store. And so I did. I wanted him to have an Google account for mail and calendar, various bookmarks, apps and games preinstalled. Of course I bought the 3G version, so I got my hands on a data plan. The first three days I configured and tested the iPad in such a way that everything would just work out of the box.</p>
<p>Well, what can I say. The decision to get him an iPad has been an overwhelming success! He loves the device, tells me it&#8217;s so much easier to use and he keeps asking perfectly good questions on stuff I have not yet taught him. And when he get&#8217;s shown what to do, he will remember it and not ask the same question again.</p>
<p>Being the interested and always curious techie he is, he already wrote me mail, read some stuff online and played many winning sessions in Mahjong. I&#8217;m quite interested as to where this new love goes. We already upgraded and bought the iPad case &#8211; we also wanted the camera connection kit to match his Sony Cybershot, but it is out of stock in Zürich, Stuttgart and even online!</p>
<p>I&#8217;m happy he finally made the transition to being part-time online. And I guess he is, too.</p>
<p>Just my 2c on how useful the iPad can be.</p>

<div class="ngg-imagebrowser" id="ngg-imagebrowser-9-1143">

	<h3>Unpacking</h3>

	<div class="pic">
<a href="http://blog.dispatched.ch/wp-content/gallery/grandfathers_ipad/Unpacking.jpg" title="" class="shutterset_grandfathers_ipad" rel="lightbox[1143]">
	<img alt="Unpacking" src="http://blog.dispatched.ch/wp-content/gallery/grandfathers_ipad/Unpacking.jpg"/>
</a>
</div>
	<div class="ngg-imagebrowser-nav"> 
		<div class="back">
			<a class="ngg-browser-prev" id="ngg-prev-114" href="http://blog.dispatched.ch/2010/07/18/my-grandfathers-ipad/?pid=114">&#9668; Back</a>
		</div>
		<div class="next">
			<a class="ngg-browser-next" id="ngg-next-115" href="http://blog.dispatched.ch/2010/07/18/my-grandfathers-ipad/?pid=115">Next &#9658;</a>
		</div>
		<div class="counter">Picture 1 of 3</div>
		<div class="ngg-imagebrowser-desc"><p></p></div>
	</div>	

</div>	


]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/18/my-grandfathers-ipad/feed/</wfw:commentRss>
		<slash:comments>58</slash:comments>
		</item>
		<item>
		<title>This is how you do it</title>
		<link>http://blog.dispatched.ch/2010/07/18/this-is-how-you-do-it/</link>
		<comments>http://blog.dispatched.ch/2010/07/18/this-is-how-you-do-it/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 16:49:55 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[lifestyle]]></category>
		<category><![CDATA[movie]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/18/this-is-how-you-do-it/</guid>
		<description><![CDATA[This is how a waitress taught the three IT guys(me and two friends) during lunch break how to enjoy rich video content these days. Kinda crazy, I didn&#8217;t think that such a thing could completely elude me for such a long time. Great surplus: Only downloading is considered legal in Switzerland. Anyways, I will keep [...]]]></description>
			<content:encoded><![CDATA[<div class="posterous_autopost">
<p>This is how a waitress taught the three IT guys(me and two friends)  during lunch break how to enjoy rich video content these days. Kinda  crazy, I didn&#8217;t think that such a thing could completely elude me for  such a long time.</p>
<p>Great surplus: Only downloading is considered legal in Switzerland.</p>
<p>Anyways, I will keep paying for my movies on iTunes for quality,  convenience and a great service. movie2k, however, has proven to be a  great source of many beloved contemporary series that, not being a US  resident, I couldn&#8217;t watch legally otherwise.</p>
<p>So, thanks Ms. ? for this hint.</p>
<p><a href="http://posterous.com/getfile/files.posterous.com/dispatched/xAwei9tFj9jMwQQVEzWykpon57ZbTg1PrOjBBXfyPmZUQ0mLzApYAmoO5MXa/photo.jpg.scaled.1000.jpg" rel="lightbox[1137]"><img src="http://posterous.com/getfile/files.posterous.com/dispatched/yTmhnJbb6oBJgbacztq301Z9AoXT3pSVebRpyjM47v4hczpPaM1oydWZjnP7/photo.jpg.scaled.500.jpg" alt="" width="202" height="270" /></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/18/this-is-how-you-do-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screw it</title>
		<link>http://blog.dispatched.ch/2010/07/18/screw-it/</link>
		<comments>http://blog.dispatched.ch/2010/07/18/screw-it/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 00:19:39 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[macbook]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/18/screw-it/</guid>
		<description><![CDATA[In a recent night, I really, really wanted my Macbook C2D to be less noisy. Even though it is not my primary workstation the permanent high-pitch humming made it near impossible to get any decent work done.Thanks to ifixit.com it took me a mere 2h to disassemble, clean and reassemble my MB. The process taught [...]]]></description>
			<content:encoded><![CDATA[<p>In a recent night, I really, really wanted my Macbook C2D to be less noisy. Even though it is not my primary workstation the permanent high-pitch humming made it near impossible to get any decent work done.Thanks to ifixit.com it took me a mere 2h to disassemble, clean and reassemble my MB. The process taught me a decent humbleness before those who do this for a living &#8211; this computer is definitely _not_ built with frequent modification in mind.</p>
<p>If only I had found a any dust to clean out, the work might have been worth the effort. In the two+ years of heavily working with the MB (also in potentially &#8220;dirty places&#8221; like couches, beds and cars [pun intended]), there was close to no dirt accumulation. Either that&#8217;s due to a really good design or I can easily start to mess my apartment a little more up.</p>
<p>Anyway, two screws will never find their way back into the MB. One is lost due to the bolt thread being fragged by unscrewing, the other I just forgot to put back to where it came from. Well, what good (or bad) can such a tiny screw do?</p>
<p>At least the MB hasn&#8217;t become louder in the process.</p>

<div class="ngg-galleryoverview" id="ngg-gallery-8-1130">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-103" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.dispatched.ch/wp-content/gallery/macbook-disassemble/open_book.jpg" title=" " class="shutterset_set_8"  rel="lightbox[1130]">
								<img title="open_book" alt="open_book" src="http://blog.dispatched.ch/wp-content/gallery/macbook-disassemble/thumbs/thumbs_open_book.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-104" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.dispatched.ch/wp-content/gallery/macbook-disassemble/screw_it.jpg" title=" " class="shutterset_set_8"  rel="lightbox[1130]">
								<img title="screw_it" alt="screw_it" src="http://blog.dispatched.ch/wp-content/gallery/macbook-disassemble/thumbs/thumbs_screw_it.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/18/screw-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doing it consciously</title>
		<link>http://blog.dispatched.ch/2010/07/07/doing-it-consciously/</link>
		<comments>http://blog.dispatched.ch/2010/07/07/doing-it-consciously/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 14:40:41 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/07/doing-it-consciously/</guid>
		<description><![CDATA[While running, I realized something today. More often than not I tend to do things as if there was some kind of enforcement of doing them &#8211; even if I especially like doing whatever it is I&#8217;m doing. Sometimes this happens in the strangest of circumstances, for example running in a beautiful forest during lunchtime. [...]]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>While running, I realized something today. More often than not I tend to do things as if there was some kind of enforcement of doing them &#8211; even if I especially like doing whatever it is I&#8217;m doing. Sometimes this happens in the strangest of circumstances, for example running in a beautiful forest during lunchtime.
<p /> When I should be happy about escaping business for an hour or two while seeking harmony of body and soul, I wonder about some unfavorable thing I will have to do when finishing my run. I could think about work, having to have a long drive afterward, preparing exams, doing all kinds of crazy demanding stuff.
<p /> Instead I should focus on the moment. Sometimes there&#8217;s something really good going on even without me having made the choice of doing it. And if I made a choice, I should stick to it even more, quit moaning and enjoy the hell out of it.
<p /> This conclusion came to me on kilometer 9, on an uphill battle against my concentration of not going to stop just because there&#8217;s a hill in my way. Needless to say that the hill probably was the best part of the workout. My run today trained me well and I felt really good about it. And I&#8217;m humble of having had this particular pleasure.
<p /> Anyway, I wonder.. I believe I have known about this small, but prevalently important attitude. I should start meditating again, I miss it at any rate.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/07/doing-it-consciously/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable Windows auto desktop lock</title>
		<link>http://blog.dispatched.ch/2010/07/06/disable-windows-auto-desktop-lock/</link>
		<comments>http://blog.dispatched.ch/2010/07/06/disable-windows-auto-desktop-lock/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 11:51:31 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/06/disable-windows-auto-desktop-lock/</guid>
		<description><![CDATA[Let me start with: &#8220;I hate Windows from the bottom of my heart.&#8221; But there&#8217;s another level of hate. I hate pseudo business proof settings in Windows even more. One of those would be the &#8220;Auto Lock&#8221;. Anyway, if you think that your (clients) VPN &#8211; or bureau for that case &#8211; can keep up [...]]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>     Let me start with: &#8220;I hate Windows from the bottom of my heart.&#8221;
<p />  But there&#8217;s another level of hate. I hate pseudo business proof settings in Windows even more. One of those would be the &#8220;Auto Lock&#8221;.
<p />  Anyway, if you think that your (clients) VPN &#8211; or bureau for that case &#8211; can keep up its security without the dreaded auto lock &#8211; here&#8217;s what you do:
<p />  <b>1. Hate the auto lock</b>
<p />  <img src="http://posterous.com/getfile/files.posterous.com/dispatched/W3rOXgSlCtZiMNl16Gxx33w6NAedryirBXHOptJQYlu9VgIlAtKKiElLvFgH/2010-07-06_13h33_50.png" width="309" height="262"/>
<p />  <b><br /> 2. Right click your desktop</b>
<p />  <img src="http://posterous.com/getfile/files.posterous.com/dispatched/W6645yqvrTDEL6tvkyJSeldl5rY9g6kegmEy0BKlUjmNU9TaX7VfZG6EKQhQ/2010-07-06_13h30_26.png" width="177" height="239"/>
<p />  <b><br /> 3. Chose screensaver</b>
<p />  <a href='http://posterous.com/getfile/files.posterous.com/dispatched/XQbaeMXFjRKfgUp9Sv5njMWgKjeVpaxO27QAAYXbFeeZFVVMrOJ8VFLu1eBS/2010-07-06_13h30_38.png' rel="lightbox[1127]"><img src="http://posterous.com/getfile/files.posterous.com/dispatched/3b8q8TJPpMjcbz8FVkmXb5qsNAR2qCRUi1K2KEM1XMRUpDryyg83cvP9j2oR/2010-07-06_13h30_38.png.scaled.500.jpg" width="500" height="51"/></a>
<p />  <b>4. Uncheck &#8220;On resume, display logon screen&#8221;</b>
<p />  <img src="http://posterous.com/getfile/files.posterous.com/dispatched/33jwgx2fPD9A9xj0bbVCNTFfmQUbkvQF1oZC5W9dtoaDzneHkyPS1FF75gxV/moz-screenshot-13.jpg" width="468" height="503"/> <br /> <b><br /> 5. Be <img src="http://posterous.com/getfile/files.posterous.com/dispatched/xNUqPV3h163A370P9j1Rqctje8zk1wFTuzDotAQ62t59Xpoid0LM62fHfkez/moz-screenshot-14.jpg" width="128" height="86"/> <br /> </b><br /> At least a little less unhappy. You&#8217;re still with Windows. You&#8217;re still doomed. But the apocalypse is a little farther away for now.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/06/disable-windows-auto-desktop-lock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scaling down</title>
		<link>http://blog.dispatched.ch/2010/07/05/scaling-down-2/</link>
		<comments>http://blog.dispatched.ch/2010/07/05/scaling-down-2/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 12:24:27 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/07/05/scaling-down-2/</guid>
		<description><![CDATA[When I came to work at 9:25AM today, I was greeted by open doors &#8211; but not our hermetically sealed bureau was breached (at least not this time), but the equally secure &#8216;server&#8217;-farm. Why do I mention the time? Because I was the first developer on the scene. Sitting down on my desk the next [...]]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>
<p>When I came to work at 9:25AM today, I was greeted by open doors &#8211; but not our hermetically sealed bureau was breached (at least not this time), but the equally secure &#8216;server&#8217;-farm.
<p />  Why do I mention the time? Because I was the first developer on the scene.  <a href='http://posterous.com/getfile/files.posterous.com/dispatched/Sl6geInDWnMC7QULs12JbpFeJ4j1dN1a16LbBAVlx5rnybjOA1ZTq0I4G4Id/cd679adb-ff4e-4b49-81d9-2cc725.png.scaled.1000.jpg' rel="lightbox[1125]"><img src="http://posterous.com/getfile/files.posterous.com/dispatched/svozDsp6bD211pd2bVcr1NDWC5T4paer38CLHG2LwF3A2Wml8hTHhXbe86hg/cd679adb-ff4e-4b49-81d9-2cc725.png.scaled.500.jpg" width="500" height="667"/></a>
<p /> Sitting down on my desk the next failure was waiting for me &#8211; some of our systems apparently are having trouble. Maybe the fan is not up to speed. Who knows.
<p />  <img src="http://posterous.com/getfile/files.posterous.com/dispatched/kFQ9nwqit4KIpCFW4eBocC9OlspN9JagsNvIhH9gpIdTxvnALBjze7n8vKGL/a00d96be-0e52-4ded-9660-bdc825.png" width="388" height="181"/>
<p />
<p />  Bottom line: good thing I adapted my clothing to our working athmosphere, today. Pun intended.<br /> <a href='http://posterous.com/getfile/files.posterous.com/dispatched/mQYUR8NfZD6xJnzVMueC1S05m2JR83VQkQbG4QRYUt5HxasjyzgFa3lJAzRH/moz-screenshot-12.jpg.scaled.1000.jpg' rel="lightbox[1125]"><img src="http://posterous.com/getfile/files.posterous.com/dispatched/PpVbskT80ozEsVpIetCPptkNZBWAI0bS6FqgDrq0nFOEcQ4LtCLA92SQXBr2/moz-screenshot-12.jpg.scaled.500.jpg" width="500" height="375"/></a> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/07/05/scaling-down-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VIM to write mails in Thunderbird</title>
		<link>http://blog.dispatched.ch/2010/06/30/vim-to-write-mails-in-thunderbird/</link>
		<comments>http://blog.dispatched.ch/2010/06/30/vim-to-write-mails-in-thunderbird/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 16:12:20 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[tunderbird]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/06/30/vim-to-write-mails-in-thunderbird/</guid>
		<description><![CDATA[While at work, I have to use Windows. Since Windows doesn&#8217;t ship with a decent mail/calendar solution (nope, Outlook doesn&#8217;t qualiy &#8211; keywords &#8220;winmail.dat&#8221; and &#8220;ics support&#8221; should trigger your memory), I had to build a custom setup. Thunderbird is a good basis and does the job well. It&#8217;s sleek and has good IMAP support. [...]]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>      While at work, I have to use Windows. Since Windows doesn&#8217;t ship with a decent mail/calendar solution (nope, Outlook doesn&#8217;t qualiy &#8211; keywords &#8220;winmail.dat&#8221; and &#8220;ics support&#8221; should trigger your memory), I had to build a custom setup.
<p />  Thunderbird is a good basis and does the job well. It&#8217;s sleek and has good IMAP support. Combine that with plugins for <a href="http://vcssupport.blogspot.com/">VCS support</a>, <a href="http://www.mozilla.org/projects/calendar/lightning/">Lightning </a>for an integrated calendar and the <a href="http://www.mozilla.org/projects/calendar/lightning/">provider for Google Calendar</a>, you find yourself with a decent toolset. What kept bugging me is editing the mails.&nbsp; Coming from mutt/VIM, I might be biased on that one. Heck, I&#8217;m even using the <a href="http://vimperator.org/">Vimperator </a>plugin in Firefox and find that it brightens each and every day.
<p />  Anyway, there is release to that pain! There&#8217;s a plugin called &#8220;External Editor&#8221; &#8211; it works in Windows as it does in real OSs and it&#8217;s actually quite a charm as you can see. You can find all you need on <a href="http://globs.org/download.php?lng=en">globs.org</a>. Just follow the instructions and you&#8217;ll be happy.
<p />  <a href='http://posterous.com/getfile/files.posterous.com/dispatched/NuR1HzF9r1gvsyVSVuOdpMSUe4UoG0rcyhymt11132DFQzJJmoEwr7BqFv2z/moz-screenshot-10.jpg' rel="lightbox[1122]"><img src="http://posterous.com/getfile/files.posterous.com/dispatched/qNrvPsKDkNvVpp3PRwuoGX2qWZwQGfdWh5k0hSrM6KHQ56ASxBsyKli7I48Y/moz-screenshot-10.jpg.scaled.500.jpg" width="500" height="401"/></a>
<p />  Tips: Customize your mail view to show the feature &#8220;External Editor&#8221; or use the pre-defined shortcut CTRL+e to open your custom editor (that is VIM for me^^).
<p />  <img src="http://posterous.com/getfile/files.posterous.com/dispatched/MEZcC7QEYQ4Ge692LLWHt7oKr1ye88nlcc0ERh3CUAjDcGWvy7PqJgimC8xm/moz-screenshot-11.jpg" width="411" height="50"/>
<p />  Have fun and enjoy the sweet life(; &nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/06/30/vim-to-write-mails-in-thunderbird/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iOS 4 Mail.app Fail</title>
		<link>http://blog.dispatched.ch/2010/06/26/ios-4-mailapp-fail/</link>
		<comments>http://blog.dispatched.ch/2010/06/26/ios-4-mailapp-fail/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 13:26:26 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/06/26/ios-4-mailapp-fail/</guid>
		<description><![CDATA[Do I have to say that neither OS X Mail.app nor Roundcube webmail show me emails from 01.01.70 aka Epoch time 00000000? I cannot open or delete them. That bugs me a bit. And what about this stray email from 01.01.01? Which year exactly is that? First day after Christ?]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>Do I have to say that neither OS X Mail.app nor Roundcube webmail show me emails from 01.01.70 aka Epoch time 00000000? I cannot open or delete them. That bugs me a bit. And what about this stray email from 01.01.01? Which year exactly is that? First day after Christ?
<p><img src="http://posterous.com/getfile/files.posterous.com/dispatched/J9aRHzZwN0brraePy8SCqXZSQ9QEZuCbaKdHZx4F4waSyjGjvJuU6Fx6So69/photo.png" width="320" height="480"/> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/06/26/ios-4-mailapp-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>True story &#8211; Software Engineering fail (follow up)</title>
		<link>http://blog.dispatched.ch/2010/06/26/true-story-software-engineering-fail-follow-up/</link>
		<comments>http://blog.dispatched.ch/2010/06/26/true-story-software-engineering-fail-follow-up/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 11:28:35 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/06/26/true-story-software-engineering-fail-follow-up/</guid>
		<description><![CDATA[Funny thing &#8211; or should I say: True story! In my most recent blog post&#160;&#8220;I want to work in a company which&#8221;&#160;I wrote about some issues of a random company. I published this article three days before news of this particular company struck me again in agony. While reading this, keep in mind that this [...]]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>Funny thing &#8211; or should I say: True story!
<p />
<div>In my most recent blog post&nbsp;<a href="http://blog.dispatched.ch/2010/06/22/i-want-to-work-in-a-company-which-or-yet-another-random-business-rant/">&#8220;I want to work in a company which&#8221;</a>&nbsp;I wrote about some issues of a random company. I published this article three days before news of this particular company struck me <i>again</i> in agony. While reading this, keep in mind that this company&nbsp;has no direct connection to me whatsoever.</div>
<p />
<div>Apparently the head of department of sales and marketing walked up to the programmers of his division. I have been told he normally&nbsp;would&nbsp;not even be seen in closer proximity of the tech department. However, this time he was obviously in pain and instantly called for a crisis-meeting.</div>
<p />
<div>In the meeting there were reports of working hours of the programmers, there were affronting comments on peoples&#8217; work ethics &#8211; there even was a printout of an emergency escalation e-mail of a client. Reverse engineering of the misleading rants brought light into the programmers&#8217; darkness. It seemed that the client was waiting for a major software roll-out. Now, while the company seemed to desperately need this client, it <i>forgot</i> to tell the programmers about the roll-out.</div>
<p />
<div>Well, what could we say? I&#8217;d call it: <i>Software Engineering Fail</i>.</div>
<p />
<div>It seems this company lacks basic release management &#8211; all they now is hotfixes. Also, there are no reviews, there is no transparent project planning, there&#8217;s no testing framework or regression testing. There is no procedure model which in combination with no apparent quality management is certain proof for failure in engineering larger scale software for a living.</div>
<p />
<div>What is left to do? I have heard the programmers had a meeting of their own. They talked for hours about basic and pragmatic needs for succeeding in what they are paid for: writing serious software. Seemingly they believe there is still an off-chance for the company to turn around from being solely a solutions provider for its clients while raping its own employees.</div>
<p />
<div>We&#8217;ll see, time will tell the truth. My personal attitude in this matter: If things won&#8217;t change quickly and those guys are not only searching for a job just to pay their rents, but also to bring joy and knowledge to their life: run for it, guys!</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/06/26/true-story-software-engineering-fail-follow-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I want to work in a company which (or &#8220;Yet another random business rant&#8221;)</title>
		<link>http://blog.dispatched.ch/2010/06/22/i-want-to-work-in-a-company-which-or-yet-another-random-business-rant/</link>
		<comments>http://blog.dispatched.ch/2010/06/22/i-want-to-work-in-a-company-which-or-yet-another-random-business-rant/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 15:00:55 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/06/22/i-want-to-work-in-a-company-which-or-yet-another-random-business-rant/</guid>
		<description><![CDATA[This is going to be a random rant on a random companys&#8217; policies and employees &#8211; there is no direct connection to me whatsoever, of course. I want to work in a company that doesn&#8217;t abuse its SCM as a file server. If you can&#8217;t do full backups anymore, because your file system can&#8217;t handle [...]]]></description>
			<content:encoded><![CDATA[<div class="posterous_autopost">
<p>This is going to be a random rant on a random companys&#8217; policies and  employees &#8211; there is no direct connection to me whatsoever, of course.</p>
<p><strong>I want to work in a company that </strong>doesn&#8217;t abuse its SCM as a  file server.</p>
<p><em>If you can&#8217;t do full backups anymore, because  your file system can&#8217;t handle the big dump file, you&#8217;re seriously doing  something wrong! Well, maybe you are Google and have a quadzillion LOC &#8211;  or you&#8217;re just committing all your crappy binaries together with those  nice MS Office files. If you don&#8217;t know how your SCM works or even what  it was made for, then RTFM!</em></p>
<p><strong>I want to work in a company in  which</strong> employees don&#8217;t mistake different tool sets for one another.</p>
<p><em>GForge, Trac, EGroupware, Hudson, OTRS &#8211; they are not the same!  And c&#8217;mon, you can differentiate between all those lame Office products,  so I know you can do it! Ah, but I forgot &#8211; those strange OSS products,  they are not business proof and will not withstand time. So be it,  then. Use Outlook and Excel for your project management, but don&#8217;t come  asking the programmers why they can&#8217;t do five projects at a time.</em></p>
<p><em><strong>I want to work in a company in which</strong> </em>I can call fellow  programmers just that: programmers</p>
<p><em>There astonishingly  many paid software engineers out there who don&#8217;t even know how to use a  single text editor (&#8220;No, Notepad is _not_ a text editor, it&#8217;s a  disgrace!&#8221;) or how to do a simple RegExp. Or worse &#8211; some don&#8217;t just  lack the knowledge on how to do a RegExp, they despise them (&#8220;Those  things are only needed by scientists, I&#8217;m just a programmer.&#8221;). </em></p>
<p><em>Honestly, how can you spend your whole day manipulating text  without basic knowledge of any helpful tool? Nobody would call someone  building a sky scraper a master craftsman if he only used a hammer,  because that&#8217;s the only tool he knows. He would be nothing but a cheap  menial worker. </em></p>
<p><strong>I want to work in a company where </strong>I  can tell fellow programmers jokes about funny (i.e. particularly bad)  code.</p>
<p><em>If I show somebody a for loop which counts up files and  makes that counting &#8220;persistent&#8221; by reading and then saving every step  in a ini file &#8211; I don&#8217;t want their answer to be: &#8220;Well, [language] code  can sometimes look like this.&#8221; No it doesn&#8217;t, you numbnuts! If you don&#8217;t  know the difference between </em>count++<em> and one A4 page of shithole  code, then don&#8217;t call yourself programmer, buddy! No language in the  world encourages such crazy thinking (not even <a href="http://www.muppetlabs.com/%7Ebreadbox/bf/" target="_blank">Brainfuck </a>does). This problem is called missing brain matter.<br />
</em></p>
<p><strong>I  want to work in a company in which</strong> fellow programmers know the  difference between programming languages and are able and willing to  choose the right one for the task at hand.</p>
<p><em>If something like  MS VC++ is enforced on every project &#8211; even those tedious clean-up jobs  that could be simple Bash scripts (if only you had a Unix environment),  then all you will get is dirty spaghetti code and unmaintainable hacks.  And all that for the benefit of the doubt that this code will probably  crawl your file system faster than if you had used a scripting language  (which have originally been created for.. well.. scripting tasks).<br />
</em></p>
<p><em> Anyway, good for you that you paid your developer 20 times the  money you would have needed. Well, if you let him chose a more suitable  tool. At least you have your possible speed gain of a couple of seconds  at runtime (because that&#8217;s where the costs are hidden today, baby!).<br />
</em></p>
<p><strong>I want to work in a company which </strong>doesn&#8217;t establish  coding and style guidelines across different languages.</p>
<p><em>There  are people out there, even programmers, who tend to believe that choice  of a language is either pure chance or the cause of some kind of trend.  They also believe it is good reasoning to enforce a style guideline  across languages to make the developers transition between languages  easier.</em></p>
<p><em> Well.. I don&#8217;t even know what to say to that one.  If people really believe that dynamic code should look the same like  static code &#8211; and that what is considered to be good style in Java is  therefore also good style in Python, then I can only say: May your gods  be gentle to you, my friend.  I can&#8217;t help you anymore.</em></p>
<p><strong>I  want to work in a company that </strong>doesn&#8217;t establish project management  with a team of people using &#8220;code freeses&#8221; to make &#8220;relaises&#8221;.</p>
<p><em>If  your testing, support and project teams don&#8217;t know shit about any  software development paradigms, then don&#8217;t bother letting them stay in  the way of your developers. It will only cause bloat and longer release  cycles coupled with decreased quality. Ah, and you will piss off your  developers.</em></p>
<p><strong>I want to work in a company whose </strong>&#8220;business  best practices&#8221; are at least updated once a decade while always being  open to debate in case of doubt.</p>
<p><em>If you stick to the same  patterns over and over again, because they have worked for you in the  past &#8211; without adapting to the new world outside, you will be obsolete.  Besides, that attitude gets you WinXP.</em></p>
<p><strong>I want to work in a  company which </strong>doesn&#8217;t enforce WinXP for development _and_  production servers.</p>
<p><em>That one should be obvious. But anyway,  WinXP being as <del>obsolete</del> old  as it is, it should not only be  not enforced, but proactively outcast!</em></p>
<p><strong>I want to work in a  company in which</strong> people do not think that software can only be  robust, secure and scaling when it needs all the resources it can  harvest.</p>
<p><em>I&#8217;m looking at you Microsoft  random.choice(product_names)!</em></p>
<p><em>It doesn&#8217;t always have to be  a J2EE or SOAP XML/RPC solution for web  apps. You won&#8217;t need MS SQL  Server for any smallish application.There is  no need to walz with  hardware requirements that would have meant buying  a cluster a few  years ago for. Not only will the hardware cost you, but those 20 year  old programming paradigms will bring you down &#8211; sooner  or later.  There&#8217;s a lot of (free) software around that will probably  let you do  your job faster (less code), cheaper (less time spent  programming),  more scalable (OSS tends to embrace open standards), it  will probably  even be fun to use!</em><em> </em></p>
<p><strong>I want to work in a company  which </strong>company doesn&#8217;t just want to be ISO certified, but has a  pragmatic approach to a common rule set of style, collaboration and  quality.</p>
<p><em>What good is it really to do the minimum necessary to  achieve ISO greatness? All it gets you is more incompetent paper  pushers slowing you down and costing you good money. If your company is  big enough for ISO, then it&#8217;s also big enough to establish pragmatic  guidelines on programming, testing and support for your product. Better  take that chance as long as you still can!<br />
</em></p>
<p><strong>Last, but certainly not least,</strong> <strong>I want to work in a  company where </strong>fellow  programmers don&#8217;t tell me  phrases similar to</p>
<p>&#8220;Every company has these problems.&#8221; and<br />
&#8220;Don&#8217;t argue with  yourself, it&#8217;s only a job &#8211; it and earns you the  rent.&#8221;</p>
<p><em>In  the last statement I see the source of the &#8220;problems&#8221; &#8211;  indifference to  the company and to computer science will teach you only one thing:  Incompetence. And from incompetence concludes everything that goes bad   in everyones&#8217; job. </em></p>
<p><em> When I come home from work, I don&#8217;t  stop being an engineer, because it&#8217;s after hours. When I  come home from  work, I switch on my computer, I visit <a href="http://news.ycombinator.com/">Hacker News</a>, I try to  learn  a new language, I read a book on computer science, I surrender myself  to  a nifty project. I don&#8217;t work as a coder for the money, I do it  because I  love computer science as I always have. I live and breathe  geeky stuff &#8211;  that&#8217;s the way I am and I want my fellow programmers to  be.</em></p>
<p><em> Probably the only thing I can think of that I  proactively hate is incompetence. So don&#8217;t bother me with your hobgoblin  reasoning, I really  had enough of it. If you &#8220;just want to earn your  rent&#8221;, then so be it. But  don&#8217;t try to assume that everyone should be a  menial worker just like you are.  My time is precious, too, my friend. </em><em>It&#8217;s  not always the middle  managements&#8217; fault if we, the programmers, don&#8217;t  know any better. Then how should the guy  leading your project? You  should be the one to inform him on current &#8220;best  practices&#8221;. He&#8217;s  probably just a business guy &#8211; he will do as you say if he trusts you.  And  if he doesn&#8217;t, then either you&#8217;re incompetent yourself or your job  position sucks &#8211;  then get the hell out of there!</em></p>
<p><em> Ah, by  the way: I do have a life besides computers, I  have a gorgeous  girlfriend (hey <a href="http://rocketship.cc/" target="_blank">Katrin</a>^_^), I care  for my family, I study to get my degree and  sometimes, just sometimes I  even go out. But as I said in the beginning: this is just a random rant  on a random companys&#8217; policies and employees which is in no way related  to myself.<br />
</em></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/06/22/i-want-to-work-in-a-company-which-or-yet-another-random-business-rant/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>posterous &#8211; a first glance</title>
		<link>http://blog.dispatched.ch/2010/06/22/posterous-a-first-glance/</link>
		<comments>http://blog.dispatched.ch/2010/06/22/posterous-a-first-glance/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 10:09:27 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/2010/06/22/posterous-a-first-glance/</guid>
		<description><![CDATA[For quite some time my blog has been drained of new posts. Instead I was working harder on the Twitter/Facebook timelines, which in itself brought new trouble: Information is not always(altough often) at its best when squeezed into 140 characters. Even when combined with Twitpic and the like those make a poor substitution for a [...]]]></description>
			<content:encoded><![CDATA[<p>For quite some time my blog has been drained of new posts. Instead I was working harder on the Twitter/Facebook timelines, which in itself brought new trouble: Information is not always(altough often) at its best when squeezed into 140 characters. Even when combined with Twitpic and the like those make a poor substitution for a quick and good blog post.</p>
<p>But how to overcome this gap? I don&#8217;t want to go back to using only WordPress &#8211; only to manually copy the posts to the micro blogging platforms. Also, I find the interface too bloated for many tasks, these days &#8211; it just feels oldish and slow. I want a sleek and fast interface to a decent blogging engine &#8211; and I want that information to be automatically spread ubiquitously on all my streams. And most of all &#8211; I want that information to be at least backuped on my server. I&#8217;m a little self-aware on that aspect. Some call it old school, but anyway &#8211; I want my data to be available on my server if possible. Not for privacy reasons, I just don&#8217;t want to lose my work when my preferred external service closes down.</p>
<p>To the rescue comes posterous! The interface is as straight as can be &#8211; just write an e-mail to <a href="mailto:post@posterous.com">post@posterous.com</a> and there goes the new blog entry. Also posterous pushes this information to a vast pool of available services, including my own WP installation, Twitter and FB.</p>
<p>As a goodie, I have completed the needed setup in less than an hour &#8211; including a well fitting address for my new personal aggreator: <a href="http://posterous.dispatched.ch/">http://posterous.dispatched.ch/</a></p>
<p>I know this setup is new to me, so saying &#8220;I have fallen in love&#8221; might seem premature to the astute reader, but I know myself: I not only like e-mails, because they are sleek (plain text), performing (fast) and organizable (GTD), but I simply love the concept of e-mail. My first &#8220;serious&#8221; web-application was a webmailer written in CGI/C, my favourite mail client has been mutt/vim for a long time and my personal servers always feature smtp/imap/wemail. I like to invest my time in mail.</p>
<p>Hence: posterous, here I come! May a new era of flowing information begin. I&#8217;m looking forward to it.</p>
<p><a href="http://posterous.com/getfile/files.posterous.com/dispatched/B6xXbji5Gc5z9vh1FCjLROksp3AX64xq5XjzgXfn3FxdiD4WiMS0so6WjKlJ/dispatched_posterous.png" rel="lightbox[1104]"><img src="http://posterous.com/getfile/files.posterous.com/dispatched/cbOHOIjJbdJKHJPPryBHCkvXgfm26Sr403iqM676aZ8BxwljblCsUdZwtq7r/dispatched_posterous.png.scaled.500.jpg" alt="" width="500" height="136" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/06/22/posterous-a-first-glance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Apple Insider Myth</title>
		<link>http://blog.dispatched.ch/2010/05/12/the-apple-insider-myth/</link>
		<comments>http://blog.dispatched.ch/2010/05/12/the-apple-insider-myth/#comments</comments>
		<pubDate>Wed, 12 May 2010 07:44:07 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=1031</guid>
		<description><![CDATA[A co-worker just walked up on me and told me the great success story of his new Apple product: The Apple Mybook NAS. Probably you are now wondering like I did. Let me re-tell you the story. It went like this: &#8220;Yesterday I bought the the Mybook NAS (*cough* Mybook? Why didn&#8217;t I get the [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">A co-worker just walked up on me and told me the great success story of his new Apple product: The <em>Apple Mybook NAS</em>.</p>
<p style="text-align: left;">Probably you are now wondering like I did. Let me re-tell you the story. It went like this:</p>
<p style="text-align: left;">&#8220;Yesterday I bought the the Mybook NAS (<em>*cough* Mybook? Why didn&#8217;t I get the memo from Apple, I thought I read the news..</em>). It&#8217;s such a great product! It worked out of the box, no strings attached &#8211; and even using Windows (note: which is of course the only OS he uses)! I even use the built-in backup mechanism &#8211; there was only a little trouble, because I wanted to use it on my second computer as well, but it didn&#8217;t ship with a second licence. But Apple is quite nice, after my complaint they sent me another key right away (<em>*cough* Licence keys for Timemachine instances?..</em>). However, my new Apple Mybook NAS works so great, I now consider becoming part of the family and buy myself a Mac. Of course I will install Windows XP, because I consider that to be the better OS.&#8221;</p>
<p style="text-align: left;">This is how the story went. If you wonder what the new Apple Mybook NAS looks like, I took the liberty of asking him for a picture. Enjoy(;</p>
<div class="mceTemp mceIEcenter" style="text-align: center;">
<dl id="attachment_1039" class="wp-caption  aligncenter" style="width: 291px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-1039 " title="mybook_nas" src="http://blog.dispatched.ch/wp-content/uploads/2010/05/mybook_nas.png" alt="The new Apple Mybook NAS" width="281" height="325" /></dt>
<dd class="wp-caption-dd">The new Apple Mybook NAS</dd>
</dl>
</div>
<table border="0">
<tbody>
<tr>
<td><script type="text/javascript"><!--
tweetmeme_url = 'http://blog.dispatched.ch/2010/05/12/the-apple-insider-myth/';
// --></script><br />
<script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td>
If you liked the article, follow me on twitter <a href="http://twitter.com/preek">here</a><br />
<a href="http://twitter.com/preek"><img class="alignnone" style="border: 0pt none;" title="twitter_preek" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/twitter_preek.gif" border="0" alt="twitter_preek" width="180" height="18" /></a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/05/12/the-apple-insider-myth/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C# 4.0&#8242;s dynamicity</title>
		<link>http://blog.dispatched.ch/2010/05/10/c-40s-dynamicity/</link>
		<comments>http://blog.dispatched.ch/2010/05/10/c-40s-dynamicity/#comments</comments>
		<pubDate>Mon, 10 May 2010 21:23:21 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=985</guid>
		<description><![CDATA[I just found an article ranking highly on Hacker News (my favourite read) concerning the release of C# 4.0 &#8211; you can find it on blogs.msdn.com. On this blog Microsoft claims a couple of highly sophistacated new features. Being the spoiled guy I am, they just seem natural to me. Since they started their article [...]]]></description>
			<content:encoded><![CDATA[<p>I just found an article ranking highly on <a href="http://news.ycombinator.com">Hacker News</a> (my favourite read) concerning the release of C# 4.0 &#8211; you can find it on <a href="http://blogs.msdn.com/csharpfaq/archive/2010/04/12/get-ready-for-c-4-0.aspx">blogs.msdn.com</a>. On this blog Microsoft claims a couple of highly sophistacated new features. Being the spoiled guy I am, they just seem natural to me. Since they started their article with the words &#8220;The <strong>dynamic</strong> keyword is a key feature of this release.&#8221;, let me demonstrate the <em>new</em> features in a really dynamically typed language where they have been around for quite some time: Python </p>
<h3>Dynamic</h3>
<table>
<tr>
<td>
<h4>C#</h4>
</td>
<td>&nbsp;</td>
<td>
<pre class="brush: cpp;">
                        dynamic contact = new ExpandoObject();
                        contact.Name = &quot;Patrick Hines&quot;;
                        contact.Phone = &quot;206-555-0144&quot;;
                        </pre>
</td>
</tr>
<tr>
<td>
<h4>Python</h4>
</td>
<td>&nbsp;</td>
<td>
<pre class="brush: python;">
                        class contact: None
                        contact.Name = &quot;Patrick Hines&quot;
                        contact.Phone = &quot;206-555-0144&quot;
                        </pre>
</td>
</tr>
</table>
<h3>Optional (or Default) Parameters</h3>
<table>
<tr>
<td>
<h4>C#</h4>
</td>
<td>&nbsp;</td>
<td>
<pre class="brush: cpp;">
                        public static void SomeMethod(int optional = 0) { }
                        SomeMethod(); // 0 is used in the method.
                        SomeMethod(10);
                        </pre>
</td>
</tr>
<tr>
<td>
<h4>Python</h4>
</td>
<td>&nbsp;</td>
<td>
<pre class="brush: python;">
                        def some_method(optional = 0): pass

                        some_method()
                        some_method(10)
                        </pre>
</td>
</tr>
</tr>
</table>
<h3>Named Arguments</h3>
<table>
<tr>
<td>
<h4>C#</h4>
</td>
<td>&nbsp;</td>
<td>
<pre class="brush: cpp;">
                        var sample = new List&lt;String&gt;();
                        sample.InsertRange(collection: new List&lt;String&gt;(), index: 0);
                        sample.InsertRange(index: 0, collection: new List&lt;String&gt;());
                        </pre>
</td>
</tr>
<tr>
<td>
<h4>Python</h4>
</td>
<td>&nbsp;</td>
<td>
<pre class="brush: python;">
                        def foo(bar, foobar): None

                        foo(bar='asdf', foobar=12)
                        foo(foobar=12, bar='asdf')
                        </pre>
</td>
</tr>
</table>
<p>I honestly know that a comparison of a statically typed language on the CLR and an interpreted <emph>dynamic</emph> language doesn&#8217;t account for too much. But since Microsoft is making a fuzz about dynamic being <b>the</b> keyword of the new release, I felt the urge to drop this note.  </p>
<p>The Python code was tested with v2.5 &#8211; that&#8217;s the oldest installation I&#8217;ve got. However, it&#8217;s old enough, because .NET didn&#8217;t even have decent IPC back then (i.e. Named pipes were <a href="http://msdn.microsoft.com/en-us/library/system.io.pipes.namedpipeserverstream.aspx[+]">added</a> in .NET 3.5).</p>
<p>Well, that&#8217;s my rant for the night &#8211; I&#8217;m going back to teaching myself a real programmers language(<a href="http://clojure.org">Clojure</a>) &#8211; as you should, too(;</p>
<table border="0">
<tbody>
<tr>
<td><script type="text/javascript"><!--
tweetmeme_url = 'http://blog.dispatched.ch/2010/05/10/c-40s-dynamicity/';
// --></script><br />
<script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td>
If you liked the article, follow me on twitter <a href="http://twitter.com/preek">here</a><br />
<a href="http://twitter.com/preek"><img class="alignnone" style="border: 0pt none;" title="twitter_preek" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/twitter_preek.gif" border="0" alt="twitter_preek" width="180" height="18" /></a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2010/05/10/c-40s-dynamicity/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Python&#8217;s binascii &#8211; hexlify() and unhexlify()What the heck?</title>
		<link>http://blog.dispatched.ch/2009/12/09/pythons-binascii-hexlify-unhexlify/</link>
		<comments>http://blog.dispatched.ch/2009/12/09/pythons-binascii-hexlify-unhexlify/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 23:55:11 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[binascii]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[hex]]></category>
		<category><![CDATA[hexlify]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[unhexlify]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=941</guid>
		<description><![CDATA[We]]></description>
			<content:encoded><![CDATA[<p>Today, a dear <a title="versatilemind.com" href="http://www.versatilemind.com" target="_blank">friend of mine</a> came up to me and asked about the Python module binascii &#8211; particularly about the methods hexlify() and unhexlify(). Since he asked for it, I&#8217;m going to share my answer publicly with you.</p>
<p>First of all, I&#8217;m defining the used nomenclature:</p>
<ul>
<li>ASCII characters are being written in single quotes</li>
<li>decimal numbers are of the type Long with a <em>L</em> suffix</li>
<li>hex values have a <em>x</em> prefix</li>
</ul>
<p>First, let me quote the <a href="http://docs.python.org/library/binascii.html" target="_blank">documentation</a>:</p>
<dt id="binascii.hexlify"><tt class="descclassname"><tt class="descclassname">binascii.</tt><tt class="descname">b2a_hex</tt><big>(</big><em>data</em><big>)</big></tt></dt>
<dt><tt class="descclassname"><big></big>binascii.</tt><tt class="descname">hexlify</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" title="Permalink to this definition" href="http://docs.python.org/library/binascii.html#binascii.hexlify"></a></dt>
<dd>Return the hexadecimal representation of the binary <em>data</em>. Every byte of <em>data</em> is converted into the corresponding 2-digit hex representation. The resulting string is therefore twice as long as the length of <em>data</em>.</dd>
<dt id="binascii.a2b_hex"><tt class="descclassname">binascii.</tt><tt class="descname">a2b_hex</tt><big>(</big><em>hexstr</em><big>)</big><a class="headerlink" title="Permalink to this definition" href="http://docs.python.org/library/binascii.html#binascii.a2b_hex"></a></dt>
<dt id="binascii.unhexlify"><tt class="descclassname">binascii.</tt><tt class="descname">unhexlify</tt><big>(</big><em>hexstr</em><big>)</big><a class="headerlink" title="Permalink to this definition" href="http://docs.python.org/library/binascii.html#binascii.unhexlify"></a></dt>
<dd>Return the binary data represented by the hexadecimal string <em>hexstr</em>. This function is the inverse of <a class="reference internal" title="binascii.b2a_hex" href="http://docs.python.org/library/binascii.html#binascii.b2a_hex"><tt class="xref docutils literal"><span class="pre">b2a_hex()</span></tt></a>. <em>hexstr</em> must contain an even number of hexadecimal digits (which can be upper or lower case), otherwise a <a class="reference external" title="exceptions.TypeError" href="http://docs.python.org/library/exceptions.html#exceptions.TypeError"><tt class="xref docutils literal"><span class="pre">TypeError</span></tt></a> is raised.</dd>
<p>I&#8217;ll begin with hexlify(). As the documentation states, this method splits a string which consists of hex-tuples into distinct bytes.</p>
<p>The <a href="http://en.wikipedia.org/wiki/ASCII" target="_blank">ASCII</a> character &#8216;A&#8217; has 65L as numerical representation. To verify this in Python:</p>
<pre class="brush: python;">&amp;gt;&amp;gt;&amp;gt; long(ord('A'))
65L</pre>
<p>You might ask &#8220;Why is this even relevant to understand binascii?&#8221; Well, we don&#8217;t know anything about how ord() does its job. But with binascii we can re-calculate manually and verify.</p>
<pre class="brush: python;">&amp;gt;&amp;gt;&amp;gt; binascii.hexlify('A')
'41'</pre>
<p>Now we know that an &#8216;A&#8217; &#8211; interpreted as binary data and shown in hex &#8211; resembles &#8217;41&#8242;. But wait, &#8217;41&#8242; is a string and no hex value! That&#8217;s no biggy, hexlify() represents its result as string.</p>
<p>To stay with the example, let&#8217;s convert 41 into a decimal number and check if it equals 65L.</p>
<pre class="brush: python;">&amp;gt;&amp;gt;&amp;gt; long('41', 16)
65L</pre>
<p>Tada! It seems that <em>&#8216;A&#8217; = 41 = 65L</em>.<br />
You might have known that already, but please, stay with me a minute longer.</p>
<p>To make it look a little more complex:</p>
<pre class="brush: python;">&amp;gt;&amp;gt;&amp;gt; binascii.hexlify('A') == &amp;quot;%X&amp;quot; % long('41', 16)
True</pre>
<p>Be aware that</p>
<pre class="brush: python;">&amp;gt;&amp;gt;&amp;gt; &amp;quot;%X&amp;quot; %n</pre>
<p>converts a decimal number into its hex representation.</p>
<p>&#8212;&#8212;</p>
<p>binascii.unhexlify() naturally does the same thing as hexlify(), but in reverse. It takes binary data and displays it in tuples of hex-values.</p>
<p>I&#8217;ll start off with an example:</p>
<pre class="brush: python;">	&amp;gt;&amp;gt;&amp;gt; binascii.unhexlify('41')
	'A'

	&amp;gt;&amp;gt;&amp;gt; binascii.unhexlify(&amp;quot;%X&amp;quot; % ord('A'))
	'A'</pre>
<p>Here, unhexlify() takes the numerical representation 65L from the ASCII character &#8216;A&#8217;</p>
<pre class="brush: python;">	&amp;gt;&amp;gt;&amp;gt; ord('A')
	65</pre>
<p>converts it into hex 41</p>
<pre class="brush: python;">	&amp;gt;&amp;gt;&amp;gt; &amp;quot;%X&amp;quot; % ord('A')
	'41'</pre>
<p>and represents it as a 1-tuple (meaning dimension of one) of hex values.</p>
<p>And now the conclusio &#8211; why might all of this be useful?<br />
Right now, I can think of at least four use cases:</p>
<ul>
<li>cryptography</li>
<li>data-transformation (i.e. Base64 for MIME/E-Mail attachements)</li>
<li>security (deciphering binary readings off a network, pattern matching, &#8230;)</li>
<li>textual representation of escape sequences</li>
</ul>
<p>Taking up the last example, I&#8217;ll show you how to visualize the Bell esape sequence (you know, that thing that keeps <em>beep</em>ing in your terminal).<br />
Taken from the ASCII table, the numerical representation of the Bell is  7. Programmers might know it better as a.</p>
<pre class="brush: python;">	&amp;gt;&amp;gt;&amp;gt; '7' == 'a'
	True</pre>
<p>Presuming you read such a character in some kind of binary data &#8211; for example from a socket</p>
<pre class="brush: python;">	&amp;gt;&amp;gt;&amp;gt; foo = '7'</pre>
<p>and you want to visualize this data</p>
<pre class="brush: python;">	&amp;gt;&amp;gt;&amp;gt; print foo</pre>
<p>you will not get any results &#8211; at least none visible. You might hear the Bell sound if you&#8217;re not on a silent terminal.</p>
<p>Now, finally &#8211; binascii to the rescue:</p>
<pre class="brush: python;">	&amp;gt;&amp;gt;&amp;gt; binascii.hexlify('7')
	'07'</pre>
<p>Voilà, the dubious string is decrypted.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/12/09/pythons-binascii-hexlify-unhexlify/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BacklogOne step ahead aka my new Mini Cooper</title>
		<link>http://blog.dispatched.ch/2009/11/10/backlogmini/</link>
		<comments>http://blog.dispatched.ch/2009/11/10/backlogmini/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 10:22:55 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=915</guid>
		<description><![CDATA[It&#8217;s finally time to announce at least some news: I&#8217;ve got myself a new means of locomotion &#8211; no more procrastinating and slacking, because there&#8217;s just no train when I need one(; More importantly no more driving on Swiss ice on only two wheels! Pictures will do the proper talking, even though I have not [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s finally time to announce at least some news: I&#8217;ve got myself a new means of locomotion &#8211; no more procrastinating and slacking, because there&#8217;s just no train when I need one(; More importantly no more driving on Swiss ice on only two wheels!</p>
<p>Pictures will do the proper talking, even though I have not yet been able to get a good shot in decent sunlight. I will redo these anyway when the optical modding is finished &#8211; those custom rallye stripes keep calling me at night!</p>
<p>It might be noteworthy that my dear friend <a href="http://beta.alphagemini.org/">Falko</a> has aquired a 325i just two days after we picked up the Mini. Our ongoing quest for parallelism is still unbroken^^</p>
<p><img src="http://blog.dispatched.ch/wp-content/gallery/mini/mini_cooper_2.jpg" alt="" />
<div class="ngg-galleryoverview" id="ngg-gallery-6-915">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-96" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.dispatched.ch/wp-content/gallery/mini/erste_stadt_tuchfuehlung_a.jpg" title="First visit to Zurich city #2" class="shutterset_set_6"  rel="lightbox[915]">
								<img title="erste_stadt_tuchfuehlung_a" alt="erste_stadt_tuchfuehlung_a" src="http://blog.dispatched.ch/wp-content/gallery/mini/thumbs/thumbs_erste_stadt_tuchfuehlung_a.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-97" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.dispatched.ch/wp-content/gallery/mini/erste_stadt_tuchfuehlung_b.jpg" title="First visit to Zurich city #1" class="shutterset_set_6"  rel="lightbox[915]">
								<img title="erste_stadt_tuchfuehlung_b" alt="erste_stadt_tuchfuehlung_b" src="http://blog.dispatched.ch/wp-content/gallery/mini/thumbs/thumbs_erste_stadt_tuchfuehlung_b.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-98" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.dispatched.ch/wp-content/gallery/mini/full_blown.jpg" title="Leather, aircon, heated seats, panorama glas roof, cruise control and more" class="shutterset_set_6"  rel="lightbox[915]">
								<img title="full_blown" alt="full_blown" src="http://blog.dispatched.ch/wp-content/gallery/mini/thumbs/thumbs_full_blown.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-95" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.dispatched.ch/wp-content/gallery/mini/auf_der_flucht_vorm_325i_b.png" title="Perfect road holding" class="shutterset_set_6"  rel="lightbox[915]">
								<img title="auf_der_flucht_vorm_325i_b" alt="auf_der_flucht_vorm_325i_b" src="http://blog.dispatched.ch/wp-content/gallery/mini/thumbs/thumbs_auf_der_flucht_vorm_325i_b.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-94" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://blog.dispatched.ch/wp-content/gallery/mini/auf_der_flucht_vorm_325i_a.jpg" title="Racing away from Falkos new monster: 325i, 218PS&lt;br&gt;
Who might have been the victor?" class="shutterset_set_6"  rel="lightbox[915]">
								<img title="auf_der_flucht_vorm_325i_a" alt="auf_der_flucht_vorm_325i_a" src="http://blog.dispatched.ch/wp-content/gallery/mini/thumbs/thumbs_auf_der_flucht_vorm_325i_a.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>

</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/11/10/backlogmini/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Disable Mail-Forwarding for Lotus Notes programmatically</title>
		<link>http://blog.dispatched.ch/2009/06/29/disable-mail-forwardin-for-lotus-notes-with-python/</link>
		<comments>http://blog.dispatched.ch/2009/06/29/disable-mail-forwardin-for-lotus-notes-with-python/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 19:53:40 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[forwarding]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[lotus notes]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[mail forwarding]]></category>
		<category><![CDATA[mail-forward]]></category>
		<category><![CDATA[prevent copying]]></category>
		<category><![CDATA[proprietary]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sensitivity private]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=871</guid>
		<description><![CDATA[Lotus Notes has a nifty feature to lull managers into false safety: for volatile/unsafe e-mails (or users), it let&#8217;s you disable printing/forwarding and copying to clipboard. This can be done using rules, on the SMTP server and on a per e-mail basis. When writing somebody you really don&#8217;t trust with some information (but in his [...]]]></description>
			<content:encoded><![CDATA[<p>Lotus Notes has a nifty feature to lull managers into <del datetime="2009-06-29T17:07:46+00:00">false</del> safety: for volatile/unsafe e-mails (or users), it let&#8217;s you <a href="http://www-01.ibm.com/support/docview.wss?rs=0&amp;uid=swg21085758">disable</a> printing/forwarding and copying to clipboard. This can be done using rules, on the SMTP server and on a per e-mail basis. When writing somebody you really don&#8217;t trust with some information (but in his inability to spread the word otherwise &#8211; by copy/pasting for example), writing a mail would look like this:</p>
<p><a href="http://blog.dispatched.ch/wp-content/uploads/2009/06/prevent_copying.png" rel="lightbox[871]"><img class="aligncenter size-full wp-image-872" title="prevent_copying" src="http://blog.dispatched.ch/wp-content/uploads/2009/06/prevent_copying.png" alt="prevent_copying" width="469" height="386" /></a></p>
<p>Now, if your victim wants to forward your mail, Lotus Notes would respond with a little pop-up:</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/06/success.png" rel="lightbox[871]"><img class="aligncenter size-full wp-image-874" title="success" src="http://blog.dispatched.ch/wp-content/uploads/2009/06/success.png" alt="success" width="411" height="106" /></a></p>
<p style="text-align: left;">This certainly looks like a magical and proprietary feature, doesn&#8217;t it?  Let&#8217;s look at the source of such a &#8220;mail&#8221;(aka memo in Notus&#8217; language) &#8211; you will have to forward it to another mail-client though, because memos can&#8217;t be displayed in source:</p>
<pre>...
Subject: Testnachricht
MIME-Version: 1.0
<span style="color: #ff9900;"><span style="color: #993300;">Sensitivity: Private</span>
</span>X-Mailer: Lotus Notes Release 6.5.5  CCH1 March 07, 2006
...</pre>
<p>As you can see, there is a proprietary meta-flag <em>Sensitivity: Private</em>. It can be reproduced with any decent mail user agent or programmatically. What follows is a little Python code snippet that just does the trick:</p>
<p style="text-align: left;">
<pre class="brush: python;">
import smtplib
from email.message import Message
msg = Message()
msg.set_payload(&quot;Testmessage Body&quot;)
msg[&quot;Subject&quot;] = &quot;Testmessage from Python&quot;
msg[&quot;From&quot;] = &quot;preek@dispatched.ch&quot;
msg[&quot;To&quot;] = &quot;somebody@somewhere.com&quot;
msg[&quot;Sensitivity&quot;] = &quot;Private&quot;
smtp = smtplib.SMTP(&quot;localhost&quot;)
smtp.sendmail(&quot;preek@dispatched.ch&quot;, &quot;somebody@somewhere.com&quot;, msg.as_string())
</pre>
<p>But please, don&#8217;t use this information unless you absolutely have to. Lotus Notes.. *brr*.</p>
<p>Enjoy(;</p>
<p>If you liked this article, please feel free to re-tweet it and let others know.</p>
<table border="0">
<tbody>
<tr>
<td><script type="text/javascript"><!--
tweetmeme_url = 'http://blog.dispatched.ch/2009/06/29/disable-mail-forwardin-for-lotus-notes-with-python/';
// --></script> <script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></td>
<td></td>
<td><a href="http://twitter.com/preek"><img class="alignnone" style="border: 0pt none;" title="twitter_preek" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/twitter_preek.gif" border="0" alt="twitter_preek" width="180" height="18" /></a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/06/29/disable-mail-forwardin-for-lotus-notes-with-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>pTwittery.com releasedConvert your Twitter timeline into a diary</title>
		<link>http://blog.dispatched.ch/2009/06/25/ptwittery-release/</link>
		<comments>http://blog.dispatched.ch/2009/06/25/ptwittery-release/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 21:20:28 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[diary]]></category>
		<category><![CDATA[ptwittery]]></category>
		<category><![CDATA[ptwittery.com]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=854</guid>
		<description><![CDATA[I just released my newest program &#8211; pTwittery.com It&#8217;s now online, but still in beta stage. With pTwittery.com you may export all your tweets (aka timeline) into a diary. Your personal diary will then be sent to you via e-mail. Enjoy, everyone(; If you liked this article, please feel free to re-tweet it and let [...]]]></description>
			<content:encoded><![CDATA[<p>I just released my newest program &#8211; <a title="Convert your Twitter timeline into a diary" href="http://ptwittery.com" target="_blank">pTwittery.com<br />
</a>It&#8217;s now online, but still in beta stage.</p>
<p>With <a title="Convert your Twitter timeline into a diary" href="http://ptwittery.com" target="_blank">pTwittery.com</a> you may export all your tweets (aka timeline) into a diary. Your personal diary will then be sent to you via e-mail.</p>
<p>Enjoy, everyone(;</p>
<p><a href="http://blog.dispatched.ch/wp-content/uploads/2009/06/ptwittery.png" rel="lightbox[854]"><img class="size-full wp-image-857" title="ptwittery" src="http://blog.dispatched.ch/wp-content/uploads/2009/06/ptwittery.png" alt="&lt;a href=" width=" mce_href=" height="383" /></a></p>
<p>If you liked this article, please feel free to re-tweet it and let others know. </p>
<table border="0">
<tbody>
<tr>
<td><script type="text/javascript"><!--
tweetmeme_url = 'http://blog.dispatched.ch/2009/06/25/ptwitterycom-releasedconvert-your-twitter-timeline-into-a-diary/';
// --></script><br />
<script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td><a href="http://twitter.com/preek"><img class="alignnone" style="border: 0pt none;" title="twitter_preek" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/twitter_preek.gif" border="0" alt="twitter_preek" width="180" height="18" /></a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/06/25/ptwittery-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server outage</title>
		<link>http://blog.dispatched.ch/2009/06/25/server-outage/</link>
		<comments>http://blog.dispatched.ch/2009/06/25/server-outage/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 20:31:15 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=849</guid>
		<description><![CDATA[Unfortunately my SUN Fire 280R has left me for good last friday. Let&#8217;s all give it a silent two minutes.. After a couple of dear years &#8211; spent configuring a nice little Solaris 10 setup, all I have left are a couple of zip files and sql dumps that were supposed to be my backup. [...]]]></description>
			<content:encoded><![CDATA[<p>Unfortunately my SUN Fire 280R has left me for good last friday. Let&#8217;s all give it a silent two minutes..</p>
<p>After a couple of dear years &#8211; spent configuring a nice little Solaris 10 setup, all I have left are a couple of zip files and sql dumps that were supposed to be my backup. And, of course, a lot of memories of that beast being installed by <a href="http://sdyx.de/">Felix,</a> <a href="http://alphagemini.org/">Falko</a> and me in the first place.. Well.. those were the times &#8211; us sitting in the cellar, listening to the sound of Sun SPARC and DEC Alpha hardware &#8211; hooked up to private gigabit, trying to figure out why the hell everything is so different in Solaris than we were used to. Heck, it was a nice trip.</p>
<p>But I&#8217;m glad to finally put an end to this long gone era. I&#8217;m back on a rented dedicated server &#8211; running good old Debian stable; as I am supposed to.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/06/25/server-outage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VIM as Python IDE</title>
		<link>http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/</link>
		<comments>http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/#comments</comments>
		<pubDate>Sat, 23 May 2009 23:04:59 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[ctags]]></category>
		<category><![CDATA[exuberant ctags]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[minibuf]]></category>
		<category><![CDATA[omni completion]]></category>
		<category><![CDATA[pep 8]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python ide]]></category>
		<category><![CDATA[taglist]]></category>
		<category><![CDATA[tasklist]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[vimpdb]]></category>
		<category><![CDATA[walkthrough]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=777</guid>
		<description><![CDATA[Finding the perfect IDE for Python isn&#8217;t an easy feat. There are a great many to chose from, but even though some of them offer really nifty features, I can&#8217;t help myself but feel attracted to VIM anyway. I feel that no IDE accomplishes the task of giving the comfort of complete power over the [...]]]></description>
			<content:encoded><![CDATA[<p>Finding the perfect IDE for Python isn&#8217;t an easy feat. There are a great many to chose from, but even though some of them offer really nifty features, I can&#8217;t help myself but feel attracted to VIM anyway. I feel that no IDE accomplishes the task of giving the comfort of complete power over the code &#8211; something is always missing out. This is why I always come back to using IDLE and VIM. Those two seem to be best companions when doing some quick and agile hacking &#8211; but when it comes to managing bigger and longer term projects, this combo needs some tweaking. But when it&#8217;s done, VIM will be a powerful IDE for Python &#8211; including code completion(with pydoc display), graphical debugging, task-management and a project view.</p>
<p>This is where we are going:</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/05/vim-as-python-ide.png" rel="lightbox[777]"><img class="size-full wp-image-799 aligncenter" title="vim-as-python-ide" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/vim-as-python-ide.png" alt="VIM as Python IDE" width="491" height="401" /></a></p>
<p>So, these are my thoughts on a VIM setup for coding (Python).</p>
<p>Modern GUI VIM implementations like GVIM or MacVIM give the user the opportunity to organize their open files in tabs. This might look convenient, but to me it is rather bad practice, because a second tab will not be in the in the same buffer scope as the first one which takes away from future interaction options between the two. Using <a title="MiniBuf" href="http://www.vim.org/scripts/script.php?script_id=159" target="_blank">MiniBufExplorer</a>, however, gives the user tabs(not only in the GUI, but also in command line) and leaves the classic buffer interaction intact.</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/05/minibuf.png" rel="lightbox[777]"><img class="size-full wp-image-784 aligncenter" title="minibuf" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/minibuf.png" alt="MiniBuf Explorer" width="484" height="87" /></a></p>
<p>Being able to neatly work on multiple files, the user still misses the potential his favourite IDE gives him in visualizing classes, functions and variables. Luckily there are quite a few plugins around to accomplish this task just as well. My favourite one would be <a title="TagList" href="http://vim-taglist.sourceforge.net/" target="_blank">TagList</a>. TagList uses <a title="Exuberant CTags" href="http://ctags.sourceforge.net/" target="_blank">Exuberant Ctags</a> for actually generating the tags(note: it really relies on this specific version of ctags &#8211; preinstalled implementations on UNIX systems won&#8217;t work).</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/05/taglist.png" rel="lightbox[777]"><img class="size-full wp-image-787 aligncenter" title="taglist" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/taglist.png" alt="TagList" width="481" height="260" /></a></p>
<p>A lot of coders have the habit of using TODO or FIXME statements in their code. Other IDEs often rely on having good third party project management software, but not VIM. There are great plugins like <a title="TaskList" href="http://www.vim.org/scripts/script.php?script_id=2607" target="_blank">Tasklist</a> reminding the programmer of those lines of code. Tasklist even implements custom lists &#8211; to me that&#8217;s an incredible productivity gain.</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/05/tasklist.png" rel="lightbox[777]"><img class="size-full wp-image-781 aligncenter" title="tasklist" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/tasklist.png" alt="TaskList" width="491" height="163" /></a></p>
<p>In these times, the programmer knows his or her programming language more or less by interactively finding out what it can do. Therefore code completion(sometimes also called IntelliSense*ugh*) is a major feature. I have heard  many people saying that this is where VIM fails &#8211; but luckily they are plain wrong(; In V7, VIM introduced <a title="Omni Completion" href="http://vim.wikia.com/wiki/Omni_completion" target="_blank">omni completion</a> &#8211; given it is configured to recognize Python (if not, this feature is only a <a title="Python Omni Completion" href="http://www.vim.org/scripts/script.php?script_id=1542" target="_blank">plugin</a> away) Ctrl+x Ctrl+o opens a drop down dialog like any other IDE &#8211; even the whole Pydoc gets to be displayed in a split window.</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/05/omnicompletion.png" rel="lightbox[777]"><img class="size-full wp-image-791 aligncenter" title="omnicompletion" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/omnicompletion.png" alt="Omni Completion" width="436" height="312" /></a></p>
<p>Probably the most wanted feature(besides code completion) is debugging graphically. <a title="VimPDB" href="http://code.google.com/p/vimpdb/" target="_blank">VimPDB</a> is a plugin that lets you do just that(. I acknowledge it is no complete substitution for a full fledged graphical debugger, but I honour the thought that having to rely on a debugger (often), is a hint of bad design.</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/05/vimpdb.png" rel="lightbox[777]"><img class="size-full wp-image-794 aligncenter" title="vimpdb" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/vimpdb.png" alt="VimPDB" width="498" height="134" /></a></p>
<p>&#8211;</p>
<p style="text-align: center;">
<p style="text-align: left;">From the eye-candy to the implementation. Don&#8217;t worry, it&#8217;s no sorcery.</p>
<p style="text-align: left;">First of all, make sure you have VIM version 7.x installed, compiled with Python support. To check for the second, enter <em>:python print &#8220;hello, world&#8221;</em> into VIM. If you see an error message like <em>&#8220;E319: Sorry, the command is not available in this version&#8221;</em>, then it&#8217;s time to get a new one. If you&#8217;re on a Mac, just install MacVIM(there&#8217;s also a binary for the console in /Applications/MacVim.app/Contents/MacOS/). If you&#8217;re on Windows, GVIM will suffice(for versions != 2.4 search for the right <a title="Vim for Windows32" href="http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/" target="_blank">plugin</a>). If you&#8217;re on any other machine, you will probably know how to compile your very own VIM with Python support.</p>
<p style="text-align: left;">Second, check if you have a plugin directory. In Unix it would typically be located in <em>$HOME/.vim/plugin</em>, in Windows in the <em>Program Files </em>directory. If it doesn&#8217;t exist, create it.</p>
<p style="text-align: left;">Now, let&#8217;s start with the MiniBufExplorer. <a title="MiniBuf Explorer" href="http://www.vim.org/scripts/script.php?script_id=159" target="_blank">Get</a> it and copy it into your plugin directory. To start it automatically when needed and be able to use it with keyboard and mouse commands, append these lines in your vimrc configuration:</p>
<p><code>let g:miniBufExplMapWindowNavVim = 1<br />
let g:miniBufExplMapWindowNavArrows = 1<br />
let g:miniBufExplMapCTabSwitchBufs = 1<br />
let g:miniBufExplModSelTarget = 1</code></p>
<p style="text-align: left;">For a project view, get <a title="TagList" href="http://vim-taglist.sourceforge.net/" target="_blank">TagList</a> and <a title="Exuberant CTags" href="http://ctags.sourceforge.net/" target="_blank">Exuberant Ctags</a>. To install Ctags, unpack it, go into the directory and do a compile/install via:</p>
<p><code>./configure &amp;&amp; sudo make install</code></p>
<p>Ctags will then be installed in /usr/local/bin. When using a Windows machine, I recommend <a href="http://cygwin.com/">Cygwin</a> with GCC and Make; it&#8217;ll work just fine. If you don&#8217;t want to tamper with your original ctags installation, you can propagate the location to VIM by appending the following line to vimrc:</p>
<p><code>let Tlist_Ctags_Cmd='/usr/local/bin/ctags'</code></p>
<p>To install TagList, just drop it into VIMs plugin directory. You will now be able to use the project view by typing the command <em>:TlistToggle</em>.</p>
<p><a title="TaskList" href="http://www.vim.org/scripts/script.php?script_id=2607" target="_blank">Tasklist</a> is a simple plugin, too. Copying it into the plugin directory will suffice. I like to have shortcuts and have added<br />
<code><br />
map T :TaskList&lt;CR&gt;<br />
map P :TlistToggle&lt;CR&gt;<br />
</code></p>
<p>to vimrc. Pressing <em>T </em>will then open the TaskList if there are any tasks to process. <em>q </em>quits the TaskList again.</p>
<p><a title="VimPDB" href="http://code.google.com/p/vimpdb/" target="_blank">VimPDB</a> is a plugin, as well. Install as before and see the readme for documentation. If it doesn&#8217;t work out of the box, watch for the known <a title="Issuses VimPDB" href="http://code.google.com/p/vimpdb/issues/list" target="_blank">issues</a>.</p>
<p>To enable code(omni) completion, add this line to your vimrc:</p>
<p><code>autocmd FileType python set omnifunc=pythoncomplete#Complete</code></p>
<p>If it doesn&#8217;t work then, you&#8217;ll need this <a title="Python Omni Completion" href="http://www.vim.org/scripts/script.php?script_id=1542" target="_blank">plugin</a>.</p>
<p style="text-align: left;">My last two recommondations are setting these lines to comply to <a title="PEP 8" href="http://www.python.org/dev/peps/pep-0008/" target="_blank">PEP 8</a>(Pythons&#8217; style guide) and to have decent eye candy:</p>
<p><code>set expandtab<br />
set textwidth=79<br />
set tabstop=8<br />
set softtabstop=4<br />
set shiftwidth=4<br />
set autoindent<br />
:syntax on</code></p>
<p>There are certainly a lot more flags to help productivity, but those will probably be more user specific.</p>
<p>Have fun coding Python while not being bound to a specific IDE, but having all the benefits of VIM bundled with a few helping hands. Enjoy, everyone.</p>
<p>If you liked this article, please feel free to re-tweet it and let others know.</p>
<table border="0">
<tbody>
<tr>
<td><script type="text/javascript"><!--
tweetmeme_url = 'http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/';
// --></script><br />
<script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td>
You should follow me on twitter <a href="http://twitter.com/preek">here</a><br />
<a href="http://twitter.com/preek"><img class="alignnone" style="border: 0pt none;" title="twitter_preek" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/twitter_preek.gif" border="0" alt="twitter_preek" width="180" height="18" /></a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/feed/</wfw:commentRss>
		<slash:comments>63</slash:comments>
		</item>
		<item>
		<title>Juno on Solaris 10</title>
		<link>http://blog.dispatched.ch/2009/05/18/juno-on-solaris-10/</link>
		<comments>http://blog.dispatched.ch/2009/05/18/juno-on-solaris-10/#comments</comments>
		<pubDate>Mon, 18 May 2009 13:23:30 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[Compile Python]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Juno]]></category>
		<category><![CDATA[lightweight]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Solaris 10]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[webframework]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=753</guid>
		<description><![CDATA[Juno is an incredibly lightweight webframework. Using Python as backend, it fullfills my very need for just about every small application I want to deploy against the web. It has no need for big runtimes on the server, no files to configure a great many files and most importantly: there&#8217;s no coding overhead &#8211; the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://brianreily.com/project/juno">Juno</a> is an incredibly lightweight webframework. Using Python as backend, it fullfills my very need for just about every small application I want to deploy against the web. It has no need for big runtimes on the server, no files to configure a great many files and most importantly: there&#8217;s no coding overhead &#8211; the programmer defines only the distinctively wanted features.<br />
However, installing Juno on Solaris 10 isn&#8217;t quite as easy as described in Junos&#8217; documentation. Solaris ships with Python 2.4, but Juno depends in Jinja2(a templating engine) which itself depends on Python 2.5+. Even installing Blastwave&#8217;s or Sunfreeware&#8217;s version won&#8217;t help. But that&#8217;s no biggie since compiling your own Python is incredibly easy.</p>
<ol>
<li>Get, compile and install Python (I have used version 2.5.4)
<ul>
<li><a href="http://www.python.org/download/releases/" target="_blank">http://www.python.org/download/releases/</a></li>
<li>unpack</li>
<li>make sure you have a recent version of GCC installed</li>
<li>./configure &amp;&amp; make &amp;&amp; make install</li>
<li>as a result Python will be installed in /usr/local</li>
</ul>
</li>
<p></p>
<li>Get, compile and install Setuptools
<ul>
<li><a href="http://pypi.python.org/pypi/setuptools" target="_self">http://pypi.python.org/pypi/setuptools</a></li>
<li>unpack</li>
<li>python setup.py install</li>
</ul>
<p>
</li>
<li> Get, compile and install  pysqlite
<ul>
<li><a href="http://oss.itsystementwicklung.de/trac/pysqlite/wiki/WikiStart#Downloads" target="_blank">http://oss.itsystementwicklung.de/trac/pysqlite/wiki/WikiStart#Downloads</a></li>
<li>unpack</li>
<li>add line &#8220;library_dirs=/usr/local/lib&#8221; to pysqlite-x.y.z/setup.cfg</li>
<li>globally export your library paths:
<li>LD_LIBRARY_PATH=/opt/csw/lib/:/usr/lib/:/lib/:/usr/local/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH</li>
<li>python setup.py install</li>
</ul>
</li>
<li>easy_install install sqlalchemy
</li>
<p></p>
<li>easy_install jinja2</li>
<p></p>
<li>Get, compile and install Juno
<ul>
<li><a href="http://brianreily.com/project/juno" target="_blank"> http://brianreily.com/project/juno</a></li>
<li>python setup.py install</li>
</ul>
<p>
</li>
</ol>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/05/18/juno-on-solaris-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relentless resourcefulness</title>
		<link>http://blog.dispatched.ch/2009/05/03/relentless-resourcefulness/</link>
		<comments>http://blog.dispatched.ch/2009/05/03/relentless-resourcefulness/#comments</comments>
		<pubDate>Sun, 03 May 2009 11:30:33 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[dispatched.ch]]></category>
		<category><![CDATA[home]]></category>
		<category><![CDATA[love]]></category>
		<category><![CDATA[pDict]]></category>
		<category><![CDATA[raise]]></category>
		<category><![CDATA[relentless]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=679</guid>
		<description><![CDATA[What good is a weblog if one doesn&#8217;t keep track of the most important changes in life, at least? A great many things unfolded recently, so here we go. First of all, it&#8217;s time to propagate that I&#8217;m writing using a new domain. The name gefechtsdienst.de was a remnant of old times and doesn&#8217;t really [...]]]></description>
			<content:encoded><![CDATA[<p>What good is a weblog if one doesn&#8217;t keep track of the most important changes in life, at least? A great many things unfolded recently, so here we go.</p>
<p>First of all, it&#8217;s time to propagate that I&#8217;m writing using a new domain. The name gefechtsdienst.de was a remnant of old times and doesn&#8217;t really convey the feeling I want to share with the world. As of now I will be using <a href="http://dispatched.ch">dispatched.ch</a> to publish applications and software snippets. To me the phrase <em>dispatched</em> channels the meaning of <em>done </em>and<em> reliable</em>; what has been dispatched doesn&#8217;t need a fix-up, it has been taken care of. Respectively my blog will be published on <a href="http://blog.dispatched.ch">blog.dispatched.ch</a> where I will keep writing and ranting(;</p>
<p><a href="http://blog.dispatched.ch/wp-content/uploads/2009/05/pre_pdict1.png" rel="lightbox[679]"><img class="alignright size-full wp-image-701" title="pre_pdict1" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/pre_pdict1.png" alt="pre_pdict1" width="274" height="346" /></a></p>
<p>&nbsp;</p>
<p>As a foretaste on what can be found on dispatched.ch in the upcoming future, I give you a screenshot of my current project to improve productivity on a Windows machine. I&#8217;m under the impression that nobody has ever written a decent translation toolfor it; not to mention the lack of anything for searching synonyms.</p>
<p>The web is no option for me; I can&#8217;t afford to maximize the strain to my hands each and every time I have to look something up. So I chose to write something from scratch. I will keep you posted on that one.</p>
<p>&nbsp;<br />&nbsp;</p>
<p>This brings me to matters of profession. Last week I had my first annual review which went really well, I might say. My work seems to be appreciated; resulting in a raise (2 weeks more vacation &#8211; which is good, because I need spare time a lot more than more money, nowadays) and the proposal as to whether I would like to work out even more own projects in the future. This includes going to (potential) customers, figuring out requirements, consult where applicable and finally implement those requirements in a new project. Likewise I&#8217;m getting the feeling that I really could go for quite some time in my current job. Even though I have always said that I won&#8217;t ever have to work with MS-Office <em>or</em> write accounting-software, it&#8217;s kinda nice to see your work really having a big impact on the efficiency of big companies and banks. In the current economical situation, I believe it is of utmost importance that cash-flow is guaranteed and that in an optimized speed. I might not work in a very fancy field with a young elite on a thriving web-project, but my work matters &#8211; not to the average user, but to the economy, which ultimately is needed for a happy life of each and every average user, isn&#8217;t it?</p>
<p><img class="alignleft size-full wp-image-722" title="black1" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/black1.png" alt="black1" width="151" height="286" /></p>
<p><img class="alignright size-full wp-image-723" title="green1" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/green1.png" alt="green1" width="182" height="319" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>I&#8217;m even getting a little more business-proof along the way. This is what I have looked just a month ago and last week. Each picture was taken after a work marathon of over 12 hours in the bureau, so be kind in your assessment.</p>
<p>Well, I need new trousers and a nice belt. I&#8217;m thinking of brown Kapok.</p>
<p>&nbsp;</p>
<p>Now it is time to post a picture of my workplace, at least. It was taken on my natural hour &#8211; when everyone else has left the building, already(; It features a left-over of my previous employer Sun Microsystems &#8211; my favourite keyboard, a Sun Type 7 in British English (really.. how can anyone think of coding using a Swiss layout*argh*). You can also see some decently stacked notes, my nice 24&#8243; Dell screen and well.. a table, I guess(;</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/05/workplace.jpg" rel="lightbox[679]"><img class="aligncenter size-large wp-image-713" title="workplace" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/workplace-1024x539.jpg" alt="workplace" width="614" height="323" /></a></p>
<p style="text-align: left;">Then, I finally found a nice place to stay for good. Now I rent an apartment in Zurich City, featuring 2.5 rooms, 50m² and a nice balcony with a good view. In the first month I already invested the better part of 10k CHF(which has formerly been more than I had available for a year..), but it really is worth the struggle. I find myself no longer situated in a clumsy small, dark and unproductive room, located in a house full of wildly drinking and partying students, but in my very own realm &#8211; featuring green planes around it, a great view, a close nature conservancy, shopping opportunities  nearby and public transportation just around the corner. It&#8217;s a real dream come true. And due to the caring help of my dear grandparents I was able to really move in &#8211; I finally have a 2&#215;1.6m bed, a couch(+ table) and a very nice workplace. Of course there&#8217;s every other piece of furniture, you would expect in an apartment, but those I consider real convenience. This is a picture on how my study looked like when I was still assembling it. Now, everything is finished and I probably will release some pictures when I&#8217;m content with all the accessories. But rest assured, it already looks a lot cleaner and nicer.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-719" title="moving_in" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/moving_in.jpg" alt="moving_in" width="589" height="294" /></p>
<p>&nbsp;</p>
<p style="text-align: left;">But now to the utmost important change in my life &#8211; Katrin and I are back together again \(^_^)/</p>
<p style="text-align: left;">A good year ago we split up after sharing an apartment for a year and being a couple for over five. Who would have guessed that we could ever join again; from Stuttgart she moved to Weimar and I moved to Zurich &#8211; not only in this respect into opposite directions. But we found a way and now that she has moved again we&#8217;re only 40km apart geographically and can share a new and rejoicing quality of partnership. I love her and have been with her for the better part of my adult life &#8211; and I am very much looking forward to sharing the rest of it with her, as well. However, first we have to figure out our next anniversary and how many years we will be celebrating(;</p>
<div id="attachment_726" class="wp-caption aligncenter" style="width: 568px"><img class="size-full wp-image-726" title="rumpel_and_preek" src="http://blog.dispatched.ch/wp-content/uploads/2009/05/rumpel_and_preek.jpg" alt="On a stroll, April 2009" width="558" height="418" /><p class="wp-caption-text">On a stroll, April 2009</p></div>
<p style="text-align: left;">Now why would I want to lead a life, relentlessly trying to improve it? Because in doing so, I find a great lot of joy, the time to work out, help my grandfather chop wood or go out and to the movies with Katrin without any further consideration &#8211; because I have created an environment in which I can find peace, love and happiness.</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/05/03/relentless-resourcefulness/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IT geek fail</title>
		<link>http://blog.dispatched.ch/2009/04/13/it-geek-fail/</link>
		<comments>http://blog.dispatched.ch/2009/04/13/it-geek-fail/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 10:10:16 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[geek fail]]></category>
		<category><![CDATA[jericho]]></category>
		<category><![CDATA[poser]]></category>

		<guid isPermaLink="false">http://blog.dispatched.ch/?p=660</guid>
		<description><![CDATA[Sometimes I wonder what kind of IT consultants are employed in the movie industry. The particular incident is taken from the  CBS series Jericho that I just started watching. This series tells the tale about nuclear bombs going off in the US and how a small town copes with the aftereffects. The scene I want [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I wonder what kind of IT consultants are employed in the movie industry. The particular incident is taken from the  CBS series <a href="http://www.cbs.com/primetime/jericho/">Jericho</a> that I just started watching. This series tells the tale about nuclear bombs going off in the US and how a small town copes with the aftereffects.</p>
<p>The scene I want to tell you about, happens just after an EMP. Of course, it was meant to cut off communications. The local blond High School cutie goes to the local Internet Café, anyway. She tries to get access to some web page; without success. Then the nerdy black girl comes into play. She is the daughter of a special agent from the CIA.</p>
<p>Blondy explains Nerd that she <em>needs </em>to check her mail, Nerd then asks if Blondy tried &#8220;using the IP address&#8221;. After a decline Nerd goes to action and does the following:</p>
<div id="attachment_665" class="wp-caption aligncenter" style="width: 346px"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/04/it_geek_fail.jpg" rel="lightbox[660]"><img class="size-full wp-image-665" title="it_geek_fail" src="http://blog.dispatched.ch/wp-content/uploads/2009/04/it_geek_fail.jpg" alt="IT geek fail" width="336" height="210" /></a><p class="wp-caption-text">IT geek fail</p></div>
<p>Nerd then crosses her arms and uses a very interesting facial expression. The chat went on as follows:</p>
<p>&#8220;<em>It&#8217;s weired. the Internet was built by the military. It&#8217;s supposed to survive nuclear war.</em>&#8221;<br />
- &#8220;<em>So why can&#8217;t I check my email?</em>&#8221;</p>
<p>Considering that the two girls didn&#8217;t know each other very well, I have three questions about the used IP address.</p>
<ol>
<li>Is there only one email provider in the US?</li>
<li>Shouldn&#8217;t IE display a message like &#8220;Address cannot be found&#8221;?</li>
<li>How do people get these half truths? Knowing about the 4-tuple structure, but with random numbers? Hints: <a href="http://www.rfc-editor.org/rfc/rfc760.txt">RFC760</a> and <a href="http://www.rfc-editor.org/rfc/rfc2734.txt">RFC2734</a></li>
</ol>
<p>Well, maybe she got confused. After all, her dad is a CIA agent acting as if he were from FBI. But to the locals he said he was a cop. Confusion seems to be running in the family, I guess.</p>
<p>It&#8217;s a pretty nice series, anyway. Too bad it got cancelled early &#8220;due to bad ratings&#8221;. Obviously the American public didn&#8217;t like the idea of a creative and controversial series showing what people(that includes Americans) can do when times are tough.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/04/13/it-geek-fail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Webscraping with Python and BeautifulSoup</title>
		<link>http://blog.dispatched.ch/2009/03/15/webscraping-with-python-and-beautifulsoup/</link>
		<comments>http://blog.dispatched.ch/2009/03/15/webscraping-with-python-and-beautifulsoup/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 10:05:08 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[beautifulsoup]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scraping]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web scraping]]></category>
		<category><![CDATA[webscraping]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=567</guid>
		<description><![CDATA[Recently my life has been a hype; partly due to my upcoming Python addiction. There&#8217;s simply no way around it; so I should better confess it in public. I&#8217;m in love with Python. It&#8217;s not only mature, businessproof and performant, but also benefits from sleekness, great performance and is just so much fun to write. [...]]]></description>
			<content:encoded><![CDATA[<p>Recently my life has been a hype; partly due to my upcoming Python addiction. There&#8217;s simply no way around it; so I should better confess it in public. I&#8217;m in love with Python. It&#8217;s not only mature, businessproof and performant, but also benefits from sleekness, great performance and is just so much fun to write. It&#8217;s as if I were in Star Trek and only had to tell the computer what I wanted; never minding how the job actually it is done. Even my favourite comic artist(besides Scott Adams, of course..)  <a href="http://xkcd.com/353/" target="_blank">took up</a> on it; so my feelings have to be honest.</p>
<p>In this short tutorial, I&#8217;m going to show you how to scrape a website with the 3rd party html-parsing module <a href="http://www.crummy.com/software/BeautifulSoup/" target="_blank">BeautifulSoup</a> in a practical example. We will search the wonderful translation engine <a href="http://www.dict.cc/" target="_blank">dict.cc</a>, which holds the key to over 700k translations from English to German and vice versa. Note that BeautifulSoup is <a href="http://www.crummy.com/software/BeautifulSoup/#Download" target="_blank">liscensed</a> just like Python while dict.cc allows for <a href="http://www.dict.cc/?s=about%3Afaq#faq15" target="_blank">external searching</a>.</p>
<p>First of, place BeautifulSoup.py in your modules directory. Alternatively, if you just want to do a quick test, put in the same directory where you will be writing your program. Then start your favourite text editor/Python IDE(for quick prototyping like we are about to do, I highly recommend a combination of IDLE and VIM) and begin coding. In this tutorial we won&#8217;t be doing any design; we won&#8217;t even encapsulate in a class. How to do that, later on, is up to your needs.</p>
<p>What we will do:</p>
<ol>
<li>go to dict.cc</li>
<li>enter a search word into the webform</li>
<li>submit the form</li>
<li>read the result</li>
<li>parse the html code</li>
<li>save all translations</li>
<li>print them</li>
</ol>
<p>You can either read the needed coded on the fly or <a href='http://blog.dispatched.ch/wp-content/uploads/2009/03/webscraping_demo.py'>download </a>it.<br />
Now let&#8217;s begin the magic. Those are our needed imports.</p>
<pre class="brush: python;">
import urllib
import urllib2
import string
import sys
from BeautifulSoup import BeautifulSoup
</pre>
<p><a href="http://docs.python.org/library/urllib.html" target="_blank">urllib</a> and <a href="http://docs.python.org/library/urllib2.html" target="_blank">urllib2</a> are both modules offering the possibility to read data from various URLs; they will be needed to open the connection and retrieve the website.  BeautifulSoup is, as mentioned, a html parser.</p>
<p>Since we are going to fetch our data from a website, we have to behave like a browser. That&#8217;s why will be needing to fake a <a href="http://de.wikipedia.org/wiki/User_Agent" target="_blank">user agent</a>. For our program, I chose to push the webstatistics a little in favour of Firefox and Solaris.</p>
<pre class="brush: python;">
user_agent = 'Mozilla/5 (Solaris 10) Gecko'
headers = { 'User-Agent' : user_agent }
</pre>
<p>Now let&#8217;s take a look at the code of dict.cc. We need to know how the webform is constructed if we want to query it.</p>
<pre class="brush: xml;">
...
&lt;form style=&quot;margin:0px&quot; action=&quot;http://www.dict.cc/&quot; method=&quot;get&quot;&gt;
  &lt;table&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;input id=&quot;sinp&quot; maxlength=&quot;100&quot; name=&quot;s&quot; size=&quot;25&quot; type=&quot;text&quot; /&gt;
        style=&quot;padding:2px;width:340px&quot; value=&quot;&quot;&gt;
      ...&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;
&lt;/form&gt;
...
</pre>
<p>The relevant parts are <em>action</em>, <em>method</em> and the <em>name</em> inside the <em>input</em> tag. The action is the webapplication that will get called when the form is submitted. The method shows us how we need to encode the data for the form while the <em>name</em> is our query variable.</p>
<pre class="brush: python;">
values = {'s' : sys.argv[1] }
data = urllib.urlencode(values)
request = urllib2.Request(&quot;http://www.dict.cc/&quot;, data, headers)
response = urllib2.urlopen(request)
</pre>
<p>Here the data get&#8217;s encapsulated in a <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol" target="_blank">GET request</a> and packed into the webform. Notice that <em>values</em> is a dictionary which makes handling more complex forms a charm. The the form gets submitted by urlopen() &#8211; i.e. we virtually pressed the &#8220;Search&#8221;-button.<br />
See how easy it is? These are only a couple lines of code, but we already have searched on dict.cc for a completely arbitrary word from the commandline. The <em>response</em> has also been retrieved. All that is left, is to extract the relevant information.</p>
<pre class="brush: python;">
the_page = response.read()
pool = BeautifulSoup(the_page)
</pre>
<p>The <em>response</em> is read and saved into regular html code. This code could now be analyzed via regular string.find() or re.findall() methods, but this implies hard-coding in reference to a lot of the underlying logic of the page. Besides, it would require a lot reverse engineering of the positional parameters, setting up several potentially recursive methods. This would ultimately produce ugly(i.e. not very pythonic) code. Lucky for us, there already is a full fledged html parser which allows us to ask just about any generic question. Let&#8217;s take a look at the resulting html code, first. If you are not yet familar with the tool that can be seen in the screenshot; I&#8217;m using Firefox with the <a href="https://addons.mozilla.org/de/firefox/addon/1843" target="_blank">Firebug</a> addon. This one is very helpful if you ever need to debug a website.</p>
<dl id="attachment_606" class="wp-caption aligncenter" style="width: 449px;">
<dt class="wp-caption-dt"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/03/picture-2.png" rel="lightbox[567]"><img class="size-full wp-image-606" title="dict_cc_search_for_web" src="http://blog.dispatched.ch/wp-content/uploads/2009/03/picture-2.png" alt="dict.cc // search for &quot;web&quot;" width="439" height="334" /></a></dt>
</dl>
<p>Let me show an excerpt of the code.</p>
<pre class="brush: xml;">
&lt;table&gt;..
  &lt;td class=&quot;td7nl&quot; style=&quot;background-color: rgb(233, 233, 233);&quot;&gt;
    &lt;a href=&quot;/englisch-deutsch/web.html&quot;&gt;
      &lt;b&gt;web&lt;/b&gt;
    &lt;/a&gt;
  &lt;/td&gt;
&lt;td class=&quot;td7nl&quot; ... /td&gt;
&lt;/table&gt;..
</pre>
<p>The results are displayed in a table. The two interesting columns share the class <em>td7nl</em>. The most efficient way would seem to just sweep all the data from inside the cells of these two columns. Fortunately for us, BeautifulSoup implemented just that feature.</p>
<pre class="brush: python;">
results = pool.findAll('td', attrs={'class' : 'td7nl'})
source = ''
translations = []

for result in results:
    word = ''
    for tmp in result.findAll(text=True):
        word = word + &quot; &quot; + unicode(tmp).encode(&quot;utf-8&quot;)
    if source == '':
        source = word
    else:
        translations.append((source, word))

for translation in translations:
    print &quot;%s =&gt; %s&quot; % (translation[0], translation[1])
</pre>
<p><em>results</em> will be a BeautifulSoup.ResultSet. Each member of the tuple is the html code of one column of the class <em>td7nl</em>. Notice that you can access each element like you would expect in a tuple. <em>result.findAll(text=True)</em> will return each embedded textual element of the table. All we have to do is merge the different tags together.<br />
<em>source</em> and <em>word</em> are temporary variables that will hold one translation in each iteration. Each translation will be saved as a pair(list) inside the <em>translations</em> tuple.<br />
Finally we iterate over the found translations and write them to the screen.</p>
<pre class="box">
$ python webscraping_demo.py
 kinky   {adj} =>  9 kraus   [Haar]
 kinky   {adj} =>  nappy   {adj}   [Am.]
 kinky   {adj} =>  6 kraus   [Haar]
 kinky   {adj} =>  crinkly   {adj}
 kinky   {adj} =>  kraus
 kinky   {adj} =>  curly   {adj}
 kinky   {adj} =>  kraus
 kinky   {adj} =>  frizzily   {adv}
</pre>
<p>In a regular application those results would need a little lexing, of course. The most important thing, however, is that we just wrote a translation wrapper onto a webapplication &#8211; in only 28 lines of code. Did I mention that I&#8217;m in love with Python?</p>
<p>All that is left is for me to recommend the <a href="http://www.crummy.com/software/BeautifulSoup/documentation.html">BeautifulSoup documentation</a>. What we did here really didn&#8217;t cover what this module is capable of.</p>
<p>I wish you all the best.</p>
<p><script type="text/javascript"><!--
digg_url = 'http://digg.com/programming/Webscraping_with_Python_and_BeautifulSoup';
// --></script><br />
<script src="http://digg.com/api/diggthis.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/03/15/webscraping-with-python-and-beautifulsoup/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>On competence #2</title>
		<link>http://blog.dispatched.ch/2009/03/14/on-competence-2/</link>
		<comments>http://blog.dispatched.ch/2009/03/14/on-competence-2/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 19:56:57 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[Carl]]></category>
		<category><![CDATA[competence]]></category>
		<category><![CDATA[Hackbart.net]]></category>
		<category><![CDATA[incompetence]]></category>
		<category><![CDATA[mssql]]></category>
		<category><![CDATA[no electricity]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=555</guid>
		<description><![CDATA[Strange things do happen. They just do. But not all of them are strange bad, some are strange good. For example, I just wept like a baby. It was the end of season 4 of Dr. House &#8211; well.. in this respect I&#8217;m not quite sure whether it&#8217;s a good thing. To be alone with [...]]]></description>
			<content:encoded><![CDATA[<p>Strange things do happen. They just do. But not all of them are strange bad, some are strange good. For example, I just wept like a baby. It was the end of season 4 of Dr. House &#8211; well.. in this respect I&#8217;m not quite sure whether it&#8217;s a good thing. To be alone with strange feelings on a Saturday evening.</p>
<p>On the other hand, admittedly, that&#8217;s not what I wanted to write about.</p>
<p>Yesterday began just like the the day before yesterday ended. I saw somebody trying to install Microsoft&#8217;s <span><span>sequelserver</span></span><span> on a Windows machine. Mind the fact that current versions of <span>bo</span></span>th<span> programs were chosen. Nevertheless it seemed quite impossible just to install it. Crazy thing. One might think that programs of the same vendor should cooperate more easily &#8211; at least if <span>bo</span></span>th are bought for insane prices and labeled to be compliant to one another. Lucky for me, that&#8217;s nothing I have to care about &#8211; I already won my fight against MSSQL; all I needed were five servers and three versions of Windows. Probably somebody should mention to Microsoft that there are other operating systems available; equipped with <span><span>sequelservers off the shelf. Some even are</span></span> free and performing just as well if not better(I mean.. there&#8217;s no LIMIT/OFFSET <span><span>implemenation in MSSQL</span></span>; how good can it be?)</p>
<p>Anyways, to once again feel corrupted by such a <span>pitiful</span> sight is nothing special &#8211; as I have <a href="http://blog.dispatched.ch/2009/03/12/on-competence">just</a> pointed out. Thereafter I asked my dear and sincerely noble friend Carl <span><span>Duevel</span></span> to help me make the world a better place. And guess what &#8211; my wish instantly came true on Friday, 13th. What about all that blabber concerning bad luck and stuff. In my opinion people should get punished if reporting sick on this day; it is clearly economically abstruse to let all these menial <span>dumbheads</span> carry on doing nothing but guarding their bed sheets. But not Carl. He wrote an excellent <a href="http://hackbart.net/?p=5">article</a> on Javas <span><span>RegEx</span></span> implementation. That alone has made my day, but there&#8217;s more &#8211; he&#8217;s <a href="http://hackbart.net/?p=10">mocking</a> the use of inferior technology(aka Flash*choke*) only a couple of hours later. A great start for a newly brightened future is before us. Behold, world, for Captain Code will show you how it is done! I can&#8217;t even tell how much I&#8217;m looking forward to read frequently of his ulterior insights. Those have have been part of the few sorrows I hold on behalf of leaving Stuttgart; I had to physically leave him behind. On the other hand, maybe, just maybe, that might have been one of the glitches needed for him to finally turn public.</p>
<p>The most interesting thing could probably be, that while I was writing this post, I experienced like the tenth power failure in this wonderful building. One of my housemates came home, started her <span><span>oversized</span></span> electrical heater &#8211; and boom. Well, I understand that she needs it. Our main heating system doesn&#8217;t work properly and in her room it doesn&#8217;t work at all. Unlucky for us was that she tangled with the main fuses that thus went <span><span>byebye</span></span>, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/03/14/on-competence-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>On competence</title>
		<link>http://blog.dispatched.ch/2009/03/12/on-competence/</link>
		<comments>http://blog.dispatched.ch/2009/03/12/on-competence/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 22:28:39 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[bureaucracy]]></category>
		<category><![CDATA[competence]]></category>
		<category><![CDATA[no competence]]></category>
		<category><![CDATA[no sleep]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[university]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=532</guid>
		<description><![CDATA[Today was a day of competence &#8211; in its pure and inconceivable form. The first 8 hours of my 5.5 hours working day I have spent with a &#8220;Senior Consultant&#8221;. To shorten the story: after four months working overtime, I have finally reverse engineered enough information to be certain that the product we bought just [...]]]></description>
			<content:encoded><![CDATA[<p>Today was a day of competence &#8211; in its pure and inconceivable form. The first 8 hours of my 5.5 hours working day I have spent with a &#8220;Senior Consultant&#8221;. To shorten the story: after four months working overtime, I have finally reverse engineered enough information to be certain that the product we bought just isn&#8217;t going to do what it is supposed to. Instead I have to put up with approx. 10 fully committed days to compensate all flaws and inabilities &#8211; only to lessen the gap between what has been promised and what will be possible. Notice that &#8220;what has been promised&#8221; should have been done in about a weeks worth of work and that this week has lasted approximately four months now. Reasoning, I guess my position is save for yet another week*phew*</p>
<p>On the other hand I just had a soothing conversation on the phone with the <span style="text-decoration: line-through;">astonishingly unfit</span> almighty administration of the university I used to go to. As always they didn&#8217;t fail to surprise me once again in matters of stupidity, regression, unfriendliness and a relentless misperception/misapprehension of their own job.<br />
Probably I shouldn&#8217;t go into detail too much, but let&#8217;s assume a situation where you wanted to send an application for something that is perfectly reasonable, what would you do? Also consider the fact that you already consulted the dean of your faculty and that he confirmed your thesis about the application being not only reasonable, but perfectly valid. What I did was to go the the universitiys&#8217; website, get the form, filled it out and send it to the fax number I found on the application which should have been the last pro-active part of mine in this matter. Six weeks later, I&#8217;m still not done. What went wrong? It&#8217;s easy to figure.</p>
<p>You probably knew it all the way when I mentioned the fax machine. I have used <span style="text-decoration: line-through;">moderately modern and therefore too complex </span>inadequate   technology during the first contact; I even went so far as to use an e-mail address I found under &#8220;contact -&gt; administration for students -&gt; computer science department&#8221; to send an inquiry on whether my former request has been received. Today, when I called and asked for a confirmation of receiving my application, this most certainly hilariously ugly woman spontaneously burst into shouting. I immediately felt as if I had shot her baby. Turns out I was head-wrong. In the next 15 minutes I came to realize that she doesn&#8217;t hate me for personal reasons, but she still behaved as if I were claiming she never has paid taxes and I came to get them from her all at once. Certainly understandable &#8211; I wanted to know whether my application has been received and probably is being processed already; that could certainly be considered a matter of existence for her.</p>
<p>In the meantime, she taught me a great many wise things. For example I would be half a year behind. Behind what she didn&#8217;t tell. Plus I couldn&#8217;t do any exams. Which exams exactly, I also don&#8217;t know. When I asked her, the shouting resolved in angry yelling &#8211; stressing her vocal cords to a level close before the point where I might have considered it unfriendly. She repeated the upcoming facts that I would be behind and that I couldn&#8217;t do exams, because there would be no sixth semester. Never again, I thought? Great! I heard that one stinks, anyways. Then I made my first mistake &#8211; I tried to outsmart her. That&#8217;s something people usually don&#8217;t like very much. I told her I could take courses from the seventh semester. Oh, baby. She didn&#8217;t like that too much. After a long and shiny tirade I thought to myself &#8220;So what? Couldn&#8217;t hurt to tell her a little about her job, could it?&#8221;. I told her that it is possible, that I have colleagues doing something similar, that the examination regulations allowed me to do courses whenever I see fit and that I planned everything in full agreement of the dean of computer science. What I should have known is that everyone&#8217;s colleague is only telling him lies, that taking courses was not as simple as I think it is(yeah, probably she didn&#8217;t bother graduating from knitting school, because taking courses has been just too much a grind..) and finally that the dean simply had no say in these things at all.</p>
<p>Her fury began to annoy me a little by now, but when I tried to tell her that I only wanted to know about the status of my application she told me to shut up and wait. What followed should be considered the greatest accomplishments of mankind &#8211; complete and utter disregard for humbleness. She asked her colleague(remember; those are the guys always lying to you &#8211; so better don&#8217;t ask them too important stuff) whether it is possible to officially be in one semester, but take courses of another. Surely she was determined to start whatever she tried to do to me all over again after hearing reassuring words. Well, she didn&#8217;t. The nice, and officially most intelligent person in the bureau, told her that I&#8217;m in the main course and that I could do whatever and whenever I wanted to. Hearing this, I expected anything from a sign of insight to an apology of some sort. What I didn&#8217;t take into account was that her life already was very confusing and not that pleasing. So she went on hating the phone, me and herself. However, I had enough of this senseless waste of time. I gave her my best wishes and hung up.</p>
<p>What I still don&#8217;t know after having to put up with this miserable performance of a bureaucrat is whether my application will ever be processed at all. Today I even received a mail from a professor. He told me that &#8220;he heard&#8221; I would be taking his classes &#8211; he already designated me into a group and told me that next Monday would be a mandatory kick-off meeting. Well, I guess, I won&#8217;t pay the semesters&#8217; fee and then I will be banned anyway. That&#8217;s what I wanted from the beginning, I think.. And if one thing is for sure: I won&#8217;t be in Stuttgart next Monday; for whatever reasons. Apart from the mail from the professor, I am very glad that I had this experience on the phone. It proved once more that just about any random person living in Stuttgart is miserable, unfriendly, conservative, boring and dumb &#8211; a combination of attributes I simply don&#8217;t want to face in aggregated form. How I miss Stuttgart! not.</p>
<p>Coming home, I realized that my fellow housemates were meeting with the landlord. The last months we were living like insects in a more cold than warm and more stone-age-ish than electriced cave(well.. it has walls and a ceiling of stone, at least). We were told that the house would be torn apart after we leave; granting us the choice whether or not to clean, to fix stuff and to let all the <span style="text-decoration: line-through;">garbage</span> obsolete furniture just inside. Today everything changed. The formerly liberal and avuncular landlord turned into Satan himself; demanding unscrupulous things like painting the tainted walls. Of course they were as stained when everyone moved in as they are now, but I guess that&#8217;s no argument to make. There&#8217;s more, of course, but it&#8217;s probably best not to think of it right now. Having rent apartments for the last years, I know a little about rights and responsibilities in this area &#8211; and I just spent my evening funnelling those insights into my fellow housemates.</p>
<p>All in all, I&#8217;m pretty impressed. I didn&#8217;t even bother to mention that I have been at home tonight for just about six hours before moving back to work; even though I have been there for 14 hours straight yesterday. Well, I even had darn good reason for that. I found code that locked itself out in not less than four places &#8211; giving my middleware a little bit of trouble. I also won&#8217;t go into detail that I found out about databases that have configuration tables for transcription tables which lead to statistics tables &#8211; only to never be read, but to be redundant to other configuration tables for another transcription table leading to its own statistics table. Since none of the tables have any keys or indices and there are lots of statistics to be saved, one of the tables has outgrown the state where queries going in will bring back a result different from a timeout. The most obvious part here is that both tables are never being read in a meaningful way. There is only one daemon process(the same that&#8217;s been filling these tables all along), reading one column of only one of the tables, sorts it and writes the top result in a third table. There the data will finally be read from a program and translated by a third transcription table. Apparently it proved impossible to fill these 4 bytes of information in the third table skipping the overhead before. And good for me I had to reverse-engineer all that great business logic; it&#8217;s not as if my todo-list is giving me any trouble recently; there&#8217;s still some space on the monitor that I can read in between the piles of notes.</p>
<p>I could go on, but then it might seem to you, my dear and noble reader, that I am a bitter old man having a hard time keeping my heart from exploding due to too much pressure. But the truth couldn&#8217;t be farther apart. In fact, I don&#8217;t think of myself as a truly smart man &#8211; I mean, I have my good parts that I have worked pretty hard for &#8211; and I am proud of them. But I&#8217;m no genius and as it seems never will be. On the other hand, being confronted with those massive amounts of stupidity in the world, I feel pretty neat about myself. I am deeply grateful for what I have not become.  Others missed out on that opportunity and are now stuck in a demeaning life of sluggishness. I look forward to the great journeys of tomorrow, they undoubtedly will be fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/03/12/on-competence/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Where to live &#8211; Week #1</title>
		<link>http://blog.dispatched.ch/2009/03/03/where-to-live-week-1/</link>
		<comments>http://blog.dispatched.ch/2009/03/03/where-to-live-week-1/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 01:01:14 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[apartment]]></category>
		<category><![CDATA[overtime]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=504</guid>
		<description><![CDATA[Time is drawing nearer by the day; I should better hurry and secure me my dream mansion to live in. Unfortunately I&#8217;m lacking a major component for seeking one of those &#8211; time. Last week I bookmarked close to two dozen apartments, but just about each night I couldn&#8217;t go and attend visiting hours, because [...]]]></description>
			<content:encoded><![CDATA[<p>Time is drawing nearer by the day; I should better hurry and secure me my dream mansion to live in. Unfortunately I&#8217;m lacking a major component for seeking one of those &#8211; time. Last week I bookmarked close to two dozen apartments, but just about each night I couldn&#8217;t go and attend visiting hours, because I had to work late. Friday then(and I may say this was yet another Friday night), I left the bureau well after 10PM, had dinner and a beer with a co-worker and was home just before midnight when others were about to enjoy their party habits. But how could I leave early while there was this <span style="text-decoration: line-through;">sinking ship</span> customer having decent trouble.</p>
<p>Only one day I was able to leave early. And so I planned it well. My first stop of the afternoon was to fetch my so called &#8220;Betreibungsauszug&#8221; attesting me to have no  debts; and guess what &#8211; it seems I have none <span style="text-decoration: line-through;">they know of</span>. Getting this one was rather easy since bureaucracy seems to work really smoothly; no overhead, no long waiting in lines, no unfriendly clerks, no over-complication leading to any trouble so far.</p>
<p>Then the real work began; I drove off to what I refused to believe it might exist in this beautiful city &#8211; a real ghetto with everything needed to feel uncomfortable: all those pseudo gangstas(please notice my fluent subcultural influences) in their pimped cars listening to crap, drunk migrant kids seeking for trouble, a lot of broken glass on the street to take my eyes of walls full of graffiti calling me names. Well, with all that filth I might have lived with &#8211; despite the fact that I would have had to arm myself in the future, but the apartment waiting for me was beyond all legally possible description. I will skip this part, because it probably would seem that I&#8217;m a vicious Nazi talking bad about friendly people just happening to originate from foreign cultures &#8211; only because I had the pleasure to find a flophouse full of terribly disgusting people &#8211; leaving me itches in the nasty places. Supposedly I should only contemplate to write a decent letter to the landlord, because I consider it frivolous impudence to put up with visiting hours while the only ways inside the apartment are those the rats have broken free for the sake of having flight tunnels when the nasty vermin wake up at night. Well, considering my spare time on the other hand; this might never happen.</p>
<p>On the other hand, the second apartment I saw was nothing but magnificent. Proclaiming the same matter of expense as &#8220;Exhibit A&#8221; for a future investigation on how cockroaches can engulf an entire human being if only the breeding habitat is set up properly, the apartment just fulfilled all my dreams &#8211; including being close to work, brightly and quiet. There were even bonuses like the Coop just around the corner having opening hours until 11PM even on Saturdays, the tram station being nearby or friendly, tidy and fluent previous tenants from the beautiful country of Liechtenstein. Oh man, I wish I could live there!</p>
<p>Of course I wanted to take action and introduce myself personally at the estate agency &#8211; probably to even leave a good impression there. But what shall I say, some client of us thought better of my plans and started to post some invoices not once, but multiple times&#8230; Thinking of the amounts being well in the high 6-figure ranges, I wonder what manual signatures are for (if our system fails due to the clients&#8217; lack of supporting infrastructur that can handle the SQL traffic). No matter what, I had my fair share of <span style="text-decoration: line-through;">quick-fixes</span> work to do and stayed until some time around 11PM which probably only was 6 hours after the real estate guys went home and on with their personal lives. Considering that today(Monday) there might also have been a last minute opening for a private investigation on whether I could smuggle myself into my dreams, it might have been a good idea to stay less than 14 hours in the bureau one might think. Well, what can I say..</p>
<p>Don&#8217;t wonder if my address will slightly change and soon will be &#8220;Bridgestreet 24&#8243; &#8211; somewhere more close to the bureau &#8211; then I could finally leave all this logistical overhead behind and walk myself to work each day.</p>
<p>&#8211;</p>
<p>Update: Today I received a call from the real estate agency. As it turns out they made an excessive background-check on me &#8211; calling earlier  landlords and my employer who each took the liberty of recommending me &#8211; probably only because they know what I sound like when I&#8217;m really grumpy, but still, I&#8217;m very glad they all stood up for me, because on Friday morning my life will take the next turn and become even greater than now: I will be signing the contract for the mentioned apartment of my dreams*yay* As it seems &#8220;week #1&#8243; might be the last week for the next decade to come*phew*</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/03/03/where-to-live-week-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not quite there yet</title>
		<link>http://blog.dispatched.ch/2009/02/10/not-quite-there-yet/</link>
		<comments>http://blog.dispatched.ch/2009/02/10/not-quite-there-yet/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 19:36:47 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[late hours]]></category>
		<category><![CDATA[losing weight]]></category>
		<category><![CDATA[nikeplus]]></category>
		<category><![CDATA[running]]></category>
		<category><![CDATA[sports]]></category>
		<category><![CDATA[working]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=381</guid>
		<description><![CDATA[Not where I wanted to get to; not at all. And it even got worse. Stats 2009 as of today: Completed runs: 0 Completed other workouts: 0 Engaged in other sweaty activities whatsoever: 0 Overall accomplishment: 0 At least some of those stats I should be able to do something about, shouldn&#8217;t I? At the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.dispatched.ch/wp-content/uploads/2009/02/nikeplus_rundown_2008.png" rel="lightbox[381]"><img class="aligncenter size-medium wp-image-382" title="nikeplus_rundown_2008" src="http://blog.dispatched.ch/wp-content/uploads/2009/02/nikeplus_rundown_2008-300x145.png" alt="nikeplus_rundown_2008" width="300" height="145" /></a></p>
<p style="text-align: center;">
<p>Not where I wanted to get to; not at all. And it even got worse.</p>
<table style="text-align: right;" border="0">
<tbody>
<tr>
<td><strong>Stats 2009</strong> as of today:</td>
<td></td>
<td>Completed runs: <strong>0</strong></td>
</tr>
<tr>
<td></td>
<td></td>
<td>Completed other workouts: <strong>0</strong></td>
</tr>
<tr>
<td></td>
<td></td>
<td>Engaged in other sweaty activities whatsoever: <strong>0</strong></td>
</tr>
<tr>
<td></td>
<td></td>
<td>Overall accomplishment: <span style="text-decoration: underline;"><strong>0</strong></span></td>
</tr>
</tbody>
</table>
<p>At least some of those stats I should be able to do something about, shouldn&#8217;t I?</p>
<p>At the end of 2008 I really needed to find a new place to live(leaving me little time besides work), plus there was snow everywhere, so I believed myself to be excused from doing something useful with my body. 2009 began as a disaster &#8211; after not partying at all and reading in my bed when everyone else was having a blast, I awoke on 01.01.2009 completely out-of-order &#8211; neither could I speak, nor could I do anything but moan where this lapse might have come from. In the weeks to come, I still suffered the consequences of <em>I-Don&#8217;t-Know-What</em>.. while today, I finally reached the most stupid of all potential alibis: I&#8217;m working late each day.<br />
Since long I began to feel the consequences. Living the natural life of a nerd(<code><span style="color: #0000ff;">while</span> <span style="color: #ff0000;">true</span> <span style="color: #0000ff;">do </span>{ <span style="color: #0000ff;">for </span>(<span style="color: #0000ff;">int </span>i=<span style="color: #ff0000;">0</span>; i&lt;<span style="color: #ff0000;">10</span>; i++) { Keyboard.type(Key.press(Seed.random())); } Mouse.move(<span style="color: #ff0000;">0</span>,<span style="color: #ff0000;">5</span>); Mouse.click(); Mouse.move(<span style="color: #ff0000;">0</span>,-<span style="color: #ff0000;">5</span>); Voice.moan(Sound.type("<span style="color: #0000ff;">grumpy</span>")); Voice.swear("<span style="color: #0000ff;">xxx Windows xxx!!</span>"); Position.lean_back(); Position.fold_hands_behind_head(); sleep <span style="color: #ff0000;">3</span>; Hands.tap(); sleep <span style="color: #ff0000;">10</span>; }</code>), I already lost 8lbs and my back started to hurt last week.</p>
<p>I really have to improve on my daily routine. To say the truth, it really has been great before I moved; but it seems I have to invest into taking care of myself more properly. <em>&#8220;What good is everything else if my health keeps degrading?&#8221;</em> is what I should have in mind more often.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Besides all of that: How is it that I saved petrol while jogging? Well, I won&#8217;t argue. Actually this might really come in handy some time &#8211; can I cash it out or do I receive a bonus card for the gas station?</p>
<p>Anecdote: Why wouldn&#8217;t nikeplus.com load in Windows/Firefox? If I&#8217;m staying late at the bureau, I should at least be able to do something useful in the meantime..</p>
<p><em><br />
</em></p>
<p><em>Update: Wrote it, went to the station and realized that sprinting half a mile to catch the tram certainly felt different a couple of months ago. If I remember it correctly, I even was registered in the half-marathon of Stuttgart last year &#8211; and if upcoming events and circumstances wouldn&#8217;t have kept me awake the night before, I probably would&#8217;ve run it in well under 1:50h, I think. But who knows &#8211; these days my body feels more like wreckage than a highly tuned apparatus and thinking of the &#8220;old&#8221; days certainly doesn&#8217;t help..</em></p>
<p><em>Anecdote: Tonight, there was a storm of up to 100mph which (due to the achievements of modern technology; i.e. houses) I wasn&#8217;t aware of until this morning when I drove to work whilst seeing just too many things blown away &#8211; barriers, garbage cans, whole trees and.. motorcycles. This is why I really had a bad feeling all day; about coming home and finding mine lying helplessly on the streets, but lucky me &#8211; I must be doing something right that everything else fell, but not my bike(:</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/02/10/not-quite-there-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Last man standing</title>
		<link>http://blog.dispatched.ch/2009/02/10/last-man-standing/</link>
		<comments>http://blog.dispatched.ch/2009/02/10/last-man-standing/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 10:47:22 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[jean-luc]]></category>
		<category><![CDATA[koss porta pro]]></category>
		<category><![CDATA[little sleep]]></category>
		<category><![CDATA[space-time]]></category>
		<category><![CDATA[vegan]]></category>
		<category><![CDATA[vegetarian]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=352</guid>
		<description><![CDATA[These days I find myself most often to be the last guy coming to work &#8211; but I would like to think that this somewhat correlates with the circumstance of me being as often a subset of the last people to leave the bureau in the middle of the night later hours of the day. [...]]]></description>
			<content:encoded><![CDATA[<p>These days I find myself most often to be the last guy coming to work &#8211; but I would like to think that this somewhat correlates with the circumstance of me being as often a subset of the last people to leave the bureau in the <span style="text-decoration: line-through;">middle of the night</span> later hours of the day. Thinking of my personal matters right now, I should probably start cutting back on hours, find myself a nice flat and take care of some social issues.</p>
<p>Before arriving at my temporary home at 9:30pm yesterday <span style="text-decoration: line-through;">again</span>, I have consolidated about 18 papers full of random to-dos onto only three pages while finding solutions for several of the beforehand penned down problems.</p>
<div id="attachment_355" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/02/what_i_did_today_is.jpg" rel="lightbox[352]"><img class="size-medium wp-image-355" title="what_i_did_today_is" src="http://blog.dispatched.ch/wp-content/uploads/2009/02/what_i_did_today_is-300x225.jpg" alt="what_i_did_today_is" width="300" height="225" /></a><p class="wp-caption-text">Obsolete by consolidation</p></div>
<p>Considering I start to look this fucked up when working too many hours, I really have to cut back. But still &#8211; this picture is featuring my two new best friends: Jean-Luc(the label is Picard, so there really was no choice of not naming my new companion after the captain of NCC-1701-D) and my headphones(Koss Porta Pro) which both deserve a special feature on gefechtsdienst for the sake of making my life joyous(;</p>
<div id="attachment_361" class="wp-caption aligncenter" style="width: 348px"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/02/last_man_standing1.jpg" rel="lightbox[352]"><img class="size-medium wp-image-361" title="last_man_standing" src="http://blog.dispatched.ch/wp-content/uploads/2009/02/last_man_standing1-300x226.jpg" alt="Weary man in near empty tram enjoying his trip home" width="338" height="254" /></a><p class="wp-caption-text">Weary man in near empty tram enjoying his trip home</p></div>
<p>Annotation:</p>
<ol>
<li>Today I got hold of some information which might concern you, my dear and most precious reader, too. Google found a gap(or if you want to call it void) in the space-time-continuum. You can observe it using Google Street View: <a href="http://tinyurl.com/cd72b7">NE Summit Dr, Blue Springs, Jackson, Missouri 64014 </a>
<p><div id="attachment_372" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/02/gap_of_space_time_continuum.png" rel="lightbox[352]"><img class="size-medium wp-image-372" title="gap_of_space_time_continuum" src="http://blog.dispatched.ch/wp-content/uploads/2009/02/gap_of_space_time_continuum-300x251.png" alt="Gap in the space-time-continuum" width="300" height="251" /></a><p class="wp-caption-text">Gap in the space-time-continuum</p></div></li>
<li>The day before yesterday Steffipunkt announced in <a href="http://twitter.com/Steffipunkt">Twitter</a> and on her <a href="http://bittenichtklatschen.blogspot.com/2009/02/byebye-milch-adieu-kase.html">blog</a> that already being a Vegetarian, she would improve on her Karma in trying to live a vegan lifestyle as of tomorrow(which accidentally already has become yesterday in the meantime..). I was full of joy to have randomly found such a nice post in between all this blabber on the web and then rejoiced when she wrote a new post today in which she summarized her first experiences. Even if it might seem a struggle at first, I wish her all the luck and look forward to be kept posted(;</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/02/10/last-man-standing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Still seeking</title>
		<link>http://blog.dispatched.ch/2009/02/06/still-seeking/</link>
		<comments>http://blog.dispatched.ch/2009/02/06/still-seeking/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 15:03:13 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[computer science]]></category>
		<category><![CDATA[efficiency]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[seeking]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[switzerland]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=327</guid>
		<description><![CDATA[Probably one of the things on my list on what I really dislike is working.. inefficiently. All my life I have been striving to improve myself, my skills, social relations, work(-load^^), [..] &#8211; and while I certainly cannot say that I reached perfection, the path taught me one thing or another. On the other hand [...]]]></description>
			<content:encoded><![CDATA[<p>Probably one of the things on my list on what I really dislike is working.. inefficiently. All my life I have been striving to improve myself, my skills, social relations, work(-load^^), [..] &#8211; and while I certainly cannot say that I reached perfection, the path taught me one thing or another.</p>
<p>On the other hand I am struggling with how processes sometimes dictate me to function. We are all surrounded by <span style="text-decoration: line-through;">grossly static and therefore always imperfect</span> well designed systems that need us to include ourselves in a more or less clearly defined way. It doesn&#8217;t matter if it&#8217;s the educational system that needs us to do just one paper after another, to finally have accumulated enough redundant and in itself senseless paperwork to be able to perform just a sequel of the aforementioned menial task or if it is our employer who urges us to use Microsoft Windows, because that&#8217;s the operating system imperatively declared as &#8220;business-proof&#8221; &#8211; when it comes to conforming to these given rule sets, I am at constant struggle with myself on why I am investing time in actions disclosed as being utterly inferior to alternatively available methods. There used to be a strikingly insistent explanation for everything &#8211; studying is important, because it proves to everyone else that you&#8217;re capable of doing your desired job while working with Microsoft Windows is important, because the guy ultimately paying your bills told you to. So far, this argument sounds simple enough, but I am afraid it can be dismantled just as easily.</p>
<p>For instance, there weren&#8217;t many exams that I didn&#8217;t succeed in without not having to put up any measurable effort beyond letting my tired eyes hover over some boring notes for two hours or so(annotation: I actually succeeded in using double double-negation in only the first half of this premise which already means more to me than all the papers I had to pile up during the last years) which ought to disprove (at least to myself) the declaration of improving me in matters of computer science any reasonable extent in relation to the vast amount of time spent simply holding the title &#8220;student&#8221; that used to imply a lot of restrictions like not being able to earn any appreciable amount of money. One might argue that I could study a lot quicker and therefore finish earlier if I frivolously declare my studies to be too easy for me which might be true, but I simply cannot overcome those fundamental motivational issues I have with studying itself &#8211; ever since I have learned that it doesn&#8217;t prove anything for myself, each hour invested into it just plainly feels like lost time I can never take back. This is why I chose the way of least friction &#8211; to be a student, but only to an endurable extent.</p>
<p>On the other side, I can&#8217;t stand working in topologies consisting of Microsoft powered machines &#8211; in fact I can&#8217;t even think of any way on working less efficient. There&#8217;s either a missing a license for VPN or there&#8217;s no license left for accessing the terminal server or the server won&#8217;t respond, because the operating system just went for a <span style="text-decoration: line-through;">memory</span> leak; there is always an obscure explanation why the programmer has to earn his money rather waiting than actually doing something useful. Then there&#8217;s always the thought that close to any requirement could be fulfilled amazingly easier in a Unix based environment; to only quote one example of today: A co-worker/project-manager had a serious and business threatening problem. There&#8217;s a bank which deploys some kind of ASCII-list on the web and this list is somehow important to one of our customers. Therefore there was a role created for some <span style="text-decoration: line-through;">encouragingly qualified person</span> minion(who is probably living in a <em>very</em> dark cellar) to download this file each week, time and time again, and to store it in a certain folder. The obvious problem is that intelligence obliges us to not to repeat simple and redundant tasks over and over again, but to seek out for new opportunities(or at least letting our mind wander) &#8211; and so did the person having the role of being a downloading machine. Of course the project manager is qualified and therefore would have liked someone to write a daemon process which would have loved to do the job on a regular basis(even if only lacking a infinitesimal amount of consciousness in comparison to the human downloading machine), but since application programmers are a rare resource these days, there was no-one available to write it. Evidently this task could have been performed in just about any other operating system with pre-installed tools; with any kind of Unix it would have been a matter of seconds to create a cron-job doing a wget. Of course Microsoft Windows can never be underestimated and since I&#8217;m trying to look a likable fellow human being, I hacked together some lines of Python code which then had to be re-assembled with a wrapper program to look like a stand-alone executable, because scripts are not allowed on some so called servers, because they impose a security threat &#8211; or more often are considered as being not performing enough(yeah, like Python would ever decline on a dare on who downloads the ASCII-file faster considering the opponent to be some random guy whose sole peripherals are a mouse and IE6). Even so &#8211; using Python for this trivial task took me more minutes than it would have taken me to implement a cron-job calling wget &#8211; saying that, other programmers even might have implemented a real Windows service using C++ or something equally gross. I mean &#8211; the customer did pay a guy to do the downloading so far.</p>
<p>This is where I finally reach my conclusion; if there are customers willing to pay for slowly built, hardly maintainable, badly scaling software whilst there are so much more efficient ways of doing the same job without the customer ever knowing about the reduced development costs, wouldn&#8217;t the intelligent course of action be to do just that instead of growing older from waiting, because the man in charge told you to?</p>
<p>Annotation: At least I have seen something incredibly efficient today. As I have been driving with the tram to work as every day, it was this morning that I witnessed the first control for tickets &#8211; leaving an impression on me. About 20 seconds before arriving at a seemingly random station there was an announcement to ready our tickets. While holding at the next station 10 men in uniforms entered the tram bringing up memories of a SWAT team storming a building that is to be re-pacified. Only another 20 seconds later they were already done and left the tram as quickly as they entered.<br />
Two things I find peculiarly interesting:<br />
1. Efficiency and speed were close to a theoretical optimum.<br />
2. Absolutely no one tried to dodge the fare. I repeat: No one in the whole tram.</p>
<p>I have never seen the like before in my life. This finally has proven a statistic to me that I have recently dug from the depths of modern information distribution systems where a German consulting group sought to identify which city of the world held the most quality of life[1].<br />
The pleasure was mine while reading that the 39 criteria that were used in the fields of politics, culture, life standard, income, health, etc, lead the consultants to crown Zurich(CH) as just this city. I would like to further mention that the #2 city of the world is Geneva(CH). Additionally counting #9 (Bern), this clearly shows the dominating factor of Switzerland.<br />
Even though I really am in love with Zurich(or probably because of my definite affection), it&#8217;s a little strange to know that there is no better place to live in the whole world. Well, I better not screw up around here(;</p>
<p>[1] <a href="http://www.mercer.com/referencecontent.htm?idContent=1128060">http://www.mercer.com/referencecontent.htm?idContent=1128060</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/02/06/still-seeking/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>On student life</title>
		<link>http://blog.dispatched.ch/2009/02/06/on-student-life/</link>
		<comments>http://blog.dispatched.ch/2009/02/06/on-student-life/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 10:10:20 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[no sleep]]></category>
		<category><![CDATA[overtime]]></category>
		<category><![CDATA[sleep]]></category>
		<category><![CDATA[student life]]></category>
		<category><![CDATA[students]]></category>
		<category><![CDATA[the big bang theory]]></category>
		<category><![CDATA[vodka]]></category>
		<category><![CDATA[working]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=329</guid>
		<description><![CDATA[tonight, around 00:05AM, I came to realize that there might be a resource conflict coming up &#8211; I was still sitting in the bureau; not quite finished yet, but catching the last train on the other hand had a pretty exciting touch to it as well. So I left early. Coming home, I powered down [...]]]></description>
			<content:encoded><![CDATA[<p>tonight, around 00:05AM, I came to realize that there might be a resource conflict coming up &#8211; I was still sitting in the bureau; not quite finished yet, but catching the last train on the other hand had a pretty exciting touch to it as well. So I left early.<br />
Coming home, I powered down my iPod at the entrance and was instantly greeted by that kind of Deathmetal that let&#8217;s you fear the wrath of all norsk gods at once. Walking into the house was like entering a near perfect chaos &#8211; the sonic disturbance somehow disarranged just about everything in the kitchen and living room. Where there once has been a table waiting in availability for someone to see fit and share a plate for a decent meal, there were only beer cans, vodka bottles and the remainder of several cigarette boxes.<br />
Since my evening was spoiled concerning matters of any reasonable socialisation due to the advanced time of day and my recent lack of listening to my ears bleeding their way to Tinnitus, I joined in for a cheese sandwich, a beer and a couple of songs all sounding like &#8220;Death in Fire&#8221; before going back to my <span style="text-decoration: line-through;">nerdy</span> compelling life and some episodes of &#8220;The Big Bang Theory&#8221; before <span style="text-decoration: line-through;">falling asleep</span> dropping dead for at least 4 hours prior to going back to work.</p>
<p>Annotation: Recently I kinda struggled with the problem on how to nourish myself effectively while not getting broke at the same time. The day before yesterday for example, I spent 40CHF on lunch and dinner alone. Yesterday on the other hand, I probably solved the matter completely in buying a trail mix which got me from lunch at 12PM until 00:00AM without any hassle at all &#8211; I even felt more awake and open to productive thinking. And for final reasoning, a trail mix even conforms to Fruitarian lifestyle which is a definite plus(not implying that I can live up to this standard in any mentionable way). Further testing is definitely needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/02/06/on-student-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Closing in</title>
		<link>http://blog.dispatched.ch/2009/02/04/closing-in/</link>
		<comments>http://blog.dispatched.ch/2009/02/04/closing-in/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 18:29:38 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[48g]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[debt]]></category>
		<category><![CDATA[favicon]]></category>
		<category><![CDATA[friends]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[pfaffenhof]]></category>
		<category><![CDATA[timemachine]]></category>
		<category><![CDATA[weimar]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=311</guid>
		<description><![CDATA[on so many things at once, I&#8217;m having trouble to keep track of what matters most. Well, at least it kept me from writing any dedicated posts &#8211; long enough to feel a lack of new information. One important change is that I won&#8217;t be a tutor in my favourite living place Pfaffenhof anymore. The [...]]]></description>
			<content:encoded><![CDATA[<p>on so many things at once, I&#8217;m having trouble to keep track of what matters most. Well, at least it kept me from writing any dedicated posts &#8211; long enough to feel a lack of new information.</p>
<p>One important change is that I won&#8217;t be a tutor in my favourite living place <a href="http://pfaffenhof.org">Pfaffenhof</a> anymore. The last couple of days I arranged everything that is needed for a final transition &#8211; bank account, phone, duties and loads fun will be transferred to several of the old <span style="text-decoration: line-through;">newcomers</span> geezers in 48G aka &#8220;the cage&#8221;. Doing so really was a latecomer considering that I have left my former accommodation in August 2008.. At first I thought and hoped that it would prove possible for me to go back there on a regular basis to be able to put things into perspective for my successors (of course also because I miss the place), but time has proven me wrong &#8211; another approach had to be established.<br />
The last years have been a great ride. I met lots of people, gained intimate friends and learned just so much &#8211; mostly about myself and how to cope with daily life, but also with people which has proven time and time again as somewhat useful^^ This period has formed me and will never completely be abandoned from my consciousness; the memory will always be present.</p>
<p>Then I started consolidating my own debts and the credit vouchers I gave out. Ultimately this will <span style="text-decoration: line-through;">earn me some nice profit</span> bring back some long lost money if everything works out and everyone is going to pay. What I have learned here is that most people tend to have a different personality when it comes to money &#8211; lucky for me my resources have recently grown quite a bit, so I don&#8217;t have to adjust to this new information.</p>
<p>On the blog side I have written a few lines of PHP code to include the server uptime(currently 187d &#8211; which is only limited due to the recent power failure) and I generated a musical tag cloud from my last.fm profile. Long due was a favicon &#8211; now I deployed one for web and feeds.</p>
<p>Looking at my server, something had to happen soon &#8211; since my SPARC/Solaris10 setup is growing constantly, mostly in hosting an increasing amount of web applications(3x Drupal, 2x WordPress, 2x Rails) but also doing a job as file server and probably soon again as mail server, I felt a decent need to find myself a working backup solution. Lucky me that I recently bought a 1TB harddrive for my Mac; meaning that at least one of my machines finally has an autonomous, automatic and failsafe backup mechanism &#8211; Timemachine. All that was left for a server-side backup was to write a little Bash-script that aggregates all data and configuration, zips these up, sets a timestamp and deploys the resulting file to the web &#8211; while my Mac waits for a new arrival and simply downloads it to the local disk which is automatically being backed up again. In a matter of an hour I achieved a customized double backup for my server; without any costs, with full transparency and available hardware. Others might prefer commercial solutions like Amazon S3 &#8211; I like to be in charge over my own data myself, preferably. Besides; if I wanted a more professional setup &#8211; I would turn to ZFS and storage directly connected to the server(probably via iSCSI). But since I&#8217;m not residing just 10m above my server anymore and my solution really fulfills all my needs, I won&#8217;t have any bad dreams on this topic.</p>
<p>On what was most important in my last week I will only comment briefly, but I have paid a visit to Weimar again. We had a lot of fun and we have spent great quality time together &#8211; at least that&#8217;s how I remember it; you never know(; I&#8217;m very much looking forward to our next happening.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/02/04/closing-in/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open letter to &#8220;the headQuarters&#8221;(in German)</title>
		<link>http://blog.dispatched.ch/2009/01/28/open-letter-to-the-headquartersin-german/</link>
		<comments>http://blog.dispatched.ch/2009/01/28/open-letter-to-the-headquartersin-german/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 12:15:38 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[meat]]></category>
		<category><![CDATA[restaurant]]></category>
		<category><![CDATA[vegetarian]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=300</guid>
		<description><![CDATA[Due to &#8220;current events&#8221; in in-house restaurant &#8220;the headquarters&#8220;, I felt an obligation to write a little something and send it to the responsible people. For those of you who won&#8217;t be able to read the German text, let me sum up what&#8217;s in it. Normally, I am very satisfied with service and quality of [...]]]></description>
			<content:encoded><![CDATA[<p>Due to &#8220;current events&#8221; in in-house restaurant &#8220;<a href="http://headquarters.business.sv-group.ch">the headquarters</a>&#8220;, I felt an obligation to write a little something and send it to the responsible people. For those of you who won&#8217;t be able to read the German text, let me sum up what&#8217;s in it.</p>
<p>Normally, I am very satisfied with service and quality of &#8220;the headquarters&#8221;. They offer a great lot of different, rich and tasty foods &#8211; they even include a vegetarian section and while they are offering plenty of salads, at least some of them are not marked as containing animals. But yesterday in combination with today changed my mind, because I bought my share of salad which was not labeled as containing meat &#8211; and today I even bought something from the dedicated vegetarian area and found bacon therein while eating it.</p>
<p>Well, the non-labeled salad I could live with &#8211; everyone does mistakes once in a while. But offering fake vegetarian food is something I do not fancy too much. My opinion is that if somebody labels something as dedicated vegetarian, they have to stick to this requirement. I understand that we are responsible only for a small amount of the overall turnover, but if they can&#8217;t keep up with their quality assurance, it would be better not to label anything as vegetarian, because I could and would ask the chef myself if the ingredients are not obvious.</p>
<p>Because I believe in free information and informing the public about misinformation, I am posting my letter as open letter. It is not, because I want to harm the company &#8211; as I said before: I liked the location so far.</p>
<p>But as much as I believe in the economic rights of a company not wanting to be blamed for &#8220;tiny mistakes&#8221;, my believe in the rights of each and every animal exceeds those by far &#8211; and as much as it&#8217;s worth, I raise my voice in this matter openly.</p>
<p>Thank you for reading.</p>
<p><a href="http://blog.dispatched.ch/wp-content/uploads/2009/01/open_letter_the_headquarters.png" rel="lightbox[300]"><img class="aligncenter size-medium wp-image-304" title="open_letter_the_headquarters" src="http://blog.dispatched.ch/wp-content/uploads/2009/01/open_letter_the_headquarters-300x273.png" alt="open_letter_the_headquarters" width="300" height="273" /></a></p>
<p>Update: Only 1.5h after sending my mail to &#8220;the headquarters&#8221;, I already received an answer. I&#8217;m not going to publish it here, because I think it would violate the privacy rights of the writer. But what I can say is that I am very pleased with how they responded &#8211; the answer is very detailed and written using friendly wording.</p>
<p>The answer is directly from the manager in charge who took the blame on herself &#8211; normally she would be the one to control each salad for ingredients and change the labels if needed. She said she was very sorry and wanted to improve on her performance. As far as I remember there were lots more people yesterday in the restaurant than normally &#8211; so maybe it was a very stressfull day for everyone working there and mistakes will happen in such an environment. At least I have learned that not the cooks write the labels themselves, which I find peculiar and interesting and leads me to the conclusion that I will doublecheck for myself in the future.<br />
Concerning lunch today, there has been a mistake by the guys doing the replenishment. They also offerend &#8220;Quiche Lorraine&#8221; which is incredibly similar to a Swiss &#8220;Kaesewaehe&#8221; &#8211; and they missed up on the opportunity to declare the optically not distinguishable product which might also have caused the person refilling some trouble.</p>
<p>Finally I received an invitation for coffee if I have any further suggestions or feedback. Lucky me that I already have access to great and free coffee in the bureau &#8211; or else I would have to think of something now.</p>
<p>She probably did the best job possible to comfort me while also referring to the importance of my mail as well as their will to further improve their service. As I thought the mistakes were only human error which can and will happen. But still &#8211; these kind of errors result in harm that I cannot dismiss that easily.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/28/open-letter-to-the-headquartersin-german/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bought some gum &#8211; for the week to come</title>
		<link>http://blog.dispatched.ch/2009/01/26/bought-some-gum-for-the-week-to-come/</link>
		<comments>http://blog.dispatched.ch/2009/01/26/bought-some-gum-for-the-week-to-come/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 14:05:40 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[break]]></category>
		<category><![CDATA[gum]]></category>
		<category><![CDATA[Homeoteleuton]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=280</guid>
		<description><![CDATA[Just couldn&#8217;t resist. I saw them, I needed them. All! Actually I only went shopping after lunch, because the former CD-case ice scraper of my dear friend Falko just wasn&#8217;t up to the job of repeatedly removing the Arctic Swiss nights remainder from his car and he wanted to buy a new one. Accidentally Migros [...]]]></description>
			<content:encoded><![CDATA[<p>Just couldn&#8217;t resist. I saw them, I needed them. All!</p>
<p>Actually I only went shopping after lunch, because the former <span style="text-decoration: line-through;">CD-case</span> ice scraper of my dear friend <a href="http://www.alphagemini.org/">Falko</a> just wasn&#8217;t up to the job of repeatedly removing the <span style="text-decoration: line-through;">Arctic</span> Swiss nights remainder from his car and he wanted to buy a new one. Accidentally Migros isn&#8217;t the place to go for such needs, but the time spent wasn&#8217;t in vain after all.</p>
<p>While standing in line on the cashpoint, I realized that my former habits of buying gum wouldn&#8217;t concur with my habitual habitual consumption thereof.</p>
<p>For your better understanding I included all needed information in a gum-flow-chart:</p>
<p><a href="http://blog.dispatched.ch/wp-content/uploads/2009/01/gum_flow_chart1.png" rel="lightbox[280]"><img class="aligncenter size-medium wp-image-289" title="gum_flow_chart1" src="http://blog.dispatched.ch/wp-content/uploads/2009/01/gum_flow_chart1-212x300.png" alt="gum_flow_chart1" width="212" height="300" /></a></p>
<p>Not to forget the decadence-factor: Swiss prices(25CHF for gum)</p>
<p>Update: a co-worker and friend of mine wrote a spontaneous nice poem using all colorful flavors of Skai gum and gave me permission to publish it here. What I really like most about is that I just recently learned about the stylistic device <a href="http://en.wikipedia.org/wiki/Homeoteleuton">Homeoteleuton</a> &#8211; and she&#8217;s using it all the time. Incredible.</p>
<pre class="box" style="text-align: center;"><em>"Spearmint, coolmint or peppermint could all be a hint..
the detail might be found in the Fruit cocktail,
cinnamon is too common,
and if you feel like a bird
you might want to roost with the air boost,
let's chew Fantastic Berry and Cherry
and we will feel merry:-)"</em></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/26/bought-some-gum-for-the-week-to-come/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A new world&#8217;s selfishness</title>
		<link>http://blog.dispatched.ch/2009/01/26/a-new-worlds-selfishness/</link>
		<comments>http://blog.dispatched.ch/2009/01/26/a-new-worlds-selfishness/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 09:55:06 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[lifestyle]]></category>
		<category><![CDATA[new world]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[selfishness]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=263</guid>
		<description><![CDATA[Lately I have come to realize that a great many people are very different than me in somewhat fundamental ways. There are people who claim they cannot and will not understand that there is another person whose primary goal in life is to comfort them, to make them feel special and needed. They say it [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I have come to realize that a great many people are very different than me in somewhat fundamental ways. There are people who claim they cannot and will not understand that there is another person whose primary goal in life is to comfort them, to make them feel special and needed. They say it is imperative to have greater goals in life than only a decent partnership, which is grossly unsophisticated and simply not enough.</p>
<p>How can one say they don&#8217;t want their special someone to be happy just because they are together? I&#8217;m inclined to say that I am sorry for these people, because I believe that they lack self-assurance, but that would be really patronising &#8211; and maybe I&#8217;m just plain wrong, so I won&#8217;t say it. Still, I say it is the small things that make the world a nice and warm place to be and that this new-age<em> &#8220;I have to grow beyond my biological programming&#8221; </em>only leads to a lack thereof and therefore to loneliness. I don&#8217;t deny that I myself am trying to be leave an impact &#8211; I try to be honest, decent and helpful to someone in need. But of uttermost importance is the fact that I know that I am just a man; and therefore will not change the world entirely(at least most likely not), but what a man can do is give himself in &#8211; to a relationship &#8211; and make it work by investing his resources in what is most dear to him.</p>
<p>Besides, I find it ignorant and selfish to claim one of the greatest goals like world peace, world hunger and alike for oneself, because the only effect that is established is a metaphysical and transcendental touch on the person claiming it &#8211; probably without being or behaving any different than us <span style="text-decoration: line-through;">normal</span> dull and unsophisticated people. All it does in reality is help them distinguish themselves in their own minds from the crowd &#8211; and they need this feeling, because they want to be special and don&#8217;t want to be hurt; not by others &#8211; and not by their own psyche.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/26/a-new-worlds-selfishness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mr. Overtime strikes again</title>
		<link>http://blog.dispatched.ch/2009/01/25/mr-overtime-strikes-again/</link>
		<comments>http://blog.dispatched.ch/2009/01/25/mr-overtime-strikes-again/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 00:38:25 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[overtime]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[workload]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=252</guid>
		<description><![CDATA[This week I have written my first Excel sheet ever &#8211; and I think I don&#8217;t lie when I say &#8220;ever ever&#8221;. As a person dedicated to computers, there&#8217;s always a guy who will come up to me and ask some question concerning Office &#8211; and my answer has throughout been: &#8220;I&#8217;m into computer science, [...]]]></description>
			<content:encoded><![CDATA[<p>This week I have written my first Excel sheet ever &#8211; and I think I don&#8217;t lie when I say &#8220;ever ever&#8221;. As a person dedicated to computers, there&#8217;s always a guy who will come up to me and ask some question concerning Office &#8211; and my answer has throughout been: &#8220;I&#8217;m into computer science, I don&#8217;t do Office.&#8221;</p>
<p>Well, now that my career has changed and I&#8217;m not working for Sun anymore(where I already had to change my opinion a little since I had to publicise OpenOffice), but am into programming business applications &#8211; dealing with Office(MS Office in particular*choke*) has become day-to-day action.</p>
<p>Working only 70%, I am the only employee who is allowed to write down hours. My choice was to use a fancy Web2.0 tool which most certainly would make my life <em>more productive </em>while at the same time <em>easier</em>, but ultimately I chose to use Excel for practice. And even though I could fall back upon my <span style="text-decoration: line-through;">large</span> repertoire of Excel functions(i.e. SUM and ROUND), I also had to get help finding a way on how to count lines that are already used.</p>
<p>Luckily my improvisation skills were great enough to do the perfect job: I can write down my hours and my breaks and it automagically calculates how many days I have left in overtime. I even agreed with my inner conscience that Microsoft Office was lame &#8211; so I chose to not only use a proprietary application, but also a personality(and therefore life-)threatening tool called Google-Docs for the sake of ubiquitous information. No One can hold me responsible for not being able to remember my current overtime whilst I have the need to know it each and every second of my life. Well, I could have used OpenOffice and my FTP server, but who really wants to be a good and intelligent person in this messy world, anyway? It would have taken me like what.. minutes.. to do the same job with free tools &#8211; never mind, I&#8217;m a busy man now.</p>
<p>And now comes the funny part. I realized I had to improve on my work-reward-expectations that I had grown into begin a lowly student(I&#8217;m talking of things like having to work all day without ever[ever] getting a reward whatsoever) &#8211; in my first 15 days, I already worked enough to earn me over 7 free days in overtime.</p>
<p><a href="http://blog.dispatched.ch/wp-content/uploads/2009/01/overtime_3weeks.png" rel="lightbox[252]"><img class="aligncenter size-medium wp-image-253" title="overtime_3weeks" src="http://blog.dispatched.ch/wp-content/uploads/2009/01/overtime_3weeks-300x192.png" alt="overtime_3weeks" width="300" height="192" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/25/mr-overtime-strikes-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New record paycheckSwitzerland is the greatest country in the world #3</title>
		<link>http://blog.dispatched.ch/2009/01/24/new-record-paycheckswitzerland-is-the-greatest-country-in-the-world-3/</link>
		<comments>http://blog.dispatched.ch/2009/01/24/new-record-paycheckswitzerland-is-the-greatest-country-in-the-world-3/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 13:01:56 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[paycheck]]></category>
		<category><![CDATA[switzerland]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=225</guid>
		<description><![CDATA[Yesterday my life finally made a turn &#8211; even if in silence, but I want to stay focused on what matters right now. I received the first paycheck working as application programmer. It looked pretty neat, but just didn&#8217;t feel how I wanted the experience to feel. I began raising my own money with 15 [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday my life finally made a turn &#8211; even if in silence, but I want to stay focused on what matters right now. I received the first paycheck working as application programmer. It looked pretty neat, but just didn&#8217;t feel how I wanted the experience to feel.</p>
<p>I began raising my own money with 15 &#8211; whilst being completely abandoned from my parents <span style="text-decoration: line-through;">before I even was born</span> since the age of 18. And even though I didn&#8217;t get any nameable help from any social institution and had few to back me up, I always had my own apartment, but lived far below what Germany considers minimal standard of living. In the struggle, I didn&#8217;t miss too many opportunities to screw things up &#8211; my CV looks kinda awkward, which lead to a few unpleasant incidents, while my social life has been so screwed, I can&#8217;t even tell without writing a series of novels about it.</p>
<p>Now, there I am, finally earning 4k CHF a month net. Still a student, still trying to do his best, still having to deal with my screwed history. I thought yesterday could finally be a turning point, but the punch in the stomach I received just a couple of minutes ago proved otherwise. I won&#8217;t write about it, because it hurts too much &#8211; if I could instantly forget it, I wouldn&#8217;t hesitate. Putting it into text would certainly prove to be a stupid idea.</p>
<p>I have to change my way of living, of dealing with my needs and those of others. I have to stick to top priorities and stop taking big chances; history showed me they don&#8217;t pay off &#8211; and it really doesn&#8217;t matter how much I want them to do just that. There is only one life I can live at the moment; it is precious and fragile &#8211; I want it to be good, it will be good I say.</p>
<p>Finally I have the ressources to impose change and if I don&#8217;t do it now, I will some time die an old and inwardly discontent man like so many before me.</p>
<p>What is this post about? Switzerland of course! The country of love, peace and infinite possibilities! I am glad that I can be here, I am thankful and I want to make this time worthwhile. Thanks for reading, visitor. I appreciate it.</p>
<p><a href="http://blog.dispatched.ch/wp-content/uploads/2009/01/lohnabrechnung_januar2009.jpg" rel="lightbox[225]"><img class="aligncenter size-medium wp-image-230" title="lohnabrechnung_januar2009" src="http://blog.dispatched.ch/wp-content/uploads/2009/01/lohnabrechnung_januar2009-266x300.jpg" alt="lohnabrechnung_januar2009" width="266" height="300" /></a></p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/24/new-record-paycheckswitzerland-is-the-greatest-country-in-the-world-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crossing the 5am mark again</title>
		<link>http://blog.dispatched.ch/2009/01/23/crossing-the-5am-mark-again/</link>
		<comments>http://blog.dispatched.ch/2009/01/23/crossing-the-5am-mark-again/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 03:48:50 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[bella-nonna]]></category>
		<category><![CDATA[car crash]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[no sleep]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=215</guid>
		<description><![CDATA[while I should be getting up at somewhere around 6am &#8211; or even better right now. At least if I wanted to nurse my morning workouts, which I probably should &#8211; thinking of my carelessness of the past month. It&#8217;s been a couple of days since I gave myself the chance to post; merely because [...]]]></description>
			<content:encoded><![CDATA[<p>while I should be getting up at somewhere around 6am &#8211; or even better right now. At least if I wanted to nurse my morning workouts, which I probably should &#8211; thinking of my carelessness of the past month.</p>
<p>It&#8217;s been a couple of days since I gave myself the chance to post; merely because I&#8217;m running in a range of three and four hours a day concerning <span style="text-decoration: line-through;">sleep</span> this deathlike stone-mode, already. Fortunately so much has happened in the past days alone that I can forgo my unwillingness of not writing any non-dedicated posts whatsoever, but consolidate at least a few impressions.</p>
<p>Yesterday I was talking with a dear friend of mine about a magazine she would love to publish, but felt herself in no condition to do so. Since I liked her ideas very much I instantly bought her the domain <a href="http://bella-nonna.com">bella-nonna.com</a> while installing <a href="http://wordpress.com">WordPress</a> 2.7 in a new apache2 virtual host. This makes three <a href="http://drupal.org">Drupal</a> and two WP installations on my Fire 280R/Solaris 10 machine already &#8211; of course my version of WP is the most archaic of them all. Well, now I&#8217;m looking forward to see her style the page and successively generate content.</p>
<p style="text-align: left;">The day before yesterday was pretty uneventful &#8211; until a co-worker and I decided to have some Pizza after our project marathon. Driving to the pizzeria we came to be spectators of a burning car; without any trace for a crash. And I&#8217;m not talking about a car emitting fumes; it was completely and utterly encapsulated in flames! Until this moment I didn&#8217;t realize how well a car is suited not only to combust fuel, but to also serve as such. Even more so I was impressed, because it(the petrol tank) simply didn&#8217;t blow up. Afterwards I learned that modern petrol tanks are built from plastic which melts early on &#8211; pouring out petrol nice and slow without giving it a chance to built up pressure and explode.</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/01/car_on_fire.jpg" rel="lightbox[215]"><img class="size-medium wp-image-220 aligncenter" title="car_on_fire" src="http://blog.dispatched.ch/wp-content/uploads/2009/01/car_on_fire-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Considering the already advanced time, I should probably skip any more <span style="text-decoration: line-through;">details</span> great experiences like my weeks favourite: my second trip to Weimar or my new found love for audiobooks(see <a href="http://librivox.org">librivox.org</a> for books that are in the public domain), the lost and re-found ring, the first excel sheet I&#8217;ve ever done(&#8220;I won&#8217;t ever need office &#8211; I&#8217;m in computer science&#8221;..) or the fact that I have accumulated over 7 days overtime in only 14 days of work..</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/23/crossing-the-5am-mark-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How long can you go?</title>
		<link>http://blog.dispatched.ch/2009/01/16/how-long-can-you-go/</link>
		<comments>http://blog.dispatched.ch/2009/01/16/how-long-can-you-go/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 22:04:32 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[no sleep]]></category>
		<category><![CDATA[overtime]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=212</guid>
		<description><![CDATA[This is my 13th consecutive hour working on three projects at once &#8211; each of which has to be deployed tomorrow while my perception of the applications/daemons/tools is somewhere between post-alpha and beta. Therefore I will face an interesting day tomorrow &#8211; even more so, because it will be the first day in weeks that [...]]]></description>
			<content:encoded><![CDATA[<p>This is my 13th consecutive hour working on three projects at once &#8211; each of which has to be deployed tomorrow while my perception of the applications/daemons/tools is somewhere between post-alpha and beta. Therefore I will face an interesting day tomorrow &#8211; even more so, because it will be the first day in weeks that I simply won&#8217;t work overtime, because I will take a leave and visit a dear friend in Weimar.<br />
I figure next week will even be of more interest &#8211; when I won&#8217;t have slept for aeons while several customers either are working live and productive or starting their testing and educational phase.<br />
I&#8217;d love to go into detail, but instead I should hurry back to work.</p>
<p>I can&#8217;t even express how much I&#8217;m looking forward on the days to come &#8211; for so many reasons at once.</p>
<p>Life is good.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/16/how-long-can-you-go/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Frozen Weekend</title>
		<link>http://blog.dispatched.ch/2009/01/12/frozen-weekend/</link>
		<comments>http://blog.dispatched.ch/2009/01/12/frozen-weekend/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 20:31:01 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[bad luck]]></category>
		<category><![CDATA[cold]]></category>
		<category><![CDATA[freezing]]></category>
		<category><![CDATA[luck]]></category>
		<category><![CDATA[no oil]]></category>
		<category><![CDATA[tough luck]]></category>
		<category><![CDATA[winter]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=200</guid>
		<description><![CDATA[Everything began with a bad conscience concerning my decision to stay at home this weekend &#8211; for the sake of me finally getting rid of the flu as well as my bad throat.. Friday started out somewhat bad; it was the first day in years that I forgot my iPod which I could have lived [...]]]></description>
			<content:encoded><![CDATA[<p>Everything began with a bad conscience concerning my decision to stay at home this weekend &#8211; for the sake of me finally getting rid of the flu as well as my bad throat..<br />
Friday started out somewhat bad; it was the first day in years that I forgot my iPod which I could have lived through without too much hassle, because Swiss public transportation offers a lot of entertainment in form of misc. print media, but my bus just wasn&#8217;t at the station when I arrived &#8211; instead of waiting 20 minutes, I chose to walk myself to the bureau; and I even managed to score against the bus(I arrived approx. 10sec earlier).</p>
<p>Frozen to the bone and suffering from the effects of Swiss winter, I thought this probably was the worst part and things would get better now. Well, at least I had good spirits(;</p>
<p>In the afternoon, I figured, it could prove to be a good idea to leave work &#8220;early&#8221;(only working seven hours instead of nine, while my contract says I should only work five and a half..), because I wanted make several calls related to my <a href="http://blog.dispatched.ch/2009/01/08/some-doctors-like-to-commit-assault/" target="_self">previous post</a>.<br />
It probably would have been a good idea; if only the earlier trains wouldn&#8217;t have crashed and left me waiting hours in siberian frost &#8211; at least I had the chance to walk the last mile.. Of course I was terribly late for my phone calls and wasn&#8217;t able to do one of them, but I still had hopes to achieve my primary goal: getting healthy again.</p>
<p>Friday evening was pretty standard &#8211; I found myself listening to a couple of women talking about their previous or current boyfriends; so nothing special. But unfortunately it didn&#8217;t stay this <span style="text-decoration: line-through;">exiting</span> numbing for too long &#8211; Saturday I awoke to a more or less frozen room; I was wondering on the whereabouts of icicles.. To make the long story short: my commune that I just moved into has run out of oil!</p>
<p>Proving myself to be a quick study I searched the whole building for electric heaters that I installed on the first and third floor. Since there are only two heaters and we were three people, I shared mine with my direct neighbour. Accidentally just when the rooms were starting to feel hospitable(while wearing winter clothes..), the electricity fluctuations of this kinda old building kicked in and killed my fuse..</p>
<p>So there I was: cold, in the dark, unconnected..</p>
<p>And finally for those of you who were just bored enough to keep on reading &#8211; the funny part: Just as I finished permuting all 40 <span style="text-decoration: line-through;">well documented</span> fuses to bring the light back into my and my two housemates lifes, one of the girls (who just found herself a new affair the night before) asked me whether I could manage to spare my fuse to feed the second floor, so that she was able to fuck more comfortably later on.</p>
<p>At last a picture of myself coming home from work today, waiting for the temperature to rise across the 10C mark. At least I have myself and my cold &#8211; not to mention the newly found profound connection to my inner self: The will to live!</p>
<p style="text-align: center;"><a href="http://blog.dispatched.ch/wp-content/uploads/2009/01/kalt.png" rel="lightbox[200]"><img class="size-medium wp-image-202 aligncenter" title="kalt" src="http://blog.dispatched.ch/wp-content/uploads/2009/01/kalt-280x300.png" alt="" width="280" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/12/frozen-weekend/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Some doctors like to commit assault</title>
		<link>http://blog.dispatched.ch/2009/01/08/some-doctors-like-to-commit-assault/</link>
		<comments>http://blog.dispatched.ch/2009/01/08/some-doctors-like-to-commit-assault/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 12:34:21 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[assault]]></category>
		<category><![CDATA[doctor]]></category>
		<category><![CDATA[grandmother]]></category>
		<category><![CDATA[grandparents]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=196</guid>
		<description><![CDATA[The other day I called my grandmother, because she should have received surgery on her eyes yesterday. Four months ago she went do a specialist, because her eyes started to produce tears all the time while they felt sore and her eyesight decreased rapidly. After a first try of some drops that didn&#8217;t work she [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I called my grandmother, because she should have received surgery on her eyes yesterday. Four months ago she went do a specialist, because her eyes started to produce tears all the time while they felt sore and her eyesight decreased rapidly. After a first try of some drops that didn&#8217;t work she was given an appointment for surgery.</p>
<p>Yesterday my grandparents went to the clinic; my granny was brought to the operating room where she was given anaestesia. After waiting about half an hour, some unknown doctor emerged from the door and &#8211; without giving his name &#8211; went through some papers which seemingly brought him to his conclusion &#8220;There&#8217;s nothing to do here.&#8221;. While the nurse looked puzzled, she didn&#8217;t offer any real help in this strange situation at all. She only asked my granny if she could stand up by now. Confused my granny asked why nothing has been done, but received no answer. Instead she was <del datetime="2009-01-08T10:52:07+00:00">kindly</del> asked to leave now &#8211; with the really promising information of &#8220;If it get&#8217;s worse, please come back.&#8221;</p>
<p>To say the truth (without swearing) I find what has happened gross and disgusting! My granny can&#8217;t see well and even started not wearing her glasses, because they make her eyesight even worse &#8211; she even has been ordered not to buy new glasses until the surgery was completed, because it would bring that much improvement on itself. And counting that she is suffering from lethal lung cancer and every month is therefore very precious, I can&#8217;t help, but feel the anger rise up in me when I think of this incompetence.</p>
<p>Since she was given anaestesia &#8211; even if it was only locally &#8211; and then thrown out without any explanation(even though she tried to ask several times) while she wouldn&#8217;t even be told the name of this strange doctor, I think of this scenario as being assault and I will therefore take legal action.<br />
Be prepared, Mr. X, I&#8217;m coming for you!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/08/some-doctors-like-to-commit-assault/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recap of just a very normally crazy day</title>
		<link>http://blog.dispatched.ch/2009/01/06/recap-of-just-a-very-normally-crazy-day/</link>
		<comments>http://blog.dispatched.ch/2009/01/06/recap-of-just-a-very-normally-crazy-day/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 03:30:57 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[crazy]]></category>
		<category><![CDATA[friends]]></category>
		<category><![CDATA[new year]]></category>
		<category><![CDATA[no sleep]]></category>
		<category><![CDATA[overtime]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=192</guid>
		<description><![CDATA[Several things were more interesting today than any normal day would be. The first thing to mention is that today is the first day of my life to work for 39chf net(35US$, 26€) an hour which should have probably been the most exciting part of my day, but actually it has been far from holding [...]]]></description>
			<content:encoded><![CDATA[<p>Several things were more interesting today than any normal day would be. The first thing to mention is that today is the first day of my life to work for 39chf net(35US$, 26€) an hour which should have probably been the most exciting part of my day, but actually it has been far from holding that title.</p>
<p>One influence that covered my newly found monetary income was the fact that my best friend <a href="http://www.alphagemini.org/">Falko</a> began working at our software company just today &#8211; which is going to be a  very welcome diversification in day to day life; also because we haven&#8217;t seen each other for quite some time now. It helps that he will sit on the same table with me(;</p>
<p>Now I&#8217;m going to start with the real good stuff. Coming to work for the first day of the year, I came to realize in several meetings that even tough I haven&#8217;t been given the tasks until today, I am already <span style="text-decoration: line-through;">friggin&#8217;</span> late in absolutely every project that I have to put up for in the future. Our marketing has promised deliveries that should have stayed in some peoples dreams just a bit longer..</p>
<p>The next thing I know is that even tough I am working 70% now, I found myself before 14 windows &#8211; connected to four computers at once, trying to fix that terrible mess. Where&#8217;s the catch? I already have been working constantly for nine hours even tough I shouldn&#8217;t even work six any given day..</p>
<p>Another catch is that now I finally reached my bedroom and it&#8217;s already 2:15AM which is kinda lame since today I wanted to sleep more than the four hours that I had the night before. And why is that? Because I hung with my new room mates; that&#8217;s why. Something about two hours passed on our first meeting on who should do what and when concerning bath, kitchen, the garbage and these things &#8211; I quit the discussion by taking into account that I&#8217;m going to hire cleaning personnel. As one might imagine we socialized afterwards and I have had the pleasure to take a first evaluation of the two dissertations my two new computer science buddies are working on; and it has been a blast. Some time has passed since I had such a deep discussion about the potential of neuronal networks, implementation of kohonen propagation, optical character recognition and pattern foretelling. The good thing about it is that soon I will have the pleasure to propagate their work in a color of deep red*mew*</p>
<p>All in all, this day has been great &#8211; even though I will only get something around three hours sleep now, my throat aches since a week like it is going to explode any minute while having no voice at all and I absolutely had no time to work on some very important even more time critical tasks, this has been just a normal crazy day of my life.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2009/01/06/recap-of-just-a-very-normally-crazy-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>p_pagination&#160;A plugin for sortable tables with pagination on any database for Ruby on Rails</title>
		<link>http://blog.dispatched.ch/2008/11/24/p_paginationa-plugin-for-sortable-tables-with-pagination-on-any-database-for-ruby-on-rails/</link>
		<comments>http://blog.dispatched.ch/2008/11/24/p_paginationa-plugin-for-sortable-tables-with-pagination-on-any-database-for-ruby-on-rails/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 14:50:21 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA["legacy database"]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[existing database]]></category>
		<category><![CDATA[mssql]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[p_pagination]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[sortable]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=72</guid>
		<description><![CDATA[Lately I have been working on several projects that condemn me to use Microsofts SQLServer, which has led me to believe that there is something missing in the RoR core to make it really a sound inclusion for business applications. Whilst there are very good implementations for pagination and sortable tables at hand, these won&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I have been working on several projects that condemn me to use Microsofts SQLServer, which has led me to believe that there is something missing in the RoR core to make it really a sound inclusion for business applications. Whilst there are very good implementations for pagination and sortable tables at hand, these won&#8217;t work if your database doesn&#8217;t have an auto_increment id or you want to use customized SQL code instead of working with the ActiveRecord model; and believe me &#8211; there are lots of databases out there that can&#8217;t be changed, because other applications need them in order to function. There are also good uses for custom SQL some times when using Oracle or MSSQL, because they feature their very own toolset to optimize queries in a fashion where Ruby just can&#8217;t adapt whilst implementing a generic interface for all potential backends.</p>
<p>So I started working on my very own plugin that would help reduce writing redundant code over and over again. I have hosted a demo version right <a href="http://gefechtsdienst.de:3002" target="_blank"><strong>here</strong></a> which should look like this:<br />
<img src="http://blog.dispatched.ch/wp-content/uploads/2008/11/p_pagination_example.png" alt="" width="450" /><br />
As you can see the interface really is straight forward; click the title to sort the column &#8211; and click a number or an arrow to move from page to page.</p>
<p>The nice thing is that this implementation should work with about any database format; and any SQL or ActiveRecord statement. Let me show you how much code you&#8217;d have to write to implement the table from above:</p>
<p>In the controller you&#8217;d fetch the data with something like:</p>
<pre class="box">session[:data] = StUser.find(:all, :limit =&gt; 600)

or even something as ugly as

session[:data] = StUser.find_by_sql("select top 600 * from st_users")</pre>
<p>Now to the interesting part &#8211; in the view you will only have to write one single line; p_pagination is generic &#8211; meaning it automatically adjusts to the number of columns and the input data types.</p>
<pre class="box">&lt;%= p_paginate(session[:data], {:max =&gt; 10, :page =&gt; session[:page].to_i},
"login", "MAIL", "FIRSTNAME", "LASTNAME", "id") %&gt;</pre>
<p>Just give it the database resultset(session[:data]), the number of rows per page and the attributes that are to be read from the resultset.</p>
<p>Now you have seen the might and the first drawback of p_pagination. All data is currently saved in the session, which means that the whole resultset is held available &#8211; many of you will now think this is very inefficient and draws performance and memory and I would be inclined to support your thought; only if databases like MSSQL supported the allmighty LIMIT and OFFSET commands like MySQL does. Since it doesn&#8217;t, I have deliberately chosen this path, because the needed workarounds in MSSQL like <em>select top 10 * from users where login not in (select top 5 login from users)</em> will result in a massive table search &#8211; and if your legacy database works on four text columns that alltogether emulate a primary key in userspace.. then you will really blast your performance away.<br />
Anyway &#8211; storing the resultset in the session is not that bad, either, because RoR supports storing session information back in the database as explained in <a href="http://wiki.rubyonrails.org/rails/pages/HowtoChangeSessionStore">http://wiki.rubyonrails.org/rails/pages/HowtoChangeSessionStore</a>. However even in the database the space for each session is limited, so this current implementation won&#8217;t perform on massive data with thousands of rows &#8211; but on smaller data collections it does the job pretty well as you can see.</p>
<p>There&#8217;s one more drawback; my code doesn&#8217;t seem to work on all browsers properly &#8211; I designed it using Firefox3 and IE6 where it just works fine. But I have seen that Safari displays the spinner to the right of the pagination bar while Firefox2 will scramble the bar and render it useless; Opera I haven&#8217;t tried yet.</p>
<p>So this is it &#8211; I&#8217;d like to call this a preview alpha release even though it already went productive on some small systems where it does its job as expected.</p>
<p>In a following post I will explain how to install p_pagination as a plugin.<br />
<script type="text/javascript"><!--
digg_url = 'http://gefechtsdienst.de/?p=72';
// --></script><br />
<script src="http://digg.com/api/diggthis.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/11/24/p_paginationa-plugin-for-sortable-tables-with-pagination-on-any-database-for-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Switzerland is the greatest country in the world #2</title>
		<link>http://blog.dispatched.ch/2008/10/14/switzerland-is-the-greatest-country-in-the-world-2/</link>
		<comments>http://blog.dispatched.ch/2008/10/14/switzerland-is-the-greatest-country-in-the-world-2/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 10:14:21 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[switzerland]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=51</guid>
		<description><![CDATA[Lately I discovered some more reasons on why Switzerland really is the greatest country of them all; it ranks nicely in the following statistics: 6th on the Human Development Index(HDI) 6th on Gross Domestic Product per Head(GDP/per capita) 3rd on the BigMac Index(1st in 2006 and 2007) That said, I want to point out that [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I discovered some more reasons on why Switzerland really is the greatest country of them all; it ranks nicely in the following statistics:</p>
<ol>
<li>6th on the <a href="http://en.wikipedia.org/wiki/Human_Development_Index">Human Development Index(HDI)</a></li>
<li>6th on <a href="http://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)_per_capita">Gross Domestic Product per Head(GDP/per capita)</a></li>
<li>3rd on the <a href="http://www.oanda.com/products/bigmac/bigmac.shtml">BigMac Index</a>(1st in 2006 and 2007)</li>
</ol>
<p>That said, I want to point out that there is a sheer incredible number of reasons why Switzerland is becoming my home of choice on a personal and non-statistical and non-monetary level; but those only work out their magic when experienced in persona &#8211; if I tell you that people are just so much nicer, obliging and overjoyed, you might just say that this is a subjective matter(;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/14/switzerland-is-the-greatest-country-in-the-world-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Switzerland is the greatest country in the world #1</title>
		<link>http://blog.dispatched.ch/2008/10/07/switzerland-is-the-greatest-country-in-the-world-1/</link>
		<comments>http://blog.dispatched.ch/2008/10/07/switzerland-is-the-greatest-country-in-the-world-1/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 07:17:46 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[switzerland]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=41</guid>
		<description><![CDATA[Doing what ppl do  in the morning, I just &#8216;membered that one of my very entertaining conversations from yesterday was worthy to commit to the worldwide community that has not yet found it&#8217;s courage to move entirely to Switzerland. I&#8217;ll make it short and let the words talk for themselves. Knowledge to have in advance: [...]]]></description>
			<content:encoded><![CDATA[<p>Doing what ppl do  in the morning, I just &#8216;membered that one of my very entertaining conversations from yesterday was worthy to commit to the worldwide community that has not yet found it&#8217;s courage to move entirely to Switzerland. I&#8217;ll make it short and let the words talk for themselves.</p>
<p>Knowledge to have in advance: Right now, I&#8217;m doing an internship and am therefore earning only a somewhat small 4-figure amount in CHF.</p>
<p>me: &#8220;Btw, I paid 7% taxes on my last wage.&#8221; (Internally I was shaking with excitement, because of the great bargain)</p>
<p>co-worker: &#8220;_That_ much?&#8221; (Physically shaking his head in unbelieving despair about how incredibly unfair this big toll was to me)</p>
<p>Isn&#8217;t this the greatest country of them all?(;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/07/switzerland-is-the-greatest-country-in-the-world-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Early final version</title>
		<link>http://blog.dispatched.ch/2008/10/07/early-final-version/</link>
		<comments>http://blog.dispatched.ch/2008/10/07/early-final-version/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 00:04:07 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=37</guid>
		<description><![CDATA[I just finished revising my interim layout. But still.. there will be a lot more work to be done in the future. Right now I probably won&#8217;t have the spare time to write a lot of interesting techie-articles, since I&#8217;m working fulltime as application programmer/intern and having trouble on a couple of personal matters. But [...]]]></description>
			<content:encoded><![CDATA[<p>I just finished revising my interim layout. But still.. there will be a lot more work to be done in the future.</p>
<p>Right now I probably won&#8217;t have the spare time to write a lot of interesting techie-articles, since I&#8217;m working fulltime as application programmer/intern and having trouble on a couple of personal matters. But that won&#8217;t keep me from having some interesting projects on the side; actually my work has been mostly in Python and Ruby on Rails where I made a nice prototype which has confirmed the capability of Rails in a legacy environment to me and my direct superior.</p>
<p>Being able to use my newly advanced skills in Rails, I&#8217;m working on two nice projects with my dear friend André from <a href="http://www.versatilemind.com">versatilemind.com</a>. As soon as there are any beta releases, I suppose we will start talking about them in the open &#8211; they might stir some public interest if we do a good job implementing our ideas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/07/early-final-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New blog site</title>
		<link>http://blog.dispatched.ch/2008/10/06/new-blog-site/</link>
		<comments>http://blog.dispatched.ch/2008/10/06/new-blog-site/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 15:09:39 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/wordpress/?p=3</guid>
		<description><![CDATA[Since my established lifestyle forced me to change jobs to optimize my income, there will be no more nice http://blogs.sun.com/preek Fortunately I still have my own little Fire 280R / Solaris / 1GBit Server in the basement(; In the days to come I will migrate relevant data from my old blog, since I don&#8217;t want [...]]]></description>
			<content:encoded><![CDATA[<p>Since my established lifestyle forced me to change jobs to optimize my income, there will be no more nice http://blogs.sun.com/preek</p>
<p>Fortunately I still have my own little Fire 280R / Solaris / 1GBit Server in the basement(;</p>
<p>In the days to come I will migrate relevant data from my old blog, since I don&#8217;t want to lose all my handy tutorials.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/06/new-blog-site/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TexLive on Solaris 10</title>
		<link>http://blog.dispatched.ch/2008/10/04/texlive-on-solaris-10/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/texlive-on-solaris-10/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:23:20 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[TexLive]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=107</guid>
		<description><![CDATA[TexLive is a very decent Latex implementation, however if you want to write DIN conformable letters using g-brief you might get an error message like that: ! LaTeX Error: Command \Telefon already defined.Or name \end... illegal, see p.192 of the manual. See the LaTeX manual or LaTeX Companion for explanation.Type H for immediate help. ... [...]]]></description>
			<content:encoded><![CDATA[<p><a href="www.tug.org/texlive/">TexLive</a> is a very decent Latex implementation, however if you want to write DIN conformable letters using g-brief you might get an error message like that:</p>
<pre class="box">! LaTeX Error: Command \Telefon already defined.Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.Type  H   for immediate help. ...

l.48 \newcommand\Telefon{\mvchr{84}}</pre>
<p>This bug is in g-brief with newer versions of <em>marvosym.sty</em>. So all you have to do is edit line 48 of /texlive/texmf-dist/tex/marvosym.sty and uncomment it.</p>
<p>This bug might affect all unices, not only Solaris.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/texlive-on-solaris-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sun RAY with PS2 Keyboards</title>
		<link>http://blog.dispatched.ch/2008/10/04/sun-ray-with-ps2-keyboards/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/sun-ray-with-ps2-keyboards/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:22:53 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[ps2]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[sun ray]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=105</guid>
		<description><![CDATA[SUN Ray with PS2 keyboards If you want to hook up a Sun Ray at home, you might want to use your favourite old PS2 keyboard attached via some USB connector. Depending on your keyboard layout you might be disappointed by the result, because it will be standard US. That&#8217;s because the PS2 keyboard isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><b>SUN Ray with PS2 keyboards</b><br />
If you want to hook up a Sun Ray at home, you might want to use your favourite old PS2 keyboard attached via some USB connector. Depending on your keyboard layout you might be disappointed by the result, because it will be standard US. That&#8217;s because the PS2 keyboard isn&#8217;t designed for the Ray clients and won&#8217;t prompt back a valid layout to the server which will then assume a standard scenario.<br />
There is a simple solution to this problem; in the file &#8220;/usr/openwin/etc/keytables/keytable.map&#8221; edit the entry</p>
<pre class="box">

6      0       US6.kt
</pre>
<p>and rewrite it to your favourite layout(British English in this case)</p>
<pre class="box">
6       0      UK6.kt
</pre>
<p>There is one drawback however; from this point on this is going to be the single standard fallback layout for all keyboards hooked via SUN Ray clients to your server which won&#8217;t report a valid layout themselves. So if you want to use different layouts on different clients you might want to check the xkb option in &#8220;/opt/SUNWut/bin/utxconfig&#8221;, which I haven&#8217;t done until now.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/sun-ray-with-ps2-keyboards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postfix and MySQL (Debian)</title>
		<link>http://blog.dispatched.ch/2008/10/04/postfix-and-mysql-debian/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/postfix-and-mysql-debian/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:22:13 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[Mailinglist]]></category>
		<category><![CDATA[Mailinglists]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Postfix]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=102</guid>
		<description><![CDATA[Integration of Databases in the Postfix SMTP server in Debian GNU/Linux Why would somebody want to let postfix connect to a SQL-database? There&#8217;s no need to create a real local user for each e-mail account SQL-databases can be kept in RAM, so if you have excessive mailing on your server, there will be reduced harddisk [...]]]></description>
			<content:encoded><![CDATA[<p>Integration of Databases in the Postfix SMTP server in Debian GNU/Linux</p>
<p>Why would somebody want to let postfix connect to a SQL-database?</p>
<ul>
<li> There&#8217;s no need to create a real local user for each e-mail account</li>
<li> SQL-databases can be kept in RAM, so if you have excessive mailing<br />
on your server, there will be reduced harddisk access</li>
<li> Management of mailinglists becomes real easy</li>
<li> /etc/aliases is kept small and simple</li>
</ul>
<p><strong> Step 1</strong><br />
Install the package &#8220;mysql-server&#8221;  and &#8220;mysql-client&#8221; if not yet installed.<br />
Log on to your sql-server using the root account:</p>
<pre class="box">mysql --user root
mysql&gt; create database postfix_database;
mysql&gt; GRANT ALL PRIVILEGES ON postfix_database \
TO 'postfix'-AT-'localhost' IDENTIFIED BY 'postfix_password' \
WITH GRANT OPTION;
mysql&gt; flush privileges;
mysql&gt; create table postfix.postfix_alias (destination VARCHAR(50), \
alias VARCHAR(50));
mysql&gt; exit;</pre>
<p>Now we have created a database called &#8220;postfix_database&#8221; and a user called<br />
&#8220;postfix&#8221; who has access to it using his unique password &#8220;postfix_password&#8221;.<br />
With &#8220;flush privileges&#8221; we bring the sql-server up to date concerning user rights.<br />
Then we create a table called &#8220;postfix_alias&#8221; in the database &#8220;postfix&#8221; with two rows:<br />
&#8220;destination&#8221; is a text variable where the mail will be relayed to and &#8220;alias&#8221; is the name<br />
of the mailinglist in my example.</p>
<p><strong> Step 2 </strong><br />
Install the package &#8220;postfix-mysql&#8221;. Besides the needed<br />
library this will bring you the config file &#8220;/etc/postfix/mysql-aliases.cf&#8221; which we<br />
will modify like this</p>
<pre class="box">user = postfix
password = postfix_password
table = postfix_alias
query =  SELECT destination FROM postfix_alias WHERE alias = '%s'
hosts = unix:/var/run/mysqld/mysqld.sock
select_field = destination
where_field = alias</pre>
<p>Since postfix runs in a chroot it lacks several information it needs to have;<br />
for example the socket to the mysql daemon. That&#8217;s why we provide it<br />
with some bind mounts, which can be done by inserting these lines into<br />
&#8220;/etc/fstab&#8221;.</p>
<pre class="box">/etc/passwd     /var/spool/postfix/etc/passwd           none bind 0 0
/etc/shadow     /var/spool/postfix/etc/shadow           none bind 0 0
/etc/group      /var/spool/postfix/etc/group            none bind 0 0
/var/run/mysqld /var/spool/postfix/var/run/mysqld       none bind 0 0</pre>
<p>To update this information the root user has to remount all filesystems<br />
using &#8220;mount -a&#8221;.</p>
<p><strong>Step 3</strong><br />
We&#8217;re done already(almost). All that is still needed is some information in the database.<br />
Single entries can be made with the mysql client like this:</p>
<pre class="box">mysql&gt; insert into postfix_alias values \
('someone-AT-somewhere-DOT-de', 'mailinglistname');</pre>
<p>Now if you send a mail to &#8220;mailinglistname-AT-yourhost-DOT-com&#8221; the mail will be relayed to<br />
&#8220;someone@somewhere-DOT-de&#8221;. That&#8217;s it.<br />
I wrote a JSP/Servlet combination in JavaEE to create a webpage where users can<br />
put themselves on or off a  mailinglist; you can find it<br />
<a href="http://www.gefechtsdienst.de/preek/Projects/Mailinglist/">here</a> or in the<br />
projects folder if you&#8217;re interested.</p>
<p><strong>Step 4</strong></p>
<p>Note that installing the package postfix-mysql updated a line in your &#8220;/etc/postfix/main.cf&#8221;:</p>
<pre class="box">alias_maps = hash:/etc/aliases
...
alias_maps = mysql:/etc/postfix/mysql-aliases.cf</pre>
<p>There are most likely many more lines in this file, but the important factor is<br />
that the first line mapping to &#8220;/etc/aliases&#8221; is made obsolete by the second entry.<br />
So if you were using some important relaying in this file you should migrate it.<br />
For this reason I wrote a small <a href="http://blog.dispatched.ch/daten/aliases2sql"><br />
shellscript</a> that was capable to do the job for my setup.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/postfix-and-mysql-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NVIDIA TV Out (Solaris)</title>
		<link>http://blog.dispatched.ch/2008/10/04/nvidia-tv-out-solaris/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/nvidia-tv-out-solaris/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:21:53 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[NVIDIA]]></category>
		<category><![CDATA[Solaris 10]]></category>
		<category><![CDATA[TV]]></category>
		<category><![CDATA[TV OUT]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=100</guid>
		<description><![CDATA[Solaris Express in any recent version will have out of the box NVidia support if you install the Developer Edition or the Community Release. This driver doesn&#8217;t differ (at least as far as I know) from the Linux device driver, so setting up secondary screens and tv-outs is quite the same. There even is a [...]]]></description>
			<content:encoded><![CDATA[<p>Solaris Express in any recent version will have out of the box NVidia support if you install the Developer Edition or the Community Release. This driver doesn&#8217;t differ (at least as far as I know) from the Linux device driver, so setting up secondary screens and tv-outs is quite the same. There even is a preinstalled tool &#8220;nvidia-settings&#8221; which might help you do the job, but it didn&#8217;t help me that much since you have to implement at least the second screen by hand in your X configuration file.<br />
Before you begin, make a backup of your working /etc/X11/xorg.conf file.<br />
We will now take a look at how this xorg.conf file has to be changed for TV-Out support.</p>
<ul>
<li> Change the &#8220;Device&#8221; section that it looks like this:
<pre class="box">
Section "Device"
    Identifier              "Videocard0"
    Driver                  "nvidia"
    # optional (find out with "$ Xorg -scanpci")
    BusID                  "[Your BusID, e.g.: PCI:2:0:0]"
    Screen                0
EndSection
</pre>
<li> Add a new &#8220;Device&#8221; section for the TV, just like the one before, but change &#8220;Screen 0&#8243; to &#8220;Screen 1&#8243; and &#8220;Videocard0&#8243; to &#8220;Videocard1&#8243;
<li> Change the &#8220;Monitor&#8221; section as follows:
<pre class="box">
Section "Monitor"
   Identifier        "Monitor0"
   HorizSync      30.0 - 100.0       #adjust to your monitor
   VertRefresh   50.0 - 94.0         #adjust to your monitor
   Option            "DPMS"
EndSection
</pre>
<li>  Add a new &#8220;Monitor&#8221; section for the TV, just like the one before, but change &#8220;Monitor0&#8243; to &#8220;Monitor1&#8243;
<li> Now we configure the possible resolutions for CRT and TV
<p>You will have to adjust them to your liking. &#8220;Screen0&#8243; deals with the CRT, &#8220;Screen1&#8243; with the TV.</p>
<pre class="box">

Section "Screen"
    Identifier     "Screen0"
    Device         "Videocard0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "metamodes" "CRT: 1600x1200 +0+0; CRT: 1400x1050 +0+0;
    CRT: 1280x1024 +0+0; CRT: 1024x768 +0+0; CRT: 800x600 +0+0;
    CRT: 640x480 +0+0"
    SubSection     "Display"
        Depth       24
        Modes      "1600x1200" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Videocard1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "metamodes" "TV: 1024x768 +0+0"
    SubSection     "Display"
        Depth       24
        Modes      "1600x1200" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection
</pre>
<li> Now you we are physically set up and can define a Serverlayout which defines how the monitors do correspond to each other.<br />
In this example the CRT will be the primary monitor whereas the TV can be reached by dragging the mouse cursor out the left side of your monitor.</p>
<pre class="box">
Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 1024 0
    Screen      1  "Screen1" LeftOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection
</pre>
</ul>
<p>Now we are all done. Save xorg.conf and restart your Xserver(in Solaris logging out and in again will do the job).<br />
A working copy of my file as an example can be downloaded <a href="http://blogs.sun.com/preek/resource/xorg.conf">here</a>.</p>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/nvidia-tv-out-solaris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiple IP addresses on one interface (Solaris)</title>
		<link>http://blog.dispatched.ch/2008/10/04/multiple-ip-addresses-on-one-interface-solaris/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/multiple-ip-addresses-on-one-interface-solaris/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:20:53 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[interfaces]]></category>
		<category><![CDATA[ip adress]]></category>
		<category><![CDATA[multiple ip adresses]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=98</guid>
		<description><![CDATA[Like we mentioned earlier we are in the middle of configuring a Fire 280R server for our needs. Yesterday we finally were able to patch some real Internet addresses on the NICs, as well as new local addresses, so now we finally are online^^ While configuring we figured that there are at least three potential [...]]]></description>
			<content:encoded><![CDATA[<p>	Like we mentioned earlier we are in the middle of configuring a Fire 280R server for our needs. Yesterday we finally were able to patch some real Internet addresses on the NICs, as well as new local addresses, so now we finally are online^^<br />
While configuring we figured that there are at least three potential needs to assign multiple IP addresses to a single interface.</p>
<p>1. To do a quick test where the configuration won&#8217;t have to survive a reboot<br />
2. On an interface in a global zone<br />
3. On an interface in a non-global zone</p>
<p>These are the solutions we used:</p>
<p><b>1</b></p>
<pre class="box">
$ ifconfig abrX:Y plumb
</pre>
<p>while &#8220;abrX&#8221; is the abbreviation for an installed interface.<br />
Now you can use the new interface abrX:Y as you want.</p>
<p><b>2</b><br />
We needed it to have an an external(Internet) and an internal address. So we made an entry in <em>/etc/hosts</em> for the primary address in the old fashioned way(we do not yet use NWAM):</p>
<pre class="box">
10.5.250.100    fire
</pre>
<p>while we put the other addresses in <em>/etc/hostname.abrX</em>:</p>
<pre class="box">
fire
addif 141.72.100.100/24
</pre>
<p>where /24 implies: netmask ffffff00 broadcast 141.72.100.255</p>
<p><b>3</b><br />
We wanted the interfaces to be visible from the global zone via a local address while being available from the Internet. Therefore we defined a local address as in <em>2</em> via /etc/hosts and /etc/hostname.abrX, but we also included the Internet address in the zone configuration:</p>
<pre class="box">
$ zonecfg -z zone1
zonecfg:zone1> select net physical=abrX
zonecfg:zone1:net> set address= 141.72.100.101/24
zonecfg:zone1:net> end
zonecfg:zone1> commit
zonecfg:zone1> exit
</pre>
<p>
We will now take a look at IP instances, because using them we can achieve to only have the non-global zones visible in the Internet, while the global zone is only vulnerable in the local subnet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/multiple-ip-addresses-on-one-interface-solaris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migration from /etc/aliases to MySQL</title>
		<link>http://blog.dispatched.ch/2008/10/04/migration-from-etcaliases-to-mysql/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/migration-from-etcaliases-to-mysql/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:20:34 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[aliases]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=96</guid>
		<description><![CDATA[I wrote a small shellscript which converts existing mail relays in /etc/aliases to a SQL database. It worked for me in this simple form but I can take no responsibility whatsover for any other setup. The usage is pretty much straight forward &#8211; simply give the script the needed information as to where the aliases [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a small shellscript which converts existing mail<br />
relays in /etc/aliases to a SQL database. It worked for me in this<br />
simple form but I can take no responsibility whatsover for any other<br />
setup.</p>
<p>The usage is pretty much straight forward &#8211; simply give the script<br />
the needed information as to where the aliases file is located, the<br />
account for MySQL and so forth.<br />
Note: In the current implementation you have to create the database,<br />
a user and a valid relay table yourself. If you don&#8217;t know how to do that<br />
you can extract this information in my howto on migrating Postfix to<br />
MySQL.</p>
<p><a href="http://blog.dispatched.ch/daten/aliases2sql">download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/migration-from-etcaliases-to-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maradns on OpenSolaris(Sparc)</title>
		<link>http://blog.dispatched.ch/2008/10/04/maradns-on-opensolarissparc/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/maradns-on-opensolarissparc/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:19:49 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[maradns]]></category>
		<category><![CDATA[opensolaris]]></category>
		<category><![CDATA[sparc]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=94</guid>
		<description><![CDATA[In order to compile Maradns (http://www.maradns.org) on a Sparc machine you have to edit the Makefile. I changed line 19-36 to following: # Uncomment the following three lines to get this to compile on Solaris LDFLAGS=-lxnet CC=cc $(LDFLAGS) -DSOLARIS -DNO_FLOCK M="CC=$(CC)" # These are currently unused, but will be needed again if we use flock() [...]]]></description>
			<content:encoded><![CDATA[<p>In order to compile Maradns (<a href="http://www.maradns.org">http://www.maradns.org</a>) on a Sparc machine you have to edit the Makefile.<br />
I changed line 19-36 to following:</p>
<pre class="box">
# Uncomment the following three lines to get this to compile on Solaris
 LDFLAGS=-lxnet
 CC=cc $(LDFLAGS) -DSOLARIS -DNO_FLOCK
 M="CC=$(CC)"
# These are currently unused, but will be needed again if we use flock() again
# CFLAGS=-I/usr/ucbinclude
# L="CC=$(CC) $(CFLAGS)"
# LDFLAGS=-L/usr/ucblib -lucb -lxnet
# end the Solaris section
# Non-Solaris version of "M"
#M="CC=$(CC) -O2 -Wall" DEBUG=-DNO_FLOCK
#V="VERSION=$(VERSION)"

# Debug
D="VERSION=$(VERSION)" DEBUG="-DDEBUG -DNO_FLOCK"

#FLAGS = -O2 -Wall
FLAGS = -g
</pre>
<p>afterwards a simple make did the job.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/maradns-on-opensolarissparc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First installation troubles (Solaris)</title>
		<link>http://blog.dispatched.ch/2008/10/04/first-installation-troubles-solaris/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/first-installation-troubles-solaris/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:19:28 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[opensolaris]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Solaris 10]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=92</guid>
		<description><![CDATA[Various small problems VIM / Cursor Keys If you wonder why VIM keeps writing &#8216;A&#8217;, &#8216;B&#8217;, &#8216;C&#8217;, &#8216;D&#8217; on your screen when it is supposed just to move the cursor in writing mode, the answer is that the cursor keys are not being mapped the right way. The solution is to extend your favourite .vimrc [...]]]></description>
			<content:encoded><![CDATA[<h1>Various small problems</h1>
</p>
<p><b>VIM / Cursor Keys</b><br />
If you wonder why VIM keeps writing &#8216;A&#8217;, &#8216;B&#8217;, &#8216;C&#8217;, &#8216;D&#8217; on your screen when it is supposed just to move the cursor in writing mode, the answer is that the cursor keys are not being mapped the right way. The solution is to extend your favourite .vimrc file with:</p>
<pre class="box">
map! ^[OD ^[h
map! ^[OC ^[l
map! ^[OA ^[k
map! ^[OB ^[j
</pre>
<p><b>&#8220;/usr/ucb/cc: language optional software package not installed&#8221;</b><br />
/usr/ucb/cc is only a wrapper to a real C compiler. Solaris 10 won&#8217;t have a C compiler preinstalled, normally. This means that you will have to install it yourself (Sun Studio would be a good idea, too). All you have to see to then is that your PATH is set correctly; meaning that /usr/ucb is either deleted or after your real compiler.</p>
<p></p>
<p><b>&#8220;WARNING: loghost could not be resolved.&#8221;</b><br />
That&#8217;s because your syslogd doesn&#8217;t have a defined host to work on. To fix it simply add &#8220;loghost&#8221; to your 127.0.0.1 entry in the /etc/hosts file</p>
<pre class="box">
127.0.0.1       localhost loghost
</pre>
<p><b>&#8220;Sendmail: My unqualified host name (domain) unknown;&#8221;</b><br />
If you get this warning on computer startup, then you haven&#8217;t configured a fully qualified domain name for your system. If you don&#8217;t need a mailing system on your computer the solution is easy by simply disabling the service via:</p>
<pre class="box">
svcadm disable sendmail
</pre>
<p>If you need a working mailsystem, there is a <a href="http://www.sun.com/bigadmin/features/articles/config_sendmail.html">howto</a> from SUN.
          </td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/first-installation-troubles-solaris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AMP stack in Solaris 05/08</title>
		<link>http://blog.dispatched.ch/2008/10/04/amp-stack-in-solaris-0508/</link>
		<comments>http://blog.dispatched.ch/2008/10/04/amp-stack-in-solaris-0508/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:18:27 +0000</pubDate>
		<dc:creator>Alain M. Lafon</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[samp]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://gefechtsdienst.de/?p=90</guid>
		<description><![CDATA[Most webservers do have a need for a decent AMP stack, but Solaris 05/08 doesn&#8217;t quite offer a solution out of the box, but if you know where to look you&#8217;re not far away from having a fine implementation. MySQL5I have made good experiences using MySQL5 from blastwave. Unfortunately it doesn&#8217;t run out of the [...]]]></description>
			<content:encoded><![CDATA[<p>Most webservers do have a need for a decent AMP stack, but Solaris 05/08 doesn&#8217;t quite offer a solution out of the box, but if you know where to look you&#8217;re not far away from having a fine implementation.</p>
<ul></li>
<li><strong>MySQL5</strong>I have made good experiences using MySQL5 from <a href="http://www.blastwave.org">blastwave</a>. Unfortunately it doesn&#8217;t run out of the box even tough it integrates nicely with SMF. When mysql is being called after installation you will see this error message:
<pre class="box">Warning: mysql(): Can't connect to local MySQL server through socket '/tmp/mysql.sock'</pre>
<p>The simple reason is that cswmysql5 couldn&#8217;t start properly, because there is no default config file. After copying the config file to the right location you can start the installation:</p>
<pre class="box">$ cp /opt/csw/mysql5share/mysql/my-small.cnf /opt/csw/mysql5/my.cnf
$ /opt/csw/mysql5/bin/mysql_install_db
...
$ chown -R mysql:mysql /opt/csw/mysql5/var
$ svcadm disable cswmysql5; svcadm enable cswmysql5</pre>
</li>
<li><strong>Apache2</strong>
<pre class="box">$ pkg-get install apache2</pre>
</li>
<li><strong>PHP</strong>
<pre class="box">$ pkg-get install php5</pre>
</li>
<li><strong>Needed modules</strong>
<pre class="box">$ pkg-get install ap2_modphp5
$ pkg-get install php5_gd
$ pkg-get install
php5_mysql</pre>
<p>Now all that&#8217;s left is to integrate PHP support into apache which is done by adding the following lines in your /opt/csw/apache2/etc/httpd.conf:</p>
<pre class="box">LoadModule php5_module /opt/csw/apache2/libexec/libphp5.so
&lt;IfModule mod_php5.c&gt;
  AddType application/x-httpd-php .php .phtml .php3
  AddType application/x-httpd-php-source .phps
&lt;/IfModule&gt;</pre>
<p>Now disable apache2, restart cswapache2 and you&#8217;re done.
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.dispatched.ch/2008/10/04/amp-stack-in-solaris-0508/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
