<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments for Mark Nelson</title>
	<atom:link href="http://marknelson.us/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://marknelson.us</link>
	<description>Programming, mostly.</description>
	<lastBuildDate>Wed, 16 May 2012 08:30:05 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>Comment on The Million Random Digit Challenge Revisited by Ashish</title>
		<link>http://marknelson.us/2006/06/20/million-digit-challenge/comment-page-7/#comment-542212</link>
		<dc:creator>Ashish</dc:creator>
		<pubDate>Wed, 16 May 2012 08:30:05 +0000</pubDate>
		<guid isPermaLink="false">/2006/06/20/million-digit-challenge/#comment-542212</guid>
		<description>The prize amount ecouurages to try this. In a way, challange creator also doubtful about the impossibility of this work. Hence he seems has not taken much risk ;)</description>
		<content:encoded><![CDATA[<p>The prize amount ecouurages to try this. In a way, challange creator also doubtful about the impossibility of this work. Hence he seems has not taken much risk ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Intellectual Property: A Modest Proposal by Quora</title>
		<link>http://marknelson.us/2005/10/03/ip-proposal/comment-page-1/#comment-540385</link>
		<dc:creator>Quora</dc:creator>
		<pubDate>Sat, 12 May 2012 22:14:33 +0000</pubDate>
		<guid isPermaLink="false">http://marknelson.us/2005/10/03/ip-proposal/#comment-540385</guid>
		<description>&lt;strong&gt;What is Brazil&#039;s stance on music piracy?...&lt;/strong&gt;

Brazil&#039;s music industry is being hurt by changes in distribution as much or more than the business in the US. For example: &gt; In Brazil, full priced major label local album releases from the five largest music companies in 2008 were down 80% from their...</description>
		<content:encoded><![CDATA[<p><strong>What is Brazil&#8217;s stance on music piracy?&#8230;</strong></p>
<p>Brazil&#8217;s music industry is being hurt by changes in distribution as much or more than the business in the US. For example: &gt; In Brazil, full priced major label local album releases from the five largest music companies in 2008 were down 80% from their&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on LZW Data Compression by Mark Nelson</title>
		<link>http://marknelson.us/1989/10/01/lzw-data-compression/comment-page-6/#comment-531138</link>
		<dc:creator>Mark Nelson</dc:creator>
		<pubDate>Tue, 01 May 2012 17:59:15 +0000</pubDate>
		<guid isPermaLink="false">/1989/10/01/lzw-data-compression/#comment-531138</guid>
		<description>Hi Robert,

Sorry, I didn&#039;t get a chance to address this properly until today - I was traveling.

First, I think using pseudocode was a bad idea on my part, but it was a long time ago, and that was a different me.
I&#039;ve got an updated version of the article that I think is a lot more trustworthy, and it only uses C++ code - no pseudocode. The decompress routine looks like this:
[C]
  unsigned int code;
  unsigned int next_code = 257;
  while ( in &gt;&gt; code ) {
    out &lt;&lt; strings[code];
    if ( previous_string.size() )
      strings[next_code++] = previous_string + strings[code][0];
    previous_string = strings[code];
  }
[/C]
In this case, previous_string is a standin for OLD_CODE, and it does exactly what you are saying it should do.

In the pseudo code, I am very casually going back and forth between strings and codes, which is a confusing mistake. So when I say OLD_CODE = NEW_CODE, I am doing so on the idea that NEW_CODE == STRING. Which it is, more or less, if you look up NEW_CODE in the library, you get STRING.

In any case, your correction is well taken, and as I say, I think the whole thing is a lot more clear and less prone to misinterpretation in the new article at:

http://marknelson.us/2011/11/08/lzw-revisited/

Thanks for your input, and thanks for reading.


- Mark</description>
		<content:encoded><![CDATA[<p>Hi Robert,</p>
<p>Sorry, I didn't get a chance to address this properly until today - I was traveling.</p>
<p>First, I think using pseudocode was a bad idea on my part, but it was a long time ago, and that was a different me.<br />
I've got an updated version of the article that I think is a lot more trustworthy, and it only uses C++ code - no pseudocode. The decompress routine looks like this:</p>
<div class="igBar"><span id="lc-1"><a href="#" onclick="javascript:showPlainTxt('c-1'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C:</span>
<div id="c-1">
<div class="c">
<ol>
<li class="li1">
<div class="de1"><span class="kw4">unsigned</span> <span class="kw4">int</span> code;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw4">unsigned</span> <span class="kw4">int</span> next_code = <span class="nu0">257</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span> in&gt;&gt; code <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; out &lt;&lt;strings<span class="br0">&#91;</span>code<span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> previous_string.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; strings<span class="br0">&#91;</span>next_code++<span class="br0">&#93;</span> = previous_string + strings<span class="br0">&#91;</span>code<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; previous_string = strings<span class="br0">&#91;</span>code<span class="br0">&#93;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="br0">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
In this case, previous_string is a standin for OLD_CODE, and it does exactly what you are saying it should do.</p>
<p>In the pseudo code, I am very casually going back and forth between strings and codes, which is a confusing mistake. So when I say OLD_CODE = NEW_CODE, I am doing so on the idea that NEW_CODE == STRING. Which it is, more or less, if you look up NEW_CODE in the library, you get STRING.</p>
<p>In any case, your correction is well taken, and as I say, I think the whole thing is a lot more clear and less prone to misinterpretation in the new article at:</p>
<p><a href="http://marknelson.us/2011/11/08/lzw-revisited/" rel="nofollow">http://marknelson.us/2011/11/08/lzw-revisited/</a></p>
<p>Thanks for your input, and thanks for reading.</p>
<p>- Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on LZW Data Compression by Robert K</title>
		<link>http://marknelson.us/1989/10/01/lzw-data-compression/comment-page-6/#comment-529782</link>
		<dc:creator>Robert K</dc:creator>
		<pubDate>Mon, 30 Apr 2012 02:19:25 +0000</pubDate>
		<guid isPermaLink="false">/1989/10/01/lzw-data-compression/#comment-529782</guid>
		<description>How does that work with line 8 then?  &quot;add OLD_CODE + CHARACTER to the translation table&quot;

OLD_CODE needs to be a string in this context, no?  Sure seems like what you want is the old string value in this case, not the old (unresolved) lookup code.</description>
		<content:encoded><![CDATA[<p>How does that work with line 8 then?  "add OLD_CODE + CHARACTER to the translation table"</p>
<p>OLD_CODE needs to be a string in this context, no?  Sure seems like what you want is the old string value in this case, not the old (unresolved) lookup code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on LZW Data Compression by Mark Nelson</title>
		<link>http://marknelson.us/1989/10/01/lzw-data-compression/comment-page-6/#comment-529679</link>
		<dc:creator>Mark Nelson</dc:creator>
		<pubDate>Sun, 29 Apr 2012 23:57:10 +0000</pubDate>
		<guid isPermaLink="false">/1989/10/01/lzw-data-compression/#comment-529679</guid>
		<description>No.

Codes are integer values, which mostly start at 256 or 257 and increase montonically.

Strings are sequences of bytes.

So the assignment you propose doesn&#039;t work - it is assuming some kind of implicit conversion from one type to another, and that doesn&#039;t happen.

- Mark</description>
		<content:encoded><![CDATA[<p>No.</p>
<p>Codes are integer values, which mostly start at 256 or 257 and increase montonically.</p>
<p>Strings are sequences of bytes.</p>
<p>So the assignment you propose doesn't work - it is assuming some kind of implicit conversion from one type to another, and that doesn't happen.</p>
<p>- Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on LZW Data Compression by Robert K</title>
		<link>http://marknelson.us/1989/10/01/lzw-data-compression/comment-page-6/#comment-529617</link>
		<dc:creator>Robert K</dc:creator>
		<pubDate>Sun, 29 Apr 2012 22:43:03 +0000</pubDate>
		<guid isPermaLink="false">/1989/10/01/lzw-data-compression/#comment-529617</guid>
		<description>I believe Line 9 of Figure 3 (decompression pseudocode):

[c]
OLD_CODE = NEW_CODE
[/c]

... should actually be:

[c]
OLD_CODE = STRING
[/c]

No?</description>
		<content:encoded><![CDATA[<p>I believe Line 9 of Figure 3 (decompression pseudocode):</p>
<div class="igBar"><span id="lc-2"><a href="#" onclick="javascript:showPlainTxt('c-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C:</span>
<div id="c-2">
<div class="c">
<ol>
<li class="li1">
<div class="de1">OLD_CODE = NEW_CODE </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>... should actually be:</p>
<div class="igBar"><span id="lc-3"><a href="#" onclick="javascript:showPlainTxt('c-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C:</span>
<div id="c-3">
<div class="c">
<ol>
<li class="li1">
<div class="de1">OLD_CODE = <span class="kw4">STRING</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>No?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Million Random Digit Challenge Revisited by Ernst</title>
		<link>http://marknelson.us/2006/06/20/million-digit-challenge/comment-page-7/#comment-523607</link>
		<dc:creator>Ernst</dc:creator>
		<pubDate>Sat, 21 Apr 2012 04:22:41 +0000</pubDate>
		<guid isPermaLink="false">/2006/06/20/million-digit-challenge/#comment-523607</guid>
		<description>on April 11th, 2012 at 8:39 am, Tobbi said:

Ernst, here are some useful comments for your work on challenge

&gt;&gt; 617 and 673 is 415241

617 and 673 is 1290, not 415241

&gt;&gt; ... but since we are all interested in prime pairs ...

log(a * b) = log(a) + log(b)

Let million-digit-file = x * y, then
log(x) + log(y) = log(x * y) = log(mdf) =~ 3320000

&gt;&gt; Hint: Well try recursive modulus.

My hint would be: Well try math!

Pardon Tobbi those are the factors of 415241 as in 617 times 673 = 415241.

 I can understand your confusion and I promise to not try and trick you again.

 Be Well!</description>
		<content:encoded><![CDATA[<p>on April 11th, 2012 at 8:39 am, Tobbi said:</p>
<p>Ernst, here are some useful comments for your work on challenge</p>
<p>&gt;&gt; 617 and 673 is 415241</p>
<p>617 and 673 is 1290, not 415241</p>
<p>&gt;&gt; ... but since we are all interested in prime pairs ...</p>
<p>log(a * b) = log(a) + log(b)</p>
<p>Let million-digit-file = x * y, then<br />
log(x) + log(y) = log(x * y) = log(mdf) =~ 3320000</p>
<p>&gt;&gt; Hint: Well try recursive modulus.</p>
<p>My hint would be: Well try math!</p>
<p>Pardon Tobbi those are the factors of 415241 as in 617 times 673 = 415241.</p>
<p> I can understand your confusion and I promise to not try and trick you again.</p>
<p> Be Well!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Million Random Digit Challenge Revisited by Ernst</title>
		<link>http://marknelson.us/2006/06/20/million-digit-challenge/comment-page-7/#comment-523606</link>
		<dc:creator>Ernst</dc:creator>
		<pubDate>Sat, 21 Apr 2012 04:17:43 +0000</pubDate>
		<guid isPermaLink="false">/2006/06/20/million-digit-challenge/#comment-523606</guid>
		<description>Hey Milcho!

 I see you found the challenge interesting!

 cool!  


 But hiding data is not in the spirit of the challenge for sure!

 Give it some time and maybe you will find a unique solution!

 Update :  

            I&#039;m working on bit-pattern matching using a constructed data-set.  Also I am learning about OpenMP and parallel processing along with this effort.
 So win or lose there are benefits for trying.
 

Ernst</description>
		<content:encoded><![CDATA[<p>Hey Milcho!</p>
<p> I see you found the challenge interesting!</p>
<p> cool!  </p>
<p> But hiding data is not in the spirit of the challenge for sure!</p>
<p> Give it some time and maybe you will find a unique solution!</p>
<p> Update :  </p>
<p>            I'm working on bit-pattern matching using a constructed data-set.  Also I am learning about OpenMP and parallel processing along with this effort.<br />
 So win or lose there are benefits for trying.</p>
<p>Ernst</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Fast String Searching With Suffix Trees by to do or learn &#124; Pearltrees</title>
		<link>http://marknelson.us/1996/08/01/suffix-trees/comment-page-3/#comment-523215</link>
		<dc:creator>to do or learn &#124; Pearltrees</dc:creator>
		<pubDate>Fri, 20 Apr 2012 08:39:00 +0000</pubDate>
		<guid isPermaLink="false">/1996/08/01/suffix-trees/#comment-523215</guid>
		<description>[...] Even you can make a tree McCreight&#039;s original algorithm for constructing a suffix tree had a few disadvantages. Principle among them was the requirement that the tree be built in reverse order, meaning characters were added from the end of the input. This ruled the algorithm out for on line processing, making it much more difficult to use for applications such as data compression. In fact, the reduction in the number of nodes is such that the time and space requirements for constructing a suffix tree are reduced from O(N 2 ) to O(N). In the worst case, a suffix tree can be built with a maximum of 2N nodes, where N is the length of the input text. Fast String Searching With Suffix Trees [...]</description>
		<content:encoded><![CDATA[<p>[...] Even you can make a tree McCreight&#039;s original algorithm for constructing a suffix tree had a few disadvantages. Principle among them was the requirement that the tree be built in reverse order, meaning characters were added from the end of the input. This ruled the algorithm out for on line processing, making it much more difficult to use for applications such as data compression. In fact, the reduction in the number of nodes is such that the time and space requirements for constructing a suffix tree are reduced from O(N 2 ) to O(N). In the worst case, a suffix tree can be built with a maximum of 2N nodes, where N is the length of the input text. Fast String Searching With Suffix Trees [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Million Random Digit Challenge Revisited by Milcho</title>
		<link>http://marknelson.us/2006/06/20/million-digit-challenge/comment-page-7/#comment-518803</link>
		<dc:creator>Milcho</dc:creator>
		<pubDate>Fri, 13 Apr 2012 20:08:42 +0000</pubDate>
		<guid isPermaLink="false">/2006/06/20/million-digit-challenge/#comment-518803</guid>
		<description>@Mark

It makes sense, the rules of the game are to actually compress the data, not shuffle it around to unseen places. It took me all of one hour to write the code of what I posted above, and that&#039;s just the simplest way to use the filesystem to hide data.

It&#039;s amazing how recent some of these claims for incredible compression are, and that there&#039;s still people who buy into it. Oh well, they may be wasting their time, but it&#039;s at least slightly amusing to read about it.</description>
		<content:encoded><![CDATA[<p>@Mark</p>
<p>It makes sense, the rules of the game are to actually compress the data, not shuffle it around to unseen places. It took me all of one hour to write the code of what I posted above, and that's just the simplest way to use the filesystem to hide data.</p>
<p>It's amazing how recent some of these claims for incredible compression are, and that there's still people who buy into it. Oh well, they may be wasting their time, but it's at least slightly amusing to read about it.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

