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

<channel>
	<title>Space Station Lambda &#187; Software Development</title>
	<atom:link href="http://blog.viridian-project.de/sections/tech/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.viridian-project.de</link>
	<description>Leslie P. Polzer on code, music, literature, design and free software business.</description>
	<lastBuildDate>Wed, 19 May 2010 07:44:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Whoops! Something went wrong. Please try refreshing the page.</title>
		<link>http://blog.viridian-project.de/2009/07/29/whoops-something-went-wrong-please-try-refreshing-the-page/</link>
		<comments>http://blog.viridian-project.de/2009/07/29/whoops-something-went-wrong-please-try-refreshing-the-page/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 08:25:54 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[Net Culture]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web engineering]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[wave]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=197</guid>
		<description><![CDATA[If you&#8217;re a Twitter user then chances are you&#8217;ve seen this message. Here&#8217;s a rant based on it. The Twitter web interface allows you to take a look at older tweets in bunches of about a twenty each. And every time you want to fetch a new batch you have to click on the large [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re a Twitter user then chances are you&#8217;ve seen this message. Here&#8217;s a rant based on it.</p>
<p>The Twitter web interface allows you to take a look at older tweets in bunches of about a twenty each. And every time you want to fetch a new batch you have to click on the large &#8220;more&#8221; button. Which in turn often brings up the message features in this blog post&#8217;s title.</p>
<p>I&#8217;m annoyed as hell by this of course, but it also gives me the opportunity for a little analysis that will end in the conclusion: <em>Twitter will fail</em> (unless they take some spoons of Tech Clue and change radically, that is).</p>
<p>What&#8217;s behind the little error message? You can&#8217;t really say for sure what happened, but since these errors occur pretty randomly it&#8217;s probably just that their servers are very busy right now.</p>
<p>Plus Twitter is notoriously known for having problems with scalability. For roughly the last two years, in fact. If you ask me they must be pretty clueless about scalability issues. To my knowledge their last action to solve this was to switch to another programming language (Scala). This approach seems to be motivated more by the name of the language than the actual benefit derived from switching to it. I don&#8217;t know if they have made the switch yet or whether they changed their strategy, but chances are their scalability problems won&#8217;t be solved at all with this.</p>
<p>The only thing that could cure their scalability worries would be a proper protocol for distributed twittering. There are suitable and proven distributed protocols like XMPP. You know, that&#8217;s the thing the Jabber instant messaging network is built on. And Google Wave too. This is quite a clue on the ability of Wave to supersede Twitter. Instead the latter ones are wasting their time with fruitless efforts. Come on!</p>
<p>This is made worse by the sheer simplicity of their application. I mean, in one of my projects I&#8217;m the sole developer of a complex game application. It&#8217;s understandable that I can&#8217;t be all things for all people, and scalability is just one of many problems. But what the hell are they doing all day at Twitter? They have 29 employees right now (source: TechCrunch)! Are they all busy keeping the list of top tweets fresh, or making Excel diagrams to please their VCs?</p>
<p>What&#8217;s your opinion on Twitter, scalability and the future of micro-blogging?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2009/07/29/whoops-something-went-wrong-please-try-refreshing-the-page/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mercurial extensions for git features</title>
		<link>http://blog.viridian-project.de/2008/11/05/mercurial-extensions-for-git-features/</link>
		<comments>http://blog.viridian-project.de/2008/11/05/mercurial-extensions-for-git-features/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 10:20:42 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Branching]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[local branches]]></category>
		<category><![CDATA[localbranches]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[revision control]]></category>
		<category><![CDATA[shelve]]></category>
		<category><![CDATA[stash]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=147</guid>
		<description><![CDATA[I still enjoy work with Mercurial more, although git has grown a lot better in the last few years. In the last few days I especially noticed that hg is faster for me than git (even after repack of the git repository). That said, git has some very cool features that are missing in Mercurial. [...]]]></description>
			<content:encoded><![CDATA[<p>I still enjoy work with <a href="http://www.selenic.com/mercurial/" title="Mercurial (software)" rel="homepage" class="zem_slink">Mercurial</a> more, although git has grown a lot better in the last few years.</p>
<p>In the last few days I especially noticed that hg is faster for me than git (even after repack of the git repository).</p>
<p>That said, git has some very cool features that are missing in Mercurial.<br />
Two of them are local branches (helpful for feature development or bug isolation) and the <em>stash</em> command that lets you stash away local changes for later (sort of a simplified patch queue).</p>
<p>Fortunately there are two extensions that provide both local branching and stash functionality.</p>
<h3>Localbranches extension</h3>
<dl>
<dt>Wiki page</dt>
<dd>http://www.selenic.com/mercurial/wiki/index.cgi/LocalBranches</dd>
<dt>Repository</dt>
<dd>http://hg.kublai.com/mercurial/extensions/localbranch</dd>
</dl>
<h3>Shelve extension</h3>
<dl>
<dt>Wiki page</dt>
<dd>http://www.selenic.com/mercurial/wiki/index.cgi/ShelveExtension</dd>
<dt>Repository</dt>
<dd>http://freehg.org/u/tksoh/hgshelve/</dd>
</dl>
<h2>Installation</h2>
<p>To use an extension just clone the repository and put the following line into the [extensions] section of your hgrc (create file and section if necessary):</p>
<pre>EXTNAME=/path/to/EXTNAME.py
</pre>
<p>Usage examples are on the wiki pages.</p>
<p>Happy hacking!</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/9849a907-4ec8-4496-a2be-8e20491bb0ea/" title="Zemified by Zemanta"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_c.png?x-id=9849a907-4ec8-4496-a2be-8e20491bb0ea" alt="Reblog this post [with Zemanta]"/></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/11/05/mercurial-extensions-for-git-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weird release policies in PEAR land</title>
		<link>http://blog.viridian-project.de/2008/10/13/weird-release-policies-in-pear-land/</link>
		<comments>http://blog.viridian-project.de/2008/10/13/weird-release-policies-in-pear-land/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 17:26:40 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web engineering]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[quickform]]></category>
		<category><![CDATA[quickform2]]></category>
		<category><![CDATA[release management]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=138</guid>
		<description><![CDATA[I&#8217;m not very fond of PHP, but it&#8217;s hard to dodge it. Fortunately the PEAR project has a set of excellent (well, as close to excellency as PHP lets you get&#8230;) libraries for all sorts of purposes. The only thing with them is that they have problems managing their releases. The main site of the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not very fond of PHP, but it&#8217;s hard to dodge it.</p>
<p>Fortunately the <a href="http://pear.php.net/">PEAR</a> project has a set of excellent (well, as close to excellency as PHP lets you get&#8230;) <a href="http://pear.php.net/packages.php">libraries</a> for all sorts of purposes.</p>
<p>The only thing with them is that they have problems managing their releases. The main site of the popular <a href="http://pear.php.net/package/HTML_QuickForm">HTML Quickform</a> library sports a fat warning sign, claiming that this package had been superseded by the aptly named <a href="http://pear.php.net/package/HTML_QuickForm2">HTML QuickForm 2</a> package.</p>
<p>That&#8217;s funny, because most if not all <a href="http://pear.php.net/search.php?q=quickform&#038;in=packages&#038;x=0&#038;y=0">other packages depending on QuickForm</a> are still built for the old version. Even more funny is what a vanilla install of the PEAR package tool will throws at anyone attempting to install QuickForm2:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">%</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> pear <span style="color: #c20cb9; font-weight: bold;">install</span> HTML_QuickForm2
Failed to download pear<span style="color: #000000; font-weight: bold;">/</span>HTML_QuickForm2 within preferred state <span style="color: #ff0000;">&quot;stable&quot;</span>, latest release is version 0.2.0, stability <span style="color: #ff0000;">&quot;alpha&quot;</span>, use <span style="color: #ff0000;">&quot;channel://pear.php.net/HTML_QuickForm2-0.2.0&quot;</span> to <span style="color: #c20cb9; font-weight: bold;">install</span>
Cannot initialize <span style="color: #ff0000;">'channel://pear.php.net/HTML_QuickForm2'</span>, invalid or missing package <span style="color: #c20cb9; font-weight: bold;">file</span>
Package <span style="color: #ff0000;">&quot;channel://pear.php.net/HTML_QuickForm2&quot;</span> is not valid
<span style="color: #c20cb9; font-weight: bold;">install</span> failed</pre></div></div>

<p>Now take into account that this situation has been in place for at least one year. Not really a role model for a sane software development release process.</p>
<p>Evidence B: Structures_Datagrid and a bunch of other packages are also marked &#8220;beta&#8221; but have been used by the majority (I daresay) of developers without any problems over the course of the last dekamonths.</p>
<p>What gives, PEAR?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/10/13/weird-release-policies-in-pear-land/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Partial MP3 decoder in Haskell</title>
		<link>http://blog.viridian-project.de/2008/10/06/partial-mp3-decoder-in-haskell/</link>
		<comments>http://blog.viridian-project.de/2008/10/06/partial-mp3-decoder-in-haskell/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 12:06:37 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[Hack]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[decoder]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[mp3]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=135</guid>
		<description><![CDATA[Here&#8217;s a partially conforming MP3 decoder in Haskell. It looks pretty clean even to me, not being a Haskell programmer. Who&#8217;s up for it in Common Lisp? :)]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a <a href="http://blog.bjrn.se/2008/10/lets-build-mp3-decoder.html">partially conforming MP3 decoder in Haskell</a>.</p>
<p>It looks pretty clean even to me, not being a Haskell programmer.</p>
<p>Who&#8217;s up for it in Common Lisp? :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/10/06/partial-mp3-decoder-in-haskell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JES, a KISS mail server</title>
		<link>http://blog.viridian-project.de/2008/10/04/jes-a-kiss-mail-server/</link>
		<comments>http://blog.viridian-project.de/2008/10/04/jes-a-kiss-mail-server/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 13:05:27 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web engineering]]></category>
		<category><![CDATA[dwim]]></category>
		<category><![CDATA[kiss]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[simple]]></category>
		<category><![CDATA[small]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[tiny]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=132</guid>
		<description><![CDATA[JES is a tiny Java mail server. Very useful for testing local mail emitting routines. Usage: download, extract, quickly edit the configuration files and execute bin/mail.sh. Thanks, Eric!]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ericdaugherty.com/java/mailserver/">JES</a> is a tiny Java mail server.</p>
<p>Very useful for testing local mail emitting routines.</p>
<p>Usage: download, extract, quickly edit the configuration files and execute <code>bin/mail.sh</code>.</p>
<p>Thanks, Eric!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/10/04/jes-a-kiss-mail-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim: Substitute in all buffers</title>
		<link>http://blog.viridian-project.de/2008/10/02/vim-substitute-in-all-buffers/</link>
		<comments>http://blog.viridian-project.de/2008/10/02/vim-substitute-in-all-buffers/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 16:56:44 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[all]]></category>
		<category><![CDATA[buffers]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[mass]]></category>
		<category><![CDATA[multiple]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[substitute]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=116</guid>
		<description><![CDATA[To replace all instances of FOO with BAR in one file, you&#8217;d do: :%s/FOO/BAR/g&#124;:up The pipe &#124; lets you separate multiple commands and :up is like :w but only writes changed buffers. Now for all open files: :bufdo :%s/FOO/BAR/g&#124;:up Roughly translates to: for all open buffers, substitute FOO with BAR and write the changes.]]></description>
			<content:encoded><![CDATA[<p>To replace all instances of FOO with BAR in one file, you&#8217;d do:</p>
<pre>
:%s/FOO/BAR/g|:up
</pre>
<p>The pipe | lets you separate multiple commands and :up is like :w but only writes changed buffers.</p>
<p>Now for all open files:</p>
<pre>
:bufdo :%s/FOO/BAR/g|:up
</pre>
<p>Roughly translates to: for all open buffers, substitute FOO with BAR and write the changes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/10/02/vim-substitute-in-all-buffers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using Vim with Common Lisp</title>
		<link>http://blog.viridian-project.de/2008/09/27/using-vim-with-common-lisp/</link>
		<comments>http://blog.viridian-project.de/2008/09/27/using-vim-with-common-lisp/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 14:26:49 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[gnu screen]]></category>
		<category><![CDATA[limp]]></category>
		<category><![CDATA[nekthuth]]></category>
		<category><![CDATA[repl]]></category>
		<category><![CDATA[sbcl]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[slime]]></category>
		<category><![CDATA[swank]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=106</guid>
		<description><![CDATA[The Emacs-based Slime is an excellent IDE for Common Lisp up to the point of inducing people to switch from Vim to Emacs. Personally I feel that there&#8217;s a need for either a full-featured vi written in Common Lisp (no, not GUI-only and written in Python, sorry) or a vi mode for Emacs that is [...]]]></description>
			<content:encoded><![CDATA[<p>The Emacs-based Slime is an excellent IDE for Common Lisp up to the point of <a href="http://www.lispniks.com/pipermail/slim-vim/2007-May/000556.html">inducing people to switch from Vim to Emacs</a>.</p>
<p>Personally I feel that there&#8217;s a need for either a full-featured vi written in Common Lisp (no, not <a href="http://vixn.org/">GUI-only and written in Python</a>, sorry) or a vi mode for Emacs that is consistent and also full-featured.</p>
<p>Until then you have several possiblities, most of which have been devised pretty recently:</p>
<ul>
<li><a href="http://nekthuth.com/">Nekthuth</a> uses the Swank/Slime model with a library on the Lisp side and a Python scripted Vim plugin on the editor side. It offers a bunch of good things, but I haven&#8217;t tried it, yet.</li>
<li><a href="http://mikael.jansson.be/hacking/limp/">Limp</a> seems to be the current star among Vim/Lisp bridges, with an active community. I&#8217;m going to try this soon.</li>
<li><a href="http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/">Like Slime for Vim</a> is a solution that relies almost solely on <a href="http://www.gnu.org/software/screen/">GNU Screen</a>. No Hyperspec lookup or function completion without additional work, though.</li>
<li>Use <a href="http://freshmeat.net/projects/rlwrap/</a> around your favorite Lisp image and use copy and paste, the most basic form of IPC. :) Edi Weitz has </a><a href="http://weitz.de/completions.html">some additional hints</a> for a comfortable setup.</li>
</ul>
<p>These approaches have varying implementation support. You&#8217;re always fine with SBCL, but Nekthuth, for example, doesn&#8217;t support other implementations.</p>
<p>I&#8217;m currently using the plain rlwrap approach but I might take advantage of some other approach soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/09/27/using-vim-with-common-lisp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reflecting on one’s coding self</title>
		<link>http://blog.viridian-project.de/2008/09/07/reflecting-on-one%e2%80%99s-coding-self/</link>
		<comments>http://blog.viridian-project.de/2008/09/07/reflecting-on-one%e2%80%99s-coding-self/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 17:40:06 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[Net Culture]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[profile]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[tagged]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=89</guid>
		<description><![CDATA[A surprise incentive to resume blog writing from Aaron Feng, heh. How old were you when you first started programming? Ten or eleven. How did you get started in programming? Read books about it, peeked at other people&#8217;s code, got in front of a computer, started hacking. :) What was your first language? BASIC. What [...]]]></description>
			<content:encoded><![CDATA[<p>A surprise incentive to resume blog writing from <a href="http://aaronfeng.com/articles/2008/08/31/software-development-meme">Aaron Feng</a>, heh.</p>
<p><strong>How old were you when you first started programming?</strong></p>
<p>Ten or eleven.</p>
<p><strong>How did you get started in programming?</strong></p>
<p>Read books about it, peeked at other people&#8217;s code, got in front of a computer, started hacking. :)</p>
<p><strong>What was your first language?</strong></p>
<p>BASIC.</p>
<p><strong>What was the first real program you wrote?</strong></p>
<p>A BASIC program calculating the Least Common Multiple of two integers.<br />
On paper.</p>
<p><strong>What languages have you used since you started programming?</strong></p>
<p>BASIC, Turbo Pascal, C, C++, Java, C#, Common Lisp, Scheme, Bourne Shell, Awk, Perl, x86 Assembler, MIPS Assembler, TeX, JavaScript, PHP, SQL.</p>
<p><strong>What was your first professional programming gig?</strong></p>
<p>Depends on what you&#8217;d call “professional”.</p>
<p>When I was about 15 years old I wrote a <a href="http://viridian-project.de/~sky/dbf2asc.pas">dBase3 to CSV converter in Turbo Pascal</a> for which I received 20 DM (about 10 EUR).</p>
<p><strong>If you knew then what you know now, would you have started programming?</strong></p>
<p>You bet.</p>
<p><em>If there is one thing you learned along the way that you would tell new developers, what would it be?</em></p>
<p>Don’t be content with your skills and work. Critically examine your own and others’ results.<br />
Push your limits, push, push, push. </p>
<p><strong>What&#8217;s the most fun you&#8217;ve ever had &#8230; programming?</strong></p>
<p>Me and a friend hacking up a space game prototype with GCC and Allegro at night. I slowly discovered the joys of GNU/Linux and free software at that time.</p>
<p>Writing a boot loader in Assembler.</p>
<p>Letting creative impulses flow into Lisp code with little hindrance.</p>
<p><strong>Who’s next?</strong></p>
<p><a href="http://dwellingindreams.blogspot.com/">Michael Prinzinger</a><br />
<a href="http://failex.blogspot.com/">Stephen Compall</a></p>
<p>I&#8217;d also tag Sebastian Heberer but he ain’t got a running blog right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/09/07/reflecting-on-one%e2%80%99s-coding-self/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>errormarker.vim: a Vim plugin for C/C++ programming</title>
		<link>http://blog.viridian-project.de/2008/07/03/errormarkervim-a-vim-plugin-for-cc-programming/</link>
		<comments>http://blog.viridian-project.de/2008/07/03/errormarkervim-a-vim-plugin-for-cc-programming/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 16:30:07 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[errormarker]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/?p=82</guid>
		<description><![CDATA[ErrorMarker.vim will gather all errors reported by the GCC C and C++ compilers after a :make command.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vim.org/scripts/script.php?script_id=1861"><code>ErrorMarker.vim</code></a> will gather all errors reported by the GCC C and C++ compilers after a <code>:make</code> command.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/07/03/errormarkervim-a-vim-plugin-for-cc-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Revision control systems</title>
		<link>http://blog.viridian-project.de/2008/02/04/revision-control-systems/</link>
		<comments>http://blog.viridian-project.de/2008/02/04/revision-control-systems/#comments</comments>
		<pubDate>Mon, 04 Feb 2008 09:24:45 +0000</pubDate>
		<dc:creator>Leslie</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[bazaar]]></category>
		<category><![CDATA[bzr]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[darcs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[rcs]]></category>
		<category><![CDATA[revision control]]></category>
		<category><![CDATA[revision control systems]]></category>
		<category><![CDATA[svk]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[vcs]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[version control systems]]></category>

		<guid isPermaLink="false">http://blog.viridian-project.de/2008/02/04/revision-control-systems/</guid>
		<description><![CDATA[Every serious programming team, even if it consists only of you, should use a distributed revision control system. Over the last few years, I have tried the most popular. Here&#8217;s a quick comparison of them: Git: Jeez, everyone seems to like this one. While I might agree that it&#8217;s powerful stuff, I do not wish [...]]]></description>
			<content:encoded><![CDATA[<p>Every serious programming team, even if it consists only of you, should use a distributed revision control system.<br />
Over the last few years, I have tried the most popular. Here&#8217;s a quick comparison of them:</p>
<ul>
<li><strong>Git:</strong> Jeez, everyone seems to like this one. While I might agree that it&#8217;s powerful stuff, I do not wish to spend weeks figuring out the innards of my RCS. I got things like work to do, you know.</li>
<li><strong>SVK:</strong> SVK is a hack to make SVN distributed. &#8216;Nuff said.</li>
<li><strong>Monotone:</strong> Easier than Git, and does the job. But still too much boilerplate.</li>
<li><strong>Bazaar:</strong> Does the job, but is a little conservative in its approach.</li>
<li><strong>Darcs:</strong> Best candidate for me, were it only more performant. Importing the Yahoo! User Interface library takes ages and load of memory. No user-defined hooks and nested repositories either. Sorry. But still great for small projects.</li>
<li><strong>Mercurial (hg):</strong> Easy to get started with. Nested repositories. Fine-grained control over user-based hooks.<br />
Extensions for everything (e.g. cherry picking, selective recording).</li>
</ul>
<p>Darcs is my personal favorite, but it&#8217;s not possible to manage bigger projects with it, and you can hardly automate deployment or testing without hooks. Plus, certain virtualization software has problems with GHC&#8217;s memory allocation.</p>
<p>So I&#8217;m going to stay with Mercurial. See also this <a href="http://hans.fugal.net/blog/articles/2007/11/16/mercurial-and-darcs">comparison between Darcs and Mercurial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.viridian-project.de/2008/02/04/revision-control-systems/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
