<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>jjncj.com - tech</title>
    <link>http://jjncj.com/blog/</link>
    <description>News and writings by JJ and CJ and Family</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:blogadmin@jjncj.com" />
    <generator>Serendipity 1.3.1 - http://www.s9y.org/</generator>
    <pubDate>Fri, 10 Oct 2008 15:39:46 GMT</pubDate>

    <image>
        <url>http://jjncj.com/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: jjncj.com - tech - News and writings by JJ and CJ and Family</title>
        <link>http://jjncj.com/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Job Hunting</title>
    <link>http://jjncj.com/blog/archives/166-Job-Hunting.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/166-Job-Hunting.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=166</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=166</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    So, due to lack of projects at my current employer, I might be getting laid off come Wednesday.  Not the news one wants to hear. &lt;img src=&quot;http://jjncj.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
If anyone has any leads for telecommuting tech jobs, please let me know.  There is a link to my resume at the top-right of this page.&lt;br /&gt;
&lt;br /&gt;
Thanks! 
    </content:encoded>

    <pubDate>Fri, 10 Oct 2008 15:39:46 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/166-guid.html</guid>
    <category>job hunting</category>
<category>layoff</category>
<category>resume</category>
<category>tech</category>

</item>
<item>
    <title>Appreciating the money-saving efforts</title>
    <link>http://jjncj.com/blog/archives/160-Appreciating-the-money-saving-efforts.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/160-Appreciating-the-money-saving-efforts.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=160</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=160</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Today I was looking over the letter that came with our garbage bill, and saw that the City of Fairbanks was attempting to lower the cost of collecting garbage.  They are doing three things.  First, they are going to start working four 10-hour days instead of five 8-hour days.  They say this will save them time doing their mobilizing and demobilizing at the beginning and end of the day.  Makes sense.  Second, they will only drive through a neighborhood one time on the collection day.  Good idea.  I didn&#039;t even know they did multiple passes as it was.&lt;br /&gt;
&lt;br /&gt;
But the third way was the one that caught my attention:&lt;blockquote&gt;We are installing GPS systems on our City packer trucks and have redesigned routes to maximize efficiency and reduce trips to the landfill.&lt;/blockquote&gt;&lt;br /&gt;
I always love to see technology put to good use.&lt;br /&gt;
&lt;br /&gt;
Now, if we can only get them to implement something like &lt;a href=&quot;http://www.wayneusa.com/automatedsideloader/curbtender.html&quot;&gt;this system&lt;/a&gt; we could save them even more labor costs.  And we&#039;d be able to put yard waste in the bins without bagging it first! 
    </content:encoded>

    <pubDate>Fri, 19 Sep 2008 23:39:37 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/160-guid.html</guid>
    <category>efficiency</category>
<category>garbage</category>
<category>gps</category>
<category>tech</category>

</item>
<item>
    <title>Tipping the hat</title>
    <link>http://jjncj.com/blog/archives/143-Tipping-the-hat.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/143-Tipping-the-hat.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=143</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=143</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    It&#039;s always fun to see companies reference other companies with which they work.  VirtualBox is a software package that allows you run several different operating systems in their own virtual machines (like VMWare, Xen, etc).  Their about box is great.  They have the Suse Iguana (wearing a Red Hat), the Linux Penguin playing a tambourine emblazoned with the Ubuntu logo, the Microsoft &quot;Butterfly,&quot; stars (alluding to Mandrake/Mandriva) rising from the fire, and the BSD Daemon eating a multi-colored Apple.  No, VirtualBox can&#039;t boot OS X, but the apple is probably an allusion to Darwin, which I assume VirtualBox could boot, and upon which OS X is built.  Did I miss any logos?&lt;br /&gt;
&lt;!-- s9ymdb:31 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;600&quot; height=&quot;443&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://jjncj.com/blog/uploads/VirtualBoxAbout.jpg&quot; alt=&quot;&quot; /&gt; 
    </content:encoded>

    <pubDate>Wed, 28 May 2008 15:29:43 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/143-guid.html</guid>
    <category>allusion</category>
<category>apple</category>
<category>bsd</category>
<category>darwin</category>
<category>linux</category>
<category>osx</category>
<category>tech</category>
<category>virtualbox</category>
<category>vm</category>

</item>
<item>
    <title>The Futility of Comments</title>
    <link>http://jjncj.com/blog/archives/141-The-Futility-of-Comments.html</link>
            <category>programming</category>
    
    <comments>http://jjncj.com/blog/archives/141-The-Futility-of-Comments.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=141</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=141</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Anyone who has programmed for any length of time has an opinion about comments in code.  They&#039;re essential. They&#039;re not essential. Commenting is actually worse than not commenting.  It runs the gamut.  I&#039;m beginning to understand more and more that comments are actually a disctraction to clean, clear, concise code.  Especially when writing in Python, it is possible to write code that requires no comments, but is still 100% understandable and discoverable.  Sometimes a line or two is required to explain something not clear from context, but it&#039;s rare.&lt;br /&gt;
&lt;br /&gt;
After reading a piece by Steven Smith entitled &lt;a href=&quot;http://aspadvice.com/blogs/ssmith/archive/2008/05/01/Comments-in-Code-Indicate-Functions-Trying-To-Escape.aspx&quot; title=&quot;Steven Smith: Musings on ASP.NET and the .NET Developer Community&quot;&gt;Comments in Code Indicate Functions Trying To Escape&lt;/a&gt;, my lead programmer &lt;a href=&quot;http://blog.melhase.net/&quot; title=&quot;Round Rock River&quot;&gt;Troy Melhase&lt;/a&gt; (i.e. my &quot;boss&quot;), who is a strong proponent of clear code/no comments, wrote:&lt;br /&gt;
&lt;blockquote&gt;Yes.  Instead of writing comments, write code that doesn&#039;t need&lt;br /&gt;
comments.&lt;/blockquote&gt;&lt;br /&gt;
Clear, and concise, just like his code.  After musing on it a while, his ironic streak kicked in, and he composed the following &quot;epic tome,&quot; as he describes it, that so clearly illustrates the many useless blocks of comments I have seen in my time as a programmer.  He gave me permission to post it, so here you go! Enjoy.&lt;br /&gt;
&lt;br /&gt;
(BTW, visit Troy&#039;s blog.  He&#039;s written a Java to Python translator, and has a really cool stock-trading and analysis application.)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;python&quot; style=&quot;text-align: left&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Summary:&amp;#160; Explain why excessive comments suck.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Author:&amp;#160; Troy Melhase&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Email:&amp;#160; &amp;#160;troy@gci.net&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Date:&amp;#160; &amp;#160; 05/01/2008&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Detail:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Comments like this serve no purpose because you have to read all of the code in this file anyway.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## So here you are, reading useless information that I put here to satisfy a thoughtless policy&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## or an academic belief.&amp;#160; I could explain what the code does, but it&#039;s easier to blat out mindless&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## drivel that is easily mistaken for insight or actual work.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Even if I do add useful information to the code below (doubtful), someone will have to edit this&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## information as the code changes.&amp;#160; That&#039;s like writing the code twice, and of course that doubles&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## the chances of introducing a bug.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Plus, I&#039;ve distracted you from your purpose -- reading!&amp;#160; Reading code can be difficult without the&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## additional burden of constantly shifting gears between executable code and non-executable code (these &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## comments).&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## If you&#039;ve made it this far without giving up, you should realize that I&#039;ve still added zero information &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## to the subject and wasted your time in the process.&amp;#160; The original reply is still better, and you should&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## aim to adopt it as professional and personal coding policy.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## In case you missed the original reply, and in hopes of finding it here, buried at the bottom of this&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## epic tome (aka epic fail):&amp;#160; &amp;#160;Instead of writing comments, write code that doesn&#039;t need comments.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Plus:&amp;#160; extra file encoding type cruft.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Plus:&amp;#160; extra editor hint cruft.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Plus:&amp;#160; extra version control meta data cruft.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;## Plus:&amp;#160; version control history that should be left in the version control system.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;##&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Now, this doesn&#039;t preclude &lt;i&gt;documentation&lt;/i&gt;--we use doc strings at the beginning of files, functions, and classes quite heavily--but in-line comments in code are rare. 
    </content:encoded>

    <pubDate>Thu, 01 May 2008 09:03:05 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/141-guid.html</guid>
    <category>clarity</category>
<category>comments</category>
<category>programming</category>
<category>python</category>

</item>
<item>
    <title>Linux to have even better uptime</title>
    <link>http://jjncj.com/blog/archives/140-Linux-to-have-even-better-uptime.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/140-Linux-to-have-even-better-uptime.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=140</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    In the world of system Unix/Linux system administration, one of the statistics often quoted by system admins is their systems&#039; &quot;uptime.&quot;  That is, how long has the system been up and operational since its last reboot.  This is a conversation in which Windows system admins never join due to the fact that even the smallest system or software update often requires a reboot.  My personal best?  500-plus days.  Of course, I probably should have rebooted it in that time for some security updates, but for some reason it didn&#039;t get done.&lt;br /&gt;
&lt;br /&gt;
It seems Linux admins will soon have even more bragging rights when it comes to uptime.  A new project from MIT (where else?) has developed a way to apply security patches directly to a running kernel, without having to reboot.  Unless an update makes large changes to the kernel (in this case, modifies data structures), a kernel update will not require taking the system down.  Considering that a kernel update is the only reason to ever have to reboot a Linux system -- even hardware drivers can be updated without a reboot -- it might be possible to never reboot a Linux system, and still keep it up-to-date with all security patches.&lt;br /&gt;
&lt;br /&gt;
More information at the &lt;a href=&quot;http://web.mit.edu/ksplice/&quot; title=&quot;Rebootless Linux kernel security updates&quot;&gt;Ksplice&lt;/a&gt; site.  Very interesting stuff, indeed. 
    </content:encoded>

    <pubDate>Thu, 24 Apr 2008 10:49:15 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/140-guid.html</guid>
    <category>kernel</category>
<category>ksplice</category>
<category>linux</category>
<category>patching</category>
<category>security</category>
<category>tech</category>

</item>
<item>
    <title>If it walks like HDR, and quacks like HDR</title>
    <link>http://jjncj.com/blog/archives/133-If-it-walks-like-HDR,-and-quacks-like-HDR.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/133-If-it-walks-like-HDR,-and-quacks-like-HDR.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=133</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    It&#039;s probably HDR.&lt;br /&gt;
&lt;br /&gt;
I sometimes wonder how marketing types live with themselves.  Their whole purpose in life is to convince us to buy things for which we have no need, and often lack the money.  As George Foshee said, &quot;We spend money we don&#039;t have, to buy things we don&#039;t need, to impress people we don&#039;t like.&quot; But I digress. I was talking about marketers.  In addition to trying to convince us to buy things, sometimes they even take techniques, rename them, and then claim they invented them, as is the case in a press release I found today.&lt;br /&gt;
&lt;br /&gt;
First, a little background.  HDR (or High Dynamic Range) Photography is a method whereby you take several shots of scene at several different exposures, and then combine those shots into one.  This generates a final image that captures much more of the range visible to the human eye.  As usual, see &lt;a href=&quot;http://en.wikipedia.org/wiki/High_dynamic_range_imaging&quot; title=&quot;High Dynamic Range Imaging&quot;&gt;Wikipedia&lt;/a&gt; for more.&lt;br /&gt;
&lt;br /&gt;
So, today I came across a press release from a real estate web site.  Under the pretentious headline &quot;Arizona Firm Revolutionizes Real Estate Photography With New ELC Technology,&quot; they claim to have invented a technique called &quot;Enhanced Lighting Compression&quot; which promises to &quot;[bring] new level[s] of detail &amp;amp; appeal to property photos.&quot;  Hmm...sounds interesting. Let&#039;s read more.&lt;br /&gt;
&lt;br /&gt;
This is how they describe the process:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;ELC photography involves taking multiple simultaneous exposures with a specially configured digital camera. These images are processed at VMLH&#039;s studio, where they are integrated and enhanced with custom software that merges a series of images into one ELC photograph that can be printed, emailed or used on web pages as a standard JPEG photo file.&lt;/blockquote&gt;&lt;br /&gt;
Sounds exactly like HDR, except for the &quot;multiple simultaneous exposures&quot; part, which is either complete hyperbole, or they have a special multi-CCD camera.  Considering it is a marketing piece, I would assume the former, but if it is the latter, then it&#039;s still HDR photography, they just had someone make them a VERY expensive digital camera.  And on their web site, they simply claim that &quot;custom software&quot; is &quot;custom Photoshop settings.&quot;&lt;br /&gt;
&lt;br /&gt;
And I could stop there, since it&#039;s pretty clear they they have simply renamed an existing technique and are trying to market it under a new name.  But, there is other marketing-speak in the article that is just begging to be called out.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;The new Enhanced Lighting Compression (ELC) system produces pictures that bring out far more of the details seen by the human eye, creating stunning images that have a hyper-real level of presence, clarity and immediacy.&lt;/blockquote&gt;&lt;br /&gt;
&quot;Stunning images?&quot;  Well, maybe, in that it&#039;s more range than you are used to seeing in a photograph.  But no more stunning than a well-taken and well-lit shot of a house.&lt;br /&gt;
&lt;br /&gt;
Brings out more detail?  Yes, HDR photography does that. But &quot;Hyper-real!?&quot;  Oh, sigh.  The only references to hyper-reality I could find on Wikipedia (I know, not always authoritative) were Hyperreality, a term used in semiotics and postmodern philosophy; Hyperrealism, a school of painting; Hyperreal numbers, an extension of the real numbers in mathematics that are used in non-standard analysis; and a song.  So unless they are talking about philosophy, math, or a realistic painting technique, their choice of words was completely meaningless.  The images aren&#039;t hyper-real, they simply, as I stated, look like a well lit shot should.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&quot;I tell people that ELC photos adds $100,000 to the value of their home,&quot; said Arizona realtor Kim Stoegbauer.&lt;/blockquote&gt;&lt;br /&gt;
Right, about that &quot;how do marketers live with themselves&quot; question?  Enough said.&lt;br /&gt;
&lt;br /&gt;
If you take a look at the images at http://www.vmlh.com/elc/ (no I&#039;m not linking to them, I have no desire to raise their Google rank), you&#039;ll see the sample photos don&#039;t look all that amazing.  They simply look like a picture taken by a photographer who knew what they were doing.&lt;br /&gt;
&lt;br /&gt;
For some examples of real HDR photography, and what it can do, take a look at &lt;a href=&quot;http://www.flickr.com/search/?q=HDR&quot;&gt;HDR photos on Flickr&lt;/a&gt;.  For an excellent example that shows how HDR can generate a picture showing detail in the bright areas, all the way down to the dark areas, see &lt;a href=&quot;http://commons.wikimedia.org/wiki/Image:New_York_City_at_night_HDR.jpg&quot; title=&quot;New York HDR&quot;&gt;this image&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
HDR photography is neat, and if they want to use it real estate, great!  Actually, really great; have you &lt;i&gt;seen&lt;/i&gt; some of the photos attached to houses for sale?  Some of them are horrible.  So, if they want to use HDR, that&#039;s fine, but at least call it what it is, instead of creating a new name, and claiming you invented it.&lt;br /&gt;
&lt;br /&gt;
Oh, if you&#039;re interested in the press release, copy and paste this link: http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&amp;STORY=/www/story/03-25-2008/0004779580&amp;EDATE=&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 26 Mar 2008 19:44:23 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/133-guid.html</guid>
    <category>deceptive</category>
<category>hdr</category>
<category>marketing</category>
<category>photography</category>
<category>tech</category>

</item>
<item>
    <title>My feelings on PHP, exactly.</title>
    <link>http://jjncj.com/blog/archives/131-My-feelings-on-PHP,-exactly..html</link>
            <category>programming</category>
    
    <comments>http://jjncj.com/blog/archives/131-My-feelings-on-PHP,-exactly..html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=131</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=131</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    &lt;blockquote&gt;&quot;There are a lot of nice things about PHP, it&#039;s just that the language isn&#039;t one of them.&quot;&lt;/blockquote&gt;&lt;br /&gt;
from &lt;a href=&quot;http://news.e-scribe.com/409&quot;  title=&quot;From PHP to Python&quot;&gt;Paul Bissex&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&#039;Nuff said 
    </content:encoded>

    <pubDate>Fri, 14 Mar 2008 09:49:40 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/131-guid.html</guid>
    <category>php</category>
<category>programming</category>
<category>python</category>
<category>qotd</category>

</item>
<item>
    <title>Objects have failed...maybe...kind of</title>
    <link>http://jjncj.com/blog/archives/127-Objects-have-failed...maybe...kind-of.html</link>
            <category>programming</category>
    
    <comments>http://jjncj.com/blog/archives/127-Objects-have-failed...maybe...kind-of.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=127</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=127</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    I came across this writeup a couple months ago, and composed a reply (via an e-mail to a colleague), but never posted it.&lt;br /&gt;
&lt;br /&gt;
Some people think &lt;a href=&quot;http://www.dreamsongs.com/ObjectsHaveFailedNarrative.html&quot;  title=&quot;Openning remarks by Richard P. Gabriel, November 6, 2002&quot;&gt;objects have failed&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
My response:&lt;br /&gt;
&lt;br /&gt;
Objects have &quot;failed&quot; in that they&#039;ve tried to be the be-all, end-all solution to all problems, while not being powerful enough to be the be-all, end-all.  On the other hand, they&#039;ve succeeded in that they are a good (often great) tool in many cases.  I often find that objects are nice just for state-encapsulation: keeps me from worrying about certain details at that moment; I might not even be abstracting anything of note.&lt;br /&gt;
 &lt;br /&gt;
And I think it comes down to this: procedural, functional, and OO programming tools are just that.  You use one or the other where they might be the most appropriate and most practical.  Take these few lines from a script in a project I&#039;m working on:  (disclaimer: yes, I wrote them).  &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;python&quot; style=&quot;text-align: left&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #008000;&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #dc143c;&quot;&gt;os&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;path&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;.&#039;&lt;/span&gt;, full_name, f.&lt;span style=&quot;color: black;&quot;&gt;rstrip&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;.tmpl&#039;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;,&lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;w&#039;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;writelines&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #dc143c;&quot;&gt;string&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;Template&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #dc143c;&quot;&gt;os&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;path&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #dc143c;&quot;&gt;os&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;environ&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;TACKDIR&#039;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#93;&lt;/span&gt;,&lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;template-manage&#039;&lt;/span&gt;,f&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;,&lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;r&#039;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;substitute&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;mod_name&#039;&lt;/span&gt;:mod_name&lt;span style=&quot;color: black;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
That is an interesting combination of functional (only two state variables: &#039;f&#039; from a surrounding  loop, and full_name) and object oriented (file and string.Template methods) programming.  And the combination works, works well, and is only one logical line of code, to boot.&lt;br /&gt;
 &lt;br /&gt;
I don&#039;t think it&#039;s a matter of object, functional, or procedural styles failing, it&#039;s about having a good knowledge of all three, and their capabilities, and being able to make realistic and practical decisions about what will be the best in a given situation.  It&#039;s also about using a language that lets you combine the three in a mix that works best for you and the given requirements.&lt;br /&gt;
&lt;br /&gt;
(In this case, that language is Python, but that&#039;s peripheral.)&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 08 Feb 2008 14:11:57 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/127-guid.html</guid>
    <category>functional</category>
<category>objects</category>
<category>procedural</category>
<category>programming</category>
<category>python</category>

</item>
<item>
    <title>Extracting dates from images with Python and OCR</title>
    <link>http://jjncj.com/blog/archives/116-Extracting-dates-from-images-with-Python-and-OCR.html</link>
            <category>programming</category>
    
    <comments>http://jjncj.com/blog/archives/116-Extracting-dates-from-images-with-Python-and-OCR.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=116</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=116</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    In my job at &lt;a href=&quot;http://www.eeinternet.com&quot;  title=&quot;EEI&quot;&gt;EE Internet&lt;/a&gt;, we do a lot of remote data collection, including collection from cameras.  Now, the makers of these cameras have figured out how to put the date and time as a graphic in the image itself (&lt;a href=&quot;http://www.colville-watershed.org/stations/umiat/ideal_north.jpg&quot;  title=&quot;like this one&quot;&gt;Umiat Airfield&lt;/a&gt;) but for some reason they haven&#039;t figured out how to embed that same information in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Exif#Example&quot;  title=&quot;EXIF data&quot;&gt;EXIF Data&lt;/a&gt; for that image.  Very aggravating.&lt;br /&gt;
&lt;br /&gt;
So, Python to the rescue.  I came up with a script that extracts the area given, converts it to black and white, inverts it (because these cameras have light text on dark background, and OCR doesn&#039;t seem to like that), and then feeds that file to a command-line OCR program.  It then takes that text, parses it for the date, and then prints it out in any date/time format desired.  Works quite well.&lt;br /&gt;
&lt;br /&gt;
Here it is in all its glory.&lt;br /&gt;
&lt;br /&gt;
Comments, improvements, critiques, etc., are always welcome.  And yes, you can post comments pointing to another program/project/whatever that does what I did and does it way better. &lt;img src=&quot;http://jjncj.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;It requires Python&#039;s PIL image library&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;It defaults to using the gocr command.  This is available in the &#039;gocr&#039; package in Ubuntu.  It also seems to work well with ocrad, which is also available in Ubuntu.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;There should not be any symlink vulnerabilities in this as the exclusive lock is kept on the file while there is data being written to it.  Once the data is written, and the file is closed, then it is passed to the OCR program as an input file. Then, it is removed.&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
UPDATE: Modularized it so you can call it from the command line, or import it into your own Python script and call it that way. &lt;br /&gt;&lt;a href=&quot;http://jjncj.com/blog/archives/116-Extracting-dates-from-images-with-Python-and-OCR.html#extended&quot;&gt;Continue reading &quot;Extracting dates from images with Python and OCR&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 11 Oct 2007 11:14:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/116-guid.html</guid>
    <category>geek</category>
<category>ocr</category>
<category>pil</category>
<category>programming</category>
<category>python</category>

</item>
<item>
    <title>Burning Saltwater for Fuel</title>
    <link>http://jjncj.com/blog/archives/110-Burning-Saltwater-for-Fuel.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/110-Burning-Saltwater-for-Fuel.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=110</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=110</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    A search for a cure for cancer leads to a new, seemingly very efficient way, to do electrolysis: literally burning salt water for fuel.  I want to convert my car over now. &lt;img src=&quot;http://jjncj.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;object width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Tf4gOS8aoFk&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/Tf4gOS8aoFk&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Update with some more thoughts: I wonder how much salt you need per gallon. It&#039;d be interesting to do the math on the cost.  Of course, you don&#039;t need table salt.  &quot;Low grade&quot; salt such as water softener or simply rock salt would work.  The one thing the article didn&#039;t mention is how much radio energy it takes to cause release the hydrogen, and how much energy can be recaptured from the flame.  You know, it&#039;s interesting: several months ago, the &lt;a href=&quot;http://www.elijahlist.com/&quot;  title=&quot;Prophetic Words and Prophecies&quot;&gt;Elijah List&lt;/a&gt; had a prophecy about a new source of energy that was going to be found in the US.  Could this be it?  Can you imagine millions of cars running on salt water in a few years?&lt;br /&gt;
&lt;br /&gt;
Update 2: Some more ideas. Can you imagine: A big feeder of rock salt, a grinder for precision deliver, and a tank hooked up to your water supply.  Plus a boiler run on hydrogen.  (Nearly) free heat for your house and then some.  I&#039;m giddy with the thought.  I really hope the idea is bought by someone who will use it, not by someone who will bury it (think oil company). 
    </content:encoded>

    <pubDate>Fri, 20 Jul 2007 11:03:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/110-guid.html</guid>
    <category>alternative fuel</category>
<category>cool</category>
<category>energy</category>
<category>hydrogen</category>
<category>tech</category>

</item>
<item>
    <title>Post a comment, digitize a book</title>
    <link>http://jjncj.com/blog/archives/106-Post-a-comment,-digitize-a-book.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/106-Post-a-comment,-digitize-a-book.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=106</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=106</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    As of right now, I&#039;ve enabled a system called &quot;reCAPTCHA&quot; to prevent spam comments, not that I&#039;ve gotten any spam comments yet. &lt;img src=&quot;http://jjncj.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;  OK, a couple.  But instead of being just an annoying roadblock to posting comments, reCAPTCHA is actually useful.  The words with which you are presented when you make a comment are words that have been scanned from old books, but cannot be clearly read by the computer digitizing the books.  So, to post a comment, you enter two words, one which is already known by the system, and one which is unknown.  If your answer to the &quot;known&quot; word is correct, and your answer for the unknown word matches other people&#039;s answers, then that word is successfully digitized.  You can get all the details on the reCATPCHA &lt;a href=&quot;http://recaptcha.net/learnmore.html&quot;  title=&quot;Digitizing books, one word at a time&quot;&gt;Learn More page&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Enjoy helping digitize old texts!&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 12 Jul 2007 20:32:52 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/106-guid.html</guid>
    <category>captcha</category>
<category>recaptcha</category>
<category>spam</category>
<category>tech</category>

</item>
<item>
    <title>Linux (and Open Source) in Plain English</title>
    <link>http://jjncj.com/blog/archives/95-Linux-and-Open-Source-in-Plain-English.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/95-Linux-and-Open-Source-in-Plain-English.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=95</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=95</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    It&#039;s nice to see Dell promoting Linux now that they are selling machines with Linux pre-installed.  For a quick overview on what this Linux and Open Source thing is all about, take a look at &lt;a href=&quot;http://i.dell.com/images/global/video/mediaplayer/mediaplayer_external.swf?xmlPath=images/global/video/mediaplayer/assets/xml/dhs_linux.xml&amp;iconPath=images/global/video/mediaplayer/assets/icons/&amp;videoPath=http://content.onstreammedia.com/content/dell/content/&amp;audioPath=images/global/video/mediaplayer/assets/audio/&amp;playerSize=LARGE&amp;allowResize=TRUE&amp;sliderState=CLOSED&amp;sliderLocked=FALSE&amp;playOnStart=FALSE&amp;isHybrid=TRU&quot;  title=&quot;Linux on Dell&quot;&gt;this short video&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
(Via: &lt;a href=&quot;http://joey.ubuntu-rocks.org/blog/2007/06/01/dells-linux-101-video/&quot;&gt;Joey Stanford&lt;/a&gt;) 
    </content:encoded>

    <pubDate>Fri, 01 Jun 2007 09:40:54 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/95-guid.html</guid>
    <category>dell</category>
<category>geek</category>
<category>linux</category>
<category>open source</category>
<category>software</category>
<category>tech</category>

</item>
<item>
    <title>RSS in Plain English</title>
    <link>http://jjncj.com/blog/archives/94-RSS-in-Plain-English.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/94-RSS-in-Plain-English.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=94</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=94</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    For those of you who have been wondering what this &quot;RSS&quot; thing is, and who don&#039;t really know what I mean when I say &quot;subscribe to updates from my blog,&quot; &lt;a href=&quot;http://www.commoncraft.com/&quot;  title=&quot;Common Craft site&quot;&gt;Common Craft&lt;/a&gt; has a cute little video entitled &quot;&lt;a href=&quot;http://www.commoncraft.com/rss_plain_english&quot;&gt;RSS in Plain English&lt;/a&gt;.&quot;  Check it out below, and if you have any further questions, drop me a line via the &lt;a href=&quot;http://jjncj.com/contact/&quot;  title=&quot;Contact Us!&quot;&gt;contact page&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;															&lt;script type=&quot;text/javascript&quot; src=&quot;http://blip.tv/scripts/pokkariPlayer.js&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;http://blip.tv/syndication/write_player?skin=js&amp;posts_id=209879&amp;source=3&amp;autoplay=true&amp;file_type=flv&amp;player_width=&amp;player_height=&quot;&gt;&lt;/script&gt;&lt;div id=&quot;blip_movie_content_209879&quot;&gt;&lt;a href=&quot;http://blip.tv/file/get/Leelefever-RSSInPlainEnglish369.flv&quot; onclick=&quot;play_blip_movie_209879(); return false;&quot;&gt;&lt;img src=&quot;http://blip.tv/file/get/Leelefever-RSSInPlainEnglish369.flv.jpg&quot; border=&quot;0&quot; title=&quot;Click To Play&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://blip.tv/file/get/Leelefever-RSSInPlainEnglish369.flv&quot; onclick=&quot;play_blip_movie_209879(); return false;&quot;&gt;Click To Play&lt;/a&gt;&lt;/div&gt;										&lt;/center&gt; 
    </content:encoded>

    <pubDate>Fri, 01 Jun 2007 09:26:18 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/94-guid.html</guid>
    <category>feeds</category>
<category>geek</category>
<category>news</category>
<category>rss</category>
<category>tech</category>
<category>tutorial</category>
<category>web</category>

</item>
<item>
    <title>What's your Linux-adoption killer?</title>
    <link>http://jjncj.com/blog/archives/90-Whats-your-Linux-adoption-killer.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/90-Whats-your-Linux-adoption-killer.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=90</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=90</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Melissa Draper points out that &lt;a href=&quot;http://www.geekosophical.net/?p=117&quot;  title=&quot;Adoption killers: everyone has one… for something&quot;&gt;every has their reasons&lt;/a&gt; for not adopting Linux.  Whether it be the software they have to use, the hardware, or other reasons.&lt;br /&gt;
&lt;br /&gt;
But she raises an interesting point: if your Linux-adoption hurdle is hardware compatibility, it is very likely you could buy Linux-compatible replacements for less than the cost of a Windows Vista upgrade.  So if your hardware is keeping you from giving Linux a try, check out alternatives...it might be cheaper in the long-run. 
    </content:encoded>

    <pubDate>Fri, 18 May 2007 08:49:12 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/90-guid.html</guid>
    <category>geek</category>
<category>hardware</category>
<category>linux</category>
<category>tech</category>
<category>vista</category>

</item>
<item>
    <title>Microsoft is Dead</title>
    <link>http://jjncj.com/blog/archives/67-Microsoft-is-Dead.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/67-Microsoft-is-Dead.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=67</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=67</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    &lt;a href=&quot;http://www.paulgraham.com/bio.html&quot;&gt;Paul Graham&lt;/a&gt; &lt;a href=&quot;http://www.paulgraham.com/microsoft.html&quot;&gt;says so&lt;/a&gt;.  I&#039;ll not belabor the point, other than to agree, but when &quot;up and comers&quot; have no sense of &quot;fearing Microsoft,&quot; and when those in the tech know-how are all using Mac and Linux, Microsoft is dead.  The leading edge eventually becomes standard operating procedure, and Mac and Linux will continue to be adopted on a wider scale. 
    </content:encoded>

    <pubDate>Mon, 09 Apr 2007 08:55:01 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/67-guid.html</guid>
    <category>apple</category>
<category>geek</category>
<category>linux</category>
<category>macintosh</category>
<category>microsoft</category>
<category>open source</category>
<category>osx</category>
<category>tech</category>

</item>
<item>
    <title>The wonderfulness of open source</title>
    <link>http://jjncj.com/blog/archives/66-The-wonderfulness-of-open-source.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/66-The-wonderfulness-of-open-source.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=66</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=66</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    One of the touted benefits of Open Source software is the ability to &quot;go in and fix it yourself&quot; when your software isn&#039;t working the way you want.  And while that is a great benefit, sometimes you don&#039;t have time to fully understand all the code and fix it on your own.  That&#039;s when the other benefit of Open Source comes into play: direct contact with the developers.&lt;br /&gt;
&lt;br /&gt;
Recently, I was setting up an instance of the &lt;a href=&quot;http://www.s9y.org&quot;  title=&quot;S9Y&quot;&gt;Serendipity blog publishing software&lt;/a&gt; at work.  Since we are in the process of migrating to MySQL5 from MySQL4, and since they are both running on the same database server, the way you reach the MySQL5 server is non-standard (it&#039;s running on a non-default port of 3307).  There were two modules to access MySQL in Serendipity: the &quot;old&quot; mysql PHP module and the &quot;new&quot; mysqli PHP module (completely unrelated to the &quot;old&quot; and &quot;new&quot; database servers).  I tried to specify the database host name as databaseserver:3307 (which is the usual way to do it), but using the mysqli module, it failed.  With mysqli the host, db, user, pass, and port are all separate fields in the function call to connect, so you can&#039;t pass it databaseserver:3307.  I posted about this error on the Serendipity user forums, and in two days (mostly because the author is about 10 hours ahead of me), we had debugged the problem, and he had written a few lines of code to change the mysqli connect call to handle the case of someone giving host:port as their host name.  Pretty easy, but can you imagine getting a two-day turnaround from a commercial software vendor?&lt;br /&gt;
&lt;br /&gt;
Shortly after this happened, there was a &lt;a href=&quot;http://datacharmer.blogspot.com/2007/04/when-community-strikes.html&quot;  title=&quot;When Community strikes&quot;&gt;blog post&lt;/a&gt; by Giuseppe Maxia, a systems analyst and database designer, about a bug being opened in the MySQL bugs database and, with the help of two contributors from the MySQL community, that bug being closed just 11 hours later.  Now &lt;strong&gt;that&#039;s&lt;/strong&gt; the power of open source community.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t you wish Microsoft fixed bugs that fast?&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 04 Apr 2007 21:16:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/66-guid.html</guid>
    <category>community</category>
<category>open source</category>
<category>php</category>
<category>programming</category>
<category>tech</category>

</item>
<item>
    <title>Welcome to the world of Python, Jon!</title>
    <link>http://jjncj.com/blog/archives/63-Welcome-to-the-world-of-Python,-Jon!.html</link>
            <category>programming</category>
    
    <comments>http://jjncj.com/blog/archives/63-Welcome-to-the-world-of-Python,-Jon!.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=63</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=63</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Jon has a post about &lt;a href=&quot;http://akbourne.com/2007/04/02/getting-started-with-django/&quot;&gt;getting started with Django&lt;/a&gt;.  Welcome to Python, Jon.  I&#039;m sure you&#039;ll enjoy it.  As I&#039;ve &lt;a href=&quot;http://jjncj.com/blog/archives/15-Python...and-loving-it..html&quot;  title=&quot;Python...and loving it&quot;&gt;posted about before&lt;/a&gt;, I&#039;ve greatly enjoyed my foray into the world of Python.  While sticking with &quot;pure Django,&quot; especially if there is a CMS system on top of it, may mean you don&#039;t see Python much, if you start creating filters and editing templates, you&#039;ll probably dive right in to the language.&lt;br /&gt;
&lt;br /&gt;
If you have programming experience, snag a copy of &lt;a href=&quot;http://www.amazon.com/Python-Nutshell-OReilly-Alex-Martelli/dp/0596100469/ref=pd_bbs_sr_1/002-8818690-8576041?ie=UTF8&amp;s=books&amp;qid=1175577087&amp;sr=8-1&quot;&gt;Python in a Nutshell&lt;/a&gt;.  If you don&#039;t, grab Python in a Nutshell and &lt;a href=&quot;http://www.amazon.com/Learning-Python-Second-Mark-Lutz/dp/0596002815/ref=pd_bbs_1/002-8818690-8576041?ie=UTF8&amp;s=books&amp;qid=1175579988&amp;sr=8-1&quot;&gt;Learning Python&lt;/a&gt;.  Both have served me well.&lt;br /&gt;
&lt;br /&gt;
And of course, if you have a question, ping me.  I&#039;d be glad to share what I&#039;ve learned in my short, but productive eight months of learning Python.&lt;br /&gt;
&lt;br /&gt;
Python is a fun language, and easy to learn.  I&#039;m sure you&#039;ll have a great time. 
    </content:encoded>

    <pubDate>Mon, 02 Apr 2007 09:04:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/63-guid.html</guid>
    <category>django</category>
<category>programming</category>
<category>python</category>

</item>
<item>
    <title>When sending spam, don't steal images</title>
    <link>http://jjncj.com/blog/archives/61-When-sending-spam,-dont-steal-images.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/61-When-sending-spam,-dont-steal-images.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=61</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=61</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    &lt;!-- s9ymdb:10 --&gt;&lt;img width=&#039;300&#039; height=&#039;300&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://jjncj.com/blog/uploads/SuperStock_1491R-120345.jpg&quot; alt=&quot;&quot; /&gt;I just came across an interesting spam message.  It was a spam offering to sell me (I think) health-care-related e-mail addresses.  After getting over my fright at facial features being deformed by the drip bag, I noticed what seemed to be a weird fuzzy area in the photo.  If you don&#039;t see it, look really closely at the area just to the left of the drip tube.  See it?  Yup, it&#039;s a watermark.  That usually indicates a photo that might be a thumbnail or sample from a stock photography site.&lt;br /&gt;
&lt;br /&gt;
So, I did a little investigating.  Looking at the source of the e-mail, I found the URL to the photo which included this file name: SuperStock_1491R-120345.jpg&lt;br /&gt;
&lt;br /&gt;
That&#039;s right, he didn&#039;t even rename the file when he downloaded the sample from SuperStock.  Hmm...that &lt;strong&gt;really&lt;/strong&gt; gives me confidence in his character and operating principles. 
    </content:encoded>

    <pubDate>Wed, 28 Mar 2007 12:54:44 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/61-guid.html</guid>
    <category>carelessness</category>
<category>deceptive</category>
<category>spam</category>
<category>tech</category>

</item>
<item>
    <title>Skills vs. Theory: Which Should Be Taught?</title>
    <link>http://jjncj.com/blog/archives/58-Skills-vs.-Theory-Which-Should-Be-Taught.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/58-Skills-vs.-Theory-Which-Should-Be-Taught.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=58</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=58</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    [The meat of this post was actually a reply to a UAF (Univeristy of Alaska Fairbanks) LUG (Linux User&#039;s Group) mailing-list thread a few months back.  It&#039;s been reworked for this blog post.]&lt;br /&gt;
&lt;br /&gt;
This has been hashed out many, many times, but I&#039;ll jump into the fray again. If you want a foundation in computer science, and the ability to learn: get a theory-based CS degree.  If you just want the skills you need for a job, take a class for it, read it on the web, or take a university course that is more geared toward certifications (for example: &lt;a href=&quot;http://www.tvc.uaf.edu/programs/infotech/index.html&quot;  title=&quot;UAF TVC&quot;&gt;see the UAF Info Tech program&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
But as to practical skills, the UAF CS program does offer many.  If you want to program, take Operating Systems (321) and Assembly (301).  Architecture (471) is a good one too.  Those classes will make understanding programming so much easier, because you understand what the system is doing as your program executes.  If you want to be a network guru, take CS 442 first (or the grad level 642).  Will it teach you to set up a windows AD network and configure roaming profiles?  No, but it will give you a base-line knowledge level that will make understanding how that network works, and troubleshooting that network, so much easier.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve taken the full complement of CS classes to earn my BS, and almost my MS. There are classes I may never use again.  But I&#039;m glad I had CS 201/202 (I&#039;ve used C/C++ since in job and school); 301 (Assembly language; understanding of a computer&#039;s operation); 331/631 (Compiler and language theory; better understanding of how compilers work, and the complexities thereof); 401 (senior project, better understanding of process and project management); Computer Architecture (gives me a good idea of how all the hardware fits together so I understand the system better when working on it); 311 (Algorithms and data structures; will I being doing heavy algorithm design, maybe, but I also know I can evaluate possible algorithms for efficiency and the load they will put on the system); 321 (Operating systems; especially helps when running on &quot;sane&quot; systems such as Linux or Mac OS X); 447 (software engineering: gave me so much insight into the proper ways to go about designing programs.  Something I&#039;m about to put into heavy use at my current job); and there are others.&lt;br /&gt;
&lt;br /&gt;
Among the things I&#039;ve learned on my own or via &quot;on the job training&quot;: Python, Perl; SQL; Visual Basic; Linux administration; Apache administration; Postfix administration; a little Sendmail too; general system administration; network setup, with some routing (My friend Todd Medbury could still make my head hurt); hardware/software troubleshooting/assembly; Qt programming; CGI/web programming; Bind (DNS Server); HTML; VMWare Server; Bacula (backup server); as well as other skills I&#039;ve probably failed to mention.  I&#039;m not bragging, I&#039;m simply pointing out that taking classes in all those would have been prohibitively expensive, taken a LOT of time, and in the end I would have learned less than my on-the-job training taught me.&lt;br /&gt;
&lt;br /&gt;
For another example of what all that theory got me, see &lt;a href=&quot;http://jjncj.com/papers/VotingVirtually.pdf&quot;  title=&quot;Voting Virtually&quot;&gt;this paper&lt;/a&gt;. Careful design and development led to a successful election with software that was designed, coded, and debugged (very little debugging, due to careful coding) in 80 hours.&lt;br /&gt;
&lt;br /&gt;
My point is, with a  CS degree from UAF (or another college that is more on the theory side), you will be able to drop into any job and pick up the skills quickly.  With a purely skills-based degree, if you do not have the learn-on-your-own-itude that is needed in this industry, you will be totally&lt;br /&gt;
lost when faced with a new paradigm or language.&lt;br /&gt;
&lt;br /&gt;
Bottom line: if one requires a university class to learn a job skill, then a CS degree won&#039;t do one much good in the real world, whether theoretical or practical. 
    </content:encoded>

    <pubDate>Sun, 25 Mar 2007 17:44:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/58-guid.html</guid>
    <category>education</category>
<category>skills</category>
<category>tech</category>
<category>theory</category>

</item>
<item>
    <title>I made the Register!</title>
    <link>http://jjncj.com/blog/archives/53-I-made-the-Register!.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/53-I-made-the-Register!.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=53</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=53</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    &lt;a href=&quot;http://izzy.homeip.net&quot;  title=&quot;Izzy&#039;s Blog&quot;&gt;Izzy&lt;/a&gt; just alerted me to a &lt;a href=&quot;http://www.theregister.co.uk/2007/03/02/ebay_sign-on_hole/&quot;&gt;10-day old story&lt;/a&gt; on the tech news site &quot;The Register&quot; that points out the &lt;a href=&quot;http://jjncj.com/blog/archives/36-E-bays-sign-in-server-can-assist-phishers.html&quot;&gt;E-Bay hole I blogged about&lt;/a&gt;, and names me as the one pointing it out.  I also blogged about &lt;a href=&quot;http://jjncj.com/blog/archives/45-E-bay-listened!.html&quot;&gt;the hole getting fixed&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
It&#039;s always nice to be mentioned on a large site. &lt;img src=&quot;http://jjncj.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 12 Mar 2007 14:48:25 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/53-guid.html</guid>
    <category>ebay</category>
<category>geek</category>
<category>phishing</category>
<category>security</category>
<category>tech</category>
<category>the register</category>

</item>
<item>
    <title>Python...and loving it.</title>
    <link>http://jjncj.com/blog/archives/15-Python...and-loving-it..html</link>
            <category>programming</category>
    
    <comments>http://jjncj.com/blog/archives/15-Python...and-loving-it..html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=15</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=15</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Way back in the early days of my interactions with the Internet (1996), I started learning the &lt;a href=&quot;http://www.perl.org&quot;  title=&quot;Perl.org site&quot;&gt;Perl&lt;/a&gt; programming language.  I had a client who wanted to create a database-driven web site, and before I realized I had no idea &lt;em&gt;how&lt;/em&gt; to do that, I said, &quot;I can do that.&quot;  Well, my search (probably on the term &quot;CGI&quot;) led me to &lt;em&gt;CGI Programming on the World Wide Web&lt;/em&gt; by Shishir Gundavaram.  Since that book used Perl, I learned Perl, my first &quot;real&quot; programming language (I had learned a little bit of C64/MS Basic before that).&lt;br /&gt;
&lt;br /&gt;
Fast forward ten years.  By now I&#039;ve done a few database-driven web sites, a few C/C++ projects, and a fair bit of database design and programming (in Visual Basic).  Should mean I&#039;m a Perl hacker for life, right?&lt;br /&gt;
&lt;br /&gt;
Well, maybe not.  Around the end of last year, I had just completed a 500 line script in Perl that extracted data from files, and generated pages and diagnostic data.  After that, I realized that I did not want to code my entire Master&#039;s project in Perl.  Keeping track of the data structures became a nightmare, and I realized how much I struggled to wrap my mind around the syntax, instead of it coming naturally and efficiently.  I needed something better...at least something that worked better for me.&lt;br /&gt;
&lt;br /&gt;
[I pause here to note: this is not a flame against Perl.  As I stated, I used Perl for 10 years, and enjoyed using it, and was very productive using it (at least in smaller scale projects).  I just came up against a project and domain where Perl wasn&#039;t the best fit &lt;em&gt;for me&lt;/em&gt;.  It may very well have been the best fit for someone else.  We now return to our regularly scheduled blog entry...]&lt;br /&gt;
&lt;br /&gt;
I&#039;m familiar with a lot of languages, but as stated, have only used Perl, Visual Basic, and C/C++ in any real capacity. I had heard a lot about Python, and knew enough to know that I&#039;d probably enjoy the way it&#039;s set up.  I like organization, and one of the ways Python organizes things is by using indents to denote blocks of code: all code at a particular level of indent is in the same block.  An example, using classes, methods, and &#039;if&#039; statements.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;python&quot; style=&quot;text-align: left&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;class&lt;/span&gt; DemoClass&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;object&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;#inheriting from object denotes a &amp;quot;new style&amp;quot; class&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &lt;span style=&quot;color: #0000cd;&quot;&gt;&lt;u&gt;_init_&lt;/u&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;self&lt;/span&gt;, name&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# Do some initialization here&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #008000;&quot;&gt;self&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;name&lt;/span&gt; = name&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;def&lt;/span&gt; sample_method&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;self&lt;/span&gt;, var&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;var == &lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;this&#039;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #483d8b;&quot;&gt;&quot;That!&quot;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;var == &lt;span style=&quot;color: #483d8b;&quot;&gt;&#039;thus&#039;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #483d8b;&quot;&gt;&quot;Thusly!&quot;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; color: black; font-weight: normal; font-style: normal;&quot;&gt;&lt;div style=&quot;font-family: &#039;Courier New&#039;, Courier, monospace; font-weight: normal;&quot;&gt;&amp;#160;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
And there you have a fully functional python class.  Python&#039;s class syntax is so intuitive to me that I&#039;ve used (that is written) more classes in Python in the past few months than in all my years of Perl programming.  In addition, I find the syntax to use objects in Python to be more natural, and less to type for that matter.&lt;br /&gt;
&lt;br /&gt;
-- &#039;.&#039; instead of &#039;-&gt;&#039; as the object accessor.  It&#039;s just easier to type.&lt;br /&gt;
-- Calling the class name as the constructor instead of PackageName-&gt;new() makes more sense to me.&lt;br /&gt;
-- Declare a class with &#039;class ClassName&#039; instead of the several lines it takes to define a class in Perl&lt;br /&gt;
&lt;br /&gt;
There are other reasons and areas as well where the syntax, semantics, and philosophy of Python just makes more sense for me, and I may write on those in a future post.&lt;br /&gt;
&lt;br /&gt;
You can read my &lt;a href=&quot;http://jjncj.com/papers/PythonReasons.pdf&quot;  title=&quot;Python Reasons&quot; target=&quot;_blank&quot;&gt;evaluation and reasons&lt;/a&gt; (complete with Typos) which I wrote for my boss and coworker to justify coming up to speed in a new programming language for my Master&#039;s/Work project.&lt;br /&gt;
&lt;br /&gt;
To sum it all up, &quot;I&#039;m really liking and enjoying Python.&quot;  I rewrote that aforementioned 500 line script, and added even more functionality, and ended up with not much more code.  The language was very natural to learn, and it was very easy to come up to speed with the functions I needed.  I&#039;ve written about 1000 lines line python so far...I think I&#039;ve hooked. 
    </content:encoded>

    <pubDate>Sat, 10 Mar 2007 15:24:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/15-guid.html</guid>
    <category>geek</category>
<category>love</category>
<category>programming</category>
<category>python</category>
<category>tech</category>

</item>
<item>
    <title>Why 2007 won't be like 1995</title>
    <link>http://jjncj.com/blog/archives/48-Why-2007-wont-be-like-1995.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/48-Why-2007-wont-be-like-1995.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=48</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=48</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Over at Roughly Drafted Magazine, Daniel Dilger has an excellent article on why &lt;a href=&quot;http://www.roughlydrafted.com/RD/RDM.Tech.Q1.07/9EF16A95-278E-40ED-9E00-FBEBD75207FB.html&quot;  title=&quot;Can Apple Take Microsoft in the Battle for the Desktop?&quot;&gt;Apple is set to overtake Microsoft in the desktop market&lt;/a&gt;.  It is interesting to read how Microsoft is basically repeating the very same mistakes Apple made back late 80&#039;s and early 90&#039;s: no innovation, high prices, and writing off competition as not being a threat.  As I have written in my &lt;a href=&quot;http://jjncj.com/blog/plugin/tag/macintosh&quot;  title=&quot;Entries Tagged OS X&quot;&gt;previous posts about OS X&lt;/a&gt;, Apple has a viable (and actually better) competitor to Microsoft&#039;s Vista.&lt;br /&gt;
&lt;br /&gt;
Daniel mentions that Apple may overtake the middle to upper tier market, with Windows machines (and their makers: Dell, HP, Gateway, etc) fighting for the lower-tier-deep-discount machines.  You know, the ones filled with all sorts of pop-ups and trial-ware begging you to buy the full versions? &lt;img src=&quot;http://jjncj.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;  And for which you must pay an additional $200 to $300 for a decent warranty.  If that becomes the case, you&#039;ll have pretty much three markets: 1) the low-tier Windows market, 2) the mid-to-upper tier Mac market, and 3) the Linux dominated (in my opinion) server market.&lt;br /&gt;
&lt;br /&gt;
IBM was once seen as unstoppable and un-topple-able too...but arrogance and marketing mistakes changed that.  I will be watching to see if Microsoft wakes up and changes their business plan before that happens. 
    </content:encoded>

    <pubDate>Mon, 05 Mar 2007 20:23:59 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/48-guid.html</guid>
    <category>apple</category>
<category>linux</category>
<category>macintosh</category>
<category>microsoft</category>
<category>osx</category>
<category>tech</category>
<category>vista</category>

</item>
<item>
    <title>More reasons to avoid Vista</title>
    <link>http://jjncj.com/blog/archives/46-More-reasons-to-avoid-Vista.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/46-More-reasons-to-avoid-Vista.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=46</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=46</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    As most of my readership probably knows, I&#039;m not particularly fond of Microsoft.  While some of their products are of high quality, for the most part (e.g. Office 2003 or before), the operating system with which they have held dominance in the computer world is a constant source of irritation and frustation for me.  Personally, I run Linux and home and at work.  However, I support users that run Windows, mainly my parents.  I decided long ago that XP would be last Microsoft operating system my parents used.  And due to various frustations my father had with system, he agreed.  Now, it seems, that decision has even more merit.  The negative (and neutral-you-don&#039;t-really-need-to-upgrade type) of reviews just keep coming.  I highlight three more today.&lt;br /&gt;
&lt;br /&gt;
For the impatient: If you&#039;re thinking about a new computer, get a Mac.  Upgrading your system to try to run Vista won&#039;t be worth the pain, so you&#039;ll soon be thinking about getting a new computer, which should be a Mac.  If you are techincally inclined, investigate Linux.  Kubuntu Linux runs on most hardware out there, and should be a relatively pain-free experience for someone with a modicum of technical knowledge.&lt;br /&gt;
&lt;br /&gt;
First, an article from the BBC about &lt;a href=&quot;http://news.bbc.co.uk/1/hi/business/6407419.stm&quot;&gt;trials and travails in trying to upgrade a computer to run Vista&lt;/a&gt;.  First a new video card, then the network wouldn&#039;t work, then his webcam wouldn&#039;t work (even though the Vista upgrade advisor said it would).  And why was his three year old PDA no longer supported?&lt;br /&gt;
&lt;br /&gt;
Next, we have an article about the United States Department of Transportation.  It seems, for the time being, &lt;a href=&quot;http://www.informationweek.com/news/showArticle.jhtml?articleID=197700789&quot;&gt;no computers are to be upgraded to Vista or Internet Explorer 7&lt;/a&gt;.  The imposition of the ban is interesting enough, but the most interesting part of the article is a quote by DOT CTO Tim Schmidt:&lt;br /&gt;
&lt;blockquote&gt;&quot;We&#039;re analyzing different client software options and also integration issues,&quot; says Schmidt. Among the options the Transportation Department is weighing as a possible alternative or complement to Windows Vista are Novell&#039;s Suse Linux and, for a limited group of users, Apple&#039;s Macintosh hardware and software, he says.&lt;/blockquote&gt;&lt;br /&gt;
Oddly enough, moving to Linux will probably cause less compatiblity issues, and will enable them to use some of their older hardware longer.&lt;br /&gt;
&lt;br /&gt;
And, for our final link, this one is another in a long line of &quot;Mac-OS-already-has-what-Vista-has-and-more&quot; articles.  Information week says that &lt;a href=&quot;http://www.informationweek.com/story/showArticle.jhtml?articleID=196800670&quot;&gt;Max OS X shines in comparison to Windows Vista&lt;/a&gt;  They say, despite OS X&#039;s age, it matches or surpasses Vista in many areas.&lt;br /&gt;
&lt;br /&gt;
Now, I&#039;ll be honest, I&#039;ve read good reviews of Vista, I&#039;ve even read glowing reviews, but never in my paying attention to computer reviews of Microsoft operating systems (which goes back to about Windows 95 or so) have I read so many reviews that said either &quot;You don&#039;t really need this, you can get what you need elsewhere,&quot; or outright &quot;Don&#039;t buy it.&quot;  I suppose there are a couple reasons for this.  One, there simply are a lot of things wrong, or done poorly in Vista.  Two, for the first time in Microsoft&#039;s history, there are viable alternatives to their product.  Almost all software out there has Macintosh versions available (and if not, you can run them in Windows XP under Parallels or VMWare).  If you are more technically inclined, you can try Linux.&lt;br /&gt;
&lt;br /&gt;
Explore the alternatives.  You&#039;ll be glad you did. 
    </content:encoded>

    <pubDate>Sun, 04 Mar 2007 14:55:55 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/46-guid.html</guid>
    <category>apple</category>
<category>linux</category>
<category>macintosh</category>
<category>microsoft</category>
<category>tech</category>
<category>vista</category>

</item>
<item>
    <title>E-bay listened!</title>
    <link>http://jjncj.com/blog/archives/45-E-bay-listened!.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/45-E-bay-listened!.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=45</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=45</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    After my post about &lt;a href=&quot;http://jjncj.com/blog/archives/36-E-bays-sign-in-server-can-assist-phishers.html&quot;&gt;E-Bay&#039;s sign-in server being used to assist phishers&lt;/a&gt;, there was no reponse forthcoming.  However, the article was read a few hundred times by various people.  Eventually, it seems, the right person read the post (or my original e-mail to E-Bay) and was able to fix the situation.  If you try to use the example in that post, it no longer works.  Score one for the blogsphere!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Update:&lt;/strong&gt; I just found out that I was quoted in a TameBay article about &lt;a href=&quot;http://www.tamebay.com/2007/03/ebay-fixes-redirect-phishing-flaw.html&quot;  title=&quot;eBay fixes redirect flaw&quot;&gt;E-Bay fixing their flaw&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Sun, 04 Mar 2007 14:31:41 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/45-guid.html</guid>
    <category>ebay</category>
<category>phishing</category>
<category>security</category>
<category>tech</category>

</item>
<item>
    <title>Macs...they just keep coming</title>
    <link>http://jjncj.com/blog/archives/42-Macs...they-just-keep-coming.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/42-Macs...they-just-keep-coming.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=42</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=42</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    My fellow &lt;a href=&quot;http://www.thegoodblogs.com&quot;&gt;good blogger&lt;/a&gt; Rohan Jayasekera comments on &lt;a href=&quot;http://www.rohanjayasekera.com/blog/2007/02/why-macs-are-more-popular-now.html&quot;&gt;why Macs are more popular now&lt;/a&gt;.  He&#039;s spot on: in industries that have no particular tie to a platform (mainly web and other tech), one is free to use the best platform available.  That is why you&#039;ll find most tech-oriented people using either a Macintosh or Linux machine to do their day-to-day work.  As a system administrator and programmer, I&#039;ve exclusively used a Linux box at work since 2000, and at home since some time in 2003 (I think).&lt;br /&gt;
&lt;br /&gt;
There are other reasons for the surge in popularity, though.  For one, it&#039;s just a really good platform.  The stability, usability, and security are top notch.  I remember using OS 8 and OS 9 systems a long time ago, and while fun, they never really impressed me enough to even think about switching to the Mac.  If I had not already been on Linux when OS X started getting good traction, I probably would have gone that direction.&lt;br /&gt;
&lt;br /&gt;
Mac&#039;s just work.  Their support in the third-party component world has historically been good, but now it&#039;s fantastic.  You can buy pretty much any piece of hardware and expect it to work on the Mac.  And work well, with minimal muss and fuss.  Support on the software side is quite good as well.&lt;br /&gt;
&lt;br /&gt;
And for those occasions when you &lt;em&gt;really need Windows&lt;/em&gt; Parallels Virtual Machine provides a virtual environment in which Windows runs at nearly native speed.&lt;br /&gt;
&lt;br /&gt;
All this adds up to traction.  When the only feasible alternative out there is Windows CloudedVista*, Mac is set to reap some real rewards.  It&#039;s a system that is fun to use, and easy to learn.&lt;br /&gt;
&lt;br /&gt;
No wonder they are growing in market share.&lt;br /&gt;
&lt;br /&gt;
*Linux is nice, and works well.  But it&#039;s not always the best choice for a home user. 
    </content:encoded>

    <pubDate>Wed, 28 Feb 2007 21:06:59 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/42-guid.html</guid>
    <category>apple</category>
<category>linux</category>
<category>macintosh</category>
<category>osx</category>
<category>tech</category>

</item>
<item>
    <title>How reliable is a hard drive?</title>
    <link>http://jjncj.com/blog/archives/32-How-reliable-is-a-hard-drive.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/32-How-reliable-is-a-hard-drive.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=32</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=32</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Werner Vogel, is the CTO of Amazon.com.  As such, he is probably fanatically concerned about uptime, large systems, and reliability.  He&#039;s so concerned about it, he has a entire &lt;a href=&quot;http://www.allthingsdistributed.com/&quot;  title=&quot;All Things Distributed&quot;&gt;blog&lt;/a&gt; about it.  So, when he starts talking about failure rates for hard ware, specifically &lt;a href=&quot;http://www.allthingsdistributed.com/2007/02/on_the_reliability_of_hard_dis.html&quot;  title=&quot;On the Reliability of Hard Disks&quot;&gt;the reliability of harddrives&lt;/a&gt;, you sit up and take notice.&lt;br /&gt;
&lt;br /&gt;
He highlights two studies (&lt;a href=&quot;http://www.cs.cmu.edu/~bianca/fast07.pdf&quot;  title=&quot;Disk Failures in the Real World: What Does an MTTF of 1,000,000 Hours Mean to You?&quot;&gt;Study 1&lt;/a&gt;, &lt;a href=&quot;http://labs.google.com/papers/disk_failures.html&quot;  title=&quot;Failure Trends in a Large Disk Drive Population&quot;&gt;Study 2&lt;/a&gt;), one of them from Google, on the failure rates of harddrives, and what makes hard drives likely to fail.  The interesting conclusions?  It has nothing to do with use, environment, or age.  Although older drives seemed to last longer than new drives.  Why?  Well, the newer disks were less expensive.  As is often the case, you get what you pay for.  There was also a &quot;strong correlation between manufacturer/model and failure rates.&quot;&lt;br /&gt;
&lt;br /&gt;
As an IT person, and specifically a system admin, harddrive failure is one of those things that is pretty high on my list of things &quot;I really don&#039;t want to happen...ever.&quot;  Those reports will make some interesting food for though next time we go buy harddrives.  I think I&#039;ll be leaning toward the &quot;enterprise class&quot; harddrives. 
    </content:encoded>

    <pubDate>Fri, 16 Feb 2007 10:10:36 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/32-guid.html</guid>
    <category>geek</category>
<category>harddrives</category>
<category>hardware</category>
<category>tech</category>

</item>
<item>
    <title>Congrats Jon!</title>
    <link>http://jjncj.com/blog/archives/31-Congrats-Jon!.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/31-Congrats-Jon!.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=31</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=31</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Jon Bourne got to see one of &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=263108&quot;  title=&quot;Jon&#039;s Feature&quot;&gt;his suggestions&lt;/a&gt; for Firefox &lt;a href=&quot;http://akbourne.com/2007/02/14/firefox-feature/&quot;  title=&quot;Yay!&quot;&gt;implemented&lt;/a&gt;.  It&#039;s always fun to see one&#039;s input used, especially in large projects like Firefox.  May this be the first of many! 
    </content:encoded>

    <pubDate>Thu, 15 Feb 2007 23:06:43 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/31-guid.html</guid>
    <category>geek</category>
<category>open source</category>
<category>tech</category>

</item>
<item>
    <title>AJAX just keeps getting better and better</title>
    <link>http://jjncj.com/blog/archives/24-AJAX-just-keeps-getting-better-and-better.html</link>
            <category>programming</category>
    
    <comments>http://jjncj.com/blog/archives/24-AJAX-just-keeps-getting-better-and-better.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=24</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=24</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Tonight I was reading through SourceForge&#039;s newsletter, and one of the top 25 projects is a relatively new one call &lt;a href=&quot;http://thinwire.sf.net/&quot;  title=&quot;ThinWire RIA Ajax Framework&quot;&gt;ThinWire&lt;/a&gt;.  There are a lot of existing frameworks out there for making AJAX applications look like &quot;desktop applications,&quot; and often they allow you to dispense with programming in HTML and Javascript.  Examples include &lt;a href=&quot;http://www.morfik.com/&quot;  title=&quot;null&quot;&gt;Morfik&lt;/a&gt;, Google Web Toolkit, and even a Python version: &lt;a href=&quot;http://pyjamas.pyworks.org/&quot;  title=&quot;Build AJAX apps in Python (like Google did for Java)&quot;&gt;Pyjamas&lt;/a&gt;.  With most frameworks, while they looked good, they were often heavy (large download), or left something to be desired in the aesthetics department. Thinwire looks to change that.  Take a look at their &lt;a href=&quot;http://207.200.22.70:8086/playground/&quot;  title=&quot;ThinWire Playground Demo&quot;&gt;Playground Demo&lt;/a&gt; for examples of the full range of the tool kit, then look at their &lt;a href=&quot;http://207.200.22.70:8086/mail/&quot;  title=&quot;ThinWire Mail Demo&quot;&gt;mail demo&lt;/a&gt; to see just how close to the &quot;desktop feel&quot; they get.  They are even working on a &lt;a href=&quot;http://www.thinwire.com/example_formcreator.html&quot;  title=&quot;null&quot;&gt;graphical form designer&lt;/a&gt; that is written using the framework itself.  Now there&#039;s power! And they claim in only a 100K download. Lest you think this is a toy framework, they also have a &lt;a href=&quot;http://www.youtube.com/watch?v=XLrPKmGmYdo&quot;  title=&quot;ThinWire Production Application&quot;&gt;video&lt;/a&gt; showing a production application written using ThinWire.  From their site:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
This application has over 300 data input forms and dialogs with a wide range of complexity. It has a business rules engine that toggles the visibility of fields, required state of fields, limits dropdown options and much more....There are no page refreshes involved in updating anything within ThinWire®, the page is modified on the fly as a result of user actions that trigger event listeners on the server. Like all applications built with ThinWire®, no client-side code or HTML was written; all logic resides on the server. &lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
One teaser that caught my eye is on their front page where they say you can develop using Java, or &quot;alternatively, use a scripting language.&quot;  I can&#039;t find further explanation of that, but if I could program in this framework using Python, I think we would have a real winner. &lt;img src=&quot;http://jjncj.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
They are &lt;a href=&quot;http://thinwire.com/blog/?p=65&quot;  title=&quot;null&quot;&gt;gunning for the Duke&#039;s Choice Award&lt;/a&gt;, so if you have experiences with ThinWire, or want to try it out, they are looking for company and developer feedback as part of the nomination process.  I&#039;ll certainly be following the development efforts. 
    </content:encoded>

    <pubDate>Tue, 13 Feb 2007 23:23:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/24-guid.html</guid>
    <category>ajax</category>
<category>geek</category>
<category>gui</category>
<category>java</category>
<category>programming</category>
<category>tech</category>

</item>
<item>
    <title>Make that &quot;complete flop.&quot;</title>
    <link>http://jjncj.com/blog/archives/21-Make-that-complete-flop..html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/21-Make-that-complete-flop..html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=21</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=21</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    A few days ago, I blogged about Vista being a &lt;a href=&quot;http://jjncj.com/blog/archives/18-Overshot-Or-a-complete-miss.html&quot;  title=&quot;Overshot? Or a complete miss?&quot;&gt;complete miss&lt;/a&gt;.  I may have been wrong.  It might end up being a complete flop, instead.  Scott Finnie, whom I quoted in the aforementioned post, put the final nail in the coffin that have been his reviews of Windows Vista: after trying Mac OS X for three months, he&#039;s completely jumping ship and &lt;a href=&quot;http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9010759&amp;intsrc=hm_ts_head&quot;  title=&quot;Windows expert to Redmond: Buh-bye&quot;&gt;converting to Mac&lt;/a&gt;.  Now, understand, this isn&#039;t just a random computer guy who was on the fence about which way to go.  This is ComputerWorld&#039;s Windows expert.  This is someone who has done &lt;em&gt;several&lt;/em&gt; reviews of Vista.  This conversion, despite the fact that he&#039;s still looking for software to replace some functionality he had on Windows, and he had some really &quot;fun&quot; things to convert, such as 500+ e-mail filter rules in his e-mail program.  So, with glitches like these, why is he converting?  Well, because &quot;things just work.&quot;  He says that despite the learning curve (and there is a learning curve, even if Macs are &quot;easy to use), you spend more time working, and less time getting your computer to work.  I&#039;ve already been recommending Macs to people for a couple years now (I use Linux, personally), and I am certainly going to recommend Macs to people now who are wondering about whether to upgrade to Vista from XP.&lt;br /&gt;
&lt;br /&gt;
I also came across an &lt;a href=&quot;http://www.forbes.com/free_forbes/2007/0226/050.html&quot;  title=&quot;Dim Vista&quot;&gt;article on Forbes&lt;/a&gt; that really barbecues Windows Vista.  I&#039;ll let you read the article, but the thing that really impressed my about this article was the fact that this was in a major business magazine.  I&#039;m wondering how many upgrades to Vista won&#039;t happen because of what was written.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 09 Feb 2007 22:31:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/21-guid.html</guid>
    <category>apple</category>
<category>macintosh</category>
<category>microsoft</category>
<category>osx</category>
<category>tech</category>
<category>vista</category>

</item>
<item>
    <title>Not quite clear on the concept</title>
    <link>http://jjncj.com/blog/archives/20-Not-quite-clear-on-the-concept.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/20-Not-quite-clear-on-the-concept.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=20</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    &lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://jjncj.com/blog/uploads/EbayBofA.png&#039; onclick=&quot;F1 = window.open(&#039;/blog/uploads/EbayBofA.png&#039;,&#039;Zoom&#039;,&#039;height=574,width=775,top=320.5,left=420,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:6 --&gt;&lt;img width=&#039;128&#039; height=&#039;94&#039; style=&quot;float: right; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://jjncj.com/blog/uploads/EbayBofA.serendipityThumb.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;I got a phishing e-mail today that wanted to try to convince me to log in and &quot;unlock&quot; my Bank of America account since it was locked.  Oddly, enough, however, the &quot;From&quot; line said it was from E-Bay support.  I guess when you&#039;re sending out millions of e-mails, trying to scam thousands of people, little details get overlooked. 
    </content:encoded>

    <pubDate>Wed, 07 Feb 2007 22:18:47 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/20-guid.html</guid>
    <category>oops</category>
<category>phishing</category>
<category>security</category>
<category>tech</category>

</item>
<item>
    <title>Overshot? Or a complete miss?</title>
    <link>http://jjncj.com/blog/archives/18-Overshot-Or-a-complete-miss.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/18-Overshot-Or-a-complete-miss.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=18</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=18</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Michael Urlocker &lt;a href=&quot;http://www.ondisruption.com/my_weblog/2007/01/microsofts_vist.html&quot;  title=&quot; &lt;br /&gt;
Microsoft&#039;s Vista Flop Shows Market is Over-Shot&quot;&gt;writes&lt;/a&gt; that Vista is &quot;overshot.&quot;  That may be a generous assessment.&lt;br /&gt;
&lt;br /&gt;
Before vista even came out, it was already being called &quot;&lt;a href=&quot;http://review.zdnet.com/Windows_Vista_Ultimate/4505-3672_16-32013603.html?tag=nl.e539&quot;  title=&quot;ZDNet Vista Review&quot;&gt;XP warmed over&lt;/a&gt;.&quot;  A pretty negative review for a company that has spent the last five years working on the replacement.  After five years of no updates (save patches to XP&#039;s horrendous security, but that&#039;s a subject for another post altogether, and no SP1 and SP2 don&#039;t count), one would expect an amazing new system that would blow the socks off of reviewers, impress the users, and function in a way never before conceived, giving Vista a unique place in the OS world as a system that was a pleasure to use and generated more productivity than ever thought possible.  Instead, what users are getting is a system with relatively minor eye-candy upgrades, and a restrictive digital rights management system that can actually degrade the playback quality of certain media.  Wow...that&#039;s really compelling.&lt;br /&gt;
&lt;br /&gt;
Something really sad about Vista, especially considering how little of an upgrade it really is, is the considerable hardware requirements that come with it.  Vista will mostly likely only come with new computers, and systems sold even a year ago may have trouble running it (consider, for example, low-end systems sold with &quot;only&quot; 512MB of RAM and a built in sufficient--but not spectacular--video card).  While I am not a greenie by any stretch of the imagination, I do somewhat agree with them that Vista will &lt;a href=&quot;http://www.treehugger.com/files/2007/01/uk_green_party.php&quot;  title=&quot;UK Green Party on The Vista Landfill Effect&quot;&gt;unnecessarily obsolete&lt;/a&gt; thousands of computers.  I highly doubt upgraded systems will have a pleasent user experience.&lt;br /&gt;
&lt;br /&gt;
Another theme among the chatter regarding Vista was the fact that its &quot;new&quot; features were features that were already in Apple&#039;s Macintosh operating system, and had been for some time.  When Mac OS X was &lt;a href=&quot;http://www.apple.com/pr/library/2001/mar/21osxstore.html&quot;  title=&quot;Mac OS X Hits Stores This Weekend&quot;&gt;released in 2001&lt;/a&gt; it already had much of the polish and eye candy that Vista is bragging about now.  And over the nearly six years since, every time Apple has released an update, most users and reviewers have reported that the operation of the system has actually sped up.  Something that stands in stark contrast to the slower operation and new hardware requirements of many of Microsoft&#039;s past &quot;upgrades.&quot;  Another interesting point to note is that the most recent release of Max OS X [at least the most recent version that could run on PPC (G4/G5) hardware] is that it could run on systems that were released when OS X was initially released, and in some cases, even systems released before OS X&#039;s initial release.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s look for a moment at the &quot;other operating system:&quot; Linux.  Built on Open Source principles, and developed by hundreds of developers around the world, it has grown from a &quot;hobbyist&#039;s operating system&quot; to an operating system upon which fortune 100 companies depend.  While large companies are supporting it now, it attained its status and proved its worth without the corporate backing which MS-DOS and MS Windows enjoyed since the beginning.  While OS X and Linux still can appeal to widely different markets, Linux has gained popularity for the same reason Apple&#039;s OS X has: it delivers an experience which enables the user to be productive, efficient, and &quot;just get things done.&quot;  In short, delivering what the user wants.&lt;br /&gt;
&lt;br /&gt;
So why is Vista a miss and not simply and overshot?  It&#039;s because Microsoft is aiming at the wrong thing.  In his article today, &lt;a href=&quot;http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9009961&quot;  title=&quot;The Trouble with Vista&quot;&gt;Scott Finnie&lt;/a&gt; points out that Microsoft&#039;s two main priorities have become&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
1. Avoiding negative publicity (especially about security and software quality) &lt;br /&gt;
2. Making sure the largest enterprise customers are happy&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;em&gt;If you have the time, go read Scott&#039;s article.  No need for me to reiterate all the excellent points he makes.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
There are many reasons for this, but it comes down to retaining market share.  Apple and Linux are biting at Microsoft&#039;s heals like never before.  OS X and Linux are serious business competitors.  And once a user uses a system at work (possibly because they&#039;re forced to) they will then be comfortable using that system at home.  If you lose the business market, you&#039;re well on your way to losing the home market. [Merrill Chapman, in his book &quot;In Search of Stupidity&quot; shows that this is how the PC took over the home market some 20-25 years ago: businesses used PC&#039;s first, so people wanted them at home.]  Thus, Windows cannot appeal overwhelmingly to the consumer market, or else businesses will no longer want to use it, and will happily chose something else.  On the other hand, Vista cannot appeal overwhelmingly to the business market, or it will be dead dull at home (witness Apple&#039;s &lt;a href=&quot;http://www.apple.com/getamac/&quot;  target=&quot;_blank&quot; title=&quot;They&#039;re funny...go see them.&quot;&gt;I&#039;m a Mac/I&#039;m a PC ads&lt;/a&gt;).  No really, go witness them...they&#039;re worth it...I&#039;ll wait.  Apple and Linux, who have nowhere to go but up, don&#039;t really care about appealing to one market or the other, they just care about making a secure, easy-to-use operating system.  And that philosophy is winning converts.&lt;br /&gt;
&lt;br /&gt;
It seems Microsoft&#039;s aim was all (or at least mostly) wrong in this release.  Instead of focusing on eye candy and crippling digital rights management (something done to keep media companies happy), there should have been more efforts invested in stability, &lt;em&gt;usable&lt;/em&gt; security [Vista&#039;s User Access Controls is already becoming a joke.  Linux and Mac OS have prompts for additional privileges (when needed, like at software install) down pat], and a better user experience (read Joel Spolsky&#039;s rant about the &lt;a href=&quot;http://www.joelonsoftware.com/items/2006/11/21.html&quot;&gt;Vista shutdown menu&lt;/a&gt; for a good example of features designed by committee).&lt;br /&gt;
&lt;br /&gt;
No...I don&#039;t think Vista overshot the market.  I don&#039;t even think it was aiming at it.&lt;br /&gt;
&lt;br /&gt;
UPDATE (2007-02-02 11:00): Zack Urlocker (Michael&#039;s brother) has more observations and humor regarding the Windows Vista launch at &lt;a href=&quot;http://www.theopenforce.com/2007/02/windows_vista_l.html&quot;  title=&quot;Windows Vista Launch&quot;&gt;his blog.&lt;/a&gt; 
    </content:encoded>

    <pubDate>Thu, 01 Feb 2007 22:30:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/18-guid.html</guid>
    <category>apple</category>
<category>linux</category>
<category>macintosh</category>
<category>microsoft</category>
<category>osx</category>
<category>tech</category>
<category>vista</category>

</item>
<item>
    <title>Time to change languages</title>
    <link>http://jjncj.com/blog/archives/17-Time-to-change-languages.html</link>
            <category>geek</category>
            <category>programming</category>
    
    <comments>http://jjncj.com/blog/archives/17-Time-to-change-languages.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=17</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=17</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    If you&#039;re starting to end sentences &lt;a href=&quot;http://akbourne.com/2006/07/20/coding/&quot; &gt;with semicolons&lt;/a&gt; try Python. &lt;img src=&quot;http://jjncj.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; My new primary language.  I have a draft saved at the moment about my transition to Python.  Short story: I&#039;m loving it.  Stay tuned. 
    </content:encoded>

    <pubDate>Tue, 30 Jan 2007 23:02:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/17-guid.html</guid>
    <category>geek</category>
<category>programming</category>

</item>
<item>
    <title>Ah, the fun of technology</title>
    <link>http://jjncj.com/blog/archives/7-Ah,-the-fun-of-technology.html</link>
            <category>geek</category>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/7-Ah,-the-fun-of-technology.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=7</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    So, blogs support these things called trackbacks.  It&#039;s so blog writers will know you&#039;ve made reference to their article in your blog.  Of course, they don&#039;t always work out of the box, so things have to be tweaked.  &lt;a href=&quot;http://akbourne.com/&quot;  &gt;Jon&lt;/a&gt; and I think we have worked out the reason I couldn&#039;t create trackbacks to his site.  We&#039;ll test this out by pointing you to one of this post on the joys (that Crystal and I are experiencing as well) of deciphering &quot;&lt;a href=&quot;http://akbourne.com/2007/01/24/boppy/&quot;&gt;toddlerese&lt;/a&gt;.&quot; 
    </content:encoded>

    <pubDate>Thu, 25 Jan 2007 23:08:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/7-guid.html</guid>
    <category>geek</category>
<category>tech</category>

</item>
<item>
    <title>Is lighttpd really that light?</title>
    <link>http://jjncj.com/blog/archives/5-Is-lighttpd-really-that-light.html</link>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/5-Is-lighttpd-really-that-light.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=5</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=5</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    I&#039;ve done a few server installs over the past few months where the install called for a web server.  Whether it was an application needing a web interface, or the application &lt;em&gt;was&lt;/em&gt; a web application, sometimes a web server was needed.  In those instances, if the application did not have a heavy dependency on &lt;a href=&quot;http://httpd.apache.org&quot;  title=&quot;Apache Web Server&quot;&gt;Apache&lt;/a&gt; I&#039;d install &lt;a href=&quot;http://www.lighttpd.net/&quot;  title=&quot;Lighttpd Server&quot;&gt;Lighttpd&lt;/a&gt; instead.  It has a smaller footprint, is more efficient, faster, and has built-in support for FastCGI.  &lt;br /&gt;
&lt;br /&gt;
Today I went to install Lighttpd on a new server and realized it might not be so lightweight.  The server was a fresh, minimal, install of &lt;a href=&quot;http://www.ubuntu.com/&quot;  title=&quot;Ubuntu Linux Distribution&quot;&gt;Ubuntu&lt;/a&gt;, so had only installed what was absolutely needed up to that point, which included a stripped down version of &lt;a href=&quot;http://www.perl.org&quot;  title=&quot;The Perl programming language&quot;&gt;Perl&lt;/a&gt;.  As part of installing Lighttpd, it wanted to install a couple Perl modules, which meant that the full Perl installation was needed, along with all the default Perl modules.  Total weight?  25.1MB installed.  An Apache install would have only taken about 7MB at this point.&lt;br /&gt;
&lt;br /&gt;
However, to be fair, in an environment where other requirements are already installed, Lighttpd would only have required an extra 1MB and Apache would have needed about 4MB.  Also, I&#039;m sure something else would have needed to install Perl along the line anyway, it was just a little shocking to see the footprint for a &quot;slim&quot; server need so much space.&lt;br /&gt;
&lt;br /&gt;
And, yes, I still went with Lighttpd.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 25 Jan 2007 15:15:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/5-guid.html</guid>
    <category>tech</category>

</item>
<item>
    <title>Does ubiquity &quot;unproper&quot; a noun?</title>
    <link>http://jjncj.com/blog/archives/4-Does-ubiquity-unproper-a-noun.html</link>
            <category>details</category>
            <category>tech</category>
    
    <comments>http://jjncj.com/blog/archives/4-Does-ubiquity-unproper-a-noun.html#comments</comments>
    <wfw:comment>http://jjncj.com/blog/wfwcomment.php?cid=4</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://jjncj.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=4</wfw:commentRss>
    

    <author>joshua@joshuakugler.com (Joshua Kugler)</author>
    <content:encoded>
    Over at &lt;a href=&quot;http://akbourne.com/2007/01/16/internet/&quot; &gt;Bourne in Alaska&lt;/a&gt; Jon Bourne wonders whether or not we can stop writing &quot;Internet&quot; and &quot;Web&quot; and just refer to them as the &quot;internet&quot; and the &quot;web.&quot;  That depends.  Are they proper nouns?  Well, yes, at least at one point in their existence.  As most geeks know, but the general public may not, the Internet referred to a network created by ARPA (now DARPA) in 1969 called ARPANET.  In 1983, then first TCP/IP wide area network went live on what would become NSFNet.  As other networks joined to NSFNet, it became known as the Internet, due to the fact they it was linking many different networks, thus the &quot;inter&quot; part of the name.&lt;br /&gt;
&lt;br /&gt;
While it is traditionally considered a proper noun, and often written as &quot;the Internet,&quot; there are publications (more so outside the United States) that regularly use the lowercase. Wikipedia has this to say&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Historically, Internet and internet have had different meanings, with internet being a contraction of internetwork or internetworking and Internet referring to the International Network. ... The distinction was evident in many RFCs, books, and articles from the 1980s and early 1990s (some of which, such as RFC 1918, refer to &quot;internets&quot; in the plural), but has recently fallen into disuse. Instead, the term intranet is generally used for private networks.&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Internet#The_name_Internet&quot;&gt;http://en.wikipedia.org/wiki/Internet#The_name_Internet&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Wikipedia also points to IBM&#039;s &lt;em&gt;TCP/IP Tutorial and Technical Overview&lt;/em&gt;, published in 1989, which stated&lt;br /&gt;
&lt;blockquote&gt;The words internetwork and internet is [sic] simply a contraction of the phrase interconnected network. However, when written with a capital &quot;I&quot;, the Internet refers to the worldwide set of interconnected networks. Hence, the Internet is an internet, but the reverse does not apply. The Internet is sometimes called the connected Internet.&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
I would say &quot;Internet&quot; still refers to the world-wide connected network.  As to &quot;Web&quot; I&#039;ve never really thought about that one..and never knew it was supposed to be capitalized.  I would say that since &quot;Web&quot; is actually a shortening of &quot;World Wide Web,&quot; a noun which refers to a specific thing, namely the system created by billions of interconnected web pages, then it would be capitalized.  But you probably noticed that I wrote &quot;web&quot; in the last sentence.  Why? It felt natural.  A &quot;web page&quot; is not &quot;the web&quot;  A web page is part of the Web.  I guess in the use as a noun, &quot;Web&quot; would be capitalized.  In use as an adjective, i.e. &quot;web page&quot; it would not be capitalized.  However, standard usage in English would seem to indicate that adjectives derived from proper nouns would retain their capitalization.  &lt;br /&gt;
&lt;br /&gt;
At the moment, no examples come to mind of common nouns in our language that used to be proper nouns.  Someone who is more into literature probably could. 
    </content:encoded>

    <pubDate>Tue, 23 Jan 2007 22:02:00 +0000</pubDate>
    <guid isPermaLink="false">http://jjncj.com/blog/archives/4-guid.html</guid>
    <category>details</category>
<category>tech</category>

</item>

</channel>
</rss>