<?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 on: LandlordMax&#8217;s Most Challenging Bug</title>
	<atom:link href="http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/</link>
	<description>Follow Steph through his real estate and business journeys</description>
	<lastBuildDate>Thu, 29 Jul 2010 14:02:53 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Steph</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1147</link>
		<dc:creator>Steph</dc:creator>
		<pubDate>Mon, 30 Oct 2006 17:57:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1147</guid>
		<description>Hi Mark,

I didn&#039;t know that... From my initial impressions searching on Google I was pretty sure there were 20 or so different encodings. To be quite honest, I&#039;m very ignorant as to the details of the JPG encodings, and I don&#039;t really have an interest in knowing them, I&#039;m just too busy on other higher priority items.

It&#039;s s very interesting to know about the thumbnail! Thank you for sharing that information. Therefore from what I gather they aren&#039;t part of the spec if their not in the header, something that was added after by Photoshop and similar software?

Thanks for the information, it&#039;s very appreciated. In regards to the solution we&#039;re going to implement, you&#039;re comments and suggestions are still making me ponder which path to take... Sometimes I find that if I just sit on the options for a while, let it work in the back of my mind, it easier for me. At this point I haven&#039;t decided yet.</description>
		<content:encoded><![CDATA[<p>Hi Mark,</p>
<p>I didn&#8217;t know that&#8230; From my initial impressions searching on Google I was pretty sure there were 20 or so different encodings. To be quite honest, I&#8217;m very ignorant as to the details of the JPG encodings, and I don&#8217;t really have an interest in knowing them, I&#8217;m just too busy on other higher priority items.</p>
<p>It&#8217;s s very interesting to know about the thumbnail! Thank you for sharing that information. Therefore from what I gather they aren&#8217;t part of the spec if their not in the header, something that was added after by Photoshop and similar software?</p>
<p>Thanks for the information, it&#8217;s very appreciated. In regards to the solution we&#8217;re going to implement, you&#8217;re comments and suggestions are still making me ponder which path to take&#8230; Sometimes I find that if I just sit on the options for a while, let it work in the back of my mind, it easier for me. At this point I haven&#8217;t decided yet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1141</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Mon, 30 Oct 2006 12:19:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1141</guid>
		<description>Since there are anly 3 colour modes for JPEG, I don&#039;t think false positives would be a problem.  But I can see a problem with thumbnails.  They are not declared in the header, so you would have to find them separately.  A tough chore.

Good luck with your solution.</description>
		<content:encoded><![CDATA[<p>Since there are anly 3 colour modes for JPEG, I don&#8217;t think false positives would be a problem.  But I can see a problem with thumbnails.  They are not declared in the header, so you would have to find them separately.  A tough chore.</p>
<p>Good luck with your solution.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steph</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1073</link>
		<dc:creator>Steph</dc:creator>
		<pubDate>Fri, 27 Oct 2006 20:28:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1073</guid>
		<description>Hi Mark,

You&#039;re right, I skipped over the part that the code &quot;only&quot; lets you detect it, nothing more. You&#039;re absolutely right, my apologees.

One thing though that I&#039;ve been thinking of since then, no matter what kinds of checks we do, we still have to implement the code in case there is an error. For example, maybe there&#039;s another format that will cause a similar issue. I&#039;ve read something about the Photoshop thumbnail preview mode causing issues with many image renderers too.  

So the question then becomes, do we just implement one solution or two? Seeing your code, it&#039;s a fairly simple implementation, so it makes me want to implement such a check. But then I start to think about testing it. I&#039;ve only come accross one image that has this issue (of course I can create others). But now how do I test for false positives? 

Testing for false positives can become very complex, there are many image modes. Since we also have to implement the other solution because of this, is it worth going through this extra effort? 

That&#039;s a hard question. Right now I&#039;m leaning towards no. Not because the solution is difficult, you provided a great succint solution (thank you!), but testing it is very difficult. We need to test images that have this issue, and all other image formats to make sure we&#039;re not preventing a valid mode. This false positive testing is starting to scare me in terms of costs...

And if we look at the gain, since we have to implement the other solution that deals with all cases, what&#039;s the gain of this additional check? It&#039;s an initial performance gain when first importing the images (so we never have to try to render them). This is why I&#039;m going to go with just the simple solution of catching the errors when rendering at this time. Yes it&#039;s more expensive to implement, but we have to implement it anyways, and it&#039;s much cheaper to test.

And yes, you&#039;re absolutely right, sometimes the obvious simple solution is the hardest to see! I know I&#039;ve been guilty of that one more than once :) 

These days, I always try to find some type of justification for what we add into LandlordMax. When you&#039;re smaller every penny counts that much more! It&#039;s also easy to fall into the trap of not fixing bugs, but I&#039;m very opposed to this because I&#039;m strong believer of design debt. However, if the bug fix is very large, the frequency of occurence very low, and the spread non-existant (only affects this, it does not increase design debt), then sometimes you need to look at the alternatives, as was the case with this bug. 

To give you an idea of some bug fixes that we can&#039;t justify with just the model I described above is performance enhancements. We&#039;ve done some major performance enhancements with the upcoming major release (as well as with version 2.12). We spent a lot of time and effort, almost 1/2 of it was performance based! 

Will this automatically convert to sales? Maybe, maybe not. However if we hadn&#039;t made these enhancements we would be acquiring a lot of design debt which would have hit us later. Maybe not tomorow, but soon enough. When it comes to performance you&#039;re only as strong (fast) as the weakest (slowest) link in your chain.</description>
		<content:encoded><![CDATA[<p>Hi Mark,</p>
<p>You&#8217;re right, I skipped over the part that the code &#8220;only&#8221; lets you detect it, nothing more. You&#8217;re absolutely right, my apologees.</p>
<p>One thing though that I&#8217;ve been thinking of since then, no matter what kinds of checks we do, we still have to implement the code in case there is an error. For example, maybe there&#8217;s another format that will cause a similar issue. I&#8217;ve read something about the Photoshop thumbnail preview mode causing issues with many image renderers too.  </p>
<p>So the question then becomes, do we just implement one solution or two? Seeing your code, it&#8217;s a fairly simple implementation, so it makes me want to implement such a check. But then I start to think about testing it. I&#8217;ve only come accross one image that has this issue (of course I can create others). But now how do I test for false positives? </p>
<p>Testing for false positives can become very complex, there are many image modes. Since we also have to implement the other solution because of this, is it worth going through this extra effort? </p>
<p>That&#8217;s a hard question. Right now I&#8217;m leaning towards no. Not because the solution is difficult, you provided a great succint solution (thank you!), but testing it is very difficult. We need to test images that have this issue, and all other image formats to make sure we&#8217;re not preventing a valid mode. This false positive testing is starting to scare me in terms of costs&#8230;</p>
<p>And if we look at the gain, since we have to implement the other solution that deals with all cases, what&#8217;s the gain of this additional check? It&#8217;s an initial performance gain when first importing the images (so we never have to try to render them). This is why I&#8217;m going to go with just the simple solution of catching the errors when rendering at this time. Yes it&#8217;s more expensive to implement, but we have to implement it anyways, and it&#8217;s much cheaper to test.</p>
<p>And yes, you&#8217;re absolutely right, sometimes the obvious simple solution is the hardest to see! I know I&#8217;ve been guilty of that one more than once <img src='http://www.followsteph.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>These days, I always try to find some type of justification for what we add into LandlordMax. When you&#8217;re smaller every penny counts that much more! It&#8217;s also easy to fall into the trap of not fixing bugs, but I&#8217;m very opposed to this because I&#8217;m strong believer of design debt. However, if the bug fix is very large, the frequency of occurence very low, and the spread non-existant (only affects this, it does not increase design debt), then sometimes you need to look at the alternatives, as was the case with this bug. </p>
<p>To give you an idea of some bug fixes that we can&#8217;t justify with just the model I described above is performance enhancements. We&#8217;ve done some major performance enhancements with the upcoming major release (as well as with version 2.12). We spent a lot of time and effort, almost 1/2 of it was performance based! </p>
<p>Will this automatically convert to sales? Maybe, maybe not. However if we hadn&#8217;t made these enhancements we would be acquiring a lot of design debt which would have hit us later. Maybe not tomorow, but soon enough. When it comes to performance you&#8217;re only as strong (fast) as the weakest (slowest) link in your chain.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1065</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Fri, 27 Oct 2006 15:02:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1065</guid>
		<description>Damn, spelled skepticism wrong.  There goes my credibility. :)</description>
		<content:encoded><![CDATA[<p>Damn, spelled skepticism wrong.  There goes my credibility. <img src='http://www.followsteph.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1063</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Fri, 27 Oct 2006 11:24:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1063</guid>
		<description>I understand your skeptisism.  This code does not allow you to display it.  It only allows you to detect if you can.  The rest of the spec talks about Huffman encoding and the like, which would take a lot of time to understand.(I have not taken that time.)  Don&#039;t let your skeptisism make you automaticaly dismiss a solution that could be correct.  The code snippet is so small that it could easily be inserted to try it out and removed later if you still don&#039;t trust it.

Also consider your blog related to this where you explain that it is not cost effective for you to go with a developer oriented solution, but need to go more with a business oriented solution.  Consider that Microsoft and the Firefox crew have huge budgets and may be only considering the developer oriented solution.  As you get bigger sometimes you can get blinded to the simple solution.

Good luck.</description>
		<content:encoded><![CDATA[<p>I understand your skeptisism.  This code does not allow you to display it.  It only allows you to detect if you can.  The rest of the spec talks about Huffman encoding and the like, which would take a lot of time to understand.(I have not taken that time.)  Don&#8217;t let your skeptisism make you automaticaly dismiss a solution that could be correct.  The code snippet is so small that it could easily be inserted to try it out and removed later if you still don&#8217;t trust it.</p>
<p>Also consider your blog related to this where you explain that it is not cost effective for you to go with a developer oriented solution, but need to go more with a business oriented solution.  Consider that Microsoft and the Firefox crew have huge budgets and may be only considering the developer oriented solution.  As you get bigger sometimes you can get blinded to the simple solution.</p>
<p>Good luck.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steph</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1043</link>
		<dc:creator>Steph</dc:creator>
		<pubDate>Thu, 26 Oct 2006 18:44:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1043</guid>
		<description>Hi Mark,

Please take this with the utmost of respect. If it was this simple (I&#039;m not implying that getting to this snippet didn&#039;t take a lot of time and understanding) where one could just write out the code (you mention you just wrote it and didn&#039;t thoroughly test it), then it makes be believe that Mozilla and Internet Explorer should have been able to get it right with all their massive resources? So the question is why didn&#039;t they? 

By this reasoning, I&#039;m going to assume there&#039;s more than meets the eye...</description>
		<content:encoded><![CDATA[<p>Hi Mark,</p>
<p>Please take this with the utmost of respect. If it was this simple (I&#8217;m not implying that getting to this snippet didn&#8217;t take a lot of time and understanding) where one could just write out the code (you mention you just wrote it and didn&#8217;t thoroughly test it), then it makes be believe that Mozilla and Internet Explorer should have been able to get it right with all their massive resources? So the question is why didn&#8217;t they? </p>
<p>By this reasoning, I&#8217;m going to assume there&#8217;s more than meets the eye&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1042</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Thu, 26 Oct 2006 18:38:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1042</guid>
		<description>Thumbnails or any other anomolies should not cause a problem.  From the specs I read, there are certain guaruntees.  All information is divided into segments.  A segment starts with the the byte 0xFF and 0xFF will only be used to denote the start of a segment.  The next byte after 0xFF says what type of segment you have.  For the header segment, the bytes 0xFF 0xC0 will appear in that order.  The combination of 0xFF followed by 0xC0 will only appear once in any JPEG file.  Also the header size is fixed, so the 9th position contains the image type flag always.(Counting 0xFF as position 0.)

The code is not thoroughly tested.  I just wrote it.

Here is the header part of the JPEG spec.

SOF0: Start Of Frame 0:
~~~~~~~~~~~~~~~~~~~~~~~

  - $ff, $c0 (SOF0)
  - length (high byte, low byte), 8+components*3
  - data precision (1 byte) in bits/sample, usually 8 (12 and 16 not
	supported by most software)
  - image height (2 bytes, Hi-Lo), must be &gt;0 if DNL not supported
  - image width (2 bytes, Hi-Lo), must be &gt;0 if DNL not supported
  - number of components (1 byte), usually 1 = grey scaled, 3 = color YCbCr
	or YIQ, 4 = color CMYK)
  - for each component: 3 bytes
	 - component id (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q)
	 - sampling factors (bit 0-3 vert., 4-7 hor.)
	 - quantization table number

 Remarks:
  - JFIF uses either 1 component (Y, greyscaled) or 3 components (YCbCr,
	sometimes called YUV, colour).


The spec is on www.wotsit.org if you want to look at it fully.  The segment definitions are near the end.</description>
		<content:encoded><![CDATA[<p>Thumbnails or any other anomolies should not cause a problem.  From the specs I read, there are certain guaruntees.  All information is divided into segments.  A segment starts with the the byte 0xFF and 0xFF will only be used to denote the start of a segment.  The next byte after 0xFF says what type of segment you have.  For the header segment, the bytes 0xFF 0xC0 will appear in that order.  The combination of 0xFF followed by 0xC0 will only appear once in any JPEG file.  Also the header size is fixed, so the 9th position contains the image type flag always.(Counting 0xFF as position 0.)</p>
<p>The code is not thoroughly tested.  I just wrote it.</p>
<p>Here is the header part of the JPEG spec.</p>
<p>SOF0: Start Of Frame 0:<br />
~~~~~~~~~~~~~~~~~~~~~~~</p>
<p>  &#8211; $ff, $c0 (SOF0)<br />
  &#8211; length (high byte, low byte), 8+components*3<br />
  &#8211; data precision (1 byte) in bits/sample, usually 8 (12 and 16 not<br />
	supported by most software)<br />
  &#8211; image height (2 bytes, Hi-Lo), must be &gt;0 if DNL not supported<br />
  &#8211; image width (2 bytes, Hi-Lo), must be &gt;0 if DNL not supported<br />
  &#8211; number of components (1 byte), usually 1 = grey scaled, 3 = color YCbCr<br />
	or YIQ, 4 = color CMYK)<br />
  &#8211; for each component: 3 bytes<br />
	 &#8211; component id (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q)<br />
	 &#8211; sampling factors (bit 0-3 vert., 4-7 hor.)<br />
	 &#8211; quantization table number</p>
<p> Remarks:<br />
  &#8211; JFIF uses either 1 component (Y, greyscaled) or 3 components (YCbCr,<br />
	sometimes called YUV, colour).</p>
<p>The spec is on <a href="http://www.wotsit.org" rel="nofollow">http://www.wotsit.org</a> if you want to look at it fully.  The segment definitions are near the end.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steph</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1041</link>
		<dc:creator>Steph</dc:creator>
		<pubDate>Thu, 26 Oct 2006 17:19:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1041</guid>
		<description>Hi Mark,

Thanks for posting all the code!

Do you know how thoroughly this code has been tested? The reason I ask is because from what I&#039;ve heard the way the meta data is encoded can be slightly different (the specs are a little ambigiuous at times). From I see in your code, you&#039;re expecting the CMYK flag (aka. image type flag) to appear at a specific location within the header block (9 bytes from the start of the header)...

From what I understand, Photoshop for example can also throw in a thumbnail within the image which can skew the whole thing too? Do you know anything about this?</description>
		<content:encoded><![CDATA[<p>Hi Mark,</p>
<p>Thanks for posting all the code!</p>
<p>Do you know how thoroughly this code has been tested? The reason I ask is because from what I&#8217;ve heard the way the meta data is encoded can be slightly different (the specs are a little ambigiuous at times). From I see in your code, you&#8217;re expecting the CMYK flag (aka. image type flag) to appear at a specific location within the header block (9 bytes from the start of the header)&#8230;</p>
<p>From what I understand, Photoshop for example can also throw in a thumbnail within the image which can skew the whole thing too? Do you know anything about this?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1039</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Thu, 26 Oct 2006 13:22:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1039</guid>
		<description>Sorry, forgot about entities:
import java.awt.Graphics;
import java.awt.Image;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Test extends JFrame {
    Image im;
    public void loadImage(InputStream in) throws Exception {
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        byte buffer[] = new byte[8192];
        int read = -1;
        do {
            read = in.read(buffer);
            if(read != -1) {
                bout.write(buffer, 0, read);
            }
        } while(read != -1);
        byte imageData[] = bout.toByteArray();
        int startOfHeader = -1;
        for(int i=0;i&lt;imageData.length - 1;i++) {
            if((imageData[i] &amp; 0x000000ff) == 0xff &amp;&amp; (imageData[i + 1] &amp; 0x000000ff) == 0xc0) {
                startOfHeader = i;
                break;
            }
        }
        //if image type = 4 CYMK mode is used
        int imageType = bout.toByteArray()[startOfHeader + 9];
        System.out.println(&quot;type = &quot; + imageType);
        im = ImageIO.read(new ByteArrayInputStream(bout.toByteArray()));
        setSize(im.getWidth(null), im.getHeight(null));
    }
    public void paint(Graphics g) {
        g.drawImage(im, 0, 0, this);
    }
    public static void main(String args[]) {
        Test t = new Test();
        try {
            t.loadImage(new FileInputStream(&quot;any_image.jpg&quot;));
            t.setVisible(true);
            t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}</description>
		<content:encoded><![CDATA[<p>Sorry, forgot about entities:<br />
import java.awt.Graphics;<br />
import java.awt.Image;<br />
import java.io.ByteArrayInputStream;<br />
import java.io.ByteArrayOutputStream;<br />
import java.io.FileInputStream;<br />
import java.io.InputStream;</p>
<p>import javax.imageio.ImageIO;<br />
import javax.swing.JFrame;</p>
<p>public class Test extends JFrame {<br />
    Image im;<br />
    public void loadImage(InputStream in) throws Exception {<br />
        ByteArrayOutputStream bout = new ByteArrayOutputStream();<br />
        byte buffer[] = new byte[8192];<br />
        int read = -1;<br />
        do {<br />
            read = in.read(buffer);<br />
            if(read != -1) {<br />
                bout.write(buffer, 0, read);<br />
            }<br />
        } while(read != -1);<br />
        byte imageData[] = bout.toByteArray();<br />
        int startOfHeader = -1;<br />
        for(int i=0;i&lt;imageData.length &#8211; 1;i++) {<br />
            if((imageData[i] &amp; 0&#215;000000ff) == 0xff &amp;&amp; (imageData[i + 1] &amp; 0&#215;000000ff) == 0xc0) {<br />
                startOfHeader = i;<br />
                break;<br />
            }<br />
        }<br />
        //if image type = 4 CYMK mode is used<br />
        int imageType = bout.toByteArray()[startOfHeader + 9];<br />
        System.out.println(&#8221;type = &#8221; + imageType);<br />
        im = ImageIO.read(new ByteArrayInputStream(bout.toByteArray()));<br />
        setSize(im.getWidth(null), im.getHeight(null));<br />
    }<br />
    public void paint(Graphics g) {<br />
        g.drawImage(im, 0, 0, this);<br />
    }<br />
    public static void main(String args[]) {<br />
        Test t = new Test();<br />
        try {<br />
            t.loadImage(new FileInputStream(&#8221;any_image.jpg&#8221;));<br />
            t.setVisible(true);<br />
            t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />
        }<br />
        catch(Exception e) {<br />
            e.printStackTrace();<br />
        }<br />
    }<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/comment-page-1/#comment-1038</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Thu, 26 Oct 2006 13:21:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.followsteph.com/2006/10/19/landlordmaxs-most-challenging-bug/#comment-1038</guid>
		<description>rest of code:

        for(int i=0;i</description>
		<content:encoded><![CDATA[<p>rest of code:</p>
<p>        for(int i=0;i</p>
]]></content:encoded>
	</item>
</channel>
</rss>
