<?xml version="1.0" encoding="utf-8" ?>

<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
    <title>The lone C++ coder's blog</title>
    <link>http://codeblog.bsdninjas.co.uk/</link>
    <description>Diary of a supposedly experienced C++ developer</description>
    <dc:language>en</dc:language>

    <image rdf:resource="http://codeblog.bsdninjas.co.uk/templates/default/img/s9y_banner_small.png" />

    <items>
      <rdf:Seq>
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/143-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/142-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/141-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/140-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/139-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/137-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/136-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/135-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/134-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/133-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/123-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/132-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/130-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/131-guid.html" />
        <rdf:li resource="http://codeblog.bsdninjas.co.uk/index.php?/archives/125-guid.html" />
      </rdf:Seq>
    </items>
</channel>

<image rdf:about="http://codeblog.bsdninjas.co.uk/templates/default/img/s9y_banner_small.png">
        <url>http://codeblog.bsdninjas.co.uk/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: The lone C++ coder's blog - Diary of a supposedly experienced C++ developer</title>
        <link>http://codeblog.bsdninjas.co.uk/</link>
        <width>100</width>
        <height>21</height>
    </image>


<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/143-guid.html">
    <title>The blog has moved to a new URL</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/143-The-blog-has-moved-to-a-new-URL.html</link>
    <description>
    Dear readers, I&#039;m almost back in the blogosphere as a producer rather than as a consumer. Heck, if &lt;a href=&quot;http://steve-yegge.blogspot.com/2010/07/blogger-finger.html&quot;&gt;Steve Yegge&lt;/a&gt; can come back, I might give it a try as well &lt;img src=&quot;http://codeblog.bsdninjas.co.uk/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;.&lt;br /&gt;&lt;br /&gt;I&#039;ve taken the opportunity of moving the blog to its own domain, cunningly called &lt;a href=&quot;http://www.lonecpluspluscoder.com/&quot;&gt;www.lonecpluspluscoder.com&lt;/a&gt;. This &quot;old&quot; blog will stay up, at least as long as the server it is on stays online, but I won&#039;t be adding any new content here. Please head over to the new blog and subscribe to its feed.&lt;br /&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2010-07-21T15:09:15Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=143</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=143</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/142-guid.html">
    <title>A neater way of handling common exceptions</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/142-A-neater-way-of-handling-common-exceptions.html</link>
    <description>
    &lt;p&gt;In a sense, this post is a follow-up to the &lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/137-The-little-exception-shop-of-horrors.html&quot;&gt;&quot;little exception shop of horrors&quot;&lt;/a&gt; below. I believe the idea with dumping all the exception
handling code into a header file was to avoid code duplication. No, I didn&#039;t write that code - I inherited it, which was bad enough. Sound
idea but bad execution, plus of course you still have code duplication as the preprocessor will do the work for you. Ah well, at
least to don&#039;t have to type the code in yourself multiple times. I couldn&#039;t help but think that there &lt;em&gt;must&lt;/em&gt; be a better way.&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/142-A-neater-way-of-handling-common-exceptions.html#extended&quot;&gt;Continue reading &quot;A neater way of handling common exceptions&quot;&lt;/a&gt;
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    C++ programming, </dc:subject>
    <dc:date>2010-02-04T21:38:00Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=142</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=142</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/141-guid.html">
    <title>Building cedet on Windows</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/141-Building-cedet-on-Windows.html</link>
    <description>
    &lt;p&gt;When building both cedet-1.0pre4 and -pre6 on Windows with cygwin and a fairly recent emacs 23.1-based Emacs-W32, a whole boatload of errors suddenly disappear when you make the following changes:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;in Makefile, change &quot;EMACS=emacs&quot; to &quot;EMACS=runemacs&quot;&lt;/li&gt;&lt;li&gt;For good measure, also set &quot;SHELL=bash&quot;, which is usually commented out&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;It goes without saying that it&#039;s a really good idea to disable any Cygwin version of emacs if you want to use Emacs-W32, too.&lt;/p&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    Emacs, </dc:subject>
    <dc:date>2010-01-27T12:49:06Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=141</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=141</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/140-guid.html">
    <title>The homebuilt NAS/home server, revisited</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/140-The-homebuilt-NAShome-server,-revisited.html</link>
    <description>
    &lt;p&gt;I&#039;ve blogged building my own NAS/home server before, see &lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/119-Building-a-new-home-NAShome-server,-Part-I.html&quot;&gt;here&lt;/a&gt;, &lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/121-Building-a-new-home-NAShome-server,-part-II.html&quot;&gt;here&lt;/a&gt;, &lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/122-Building-a-new-home-NAShome-server,-part-III.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/125-Building-a-new-home-NAShome-server,-part-IV.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After a few months, I think it might be time for a little interim update.&lt;/P&gt;

&lt;p&gt;Unfortunately in its original incarnation, the server wasn&#039;t as stable as it should have been given my previous experience of FreeBSD. For some reason, it would crash every few weeks and sometimes even hang on reboot. Not good, especially as it happened a few times while I wasn&#039;t home. I guess I should have heeded the warning about the zfs integration being experimental...Things got worse when I added a wireless card and retired my access point. Roughly around this point in time I got fed up with this enough to go back and start building an OpenSolaris VM to try out a mail server setup similar to the one I&#039;m running on FreeBSD.&lt;/P&gt;

&lt;p&gt;Before I got anywhere with this, FreeBSD 8.0 came out, so I upgraded. Zfs had be promoted from experimental, the wireless stack has been overhauled, etc pp. The stability problems disappeared and the machine has been utterly reliable since then. Where before, trying to use Time Machine from to back up my MacBook via the wireless network was a good way to a 50% chance to crash the server, it now &quot;just works&quot;. This is where I wanted to get and I&#039;ve now got there. Performance also seems to have improved - copying large files from the server to my Windows 7 machine sees a reliable 78MB/s via my Gigabit network now.&lt;/P&gt;

&lt;p&gt;I&#039;ve still got a couple of small changes I want to make to the machine - for example, I&#039;ve got 4GB of RAM that I want to put into the machine. This should enable zfs readahead which should give me further performance improvements. I also plan to add two more fans to blow cold air over the hard drives to keep them happy and working for longer.&lt;/P&gt;

&lt;p&gt;If I built another machine, I would probably get another motherboard. Not that there is anything particularly wrong with the one in the machine, but the CPU fan speed control only goes down to 70%, so no wonder that the CPU fan is noisier than it should be.&lt;/p&gt;

&lt;p&gt;Was it worth it? Overall I&#039;d say yes, although I probably should have stuck to tried and tested technology (either using FreeBSD&#039;s built-in RAID5 or use OpenSolaris with zfs). This caused unnecessary problems at the beginning and pushed up the cost as I was dithering between either. Next time I probably set up the server on OpenSolaris and run the mail server on FreeBSD in a VM running on OpenSolaris. Given that the current configuration is working, I leave it alone for the time being though.&lt;/p&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    Odds &amp; sods, </dc:subject>
    <dc:date>2009-12-23T14:33:08Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=140</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/139-guid.html">
    <title>A bunch of potentially useful links</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/139-A-bunch-of-potentially-useful-links.html</link>
    <description>
    &lt;p&gt;I&#039;m preparing for an intercontinental move over the next few months so my apologies but there will be even less posting going on here than usual. Nevertheless I haven&#039;t forgotten the blog and things will return to normal eventually.&lt;/p&gt;
&lt;p&gt;So for temporary entertainment and my own &quot;don&#039;t forget these links&quot; extended storage solution, here are a bunch of interesting Emacs and C++ links I came across in the past few weeks:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.linux-kongress.org/2009/slides/compiler_survey_felix_von_leitner.pdf&quot;&gt;Interesting presentation showing various compilers&#039; ability to optimise code.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://emacs-fu.blogspot.com/2009/11/making-buffer-names-unique.html&quot;&gt;emacs-fu blog post on making Emacs buffer names unique using Uniquify&lt;/a&gt;. I like this much better than the regular &amp;lt;number&amp;gt; scheme.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.gigamonkeys.com/blog/2009/10/16/coders-c++.html&quot;&gt;Interesting article on C++ by Peter Seibel&lt;/a&gt;. His new book is definitely on my Amazon wishlist; I&#039;ve got Practical Common Lisp and rate it highly, plus I&#039;ve heard a lot of good things about this particular book.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dobbscodetalk.com/index.php?option=com_myblog&amp;amp;show=Assembler-to-C.html&amp;amp;Itemid=29&quot;&gt;Very cool article by Walter Bright about porting OptLink from Assembler to C&lt;/a&gt;. I&#039;ve used Optlink in the past when I used Zortech C/C++ and Symantec C++ and it was impressively fast. It&#039;s good to see that Walter is trying to preserve the technology employed in it. Plus of course I&#039;m a sucker for slightly weird projects.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img class=&quot;zemanta-pixie-img&quot; alt=&quot;&quot; src=&quot;http://img.zemanta.com/pixy.gif?x-id=19ed43c3-9b8e-8cbe-80f3-88e2f3621e42&quot; /&gt;&lt;/div&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    General programming musings, </dc:subject>
    <dc:date>2009-12-20T15:49:00Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=139</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=139</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/137-guid.html">
    <title>The little exception shop of horrors</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/137-The-little-exception-shop-of-horrors.html</link>
    <description>
    &lt;p&gt;Exceptions - as we probably all agree - are generally a good thing as
they allow us to separate the error handling from the general flow of
control inside a program and also enable us to handle errors at the
most appropriate point, which might be quite far removed from the
source of the exception.&lt;/p&gt;
&lt;p&gt;Imagine my surprise when I came across the following gem that was
almost worthy of the Daily WTF:&lt;/p&gt;
&lt;pre&gt;
&lt;span style=&quot;color: #a020f0;&quot;&gt;catch&lt;/span&gt; (&lt;span style=&quot;color: #5f9ea0;&quot;&gt;std&lt;/span&gt;::&lt;span style=&quot;color: #228b22;&quot;&gt;string&lt;/span&gt; &lt;span style=&quot;color: #b8860b;&quot;&gt;ex&lt;/span&gt;) {
  &lt;span style=&quot;color: #b22222;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;color: #b22222;&quot;&gt;Do something horrible with the exception
&lt;/span&gt;}
 &lt;span style=&quot;color: #a020f0;&quot;&gt;catch&lt;/span&gt; (&lt;span style=&quot;color: #a020f0;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #228b22;&quot;&gt;char&lt;/span&gt; *&lt;span style=&quot;color: #b8860b;&quot;&gt;ex&lt;/span&gt;) {
   &lt;span style=&quot;color: #b22222;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;color: #b22222;&quot;&gt;Eh?
&lt;/span&gt; }
 &lt;span style=&quot;color: #a020f0;&quot;&gt;catch&lt;/span&gt; (&lt;span style=&quot;color: #228b22;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #b8860b;&quot;&gt;i&lt;/span&gt;) {
   &lt;span style=&quot;color: #b22222;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;color: #b22222;&quot;&gt;Uh oh
&lt;/span&gt; }
&lt;/pre&gt;
&lt;p&gt;I guess in some circles, being able to throw any sort of POD or
object as an exception is considered a good thing. It&#039;s not necessarily considered to be a good thing
when I&#039;m around...&lt;/p&gt;&lt;p&gt;For the moment we&#039;ll also gloss over the advisability of catching exceptions by value. That doesn&#039;t mean I&#039;m condoning that sort of coding.&lt;/p&gt;
&lt;p&gt;But wait, it gets better. You thought that the code snippet above
was part of a larger chunk of code that I omitted, didn&#039;t you? Well, it
actually wasn&#039;t - it was all parked in a header file.&lt;/p&gt;
&lt;p&gt;In order to avoid duplication of code - always a worthy goal - the
above header file include wherever needed, so at least one of the
files was full of code like this:&lt;/p&gt;
&lt;pre&gt;
&lt;span style=&quot;color: #228b22;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;doSomething&lt;/span&gt;() {
  &lt;span style=&quot;color: #a020f0;&quot;&gt;try&lt;/span&gt; {
    &lt;span style=&quot;color: #b22222;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;color: #b22222;&quot;&gt;Lots of processing that might throw
&lt;/span&gt;  }
&lt;span style=&quot;color: #da70d6;&quot;&gt;#include&lt;/span&gt; &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&quot;catch_clauses.H&quot;&lt;/span&gt;
}
&lt;/pre&gt;
&lt;p&gt;Pass the Stroustrup, I need to refactor a developer or three...&lt;/p&gt;
 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    C++ programming, </dc:subject>
    <dc:date>2009-10-11T08:40:00Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=137</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=137</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/136-guid.html">
    <title>A couple of useful Emacs modes</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/136-A-couple-of-useful-Emacs-modes.html</link>
    <description>
    &lt;p&gt;highlight-changes-mode – as the name implies, it highlights changes that you make to a file. I do find it useful for the typical scenario of checking out a file, making a couple of smaller changes to it and then having to diff it to work out what you actually changed. As mentioned over at Emacswiki it doesn’t play too nicely with font-locking but I’ll try out some of the suggestions in the “Taming Highlight-Changes-Mode” section on &lt;a href=&quot;http://www.emacswiki.org/emacs/TrackChanges&quot;&gt;this page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://www.emacswiki.org/emacs/NxmlMode&quot;&gt;nxml-mode&lt;/a&gt; – my preferred mode for editing XML. Of course it would be better if I could be bothered to create schemas for some of the files I’m editing but even without them, it does a pretty good job. As it’s trying to parse the XML that you write, it’s very helpful when it comes to highlighting mismatched tags or auto complete tags.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://www.emacswiki.org/emacs/InteractivelyDoThings&quot;&gt;ido-mode&lt;/a&gt; – I’ve only recently started to use it and I’m still trying to work out if it is useful enough for me or if the improved file finding capability does bother me more than it helps. Yes, I know it can do a lot more but so far I’m only using the improved file finding and buffer switching. I really rate the buffer switching which is the main reason I leave it turned on.&lt;/p&gt;  &lt;p&gt;Not really a mode, but I like using &lt;a href=&quot;http://www.nongnu.org/bm/&quot;&gt;bm.el&lt;/a&gt; for visible bookmarks. I don’t use bookmarks that often but the package is extremely useful when I do need them.&lt;/p&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    Emacs, </dc:subject>
    <dc:date>2009-10-06T17:40:29Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=136</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=136</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/135-guid.html">
    <title>A vote for the specialised Generalist</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/135-A-vote-for-the-specialised-Generalist.html</link>
    <description>
    &lt;p&gt;There is an expression in German – calling someone a Fachidiot. I don’t think it translates very well into English as there isn’t an expression that conveys the same notion. Idiot savant is getting close, though. What the German word describes is a person who knows everything about very little.&lt;/p&gt;  &lt;p&gt;While the opposite – knowing a little about everything - isn’t really desirable either, the Fachidiot type programmer seems to be highly prized by employers. From a business perspective this is understandable. The programmer who already knows everything about a very small field[1] can really hit the ground running, to quote one of my least favourite recruiter-speak. Not only can the hit the ground running, they’re very likely to run into the right direction. Obviously this is a good thing because it saves on training expenses. Given that there are plenty of employers out there who seem to view training as something they grudgingly have to pay for to stop their programmers from legging it at the first opportunity. But I digress.&lt;/p&gt;  &lt;p&gt;However, from a career perspective, is being the Fachidiot type programmer really desirable? I doubt it, for several reasons.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/135-A-vote-for-the-specialised-Generalist.html#extended&quot;&gt;Continue reading &quot;A vote for the specialised Generalist&quot;&lt;/a&gt;
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    Career tips, </dc:subject>
    <dc:date>2009-10-01T07:12:44Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=135</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=135</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/134-guid.html">
    <title>Using pantheios to log inside a C++ JNI DLL</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/134-Using-pantheios-to-log-inside-a-C++-JNI-DLL.html</link>
    <description>
    &lt;P&gt;I recently had to come up with a logging solution for a JNI DLL/shared library that was written in C++ and is providing the data translation layer between Java and the native libraries. As usual, some logging was required to aid fault finding in a production environment, if necessary. A quick survey of the state of C++ logging showed that not a lot had changed since I last looked at logging libraries for C++. In fact, a lot of them seem to have survived unchanged for several years. I&#039;m not sure if that is a good thing and a sign of maturity or a sign of &quot;making do&quot;. Eventually I settled on &lt;a href=&quot;http://www.pantheios.org/&quot;&gt;pantheios&lt;/a&gt; as it offered a bunch of features that were crucial for this application. The major one was that it is extremely modular and will only link in the parts you really need. I consider this a major advantage over the more monolithic libraries that pull in all their functionality all the time, especially when you link them in as a static library (yes, log4cxx, I&#039;m looking at you). Linking in the logging library as a static library was a necessity to avoid conflicts with other libraries that are being used in the same process.&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/134-Using-pantheios-to-log-inside-a-C++-JNI-DLL.html#extended&quot;&gt;Continue reading &quot;Using pantheios to log inside a C++ JNI DLL&quot;&lt;/a&gt;
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    C++ programming, </dc:subject>
    <dc:date>2009-09-24T19:44:00Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=134</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=134</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/133-guid.html">
    <title>Some clarifications regarding last week's anti-VC6 rant</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/133-Some-clarifications-regarding-last-weeks-anti-VC6-rant.html</link>
    <description>
    &lt;p&gt;This post started out as a comment to &lt;a href=&quot;http://www.lenholgate.com/archives/000868.html&quot;&gt;Len Holgate&#039;s post referencing my anti-VC6 rant&lt;/a&gt;. The comment got a little out of hand size wise so I&#039;ve decided to turn it into a separate blog post. I think I mixed a couple of issues together that should been separated better but weren&#039;t - after all, my blog post was more of a rant.&lt;/p&gt;

&lt;p&gt;First, if your client or employer is maintaining an existing system and the system is in maintenance mode only, we&#039;re talking about a bug fix or a small enhancement then it doesn&#039;t make sense to upgrade the compiler. That&#039;s what I was referring to as a system that is &quot;on life support&quot;. Yes, it goes against the grain for me personally as a software engineer who likes to improve software but the effort spent on making the transition does not make sense from a business perspective.&lt;/p&gt;

&lt;p&gt;What I do take issue with is when you are developing a new system or are working on a large refactor of an existing system that is in &quot;embrace and extend mode&quot;, and for whatever reason the client or employer decrees that it shall be written using VC6. That&#039;s where the penalties come in and that is where the technical debt builds up at the start of a new project or at the exact point in time when you should be addressing the debt instead of adding to it.&lt;/p&gt;

&lt;p&gt;The understanding of C++ and the use of its multi-paradigm nature has changed since VC6 was released, we have both new programming techniques and new libraries that (should) improve the quality of the code, its expressiveness and programmer productivity. The prime example of these libraries and the one I was thinking of when writing the rant of course is Boost. The earliest MS compiler they test against in 1.40 is VC7.1 aka VS2003 which is certainly a big improvement over VC6.&lt;/p&gt;

&lt;p&gt;Yes, VC6 is likely to create smaller executables and build them faster. C++ compilers certainly are not getting any faster and long compile/link times have been a problem on projects I worked on. Shorter build times and especially smaller executables can be a benefit depending on your particular use case. A lot of the projects I worked on in the recent past are maths heavy and the calculations are performance critical. For these projects, an compiler that has an optimizer which can squeeze a 5% performance improvement out of the existing code one a modern CPU at the expense of 20% larger code is a no brainer. In at least one case it was cheaper to buy the Intel compiler to get better performance instead of putting more engineering time into performance improvements.&lt;/p&gt;

&lt;p&gt;Yes, developers like shiny new tools and yes, I&#039;ve worked with developers who considered GCC&#039;s CVS HEAD the only compiler that was recent enough to complement their awesomeness. This is &lt;em&gt;not&lt;/em&gt; something I generally agree with although I did update my own copy of Visual Studio from 2003 to 2008 (yes, I did skip 2005) when that version came out simply because it was so much better than its predecessors.&lt;/p&gt;

&lt;p&gt;I still think that by insisting on the usage of tools that are positively ancient, programmers get needlessly hobbled and it is part of our job as programmers who care about what they do to educate the people who make these decisions as to why they aren&#039;t necessarily good from an engineering point of view. I don&#039;t think any of the Java programmers I work with would put up with having to work using &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_version_history#J2SE_1.2_.28December_8.2C_1998.29&quot;&gt;Java 1.2&lt;/a&gt; and forego the improvements both in the language and in the available libraries, yet C++ programmers are regularly asked to do exactly that.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img class=&quot;zemanta-pixie-img&quot; alt=&quot;&quot; src=&quot;http://img.zemanta.com/pixy.gif?x-id=21e536c8-fe56-8ce6-a17d-41a72a5bd8fb&quot; /&gt;&lt;/div&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    C++ programming, </dc:subject>
    <dc:date>2009-09-09T21:02:28Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=133</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/123-guid.html">
    <title>Why oh why do people insist on using compilers that are way out of date?</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/123-Why-oh-why-do-people-insist-on-using-compilers-that-are-way-out-of-date.html</link>
    <description>
    &lt;p&gt;Why are so many companies hobbling their programmers with positively ancient and often positively crappy tools? For once I&#039;m not ranting about companies that are too cheap to provide their C++ programmers with important tools like profilers and leak detectors - the usual &quot;if these were important, the tool vendor would include them&quot; argument, but the one tool right at the heart of the matter. The one none of us can work without in C++ space. I am, of course, talking about the compiler.&lt;/p&gt;
&lt;p&gt;One of my personal pet hates is the number of projects that are still using Visual C++ 6 - for $DEITY&#039;s sake, that compiler was released back in 1998 and it wasn&#039;t that good back then. Microsoft has since released &lt;i&gt;four&lt;/i&gt; new versions of their C++ compiler and a fifth is due very soon. Each one of them is better and more importantly,  more standard compliant than its predecessor. All have benefited enormously from people trying to push the boundaries of what you can do with C++ in the past eleven years. Oh, and &lt;a href=&quot;http://blogs.msdn.com/yvesdolc/archive/2004/08/22/218583.aspx&quot;&gt;mainstream support for the compiler ended years ago&lt;/a&gt;, but who&#039;s counting? Yet companies still insist on using this outdated piece of &amp;lt;censored&amp;gt;, depriving their programmers of the ability to use more modern C++ techniques that often make for a safer programming environment. &lt;/p&gt;
&lt;p&gt;If your code doesn&#039;t build with a modern, standard compliant compiler and you&#039;re not about to switch off the life support for your project (just about the only justification IMHO for working with ancient tools), the go ahead and get it to compile on the newer version of the compiler. Postponing the conversion will only add to your technical debt until that gets to the point where you, well, switch off life support...&lt;p/&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    C++ programming, </dc:subject>
    <dc:date>2009-09-02T20:31:00Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=123</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=123</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/132-guid.html">
    <title>A couple of interesting blog posts...</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/132-A-couple-of-interesting-blog-posts....html</link>
    <description>
    &lt;p&gt;A couple of links to other people&#039;s interesting posts I&#039;ve come across in the last few days.&lt;/p&gt;

&lt;p&gt;Raymond Chen on &lt;a href=&quot;http://blogs.msdn.com/oldnewthing/archive/2009/08/19/9874776.aspx&quot;&gt;&quot;There is no law that says meetings can&#039;t end early&quot;.&lt;/a&gt; I wish more people would take this advice to heart, but that&#039;s been on my Christmas wishlist right next to &quot;create an agenda for a meeting and stick to it&quot;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://prog21.dadgum.com/46.html&quot;&gt;Interesting blog post&lt;/a&gt; regarding the difference between technology for technology&#039;s sake and using technology to create something. For the record, I tend to be more interested in doing something with my technology &quot;toys&quot; rather than having them purely for having them. That&#039;s probably one of the reasons that I tend not to have the latest, greatest and fastest machines (or phones, cameras etc) but rather buy quality kit and use it for a few years instead.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://antoniocangiano.com/2009/08/15/do-programmers-still-buy-printed-books/&quot;&gt;Do programmers still buy printed books?&lt;/a&gt; I know I do, but I&#039;m getting a little more choosy. I&#039;ve bought a couple of books recently that I&#039;d classify more as a waste of a perfectly good tree. That&#039;s unfortunately not unusual for tech books, there are a couple of brilliant ones out there and an awful lot of, how shall I call it, rubbish. I&#039;m also one of those throwbacks to an earlier age who prefer to hold a physical book in their hands rather than stare at a screen. The reason Antonio mentions - switching between book reading mode and computing mode - certainly has something to do with it; after all, if you&#039;re immersed in a book you probably don&#039;t check your email every thirty seconds whereas I&#039;d be tempted to do that if I were to read the book on a computer. Reading on the iPhone is something I&#039;d rather not do, my eyesight is bad enough as it is...&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://antoniocangiano.com/2009/08/14/my-latest-order-of-programming-books/&quot;&gt;Antonio&#039;s book list his previous blog post&lt;/a&gt; also looks very much like I should update my Amazon wish list.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img class=&quot;zemanta-pixie-img&quot; alt=&quot;&quot; src=&quot;http://img.zemanta.com/pixy.gif?x-id=d39a758c-b9e9-8acb-af2b-8e789665cba8&quot; /&gt;&lt;/div&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    Odds &amp; sods, </dc:subject>
    <dc:date>2009-08-23T08:16:00Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=132</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=132</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/130-guid.html">
    <title>Uncle Timo's carrer corner: Today's top interview tip</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/130-Uncle-Timos-carrer-corner-Todays-top-interview-tip.html</link>
    <description>
    &lt;p&gt;If you&#039;re conducting an interview using your mobile phone (that&#039;s a cell phone to the readers on the other side of the pond), at least go somewhere with good reception so the interviewer can hear what you&#039;re saying. If you don&#039;t you&#039;re probably not going to make a very good impression if the interviewer has a hard time understanding half of what you say...&lt;/p&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    Odds &amp; sods, </dc:subject>
    <dc:date>2009-08-20T06:19:07Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=130</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=130</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/131-guid.html">
    <title>My emacs configuration file refactor</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/131-My-emacs-configuration-file-refactor.html</link>
    <description>
    &lt;p&gt;In a previous post I described that a few months ago, I moved the third party elisp code under version control to make it easier to move it between machines and ensure a consistent configuration across them. The one remaining problem to solve was putting the configuration files (.emacs and .gnus.el) under version control. One of the approaches I really liked was described by &lt;a href=&quot;http://nflath.com/2009/07/refactoring-configurations/&quot;&gt;Nathaniel Flath&lt;/a&gt; but I figured that it was too heavyweight for my needs.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;What I ended up doing was to move the configuration files into version control and then simply change the basic dot-files to load the file from the subdirectory that is under version control. My .emacs now reads like this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
&lt;code&gt;
(load-file &quot;~/emacs-lisp/dot-emacs.el&quot;)
&lt;/code&gt;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Not the most elegant and automated version but it works for me.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img class=&quot;zemanta-pixie-img&quot; alt=&quot;&quot; src=&quot;http://img.zemanta.com/pixy.gif?x-id=2ccb2a52-5b3e-8e72-962e-6ab7f8cb290c&quot; /&gt;&lt;/div&gt; 
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    Emacs, </dc:subject>
    <dc:date>2009-08-18T12:27:35Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=131</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=131</wfw:commentRss>
    
    
</item>
<item rdf:about="http://codeblog.bsdninjas.co.uk/index.php?/archives/125-guid.html">
    <title>Building a new home NAS/home server, part IV</title>
    <link>http://codeblog.bsdninjas.co.uk/index.php?/archives/125-Building-a-new-home-NAShome-server,-part-IV.html</link>
    <description>
    &lt;p&gt;I&#039;ve done some more performance testing and while I&#039;m not 100% happy with the results, I decided to keep using FreeBSD with zfs on the server for the time being. Pretty much all measurements on Linux (both a recent Ubuntu Server and CentOS 5.3) showed lower performance and while OpenSolaris is a lot faster when it comes to Disk I/O and thus would have been my first choice for a pure NAS, the effort in porting my current mail server configuration would have resulted in the server being ready sometime in 2010...&lt;/p&gt;&lt;p&gt;I might be exaggerating this a little but the effort of building amavisd-new is non-trivial due to its large number of dependencies. If packages or at least some sort of package build system like the FreeBSD ports is available but building it from scratch and ensuring that all the necessary small Perl components are present isn&#039;t trivial. So FreeBSD it is for the time being. I will still be looking into rolling a few packages for OpenSolaris for at least some of the tools I&#039;d like to see on there as the thought of running my home server on what is essentially an enterprise-class OS is very appealing to me.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://codeblog.bsdninjas.co.uk/index.php?/archives/125-Building-a-new-home-NAShome-server,-part-IV.html#extended&quot;&gt;Continue reading &quot;Building a new home NAS/home server, part IV&quot;&lt;/a&gt;
    </description>

    <dc:publisher>The lone C++ coder's blog</dc:publisher>
    <dc:creator>nospam@example.com (Timo Geusch)</dc:creator>
    <dc:subject>
    Odds &amp; sods, </dc:subject>
    <dc:date>2009-07-30T19:51:00Z</dc:date>
    <wfw:comment>http://codeblog.bsdninjas.co.uk/wfwcomment.php?cid=125</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://codeblog.bsdninjas.co.uk/rss.php?version=1.0&amp;type=comments&amp;cid=125</wfw:commentRss>
    
    
</item>

</rdf:RDF>
