<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Wayne Koorts' Blog</title>
	
	<link>http://www.wkoorts.com/wkblog</link>
	<description>Software Developer &amp; IT Generalist</description>
	<lastBuildDate>Wed, 06 Feb 2013 22:16:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wkoorts" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="wkoorts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Drive Caffeine: Keep Sleepy Drives Awake</title>
		<link>http://www.wkoorts.com/wkblog/2013/02/07/drive-caffeine-keep-sleepy-drives-awake/</link>
		<comments>http://www.wkoorts.com/wkblog/2013/02/07/drive-caffeine-keep-sleepy-drives-awake/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 21:42:47 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Systems Administration]]></category>
		<category><![CDATA[utilities]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=271</guid>
		<description><![CDATA[Got a tired drive that just won&#8217;t stay awake? Then you may find my new (open source) utility, Drive Caffeine, useful. Drive Caffeine sits quietly in the system [..]]]></description>
				<content:encoded><![CDATA[<p>Got a tired drive that just won&#8217;t stay awake? Then you may find my new (open source) utility, <a title="Drive Caffeine" href="http://drivecaffeine.codeplex.com" target="_blank">Drive Caffeine</a>, useful.</p>
<p>Drive Caffeine sits quietly in the system tray and pings any selected drives at the interval you specify, to keep them awake (it just writes a file to the disk and deletes it again). Simple as that!</p>
<p>&#8220;But you can just set the drive to not sleep!&#8221;. In many cases this is true, but if you have one of these newfangled external &#8220;eco&#8221; drives that enforce naptime after a short interval at a hardware level then this can lead to frustration, lost productivity, and even hairloss.</p>
<p><img class="aligncenter size-full wp-image-276" alt="drivecaffeine1.3" src="http://www.wkoorts.com/wkblog/wp-content/uploads/2013/02/drivecaffeine1.3.png" width="377" height="534" /></p>
<p>I&#8217;m always happy for any feedback, good or bad (especially bad) so feel free to tell me what you think of it.</p>
<p>There are some circumstances that will break it at the moment. It doesn&#8217;t know about drives disconnected while it&#8217;s running. If you don&#8217;t have write permissions to the root of said drive then you will also get an error. I&#8217;ll fix these in future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2013/02/07/drive-caffeine-keep-sleepy-drives-awake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>console.log() with jsFiddle</title>
		<link>http://www.wkoorts.com/wkblog/2013/01/26/console-log-with-jsfiddle/</link>
		<comments>http://www.wkoorts.com/wkblog/2013/01/26/console-log-with-jsfiddle/#comments</comments>
		<pubDate>Sat, 26 Jan 2013 06:52:59 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=262</guid>
		<description><![CDATA[jsFiddle is a great tool for quick JavaScript prototyping. While it&#8217;s possible to use your browser&#8217;s console log to preview bits and pieces of output, I was looking [..]]]></description>
				<content:encoded><![CDATA[<p><a href="http://jsfiddle.net" title="jsFiddle.net" target="_blank">jsFiddle</a> is a great tool for quick JavaScript prototyping.  While it&#8217;s possible to use your browser&#8217;s console log to preview bits and pieces of output, I was looking for a cleaner way to do this, using just the jsFiddle panes.  I&#8217;ve come up with a simple way to add a logging facility to the <strong>Result</strong> pane if you are using jQuery.</p>
<p>You can either start with my Fiddle directly <a href="http://jsfiddle.net/wkoorts/PGfgv/" title="here" target="_blank">here</a> or add the following to your Fiddle:</p>
<p><strong>HTML pane:</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p262code4'); return false;">View Code</a> HTML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2624"><td class="code" id="p262code4"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;console-log&quot;&gt;&lt;/div&gt;</pre></td></tr></table></div>

<p><strong>JavaScript pane (near the top):</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p262code5'); return false;">View Code</a> JAVASCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2625"><td class="code" id="p262code5"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> consoleLine <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&lt;p class=<span style="color: #000099; font-weight: bold;">\&quot;</span>console-line<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&lt;/p&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
console <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    log<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>text<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#console-log&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span>consoleLine<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span>text<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>CSS pane:</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p262code6'); return false;">View Code</a> CSS</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2626"><td class="code" id="p262code6"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.console-line</span>
<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">monospace</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2013/01/26/console-log-with-jsfiddle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaScript snippet: Remove base URL from link</title>
		<link>http://www.wkoorts.com/wkblog/2012/10/09/javascript-snippet-remove-base-url-from-link/</link>
		<comments>http://www.wkoorts.com/wkblog/2012/10/09/javascript-snippet-remove-base-url-from-link/#comments</comments>
		<pubDate>Mon, 08 Oct 2012 20:10:16 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=250</guid>
		<description><![CDATA[I needed this function this morning so I thought I&#8217;d share it in case someone else does too. ?View Code JAVASCRIPTfunction RemoveBaseUrl&#40;url&#41; &#123; /* * Replace base URL [..]]]></description>
				<content:encoded><![CDATA[<p>I needed this function this morning so I thought I&#8217;d share it in case someone else does too.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p250code8'); return false;">View Code</a> JAVASCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2508"><td class="code" id="p250code8"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> RemoveBaseUrl<span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">/*
     * Replace base URL in given string, if it exists, and return the result.
     *
     * e.g. &quot;http://localhost:8000/api/v1/blah/&quot; becomes &quot;/api/v1/blah/&quot;
     *      &quot;/api/v1/blah/&quot; stays &quot;/api/v1/blah/&quot;
     */</span>
    <span style="color: #003366; font-weight: bold;">var</span> baseUrlPattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/^https?:\/\/[a-z\:0-9.]+/</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> result <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> match <span style="color: #339933;">=</span> baseUrlPattern.<span style="color: #660066;">exec</span><span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>match <span style="color: #339933;">!=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        result <span style="color: #339933;">=</span> match<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>result.<span style="color: #660066;">length</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        url <span style="color: #339933;">=</span> url.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>result<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">return</span> url<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2012/10/09/javascript-snippet-remove-base-url-from-link/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It’s Not That Bad…</title>
		<link>http://www.wkoorts.com/wkblog/2012/09/19/its-not-that-bad/</link>
		<comments>http://www.wkoorts.com/wkblog/2012/09/19/its-not-that-bad/#comments</comments>
		<pubDate>Tue, 18 Sep 2012 13:16:11 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=237</guid>
		<description><![CDATA[It&#8217;s taken nearly a year for me to become angry inspired enough to blog again.  The culprit this time is ASP.NET poster boy Scott Hanselman.  I&#8217;m only mentioning [..]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s taken nearly a year for me to become <del>angry</del> inspired enough to blog again.  The culprit this time is ASP.NET poster boy Scott Hanselman.  I&#8217;m only mentioning him and will be linking to the inflammatory material in question because nobody reads my blog; he certainly doesn&#8217;t need the publicity.</p>
<p>So, what&#8217;s got me so annoyed?  Simply the fact that he&#8217;s bashing the software development profession.  He&#8217;s just written a post entitled <a title="Everything's broken and nobody's upset - Scott Hanselman" href="http://www.hanselman.com/blog/EverythingsBrokenAndNobodysUpset.aspx" target="_blank">&#8220;Everything&#8217;s broken and nobody&#8217;s upset&#8221;</a>.  Before now I&#8217;ve never really had a strong opinion on the guy one way or the other, and from what I&#8217;ve heard he&#8217;s done some great things for ASP.NET, but now he&#8217;s left me wondering whether he&#8217;s ever written a piece of software in his life.</p>
<p>After reading his post my first thought was that his PC clearly needs some love.  He bitches about the fact that he couldn&#8217;t find answers to his problems on Google.  In the old days, pre-Google, we would &#8220;debug&#8221; our own PCs.  Remarkable, I know!  With just a pinch of know-how of the basics of software and a smidgeon of motivation I know he could go a long way to solving some of these earth-shattering, depression-inducing problems he has (e.g. Outlook &#8220;never shuts down cleanly&#8221;).</p>
<p>I wonder if he is aware that there is not just one piece of software for every task?  He complains repeatedly about iPhoto.  Why not use an alternative?  Put capitalism to work!  Vote with your feet!  Embrace competition!</p>
<p>Don&#8217;t get me wrong, I fully empathise with Joe Average who just wants to get things done on his PC.  I encourage users to complain and am only too grateful as a developer when users alert me to a problem I was previously unaware of.  After all, I can&#8217;t fix something I&#8217;m not aware of.</p>
<p>I appreciate the sentiment of the article, but the way he&#8217;s presented his point is simply over the top and unnecessarily whiney and unconstructive.  If his everyday tools are giving him this much hassle then HE, as an empowered user, is at fault.</p>
<p>Am I saying software is perfect?  Obviously not.  What I&#8217;m saying is that software development, like anything in life, is about priorities.  With development platforms as highly abstracted and diversely layered as just about anything we work with today, bugs, and even just the potential for bugs, arise exponentially quickly as a system grows.  With cloud-based applications we at least have the opportunity to update quickly and frequently with far greater transparency and less hassle for our users.</p>
<p>The problem basically sorts itself out.  In the world of capitalism, those products which work will float up the crowd psyche into a pleasant mental association and enjoy the praise they deserve.  It&#8217;s a tough world out there, but that&#8217;s what we signed up for.  People will vote with their feet and judge with their keyboards.  There is no more realistic and honest appraisal than this.</p>
<p>As software developers, we have several jobs to do.  One of those jobs is making it easy and rewarding for users to let us know what part of our software is getting in their way.  We need to make sure that we provide a channel where users can easily let us know their thoughts and where we can let them know we are listening and are grateful for their feedback.  We need them more than they need us, and we need to show them that our product is better than the competition.</p>
<p>Scott&#8217;s closing line really kills me:</p>
<blockquote><p>If you think I&#8217;m just whining, let me just say this. I&#8217;m am complaining not because it sucks, but because I KNOW we can do better.</p></blockquote>
<p>All I can say is that&#8217;s such a cop-out.  He doesn&#8217;t offer any explanation or real advice on improving the status quo as he perceives it.  None of the software he mentioned is even as broken as his grammar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2012/09/19/its-not-that-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Steer Well Clear</title>
		<link>http://www.wkoorts.com/wkblog/2011/10/13/steer-well-clear/</link>
		<comments>http://www.wkoorts.com/wkblog/2011/10/13/steer-well-clear/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 06:17:30 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=227</guid>
		<description><![CDATA[This morning a friend told me about this article, all about a new advertising campaign run by Steers, a South African fast food chain.  The article is all [..]]]></description>
				<content:encoded><![CDATA[<p>This morning a friend told me about <a title="Steers &quot;Failvertising&quot;" href="http://www.mojodojo.co.za/2011/10/11/failvertising-steers/" target="_blank">this article</a>, all about a new advertising campaign run by Steers, a South African fast food chain.  The article is all about the gross misuse of grammar in the campaign and musings on corporate irresponsibility.</p>
<p>I&#8217;d like to take this opportunity to share my thoughts on the humble, often-neglected, apostrophe and the evolution of language.</p>
<p>I fear we are witnessing its end times.  I believe that in three to four generations it will be completely gone from our language.</p>
<p>I&#8217;ve been amazed just how drastically its usage has dropped in the last few years.  I believe that gross misuse, such as that perpetrated by Steers, will be among the final nails in the coffin.</p>
<p>It&#8217;s unfortunate, but, on the other hand, who are we to fight the natural progression of any language as (perhaps inadvertently) orchestrated by its users?  Is that not how it became what it is today?  We must not forget that the primary function of any language is to communicate thoughts.</p>
<p>Maybe I just feel somewhat defeated after harping on about this kind of thing for so long.  Then again, I can&#8217;t quite bring myself to accept what feels like such an outright intellectual injustice more than anything.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2011/10/13/steer-well-clear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gentle Editing</title>
		<link>http://www.wkoorts.com/wkblog/2011/03/21/gentle-editing/</link>
		<comments>http://www.wkoorts.com/wkblog/2011/03/21/gentle-editing/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 02:09:13 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[stackexchange]]></category>
		<category><![CDATA[stackoverflow]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=220</guid>
		<description><![CDATA[Like many programmers, I&#8217;ve come to love Stack Overflow and the rest of the Stack Exchange network. Its unique Wiki / Blog / Forum blend creates a fantastic [..]]]></description>
				<content:encoded><![CDATA[<p>Like many programmers, I&#8217;ve come to love Stack Overflow and the rest of the Stack Exchange network. Its unique Wiki / Blog / Forum blend creates a fantastic platform for knowledge sharing.</p>
<p>Thanks to its Wiki-like editing capabilities, quality sticklers like myself can get stuck in and help to smooth out some of the rough edges of the content base.</p>
<p>Unfortunately we geeks sometimes allow our egos to get the better of us, resulting in reasonably common, dreaded, edit wars.  To avoid these, I&#8217;ve come up with what I feel is a very gentle and respectful editing style which I&#8217;d like to share with you today.  My edits always take a fair bit of time, but I feel it&#8217;s worth the investment in the interests of the greater good.</p>
<p><strong>Be respectful. </strong>This is the most important part of editing.  Whatever changes I make, I always consider the original poster and try to get a feel for what message they were trying to convey.</p>
<p><strong>The spirit of the post. </strong>Whenever I make an edit, I&#8217;m very careful not to change it so drastically that the meaning could be altered.  Any change I make should not alter the spirit of the post in any way.</p>
<p><strong>Different flavours of English. </strong>I happen to have been taught British English, and as such write words like colour, centre, flavour, and favourite.  However, I will <em>never </em>impose this on others.  I will never change a person&#8217;s spelling of a word to a different style of English.  Again, this comes down to respecting the writer.</p>
<p><strong>Edit once. </strong>Apart from reading the whole post before submitting my edits, I never come back to an edited post.  Edit once, and move on.  If others feel that further changes are necessary then so be it.  Communities that are as active as Stack Overflow tend to flow in the direction of what is right, so I really think people shouldn&#8217;t feel that they need to take it upon themselves to make sure that the post conforms to their personal standards.  This is what being part of a collaborative community is all about.</p>
<p>One&#8217;s editing goals should always be humble.  Edit for clarity.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2011/03/21/gentle-editing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>At Your Service</title>
		<link>http://www.wkoorts.com/wkblog/2011/02/01/at-your-service/</link>
		<comments>http://www.wkoorts.com/wkblog/2011/02/01/at-your-service/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 06:49:05 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Service Delivery]]></category>
		<category><![CDATA[customer service]]></category>
		<category><![CDATA[service delivery]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=216</guid>
		<description><![CDATA[I want to talk today about that all important entity that often gives us joy, sometimes anguish, and is the reason we service providers get up in the [..]]]></description>
				<content:encoded><![CDATA[<p>I want to talk today about that all important entity that often gives us joy, sometimes anguish, and is the reason we service providers get up in the morning.  The dear customer.</p>
<p>I&#8217;ve been agonising lately over the way service delivery is done, particularly in the outsourced IT space.  I believe we&#8217;re doing it wrong.  It feels all to often as if we&#8217;re fighting with the customer, bickering over the details of some or other statement of work or contract.  What&#8217;s explicitly included in scope?  What&#8217;s excluded?  Let&#8217;s have a meeting to discuss the various ways that statement 7.5 in section 82 of the contract can be interpreted!</p>
<p>It all feels very wrong.  As a member of technical staff often involved in this sort of carry-on I can&#8217;t help feeling that at the end of the day it&#8217;s the customer who loses out.  We never seem to stop to ask ourselves <em>why </em>we are arguing about a small detail.  This can lead to the customer feeling like they aren&#8217;t getting their money&#8217;s worth, or the big bosses of corporate IT feeling like the customer is trying to get an unfair amount of work out of a set budget.</p>
<p>It&#8217;s not just one company or even one industry.  This a general service delivery practice.  I&#8217;m talking about coming up with a black and white solution to a set of requirements, nailing down the details before work has started, then fighting to the death to keep those details in place.</p>
<p>Shouldn&#8217;t we be working <em>with </em>the customer instead of <em>for </em>them?  There&#8217;s an old service delivery anecdote which goes something like this: If you&#8217;re in the business of selling coffee machines to hotels, what you should be selling is <em>a solution to the problem of providing quality coffee, at a consistent rate, to the hotel&#8217;s customers. </em>This means not selling a coffee machine and moving on.  It means delivering <em>peace of mind </em>to your customer so that they never have to worry about coffee in their organisation ever again.</p>
<p>I believe we in the service delivery business have no more excuses.  We should be developing real <em>relationships </em>with our customers and truly coming to an understanding of their business needs.  We should be leveraging our knowledge and expertise in technical areas and helping our customers visualise a solution in a way they can clearly understand.</p>
<p>In the IT industry our customers come to us seeking a technical solution to a business problem.  They would like to use technology to help their business become more efficient, and ultimately more profitable.  It may sound idealistic, but it&#8217;s certainly worth striving for.</p>
<p>It&#8217;s time for customer service to change.  For the better.  Who&#8217;s up to the challenge?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2011/02/01/at-your-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doing it Write</title>
		<link>http://www.wkoorts.com/wkblog/2011/01/10/doing-it-write/</link>
		<comments>http://www.wkoorts.com/wkblog/2011/01/10/doing-it-write/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 05:40:13 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[grammar]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[spelling]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=205</guid>
		<description><![CDATA[I&#8217;ve blogged before about how the standard of our written language is rapidly deteriorating, and today I wanted to talk about how we&#8217;re making the problem worse with [..]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve blogged <a title="To Be, or nt 2B" href="http://www.wkoorts.com/wkblog/2008/02/20/to-be-or-nt-2-b/" target="_blank">before</a> about how the standard of our written language is rapidly deteriorating, and today I wanted to talk about how we&#8217;re making the problem worse with computers.</p>
<p>Spell checkers.  When they first arrived they were, for most, a true godsend.  No longer would we need to meticulously pour over our writing to detect teh classic little spelling mistakes we all make.  We could now save a significant amount of time with the stroke of a key.</p>
<p>Used with caution, spell checkers really can be a fantastic productivity tool.  In the hands of the careless, however, they can be the start of a dreadful downward spiral of written decay.  OK, that may be a little harsh, but sometimes when I&#8217;m reading through documentation it&#8217;s painfully obvious that the author rushed through their piece, not reading back over a single sentence they had written, flicked on the spell checker, accepted all changes and moved on.  It encourages laziness.</p>
<p>For some reason, and I can&#8217;t for the life of me think why, people seem to think that spell checkers can improve their writing itself.  Few people seem to take the time to think of the reader.  The reader!  One <strong>half </strong>of the written communication!</p>
<p>I&#8217;d like to take the opportunity to share some techniques I use to ensure more accurate, clear writing:</p>
<ul>
<li><strong>Learn to touch type.</strong> One of the most useful classes I took in high school was typing.  If you do any kind of writing, even if it&#8217;s just an e-mail or two per day, the skill of being able to type at a speed closer to how quickly your brain produces the words is truly invaluable.  It allows much more free-flowing thought simply because you don&#8217;t need to spend all that hand-eye energy on locating the correct keys.  Once you have the muscle memory of a seasoned touch typist you will feel incredibly liberated.</li>
<li><strong>Leave the spell checker until last. </strong>Re-read everything you write before you send or publish it.  Most of the time you will catch not only the spelling, but most importantly the grammatical errors before the time comes for the spell checker.  This reminds me of another advantage of touch typing: if you are looking at the screen while typing you will catch 9 out of 10 spelling errors <strong>along the way</strong>.  How great is that?  If you let your spell checker be only your last safety net you will become a much neater writer.</li>
</ul>
<p>My plea today is for anyone who ever writes with a keyboard.  All I ask is that you please use the tools we have been given as nothing more than that: tools.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2011/01/10/doing-it-write/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fanboys</title>
		<link>http://www.wkoorts.com/wkblog/2011/01/06/fanboys/</link>
		<comments>http://www.wkoorts.com/wkblog/2011/01/06/fanboys/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 00:42:21 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[fanboys]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=196</guid>
		<description><![CDATA[Whether it&#8217;s Apple versus Android, Linux versus anything else or, TechnologyA versus TechnologyB, tech fanboys are everywhere. I&#8217;m ashamed to admit that I used to be one, but [..]]]></description>
				<content:encoded><![CDATA[<p>Whether it&#8217;s Apple versus Android, Linux versus anything else or, TechnologyA versus TechnologyB, tech fanboys are everywhere.  I&#8217;m ashamed to admit that I used to be one, but proud to say that I no longer am.</p>
<p>What I do love about fanboys is their enthusiasm.  There&#8217;s no harm in getting excited about technology.  Being a tech enthusiast myself I encourage it wholeheartedly.  There&#8217;s a certain kind of passion that can be very healthy, particularly for emerging technologies.</p>
<p>What I don&#8217;t appreciate is the absolute, and sometimes even ironic, closed-mindedness associated with many fanboy subcultures.  This is certainly true of many Linux groups, several of which I have been involved with for over the past 10 years.  The attitude is often &#8220;We want everyone to have freedom of choice&#8230; as long as it&#8217;s one of OUR choices.&#8221;.  What the fanboys fail to realise is what <em>motivates </em>the technology choices of consumers, and indeed businesses.  Successful business decisions <em>have to</em> be based on what will make their workforce more productive and ultimately bring in bigger profits.  That&#8217;s the whole reason businesses exist.  In the case of &#8220;Linux vs. the world&#8221; it just doesn&#8217;t matter to most businesses that the source code is available for the OS kernel.</p>
<p>Consumers are an entirely different, and significantly more complex, beast.  Their purchasing decisions are founded far more in their psychology and emotions.  So much so that most of the marketing industry&#8217;s time and effort is put into understanding them.  People just don&#8217;t care about how strict Apple&#8217;s iPhone app submission process is, nor do they care.  Why should they?</p>
<p>Experience has taught me that what is most important is choosing <strong>the</strong> <strong>right tool for the job.</strong> At the rate that technology changes the same tool that is deemed the best today will almost certainly no longer be in 5 years time.  It is up to us as technology professionals to keep ourselves up to date and constantly re-evaluate the tools we use and promote.  We need to stop squabbling among ourselves over which web framework or mobile platform is superior and focus instead on the whole reason we exist: our users.</p>
<p>I&#8217;ll leave you with a beautiful little <a title="Computer Centre note" href="http://i.imgur.com/YPFBv.jpg" target="_blank">note</a> found in a 1968 guide to using a computer centre:</p>
<blockquote><p>Dedicated to Joe User.</p>
<p>He may be a nice guy.  Or he may be obstinate, obstreperous, too demanding, or exasperating.  But we love him.  Because without him we have no challenge, no ups and downs, no anxieties, no fun, and in fact, no job.  To him for whom we exist, we dedicate our work in the hope that it will make his research and study easier.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2011/01/06/fanboys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>K&amp;R – Solution to Exercise 1.23</title>
		<link>http://www.wkoorts.com/wkblog/2010/03/29/kr-solution-to-exercise-1-23/</link>
		<comments>http://www.wkoorts.com/wkblog/2010/03/29/kr-solution-to-exercise-1-23/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 07:59:30 +0000</pubDate>
		<dc:creator>Wayne Koorts</dc:creator>
				<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[k&r]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[state machine]]></category>

		<guid isPermaLink="false">http://www.wkoorts.com/wkblog/?p=182</guid>
		<description><![CDATA[I&#8217;m working my way through The C Programming Language at the moment, and so far I&#8217;m loving C&#8217;s purity and leanness. One of my few disappointments with the [..]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m working my way through <a href="http://en.wikipedia.org/wiki/The_C_Programming_Language_%28book%29">The C Programming Language</a> at the moment, and so far I&#8217;m loving C&#8217;s purity and leanness.</p>
<p>One of my few disappointments with the book is the lack of solutions to the exercises. The exercises are refreshingly challenging because the book isn&#8217;t aimed at beginning programmers. Unfortunately this means that the desire to validate one&#8217;s solutions is quite strong. Fortunately, Google had a solution to this problem: <a href="http://users.powernet.co.uk/eton/kandr2/">Richard Heathfield&#8217;s solutions site</a>.</p>
<p>I just finished my solution to exercise 1.23 (&#8220;Remove all comments from a C program&#8221;) and I&#8217;m quite chuffed with it so thought I would share it here. Out of the <a href="http://users.powernet.co.uk/eton/kandr2/krx123.html">multiple solutions</a> provided on Richard&#8217;s site, mine was about the closest to following the guidelines as far as what knowledge one is supposed to have of C by that (early) point in the book (the only thing I cheated with is the use of <code>break</code> and <code>continue</code> &#8211; it would have just been quite ugly without those two small additions). Basically the solution is a state machine using <code>if / else</code> instead of more traditional <code>switch</code> methods as <code>switch</code> had not yet been introduced.</p>
<p>My solution deals with all the special cases I could think of, and even deals with the tricky sample input on Richard&#8217;s site, provided at the bottom of the solutions page for this exercise.</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p182code10'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p18210"><td class="code" id="p182code10"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*
 * K&amp;amp;R Exercise 1-23
 *
 * &quot;Write a program to remove all comments from a C program. Don't
 *  forget to handle quoted strings and character constants properly.
 *  C comments don't nest.&quot;
 *
 */</span>
&nbsp;
<span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #993333;">int</span> c<span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> c2<span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> in_quotes <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> in_comment <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> current_quote<span style="color: #339933;">;</span>
&nbsp;
    c <span style="color: #339933;">=</span> getchar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">!=</span> EOF<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>in_comment <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #339933;">!</span>in_quotes<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\'</span>'</span> <span style="color: #339933;">||</span> c <span style="color: #339933;">==</span> <span style="color: #ff0000;">'&quot;'</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                in_quotes <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
                current_quote <span style="color: #339933;">=</span> c<span style="color: #339933;">;</span>
                putchar<span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> <span style="color: #ff0000;">'/'</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                c2 <span style="color: #339933;">=</span> getchar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>c2 <span style="color: #339933;">!=</span> EOF <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> c2 <span style="color: #339933;">==</span> <span style="color: #ff0000;">'*'</span><span style="color: #009900;">&#41;</span>
                <span style="color: #009900;">&#123;</span>
                    in_comment <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #b1b100;">else</span>
                <span style="color: #009900;">&#123;</span>
                    putchar<span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* Just a regular '/', so output it. */</span>
                    c <span style="color: #339933;">=</span> c2<span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #b1b100;">else</span>
            <span style="color: #009900;">&#123;</span>
                putchar<span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>in_comment<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #808080; font-style: italic;">/* Check for a closing comment. */</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> <span style="color: #ff0000;">'*'</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                c2 <span style="color: #339933;">=</span> getchar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>c2 <span style="color: #339933;">!=</span> EOF <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> c2 <span style="color: #339933;">==</span> <span style="color: #ff0000;">'/'</span><span style="color: #009900;">&#41;</span>
                <span style="color: #009900;">&#123;</span>
                    in_comment <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #b1b100;">else</span>
                <span style="color: #009900;">&#123;</span>
                    <span style="color: #808080; font-style: italic;">/* Don't advance to next character in stream. */</span>
                    c <span style="color: #339933;">=</span> c2<span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>in_quotes<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #808080; font-style: italic;">/* Skip over escaped chars. */</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\\</span>'</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                putchar<span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                c <span style="color: #339933;">=</span> getchar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #b1b100;">else</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #808080; font-style: italic;">/* Check for closing quote. */</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> current_quote<span style="color: #009900;">&#41;</span>
                    in_quotes <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            putchar<span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        c <span style="color: #339933;">=</span> getchar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.wkoorts.com/wkblog/2010/03/29/kr-solution-to-exercise-1-23/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
