<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Günther Noack's blog</title>
	<atom:link href="http://gnoack.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gnoack.wordpress.com</link>
	<description>Illustrated musings about the computer science world</description>
	<lastBuildDate>Thu, 12 Nov 2009 22:48:39 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='gnoack.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/997834afe6f97e9aa4a4bc7493d9c307?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Günther Noack's blog</title>
		<link>http://gnoack.wordpress.com</link>
	</image>
			<item>
		<title>Lightweight continuous integration</title>
		<link>http://gnoack.wordpress.com/2009/11/10/lightweight-continuous-integration/</link>
		<comments>http://gnoack.wordpress.com/2009/11/10/lightweight-continuous-integration/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 18:00:29 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[continuous build]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=655</guid>
		<description><![CDATA[For my diploma thesis, I use a simple continuous integration system. It doesn&#8217;t keep logs except mailing me, but it works fine for the simple one-person setup I have.  
Advantages:

Makes sure my project can be checked out from SVN and then &#8220;just works&#8221; using Ant.

&#8230;so everything is checked into SVN.
&#8230;it builds using Ant (I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=655&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>For my diploma thesis, I use a simple continuous integration system. It doesn&#8217;t keep logs except mailing me, but it works fine for the simple one-person setup I have. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div id="attachment_668" class="wp-caption alignright" style="width: 300px"><img class="size-full wp-image-668" title="Bodo baggert" src="http://gnoack.files.wordpress.com/2009/11/bodo.png?w=290&#038;h=95" alt="Bodo baggert" width="290" height="95" /><p class="wp-caption-text">Wer baggert da so spät noch am Baggerloch?</p></div>
<p><strong>Advantages</strong>:</p>
<ul>
<li>Makes sure my project can be checked out from SVN and then &#8220;just works&#8221; using Ant.
<ul>
<li>&#8230;so everything is checked into SVN.</li>
<li>&#8230;it builds using Ant (I usually use Eclipse)</li>
<li>&#8230;there are no rogue dependencies from production code to test.<sup>1</sup></li>
<li>&#8230;and it&#8217;s harder for me to forget how to setup the project, of course. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
</li>
</ul>
<p><strong>How to do it</strong>:</p>
<ul>
<li>Create a new SVN checkout (Git clone, Perforce Client, &#8230;) into a directory named <code>continuous_build</code> or similar.</li>
<li>In this directory, create a shell script like the one shown below.</li>
<li>To your (user) crontab, add the line <code>00,15,30,45 * * * *     cd /home/guenther/continuous_build/ &amp;&amp; sh continuous_integration.sh</code>. (Note that crontab automatically sends the script&#8217;s output to the user via email.)</li>
</ul>
<blockquote><p>
<a href="http://www.unix-ag.uni-kl.de/~guenther/diplom/"><img src="http://gnoack.files.wordpress.com/2009/11/webstatus1.png?w=231&#038;h=104" alt="Web based build status indicator" title="Web based build status indicator" width="231" height="104" class="alignright size-full wp-image-675" /></a><strong>Update:</strong> I just couldn&#8217;t resist to hack this together as well: Have a look at the new build status indicator on my diploma thesis homepage. (Click, if you&#8217;re in the university subnet.)
</p></blockquote>
<p>Here&#8217;s the source code for <code>continuous_integration.sh</code>:</p>
<pre class="brush: bash;">#!/bin/sh
# Run from same directory!

# JSR 308
export JSR308=`pwd`/jsr308

echo &quot;=================================&quot;
echo &quot;  Configuration&quot;
echo &quot;=================================&quot;
echo &quot;JSR308   : $JSR308&quot;
echo &quot;JAVA_HOME: $JAVA_HOME&quot;
echo &quot;PATH     : $PATH&quot;

echo &quot;=================================&quot;
echo &quot;  SVN Update&quot;
echo &quot;=================================&quot;
svn up

cd jsr308/checkers

echo &quot;=================================&quot;
echo &quot;  Clean&quot;
echo &quot;=================================&quot;
ant clean

echo &quot;=================================&quot;
echo &quot;  Build&quot;
echo &quot;=================================&quot;

if ant all-tests; then
    echo &quot;WIN&quot;
    DISPLAY=&quot;:0.0&quot; xsetroot -solid black
else
    echo &quot;FAIL&quot;
    DISPLAY=&quot;:0.0&quot; xsetroot -solid red
    killall rhythmbox
    mplayer -really-quiet /usr/share/sounds/ubuntu/stereo/dialog-error.ogg &gt; /dev/null 2&gt; /dev/null
fi
</pre>
<p>Insert whatever it needs to draw your attention in the &#8220;fail&#8221; block. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Footnotes</strong><br />
<sup>1</sup> I regularly fall for this one. Eclipse doesn&#8217;t check it, and sometimes I just forget to hit Ctrl-Shift-O after cleaning up.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/655/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=655&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/11/10/lightweight-continuous-integration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/11/bodo.png" medium="image">
			<media:title type="html">Bodo baggert</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/11/webstatus1.png" medium="image">
			<media:title type="html">Web based build status indicator</media:title>
		</media:content>
	</item>
		<item>
		<title>Grr is now part of the GNUstep Application Project</title>
		<link>http://gnoack.wordpress.com/2009/10/16/grr-is-now-part-of-the-gnustep-application-project/</link>
		<comments>http://gnoack.wordpress.com/2009/10/16/grr-is-now-part-of-the-gnustep-application-project/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 09:23:17 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[GNUstep]]></category>
		<category><![CDATA[gap]]></category>
		<category><![CDATA[grr]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[rss reader]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=641</guid>
		<description><![CDATA[
I&#8217;m happy to announce that the Grr RSS Reader application is now part of the GNUstep Application Project (GAP).
Riccardo Mottola&#8217;s announcement: http://multixden.blogspot.com/2009/10/grr-rss-to-go-on-gnustep.html
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=641&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div align="right"><img src="http://gnoack.files.wordpress.com/2009/10/grr-icon.png?w=48&#038;h=48" alt="Grr RSS Reader" title="Grr RSS Reader" width="48" height="48" class="size-full wp-image-643" /></div>
<p>I&#8217;m happy to announce that the Grr RSS Reader application is now part of the <a href="http://gap.nongnu.org/">GNUstep Application Project (GAP)</a>.</p>
<div id="attachment_642" class="wp-caption aligncenter" style="width: 610px"><a href="http://multixden.blogspot.com/2009/10/grr-rss-to-go-on-gnustep.html"><img src="http://gnoack.files.wordpress.com/2009/10/letux_grr.png?w=600&#038;h=359" alt="Grr running on the Letux 400 netbook. -- Image shamelessly copied from Riccardo Mottola&#39;s weblog :-)" title="Grr running on the Letux 400 netbook." width="600" height="359" class="size-full wp-image-642" /></a><p class="wp-caption-text">Grr running on the Letux 400 netbook. -- Image shamelessly copied from Riccardo Mottola's weblog <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  (Click!)</p></div>
<p>Riccardo Mottola&#8217;s announcement: <a href="http://multixden.blogspot.com/2009/10/grr-rss-to-go-on-gnustep.html">http://multixden.blogspot.com/2009/10/grr-rss-to-go-on-gnustep.html</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/641/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=641&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/10/16/grr-is-now-part-of-the-gnustep-application-project/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/10/grr-icon.png" medium="image">
			<media:title type="html">Grr RSS Reader</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/10/letux_grr.png" medium="image">
			<media:title type="html">Grr running on the Letux 400 netbook.</media:title>
		</media:content>
	</item>
		<item>
		<title>Garbage Collectors</title>
		<link>http://gnoack.wordpress.com/2009/10/08/garbage-collectors/</link>
		<comments>http://gnoack.wordpress.com/2009/10/08/garbage-collectors/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 20:31:55 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[collection]]></category>
		<category><![CDATA[garbage]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[stop-and-copy]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=622</guid>
		<description><![CDATA[
A great introduction to garbage collectors: &#8220;Storage Management, cont&#8217;d&#8221; (Paul Hilfinger). It was fun to figure out how to implement this. Just a short link, I didn&#8217;t want this to get lost in my twitter stream.  
More links:

Course Homepage (University of Berkeley, CS61B)

Podcast (Get lecture 41.)


Lessons learned: My first C program with a void***. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=622&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://gnoack.files.wordpress.com/2009/10/garbage.png?w=116&#038;h=108" alt="Garbage. I need to illustrate more. :-)" title="Garbage" width="116" height="108" class="alignright size-full wp-image-631" /><br />
A great introduction to garbage collectors: <a href="http://webcast.berkeley.edu/media/common/media/13cc7c47-a75e-45f2-9396-014bfff046b0_opencast_video_itunes-wcb.mp4">&#8220;Storage Management, cont&#8217;d&#8221;</a> (Paul Hilfinger). It was fun to figure out how to implement this. Just a short link, I didn&#8217;t want this to get lost in my twitter stream. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>More links:</p>
<ul>
<li><a href="http://inst.eecs.berkeley.edu/~cs61b/fa09/">Course Homepage (University of Berkeley, CS61B)</a>
</li>
<li><a href="http://webcast.berkeley.edu/media/common/rss/Computer_Science_61B_Fall_2008_Video__webcast.rss">Podcast</a> (Get lecture 41.)
</li>
</ul>
<p>Lessons learned: My first C program with a <code>void***</code>. Should have used more unions. Just about 200 lines of C, a working stop-and-copy garbage collector. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  A fun hack, but hard to test. It&#8217;s probably buggy. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/622/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=622&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/10/08/garbage-collectors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://webcast.berkeley.edu/media/common/media/13cc7c47-a75e-45f2-9396-014bfff046b0_opencast_video_itunes-wcb.mp4" length="131890468" type="video/mp4" />
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/10/garbage.png" medium="image">
			<media:title type="html">Garbage</media:title>
		</media:content>
	</item>
		<item>
		<title>Subversion-aware bash prompts</title>
		<link>http://gnoack.wordpress.com/2009/10/06/svn-bash-prompts/</link>
		<comments>http://gnoack.wordpress.com/2009/10/06/svn-bash-prompts/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 13:06:11 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trick]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=615</guid>
		<description><![CDATA[This is a handy trick to see whether you&#8217;re in a directory managed by version control or not.

To enable this prompt, I use the following code snippet (in my .bashrc file):

pimpmyprompt() {
  if test -d `pwd`/.svn ; then
    pwd &#124; sed -e &#34;s#^$HOME/*# #&#34; -e &#34;s#/.*\$##&#34;
  fi
}

export PS1=&#34;\u\e[0;32m\$(pimpmyprompt)\e[m:\w$ &#34;

Note: This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=615&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This is a handy trick to see whether you&#8217;re in a directory managed by version control or not.<br />
<a href="http://gnoack.files.wordpress.com/2009/10/shell.png"><img src="http://gnoack.files.wordpress.com/2009/10/shell.png?w=347&#038;h=158" alt="shell" title="shell" width="347" height="158" class="aligncenter size-full wp-image-616" /></a></p>
<p>To enable this prompt, I use the following code snippet (in my .bashrc file):</p>
<pre class="brush: bash;">
pimpmyprompt() {
  if test -d `pwd`/.svn ; then
    pwd | sed -e &quot;s#^$HOME/*# #&quot; -e &quot;s#/.*\$##&quot;
  fi
}

export PS1=&quot;\u\e[0;32m\$(pimpmyprompt)\e[m:\w$ &quot;
</pre>
<p>Note: This will always print the name of the first path component after $HOME, which is not necessarily a SVN working copy.</p>
<blockquote><p>
<strong>Update:</strong> Also have a look at <a href="http://amazing-development.com/">Frank&#8217;s</a> <a href="http://gnoack.wordpress.com/2009/10/06/svn-bash-prompts/#comment-2769">hint in the comments</a>, which looks quite useful for when the customizations start to grow. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p></blockquote>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/615/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=615&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/10/06/svn-bash-prompts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/10/shell.png" medium="image">
			<media:title type="html">shell</media:title>
		</media:content>
	</item>
		<item>
		<title>Authentification tricks with htaccess</title>
		<link>http://gnoack.wordpress.com/2009/09/26/authentification-tricks-with-htaccess/</link>
		<comments>http://gnoack.wordpress.com/2009/09/26/authentification-tricks-with-htaccess/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 21:28:57 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[priority]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=608</guid>
		<description><![CDATA[Here&#8217;s a neat trick with htaccess files: The page on my diploma thesis should be available to everyone within my university subnet, and to selected people from outside, who may authenticate using usernames and passwords.
This .htaccess file seems to work for it:
AuthUserFile &#34;/home/guenther/htpasswd&#34;
AuthName &#34;Only visible from the TU Kaiserslautern subnet or with username (ask me [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=608&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Here&#8217;s a neat trick with htaccess files: The page on my diploma thesis should be available to everyone within my university subnet, and to selected people from outside, who may authenticate using usernames and passwords.</p>
<p>This .htaccess file seems to work for it:</p>
<pre class="brush: plain;">AuthUserFile &quot;/home/guenther/htpasswd&quot;
AuthName &quot;Only visible from the TU Kaiserslautern subnet or with username (ask me for it)&quot;
AuthType Basic

Satisfy any

order deny,allow
deny from all
allow from 131.246.

Require valid-user
</pre>
<p>From the outside, you&#8217;re asked for a password, from inside the subnet, you can see it without password. Works. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/608/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=608&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/09/26/authentification-tricks-with-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Strict Architectural Documentation</title>
		<link>http://gnoack.wordpress.com/2009/09/03/strict-architectural-documentation/</link>
		<comments>http://gnoack.wordpress.com/2009/09/03/strict-architectural-documentation/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 22:44:38 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=592</guid>
		<description><![CDATA[Ralph Johnson (Yes, from the Gang of Four) writes in &#8220;Comment on a comment on 4+1 views&#8221;:
&#8220;The book Documenting Software Architectures: Views and Beyond is a great source of ideas for different viewpoints.  If you take the book literally, however, you&#8217;ll write bloated documentation.   So, don&#8217;t take it literally.  Use it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=592&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ralph Johnson (Yes, from the <a href="http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612">Gang of Four</a>) writes in &#8220;Comment on a comment on 4+1 views&#8221;:</p>
<blockquote><p>&#8220;The book <a href="http://www.amazon.com/Documenting-Software-Architectures-Views-Beyond/dp/0201703726">Documenting Software Architectures: Views and Beyond</a> is a great source of ideas for different viewpoints.  If you take the book literally, however, you&#8217;ll write bloated documentation.   So, don&#8217;t take it literally.  Use it to jog your creativity.  It is the only book on software architecture documentation that I know of, hence the best.&#8221;</p></blockquote>
<p>Yes, this sounds obvious. Too obvious to mention, you think? <span id="more-592"></span> I don&#8217;t think so. <strong>Take a look at the secondary literature</strong> that references this book and judge for yourself. (I won&#8217;t publicly speak bad of people, so there&#8217;s no link. Come ask me.)</p>
<div style="background:#FFCC99;padding:5px;"><strong>Günther&#8217;s theory of judging books on software architecture:</strong> To judge a book on Software Engineering or Software Architecture, <strong>evaluate the thoughtfulness of the foreword</strong>. Is the goal to build software &#8212; or is it to follow a process?</div>
<p><strong>Example:</strong> The aforementioned SEI book on architectural documentation <a href="http://books.google.com/books?id=ASc9HYPkr4sC&amp;lpg=PP1&amp;dq=Documenting%20Software%20Architectures&amp;pg=PR26#v=onepage&amp;q=&amp;f=false">says in its preface (p xxvi)</a>:<br />
<blockquote>&#8220;The goal of this book is to help you decide what information about an architecture is important and to provide <em>guidelines, notations and examples</em> to capturing it.&#8221;</p></blockquote>
<p>So actually, the intent was not actually to make strict rules for creating documentation. It&#8217;s a pity that the chapters with the actual documentation strategies mostly forget to remind you of that.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/592/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/592/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/592/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/592/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/592/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/592/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/592/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/592/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/592/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/592/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=592&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/09/03/strict-architectural-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Software Craftsmanship</title>
		<link>http://gnoack.wordpress.com/2009/08/05/software-craftsmanship/</link>
		<comments>http://gnoack.wordpress.com/2009/08/05/software-craftsmanship/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 13:03:48 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Software Craftsmanship]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=581</guid>
		<description><![CDATA[Software Craftsmanship: While sounding really nice at first glance, I really don&#8217;t see where to draw the boundary between a software craftsman and anyone else working in the industry. Of course the things listed in the Software Craftsmanship Manifesto (&#8220;Not only X, but also Y.&#8221;) are all good things &#8482;. However, improving on one thing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=581&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Software Craftsmanship: While sounding really nice at first glance, I really don&#8217;t see where to draw the boundary between a software craftsman and anyone else working in the industry. Of course the things listed in the <a href="http://manifesto.softwarecraftsmanship.org/">Software Craftsmanship Manifesto</a> (&#8220;Not only X, but also Y.&#8221;) are all good things &#8482;. However, improving on one thing always comes at the price of getting worse at something else. So at what cost does it come? I like the wording of the <a href="http://agilemanifesto.org/">Agile manifesto</a> much more (&#8220;We value X over Y.&#8221;). I&#8217;m not surprised that the whole Software Craftsmanship idea is so vague and romaticized.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/581/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/581/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/581/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/581/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/581/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=581&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/08/05/software-craftsmanship/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Software Engineering: Come and Gone?</title>
		<link>http://gnoack.wordpress.com/2009/08/01/software-engineering-come-and-gone/</link>
		<comments>http://gnoack.wordpress.com/2009/08/01/software-engineering-come-and-gone/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 12:59:20 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[DeMarco]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=574</guid>
		<description><![CDATA[via Heise: Tom DeMarco questions the idea of Software Engineering:
My early metrics book, Controlling Software Projects: Management, Measurement, and Estimation (Prentice Hall/Yourdon Press, 1982), played a role in the way many budding software engineers quantified work and planned their projects. In my reflective mood, I’m wondering, was its advice correct at the time, is it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=574&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>via <a href="http://www.heise.de/newsticker/Tom-deMarco-sieht-Ende-des-Software-Engineering--/meldung/142540">Heise</a>: Tom DeMarco questions the idea of Software Engineering:</p>
<blockquote><p>My early metrics book, Controlling Software Projects: Management, Measurement, and Estimation (Prentice Hall/Yourdon Press, 1982), played a role in the way many budding software engineers quantified work and planned their projects. In my reflective mood, I’m wondering, was its advice correct at the time, is it still relevant, and do I still believe that metrics are a must for any successful software development effort? My answers are no, no, and no.
</p></blockquote>
<p>In your face, quoters of &#8220;You can&#8217;t control what you can&#8217;t meaure&#8221;!</p>
<p><a href="http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf">http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf</a></p>
<p>Also see <a href="http://www.sigs.de/publications/os/2008/06/interview_DeMarco_OS_06_08.pdf">&#8220;Software Engineering ist eine Idee, deren Zeit gekommen und auch wieder gegangen ist.&#8221;</a> (in german). This is an interview with Tom DeMarco where he says basically the same.</p>
<p>An interesting read.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/574/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=574&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/08/01/software-engineering-come-and-gone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Trapped in the internets</title>
		<link>http://gnoack.wordpress.com/2009/07/11/trapped-in-the-internets/</link>
		<comments>http://gnoack.wordpress.com/2009/07/11/trapped-in-the-internets/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 22:46:45 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[internets]]></category>
		<category><![CDATA[lolcats]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=559</guid>
		<description><![CDATA[Yes, I do like Test Driven Development. It works for me.
What doesn&#8217;t work for me are articles like this one by Tim Bray1, or rather their endless number of contradicting comments on what TDD and its properties are. You think you know what TDD is? Time to meet an infinite number of monkeys who have [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=559&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Yes, I do like Test Driven Development. It works for me.</p>
<p>What doesn&#8217;t work for me are articles like <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy">this one by Tim Bray</a><sup>1</sup>, or rather their endless number of contradicting comments on what TDD and its properties are. You think you know what TDD is? Time to meet an infinite number of monkeys who have understood it in a completely different way. Or haven&#8217;t they?</p>
<p>Some random opinions (with remarks by me):</p>
<ul>
<li>If your tests are too hard to make, you know that your API is too complicated. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1245840338.831213">[link]</a></li>
<li>TDD doesn&#8217;t make sense in small projects. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1245844738.194051">[link]</a></li>
<li>Never use mocks unless you&#8217;re sure their interface is absolutely stable. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1245844783.482499">[link]</a></li>
<li>TDD doesn&#8217;t help when people don&#8217;t do it properly. It&#8217;s hard to introduce tests when the code base grew too large without them. This is a major weakness in the TDD philosophy. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1245843437.927927">[link]</a></li>
<li>TDD is too expensive. We have had <a href="http://www.catb.org/~esr/jargon/html/B/bit-rot.html">code rot</a> in our automated tests. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1245857195.196803">[link]</a> (When doing TDD, I usually run tests about ten times in each commit cycle. How can your test code rot?)</li>
<li>Don&#8217;t fall for the seductive TDD trap! In practice, everybody hates it, even if they first thought they liked it. TDD sucks away your soul and desire. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1245864049.138272">[link]</a> (I&#8217;m not paraphrasing this last sentence.)</li>
<li>TDD is inpractical for anything above bowling card calculators and stacks. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1246033671.218682">[link]</a> (Note to self: I&#8217;m waiting for the blog post explaining this <a href="http://beust.com/weblog/">on this weblog</a>.)</li>
<li>This is not TDD. TDD is Test Driven *Design*. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1245868995.635586">[link]</a> (Hey, why don&#8217;t you get a copy of the <a href="http://books.google.de/books?id=gFgnde_vwMAC&amp;dq=test+driven+development+by+example&amp;printsec=frontcover&amp;source=bn&amp;hl=de&amp;ei=XwZZSrbUGYeQmAOopbjdCQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=4">Test Driven Development by <strong>Example</strong></a> book?)</li>
<li>My tests are often copied from the <a href="http://en.wikipedia.org/wiki/REPL">REPL</a> that I use anyway for my exploratory coding. It doesn&#8217;t feel hard to me to write them. <a href="http://www.tbray.org/ongoing/When/200x/2009/06/23/TDD-Heresy#c1246052308.992566">[link]</a></li>
</ul>
<p>I like the comment about the REPL. This is an observation that I also made. However, would it help if C++ had a REPL? :-&gt;</p>
<p>I cannot escape the feeling that these commenters come from very different backgrounds. Who can I trust there? Whose background is closest to mine? Can these comments help anyone without this context information at all?</p>
<p>Or am I maybe just naive to assume I could learn something from discussions on the internet? <strong>NO, don&#8217;t comment on this yet!</strong> I just realized that I probably am. Never mind. I go read TDD by Example again, that&#8217;ll help me more.</p>
<div style="text-align:center;"><img class="size-full wp-image-565" src="http://gnoack.files.wordpress.com/2009/07/expert.png?w=258&#038;h=223" alt="I'm bad at drawing cats." width="258" height="223" /></div>
<p><sup>1</sup>Wow, this guy even has his own Wikipedia article. I didn&#8217;t know him before, though, and I also can&#8217;t tell you who it is. Everything looks important when you got the link from the Delicious social bookmarking service&#8217;s home page.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/559/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=559&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/07/11/trapped-in-the-internets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/07/expert.png" medium="image">
			<media:title type="html">I'm bad at drawing cats.</media:title>
		</media:content>
	</item>
		<item>
		<title>Sack Reis fällt um</title>
		<link>http://gnoack.wordpress.com/2009/06/02/sack-reis-fallt-um/</link>
		<comments>http://gnoack.wordpress.com/2009/06/02/sack-reis-fallt-um/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 22:43:20 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Bilder]]></category>
		<category><![CDATA[Blogs und Geblubber]]></category>
		<category><![CDATA[Deutsche]]></category>
		<category><![CDATA[Fachschaftler]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[comic]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[reis]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=551</guid>
		<description><![CDATA[
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=551&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://gnoack.files.wordpress.com/2009/06/reis1.png"><img src="http://gnoack.files.wordpress.com/2009/06/reis1.png?w=500&#038;h=1602" alt="Sack Reis fällt um" title="Sack Reis fällt um" width="500" height="1602" class="aligncenter size-full wp-image-555" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/551/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=551&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/06/02/sack-reis-fallt-um/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/06/reis1.png" medium="image">
			<media:title type="html">Sack Reis fällt um</media:title>
		</media:content>
	</item>
		<item>
		<title>Photos from Munich</title>
		<link>http://gnoack.wordpress.com/2009/05/23/photos-from-munich/</link>
		<comments>http://gnoack.wordpress.com/2009/05/23/photos-from-munich/#comments</comments>
		<pubDate>Sat, 23 May 2009 22:43:00 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=530</guid>
		<description><![CDATA[A few images from the last weeks. The Bavaria at the Theresienwiese is very large and can be climbed up. I sat in her head together with two other people and looked out.  
I also saw the surfers in the English Garden, Anne!  
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=530&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A few images from the last weeks. The Bavaria at the Theresienwiese is very large and can be climbed up. I sat in her head together with two other people and looked out. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I also saw the surfers in the English Garden, Anne! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030539/' title='LMU, Lange Nacht der Universität (1)'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p10305391.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="LMU, Lange Nacht der Universität (1)" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030542/' title='LMU, Lange Nacht der Universität (2)'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p1030542.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="LMU, Lange Nacht der Universität (2)" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030545/' title='Hirschgarten'><img width="72" height="96" src="http://gnoack.files.wordpress.com/2009/05/p1030545.jpg?w=72&#038;h=96" class="attachment-thumbnail" alt="" title="Hirschgarten" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030548/' title='Europäisches Patentamt'><img width="128" height="96" src="http://gnoack.files.wordpress.com/2009/05/p1030548.jpg?w=128&#038;h=96" class="attachment-thumbnail" alt="" title="Europäisches Patentamt" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030550/' title='Theresienwiese'><img width="128" height="96" src="http://gnoack.files.wordpress.com/2009/05/p1030550.jpg?w=128&#038;h=96" class="attachment-thumbnail" alt="" title="Theresienwiese" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030552/' title='Bavaria an der Theresienwiese'><img width="128" height="96" src="http://gnoack.files.wordpress.com/2009/05/p1030552.jpg?w=128&#038;h=96" class="attachment-thumbnail" alt="" title="Bavaria an der Theresienwiese" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030561/' title='Polizei am Hofgarten'><img width="128" height="96" src="http://gnoack.files.wordpress.com/2009/05/p1030561.jpg?w=128&#038;h=96" class="attachment-thumbnail" alt="" title="Polizei am Hofgarten" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030563/' title='Ente abends im Hofgarten'><img width="128" height="96" src="http://gnoack.files.wordpress.com/2009/05/p1030563.jpg?w=128&#038;h=96" class="attachment-thumbnail" alt="" title="Ente abends im Hofgarten" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030566/' title='Monopteros im Englischen Garten'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p1030566.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="Monopteros im Englischen Garten" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030568/' title='Schwimmer im Englischen Garten'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p1030568.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="Schwimmer im Englischen Garten" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030573/' title='Bongotrommler im Englischen Garten'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p1030573.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="Bongotrommler im Englischen Garten" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030578/' title='Blaskapelle im Englischen Garten'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p1030578.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="Blaskapelle im Englischen Garten" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030580/' title='Surfer im Englischen Garten'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p1030580.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="Surfer im Englischen Garten" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030582/' title='Starnberger See'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p1030582.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="Starnberger See" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030595/' title='Schwan am Starnberger See'><img width="54" height="96" src="http://gnoack.files.wordpress.com/2009/05/p1030595.jpg?w=54&#038;h=96" class="attachment-thumbnail" alt="" title="Schwan am Starnberger See" /></a>
<a href='http://gnoack.wordpress.com/2009/05/23/photos-from-munich/p1030609/' title='Auch am Starnberger See'><img width="128" height="72" src="http://gnoack.files.wordpress.com/2009/05/p1030609.jpg?w=128&#038;h=72" class="attachment-thumbnail" alt="" title="Auch am Starnberger See" /></a>

  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/530/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=530&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/05/23/photos-from-munich/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Puzzle: A variation of the Visitor Pattern</title>
		<link>http://gnoack.wordpress.com/2009/05/15/a-return-value-variation-of-the-visitor-pattern/</link>
		<comments>http://gnoack.wordpress.com/2009/05/15/a-return-value-variation-of-the-visitor-pattern/#comments</comments>
		<pubDate>Fri, 15 May 2009 10:00:20 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pattern]]></category>
		<category><![CDATA[visitor]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=513</guid>
		<description><![CDATA[Update: Solution posted, see below.  
The visitor pattern allows to structure programs in conventional OO languages such that a method implementation is chosen based on the type of two arguments instead of just the receiver of a message (a.k.a. the object which a method is called on).
In one of the exercises to the &#8220;advanced [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=513&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><blockquote><p><strong>Update:</strong> Solution posted, see below. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></blockquote>
<p>The <a href="http://home.earthlink.net/~huston2/dp/visitor.html">visitor pattern</a> allows to structure programs in conventional OO languages such that a method implementation is chosen based on the type of <strong>two</strong> arguments instead of just the receiver of a message (a.k.a. the object which a method is called on).</p>
<p>In one of the exercises to the <a href="http://softech.informatik.uni-kl.de/Homepage/FASOOPSS09">&#8220;advanced aspects of OO programming&#8221;</a> class, we had to write a little program with an &#8220;Expression&#8221; hierarchy and an expression-evaluating visitor class, just like in this illustration:</p>
<p><a href="http://gnoack.files.wordpress.com/2009/05/visitor-example.jpg"><img src="http://gnoack.files.wordpress.com/2009/05/visitor-example.jpg?w=570&#038;h=662" alt="visitor-example" title="visitor-example" width="570" height="662" class="aligncenter size-full wp-image-520" /></a></p>
<p>The solution to this exercise as presented to us was to keep track of the current ongoing evaluation in the visitor by using a stack. So, each visit method looked something like this:</p>
<pre class="brush: ruby;">
def visitMul(mulExp)
  mulExp.leftSubExpression.accept(self)
  mulExp.rightSubExpression.accept(self)
  @stack.push(@stack.pop(), @stack.pop())
end
</pre>
<p>The important invariant is: When accept or one of the visit methods are called for an expression instance, the overall effect is pushing the result of that expression&#8217;s evaluation onto the stack. Consequently, by using accept recursively, the subexpressions&#8217; values can be popped from the stack afterwards.</p>
<p>That solution is not very elegant. There&#8217;s a variation of the visitor pattern that solves the problem without using an explicit stack. Can you guess how it works?</p>
<blockquote><p>
<strong>Update:</strong> For the solution, see the third comment.
</p></blockquote>
<blockquote><p>
<strong>Update:</strong> Here&#8217;s quite a prominent example where this is used: <a href="http://java.sun.com/javase/6/docs/jdk/api/javac/tree/com/sun/source/tree/TreeVisitor.html">TreeVisitor in the javac compiler</a>. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p></blockquote>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/513/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=513&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/05/15/a-return-value-variation-of-the-visitor-pattern/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/05/visitor-example.jpg" medium="image">
			<media:title type="html">visitor-example</media:title>
		</media:content>
	</item>
		<item>
		<title>Morning in Munich</title>
		<link>http://gnoack.wordpress.com/2009/05/09/morning-in-munich/</link>
		<comments>http://gnoack.wordpress.com/2009/05/09/morning-in-munich/#comments</comments>
		<pubDate>Sat, 09 May 2009 11:27:29 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fotos]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[munich]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=508</guid>
		<description><![CDATA[Fantastic weather for bicycling to one of the parks. More photos are about to come soon. Be prepared!  
Best wishes from Munich!  
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=508&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div id="attachment_507" class="wp-caption aligncenter" style="width: 310px"><a href="http://gnoack.files.wordpress.com/2009/05/p1030533.jpg"><img src="http://gnoack.files.wordpress.com/2009/05/p1030533.jpg?w=300&#038;h=168" alt="Morning in Munich" title="Mornin in Munich" width="300" height="168" class="size-medium wp-image-507" /></a><p class="wp-caption-text">Morning in Munich</p></div>
<p>Fantastic weather for bicycling to one of the parks. More photos are about to come soon. Be prepared! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Best wishes from Munich! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/508/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=508&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/05/09/morning-in-munich/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://gnoack.files.wordpress.com/2009/05/p1030533.jpg?w=300" medium="image">
			<media:title type="html">Mornin in Munich</media:title>
		</media:content>
	</item>
		<item>
		<title>Functionality on Different Levels of Abstraction</title>
		<link>http://gnoack.wordpress.com/2009/05/04/functionality-on-different-levels-of-abstraction/</link>
		<comments>http://gnoack.wordpress.com/2009/05/04/functionality-on-different-levels-of-abstraction/#comments</comments>
		<pubDate>Mon, 04 May 2009 21:55:46 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[etoile]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[LLVM]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[Pragmatic Smalltalk]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming-language-design]]></category>
		<category><![CDATA[Smalltalk]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=498</guid>
		<description><![CDATA[Warning: This article may contain trace amounts of three different programming languages, compiler internals, object oriented method dispatchers, bitwise binary arithmetic on pointer variables and term rewriting systems (which are cool).


Update: To put this first, dispatching strategies similar to the one proposed here have been taken into account in the implementation of Pragmatic Smalltalk / [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=498&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><blockquote><p><strong>Warning:</strong> This article may contain trace amounts of three different programming languages, compiler internals, object oriented method dispatchers, bitwise binary arithmetic on pointer variables and term rewriting systems (which are cool).</p></blockquote>
<p><span id="more-498"></span></p>
<blockquote><p>
<b>Update:</b> To put this first, dispatching strategies similar to the one proposed here have been taken into account in the implementation of Pragmatic Smalltalk / the Etoile LanguageKit. The current implementation that inlines parts of the dispatch into the message sending (calling) method, was chosen to allow for very fast number computations and indeed performs very good in that aspect when compared to other scripting languages. Seen from the &#8220;mathematical operation performance&#8221; perspective, the decision is very reasonable.
</p></blockquote>
<p>The implementation of programming languages can probably be considered a comparably mature field. For a few months now, I was exceptionally lucky to have the possibility to follow the development of such a language implementation from the first row. During the development of David&#8217;s LanguageKit framework (and the accompanying Pragmatic Smalltalk language), there&#8217;s one specific design lesson that I believe to be very important:</p>
<blockquote><p>Every piece of functionality can be implemented on very different levels of abstraction. Think carefully where it belongs.</p></blockquote>
<p><strong>An example:</strong> In Smalltalk implementations, <code>ifTrue:</code> messages to objects aren&#8217;t dispatched but simply converted into a simple conditional branch on assembler or bytecode level. The straightforward way to implement this would be to change the code that generates byte code message sends[1] and make it produce a conditional branch instead.</p>
<p>However, LanguageKit takes a much more elegant (imho) solution there, which decouples the implementation of message sends from its optimization. Before a program&#8217;s AST is converted into byte code, special optimizations can be done on the AST. An optimization on the AST is similar to a <a href="http://en.wikipedia.org/wiki/Rewriting">term rewriting rule</a>[2]: When a specific kind of AST node is encountered in the AST, it can be replaced by whatever other AST node the rule likes. So, the <a href="http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/LKPlugins/LowerIfTrue/transform.m?rev=4437&amp;view=auto">LowerIfTrue</a> rule can be loaded into the compiler, which replaces LKMessageSend nodes with LKIfStatement nodes if the message send nodes send <code>ifTrue:</code>-like messages.</p>
<p>So this basically changed LanguageKit in such a way that:</p>
<ul>
<li>The code on byte code generation level can stay very straightforward and clear. No exceptions and corner cases for ifTrue: and friends there.</li>
<li>There&#8217;s a mechanism for pluggable rules (&#8220;LKPlugins&#8221;) which change the AST and in which terms the <code>ifTrue:</code> optimization is implemented.</li>
<li>Minor drawback: LanguageKit needs to support the additional LKIfStatement AST node, which is otherwise not required for Smalltalk.</li>
<li>Big advantage: The <code>ifTrue:</code> optimization is <em>now implemented in terms of an AST transformation</em>. This way, you <em>don&#8217;t need to understand the internals</em> of the specific byte code language. (Maintainability!)</li>
</ul>
<p>Just like in this example, it looks to me that it&#8217;s a general design principle that you should implement things on the highest abstraction level possible. In dynamic languages like Pragmatic Smalltalk and Objective-C, this is ultimately even <i>outside the actual compiler</i>: In the runtime system. (Note that Objective-C&#8217;s <a href="http://svn.gna.org/viewcvs/gnustep/libs/libobjc/trunk/sendmsg.c?rev=27082&amp;view=auto">objc_msg_sendv</a> is implemented in its runtime, not in the compiler.)</p>
<p>In that respect, I&#8217;m still not entirely happy with <a href="http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/LanguageKit/CodeGen/CodeGenLexicalScope.cpp?rev=4585&amp;view=auto">CodeGenLexicalScope::MessageSend</a> in LanguageKit: It&#8217;s a design philosophy of Pragmatic Smalltalk to use the Objective-C runtime and become a &#8220;native citizen&#8221; there. So it&#8217;s obviously a good idea to call the Objective-C method dispatcher. However, unlike Objective-C, everything is an object in Pragmatic Smalltalk, including integers, leading to the usual dynamic language small-integer pointer hackery[3]. Because of this, extra caution must be applied to avoid sending Objective-C messages to small integers via the <code>objc_msg_sendv</code>. To be more precise, it needs to be checked whether that&#8217;s the case. If the receiver is a small int, a specific different type of dispatch is done.</p>
<p>I don&#8217;t understand much about LLVM, but looking at <a href="http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/LanguageKit/CodeGen/CodeGenLexicalScope.cpp?rev=4585&amp;view=auto">CodeGenLexicalScope::MessageSend</a> (I assume you now also take a look at it), I&#8217;d guess that this can be implemented more elegantly by simply calling a specifically written <code>pragmaticst_msg_sendv</code> dispatcher, which is written in plain old C and relies on <code>objc_msg_sendv</code> in the generic case. This way, there wouldn&#8217;t be so many basic blocks (so many generated byte code operations) everytime a Pragmatic Smalltalk program calls a method =&gt; <code>pragmaticst_msg_sendv</code> can stay in cache much longer than these basic blocks, less generated code. But the biggest advantage to me is, it&#8217;s understandable without understanding LLVM. (Maintainability!)</p>
<p>The dispatch process would then be explicitly two-staged. However, looking at the current implementation, it currently <strong>is</strong> two-staged anyway. (This becomes clear if you refactor the generated byte code out into a dispatch function (in your head <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).) The basic observation is, Pragmatic Smalltalk can&#8217;t live <strong>directly</strong> in the Objective-C runtime, there has to be a wrapped-around dispatch mechanism which handles small integers. (It doesn&#8217;t matter if you call it like this or not.)</p>
<p>An additional benefit would be the following: <code>pragmaticst_msg_sendv</code> could dispatch to a special <code>NilClass</code>es&#8217; instance methods when the receiver is <code>nil</code>, thereby allowing to have an <code>isNil</code> method[4].</p>
<p>It&#8217;s interesting how software evolves sometimes. Sometimes you&#8217;re just a tiny step away from a familiar concept, then the code collapses to something that looks trivial, but noone can see any more how large it has been before. The big paradoxon: The more reflective work you put into it, the smaller it gets[5].</p>
<p><strong>References</strong><br />
<strong>[1]</strong> In this case these are actually LLVM language message sends.<br />
<strong>[2]</strong> I recently realized how cool these are, now I start seeing them everywhere. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<strong>[3]</strong> A reference to an integer i below 2<sup>31</sup> is not a pointer to a real memory location but (i&lt;&lt;1)+1. The lowest significant bit indicates that it&#8217;s a small integer. No collisions with real pointers because these usually have word-alignment.<br />
<strong>[4]</strong> For that to work with the type inference that checks whether a variable can be a small int, the dispatch process would actually need to be three-staged, like (1) dispatch to smallints (2) dispatch to nil (3) dispatch to ObjC objects. Objective-C message sends enter the dispatch process at stage (3), Smalltalk message sends that can&#8217;t be small ints enter at stage (2), other Smalltalk message sends need to start at stage (1).<br />
<strong>[5]</strong> Note the fatal negation: The less reflective work you put into it, the bigger it will become. The bigger it is, the better it looks (to your non-technical boss?).</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/498/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=498&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/05/04/functionality-on-different-levels-of-abstraction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Bohemian Rhapsody on Old Hardware</title>
		<link>http://gnoack.wordpress.com/2009/04/21/bohemian-rhapsody-on-old-hardware/</link>
		<comments>http://gnoack.wordpress.com/2009/04/21/bohemian-rhapsody-on-old-hardware/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 08:55:39 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[films]]></category>
		<category><![CDATA[fun]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=494</guid>
		<description><![CDATA[via Slashdot: Even though it&#8217;s almost certain Sabine will finally accuse me of supreme uncurable nerdiness this time, I just cannot resist to post this. Enjoy this video of Bohemian Rhapsody played on old computer hardware. Wow! Breathtaking!  

       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=494&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://hardware.slashdot.org/article.pl?sid=09/04/20/2341238">via</a> Slashdot: Even though it&#8217;s almost certain Sabine will finally accuse me of supreme uncurable nerdiness this time, I just cannot resist to post this. Enjoy this video of Bohemian Rhapsody played on old computer hardware. Wow! Breathtaking! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><span style="text-align:center; display: block;"><a href="http://gnoack.wordpress.com/2009/04/21/bohemian-rhapsody-on-old-hardware/"><img src="http://img.youtube.com/vi/Ht96HJ01SE4/2.jpg" alt="" /></a></span></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/494/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=494&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/04/21/bohemian-rhapsody-on-old-hardware/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/Ht96HJ01SE4/2.jpg" medium="image" />
	</item>
		<item>
		<title>Live music and graphics programming</title>
		<link>http://gnoack.wordpress.com/2009/04/18/live-music-and-graphics-programming/</link>
		<comments>http://gnoack.wordpress.com/2009/04/18/live-music-and-graphics-programming/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 13:47:32 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=492</guid>
		<description><![CDATA[Awesome video! (via imagine27, more can be found here.)
Day of the Triffords from Andrew Sorensen on Vimeo.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=492&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Awesome video! (via <a href="http://www.imagine27.com/articles/2009-04-09-010147_live_lisp_art_opengl_synth_sound.html">imagine27</a>, more can be found <a href="http://impromptu.moso.com.au/gallery.html">here</a>.)</p>
<p><a href="http://vimeo.com/2735394">Day of the Triffords</a> from <a href="http://vimeo.com/user1006267">Andrew Sorensen</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/492/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=492&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/04/18/live-music-and-graphics-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Types and Learning</title>
		<link>http://gnoack.wordpress.com/2009/04/12/types-and-learning/</link>
		<comments>http://gnoack.wordpress.com/2009/04/12/types-and-learning/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 20:27:03 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming-language-design]]></category>
		<category><![CDATA[types]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=471</guid>
		<description><![CDATA[Via Michael Feather&#8217;s blog: &#8220;On programming language design&#8221;
I used to think that statically checked languages are better for teaching because they prevent the students from doing obviously stupid things. About two years ago I changed my mind. The students learn much better by doing stupid things than by being told by an oppressive compiler that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=471&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://michaelfeathers.tumblr.com/post/95456691/i-used-to-think-that-statically-checked-languages">Via</a> Michael Feather&#8217;s blog: <a href="http://math.andrej.com/2009/04/11/on-programming-language-design/">&#8220;On programming language design&#8221;</a></p>
<blockquote><p>I used to think that statically checked languages are better for teaching because they prevent the students from doing obviously stupid things. About two years ago I changed my mind. The students learn much better by doing stupid things than by being told by an oppressive compiler that their programs are stupid. So this year I switched to Python. The students are happier, and so am I (because I don’t have to explain that code must be properly indented). Python does not whine all the time. Instead it lets them explore the possibilities, and by discovering which ones crash their programs they seem to understand better how the machine works.
</p></blockquote>
<p>Interesting final words for an article that&#8217;s so much in favor of static types. So according to this, you learn more with a dynamically typed, &#8220;exploratory&#8221; language. If that&#8217;s true, it makes me wonder what&#8217;s better:</p>
<ul>
<li>A language that allows programmers to learn a lot, while having no static types,</li>
<li>or a language with a type system that prevents certain errors while you don&#8217;t learn so much.</li>
</ul>
<p>&#8230;and of course, <em>in which scenarios</em> are they better?</p>
<p>The article is generally an interesting read regarding the topic of <a href="http://en.wordpress.com/tag/programming-language-design/">if-im-ever-going-to-design-a-programming-language</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/471/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=471&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/04/12/types-and-learning/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>It&#8217;s a shame, shame, shame, shame, shame, &#8230;</title>
		<link>http://gnoack.wordpress.com/2009/04/03/its-a-shame-shame-shame-shame-shame/</link>
		<comments>http://gnoack.wordpress.com/2009/04/03/its-a-shame-shame-shame-shame-shame/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 19:30:45 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blame]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming-language-design]]></category>
		<category><![CDATA[shame]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=461</guid>
		<description><![CDATA[SHAME ON ME! And on C, too!
If I&#8217;m ever going to design a programming language, the expression
(index == selected &#38; (totalsize - 1))
is going to translate into
(index == (selected &#38; (totalsize - 1)))
, not into
((index == selected) &#38; (totalsize - 1))
I&#8217;m really ashamed I came up with this kind of optimisation for calculating a modulo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=461&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>SHAME ON ME! And on C, too!</p>
<p>If I&#8217;m ever going to design a programming language, the expression</p>
<p><code>(index == selected &amp; (totalsize - 1))</code></p>
<p>is going to translate into</p>
<p><code>(index == (selected &amp; (totalsize - 1)))</code></p>
<p>, <strong>not</strong> into</p>
<p><code>((index == selected) &amp; (totalsize - 1))</code></p>
<p>I&#8217;m really ashamed I came up with this kind of optimisation for calculating a modulo for a number which is a power of 2 (which the compiler couldn&#8217;t know). When you really optimize for speed on platforms where you still unroll your code by hand, you sometimes lose sight of clarity. (But that&#8217;s not an excuse. Big SVN Blame to myself!) I also should have unit tested this earlier.</p>
<p>Now, time to pass the blame on to C!</p>
<p><span id="more-461"></span></p>
<p>If I&#8217;m ever going to design a programming language, it will also have an interactive interpreter for evaluating expressions. Actually, I tried to test the expression in Python&#8217;s interactive shell, which has a more sensible operator precedence. (Or is it just that it makes a difference between numbers and truth values, unlike C?) I probably would have searched for a few more hours, if Steffen hadn&#8217;t pointed out the issue. (Thanks!)</p>
<p><code>&gt;&gt;&gt; a = 30<br />
&gt;&gt;&gt; b = 30+64<br />
&gt;&gt;&gt; a == b<br />
False<br />
&gt;&gt;&gt; a == (b % 64)<br />
True<br />
&gt;&gt;&gt; a == b &amp; (64-1)<br />
True<br />
&gt;&gt;&gt; c = 31<br />
&gt;&gt;&gt; c == b &amp; (64-1)<br />
False<br />
&gt;&gt;&gt;<br />
</code></p>
<p>Oh, wasted time! The weather was so beautiful today!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/461/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=461&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/04/03/its-a-shame-shame-shame-shame-shame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Bücher, Bücher, Bücher</title>
		<link>http://gnoack.wordpress.com/2009/03/26/bucher-bucher-bucher/</link>
		<comments>http://gnoack.wordpress.com/2009/03/26/bucher-bucher-bucher/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 09:15:33 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Bits und Bytes]]></category>
		<category><![CDATA[Blogs und Geblubber]]></category>
		<category><![CDATA[Deutsche]]></category>
		<category><![CDATA[Kaiserslautern und Kreis]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[fachschaft]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=457</guid>
		<description><![CDATA[Aus aktuellem Anlass ein Beitrag auf Deutsch.
Dominik weist zu recht darauf hin, dass die empfohlene Literatur im Hitch Hiker, unserem kleinen Infoheftchen für Erstsemester, sowohl quantitativ als auch &#8212; und das ist schlimmer &#8212; qualitativ nachgelassen hat.
So sind mehrere reflektierende und kritische Auseinandersetzungen mit dem eigenen Tun und Handeln als Informatiker ganz stillschweigend und leise [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=457&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Aus aktuellem Anlass ein Beitrag auf Deutsch.</p>
<p><a href="http://erdferkel.supersized.org/archives/453-An-ihren-Buechern-sollt-ihr-sie-erkennen.html">Dominik weist zu recht darauf hin</a>, dass die empfohlene Literatur im Hitch Hiker, unserem kleinen Infoheftchen für Erstsemester, sowohl quantitativ als auch &#8212; und das ist schlimmer &#8212; qualitativ nachgelassen hat.</p>
<p>So sind mehrere reflektierende und kritische Auseinandersetzungen mit dem eigenen Tun und Handeln als Informatiker ganz stillschweigend und leise leider in der Versenkung verschwunden. Doch warum sind sie überhaupt aus der Liste rausgeflogen? Die erschreckende Antwort lautet: Es hat sie niemand mehr gekannt. </p>
<p>Und das ist schade, denn anders als so mancher behaupten mag, handelt es sich nicht bei allem was die Altersgrenze von 30 Jahren überschritten hat, schon gleich um ein Relikt aus grauer Vorzeit. Sind es nicht gerade diese Bücher, die auch noch in 30 Jahren Relevanz besitzen, die es sich heute lohnt zu lesen?</p>
<p>Zurückblickend auf die Dinge die man innerhalb seines Studiums so liest &#8212; und damit meine ich nicht nur die vorlesungsrelevanten Dinge &#8212; was hält denn davon diesem Test stand?</p>
<p>Wäre es nicht gelacht, wenn wir als Fachschaft feststellen müssten, dass jeder einzelne von uns nur Sachen gelesen hat, nach denen in ein paar Jahren kein Hahn mehr kräht?</p>
<p>Gejammer, Gejammer! Zum Ende noch was positives: Wir haben ein sehr schönes Regal in unserer wohlsortierten, wenngleich kaum genutzten Infbib, in dem Bücher stehen, die allerhand technologieunabhängige (und damit tendentiell zeitlosere) Gedanken beinhalten. So manches Buch aus der alten Empfehlungsliste kann dort noch ausgehoben werden, sowie verschiedene andere Kleinode. (Ich erinnere nur an den Gedichtband &#8220;Palmström als Programmierer&#8221;, falls sich daran jemand erinnert. Oktal! Dezimal! Nicht trivial!) Ich fände es schön, wenn wir die Ersties in der E-Woche zumindest mal an diesem Regal vorbeilotsen könnten, zum Beispiel im Rahmen der Uni-Rallye. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/457/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=457&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/03/26/bucher-bucher-bucher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
		<item>
		<title>Note to self: Emacs macros</title>
		<link>http://gnoack.wordpress.com/2009/03/19/note-to-self-emacs-macros/</link>
		<comments>http://gnoack.wordpress.com/2009/03/19/note-to-self-emacs-macros/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 14:21:24 +0000</pubDate>
		<dc:creator>guenthernoack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[emacs]]></category>

		<guid isPermaLink="false">http://gnoack.wordpress.com/?p=447</guid>
		<description><![CDATA[

Shortcut
Meaning


C-x (
starts macro recording


C-x )
finishes macro recording


C-x e
executes a recorded macro


C-u number C-x e
executes the macro number times


Example: C-x ( C-w \ e m p h { C-y } C-x )
This surrounds the selected region with \emph{} (a LaTeX command) and places the cursor after the closing bracket.
References
Also have a look at the Emacs wiki&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=447&subd=gnoack&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><table>
<tr>
<th>Shortcut</th>
<th>Meaning</th>
</tr>
<tr>
<td><code>C-x (</code></td>
<td>starts macro recording</td>
</tr>
<tr>
<td><code>C-x )</code></td>
<td>finishes macro recording</td>
</tr>
<tr>
<td><code>C-x e</code></td>
<td>executes a recorded macro</td>
</tr>
<tr>
<td><code>C-u <i>number</i> C-x e</code></td>
<td>executes the macro <i>number</i> times</td>
</tr>
</table>
<p><strong>Example:</strong> <code>C-x ( C-w \ e m p h { C-y } C-x )</code><br />
This surrounds the selected region with \emph{} (a LaTeX command) and places the cursor after the closing bracket.</p>
<p><strong>References</strong><br />
Also have a look at the <a href="http://www.emacswiki.org/emacs-en/KeyboardMacros">Emacs wiki&#8217;s page on this</a> and that <a href="http://emacs.wordpress.com/2007/01/20/record-play-re-play/">nice article with video tutorial on that weblog on Emacs</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gnoack.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gnoack.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gnoack.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gnoack.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gnoack.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gnoack.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gnoack.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gnoack.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gnoack.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gnoack.wordpress.com/447/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gnoack.wordpress.com&blog=4567339&post=447&subd=gnoack&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://gnoack.wordpress.com/2009/03/19/note-to-self-emacs-macros/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09cace10dc1911965b3d7e14783b90c?s=96&#38;d=identicon" medium="image">
			<media:title type="html">guenthernoack</media:title>
		</media:content>
	</item>
	</channel>
</rss>