<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>Code Softly</title>
    <link rel="alternate" type="text/html" href="http://www.codesoftly.com/" />
    
    <id>tag:www.codesoftly.com,2009-05-06:/1</id>
    <updated>2010-03-10T20:12:13Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.25</generator>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/CodeSoftly" /><feedburner:info uri="codesoftly" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-nd/2.0/" /><logo>http://codesoftly.aaronoliver.com/code_softly_owl.jpg</logo><entry>
    <title>Comment Gadget Fail</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/uZYUmFWAti8/comment-gadget-fail.html" />
    <id>tag:www.codesoftly.com,2010://1.161</id>

    <published>2010-03-10T20:08:57Z</published>
    <updated>2010-03-10T20:12:13Z</updated>

    <summary>I've switched back from the Google Friend Connect comment widget to the original Disqus comment setup. </summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="blogging" label="blogging" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="codesoftly" label="code softly" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="comments" label="comments" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="disqus" label="disqus" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="friendconnect" label="friend connect" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="disqus.jpg" src="http://www.codesoftly.com/images/disqus.jpg" width="351" height="306" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve switched back from the Google Friend Connect &lt;a href="http://www.youtube.com/watch?v=4HQ81jgnvBQ"&gt;comment Gadget&lt;/a&gt; to the original &lt;a href="http://disqus.com"&gt;Disqus&lt;/a&gt; comment setup. &lt;/p&gt;

&lt;h3&gt;Why I Wanted Friend Connect&lt;/h3&gt;

&lt;p&gt;I love the idea of readers  &amp;#8220;joining&amp;#8221; Code Softly, much like they might &lt;a href="http://www.google.com/support/blogger/bin/answer.py?hl=en&amp;amp;answer=104226"&gt;follow a site on Blogger&lt;/a&gt;. So I added Friend Connect&amp;#8217;s &lt;a href="http://www.youtube.com/watch?v=4agYZmIQ3aE"&gt;members gadget&lt;/a&gt; to the sidebar (&lt;a href="http://codesoftly.com/members.html"&gt;you should totally join&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Once that was in, I found the &lt;a href="http://www.youtube.com/watch?v=9jJI-9fqhz0"&gt;recommendation widget&lt;/a&gt;, which was kind of a nice and generic thumbs-up gizmo, kinda like &lt;a href="http://digg.com"&gt;digg&lt;/a&gt; or &lt;a href="http://reddit.com"&gt;reddit &lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So far, so good. You can join the community and then flag posts you like. &lt;/p&gt;

&lt;p&gt;Then I thought it would be cool if people could comment using the same identity they created when joining and recommending. That&amp;#8217;s when things got rocky.&lt;/p&gt;

&lt;h3&gt;Where the Comment Gadget Falls Down&lt;/h3&gt;

&lt;p&gt;I was happy to see the &lt;a href="http://www.youtube.com/watch?v=4HQ81jgnvBQ"&gt;commenting gadget&lt;/a&gt; in the Friend Connect gallery. I yanked the code for that sucker, tweaked it a bit, and punched it onto the site.&lt;/p&gt;

&lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="comments.png" src="http://www.codesoftly.com/images/comments.png" width="159" height="170" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;I immediately saw a few problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No aggregation. There was no easy way to indicate on the homepage how many comments a post had. I got around this by showing a collapsed widget at the bottom of a post, but it still felt kinda awkward.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No formatting. Comments get all of their formatting removed. Things like whitespace are important for aesthetics, especially when people might be posting code snippets and stuff.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Strange comment counting. A reply to a comment isn&amp;#8217;t &amp;#8220;counted&amp;#8221; as a comment. For example, if Lenny makes a comment, then Carl replies to Lenny, the total comment count is one. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No easy view of all the comments on the site.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;With My Tail Between My Legs&lt;/h3&gt;

&lt;p&gt;After a few posts, I realized that &lt;strong&gt;feedback and discussion was suffering because of the limitations of the widget&lt;/strong&gt;. Plus, the folks at Disqus had made some &lt;a href="http://blog.disqus.com/post/424494077/faster-disqus-for-everybody"&gt;speed improvements&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So I put the older, richer, and yes &lt;strong&gt;better&lt;/strong&gt; comments up. Maybe someday the Friend Connect widget will be improved upon, or someone can refute all my criticisms and I&amp;#8217;ll be able to try it again. For now I&amp;#8217;m sticking with what works.&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=uZYUmFWAti8:1k0eYeqcsPA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/uZYUmFWAti8" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/03/comment-gadget-fail.html</feedburner:origLink></entry>

<entry>
    <title>What Makes Veteran Programmers Better Than Rookies?</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/-XLGM1tiaYg/what-makes-veteran-programmers-better-than-rookies.html" />
    <id>tag:www.codesoftly.com,2010://1.160</id>

    <published>2010-03-09T12:00:00Z</published>
    <updated>2010-03-09T14:27:41Z</updated>

    <summary>What makes an 11-year veteran programmer better than a hotshot n00b right out of school?

I think it's fair to say that experienced programmers are better than rookies. Sure, there are exceptions, but in my time in the business I've rarely seen someone with a couple of years under their belt do better at creating good stuff on time than someone who's been at it for a decade.</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="experience" label="experience" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="methodology" label="methodology" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="question" label="question" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="veterans" label="veterans" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="gilligan.jpg" src="http://www.codesoftly.com/images/gilligan.jpg" width="500" height="288" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;What makes an 11-year veteran programmer better than a hotshot n00b right out of school?&lt;/p&gt;

&lt;p&gt;I think it&amp;#8217;s fair to say that experienced programmers are better than rookies. Sure, there are exceptions, but in my time in the business I&amp;#8217;ve rarely seen someone with a couple of years under their belt do better at creating good stuff on time than someone who&amp;#8217;s been at it for a decade.&lt;/p&gt;

&lt;p&gt;Before everyone goes nuts, let me qualify this a bit. I define &amp;#8220;better&amp;#8221; as &amp;#8220;&lt;strong&gt;better able to deliver working software within a mid-size shop&lt;/strong&gt;&amp;#8221;. This narrows things down, but it&amp;#8217;s where my experiences lie, so I choose to focus on it.&lt;/p&gt;

&lt;p&gt;I have my own thoughts on &lt;em&gt;why&lt;/em&gt; I think this is true, but I&amp;#8217;m very interested in hearing what others have to say. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, thoughts?&lt;/strong&gt;&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=-XLGM1tiaYg:qVJAYMYEaqE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/-XLGM1tiaYg" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/03/what-makes-veteran-programmers-better-than-rookies.html</feedburner:origLink></entry>

<entry>
    <title>Investing In Pain: Invisible Technical Debt</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/pmFMFYjno6Y/investing-in-pain-invisible-technical-debt.html" />
    <id>tag:www.codesoftly.com,2010://1.159</id>

    <published>2010-03-05T02:56:36Z</published>
    <updated>2010-03-05T03:10:51Z</updated>

    <summary>Normal debts have creditors who are very good at informing their debtors of exactly how much is owed. Software doesn't extend us that courtesy. </summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="methodology" label="methodology" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="technicaldebt" label="technical debt" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;All too often we slap together solutions in the name of finishing on time. This has been described as incurring &lt;a href="http://martinfowler.com/bliki/TechnicalDebt.html"&gt;technical debt&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
Just as a business incurs some debt to take advantage of a market opportunity developers may incur technical debt to hit an important deadline.
&lt;/blockquote&gt;

&lt;p&gt;I think programmers intuitively feel this is correct. Good ones learn where the cutoff is, bad ones either create piles of technical debt, or paralyze their shop in the quest for &lt;a href="http://www.codinghorror.com/blog/2004/12/gold-plating.html"&gt;gold-plated code&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;One of the insidious things about technical debt is that eliminating it is more complex than just paying of financial debt + interest. &lt;strong&gt;There&amp;#8217;s a psychological component that can sometimes hide the debt entirely&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, in a rush, Flavio crams in a complex but crude workaround to a problem. His solution gets the job done, but it&amp;#8217;s complexity hides the fact that he has broken the object model and implemented a really crummy design.&lt;/p&gt;

&lt;p&gt;Over time, this kludge is mistaken for &amp;#8220;the way we do it&amp;#8221; by other developer who come across the design. They reinforce it by building upon it, oblivious to it&amp;#8217;s rotten nature.&lt;/p&gt;

&lt;p&gt;When Flavio peeks back in and sees the horrible mess built upon his once-tactical hack, he runs for the hills. The technical debt has ballooned into some kind of sick nerd reverse-mortgage crisis.&lt;/p&gt;

&lt;p&gt;Normal debts have creditors who are very good at informing their debtors of exactly how much is owed. Software doesn&amp;#8217;t extend us that courtesy. &lt;/p&gt;

&lt;p&gt;We&amp;#8217;re kind of on the hook for keeping track of our own technical debt, which means we need to be disciplined and pay things off as soon as possible.&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=pmFMFYjno6Y:2Ld4hFAUPOw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/pmFMFYjno6Y" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/03/investing-in-pain-invisible-technical-debt.html</feedburner:origLink></entry>

<entry>
    <title>The Law of Medium Software Projects</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/uIxEZIj_FdE/the-law-of-medium-software-projects.html" />
    <id>tag:www.codesoftly.com,2010://1.157</id>

    <published>2010-03-02T04:55:25Z</published>
    <updated>2010-03-02T19:11:35Z</updated>

    <summary>For medium-sized software projects, we can expect that large fluctuations, irregularities, and discrepancies in time and effort will occur more or less regularly.</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="math" label="math" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mediumsoftwareprojects" label="medium software projects" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="methodology" label="methodology" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="normal-distribution.jpg" src="http://www.codesoftly.com/images/normal-distribution.jpg" width="500" height="333" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Your project probably isn&amp;#8217;t epic, nor is it trivial. That&amp;#8217;s precisely why it&amp;#8217;s hard.&lt;/p&gt;

&lt;p&gt;John D. Cook summarizes &lt;a href="http://www.johndcook.com/blog/2010/02/25/the-law-of-medium-numbers/"&gt;the mathematical &amp;#8220;law of medium numbers&amp;#8221;&lt;/a&gt;. In short: &lt;strong&gt;the hard stuff is in the middle&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
Atoms are simple, and so are stars, but medium-sized things like birds are complicated. Medium-sized systems are where you see chaos.
&lt;/blockquote&gt;

&lt;p&gt;With minimal effort, I humbly restate this as &lt;strong&gt;The Law Of Medium Software Projects&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
For medium-sized software projects, we can expect that large fluctuations, irregularities, and discrepancies in time and effort will occur more or less regularly.
&lt;/blockquote&gt;

&lt;p&gt;When you start from scratch with a small problem space, like &amp;#8220;I want a portfolio site&amp;#8221;, the solution is pretty clear-cut: Pick a basic &lt;a href="http://www.movabletype.org/"&gt;publishing platform&lt;/a&gt;, get your images, prose, then organize and launch.&lt;/p&gt;

&lt;p&gt;Super-large efforts can also be simple. If you&amp;#8217;re &lt;a href="http://www.macrumors.com/2010/02/22/aerial-footage-of-apples-north-carolina-data-center/"&gt;building out a titanic data center&lt;/a&gt;, the question of &amp;#8220;how much power we gonna&amp;#8217; need?&amp;#8221; boils down to square-footage and math. &lt;/p&gt;

&lt;p&gt;It&amp;#8217;s the middle-sized stuff that is tricky: the four-month project, the 300-user web app, the blog that gets enough traffic to create non-trivial hosting costs, the database that&amp;#8217;s big enough to need &lt;a href="http://www.codesoftly.com/2009/01/the-tactical-dba.html"&gt;DBA&lt;/a&gt;&amp;#8217;s, but not big enough for &lt;a href="http://en.wikipedia.org/wiki/Storage_area_network"&gt;bleeding-edge storage stuff&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://en.wikipedia.org/wiki/Normal_distribution"&gt;normal curve&lt;/a&gt; tells us that most projects fall in the middle. The realities of our profession dictate the same. &lt;/p&gt;

&lt;p&gt;If a job is so small as to be trivially simple, people rig it themselves or unload it to a &lt;a href="http://www.livejournal.com/"&gt;third party provider&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;If a project is titanic in scope and size, then we staff a lot of people and plan for &lt;strong&gt;a lot&lt;/strong&gt; of time. While the details can be gnarly and intricate, the 10,000 foot-view of the project boils down to predicting person-hours and hardware costs.&lt;/p&gt;

&lt;h3&gt;What the Law Means to You&lt;/h3&gt;

&lt;p&gt;We need to be careful which methodologies and anecdotes we latch onto. Just because Google leans on &lt;a href="http://labs.google.com/papers/bigtable.html"&gt;Bigtable&lt;/a&gt; doesn&amp;#8217;t mean it&amp;#8217;s time to drop Oracle like a bad habit. Just because &lt;a href="http://37signals.com/svn/posts/1757-a-reminder-of-how-simple-business-can-be-when-you-dont-make-it-complicated"&gt;37Signals says &amp;#8220;simple is best&amp;#8221;&lt;/a&gt; doesn&amp;#8217;t mean you can ignore 95% of the feature requests from your department.&lt;/p&gt;

&lt;p&gt;The trick is to &lt;strong&gt;map these successes onto our own situation&lt;/strong&gt;. Think of it like the breakfast buffet at Denny&amp;#8217;s. Sure, they&amp;#8217;ve got cantaloupe, but you want eggs and pancakes, so admire the melon. Appreciate what it can lend to breakfast. Maybe even take a teeny piece, but don&amp;#8217;t dump what you&amp;#8217;ve accumulated just to make room for honeydew. &lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=uIxEZIj_FdE:MS-tWTtpIGY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/uIxEZIj_FdE" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/03/the-law-of-medium-software-projects.html</feedburner:origLink></entry>

<entry>
    <title>Humane HTML Tag Wraps?</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/wmuRSJ3vBAs/elegant-html-tag-wrapping.html" />
    <id>tag:www.codesoftly.com,2010://1.156</id>

    <published>2010-02-26T11:25:50Z</published>
    <updated>2010-02-26T11:44:26Z</updated>

    <summary>Every now and then I find myself writing HTML by hand. Sometimes the tags have lots of attributes, or they have long values. This makes them way longer than aesthetic 80-ish character line size. What's the best way to wrap them?</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="bikeshed" label="bikeshed" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="formatting" label="formatting" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="html" label="html" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;Every now and then I find myself writing HTML by hand. Sometimes the tags have lots of attributes, or they have long values. This makes them way longer than the &lt;a href="http://richarddingwall.name/2008/05/31/is-the-80-character-line-limit-still-relevant/"&gt;aesthetic 80-ish character max&lt;/a&gt;. What&amp;#8217;s the best way to wrap them?&lt;/p&gt;

&lt;p&gt;If I start with:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a href="http://codesoftly.com" id="awesome-link-one" class="link main" rel="bookmark"&amp;gt;mylink&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;What&amp;#8217;s the best way to wrap it?&lt;/p&gt;

&lt;h3&gt;Stacked: Everything on Its Own Line?&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a href="http://codesoftly.com" 
     id="awesome-link-one" 
     class="link main" 
     rel="bookmark"&amp;gt;mylink&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I like this because it&amp;#8217;s clear what all the attributes are. There&amp;#8217;s little chance of missing one because it&amp;#8217;s way off the right of the screen. &lt;/p&gt;

&lt;p&gt;I don&amp;#8217;t like that it hides what the link text is.&lt;/p&gt;

&lt;h3&gt;One Long Opening Tag With Linked Text Indented?&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a href="http://codesoftly.com" id="awesome-link-one" class="link main" rel="bookmark"&amp;gt;
    mylink
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I like this because it leaves the link text clear and on a line by itself. It&amp;#8217;s crummy because that first line can get &lt;em&gt;really&lt;/em&gt; long.&lt;/p&gt;

&lt;h3&gt;Something In Between?&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a href="http://codesoftly.com" id="awesome-link-one" 
     class="link main" rel="bookmark"&amp;gt;mylink&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I&amp;#8217;m not sure this is any better. It feels like the worst of both worlds.&lt;/p&gt;

&lt;p&gt;Oh, and  &amp;#8220;How Dreamweaver does it&amp;#8221; &lt;a href="http://dreamling.ca/2010/01/29/dreamweaver-rant/"&gt;isn&amp;#8217;t a legitimate answer&lt;/a&gt;.&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=wmuRSJ3vBAs:3ASlHUEzyMM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/wmuRSJ3vBAs" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/elegant-html-tag-wrapping.html</feedburner:origLink></entry>

<entry>
    <title>The Database Is a Time Bomb</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/r_Ltjiwc58o/the-database-is-a-time-bomb.html" />
    <id>tag:www.codesoftly.com,2010://1.153</id>

    <published>2010-02-24T16:59:49Z</published>
    <updated>2010-02-24T14:29:48Z</updated>

    <summary>Most sites, especially blogs, have no business being written with dynamic pages in PHP or .NET or Perl, and they certainly don't need a connected realtime database.</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="movabletype" label="movable type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rant" label="rant" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="staticpublishing" label="static publishing" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="publish-code-softly.png" src="http://www.codesoftly.com/images/publish-code-softly.png" width="420" height="243" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve been a proponent of &lt;a href="http://www.movabletype.org/"&gt;Movable Type&lt;/a&gt; as a publishing platform for a while now. I stick with it for one big reason: &lt;strong&gt;it is absolutely great at static publishing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I realize that &lt;a href="http://wordpress.org/"&gt;Wordpress&lt;/a&gt; and the gang have all kinds of neato features, fancy themes, and powerful plugins. Despite all that, I find the reliability of good old-fashioned HTML pages comforting. Even commodity hosting plans have that part figured out.&lt;/p&gt;

&lt;p&gt;Not needing a database connection means that if the host&amp;#8217;s database dies, my site is fine. It means that if for some unfathomable reason Code Softly gets Digg-bombed I don&amp;#8217;t need to worry about blowing away connection pools or overwhelming my page logic.&lt;/p&gt;

&lt;p&gt;The fact is that most sites, especially blogs, have no business being written with dynamic pages in PHP or .NET or Perl, and they certainly don&amp;#8217;t need a connected realtime database. &lt;/p&gt;

&lt;p&gt;Not sure if you can benefit from static publishing? Take this short survey:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does your site change depending on which user views it?&lt;/li&gt;
&lt;li&gt;Are you sure about that?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bottom line, most fancy stuff is unnecessary or can be accomplished with javascript. &lt;/p&gt;

&lt;p&gt;Think about it, &lt;strong&gt;what&amp;#8217;s the most fragile piece of your website&lt;/strong&gt;, the part that breaks the most often? (hint: it&amp;#8217;s probably the database) The database can be mis-configured, run out of juice, or just fail to start. Tell me you&amp;#8217;ve never had a host accidentally have a DB outage.&lt;/p&gt;

&lt;p&gt;What&amp;#8217;s the part of your infrastructure that&amp;#8217;s the l&lt;strong&gt;ast thing to fail&lt;/strong&gt;? (hint: it&amp;#8217;s the http server, aka &lt;a href="http://httpd.apache.org/"&gt;Apache&lt;/a&gt;) Why tie the fate of your site to the most fragile part of your stack, &lt;em&gt;especially&lt;/em&gt; when you don&amp;#8217;t really need it? &lt;/p&gt;

&lt;p&gt;Take a look at your site. I&amp;#8217;ll bet you can get by with a bunch of static pages.&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=r_Ltjiwc58o:sFcP34qohm4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/r_Ltjiwc58o" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/the-database-is-a-time-bomb.html</feedburner:origLink></entry>

<entry>
    <title>5 Foolproof Job Fair Tips For Web Programmers</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/5q3_wxwdgX0/5-foolproof-job-fair-tips-for-web-programmers.html" />
    <id>tag:www.codesoftly.com,2010://1.155</id>

    <published>2010-02-23T04:55:29Z</published>
    <updated>2010-02-23T11:52:34Z</updated>

    <summary>I've just had my first experience manning a booth at a career fair. Now that I have gained only passing wisdom around this event, I choose to dispense concrete tips with guaranteed results.</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="jobhunting" label="job hunting" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jobs" label="jobs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;I&amp;#8217;ve just had my first experience manning a booth at a career fair. Now that I have gained only passing wisdom around this event, I choose to dispense concrete tips with guaranteed results:&lt;/p&gt;

&lt;h3&gt;You Don&amp;#8217;t Have to Dress Up, Just Don&amp;#8217;t Dress Down&lt;/h3&gt;

&lt;p&gt;The suit and tie looks sharp, but isn&amp;#8217;t really necessary. A job fair is busy, kind of loud, and full of people. Most important is that you look (and smell) clean. You&amp;#8217;re not going to win any beauty contest, but you don&amp;#8217;t want employers to think you&amp;#8217;re a slob.&lt;/p&gt;

&lt;h3&gt;Your Department&amp;#8217;s Home Page Doesn&amp;#8217;t Really Count&lt;/h3&gt;

&lt;p&gt;I usually ask prospectives &amp;#8220;What experience have you had working with websites?&amp;#8221; The answer an alarmingly high number of times is &amp;#8220;I help maintain my department&amp;#8217;s home page&amp;#8221;.&lt;/p&gt;

&lt;p&gt;I realize that not everyone has the opportunity to work at Amazon or CNN.com, but at least come back with &lt;strong&gt;something&lt;/strong&gt;. Even running a personal blog involves at least a few principles of sound web programming.&lt;/p&gt;

&lt;h3&gt;Be Specific About What You Know&lt;/h3&gt;

&lt;p&gt;Don&amp;#8217;t walk up and say &amp;#8220;sooooo&amp;#8230;what have you got?&amp;#8221;. This is a dumb question, In this economy, you already know the answer is &amp;#8220;not much&amp;#8221;. Introduce yourself with &amp;#8220;Hello, I&amp;#8217;m Flavio. I&amp;#8217;m studying linear algebra and am interested in a full-time programming job.&amp;#8221; This helps the person zero in on how good a fit you might be. The people at the booth might be looking for linear algebra specialists, but when you only give them a general inquiry, they have little chance of learning that you&amp;#8217;re a perfect match.&lt;/p&gt;

&lt;h3&gt;You Need Them More Than They Need You&lt;/h3&gt;

&lt;p&gt;If you&amp;#8217;re participating in this cattle-call, chances are you&amp;#8217;re not &lt;a href="http://www.codesoftly.com/2009/05/zed-shaw-digital-patriot.html"&gt;sweet enough to have attitude&lt;/a&gt;. Remember the part about there not being enough jobs to go around? You don&amp;#8217;t need to approach on your knees, but don&amp;#8217;t act offended if there isn&amp;#8217;t anything for you. Just keep moving.&lt;/p&gt;

&lt;h3&gt;Have a Conversation&lt;/h3&gt;

&lt;p&gt;The point of the Job fair is human interaction. You could learn everything about an employer and position online and submit your resume there. &lt;strong&gt;You&amp;#8217;re at the fair to stand out and maybe get an interview or job on the spot&lt;/strong&gt;, thereby beating out all the digital posers. To do that you need to make your interaction unique but not flashy. Just having a detailed conversation will do that. &lt;/p&gt;

&lt;p&gt;A quick fly-by to drop off your resume then pick up pamphlets and swag doesn&amp;#8217;t do the trick. Do that and prepare to become a part of The PIle. Seize the opportunity to meet people face to face. Otherwise just apply online and save everyone the trouble.&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=5q3_wxwdgX0:tQxrzCpZARo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/5q3_wxwdgX0" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/5-foolproof-job-fair-tips-for-web-programmers.html</feedburner:origLink></entry>

<entry>
    <title>Content Rules</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/yPccoXk3xss/content-rules.html" />
    <id>tag:www.codesoftly.com,2010://1.154</id>

    <published>2010-02-18T12:07:28Z</published>
    <updated>2010-02-18T13:13:54Z</updated>

    <summary>I'm always trying to impress upon people that more than anything else, their sites need content. It's fun and sexy to harp on visual and design things, but at the end of the day, people won't use your pages because they look nice. They use them because that contain something the reader wants. Boagworld has a post that reinforces this nicely, putting emphasis on having a good copywriter:</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="copywriting" label="copywriting" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="design" label="design" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="usability" label="usability" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;I&amp;#8217;m always trying to impress upon people that more than anything else, their sites need content. It&amp;#8217;s fun and sexy to harp on visual and design things, but at the end of the day, people won&amp;#8217;t use your pages because they look nice. &lt;strong&gt;They use them because they contain some information the reader wants&lt;/strong&gt;, be it text, images, or a &lt;a href="http://www.kongregate.com/games/Foreverkul/toss-the-turtle"&gt;neato flash game&lt;/a&gt; (my best distance is 321,492 feet. Deal with it). &lt;/p&gt;

&lt;p&gt;Boagworld has &lt;a href="http://boagworld.com/site-content/content-is-king"&gt;a post&lt;/a&gt; that reinforces this nicely, putting emphasis on having a good copywriter:&lt;/p&gt;

&lt;blockquote&gt;
Copywriters also tend to know how to spell and, vitally, how to use grammar properly. If you&amp;#8217;re a designer and you doodled through English lessons at school, you should do all you can to catch up on your grammar and spelling. A miss-placed apostrophe or hyphen could change the entire meaning of your piece. At which point you&amp;#8217;ve failed as a designer.
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://boagworld.com/site-content/content-is-king"&gt;Content Is King&lt;/a&gt; [Boagworld]&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=yPccoXk3xss:WRDezgChS0E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/yPccoXk3xss" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/content-rules.html</feedburner:origLink></entry>

<entry>
    <title>Backlog for My Brain</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/Kr6ociqTpfA/backlog-for-my-brain.html" />
    <id>tag:www.codesoftly.com,2010://1.151</id>

    <published>2010-02-17T12:00:32Z</published>
    <updated>2010-02-17T13:34:46Z</updated>

    <summary>I recently started keeping a small notebook (graph-paper) to the left of my keyboard when I write code. It's a short list of what I want to accomplish during a session, maybe for the next half-hour or pomadoro or whatever. I lovingly call it my analog burn-down chart.</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="burndown" label="burn-down" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="discipline" label="discipline" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="methodology" label="methodology" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="productivity" label="productivity" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tricks" label="tricks" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;I recently started keeping a &lt;a href="http://www.moleskineus.com/squaredpocket.html"&gt;small notebook&lt;/a&gt; (graph-paper) to the left of my keyboard when I write code. It&amp;#8217;s a short list of what I want to accomplish during a session, maybe for the next half-hour or &lt;a href="http://www.pomodoro-book.com/"&gt;pomadoro&lt;/a&gt; or whatever. I lovingly call it my analog &lt;a href="http://www.controlchaos.com/about/burndown.php"&gt;burn-down chart&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It works great. I use it to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Record sins I commit in the name of un-breaking tests&lt;/li&gt;
&lt;li&gt;Jot down micro-goals; things I want to accomplish before I step away from the computer.
This really helps focus me. It&amp;#8217;s especially handy for tasks I don&amp;#8217;t like doing or that I suck at. Javascript fits both criteria nicely.&lt;/li&gt;
&lt;li&gt;Force myself to do &lt;a href="http://wtfjs.com/"&gt;things I find distasteful&lt;/a&gt;, like &lt;em&gt;verifying&lt;/em&gt; javascript in IE 6.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here&amp;#8217;s what I had down on a recent page:&lt;/p&gt;

&lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="analog-burndown-chart.png" src="http://www.codesoftly.com/images/analog-burndown-chart.png" width="361" height="571" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;But That&amp;#8217;s Just a To-Do List!&lt;/h3&gt;

&lt;p&gt;Yes. My analog burndown could be called a to-do list, but for me it&amp;#8217;s a &amp;#8220;&lt;strong&gt;to do right NOW&lt;/strong&gt;&amp;#8221; list. It keeps me focused on the task, and I know when I&amp;#8217;m done because the list is all crossed off. I rarely go back and look at previous pages. They&amp;#8217;re either cleared entirely, or repeated on the next list. Sort of a mini backlog for my brain.&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=Kr6ociqTpfA:klUjsACFLIs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/Kr6ociqTpfA" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/backlog-for-my-brain.html</feedburner:origLink></entry>

<entry>
    <title>Death to Code Review Meetings! Use Review Board</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/MPZgDmaP5iQ/death-to-code-review-meetings-use-review-board.html" />
    <id>tag:www.codesoftly.com,2010://1.150</id>

    <published>2010-02-16T12:30:06Z</published>
    <updated>2010-02-16T13:08:03Z</updated>

    <summary>Code review meetings are the worst. They eat time, are poorly attended, and people are bad at preparing for them. Further, there's generally no good pattern in place for actually implementing the outputs of the meeting.

Review Board is an awesome web-based tool that helps solve a lot of those shortcomings. It turns the review from a monolithic death march to a conversation among programmers. There's very little pressure. You request peoples' eyeballs, they weigh in, you update, rinse, and repeat.</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="codereview" label="code review" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="methodology" label="methodology" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="reviewboard" label="review board" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tools" label="tools" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;div class="monologue" style="margin:4em; padding:1em; background-color:brown; color:white"&gt;
&lt;p&gt;This code review is dreadful. Putting it on the project schedule sure felt good at the time, but now that we&amp;#8217;re all sitting here, I&amp;#8217;m not so sure.&lt;/p&gt;
&lt;p&gt;
What difference does it make? The deadline is tomorrow. It&amp;#8217;s not like this guy&amp;#8217;s going to &lt;em&gt;rewrite&lt;/em&gt; his entire system because it fails the review. Come to think of it, how do we even &lt;em&gt;know&lt;/em&gt; if it fails the review? Is there a final vote to decide if it stays on the island? Does it take a simple majority? Super-majority? Can we filibuster? Whatever. 
&lt;/p&gt;
&lt;p&gt;
Let&amp;#8217;s just get through this. Thaaats it&amp;#8230;Everyone keep your heads down and your mouths shut. Let this guy finish reading every line of his code so we can get the hell back to whipping our wounded project into some kind of shape before the deadline.
&lt;/p&gt;
&lt;p&gt;
Jesus, that guy just pointed out a line-break formatting issue. I wonder if I can strangle him with the phone cord from here.
&lt;/p&gt;
&lt;p&gt;
I have no clue where we are now. That code doesn&amp;#8217;t even make sense. &lt;em&gt;NO&lt;/em&gt;, I didn&amp;#8217;t read every line of it before this meeting. Busy coding my own stuff, remember?
&lt;/p&gt;
&lt;p&gt;
Thank GOD we only scheduled this thing for one hour. I couldn&amp;#8217;t take any more. Besides, I seriously doubt he&amp;#8217;s going to take all that half-assed feedback and try to fold it into his code after we deliver to QA and before he starts on his next high-pressure task. Awesome use of everyone&amp;#8217;s time.
&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;While you may not experience all this in your code reviews, I&amp;#8217;ll bet you&amp;#8217;ve felt some of this pain. Code review meetings are the worst. They eat time, are poorly attended, and people are bad at preparing for them. Further, there&amp;#8217;s generally no good pattern in place for actually implementing the outputs of the meeting.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.reviewboard.org/"&gt;Review Board&lt;/a&gt; is an awesome web-based tool that helps solve a lot of those shortcomings. It turns the review from a monolithic death march to a conversation among programmers. There&amp;#8217;s very little pressure. You request peoples&amp;#8217; eyeballs, they weigh in, you update, rinse, and repeat.&lt;/p&gt;

&lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;a href="http://www.codesoftly.com/images/inline-comments.png"&gt;&lt;img alt="inline-comments.png" src="http://www.codesoftly.com/assets_c/2010/02/inline-comments-thumb-500x375-13.png" width="500" height="375" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Review Board will not blow your process to hell. It&amp;#8217;s a very generic tool. If you have more than one person writing code, Review Board will be useful. &lt;/p&gt;

&lt;p&gt;Think of it like a message board centered around a code diff. One person posts a diff, the &amp;#8220;subject&amp;#8221; of the thread, emails go out to other programmers who can look at the diff and have threaded conversations around it.&lt;/p&gt;

&lt;p&gt;To learn more about Review Board, visit their &lt;a href="http://www.reviewboard.org"&gt;homepage&lt;/a&gt; and get started. For the visually inclined, check out their &lt;a href="http://www.reviewboard.org/screenshots/"&gt;screenshots&lt;/a&gt; of the app in action.&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=MPZgDmaP5iQ:wGljDuQCY_s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/MPZgDmaP5iQ" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/death-to-code-review-meetings-use-review-board.html</feedburner:origLink></entry>

<entry>
    <title>Python Flame-bait or Food For Thought?</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/jNM0zpakA7k/python-flame-bait-or-food-for-thought.html" />
    <id>tag:www.codesoftly.com,2010://1.149</id>

    <published>2010-02-13T00:00:13Z</published>
    <updated>2010-02-12T19:12:05Z</updated>

    <summary>Stumbled across this open letter to Python, written by Luke Magill. In it he goes through some of the ways Python has let him down, including No Encapsulation Static Libraries Lack of an implied “this” No explicit support for member...</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="objects" label="objects" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rant" label="rant" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;Stumbled across this &lt;a href="http://www.zideck.com/blog/article.php?id=5"&gt;open letter to Python&lt;/a&gt;, written by &lt;a href="http://www.zideck.com/blog/about.php"&gt;Luke Magill&lt;/a&gt;. In it he goes through some of the ways Python has let him down, including&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No Encapsulation&lt;/li&gt;
&lt;li&gt;Static Libraries&lt;/li&gt;
&lt;li&gt;Lack of an &lt;a href="http://java.sun.com/docs/books/tutorial/java/javaOO/thiskey.html"&gt;implied &amp;#8220;this&amp;#8221;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;No explicit support for member definition&lt;/li&gt;
&lt;li&gt;On-lined Lambdas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few parts resonated with me, especially the when he talks about how Python does objects. &lt;/p&gt;

&lt;blockquote&gt;
But you weren&amp;#8217;t ecstatic about objects. You didn&amp;#8217;t really like them and you didn&amp;#8217;t trust them. So you decided to only give them a little. You cut corners. You made objects but you made them hard to use. That was a mistake.
&lt;/blockquote&gt;

&lt;p&gt;As a former Java programmer myself, I&amp;#8217;ll admit I&amp;#8217;ve felt some of this pain. Not enough that it stops me from getting things done, but there have been times I&amp;#8217;ve scratched my head over how &lt;em&gt;different&lt;/em&gt; Pyhton objects really are from their counterparts in other languages.&lt;/p&gt;

&lt;p&gt;Anyway, the comments make for good reading, rife with handy links. If nothing else the whole thing is a good thought-exercise.&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=jNM0zpakA7k:Y3mSo3xo5Ro:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/jNM0zpakA7k" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/python-flame-bait-or-food-for-thought.html</feedburner:origLink></entry>

<entry>
    <title>Do Tech Stories Belong in the Backlog?</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/aqVaCagknI4/do-tech-stories-belong-in-the-backlog.html" />
    <id>tag:www.codesoftly.com,2010://1.148</id>

    <published>2010-02-12T01:36:24Z</published>
    <updated>2010-02-12T01:47:34Z</updated>

    <summary>I'm a huge fan of always seasoning iterations with a couple of technical stories. It's great for closing the feedback loop and empowers developers to improve the way they deliver products. 

Jack Milunsky discusses thepro's and cons of putting technical stories in the product backlog.</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="agile" label="agile" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scrum" label="scrum" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="stories" label="stories" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;I&amp;#8217;m a huge fan of always seasoning iterations with a couple of technical stories. It&amp;#8217;s great for closing the feedback loop and empowers developers to improve the way they deliver products. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.agilebuddy.com/"&gt;Jack Milunsky&lt;/a&gt; discusses the &lt;a href="http://agilesoftwaredevelopment.com/blog/jackmilunsky/technical-stories-are-they-included-backlog"&gt;pro&amp;#8217;s and cons of putting technical stories in the product backlog&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
But what about the type of story asked by one of the members &amp;#8220;As a development team member, I want the existing unit tests to run under CruiseControl, so that I know if anything breaks&amp;#8221;. Where does this belong?

Well this is a perfectly written story but the story really has no ultimate value for the end user at least not directly.
&lt;/blockquote&gt;

&lt;p&gt;I personally feel that if you don&amp;#8217;t have some official place to put these kinds of improvements, they will always get shoved aside in the name of &amp;#8220;real features&amp;#8221;. Maybe adding them to the official backlog sows confusion and strife, but trying to sneak them into task estimates or something seems just as dangerous, because they&amp;#8217;re effectively invisible and untracked.&lt;/p&gt;

&lt;p&gt;via &lt;a href="http://agilesoftwaredevelopment.com/blog/jackmilunsky/technical-stories-are-they-included-backlog"&gt;Technical stories - are they included on the backlog?&lt;/a&gt; [AgileSoftwareDevelopment.com]&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=aqVaCagknI4:NQJEAkqNOlw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/aqVaCagknI4" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/do-tech-stories-belong-in-the-backlog.html</feedburner:origLink></entry>

<entry>
    <title>Repent! Automated Web Testing is Inevitable</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/z66AYsOFlds/repent-automated-web-testing-is-inevitable.html" />
    <id>tag:www.codesoftly.com,2010://1.130</id>

    <published>2010-02-11T04:58:00Z</published>
    <updated>2010-02-11T13:43:45Z</updated>

    <summary>Our job as web developers is to build defect-free sites. That job is getting harder. As sites become more feature-rich, verifying everything in multiple browsers before it goes to QA becomes impossible. The only way to keep afloat is to allow automated web testing frameworks shoulder the burden.</summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="browsertests" label="browser tests" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quality" label="quality" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="selenium" label="selenium" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="testing" label="testing" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="mushroom-cloud.jpg" src="http://www.codesoftly.com/mushroom-cloud.jpg" width="500" height="375" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Our job as web developers is to build defect-free sites. That job is getting harder. As sites become &lt;del&gt;bloated&lt;/del&gt; &lt;ins&gt;more feature-rich&lt;/ins&gt;, verifying everything in multiple browsers &lt;em&gt;before&lt;/em&gt; it goes to QA becomes impossible. The only way to keep afloat is to allow automated web testing frameworks shoulder the burden.&lt;/p&gt;

&lt;h3&gt;Test EVERY Browser Your Site Supports&lt;/h3&gt;

&lt;p&gt;Yes, the line between tester and developer is blurring. The fact is that you really can&amp;#8217;t call something &amp;#8220;done&amp;#8221; if you haven&amp;#8217;t verified it yourself first. That means checking all the browsers your site claims to support, even the &lt;a href="http://www.opera.com/"&gt;dinky ones&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&amp;#8220;But my job is to build, not test!&amp;#8221;, shouts the programmer. 
&amp;#8220;My job is to verify, not to sniff out all browser compatibility issues you were too lazy to handle&amp;#8221;, replies the tester.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s a balancing act, and as professionals we need to commit to &lt;strong&gt;delivering verified code&lt;/strong&gt;.  In the end, there are more feature and browser combinations than any developer could possibly check in a reasonable amount of time.&lt;/p&gt;

        &lt;h3&gt;Sign In - 1990s Style&lt;/h3&gt;

&lt;p&gt;Back in the day, sites were still pretty simple, especially the trusty sign-in form.&lt;/p&gt;

&lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="90s-signin.png" src="http://www.codesoftly.com/90s-signin.png" width="347" height="231" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;About as simple as it gets. A couple of fields and a button and &lt;em&gt;maybe&lt;/em&gt; a &lt;a href="http://www.montulli.org/theoriginofthe%3Cblink%3Etag"&gt;blink tag&lt;/a&gt; or two.&lt;/p&gt;

&lt;p&gt;If we count features, that&amp;#8217;s:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Show the form&lt;/li&gt;
&lt;li&gt;Submit form&lt;/li&gt;
&lt;li&gt;Show the welcome page or redisplay the form with an error message.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You&amp;#8217;d probably test it out in IE and Netscape, so that&amp;#8217;s three items to check in two browsers. You need six human operations to verify the login page. Pretty manageable to do each time you update the site.&lt;/p&gt;

&lt;p&gt;Fast forward to the present, and things get a little more involved.&lt;/p&gt;

&lt;h3&gt;Sign In - 2010&lt;/h3&gt;

&lt;p&gt;Today&amp;#8217;s login screens are fancy compared to their predecessors. They have javascript validation, fancy tooltips, and other fun stuff:&lt;/p&gt;

&lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="2000s-signin.png" src="http://www.codesoftly.com/2000s-signin.png" width="413" height="264" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Counting features on this hypothetical page:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Show the form&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#8220;forgot password&amp;#8221; link&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;validate input as they&amp;#8217;re entered&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;show styled error messages for invalid input before submission&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;a &amp;#8220;remember me&amp;#8221; checkbox&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;submit form&lt;/li&gt;
&lt;li&gt;Show the welcome page or redisplay the form with an error message.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That&amp;#8217;s almost triple the features for the simple login page. Now testing this is more involved, especially since you&amp;#8217;re checking it in mulitple versions of a browser: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;IE 6&lt;/li&gt;
&lt;li&gt;IE 7&lt;/li&gt;
&lt;li&gt;IE 8&lt;/li&gt;
&lt;li&gt;Firefox 2&lt;/li&gt;
&lt;li&gt;Firefox 3&lt;/li&gt;
&lt;li&gt;Firefix 3.5&lt;/li&gt;
&lt;li&gt;Safari 3&lt;/li&gt;
&lt;li&gt;Safari 4&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So that&amp;#8217;s 7 features over 8 browsers, or &lt;strong&gt;56 verifications&lt;/strong&gt;. That&amp;#8217;s a lot to cover when you&amp;#8217;re just trying to get out a damn release (If you&amp;#8217;re &lt;a href="http://ie6update.com/"&gt;uncomfortable with IE6 in there&lt;/a&gt;, feel free to swap in Chrome).&lt;/p&gt;

&lt;p&gt;The login screen is likely one of the least complex pages of your site. If you can&amp;#8217;t manage that simple scenario, you&amp;#8217;ve got zero chance on the fancier pages.&lt;/p&gt;

&lt;p&gt;At this point one option is to give up and leave it to QA staff to hunt down all the browser-compatibility issues. Weak. Totally weak. We&amp;#8217;re supposed to be awesome developers. It does little for our reputation when we intentionally pass off unfinished work as &amp;#8220;dev complete&amp;#8221;. &lt;/p&gt;

&lt;p&gt;The other option is to find a way to speed up the testing of the different combinations, so that we&amp;#8217;re confident that the delivered site functions across all supported browsers.&lt;/p&gt;

&lt;h3&gt;Let the Machines Do The Work&lt;/h3&gt;

&lt;p&gt;Automated browser testing systems to the rescue. These things continuously verify your features. It&amp;#8217;s like legalized slave labor. The machine will never get bored or tired. It doesn&amp;#8217;t skip test  to get out early on a Friday afternoon. It will happily check and recheck your pages all day, even weekends.&lt;/p&gt;

&lt;p&gt;This doesn&amp;#8217;t mean it&amp;#8217;s easy. Setting up good browser tests takes time, and the curve is steep. You may start out with only a handful, like &amp;#8220;does the homepage show up?&amp;#8221;, or &amp;#8220;can users sign in?&amp;#8221;. As time goes on, you can create more sophisticated tests until you&amp;#8217;ve got a &lt;a href="http://www.codesoftly.com/2009/06/wow-imvu-runs-1-million-automated-tests-a-day.html"&gt;well-oiled verification machine&lt;/a&gt; going.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve found that the old &lt;a href="http://en.wikipedia.org/wiki/Pareto_principle"&gt;80/20 rule&lt;/a&gt; really kicks in here. With only a few tests, you can find and fix tons of problems before they get into the test cycle.&lt;/p&gt;

&lt;h3&gt;You Have Options&lt;/h3&gt;

&lt;p&gt;There are plenty of automated browser testing getups out there. I&amp;#8217;ve had experience with &lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt;. There&amp;#8217;s also &lt;a href="http://www.getwindmill.com/"&gt;Windmill&lt;/a&gt; (Python), &lt;a href="http://watir.com/"&gt;Watir&lt;/a&gt; (Ruby), and &lt;a href="http://htmlunit.sourceforge.net/"&gt;HtmlUnit&lt;/a&gt; (Java).&lt;/p&gt;

&lt;p&gt;Pick one and try it out. I&amp;#8217;ve found that they&amp;#8217;re easier to get running than you might think, and the payoff is awesome, plus it&amp;#8217;s fun to sit back and watch a magical browser window fire up and click away. Kind of a &lt;a href="http://www.youtube.com/watch?v=XChxLGnIwCU"&gt;Sorcerer&amp;#8217;s Apprentice thing&lt;/a&gt; (just without all the ensuing mayhem).&lt;/p&gt;

&lt;p&gt;(mushroom cloud photo courtesy of &lt;a href="http://www.flickr.com/photos/giginger/"&gt;giginger&lt;/a&gt;, &lt;a href="http://creativecommons.org/licenses/by/2.0/"&gt;some rights reserved&lt;/a&gt; ).&lt;/p&gt;

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=z66AYsOFlds:qr7br-e9XPQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/z66AYsOFlds" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/repent-automated-web-testing-is-inevitable.html</feedburner:origLink></entry>

<entry>
    <title>Scrum's Devil's Advocate: Uncle Bob </title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/-cNO2CcSqPU/scrums-devils-advocate-uncle-bob.html" />
    <id>tag:www.codesoftly.com,2010://1.145</id>

    <published>2010-02-09T13:08:56Z</published>
    <updated>2010-02-09T13:20:15Z</updated>

    <summary>Uncle Bob posted a message in which he points out some of Scrum's shortcomings. It's a well-put and thoughtful critique of the places where Scrum falls down or is silent. </summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="agile" label="agile" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scrum" label="scrum" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="unclebob" label="uncle bob" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;&lt;a href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;Uncle Bob&lt;/a&gt; posted a message in which he &lt;a href="http://groups.yahoo.com/group/scrumdevelopment/message/44851"&gt;points out some of Scrum&amp;#8217;s shortcomings&lt;/a&gt;. It&amp;#8217;s a well-put and thoughtful critique of the places where &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)"&gt;Scrum&lt;/a&gt; falls down or is silent. &lt;/p&gt;

&lt;blockquote&gt;
Scrum carries an anti-management undercurrent that is counter-productive. 
Scrum over-emphasizes the role of the team as self-managing. Self-organizing
and self-managing teams are a good thing. But there is a limit to how much a
team can self-X. Teams still need to be managed by someone who is responsible
to the business. Scrum does not describe this with enough balance.
&lt;/blockquote&gt;

&lt;p&gt;Reading this list, you&amp;#8217;ll probably realize two things.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your team isn&amp;#8217;t really doing Scrum&lt;/li&gt;
&lt;li&gt;Your team has figured out practical ways to work around these shortcomings or skip them entirely.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the end, this is a critique of strict Scrum, and really not of Agile itself. It kind of reinforces how nebulous the space still is.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://groups.yahoo.com/group/scrumdevelopment/message/44851"&gt;Scrum / Agile&amp;#8217;s inherit shortcomings? Uncle Bob Martin&amp;#8217;s 7 theses&lt;/a&gt; via &lt;a href="http://twitter.com/markhneedham/statuses/8846491039"&gt;@markneedham&lt;/a&gt;&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=-cNO2CcSqPU:hbySMnLZbR4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/-cNO2CcSqPU" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/scrums-devils-advocate-uncle-bob.html</feedburner:origLink></entry>

<entry>
    <title>The "Choose Python" Manifesto</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CodeSoftly/~3/XYPJdTVItUo/choose-python-manifesto.html" />
    <id>tag:www.codesoftly.com,2010://1.144</id>

    <published>2010-02-05T14:34:24Z</published>
    <updated>2010-02-08T18:11:28Z</updated>

    <summary>Yes! A Python manifesto to add to my informal collection. It's nice to have such passion around a language. </summary>
    <author>
        <name>Aaron Oliver</name>
        <uri>http://www.aaronoliver.com</uri>
    </author>
    
    <category term="links" label="links" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="manifesto" label="manifesto" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.codesoftly.com/">
        &lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;img alt="chosse-python.png" src="http://www.codesoftly.com/2010/02/05/chosse-python.png" width="661" height="376" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Yes! A &lt;a href="http://www1.american.edu/cas/econ/faculty/isaac/choose_python.pdf"&gt;Python manifesto&lt;/a&gt; to add to &lt;a href="http://www.codesoftly.com/cgi-bin/mt/mt-search.cgi?blog_id=1&amp;amp;tag=manifesto&amp;amp;limit=20"&gt;my informal collection&lt;/a&gt;. It&amp;#8217;s nice to have such passion around a language. &lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s a funny part:&lt;/p&gt;

&lt;blockquote&gt;
Choose to finish early and
laugh at your colleagues as they waste their
miserable lives bowing down in subservience to that
sadistic little C++ compiler.
&lt;/blockquote&gt;

&lt;p&gt;Busting on C++ never seems to go out of style.&lt;/p&gt;

&lt;p&gt;Near as I can tell, this comes from &lt;a href="http://www.american.edu/cas/faculty/aisaac.cfm"&gt;Alan Issac&lt;/a&gt;, associate professor at American University. If you know better, please holler at me.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www1.american.edu/cas/econ/faculty/isaac/choose_python.pdf"&gt;Chose Python&lt;/a&gt; (pdf)&lt;/p&gt;

&lt;p&gt;via &amp;#8220;&lt;a href="http://holdenweb.blogspot.com/2010/02/choose-python.html"&gt;Choose Python&lt;/a&gt;&amp;#8221; [For Some Value of &amp;#8220;Magic&amp;#8221;]&lt;/p&gt;

        

    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeSoftly?a=XYPJdTVItUo:PllOCd5bXm8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeSoftly?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeSoftly/~4/XYPJdTVItUo" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://www.codesoftly.com/2010/02/choose-python-manifesto.html</feedburner:origLink></entry>

</feed>
