<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<title type="text">CoffeeBreak</title>
	<subtitle type="text">CoffeeBreak:CoffeeBreak, the neverpanic.de blog</subtitle>
	<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/" />
	<link rel="self" type="application/atom+xml" href="http://www.neverpanic.de/blog/atom/" />
	<updated>2011-08-10T23:15:35Z</updated>
	<rights>Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Germany License</rights>
	<generator uri="http://expressionengine.com/" version="1.6.8">ExpressionEngine</generator>
	<id>tag:neverpanic.de,2011-08-10:/blog/</id>
	
	<entry>
		<title>Chaos Communication Camp Badges</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/chaos&#45;communication&#45;camp&#45;badges/" />
		<id>tag:neverpanic.de,2011-08-10:/blog/single/chaos-communication-camp-badges/#3.86</id>
		<published>2011-08-10T23:00:34Z</published>
		<updated>2011-08-10T23:15:35Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Personal"
				scheme="/site/category/personal/"
				label="Personal" />
		<content type="html">
			<![CDATA[
				<p>Apart from the cool location within an used-to-be military airport open-air aviation museum in <a href="http://maps.google.de/maps?q=Luftfahrtmuseum+Finowfurt,+Museumsstra%C3%9Fe&amp;hl=en&amp;ie=UTF8&amp;sll=51.151786,10.415039&amp;sspn=17.035085,46.538086&amp;vpsrc=0&amp;t=h&amp;z=16" title="aviation museum in Finowfurt on Google Maps">Finowfurt near Berlin, Germany</a>, the coolest thing so far definitely is the electronic badge handed out at the entrance: The <a href="http://r0ket.badge.events.ccc.de/" title="Wiki for the r0ket badge">r0ket</a>, an ARMv7 µController with back-lit LED-display, several LEDs (of which one is also used as a light sensor to determine whether it&#8217;s night and the badge display needs back light), a multi-way jog, a rechargeable battery and some extension-connectors.</p>

<p>The badge also features mesh-networking capabilities, although the firmware for that does not seem very stable or reliably usable at the moment. I will definitely be keeping this <strike>tool</strike> <ins>toy</ins> – there&#8217;s no better name-tag than this, I guess.<br />
<a class="lightbox" href="http://www.neverpanic.de/images/uploads/IMAG0179.jpg"><img src="http://www.neverpanic.de/images/uploads/IMAG0179_thumb.jpg" class="float" alt="The CCC badge „r0ket”" width="490" height="819" /></a>
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>GSoC welcome package</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/gsoc&#45;welcome&#45;package/" />
		<id>tag:neverpanic.de,2011-05-27:/blog/single/gsoc-welcome-package/#3.85</id>
		<published>2011-05-27T12:18:42Z</published>
		<updated>2011-05-27T12:46:43Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Google Summer of Code"
				scheme="/site/category/google-summer-of-code/"
				label="Google Summer of Code" />
		<content type="html">
			<![CDATA[
				<p>At the beginning of GSoC, every student receives a welcome package from Google, with a few goodies and a prepaid Visa card through which they will be paid. I have received this package yesterday and want to share my unboxing experience <img src="/images/smileys/wink.gif" width="19" height="19" alt="wink" style="border:0;" /></p>

<p><img src="http://www.neverpanic.de/images/uploads/gsoc-welcome-box-package.jpg" alt="GSoC welcome package packaging" width="490" height="293" /><br />
This is what the package looked like from the outside. Welcome packages are shipped by FedEx; in my case they left it with a neighbour, since I wasn&#8217;t at home when it arrived.</p>

<p><img src="http://www.neverpanic.de/images/uploads/gsoc-welcome-box-contents.jpg" alt="GSoC welcome package contents" width="490" height="293" /><br />
The package contains a pen, a notebook, a GSoC sticker that presumably glows in the dark (I&#8217;ve only read that, not tested it on my own), a welcome letter from Google (on US Letter paper, which feels weird to me being in Europe) and the payment card along with some notes and ToS for it.</p>

<p>I particulary like the payment card itself, because it just feels awesome to have a Visa card with Google&#8217;s colors and the Google &#8220;g&#8221; on it:<br />
<img src="http://www.neverpanic.de/images/uploads/gsoc-welcome-box-card.jpg" alt="GSoC payment card" title="Yes, I did shoop my card number. What did you expect?" width="490" height="293" />
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>Christ&#8217;s Resurrection… in Little Switzerland</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/christs&#45;resurrection&#45;in&#45;little&#45;switzerland/" />
		<id>tag:neverpanic.de,2010-07-30:/blog/single/christs-resurrection-in-little-switzerland/#3.84</id>
		<published>2010-07-30T22:55:01Z</published>
		<updated>2010-07-30T23:14:02Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Personal"
				scheme="/site/category/personal/"
				label="Personal" />
		<content type="html">
			<![CDATA[
				<p>Seen in a village in <a href="http://en.wikipedia.org/wiki/Little_Switzerland_%28Germany%29" title="Little Switzerland on Wikipedia">Little Switzerland</a>:<br />
<a href="http://www.neverpanic.de/images/uploads/auferstehung-christi.jpg" class="lightbox"><img src="http://www.neverpanic.de/images/uploads/auferstehung-christi_thumb.jpg" class="float" alt="image stating Christ's Resurrection on a sign" width="493" height="369" /></a><br />
The text reads &#8220;Christ&#8217;s Resurrection&#8221;. I had a thorough look, but couldn&#8217;t spot what that sign was trying to point me to… maybe it&#8217;s stating the obvious: Jerusalem is located in Little Switzerland? <img src="/images/smileys/wink.gif" width="19" height="19" alt="wink" style="border:0;" />
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>whatthecommit.com git hook</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/whatthecommit.com&#45;git&#45;hook/" />
		<id>tag:neverpanic.de,2010-07-03:/blog/single/whatthecommit.com-git-hook/#3.83</id>
		<published>2010-07-03T17:23:21Z</published>
		<updated>2010-10-12T00:37:22Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Linux"
				scheme="/site/category/linux/"
				label="Linux" />
		<content type="html">
			<![CDATA[
				<p>I currently use <a href="http://gitscm.org/">Git</a> for most of my version control needs. I'm keeping all of my hand-ins for university under version control to be able to sync them between university and my laptop easily and to make it easy for others to contribute (and sometimes they actually do!). But those of you using version control systems know what the biggest problem with version control is: Thinking of a commit message. Wait no moar! The ultimate solution is here!</p>
<p><a href="http://whatthecommit.com/" title="a commit message generator">whatthecommit.com</a> is a website that provides you with a fresh commit message every time you load it. So all you have to do, is copy and paste the line into your commit window. Still too much work? That's why git comes with hook scripts. Paste the following code in <code>.git/hooks/prepare-commit-msg</code> in your working copy and make the file executable and you'll be provided with a wonderful commit message every time you type <code>git commit</code> automatically!
<div class="bash geshify" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">#</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># A hook script to prepare the commit log message.</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># Called by &quot;git commit&quot; with the name of the file that has the</span></pre></li><li style="font-weight: bold; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># commit message, followed by the description of the commit</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># message's source.  The hook's purpose is to edit the commit</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># message file.  If the hook fails with a non-zero status,</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># the commit is aborted.</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</pre></li><li style="font-weight: bold; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$2,$3&quot;</span> <span style="color: #000000; font-weight: bold;">in</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        ,<span style="color: #000000; font-weight: bold;">|</span>template,<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #007800;">line</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>whatthecommit.com<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #660033;">-O</span> - <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-o</span> <span style="color: #ff0000;">'&lt;p&gt;.*$'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/&lt;[^&gt;]*&gt;//g'</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #007800;">file</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'1d'</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${1}</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${line}</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${1}</span>&quot;</span></pre></li><li style="font-weight: bold; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${file}</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${1}</span>&quot;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        <span style="color: #000000; font-weight: bold;">;;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        <span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">;;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">esac</span></pre></li></ol></div></p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>Windows 7 on MSI K9N Platinum (nForce 570 SLI)</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/windows&#45;7&#45;on&#45;msi&#45;k9n&#45;platinum&#45;nforce&#45;570&#45;sli/" />
		<id>tag:neverpanic.de,2009-12-26:/blog/single/windows-7-on-msi-k9n-platinum-nforce-570-sli/#3.82</id>
		<published>2009-12-26T00:41:28Z</published>
		<updated>2009-12-26T02:16:29Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
		<content type="html">
			<![CDATA[
				<p>Recently, a fresh Windows install<sup id="ftnt1src"><a href="#footnote1">[1]</a></sup> was due on my home PC primarily used by my parents and family after my <a href="/blog/single/university-macbook-pro/" title="blog post about switching to a Mac from Nov 30th 2008">switch to a MacBook</a> about a year ago.</p>
<p>However, whenever I tried to start the installation routine, the setup would boot into the "Windows is starting"-screen with the nicely animated glowing 7-logo<sup id="ftnt2src"><a href="#footnote2">[2]</a></sup>, but stay there indefinitely without an error message. When starting the setup in safe mode (I had to press F5 or F6 during start-up IIRC), the setup would just hang after</p>
<div class="html4strict" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Loaded: \Windows\system32\drivers\disk.sys</pre></li></ol></div>

<p>I started searching the internet for similar problems and found a couple of recommendations related to nForce chipsets. Some told you to disable your on-board LAN ports (which I happen not using anyway) and a lot of similar disable-some-hardware tips, which, unfortunately, did not help at all. I had almost given up on Windows 7 and re-installed XP, when I decided to try a BIOS-update as a last resort. After using MSI's rather comfortable LiveUpdate<sup id="ftnt3src"><a href="#footnote3">[3]</a></sup> the Windows 7 setup did work fine<sup id="ftnt4src"><a href="#footnote4">[4]</a></sup>.</p>

<ul class="footnotes">
<li id="footnote1"><a class="footnote" href="#ftnt1src">[1]</a>: MSDN-AA is one of the benefits of being a student <img src="/images/smileys/smile.gif" width="19" height="19" alt="smile" style="border:0;" /></li>
<li id="footnote2"><a class="footnote" href="#ftnt2src">[2]</a>: <a href="http://images.google.de/images?q=Windows%207%20boot%20screen">http://images.google.de/images?q=Windows%207%20boot%20screen</a></li>
<li id="footnote3"><a class="footnote" href="#ftnt3src">[3]</a>: It's an Internet Explorer Active-X plug-in optimized for IE5 and 800x600, but other than that, it works pretty good. I can even update your BIOS from within the OS (does a hard reset after finishing, but that's probably the better alternative to shutting down on a possibly non-working BIOS)</li>
<li id="footnote4"><a class="footnote" href="#ftnt4src">[4]</a>: Sorry for the excessive usage of footnotes <img src="/images/smileys/wink.gif" width="19" height="19" alt="wink" style="border:0;" /></li>
</ul> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>RapidShare. Completely unusable?</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/rapidshare.&#45;completely&#45;unusable/" />
		<id>tag:neverpanic.de,2009-12-25:/blog/single/rapidshare.-completely-unusable/#3.81</id>
		<published>2009-12-25T23:59:27Z</published>
		<updated>2009-12-26T01:13:28Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Personal"
				scheme="/site/category/personal/"
				label="Personal" />
		<content type="html">
			<![CDATA[
				<p>RapidShare is changing it&#8217;s free download limits (as in speed, time and size) like others are changing their underwear. Their current setup however, is the worst I&#8217;ve experienced so far and makes RapidShare almost completely unusable without a client software.<br />
I had to reload about 20 times and wait around 15 minutes, before I even got a download ticket. I had to wait 90 seconds after I got the ticket for the download to finally start. For each reload I had to click twice, after I got the ticket it took another click to start the download. In total, that sums up to 20 * 2 + 1 = 41 clicks on a website that advertises itself as &#8220;1-CLICK Web hosting - Easy Filehosting&#8221;.<br />
The download itself took 43 minutes 25 seconds for a total of 114.83 MiB, that&#8217;s about 45.14 KiB per second. Compare that to a test download I did from a full-speed server that delivered 657.37 KiB/s for a 30.6 MiB file in 48 seconds. That&#8217;s more than 1400% as fast as a download from RapidShare, not counting the waiting time.</p>

<p>The numbers speak for themselves – in my opinion RapidShare is completely unusable at the moment (and even more for less tech-savvy people than for me).
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>Bon Appetit at the Erlangen canteen</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/bon&#45;appetit&#45;at&#45;the&#45;erlangen&#45;canteen/" />
		<id>tag:neverpanic.de,2009-09-29:/blog/single/bon-appetit-at-the-erlangen-canteen/#3.80</id>
		<published>2009-09-29T17:31:53Z</published>
		<updated>2009-09-29T17:43:54Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Personal"
				scheme="/site/category/personal/"
				label="Personal" />
		<content type="html">
			<![CDATA[
				<p>It&#8217;s no secret the canteen on the Erlangen university&#8217;s southern campus is not the best – but I haven&#8217;t seen something like <strong>that</strong> before.<br />
<a href="http://www.neverpanic.de/images/uploads/erlangen-canteen-worm.jpg" class="lightbox"><img src="http://www.neverpanic.de/images/uploads/erlangen-canteen-worm_thumb.jpg" class="float" alt="erlangen canteen worm" width="480" height="360" /></a><br />
A little bit disgusting if you ask me – I was lucky, it wasn&#8217;t my meal, though…
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>Xcode from NULL to 100;</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/xcode&#45;from&#45;null&#45;to&#45;100/" />
		<id>tag:neverpanic.de,2009-09-17:/blog/single/xcode-from-null-to-100/#3.79</id>
		<published>2009-09-17T16:24:41Z</published>
		<updated>2009-09-18T00:08:42Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="OS X"
				scheme="/site/category/os-x/"
				label="OS X" />
		<content type="html">
			<![CDATA[
				<p>
    I was recently browsing the new <a href="http://www.apple.com/itunes/">iTunes 9</a> Store and somehow ended up in the podcast section. I had a look around the featured podcast and noticed a somewhat new podcast about Xcode called “Xcode von NULL auf Hundert;” (the podcast is german and, as such, has a german title). Ever since I switched to a Mac I have wanted to learn some basics of Cocoa programming.
</p>
<p>
    I started reading some resources on Objective-C programming a while ago, but didn't finish any because most of them were pretty technical and theoretical and thus getting boring pretty fast. The “Xcode from NULL to 100;” podcast does a lot more learning by doing – e.g. they guide you to build a (graphical!) calculator and explain memory allocating and releasing using that example.
</p>
<p>
    The podcast targets absolute beginners – if you already have a background in programming, some of the information not related to OS X GUI programming will probably be pretty redundant to you, but you might still use the podcast to get started with Apple's Interface Builder.
</p>
<p>
    <a href="http://0x02100.silutions.de/">Xcode von NULL auf Hundert; podcast</a>
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>GeSHify has moved</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/geshify&#45;has&#45;moved/" />
		<id>tag:neverpanic.de,2009-04-02:/blog/single/geshify-has-moved/#3.77</id>
		<published>2009-04-02T16:52:55Z</published>
		<updated>2009-04-02T16:58:56Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Web Development"
				scheme="/site/category/web-development/"
				label="Web Development" />
		<content type="html">
			<![CDATA[
				<div style="text-align: center;">
<p style="clear: right; padding-top: .5em;">My syntax highlighting extension for ExpressionEngine has moved to a new home:</p>
<p style="font-size: 3em; margin-top: .5em;"><a href="http://geshify.com/">http://geshify.com/</a></p>
</div> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>Subversion Property Copy</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/subversion&#45;property&#45;copy/" />
		<id>tag:neverpanic.de,2009-02-15:/blog/single/subversion-property-copy/#3.73</id>
		<published>2009-02-15T22:03:53Z</published>
		<updated>2010-10-12T00:37:54Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Linux"
				scheme="/site/category/linux/"
				label="Linux" />
		<content type="html">
			<![CDATA[
				<p>Although there is a <a href="http://www.lachoseinteractive.net/en/community/subversion/svnx/features/" title="svnX (free)">couple</a> <a href="http://versionsapp.com/" title="Versions">of</a> <a href="http://www.zennaware.com/cornerstone/" title="Cornerstone">Subversion</a> <a href="http://zigversion.com/" title="ZigVersion (free for students)">GUI</a>s for Macs, I usually use the <abbr title="Command Line Interface">CLI</abbr>. I manage all source code I write during my studies using Subversion and usually add revision number and date of last checkin to the file using the <code>svn:keywords</code>-Property. However, I always forget the set of keywords I usually add: <code>Author Date Id Revision URL</code>. Unfortunately, there is no way to copy a property from one file to another in the standard subversion binary. There is, however, a little shortcut:<br />
<div class="bash" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">svn</span> propset <span style="color: #007800;">$propertyName</span> <span style="color: #ff0000;">&quot;<span style="color: #780078;">`svn propget $propertyName $fromFileName`</span>&quot;</span> <span style="color: #007800;">$toFileName</span></pre></li></ol></div><br />
Typing this monster isn&#8217;t any userfriendly at all, though – a little <code>.bashrc</code> magic does the trick:<br />
<div class="bash geshify" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># add svn propcopy</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> <span style="color: #c20cb9; font-weight: bold;">svn</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        pc<span style="color: #000000; font-weight: bold;">|</span>propcopy<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></li><li style="font-weight: bold; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #007800;">propName</span>=<span style="color: #007800;">$2</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #007800;">fromFile</span>=<span style="color: #007800;">$3</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #7a0874; font-weight: bold;">shift</span> <span style="color: #000000;">3</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">which</span> <span style="color: #c20cb9; font-weight: bold;">svn</span><span style="color: #000000; font-weight: bold;">`</span> propset <span style="color: #007800;">$propName</span> <span style="color: #ff0000;">&quot;<span style="color: #780078;">`\`</span>which svn\<span style="color: #780078;">` propget $propName $fromFile`</span>&quot;</span> $<span style="color: #000000; font-weight: bold;">@</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        <span style="color: #000000; font-weight: bold;">;;</span></pre></li><li style="font-weight: bold; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        <span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">which</span> <span style="color: #c20cb9; font-weight: bold;">svn</span><span style="color: #000000; font-weight: bold;">`</span> $<span style="color: #000000; font-weight: bold;">@</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        <span style="color: #000000; font-weight: bold;">;;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #000000; font-weight: bold;">esac</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></li></ol></div></p>

<p><strong>Update</strong>: Thanks to <a href="http://raim.codingfarm.de/" title="Rainer Müller">Raim</a> for the wildcard support. Using subversion auto-props is an option for files, but unfortunately, <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=1989" title="issue 1989 on auto-props on directories">auto-props don&#8217;t work on directories</a> yet.
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>A Friday 13th story</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/a&#45;friday&#45;13th&#45;story/" />
		<id>tag:neverpanic.de,2009-02-14:/blog/single/a-friday-13th-story/#3.72</id>
		<published>2009-02-14T14:32:36Z</published>
		<updated>2009-02-16T13:01:37Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Linux"
				scheme="/site/category/linux/"
				label="Linux" />
		<content type="html">
			<![CDATA[
				<p>This site is served by my own virtual server hosted by Carrot Servers in Austria. The hardware nodes running their servers are housed in one of Germany&#8217;s largest hosting company&#8217;s datacenters. However, three of their datacenters recently suffered from a power loss because of a defunct uninterruptible power source and a series of other unfortunate problems – a little over 12,000 servers were without power for a few hours.<br />
However, it seems my vServer&#8217;s hardware node was damaged by the power loss; one of the hard disk drives in the RAID array was replaced after the outage. Yesterday, the worst-case scenario came true: besides the hard disks, apparently the motherboard was also damaged causing the RAID controller to slowly corrupt the data on the drives. On Friday, 13<sup>th</sup>, my provider informed me data had been lost and the server will be swapped with a new machine.<br />
Luckily, I did remember creating backup – and it happened to be a recent one (namely from Thursday, 12<sup>th</sup>). But as Murphy&#8217;s law states, things never work the way you expect them to work. In this case that meant that permissions were incorrect on the backup although I used rsync with the appropriate preserve-permissions option. I&#8217;ve thus been busy reinstalling the software, uploading the files and databases and fixing their permission. As of now, all data has been successfully restored (blessing in disguise) and I&#8217;m supervising the server&#8217;s functions.
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>Software on a stick?</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/software&#45;on&#45;a&#45;stick/" />
		<id>tag:neverpanic.de,2008-12-04:/blog/single/software-on-a-stick/#3.71</id>
		<published>2008-12-04T11:39:54Z</published>
		<updated>2008-12-04T12:07:55Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
		<content type="html">
			<![CDATA[
				<p>
Why is the software industry still using optical media to distribute software? Besides the few companies that offer software downloads everybody else ships CDs or DVDs. I occasionally wonder why they don't use USB flash drives? Flash drives are
<ol>
<li>
small (from a hardware point of view)<br />
USB drives are much smaller and thus much more portable than optical media
</li>
<li>large (in terms of storage capacity)<br />
flash memory can easily store the amount of data a DVD can and the amount will certainly grow in the future</li>
<li>robust<br />
try to break apart a CD, and then do the same with a flash drive  <img src="/images/smileys/wink.gif" width="19" height="19" alt="wink" style="border:0;" />
</li>
<li>cheap<br />
I don't know the exact price per Gigabyte of a CD or DVD, but USB drives are quite cheap as well.</li>
</ol>
</p>
<p>I'm not a business analyst, but imho thumb drives are a serious alternative to optical media especially since there will be more PCs or laptops without any optical drive (such as the MacBook Air) in the future.</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>university &amp;amp; MacBook Pro</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/university&#45;macbook&#45;pro/" />
		<id>tag:neverpanic.de,2008-11-30:/blog/single/university-macbook-pro/#3.70</id>
		<published>2008-11-30T16:34:12Z</published>
		<updated>2009-05-19T18:55:13Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
		<content type="html">
			<![CDATA[
				<p>
However, it's not just about the work for university — besides that I'm also living in Erlangen now (at least during the week, rather infrequently at the weekends), which means cooking and housekeeping for myself. I currently have a room at a student hostel but will be moving into my own apartment (along with a friend of mine) by the end of december.
</p>
<p>
Another thing I desperately needed for university was a laptop, as I didn't bother moving my home computer (it's the last one left at home for parents and everybody else anyway).<br />
It took me a good while to decide what kind of laptop to get, but I finally chose a MacBook Pro with a whooping 4 Gigabytes of RAM, because I didn't want to fiddle with neither Windows Vista nor XP anymore. Linux would have been an option, but having a GUI to configure your PC isn't that bad after all either.<br />
Lots of people buy Macs for their product design, but the point that convinced me was the possibility to run every software that works on Linux on the Mac as well (you gotta love a real bash shell, not some emulated cr*p on Windows).
So far I'm very satisfied with my choice and the MacBook — I might blog a little bit more in detail about that soon.
</p>
<p>
So far this was just a short update from me to let you know I'm still alive.
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>on work atmosphere</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/on&#45;work&#45;atmosphere/" />
		<id>tag:neverpanic.de,2008-08-26:/blog/single/on-work-atmosphere/#3.67</id>
		<published>2008-08-26T20:49:00Z</published>
		<updated>2008-08-26T21:41:44Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Personal"
				scheme="/site/category/personal/"
				label="Personal" />
		<content type="html">
			<![CDATA[
				<p>
	Whether I feel comfortable in office depends on a lot of criteria, some subtle, less important, some of uttermost importance. I'll try to list some factors here, but this list doesn't claim to be anywhere close to complete. Note that this list is compiled from my experience; your mileage might vary. You're welcome to share your opinion using the comment form.
</p>
<ul>
	<li>
		<h3>Co-Workers</h3>
		<p>
			Colleagues probably have the largest impact on the atmosphere at work (at least when working in an office with a couple of other people around). Whether they are friendly, open and humorous (jokes make work <em>a lot</em> more fun) is one of the two key factors deciding whether I feel comfortable working at that place.<br />
			Unfortunately you hardly talk to your co-workers before picking up work, but that's probably why there's a probationary period…
		</p>
	</li>
	<li>
		<h3>Your Boss</h3>
		<p>
			They guy in charge at your company can make your work life a misery. If he doesn't like you (or he's a complete id**t) and you don't have backup from your colleagues work can be a pain.<br />
			<em>Hey bosses, if you're reading this, here's to you: <a href="http://number17.com/number17comic18.pdf">how to be a good boss</a> (PDF document, 98KB) at number17.com</em>
		</p>
	</li>
	<li>
		<h3>Your Client(s)</h3>
		<p>
			If you're working in the services sector you're working for someone. That's fine, however there usually is a simple problem with this person (or these persons, depending on whom you're working for this might be a large user base): they've got the money. And as we all know having the money makes you the king.<br />
			We all know the saying <strong>customer is king</strong>, but sometimes you should (at least try to) parent your customers to be less exhaustive towards you.<br />
			<em>Oh, hey clients, read this: <a href="http://number17.com/number17comic21.pdf">how to be a good client</a> (PDF document, 66KB) at number17.com</em>
		</p>
	</li>
	<li>
		<h3>Equipment</h3>
		<p>
			This one's not a very big part, but it helps if you can work with a somewhat current system. Oh, and two screens are luxury, too.
		</p>
	</li>
</ul>
<p>
	Inspired by <a href="http://62.146.72.123/wordpress/?p=32">Lektion in Unusability und “Placebo forte!”</a> on Keep Smoking<br />
	number17 comics via <a href="http://www.pixelgraphix.de/weblog/artikel/understand-that-nothing-takes-5-minutes/">pixelgraphix.de</a>
</p> 
			]]>
		</content>
	</entry>
	
	<entry>
		<title>Backup a Linux server to a Windows PC while preserving user, group and permissions</title>
		<link rel="alternate" type="text/html" href="http://www.neverpanic.de/blog/single/backup&#45;linux&#45;server&#45;to&#45;windows&#45;pc&#45;preserving&#45;user&#45;group&#45;permissions/" />
		<id>tag:neverpanic.de,2008-08-24:/blog/single/backup-linux-server-to-windows-pc-preserving-user-group-permissions/#3.66</id>
		<published>2008-08-24T21:32:44Z</published>
		<updated>2008-12-25T17:48:45Z</updated>
		<author>
			<name>Clemens Lang</name>
			<email>neverpanic@gmail.com</email>
			<uri>http://www.neverpanic.de/about-me</uri>		</author>
		
			<category
				term="Linux"
				scheme="/site/category/linux/"
				label="Linux" />
		<content type="html">
			<![CDATA[
				<p>
 I moved my sites to a new virtual server at <a href="http://carrot-server.com/">Carrot Server</a>. Their offer is (imho) better than the one over at <a href="http://www.hosteurope.de/">HostEurope</a>, however there are some downsides: they don't have a rescue system yet (you better watch your step!) and there's no backup included.
</p>
<p>
 I can live without the rescue system, but no backup? <strong>No way</strong>.
</p>
<p>
 Since I don't have a dedicated Linux box around at home, I needed to store the backup on my Windows PC. There's a problem with storing files from a Unix system on Windows though: You'll lose the owner, group and permission data for the files, since the file systems supported by Windows can't store this information. A backup without this metadata is useless, though.
</p>
<h3>Finding a solution</h3>
<p>
 Some kind of container solution was needed. Tar archives support Unix permissions, however packing all files into a huge tar file would require transferring all data on every backup run. My internet connection at home is not T1, so transferring all data every time I do a backup is probably not a good idea (and it's perfectly useless, too).
</p>
<p>
 There's <code>rsync</code> — the state-of-the-art tool to transfer only the changes (yes, changes, not only changed files; very useful if you have some multiple GB files around). So combining rsync and tar seems the way to go.
</p>
<p>
 I could have packed all files into a huge tarball and rsynced it to my PC (effectively only tranferring the changes), but that would mean the tarball would need to be stored at the server (at least temporarily). Now imagine the disk is 95% full and you're trying to pack the whole filesystem — we have a problem here.
</p>
<p>
 Fortunately I'm not the first one facing this problem: <a href="http://ttsiodras.googlepages.com/index.html">Thanassis Tsiodras</a> outlines a way to <a href="http://ttsiodras.googlepages.com/backup.html">backup your Linux server preserving permissions to a Windows PC</a> using a loop-mounted file system on a Samba share.<br />
 This technique would require a Linux box, though. Bummer! (If I had a Linux box around, I'd backup to it directly).
</p>

 <h3>Setting it up</h3>
<p>
 So I went with Virtualization: I remember having an old version of Parallels Workstation (now VMware Workstation) laying around. This should do the job. I installed a minimalistic Debian Etch in a virtual machine. The virtualization software supports folder sharing with the host operating system after installing some kernel extensions. Sounds good for my needs. Installed the kernel modules (I had to compile them, since there were none pre-built for my kernel), added a shared folder and found it in /mnt/hgfs/backup/.
</p>
<p>
 <code>#cd /mnt/hgfs/backup/</code> followed by<br />
 <code>#dd if=/dev/zero of=destinationfilename bs=1M count=1 seek=150000</code><br />provided me with a 15GB file full of zeroes to put my file system to. Notice the seek parameter; on file systems supporting sparse files (NTFS does, FAT32 does not) it prevents physically writing 15GB of junk to the disk, but will instead create a file that only looks like it was 15GB. Physically this file is only a couple of KB large. If you need more than 15GB, adjust the seek parameter. Basically the block size (bs) times the seek parameter equals the size of your file system.<br />
 Next I mounted the file to a loopback device:<br />
 <code>#losetup -f /mnt/hgfs/backup/destinationfilename</code><br />
 -f will tell losetup to use the next free loop device and print it's name to stdout.<br />
 Now I had to create a file system on the loopback device. You can chose whatever filesystem you think is best, I went with ext3:<br />
 <code>#mkfs -t ext3 /dev/loop0</code><br />
 Make sure to substitute <code>/dev/loop0</code> with the device <code>losetup</code> printed after mounting.<br />
 Finally, I mounted the file system by executing<br />
 <code>#mount -t ext3 /dev/loop0 /media/backup</code>.<br />
 In this case the device /dev/loop0 is mounted to /media/backup (the folder needs to be created before) using the ext3 filesystem driver.
</p>
<h3>Make it stick</h3>
<p>
 You wouldn't want to execute <code>losetup</code> and <code>mount</code> every time you start the system, so here's what you need to add to <code>/etc/fstab</code> to have the file mounted automatically on startup:
 <pre>/mnt/hgfs/backup/destinationfilename /media/backup ext3 loop,defaults 0 0</pre>
</p>
<h3>Backup</h3>
<p>
 Finally you need to use rsync to backup the files. I wrote a small shell script for my needs:
<div class="bash" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># make sure we're in ~; adjust this, if you want your rsync-backup.err file to be elsewhere</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7a0874; font-weight: bold;">cd</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># remove old log file. you could use logrotate for this, if you want to do it right</span></pre></li><li style="font-weight: bold; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> rsync-backup.err.gz <span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> rsync-backup.err.gz</pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># gzip existing log file</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> rsync-backup.err <span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">gzip</span> rsync-backup.err</pre></li><li style="font-weight: bold; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># do the rsync; this will sync remote /* to /media/backup</span></pre></li><li style="font-weight: normal; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">rsync <span style="color: #660033;">--delete</span> avze <span style="color: #c20cb9; font-weight: bold;">ssh</span> servername:<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span>rsync-backup.err</pre></li></ol></div>
</p>
<p>
 You might ask why I didn't backup to the disk of the virtual machine directly. Doing it this way allows me to exchange the virtual machine without the data getting lost (the machine could even refuse to boot, and the data would still be there).
</p>
			]]>
		</content>
	</entry>
	
</feed>
