<?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>Niels' Homepage &#187; Computer</title>
	<atom:link href="http://www.heirbaut.nl/category/computer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.heirbaut.nl</link>
	<description>Everything I want to put on the web</description>
	<lastBuildDate>Thu, 08 Apr 2010 18:49:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Computable door de bocht</title>
		<link>http://www.heirbaut.nl/2010/04/08/computable-door-de-bocht/</link>
		<comments>http://www.heirbaut.nl/2010/04/08/computable-door-de-bocht/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 18:49:51 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=198</guid>
		<description><![CDATA[Ik heb me net heerlijk zitten ergeren aan een artikel op de Computable website. De stelling is dat het introduceren (het gebruik wordt niet eens genoemd), van Linux in een bedrijfsomgeving verborgen kosten met zich mee brengt. Dat zou helemaal waar kunnen zijn, maar de auteurs Johan Zwiekhorst en Jozef Schildermans van Data TestLab slaan [...]]]></description>
			<content:encoded><![CDATA[<p> 	Ik heb me net heerlijk zitten ergeren aan <a href="http://www.computable.nl/artikel/ict_topics/besturingssystemen/3311520/1277048/bespaart-linux-echt-zoveel-kosten.html">een artikel</a> op de Computable website. De stelling is dat het introduceren (het gebruik wordt niet eens genoemd), van Linux in een bedrijfsomgeving verborgen kosten met zich mee brengt. Dat zou helemaal waar kunnen zijn, maar de auteurs Johan Zwiekhorst en Jozef Schildermans van Data TestLab slaan volgens mij op een aantal punten behoorlijk door. De argumenten op een rijtje:</p>
<ul>
<li><em>Bovendien is opensourcesoftware minder populair dan Windows, zodat vandalen het vooralsnog grotendeels met rust laten</em>&#8230;Echt waar? Zouden de onderzoekers wel eens een gekeken hebben naar de echte getallen over Open Source? Apache, iemand? PHP? Java? Bovendien gaat het begrip Open Source veel verder dan alleen het operating system, dus het begint al door appels met peren te vergelijken.</li>
</ul>
<ul>
<li><em>Zoals je waarschijnlijk wel weet, bestaan er honderden Linux-distributies.</em> De toon lijkt nu wel gezet. Feitelijk en tendentieus.</li>
</ul>
<ul>
<li><em>De basis van die bundel is de linux kernel: die is hetzelfde voor iedereen. Daarbovenop komt het GNU/Linux platform.</em> Kennis van GNU/Linux ontbreekt blijkbaar bij de auteurs: de kernel is niet bij alle distributies hetzelfde. Ze zijn wel gebaseerd op dezelfde broncode, maar vaak aangepast door de maker van de distributie om zo goed mogelijk aan te sluiten bij de doelgroep van de distributie. De opmerking dat het GNU/Linux platform erbovenop komt is natuurlijk onzin. Het heet GNU/Linux omdat een Linux kernel wordt gecombineerd met de GNU applicaties om een operating system te maken. Richard Stallman zal het niet waarderen dat de GNU applicaties GNU/Linux worden genoemd.</li>
</ul>
<ul>
<li><em>Als je een Windows-gebaseerde server draait, dan moet je die clientlicenties betalen ongeacht het gebruikte desktopsysteem.</em> Wat een raar argument. Als het een homogene Windows-omgeving is, moet er ook voor zowel de client als de server licenties betaald worden. Bij Linux ben je in ieder geval nog het bedrag voor het desktop operating system kwijt.</li>
</ul>
<ul>
<li><em>Zo blijkt het erg moeilijk om computers van A-merken te kopen zonder Windows erop</em>. Dat is alleen <a href="http://en.wikipedia.org/wiki/Criticism_of_Microsoft#Licensing_agreements">Microsoft</a> aan te rekenen. Dus feitelijk weer juist, maar het lijkt mij eerder een argument om zo snel mogelijk te stoppen met het gebruik van Microsoft producten, want daardoor wordt blijkbaar de prijs van apparatuur onnodig opgejaagd.</li>
</ul>
<p>Afgezien van de hierboven beschreven argumenten, staat het artikel bovendien vol met taal- en/of typefouten. Ik ben benieuwd naar het vervolg op dit artikel op 12 april, maar gezien de argumentaties in dit artikel vrees ik het ergste.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2010/04/08/computable-door-de-bocht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error: Cannot modify header information&#8230;</title>
		<link>http://www.heirbaut.nl/2010/04/02/error-cannot-modify-header-information/</link>
		<comments>http://www.heirbaut.nl/2010/04/02/error-cannot-modify-header-information/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 14:51:58 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software engineering]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=195</guid>
		<description><![CDATA[If PHP ever gives you the following error (I just encountered it while developing with the Yii Framework): Cannot modify header information - headers already sent by Then you probably injected some whitespace somewhere in your output. The easiest way to avoid that is by not using the PHP closing tag &#8216;?>&#8216; at the end [...]]]></description>
			<content:encoded><![CDATA[<p> 	If PHP ever gives you the following error (I just encountered it while developing with the <a href="http://www.yiiframework.com">Yii Framework</a>):</p>
<p><code>Cannot modify header information - headers already sent by</code></p>
<p>Then you probably injected some whitespace somewhere in your output. The easiest way to avoid that is by not using the PHP closing tag &#8216;<code>?></code>&#8216; at the end of PHP source files. <a href="http://choosetheforce.blogspot.com/2008/05/should-you-close-that-php-tag.html">Some people</a> are against that but if I look into the sources for Yii and read  the <a href="http://framework.zend.com/manual/en/coding-standard.php-file-formatting.html">Zend Framework Programmer&#8217;s Reference Guide</a> then it is obviously a well established method of avoiding the mentioned error.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2010/04/02/error-cannot-modify-header-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Color schemes, Color schemes, Color schemes&#8230;</title>
		<link>http://www.heirbaut.nl/2007/11/14/color-schemes-color-schemes-color-schemes/</link>
		<comments>http://www.heirbaut.nl/2007/11/14/color-schemes-color-schemes-color-schemes/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 19:46:55 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[ViM]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/2007/11/14/color-schemes-color-schemes-color-schemes/</guid>
		<description><![CDATA[As a passionate and seasoned user of the best editor in the world I always look around for ways to improve the editing experience. One way to improve that is by selecting a good color scheme. The ViM website offer a ton of color schemes but no way to sample them other then look at [...]]]></description>
			<content:encoded><![CDATA[<p> 	As a passionate and seasoned user of <a href="http://www.vim.org" title="The best editor...">the best editor in the world</a> I always look around for ways to improve the editing experience. One way to improve that is by selecting a good color scheme. The ViM website offer a ton of color schemes but no way to sample them other then look at the user ratings, install them and then judge for yourself. And even then the color schemes on the ViM site are not all schemes that are available.</p>
<p>Fortunately <a href="http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/" title="ViM color schemes overview">someone</a> wrote a page where, as far as I know, all color schemes are shown and downloadable. Even my two favorite ones: <a href="http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/desert.vim" title="Desert color scheme">here</a> and <a href="http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/ekvoli.vim" title="Ekvoli color scheme">here</a>. The only minor annoyance is the fact that the color schemes are not all alphabetically ordered.</p>
<p>I know, I know, old news, but I still like to use this web site as my own long term memory&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2007/11/14/color-schemes-color-schemes-color-schemes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release of NanoBlogger Gallery plugin 0.6.0</title>
		<link>http://www.heirbaut.nl/2006/08/29/release-of-nanoblogger-gallery-plugin-060/</link>
		<comments>http://www.heirbaut.nl/2006/08/29/release-of-nanoblogger-gallery-plugin-060/#comments</comments>
		<pubDate>Tue, 29 Aug 2006 19:45:51 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Gallery plugin]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=63</guid>
		<description><![CDATA[There is a new release of the NanoBlogger Gallery plugin. The previous version had a problem when run in Bash versions below 3.1. There are some differences when initializing arrays from a &#8216;string&#8217; using $IFS. In Bash 3.1 you can do this: 1 2 3 4 5 6 7 8 #!/bin/bash &#160; a=&#34;1.2.3&#34; IFS='.' declare [...]]]></description>
			<content:encoded><![CDATA[<p> 	There is a new release of the NanoBlogger Gallery plugin. The previous version had a problem when run in Bash versions below 3.1. There are some differences when initializing arrays from a &#8216;string&#8217; using <code>$IFS</code>.</p>
<p>In Bash 3.1 you can do this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">a</span>=<span style="color: #ff0000;">&quot;1.2.3&quot;</span>
<span style="color: #007800;">IFS</span>=<span style="color: #ff0000;">'.'</span>
<span style="color: #7a0874; font-weight: bold;">declare</span> <span style="color: #660033;">-a</span> <span style="color: #007800;">arr</span>=<span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #007800;">$a</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${#arr[@]}</span>&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Outputs 3 in version 3.1 and 1 in version 3.0</span></pre></td></tr></table></div>

<p>But if you instead do this then it works in both versions:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">a</span>=<span style="color: #ff0000;">&quot;1.2.3&quot;</span>
<span style="color: #007800;">IFS</span>=<span style="color: #ff0000;">'.'</span>
<span style="color: #7a0874; font-weight: bold;">declare</span> <span style="color: #660033;">-a</span> arr
<span style="color: #7a0874; font-weight: bold;">eval</span> <span style="color: #ff0000;">&quot;arr=( <span style="color: #007800;">$a</span> )&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${#arr[@]}</span>&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Outputs 3 in version 3.1 and 3.0</span></pre></td></tr></table></div>

<p>So hopefully the Gallery plug-in is better prepared for the real world :). Thanks to <a href="http://courses.capcollege.bc.ca/faculty/cgratham/blog/index.html">Chris Gratham</a> for helping me out with this.</p>
<p>The new version can be downloaded <a href="http://www.heirbaut.nl/downloads/gallery/gallery-0.6.0.tar.gz">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2006/08/29/release-of-nanoblogger-gallery-plugin-060/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NanoBlogger and ViM</title>
		<link>http://www.heirbaut.nl/2006/08/02/nanoblogger-and-vim/</link>
		<comments>http://www.heirbaut.nl/2006/08/02/nanoblogger-and-vim/#comments</comments>
		<pubDate>Wed, 02 Aug 2006 07:29:21 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=60</guid>
		<description><![CDATA[NanoBlogger is a minimalistic approach to blogging as vi (or ViM) is a minimalistic approach to editing. Okay, not as minimalistic as ed or ex, but you get the idea. Using ViM as the default editor for NanoBlogger is as simple as setting the variable $EDITOR in .bashrc, $BLOG_DIR/blog.conf or, if you want control of [...]]]></description>
			<content:encoded><![CDATA[<p> 	NanoBlogger is a minimalistic approach to blogging as <code>vi</code> (or ViM) is a minimalistic approach to editing. Okay, not as minimalistic as <code>ed</code> or <code>ex</code>, but you get the idea.</p>
<p>Using ViM as the default editor for NanoBlogger is as simple as setting the variable <code>$EDITOR</code> in <code>.bashrc</code>, <code>$BLOG_DIR/blog.conf</code> or, if you want control of NanoBlogger settings for each machine that you work on, <code>$HOME/.nb.conf</code>.</p>
<p>But the default settings for editing entries or articles are not particularly nice. Fortunately ViM can have settings on a per-file basis using modelines (if you don&#8217;t know what they are just type <code>:h auto-setting</code> on the ViM command line). To make editing with ViM a bit nicer, just edit the following files:</p>
<ul>
<li><code>$BLOG_DIR/templates/entry.metadata</code></li>
<li><code>$BLOG_DIR/templates/file.metadata</code></li>
</ul>
<p>and add the following line at the end of the file:</p>
<pre><code>vim: set ts=4 sw=4 ff=unix fo+=t et:</code></pre>
<p>This should provide you with some decent ViM settings across all machines that you are working on.</p>
<p><strong>WARNING:</strong><br />
NanoBlogger versions &lt;=3.3-RC5 have a bug that will overwrite the template files with the default template files and undo your modeline setting. This can be fixed by either using a later version (not available at the time of this writing), using the CVS version or editing the file <code>lib/tools.sh</code> in the same directory where your NanoBlogger binary is. Search for a line that has the following:</p>
<p><code>$NB_TEMPLATE_DI/</code></p>
<p>and change that to:</p>
<p><code>$NB_TEMPLATE_DIR/</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2006/08/02/nanoblogger-and-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some C++ STL programming trivia</title>
		<link>http://www.heirbaut.nl/2006/07/12/some-c-stl-programming-trivia/</link>
		<comments>http://www.heirbaut.nl/2006/07/12/some-c-stl-programming-trivia/#comments</comments>
		<pubDate>Wed, 12 Jul 2006 07:52:30 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=54</guid>
		<description><![CDATA[I use this weblog as a brain dump. Not only to be able to remember long forgotten stuff, to make sure knowledge is not forgotten but also to share knowledge with others. If you do a lot of C++ programming it is almost unavoidable to use the STL and at some point you probably will [...]]]></description>
			<content:encoded><![CDATA[<p> 	I use this weblog as a brain dump. Not only to be able to remember long forgotten stuff, to make sure knowledge is not forgotten but also to share knowledge with others.</p>
<p>If you do a lot of C++ programming it is almost unavoidable to use the STL and at some point you probably will end up defining your own templates. This is not a bad thing since you then make use of the strengths of the C++ language.</p>
<p>The problem starts when you make a programming error using a (STL) template. The error messages from the compiler are cluttered with so much noise that it is often very hard to spot where the error has been made. Fortunately <a href="http://www.bdsoft.com">someone</a> has written a filter (STLFilt) to parse these cryptic messages and make them more readable. It works with most compilers although support for GCC is a bit behind. Support for version 3.4.x and up is worked on. My experience, however, is that it is still very usable for GCC version 3.4.x and up.</p>
<p>You can find a distribution of STLFilt for your compiler <a href="http://www.bdsoft.com/tools/stlfilt.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2006/07/12/some-c-stl-programming-trivia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ViM Rocks!</title>
		<link>http://www.heirbaut.nl/2006/03/31/vim-rocks/</link>
		<comments>http://www.heirbaut.nl/2006/03/31/vim-rocks/#comments</comments>
		<pubDate>Fri, 31 Mar 2006 17:40:27 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=47</guid>
		<description><![CDATA[Just downloaded, compiled and installed ViM 7.0c Beta and I must say it rocks! I still have to get used to a lot of things, but the following items really are good add-ons to ViM in my book: Built-in spelling checker. I had to create the directory $HOME/.vim/spell before it worked, but when it works [...]]]></description>
			<content:encoded><![CDATA[<p> 	Just downloaded, compiled and installed <a href="ftp://ftp.vim.org/pub/vim/unstable/unix/vim-7.0c.tar.bz2">ViM 7.0c Beta</a> and I must say it rocks!  I still have to get used to a lot of things, but the following items really are good add-ons to ViM in my book:</p>
<ul>
<li>Built-in spelling checker. I had to create the directory <code>$HOME/.vim/spell</code> before it worked, but when it works it works perfectly.</li>
<li>Editing files through a network connection (FTP/SCP/RSYNC/etc./).</li>
<li>The very fast internal grep.</li>
</ul>
<p>There are also some things that sound good, but to which I probably am not used yet:</p>
<ul>
<li>Omni completion. I only tried it with PHP, but it did not bring me any joy. It suggested the possible function names to me without any problem, but it did not show the signatures for these functions (parameter lists and return values). But not all possible settings have been explored. It even locked up ViM.</li>
<li>Tabbed pages. I find the <a href="http://vim.sourceforge.net/scripts/script.php?script_id=159">MiniBufExplorer</a> more convenient. The graphical tabs look awful and the text based ones look to cramped i.e. file names are truncated if there is not enough space and if there are many file than not all file names are shown.</li>
</ul>
<p>But considering the fact that ViM still has a very small footprint (under 7MB of sources, compare that to that other editor <code>:)</code> ) I must say that this version is really a step forward.</p>
<p>If I find anything new I will put that in a new weblog. But the next couple of days I will probably be busy testing the <a href="http://www.heirbaut.nl/category/projects/code-plugin/">Code Plugin</a> with the new ViM.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2006/03/31/vim-rocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on the old beast</title>
		<link>http://www.heirbaut.nl/2006/03/19/more-on-the-old-beast/</link>
		<comments>http://www.heirbaut.nl/2006/03/19/more-on-the-old-beast/#comments</comments>
		<pubDate>Sun, 19 Mar 2006 06:40:46 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=46</guid>
		<description><![CDATA[In this log I mentioned that the Dell Dimension XPS I am running has been extended with a Promise Ultra ATA-100 TX2 IDE card. This has the advantage that, instead of the local IDE&#8217;s 33 MHz bus, the PC can now utilize its full 100 MHz bus power. This meant that I could make better [...]]]></description>
			<content:encoded><![CDATA[<p> 	In <a href="http://www.heirbaut.nl/2006/03/12/networking-and-sound-on-an-old-system/">this</a> log I mentioned that the Dell Dimension XPS I am running has been extended with a Promise Ultra ATA-100 TX2 IDE card. This has the advantage that, instead of the local IDE&#8217;s 33 MHz bus, the PC can now utilize its full 100 MHz bus power. This meant that I could make better use of a new 40 GB hard drive I bought (which can operate at 150 MHz, but hey!). On this newly installed drive Ubuntu Breezy Badger is installed and on the old drive Windows already had been installed. The chain-loader used for Windows gets a bit confused if the Master Boot Record is on this second drive on the second controller, so some fancy Grub settings have to be put into <code>/boot/grub/menu.lst</code>. Here is mine:</p>
<pre><code>
# This is a divider, added to separate the menu items below
# from the Debian ones.
title Other operating systems:
root

# This entry automatically added by the Debian installer for a
# non-linux OS on /dev/hda1
title Windows
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
chainloader +1
makeactive
</code></pre>
<p>If there are any questions on running Linux on old hardware just let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2006/03/19/more-on-the-old-beast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useful links</title>
		<link>http://www.heirbaut.nl/2006/03/18/useful-links/</link>
		<comments>http://www.heirbaut.nl/2006/03/18/useful-links/#comments</comments>
		<pubDate>Sat, 18 Mar 2006 07:32:14 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=45</guid>
		<description><![CDATA[Google is a great search engine and it has helped me very often to find the information I needed at that very moment. But filtering all the results presented by Google can soon become a tedious task. Not always are the best results for what is wanted presented at the top of the search results. [...]]]></description>
			<content:encoded><![CDATA[<p> 	Google is a great search engine and it has helped me very often to find the information I needed at that very moment. But filtering all the results presented by Google can soon become a tedious task. Not always are the best results for what is wanted presented at the top of the search results. So I always try to find (and bookmark) pages that provide a good overview. And so recently I found two (well, one was presented at <a href="http://developers.slashdot.org/article.pl?sid=06/03/16/2146207">SlashDot</a> :) )</p>
<p>The first one is a link to <a href="http://www-128.ibm.com/developerworks/opensource/library/os-php-read">IBM&#8217;s DeveloperWorks</a> that shows a &#8216;reading list&#8217; for PHP developers. The title is a bit misleading because they provide links to common tools, articles, web-pages and yes, even books. I wish they had created this page a month ago. It would have saved a lot of searching.</p>
<p>The <a href="http://msdn.microsoft.com/vcsharp/programming/tools">second link</a> surprised me a bit. But is really a Microsoft owned page linking to a lot of tools that can be used for .NET development. And the part that surprised me is that they also link to 3rd party tools and even Open Source projects. Do I hear the sound of an air born pig in the distance?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2006/03/18/useful-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A storage pattern</title>
		<link>http://www.heirbaut.nl/2006/03/16/a-storage-pattern/</link>
		<comments>http://www.heirbaut.nl/2006/03/16/a-storage-pattern/#comments</comments>
		<pubDate>Thu, 16 Mar 2006 18:21:10 +0000</pubDate>
		<dc:creator>Niels</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://www.heirbaut.nl/?p=43</guid>
		<description><![CDATA[Every time I build software that makes use of a Model-View-Controller pattern I always have the feeling that the wheel is being re-invented with regards to the View part (and to a lesser extent the Model part as well). This is caused by the fact that, to me, the most obvious solution for a view [...]]]></description>
			<content:encoded><![CDATA[<p> 	Every time I build software that makes use of a Model-View-Controller pattern I always have the feeling that the wheel is being re-invented with regards to the View part (and to a lesser extent the Model part as well). This is caused by the fact that, to me, the most obvious solution for a view is a tree-structure of elements that share a single interface so that a simple <code>draw()</code> on the top-most interface is sufficient enough to get the whole tree drawn (to screen, file, paper, etc. but that will be for a later story).</p>
<p>The pattern below is what I always use to implement this:</p>
<p><a href="http://www.heirbaut.nl/wp-content/uploads/2007/07/storage_pattern.png" title="Storage Pattern"><img src="http://www.heirbaut.nl/wp-content/uploads/2007/07/storage_pattern.thumbnail.png" alt="Storage Pattern" /></a></p>
<p>This makes it very easy to create objects that either store a single element that is drawn, or multiple elements that are drawn. You have to choose if the concrete element is either a <em>SingleElement</em> storing &#8216;content&#8217; or a <em>ContainerElement</em> that can store other elements. This way it is very easy to build a tree of similar objects that have a shared interface. This pattern is more commonly known as the <a href="http://en.wikipedia.org/wiki/Composite_pattern">Composite Pattern</a>.</p>
<p>The diagram is drawn using <a href="http://www.gnome.org/projects/dia">Dia</a>. The original diagram source can be found <a href="http://www.heirbaut.nl/downloads/misc/storage_pattern.dia">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.heirbaut.nl/2006/03/16/a-storage-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
