<?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>&#62;devblog_</title>
	<atom:link href="http://devblog.itsth.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.itsth.com</link>
	<description>Thoughts on developing shareware</description>
	<lastBuildDate>Wed, 14 Dec 2011 16:29:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The three types of insane customers&#8230;.</title>
		<link>http://devblog.itsth.com/2011/12/14/the-three-types-of-insane-customers/</link>
		<comments>http://devblog.itsth.com/2011/12/14/the-three-types-of-insane-customers/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 16:29:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=175</guid>
		<description><![CDATA[1. The reason guesser His goldfish died while the customer was installing your software. So it must be your fault. That&#8217;s why he sends you a three-page e-mail. 2. The ignorer  You wrote that the customer should do 1. &#8230; 2. &#8230; 3. &#8230; to solve the problem. The customer writes back that he did [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. The reason guesser</strong></p>
<p>His goldfish died while the customer was installing your software. So it must be your fault. That&#8217;s why he sends you a three-page e-mail.</p>
<p><strong>2. The ignorer </strong></p>
<p>You wrote that the customer should do 1. &#8230; 2. &#8230; 3. &#8230; to solve the problem. The customer writes back that he did something completely different, that it still doesn&#8217;t work and that your support sucks.</p>
<p><strong>3. The insister</strong></p>
<p>Tells you that you&#8217;re all wrong, ignores everything that you wrote and insists that you&#8217;d better send him a solution RIGHT NOW.</p>
<p>And probably there are many more types&#8230; <img src='http://devblog.itsth.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2011/12/14/the-three-types-of-insane-customers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The secret back-to-edit hotkey</title>
		<link>http://devblog.itsth.com/2011/06/02/the-secret-back-to-edit-hotkey/</link>
		<comments>http://devblog.itsth.com/2011/06/02/the-secret-back-to-edit-hotkey/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 08:55:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[back-to-edit]]></category>
		<category><![CDATA[editing]]></category>
		<category><![CDATA[hotkey]]></category>
		<category><![CDATA[redo]]></category>
		<category><![CDATA[undo]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=170</guid>
		<description><![CDATA[Just a tiny trick today. When you&#8217;re programming, you&#8217;re often&#8230; typing something Then you browse through the same file, look for something copy something And now you want to get back  to the place that you previously edited. There&#8217;s a secret hotkey (actually a sequence) for that which works in most editors: Ctrl+Z, Ctrl+Y. Works [...]]]></description>
			<content:encoded><![CDATA[<p>Just a tiny trick today.</p>
<p>When you&#8217;re programming, you&#8217;re often&#8230;</p>
<ul>
<li>typing something</li>
<li>Then you browse through the same file, look for something</li>
<li>copy something</li>
<li>And now you want to get back  to the place that you previously edited.</li>
</ul>
<p>There&#8217;s a secret hotkey (actually a sequence) for that which works in most editors: Ctrl+Z, Ctrl+Y.</p>
<p>Works in Visual Studio, Word, text editors, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2011/06/02/the-secret-back-to-edit-hotkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A bit of advertising: ZeroClickSpellchecker</title>
		<link>http://devblog.itsth.com/2011/04/05/a-bit-of-advertising-zeroclickspellchecker/</link>
		<comments>http://devblog.itsth.com/2011/04/05/a-bit-of-advertising-zeroclickspellchecker/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 11:48:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=164</guid>
		<description><![CDATA[I recently published a new software: ZeroClickSpellchecker. It&#8217;s basically a spell-checker which doesn&#8217;t mark errors, but auto-corrects them. At least those that can be corrected safely. (It won&#8217;t try to correct kljfhsdakljh, for example.) But quite a lot errors can be corrected, so the program works pretty well. It effectively that speeds up your typing, [...]]]></description>
			<content:encoded><![CDATA[<p>I recently published a new software: ZeroClickSpellchecker. It&#8217;s basically a spell-checker which doesn&#8217;t mark errors, but auto-corrects them. At least those that can be corrected safely. (It won&#8217;t try to correct kljfhsdakljh, for example.) But quite a lot errors can be corrected, so the program works pretty well. It effectively that speeds up your typing, because you don&#8217;t have to stop and correct any more.</p>
<p>It&#8217;s great tool when writing e-mails. Basically I wrote it because I was fed up with typing &#8220;copmuter&#8221; again and again. If you find this (or other typos) in your own e-mails, check out my <a href="http://www.easy2sync.com/en/produkte/ZeroClickSpellchecker.php">auto-correction</a> software.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2011/04/05/a-bit-of-advertising-zeroclickspellchecker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useful function: EnableWindowsDependingOn</title>
		<link>http://devblog.itsth.com/2011/03/21/useful-function-enablewindowsdependingon/</link>
		<comments>http://devblog.itsth.com/2011/03/21/useful-function-enablewindowsdependingon/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 14:48:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=161</guid>
		<description><![CDATA[One of my favorite internal functions. It helps my manage my app&#8217;s GUI. Checkboxes that cause their sub-elements to be greyed out when not checked can be easily handled by this: bool EnableWindowsDependingOn (CWnd *pParent, DWORD DependingOnThisCheckbox, DWORD Value1, ...) { va_list marker; bool bState = (((CButton*)pParent-&#62;GetDlgItem(DependingOnThisCheckbox))-&#62;GetCheck()!=0); DWORD i=Value1; va_start (marker, Value1); while (i != [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favorite internal functions. It helps my manage my app&#8217;s GUI. Checkboxes that cause their sub-elements to be greyed out when not checked can be easily handled by this:</p>
<pre>bool EnableWindowsDependingOn (CWnd *pParent, DWORD DependingOnThisCheckbox, DWORD Value1, ...)
{
 va_list marker;

 bool bState = (((CButton*)pParent-&gt;GetDlgItem(DependingOnThisCheckbox))-&gt;GetCheck()!=0);

 DWORD i=Value1;
 va_start (marker, Value1);
 while (i != 0)
 {
 if (i&lt;=0xffff)
 {
 if (pParent-&gt;GetDlgItem(i))
 pParent-&gt;GetDlgItem(i)-&gt;EnableWindow (bState);
 }
 else
 ((CWnd*)i)-&gt;EnableWindow (bState);

 i = va_arg (marker, long);
 }
 va_end (marker);

 return (bState);
}
</pre>
<p>It excepts the this pointer of your CDialog and the id of the master checkbox. Then you can append any number of sub-element ids or pointers. And finally a NULL. Example:<br />
EnableWindowsDependingOn (this, IDC_CHECK1, IDC_EDIT1, IDC_EDIT2, NULL);</p>
<p>This would enable the two edit boxes if the checkbox is enabled.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2011/03/21/useful-function-enablewindowsdependingon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Win+Tab in Debugging</title>
		<link>http://devblog.itsth.com/2010/12/31/wintab-in-debugging/</link>
		<comments>http://devblog.itsth.com/2010/12/31/wintab-in-debugging/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 10:21:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[debuggung]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=155</guid>
		<description><![CDATA[Placing a breakpoint can be dangerous. In some code sections, like drawing a menu, Windows doesn&#8217;t like to be interrupted. The debugger will stop your application, but your app will remain on-screen and Alt+Tab and all other options of changing the current application are blocked. Except, if you&#8217;re using Windows 7. For some reason the [...]]]></description>
			<content:encoded><![CDATA[<p>Placing a breakpoint can be dangerous. In some code sections, like drawing a menu, Windows doesn&#8217;t like to be interrupted. The debugger will stop your application, but your app will remain on-screen and Alt+Tab and all other options of changing the current application are blocked.</p>
<p>Except, if you&#8217;re using Windows 7.</p>
<p>For some reason the 3d-flipping mode with Win+Tab still works. And allows you to switch to the debugger.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/12/31/wintab-in-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devloping asp.NET websites in 3 simple steps&#8230;</title>
		<link>http://devblog.itsth.com/2010/12/07/devloping-asp-net-websites-in-3-simple-steps/</link>
		<comments>http://devblog.itsth.com/2010/12/07/devloping-asp-net-websites-in-3-simple-steps/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 12:44:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[microsoft]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=150</guid>
		<description><![CDATA[Step 1: Waste hours researching to find out how to do something trivial. (Like renaming the insert link) Step 2: Curse Microsoft Step 3: Throw out the MS way and program it yourself. Repeat for every trivial issue.]]></description>
			<content:encoded><![CDATA[<p>Step 1: Waste hours researching to find out how to do something trivial. (Like renaming the insert link)</p>
<p>Step 2: Curse Microsoft</p>
<p>Step 3: Throw out the MS way and program it yourself.</p>
<p>Repeat for every trivial issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/12/07/devloping-asp-net-websites-in-3-simple-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There IS life on the other side&#8230;</title>
		<link>http://devblog.itsth.com/2010/11/24/there-is-life-on-the-other-side/</link>
		<comments>http://devblog.itsth.com/2010/11/24/there-is-life-on-the-other-side/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 14:53:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[AISIP]]></category>
		<category><![CDATA[reg.net]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=145</guid>
		<description><![CDATA[&#8230;of the order form. I always suspected it, but it&#8217;s interesting to be on the other side for a change. I&#8217;m talking about being a customer for a  change. I tried to check out AISIP&#8217;s member forums and one has to pay for that. Okay, I tried. I filled in the reg.net order form, hit [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;of the order form. I always suspected it, but it&#8217;s interesting to be on the other side for a change.</p>
<p>I&#8217;m talking about being a customer for a  change. I tried to check out AISIP&#8217;s member forums and one has to pay for that. Okay, I tried. I filled in the reg.net order form, hit the submit button only to see the same form again. I double-checked my data, I looked for marks that I forget something. Nothing. Same form again. I triple-checked my data, tried another browser, another computer. Even my iPhone. Nothing worked. I contacted AISIP (three times). No reply. I contacted reg.net and got a standard mail. My reply to that mail was left unanswered.</p>
<p>So I want to pay, but I can&#8217;t. It&#8217;s frustrating.</p>
<p>Hope you&#8217;re treating your customers better than that. I know that I do, but I wonder if I should test *my* payment processor&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/11/24/there-is-life-on-the-other-side/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2005: Speeding up compiles</title>
		<link>http://devblog.itsth.com/2010/10/19/visual-studio-2005-speeding-up-compiles/</link>
		<comments>http://devblog.itsth.com/2010/10/19/visual-studio-2005-speeding-up-compiles/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 21:49:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=139</guid>
		<description><![CDATA[There&#8217;s a hidden switch in Visual Studio 2005 while doubles compile speed. I know, it sounds ridiculous.  But I&#8217;ve tested it. It&#8217;s MUCH faster now. The switch works by enabling multi-core processing. I have no idea why Microsoft has hidden this, instead of making it a big, obvious feature. Anyways. You can enable it by [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a hidden switch in Visual Studio 2005 while doubles compile speed.</p>
<p>I know, it sounds ridiculous.  But I&#8217;ve tested it. It&#8217;s MUCH faster now. The switch works by enabling multi-core processing. I have no idea why Microsoft has hidden this, instead of making it a big, obvious feature.</p>
<p>Anyways. You can enable it by adding /MP to the &#8220;Additional options&#8221; in &#8220;Configuration properties &gt; C/C++ &gt; Commandline&#8221;.</p>
<p>(Found it at <a href="http://lahsiv.net/blog/?p=40">1</a> and <a href="http://blog.280z28.org/archives/2007/10/17/">2</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/10/19/visual-studio-2005-speeding-up-compiles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Being online in Jersey</title>
		<link>http://devblog.itsth.com/2010/10/12/being-online-in-jersey/</link>
		<comments>http://devblog.itsth.com/2010/10/12/being-online-in-jersey/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 22:14:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[Jersey]]></category>
		<category><![CDATA[Online]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=135</guid>
		<description><![CDATA[I didn&#8217;t expect much when I searched for an option for mobile internet access in Jersey (Channel Islands). It wasn&#8217;t really important since our B&#38;B had WiFi. And for such a tiny country I didn&#8217;t expect much competition and thus bad service from the telcos. Wrong. So wrong. Mobile internet access is ridiculously cheap and [...]]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t expect much when I searched for an option for mobile internet access in Jersey (Channel Islands). It wasn&#8217;t really important since our B&amp;B had WiFi. And for such a tiny country I didn&#8217;t expect much competition and thus bad service from the telcos.</p>
<p>Wrong. So wrong.</p>
<p>Mobile internet access is ridiculously cheap and easy in Jersey. In fact the only problem was finding out where they sell it (Jersey Telecom, 18 Queen Street, St Helier; Mo-Sa 9:00-17:30). I paid only <a href="http://www.jerseytelecom.com/templates/LayoutB.aspx?id=2121">£9.99 for 1GB</a> of traffic. I wish mobile internet in the Netherlands was that cheap. <img src='http://devblog.itsth.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>And it worked just wonderful. No technical problems (like in Scotland), almost no coverage problems (as in Spain) and no trouble with the charging (as in the Netherlands). Great.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/10/12/being-online-in-jersey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dangerous CFile::GetStatus</title>
		<link>http://devblog.itsth.com/2010/10/01/dangerous-cfilegetstatus/</link>
		<comments>http://devblog.itsth.com/2010/10/01/dangerous-cfilegetstatus/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 11:57:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Dangerous]]></category>
		<category><![CDATA[GetStatus]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=133</guid>
		<description><![CDATA[The third (and I hope final) dangerous posting. This code looks harmless enough: CFileStatus rStatus; CFile::GetStatus (MyFilename, rStatus); And it will work most of the time. But CFileStatus uses CTime, which is limited to dates after 1.1.1970. If you apply this code to a file with a file-modification date of e.g. 1.1.1960, GetStatus will raise [...]]]></description>
			<content:encoded><![CDATA[<p>The third (and I hope final) <a href="http://devblog.itsth.com/tag/dangerous/">dangerous</a> posting.</p>
<p>This code looks harmless enough:</p>
<pre>CFileStatus rStatus;
CFile::GetStatus (MyFilename, rStatus);</pre>
<p>And it will work most of the time. But CFileStatus uses CTime, which is limited to dates after 1.1.1970. If you apply this code to a file with a file-modification date of e.g. 1.1.1960, GetStatus will raise an exception. (Which it isn&#8217;t documented to to.) And if you don&#8217;t catch that, it will terminate your program.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/10/01/dangerous-cfilegetstatus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

