<?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>Mon, 15 Mar 2010 14:40:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Amazing customer feedback&#8230;</title>
		<link>http://devblog.itsth.com/2010/03/15/amazing-customer-feedback/</link>
		<comments>http://devblog.itsth.com/2010/03/15/amazing-customer-feedback/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 14:40:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[Crash reports]]></category>
		<category><![CDATA[Customers]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=80</guid>
		<description><![CDATA[For one of my projects I have implement a system that handles crashes, reports technical details to me and asks the customer &#8220;which program function (hotkey or name in the menu) did you just use?&#8221;
So far, the answers to this question have often been amazingly useless. For example one customer just wrote: &#8220;CRASHED AGAIN! no [...]]]></description>
			<content:encoded><![CDATA[<p>For one of my projects I have implement a system that handles crashes, reports technical details to me and asks the customer &#8220;<em>which program function (hotkey or name in the menu) did you just use?</em>&#8221;</p>
<p>So far, the answers to this question have often been amazingly useless. For example one customer just wrote: &#8220;<em>CRASHED AGAIN! no obvious reason&#8230;</em>&#8220;. The data shows however that the customer was right in the middle of importing a project.</p>
<p>Yeah, no obvious reason. Customers are only humans, I guess. And some of them more than others&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/03/15/amazing-customer-feedback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weird problem with AfxWinMain()</title>
		<link>http://devblog.itsth.com/2010/01/27/weird-problem-with-afxwinmain/</link>
		<comments>http://devblog.itsth.com/2010/01/27/weird-problem-with-afxwinmain/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 13:01:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[AfxGetThread]]></category>
		<category><![CDATA[AfxWinMain]]></category>
		<category><![CDATA[NULL]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=75</guid>
		<description><![CDATA[I spent the last hours hunting down a weird crash problem in AfxWinMain(). It&#8217;s the init function in an MFC application that gets called before anything else.
And it crashes at &#8220;if (!pThread-&#62;InitInstance())&#8221; because AfxGetThread() returned a NULL pointer.
The problem was paired with link errors that vanished when the buid was repeated. Since this is &#8220;normal&#8221; with [...]]]></description>
			<content:encoded><![CDATA[<p>I spent the last hours hunting down a weird crash problem in AfxWinMain(). It&#8217;s the init function in an MFC application that gets called before anything else.</p>
<p>And it crashes at &#8220;<strong>if (!pThread-&gt;InitInstance())</strong>&#8221; because AfxGetThread() returned a NULL pointer.</p>
<p>The problem was paired with link errors that vanished when the buid was repeated. Since this is &#8220;normal&#8221; with MS C++ (I&#8217;ve seen that problem often before), I didn&#8217;t really notice it.</p>
<p>As it turns out the entire code was correct. I imported it into a new project and it worked. Comparing the the vcproj-Files I found the line that made all the difference. Removing this line suddenly fixed my problem:</p>
<p>&#8220;ObjectFile=&#8221;.\DebugD64&#8243;</p>
<p>(in Configuration &gt; Tool Name=&#8221;VCCLCompilerTool&#8221;).</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/01/27/weird-problem-with-afxwinmain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange AdWords status problems</title>
		<link>http://devblog.itsth.com/2010/01/14/strange-adwords-status-problems/</link>
		<comments>http://devblog.itsth.com/2010/01/14/strange-adwords-status-problems/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 09:09:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[marketing]]></category>
		<category><![CDATA[AdWords]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=73</guid>
		<description><![CDATA[Okay, so I finally found a way of contacting AdWords. I had problems with two new ads. One has been under review for more than a week, another was approved, but had zero impressions.
For both cases, I got a meaningless standard text, explaining their policy.  And both times the ad suddenly worked. So, something was [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, so I finally found a way of contacting AdWords. I had problems with two new ads. One has been under review for more than a week, another was approved, but had zero impressions.</p>
<p>For both cases, I got a meaningless standard text, explaining their policy.  And both times the ad suddenly worked. So, something was definitely <a href="http://blog.softwarepromotions.com/index.php/google-adwords-the-machine-is-broken-please-fix-it-2009-12-30/">broken</a> and is now fixed, but Google doesn&#8217;t even bother to say so&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/01/14/strange-adwords-status-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awkward help from GoogleAdwords</title>
		<link>http://devblog.itsth.com/2010/01/11/awkward-help-from-googleadwords/</link>
		<comments>http://devblog.itsth.com/2010/01/11/awkward-help-from-googleadwords/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 21:37:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[marketing]]></category>
		<category><![CDATA[AdWords]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=70</guid>
		<description><![CDATA[Google&#8217;s always amazing when it comes to finding the right pages. I wanted to contact then, so I searched the official German Adwords Help for &#8220;Kontakt&#8221;.
Places 8+9 were:

If you don&#8217;t speak German: unmöglich=impossible. You get the rest, I think&#8230;
So, the AdWords help was helpful for me, too. I gave up contacting them. Less money for [...]]]></description>
			<content:encoded><![CDATA[<p>Google&#8217;s always amazing when it comes to finding the right pages. I wanted to contact then, so I searched the official German Adwords Help for &#8220;Kontakt&#8221;.</p>
<p>Places 8+9 were:</p>
<p><img class="alignnone" title="Adwords Kontakt" src="http://www.easy2sync.com/img/blog/AdwordsKontakt.png" alt="" width="500" height="158" /></p>
<p>If you don&#8217;t speak German: unmöglich=impossible. You get the rest, I think&#8230;</p>
<p>So, the AdWords help was helpful for me, too. I gave up contacting them. Less money for Google&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2010/01/11/awkward-help-from-googleadwords/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript MessageBeep</title>
		<link>http://devblog.itsth.com/2009/12/15/javascript-messagebeep/</link>
		<comments>http://devblog.itsth.com/2009/12/15/javascript-messagebeep/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 21:41:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=66</guid>
		<description><![CDATA[For quite some time I tried to find something like MessageBeep in JavaScript to attract the user&#8217;s attention for a change on the screen. JavaScript doesn&#8217;t have anything similar.
But I found a small flash player called niftyplayer that can play mp3 sounds, stay invisible and be controlled from javascript. To get the MessageBeep effect, simply [...]]]></description>
			<content:encoded><![CDATA[<p>For quite some time I tried to find something like MessageBeep in JavaScript to attract the user&#8217;s attention for a change on the screen. JavaScript doesn&#8217;t have anything similar.</p>
<p>But I found a small flash player called <a href="http://www.varal.org/media/niftyplayer/">niftyplayer</a> that can play mp3 sounds, stay invisible and be controlled from javascript. To get the MessageBeep effect, simply install the player, set width and height to 0 and call niftyplayer(&#8216;niftyPlayer1&#8242;).play();</p>
<p>(Thanks to pragma for pointing me in the right direction.)</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2009/12/15/javascript-messagebeep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Google to protect your site</title>
		<link>http://devblog.itsth.com/2009/11/29/using-google-to-protect-your-site/</link>
		<comments>http://devblog.itsth.com/2009/11/29/using-google-to-protect-your-site/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 18:35:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=63</guid>
		<description><![CDATA[Is your website error free? My site  has grown over the years and uses a lot of PHP code. It's difficult to test...]]></description>
			<content:encoded><![CDATA[<p>Is your website error free?</p>
<p>My site  has grown over the years and uses a lot of PHP code. It&#8217;s difficult to test each and every aspect of it. Here are 3 simple tricks that can help you test your website. They don&#8217;t replace a real test (that you should do after a each change), but they&#8217;re a nice addition.</p>
<p><strong>Trick 1:</strong></p>
<p>Use Google to search your website for &#8220;error&#8221; or &#8220;warning&#8221;. You can use the format:<br />
site:yourdomain.com (warning or error )</p>
<p>This of course has a terrible lag, since Google crawls your website only every few days or weeks, but on the other hand Google may use different parameters or aspects that you use in your own tests.</p>
<p>The real fun comes with combination of trick 2.</p>
<p><strong>Trick 2:</strong></p>
<p>Use Google alerts to automatically search your website for problems. You can create a free Google alerts account and use the search mentioned above to have Google automatically check your site every day. If something breaks, Google will send you an e-mail.</p>
<p><strong>Trick 3:</strong></p>
<p>Same as above, but use your Google to watch your site for hacked pages. A hacker might have exploited a weakness in your server and created a new page for whatever product he promotes with his spam mails. You probably don&#8217;t want to become involved with this. So instead of using &#8220;warning or error&#8221; in the search. use a list of the usual phrases and medical products that the spam mails usually contain.</p>
<p>It&#8217;s a one-time work of a few minutes. The rest of the work is done automatically by Google and can save you a lot of trouble.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2009/11/29/using-google-to-protect-your-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using usertype.dat as spell checker</title>
		<link>http://devblog.itsth.com/2009/11/15/using-usertype-dat-as-spell-checker/</link>
		<comments>http://devblog.itsth.com/2009/11/15/using-usertype-dat-as-spell-checker/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 11:36:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[keywords]]></category>
		<category><![CDATA[usertype.dat]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=58</guid>
		<description><![CDATA[There are thousands of classes, structure, functions and constants in the Windows library and it&#8217;s often hard to remember the right spelling. Here&#8217;s a simple trick to use the usertype.dat as a very simple spell checker.
Usertype.dat?
First, usertype.dat is a file which can be configured in the MS IDE (see help file, because it differs with [...]]]></description>
			<content:encoded><![CDATA[<p>There are thousands of classes, structure, functions and constants in the Windows library and it&#8217;s often hard to remember the right spelling. Here&#8217;s a simple trick to use the usertype.dat as a very simple spell checker.</p>
<p><strong>Usertype.dat?</strong><br />
First, usertype.dat is a file which can be configured in the MS IDE (see help file, because it differs with the versions). Simply activate it and use my <a href="http://www.easy2sync.com/img/blog/USERTYPE:DAT">usertype.dat</a> as a start. It contains almost 4000 key words from the libraries.</p>
<p>When you now type one of these key words right, it will be displayed in a different color (I prefer gray &#8211; to emphasize that I don&#8217;t have to pay attention here). Here&#8217;s how it can look like.</p>
<p><strong>Example:</strong></p>
<p><img class="alignnone" title="Usertype sample" src="http://www.easy2sync.com/img/blog/Usertype.gif" alt="" width="435" height="77" /></p>
<p>Note that all the common things like HICON, LoadImage or LR_DEFAULTCOLOR are written in gray because they&#8217;re spelled correct. And other words (variables in this case) like hIcon and IconId1 a printed in white because they&#8217;re not predefined. If I had written Load_Image (instead of LoadImage), it would have been printed in white, too, and I know that it might be incorrect.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2009/11/15/using-usertype-dat-as-spell-checker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A website navigation mistake</title>
		<link>http://devblog.itsth.com/2009/10/21/a-website-navigation-mistake/</link>
		<comments>http://devblog.itsth.com/2009/10/21/a-website-navigation-mistake/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 11:53:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[marketing]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=55</guid>
		<description><![CDATA[I&#8217;m currently thinking about buying a new computer and came across Dell&#8217;s website. Here&#8217;s the menu that they presented to me to choose from:

Don&#8217;t know about you, but I was completely lost here. Would I want a Studio or and XPS computer? No idea. Probably the folks at Dell know their products too well and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently thinking about buying a new computer and came across Dell&#8217;s website. Here&#8217;s the menu that they presented to me to choose from:</p>
<p><img class="alignnone" title="Dell menu" src="http://www.easy2sync.com/img/blog/dell_menu.png" alt="" width="222" height="366" /></p>
<p>Don&#8217;t know about you, but I was completely lost here. Would I want a Studio or and XPS computer? No idea. Probably the folks at Dell know their products too well and sometimes forget how it must look like for their (first-time) customers.</p>
<p>I left Dell&#8217;s website (without bothering to &#8216;learn&#8217; what they mean) and revisited my own site to see if I did it any better. And was surprised to see that I made the same mistake  (a bit) with the product names.</p>
<p>Some of my product names (like 1-Click Duplicate Delete for Outlook) are pretty clear. Others (like ReplyButler) can leave you guessing. A customer might be interested in it, but only if I make it easy for him to understand what the product is for.</p>
<p>So here&#8217;s the way I found to make it clearer:</p>
<p><img class="alignnone" title="Menu ITSTH" src="http://www.easy2sync.com/img/blog/itsth_menu.png" alt="" width="319" height="370" /></p>
<p>It&#8217;s still very brief, but at least tells you enough about it to decide whether you might be interested or not.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2009/10/21/a-website-navigation-mistake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Being online in Great Britain</title>
		<link>http://devblog.itsth.com/2009/09/06/being-online-in-great-britain/</link>
		<comments>http://devblog.itsth.com/2009/09/06/being-online-in-great-britain/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 11:03:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[Mobile internet]]></category>
		<category><![CDATA[O2]]></category>
		<category><![CDATA[Scotland]]></category>
		<category><![CDATA[Three]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[UK]]></category>
		<category><![CDATA[WiFi]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=53</guid>
		<description><![CDATA[We visited Scotland this year and having my own little business, having access to the internet was important to me.
It was a lot easier than expected. Very many Hotels and B&#38;Bs have WiFi nowadays &#8211; a lot more than in Ireland two years ago. So it was easy to go online with my laptop. Except [...]]]></description>
			<content:encoded><![CDATA[<p>We visited Scotland this year and having my own little business, having access to the internet was important to me.</p>
<p>It was a lot easier than expected. Very many Hotels and B&amp;Bs have WiFi nowadays &#8211; a lot more than in Ireland two years ago. So it was easy to go online with my laptop. Except for the B&amp;B that had WEP2, which my (old) laptop doesn&#8217;t support.</p>
<p>Just for the heck of it, I also wanted to have internet access with my cell phone &#8211; that however was quite difficult.</p>
<p>The mobile company &#8220;Three&#8221; seemed to offer good rates for prepaid connections. I had researched that before. However, they don&#8217;t sell them at the store. The vendor guy send us to the O2 store next door.</p>
<p>Okay, O2 *does* sell them. But they are terribly complicated. I purchased a SIM card for 10 GBP here (without having to register it to my name, surprisingly). But the internet access didn&#8217;t work. I had to activate it with a scratch card. Then (as I found out with my laptop and WiFi next day) I had to book a &#8220;bolt-on&#8221; with a special SMS (&#8220;web&#8221; to 21300) and wait almost 48 hours as O2 took its sweet time processing it. Then (with another internet research) I had to correct the APN (payandgo.o2.co.uk / vertigo / password) which the SIM provides wrong by default. And then it finally worked. However, I&#8217;m only allowed to use it on my cell phone, now with the laptop&#8230;</p>
<p>Now I only have to remember to cancel the &#8220;bolt-on&#8221; (SMS &#8220;web off&#8221; to 21300) before I return home&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2009/09/06/being-online-in-great-britain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dangerous QuickSort</title>
		<link>http://devblog.itsth.com/2009/05/15/dangerous-quicksort/</link>
		<comments>http://devblog.itsth.com/2009/05/15/dangerous-quicksort/#comments</comments>
		<pubDate>Fri, 15 May 2009 13:49:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[IntroSort]]></category>
		<category><![CDATA[QuickSort]]></category>
		<category><![CDATA[Sorting]]></category>
		<category><![CDATA[Stack]]></category>
		<category><![CDATA[Stack Overflow]]></category>

		<guid isPermaLink="false">http://devblog.itsth.com/?p=51</guid>
		<description><![CDATA[When it comes to sorting, QuickSort is an all-time-favourite (so I though) and I chose it for implementing a sortable list with data. In some cases (when there were on few changes), it didn&#8217;t perform well, to I switched to an old-fashioned bubble-sort in such cases.
What I had to learn now, is that if the [...]]]></description>
			<content:encoded><![CDATA[<p>When it comes to sorting, QuickSort is an all-time-favourite (so I though) and I chose it for implementing a sortable list with data. In some cases (when there were on few changes), it didn&#8217;t perform well, to I switched to an old-fashioned bubble-sort in such cases.</p>
<p>What I had to learn now, is that if the data that has to be sorted, is arranged in the right / unfortunate way, then QuickSort can easily crash your program by consuming excessively stack space and finally causing a stack overflow. You won&#8217;t need much data for this. 10,000 items is enough to perform terribly slow and finally crashing the software.</p>
<p>I switched to IntroSort, which seams to work better (so far) and (according to Wikipedia) behaves better in worst-scenarios than QuickSort. We&#8217;ll see. Sample implementations for IntroSort are rare, but I found one linked in <a href="http://www.codercorner.com/blog/?p=90">this blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.itsth.com/2009/05/15/dangerous-quicksort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
