<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Knowing.NET</title>
    <link>http://www.knowing.net/</link>
    <description>Software development industry analysis by Larry O'Brien, the former editor of Software Development and Computer Language</description>
    <language>en-us</language>
    <copyright>Larry O'Brien</copyright>
    <lastBuildDate>Wed, 07 May 2008 17:07:44 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.7174.0</generator>
    <managingEditor>lobrien@knowing.net</managingEditor>
    <webMaster>lobrien@knowing.net</webMaster>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=acdd99c8-ca39-4a0d-8ee9-7b33c67a4954</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,acdd99c8-ca39-4a0d-8ee9-7b33c67a4954.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
CodeGear, the company semi-spun off from Borland's languages division, has been acquired
by Embarcadero, the company best known for enterprise-y DB tools such as ER/studio. 
</p>
        <p>
The half-measure of announcing the division's sale and then holding on to it was always
ugly and even though Embarcadero is probably not the most exciting company in the
SD tools marketplace, better a loving step-parent than continuing the cycle of abuse
at Borland. 
</p>
        <p>
Of course, being an "exciting" company that attempts to redefine the coding playing
field may not be smart for a tool company; I always cling to such when I talk about
Borland's languages division, which celebrated its 25th anniversary the other day,
but it is neither the only nor perhaps the smartest strategy. 
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=acdd99c8-ca39-4a0d-8ee9-7b33c67a4954" />
      </body>
      <title>Embarcadero Acquires CodeGear (nee Borland Languages)</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,acdd99c8-ca39-4a0d-8ee9-7b33c67a4954.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,acdd99c8-ca39-4a0d-8ee9-7b33c67a4954.aspx</link>
      <pubDate>Wed, 07 May 2008 17:07:44 GMT</pubDate>
      <description>&lt;p&gt;
CodeGear, the company semi-spun off from Borland's languages division, has been acquired
by Embarcadero, the company best known for enterprise-y DB tools such as ER/studio. 
&lt;/p&gt;
&lt;p&gt;
The half-measure of announcing the division's sale and then holding on to it was always
ugly and even though Embarcadero is probably not the most exciting company in the
SD tools marketplace, better a loving step-parent than continuing the cycle of abuse
at Borland. 
&lt;/p&gt;
&lt;p&gt;
Of course, being an "exciting" company that attempts to redefine the coding playing
field may not be smart for a tool company; I always cling to such when I talk about
Borland's languages division, which celebrated its 25th anniversary the other day,
but it is neither the only nor perhaps the smartest strategy. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=acdd99c8-ca39-4a0d-8ee9-7b33c67a4954" /&gt;</description>
      <category>Knowing</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=cd4a40f8-0549-4332-83d6-a71eca0d4417</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,cd4a40f8-0549-4332-83d6-a71eca0d4417.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In the Summer and Fall of 1999, at the peak of the dot-com boom, there was incredible
competition for software developers. Starting pay for developers with <strong>no experience </strong>had
already climbed to $60K and then, in the course of maybe 3 months, it went from $60K
to $75K to $90K. And that was actual money, not soon-to-be-toilet-paper stock options. 
</p>
        <p>
A guy as American as apple pie came in, fresh out of college, applying as a Java developer.
He didn't know the difference between a class and an instance and didn't know what
inheritance was. So, just as <a href="http://www.knowing.net/ct.ashx?id=cd4a40f8-0549-4332-83d6-a71eca0d4417&amp;url=http%3a%2f%2fwww.knowing.net%2fPermaLink%2cguid%2c1d765e54-5007-487b-a689-882d62ae9fd4.aspx">incompetent
as anything I'm seeing today</a>. I started to explain to him that software development
was a wonderful profession and that if he wanted to learn it, the traditional way
would be to apply as a junior tester, and ... He cut me off, told me he had 5 other
interviews lined up that week and made it clear that he expected to be hired at one
of them. And I don't doubt that he did.
</p>
        <p>
But I doubt that he's still incompetent and employed as a software developer and especially
not as a freelance coder. I think he either:
</p>
        <ul>
          <li>
was weeded out of programming (perhaps by going into management), or 
</li>
          <li>
got a clue</li>
        </ul>
        <p>
I complained the other day about an incompetent applicant from South American so I'll
use as an example another guy on the team who lives in South America, "gets it" as
far as software development goes and charges $24 an hour. He lives in a beautiful
house on, like, 10 acres or something, owns several horses, and I get the impression
that he's considered quite the young go-getter. 
</p>
        <p>
So when people think the moral of <a href="http://www.knowing.net/ct.ashx?id=cd4a40f8-0549-4332-83d6-a71eca0d4417&amp;url=http%3a%2f%2fwww.knowing.net%2fPermaLink%2cguid%2c1d765e54-5007-487b-a689-882d62ae9fd4.aspx">my
story</a> is "cheap employer...you get what you pay for" I think they're entirely
off-base. If you're willing to create a distributed team (the wisdom of which is a
whole question in and of itself), you <em>might</em> find yourself in the enviable
position of being able to give a smart person a high standard of living and contributing
to a developing economy tra-la-la-la-la all while paying less than an American median
wage. It's hard for me to see the argument that that is immoral.
</p>
        <p>
It's not the nationality of incompetence that's depressing me, nor is it necessarily
the scope of the incompetence embodied in a single person, it's how common it is that
I encounter people who have no respect for this activity that I love. I feel that
I'm seeing it more often than I used to, and while I may be imagining that ("When
we were kids we hiked 7 miles through the snow to the data center..."), I think it's
a real phenomenon.
</p>
        <p>
Some people suggested that the language involved might have something to do with it,
and others suggested that it might have to do with the increasing amount of hand-holding
in modern development environments. I still tend towards my feeling that global commodification
has something to do with it; more and more people applying for jobs in the field of
software development did not enter that field due to a love of computers or software,
they entered it because there's demand. 
</p>
        <p>
There have always been developers for whom programming is "just a job." Back when
I was Editor of <em>Computer Language</em>, it was common-place to refer to the statistic
that "the average programmer has less than 1 book on software development." But it
was easy for me to ignore that, because those weren't the people who read magazines
and attended conferences and swapped stories on Compuserve's CLMFORUM. So maybe I <em>am </em>just
being an old codger. Except instead of CLMFORUM, when I look for reaction to my thoughts
I find griefers on reddit making ad hominem attacks. Progress.
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=cd4a40f8-0549-4332-83d6-a71eca0d4417" />
      </body>
      <title>Incompetent American Programmers</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,cd4a40f8-0549-4332-83d6-a71eca0d4417.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,cd4a40f8-0549-4332-83d6-a71eca0d4417.aspx</link>
      <pubDate>Sun, 27 Apr 2008 00:54:45 GMT</pubDate>
      <description>&lt;p&gt;
In the Summer and Fall of 1999, at the peak of the dot-com boom, there was incredible
competition for software developers. Starting pay for developers with &lt;strong&gt;no experience &lt;/strong&gt;had
already climbed to $60K and then, in the course of maybe 3 months, it went from $60K
to $75K to $90K. And that was actual money, not soon-to-be-toilet-paper stock options. 
&lt;/p&gt;
&lt;p&gt;
A guy as American as apple pie came in, fresh out of college, applying as a Java developer.
He didn't know the difference between a class and an instance and didn't know what
inheritance was. So, just as &lt;a href="http://www.knowing.net/ct.ashx?id=cd4a40f8-0549-4332-83d6-a71eca0d4417&amp;amp;url=http%3a%2f%2fwww.knowing.net%2fPermaLink%2cguid%2c1d765e54-5007-487b-a689-882d62ae9fd4.aspx"&gt;incompetent
as anything I'm seeing today&lt;/a&gt;. I started to explain to him that software development
was a wonderful profession and that if he wanted to learn it, the traditional way
would be to apply as a junior tester, and ... He cut me off, told me he had 5 other
interviews lined up that week and made it clear that he expected to be hired at one
of them. And I don't doubt that he did.
&lt;/p&gt;
&lt;p&gt;
But I doubt that he's still incompetent and employed as a software developer and especially
not as a freelance coder. I think he either:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
was weeded out of programming (perhaps by going into management), or 
&lt;li&gt;
got a clue&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I complained the other day about an incompetent applicant from South American so I'll
use as an example another guy on the team who lives in South America, "gets it" as
far as software development goes and charges $24 an hour. He lives in a beautiful
house on, like, 10 acres or something, owns several horses, and I get the impression
that he's considered quite the young go-getter. 
&lt;/p&gt;
&lt;p&gt;
So when people think the moral of &lt;a href="http://www.knowing.net/ct.ashx?id=cd4a40f8-0549-4332-83d6-a71eca0d4417&amp;amp;url=http%3a%2f%2fwww.knowing.net%2fPermaLink%2cguid%2c1d765e54-5007-487b-a689-882d62ae9fd4.aspx"&gt;my
story&lt;/a&gt; is "cheap employer...you get what you pay for" I think they're entirely
off-base. If you're willing to create a distributed team (the wisdom of which is a
whole question in and of itself), you &lt;em&gt;might&lt;/em&gt; find yourself in the enviable
position of being able to give a smart person a high standard of living and contributing
to a developing economy tra-la-la-la-la all while paying less than an American median
wage. It's hard for me to see the argument that that is immoral.
&lt;/p&gt;
&lt;p&gt;
It's not the nationality of incompetence that's depressing me, nor is it necessarily
the scope of the incompetence embodied in a single person, it's how common it is that
I encounter people who have no respect for this activity that I love. I feel that
I'm seeing it more often than I used to, and while I may be imagining that ("When
we were kids we hiked 7 miles through the snow to the data center..."), I think it's
a real phenomenon.
&lt;/p&gt;
&lt;p&gt;
Some people suggested that the language involved might have something to do with it,
and others suggested that it might have to do with the increasing amount of hand-holding
in modern development environments. I still tend towards my feeling that global commodification
has something to do with it; more and more people applying for jobs in the field of
software development did not enter that field due to a love of computers or software,
they entered it because there's demand. 
&lt;/p&gt;
&lt;p&gt;
There have always been developers for whom programming is "just a job." Back when
I was Editor of &lt;em&gt;Computer Language&lt;/em&gt;, it was common-place to refer to the statistic
that "the average programmer has less than 1 book on software development." But it
was easy for me to ignore that, because those weren't the people who read magazines
and attended conferences and swapped stories on Compuserve's CLMFORUM. So maybe I &lt;em&gt;am &lt;/em&gt;just
being an old codger. Except instead of CLMFORUM, when I look for reaction to my thoughts
I find griefers on reddit making ad hominem attacks. Progress.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=cd4a40f8-0549-4332-83d6-a71eca0d4417" /&gt;</description>
      <category>Knowing</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=1d765e54-5007-487b-a689-882d62ae9fd4</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,1d765e54-5007-487b-a689-882d62ae9fd4.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm trying to hire a couple developers. One guy sent a resume that looked great --
degree in CS, C++ experience, a year with Ruby in Rails. So I sent him a simple programming
exercise. I <em>sent </em>him the testcases. 
</p>
        <p>
He shoots back an answer. I open a command-line, type <strong>ruby TestCases.rb </strong>and
see this:
</p>
        <p>
          <strong>9 tests, 0 assertions, 0 failures, 9 errors</strong>
        </p>
        <p>
He didn't even get to the freakin' assertions! His "solution" didn't treat the argument
as an array.
</p>
        <p>
Once upon a time, I programmed by sliding cards in a box under a window and returning
15 minutes later for the results. Once upon a time, I programmed by writing object
files that could take anywhere from a few minutes to overnight to link together. If
we still lived in those times, I could understand submitting some text and saying
"I think this is a solution." We don't live in those times anymore.
</p>
        <p>
This guy was from South America. A lot of the guys I'm dealing with lately have been
from outside the United States -- we're a distributed team and, all things being equal,
a guy with a CS degree, C++ experience, and a year with Ruby on Rails who's asking
$20 an hour is going to be more appealing than a guy with the same background asking
$60 an hour. 
</p>
        <p>
I don't know if it's a cultural thing or a "younger programmer" thing, but I have
to say that I'm getting really freaking tired of experiencing this level of incompetence,
even for the thirty seconds it took me to see that and respond "Nope. Not even close"
to HR. It's <em>actively depressing</em> to me to experience this crap. 
</p>
        <p>
To be clear, this has nothing to do with this guy's innate talent or intelligence.
What it has to do with is this ... mindset .... that seems to be entirely at odds
with my conception of the activity of software development. I'm not talking about
an ignorance of, much less disagreement with, my particular biases and judgments about
the niceties of methodology and process. I'm talking about people who don't seem to
"get" that programming is, at the very least, about making programs that run. 
</p>
        <p>
And, accuse me of jingoism if you will, but I have to say that it's depressing that
it's virtually impossible for an American to make a median wage being a freelance
coder because their resumes probably look <em>worse</em> than that of these people
with CS degrees who don't freaking bother to see if their programs run. 
</p>
        <p>
          <em>Of course</em> intelligence is distributed evenly throughout the world, but this
level of incompetence has largely been weeded out of the American freelance programming
community. <em>If</em> you're making a living and you have to charge twice what a
person in South America or Asia charges, you pretty much <em>have </em>to "get it."
And it is sad to consider a bunch of people who "get it" slowly being weeded out of
the workforce because we are unable to clearly and concisely demonstrate value to
potential employers.
</p>
        <p>
          <font color="#ff0000">Update:</font> I've removed the name of the fellow's country,
which is one I've always wanted to visit and which I'm sure has many fine developers.
It's not relevant, other than to make the point that it's not just one country in
Asia where there are freelance developers looking for work and charging significantly
less than their American or European counterparts.
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=1d765e54-5007-487b-a689-882d62ae9fd4" />
      </body>
      <title>I'm Looking to Hire Freelance Ruby Programmers</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,1d765e54-5007-487b-a689-882d62ae9fd4.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,1d765e54-5007-487b-a689-882d62ae9fd4.aspx</link>
      <pubDate>Fri, 25 Apr 2008 19:03:39 GMT</pubDate>
      <description>&lt;p&gt;
I'm trying to hire a couple developers. One guy sent a resume that looked great --
degree in CS, C++ experience, a year with Ruby in Rails. So I sent him a simple programming
exercise. I &lt;em&gt;sent &lt;/em&gt;him the testcases. 
&lt;/p&gt;
&lt;p&gt;
He shoots back an answer. I open a command-line, type &lt;strong&gt;ruby TestCases.rb &lt;/strong&gt;and
see this:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;9 tests, 0 assertions, 0 failures, 9 errors&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
He didn't even get to the freakin' assertions! His "solution" didn't treat the argument
as an array.
&lt;/p&gt;
&lt;p&gt;
Once upon a time, I programmed by sliding cards in a box under a window and returning
15 minutes later for the results. Once upon a time, I programmed by writing object
files that could take anywhere from a few minutes to overnight to link together. If
we still lived in those times, I could understand submitting some text and saying
"I think this is a solution." We don't live in those times anymore.
&lt;/p&gt;
&lt;p&gt;
This guy was from South America. A lot of the guys I'm dealing with lately have been
from outside the United States -- we're a distributed team and, all things being equal,
a guy with a CS degree, C++ experience, and a year with Ruby on Rails who's asking
$20 an hour is going to be more appealing than a guy with the same background asking
$60 an hour. 
&lt;/p&gt;
&lt;p&gt;
I don't know if it's a cultural thing or a "younger programmer" thing, but I have
to say that I'm getting really freaking tired of experiencing this level of incompetence,
even for the thirty seconds it took me to see that and respond "Nope. Not even close"
to HR. It's &lt;em&gt;actively depressing&lt;/em&gt; to me to experience this crap. 
&lt;/p&gt;
&lt;p&gt;
To be clear, this has nothing to do with this guy's innate talent or intelligence.
What it has to do with is this ... mindset .... that seems to be entirely at odds
with my conception of the activity of software development. I'm not talking about
an ignorance of, much less disagreement with, my particular biases and judgments about
the niceties of methodology and process. I'm talking about people who don't seem to
"get" that programming is, at the very least, about making programs that run. 
&lt;/p&gt;
&lt;p&gt;
And, accuse me of jingoism if you will, but I have to say that it's depressing that
it's virtually impossible for an American to make a median wage being a freelance
coder because their resumes probably look &lt;em&gt;worse&lt;/em&gt; than that of these people
with CS degrees who don't freaking bother to see if their programs run. 
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Of course&lt;/em&gt; intelligence is distributed evenly throughout the world, but this
level of incompetence has largely been weeded out of the American freelance programming
community. &lt;em&gt;If&lt;/em&gt; you're making a living and you have to charge twice what a
person in South America or Asia charges, you pretty much &lt;em&gt;have &lt;/em&gt;to "get it."
And it is sad to consider a bunch of people who "get it" slowly being weeded out of
the workforce because we are unable to clearly and concisely demonstrate value to
potential employers.
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#ff0000"&gt;Update:&lt;/font&gt; I've removed the name of the fellow's country,
which is one I've always wanted to visit and which I'm sure has many fine developers.
It's not relevant, other than to make the point that it's not just one country in
Asia where there are freelance developers looking for work and charging significantly
less than their American or European counterparts.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=1d765e54-5007-487b-a689-882d62ae9fd4" /&gt;</description>
      <category>Knowing</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=9ab6cce7-d8fa-419a-b329-a1f2409ff182</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,9ab6cce7-d8fa-419a-b329-a1f2409ff182.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.knowing.net/ct.ashx?id=9ab6cce7-d8fa-419a-b329-a1f2409ff182&amp;url=http%3a%2f%2fwww.knowing.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fAlohaCheyenne_C8F1%2fimage_2.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="image" src="http://www.knowing.net/content/binary/WindowsLiveWriter/AlohaCheyenne_C8F1/image_thumb.jpg" width="332" border="0" />
          </a>
        </p>
        <p>
She was a good dog.
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=9ab6cce7-d8fa-419a-b329-a1f2409ff182" />
      </body>
      <title>Aloha, Cheyenne</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,9ab6cce7-d8fa-419a-b329-a1f2409ff182.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,9ab6cce7-d8fa-419a-b329-a1f2409ff182.aspx</link>
      <pubDate>Thu, 17 Apr 2008 16:48:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.knowing.net/ct.ashx?id=9ab6cce7-d8fa-419a-b329-a1f2409ff182&amp;amp;url=http%3a%2f%2fwww.knowing.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fAlohaCheyenne_C8F1%2fimage_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="image" src="http://www.knowing.net/content/binary/WindowsLiveWriter/AlohaCheyenne_C8F1/image_thumb.jpg" width="332" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
She was a good dog.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=9ab6cce7-d8fa-419a-b329-a1f2409ff182" /&gt;</description>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=5c11a026-5a6c-4c51-a65f-b95ba959a1ee</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,5c11a026-5a6c-4c51-a65f-b95ba959a1ee.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.knowing.net/ct.ashx?id=5c11a026-5a6c-4c51-a65f-b95ba959a1ee&amp;url=https%3a%2f%2fportal.acm.org%2fpoplogin.cfm">https://portal.acm.org/poplogin.cfm</a>?
.... etc ... (I can't post the whole URL since it's linked to my account)
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=5c11a026-5a6c-4c51-a65f-b95ba959a1ee" />
      </body>
      <title>The ACM is Using ColdFusion to Deliver the CACM Electronically</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,5c11a026-5a6c-4c51-a65f-b95ba959a1ee.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,5c11a026-5a6c-4c51-a65f-b95ba959a1ee.aspx</link>
      <pubDate>Mon, 14 Apr 2008 16:00:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.knowing.net/ct.ashx?id=5c11a026-5a6c-4c51-a65f-b95ba959a1ee&amp;amp;url=https%3a%2f%2fportal.acm.org%2fpoplogin.cfm"&gt;https://portal.acm.org/poplogin.cfm&lt;/a&gt;?
.... etc ... (I can't post the whole URL since it's linked to my account)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=5c11a026-5a6c-4c51-a65f-b95ba959a1ee" /&gt;</description>
      <category>Knowing</category>
      <category>Languages</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=1e1d2066-8a6f-4eb9-aff8-4298736712bc</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,1e1d2066-8a6f-4eb9-aff8-4298736712bc.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I recently wrote an encomium to ResolverOne, the IronPython-based spreadsheet:
</p>
        <blockquote>
          <p>
[T]heir use of pair programming and test-driven development has delivered high productivity;
of the 140,000 lines of code, 110,000 are tests....ResolverOne has been in development
for roughly two years, is written in a language without explicit type declarations,
and is on an implementation that itself is in active development. It’s been brought
to beta in a credible (if not downright impressive) amount of time despite being developed
by pairs of programmers writing far more lines of test than application. Yet no one
can credibly dismiss the complexity of 30,000 lines of application logic or spreadsheet
functionality, much less the truly innovative spreadsheet-program features. 
</p>
          <p>
            <br />
ResolverOne is easily the most compelling data point I’ve heard for the practices
of Extreme Programming.
</p>
          <p>
[<a href="http://www.knowing.net/ct.ashx?id=1e1d2066-8a6f-4eb9-aff8-4298736712bc&amp;url=http%3a%2f%2fwww.sdtimes.com%2fcontent%2farticle.aspx%3fArticleID%3d31818">Extreme
Program</a>, SD Times]
</p>
        </blockquote>
        <p>
          <a href="http://www.knowing.net/ct.ashx?id=1e1d2066-8a6f-4eb9-aff8-4298736712bc&amp;url=http%3a%2f%2fwww.holub.com%2f">Allen
Holub</a> sees the glass as half-empty, writing:
</p>
        <blockquote>
          <p>
I want to take exception to the notion that Python is adequate for a real programming
project. The fact that 30K lines of code took 110K lines of tests is a real indictment
of the language. My guess is that a significant portion of those tests are addressing
potential errors that the compiler would have found in C# or Java. Moreover, all of
those unnecessary tests take a lot of time to write, time that could have been spent
working on the application. 
</p>
        </blockquote>
        <p>
I was taken aback by this, perhaps because it's been a good while since I've heard
someone characterize tests as evidence of trouble as opposed to evidence of quality. 
</p>
        <p>
There are (at least) two ways of looking at tests:
</p>
        <ol>
          <li>
Tools for discovering errors, or 
</li>
          <li>
Quality gates (they're one way -- are they quality diodes?)</li>
        </ol>
        <p>
There's no doubt that the software development tradition has favored the former view
(once you've typed a line, everything you do next is "debugging"). However, the past
decade has seen a ... wait for it ... paradigm shift. 
</p>
        <p>
The Agile Paradigm views change over time as a central issue; if it were still the
90s, I would undoubtedly refer to it as Change-Oriented Programming (COP). Tests are
the measure of change -- not lines of code, not cyclomatic complexity, not object
hierarchies, not even deployments. 
</p>
        <p>
(Perhaps "User stories" or scenarios are the "yard-stick" of change, tests are the
"inch-stick" of change, and deployments are the "milestone" of change.) 
</p>
        <p>
So from <em>within</em> the Agile Paradigm / COP, a new test is written that fails,
some new code is written, the test passes -- a <strong>one-way </strong>gate has been
passed through, progress has been made, and credit accrues. From <em>outside</em> the
paradigm, <strong>a test is seen as indicative of a problem that ought not to exist
in the first place</strong>. The <em>passing</em> of the test is not seen as the salient
point, the "<em>need" </em>for (i.e., existence of)<em> </em>the test is seen
as evidence of low quality.
</p>
        <p>
In true test-<strong>driven </strong>development, every pass fails at least once,
because the tests are written before the code. What is perhaps not appreciated by
those outside the Agile Paradigm, however, is that tests are written that one expects
to run from the moment the relevant code is created. For instance, if one had fields
for sub-total, taxes, and total, one would certainly write a test that confirmed that
total = sub-total + taxes. One would also certainly expect that test to pass as soon
as the code had been written. 
</p>
        <p>
As is often the case with paradigms, often just realizing that there are different
mental models / worldviews in play is crucial to communication. 
</p>
        <p>
          <strong>Update: </strong> This relates to Martin Fowler's recent post on <a href="http://www.knowing.net/ct.ashx?id=1e1d2066-8a6f-4eb9-aff8-4298736712bc&amp;url=http%3a%2f%2fmartinfowler.com%2fbliki%2fSchoolsOfSoftwareDevelopment.html">Schools
of Software Development</a>.
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=1e1d2066-8a6f-4eb9-aff8-4298736712bc" />
      </body>
      <title>30K application lines + 110K testing lines: Evidence of...?</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,1e1d2066-8a6f-4eb9-aff8-4298736712bc.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,1e1d2066-8a6f-4eb9-aff8-4298736712bc.aspx</link>
      <pubDate>Mon, 14 Apr 2008 16:00:29 GMT</pubDate>
      <description>&lt;p&gt;
I recently wrote an encomium to ResolverOne, the IronPython-based spreadsheet:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
[T]heir use of pair programming and test-driven development has delivered high productivity;
of the 140,000 lines of code, 110,000 are tests....ResolverOne has been in development
for roughly two years, is written in a language without explicit type declarations,
and is on an implementation that itself is in active development. It’s been brought
to beta in a credible (if not downright impressive) amount of time despite being developed
by pairs of programmers writing far more lines of test than application. Yet no one
can credibly dismiss the complexity of 30,000 lines of application logic or spreadsheet
functionality, much less the truly innovative spreadsheet-program features. 
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
ResolverOne is easily the most compelling data point I’ve heard for the practices
of Extreme Programming.
&lt;/p&gt;
&lt;p&gt;
[&lt;a href="http://www.knowing.net/ct.ashx?id=1e1d2066-8a6f-4eb9-aff8-4298736712bc&amp;amp;url=http%3a%2f%2fwww.sdtimes.com%2fcontent%2farticle.aspx%3fArticleID%3d31818"&gt;Extreme
Program&lt;/a&gt;, SD Times]
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.knowing.net/ct.ashx?id=1e1d2066-8a6f-4eb9-aff8-4298736712bc&amp;amp;url=http%3a%2f%2fwww.holub.com%2f"&gt;Allen
Holub&lt;/a&gt; sees the glass as half-empty, writing:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
I want to take exception to the notion that Python is adequate for a real programming
project. The fact that 30K lines of code took 110K lines of tests is a real indictment
of the language. My guess is that a significant portion of those tests are addressing
potential errors that the compiler would have found in C# or Java. Moreover, all of
those unnecessary tests take a lot of time to write, time that could have been spent
working on the application. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I was taken aback by this, perhaps because it's been a good while since I've heard
someone characterize tests as evidence of trouble as opposed to evidence of quality. 
&lt;/p&gt;
&lt;p&gt;
There are (at least) two ways of looking at tests:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Tools for discovering errors, or 
&lt;li&gt;
Quality gates (they're one way -- are they quality diodes?)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
There's no doubt that the software development tradition has favored the former view
(once you've typed a line, everything you do next is "debugging"). However, the past
decade has seen a ... wait for it ... paradigm shift. 
&lt;/p&gt;
&lt;p&gt;
The Agile Paradigm views change over time as a central issue; if it were still the
90s, I would undoubtedly refer to it as Change-Oriented Programming (COP). Tests are
the measure of change -- not lines of code, not cyclomatic complexity, not object
hierarchies, not even deployments. 
&lt;/p&gt;
&lt;p&gt;
(Perhaps "User stories" or scenarios are the "yard-stick" of change, tests are the
"inch-stick" of change, and deployments are the "milestone" of change.) 
&lt;/p&gt;
&lt;p&gt;
So from &lt;em&gt;within&lt;/em&gt; the Agile Paradigm / COP, a new test is written that fails,
some new code is written, the test passes -- a &lt;strong&gt;one-way &lt;/strong&gt;gate has been
passed through, progress has been made, and credit accrues. From &lt;em&gt;outside&lt;/em&gt; the
paradigm, &lt;strong&gt;a test is seen as indicative of a problem that ought not to exist
in the first place&lt;/strong&gt;. The &lt;em&gt;passing&lt;/em&gt; of the test is not seen as the salient
point, the "&lt;em&gt;need" &lt;/em&gt;for (i.e., existence of)&lt;em&gt;&amp;nbsp;&lt;/em&gt;the test is seen
as evidence of low quality.
&lt;/p&gt;
&lt;p&gt;
In true test-&lt;strong&gt;driven &lt;/strong&gt;development, every pass fails at least once,
because the tests are written before the code. What is perhaps not appreciated by
those outside the Agile Paradigm, however, is that tests are written that one expects
to run from the moment the relevant code is created. For instance, if one had fields
for sub-total, taxes, and total, one would certainly write a test that confirmed that
total = sub-total + taxes. One would also certainly expect that test to pass as soon
as the code had been written. 
&lt;/p&gt;
&lt;p&gt;
As is often the case with paradigms, often just realizing that there are different
mental models / worldviews in play is crucial to communication. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update: &lt;/strong&gt; This relates to Martin Fowler's recent post on &lt;a href="http://www.knowing.net/ct.ashx?id=1e1d2066-8a6f-4eb9-aff8-4298736712bc&amp;amp;url=http%3a%2f%2fmartinfowler.com%2fbliki%2fSchoolsOfSoftwareDevelopment.html"&gt;Schools
of Software Development&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=1e1d2066-8a6f-4eb9-aff8-4298736712bc" /&gt;</description>
      <category>Knowing</category>
      <category>SD Futures</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=00075843-558b-49d7-bfcf-1f1e38b43877</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,00075843-558b-49d7-bfcf-1f1e38b43877.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It's been <a href="http://www.knowing.net/ct.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877&amp;url=http%3a%2f%2fwww.knowing.net%2fSearchView.aspx%3fq%3dpython">quite
a year for Python</a>, and <a href="http://www.knowing.net/ct.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877&amp;url=http%3a%2f%2farstechnica.com%2fnews.ars%2fpost%2f20080408-analysis-google-app-engine-alluring-will-be-hard-to-escape.html">Google
App Engine</a> provides the dynamic language a very high profile indeed. GAE is a
cloud platform that is competitive with Amazon's S3 (much like <a href="http://www.knowing.net/ct.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877&amp;url=http%3a%2f%2fwww.startrek.com%2fstartrek%2fview%2fseries%2fTOS%2fepisode%2f68808.html">Stratos,
on the planet Ardana</a> might compete with <a href="http://www.knowing.net/ct.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877&amp;url=http%3a%2f%2fwww.starwars.com%2fdatabank%2flocation%2fcloudcity%2f">Cloud
City on Bespin</a> ). GAE provides Django and other major Python frameworks, but I
imagine that the real appeal is (a) the free hosting and (b) the CPU budget. 
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877" />
      </body>
      <title>Google App Engine: Another Python Victory</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,00075843-558b-49d7-bfcf-1f1e38b43877.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,00075843-558b-49d7-bfcf-1f1e38b43877.aspx</link>
      <pubDate>Sun, 13 Apr 2008 16:00:44 GMT</pubDate>
      <description>&lt;p&gt;
It's been &lt;a href="http://www.knowing.net/ct.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877&amp;amp;url=http%3a%2f%2fwww.knowing.net%2fSearchView.aspx%3fq%3dpython"&gt;quite
a year for Python&lt;/a&gt;, and &lt;a href="http://www.knowing.net/ct.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877&amp;amp;url=http%3a%2f%2farstechnica.com%2fnews.ars%2fpost%2f20080408-analysis-google-app-engine-alluring-will-be-hard-to-escape.html"&gt;Google
App Engine&lt;/a&gt; provides the dynamic language a very high profile indeed. GAE is a
cloud platform that is competitive with Amazon's S3 (much like &lt;a href="http://www.knowing.net/ct.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877&amp;amp;url=http%3a%2f%2fwww.startrek.com%2fstartrek%2fview%2fseries%2fTOS%2fepisode%2f68808.html"&gt;Stratos,
on the planet Ardana&lt;/a&gt; might compete with &lt;a href="http://www.knowing.net/ct.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877&amp;amp;url=http%3a%2f%2fwww.starwars.com%2fdatabank%2flocation%2fcloudcity%2f"&gt;Cloud
City on Bespin&lt;/a&gt; ). GAE provides Django and other major Python frameworks, but I
imagine that the real appeal is (a) the free hosting and (b) the CPU budget. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=00075843-558b-49d7-bfcf-1f1e38b43877" /&gt;</description>
      <category>Knowing</category>
      <category>Languages</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=a1b67e50-d97f-4de5-bc78-1a866a63ba87</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,a1b67e50-d97f-4de5-bc78-1a866a63ba87.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sometime after Space War and Asteroids, but before color was widespread in arcade
games, there was a 2-person vector-graphics game in which you and your friend drove
"tractors" around and grabbed little diamonds (or whatever) from a pile in the center
of the screen and dragged them back to your base. You could shoot the other guy a
la Space War, but I think there were also bad guys flying around to shoot a la Asteroids.
</p>
        <p>
          <strong>Name that Arcade Game!</strong>
        </p>
        <p>
          <strong>
            <font color="#ff0000">Update</font>: KSharkey rocks!</strong> He correctly
identified <a href="http://www.knowing.net/ct.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87&amp;url=http%3a%2f%2fwww.klov.com%2fgame_detail.php%3fgame_id%3d9326">Rip-Off</a> --
with graphics like this, it's no wonder I was enthralled:
</p>
        <p>
          <a href="http://www.knowing.net/ct.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87&amp;url=http%3a%2f%2fwww.knowing.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fNameThatArcadeGame_D276%2fimage_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="image" src="http://www.knowing.net/content/binary/WindowsLiveWriter/NameThatArcadeGame_D276/image_thumb.png" width="644" border="0" />
          </a>
        </p>
        <p>
With the advent of color, there was this game involving a grid of city blocks. A dozen
or so triangles started moving from one side (or all sides?) through the grid. I don't
recall if you controlled the triangles or you controlled a car trying to get away
from them, but over time the triangles would end up crashing into each other and being
destroyed. And you either were trying to destroy them all before time ran out or you
were trying to keep them alive until you achieved some goal.
</p>
        <p>
          <strong>Name that Arcade Game!</strong>
        </p>
        <p>
          <font color="#ff0000">
            <strong>Update: </strong>
          </font>
          <font color="#000000">
            <strong>WillC2
Rocks</strong>! <a href="http://www.knowing.net/ct.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87&amp;url=http%3a%2f%2fwww.klov.com%2fgame_detail.php%3fgame_id%3d10034">Targ</a> it
is! </font>
        </p>
        <p>
          <a href="http://www.knowing.net/ct.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87&amp;url=http%3a%2f%2fwww.knowing.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fNameThatArcadeGame_D276%2fimage_4.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="image" src="http://www.knowing.net/content/binary/WindowsLiveWriter/NameThatArcadeGame_D276/image_thumb_1.png" width="469" border="0" />
          </a>
        </p>
        <p>
Well, guess I'm going to have to renew my XNA Creator's Club membership...
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87" />
      </body>
      <title>Name That Arcade Game</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,a1b67e50-d97f-4de5-bc78-1a866a63ba87.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,a1b67e50-d97f-4de5-bc78-1a866a63ba87.aspx</link>
      <pubDate>Fri, 11 Apr 2008 16:00:47 GMT</pubDate>
      <description>&lt;p&gt;
Sometime after Space War and Asteroids, but before color was widespread in arcade
games, there was a 2-person vector-graphics game in which you and your friend drove
"tractors" around and grabbed little diamonds (or whatever) from a pile in the center
of the screen and dragged them back to your base. You could shoot the other guy a
la Space War, but I think there were also bad guys flying around to shoot a la Asteroids.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Name that Arcade Game!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#ff0000"&gt;Update&lt;/font&gt;: KSharkey rocks!&lt;/strong&gt; He correctly
identified &lt;a href="http://www.knowing.net/ct.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87&amp;amp;url=http%3a%2f%2fwww.klov.com%2fgame_detail.php%3fgame_id%3d9326"&gt;Rip-Off&lt;/a&gt; --
with graphics like this, it's no wonder I was enthralled:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.knowing.net/ct.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87&amp;amp;url=http%3a%2f%2fwww.knowing.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fNameThatArcadeGame_D276%2fimage_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="image" src="http://www.knowing.net/content/binary/WindowsLiveWriter/NameThatArcadeGame_D276/image_thumb.png" width="644" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
With the advent of color, there was this game involving a grid of city blocks. A dozen
or so triangles started moving from one side (or all sides?) through the grid. I don't
recall if you controlled the triangles or you controlled a car trying to get away
from them, but over time the triangles would end up crashing into each other and being
destroyed. And you either were trying to destroy them all before time ran out or you
were trying to keep them alive until you achieved some goal.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Name that Arcade Game!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#ff0000"&gt;&lt;strong&gt;Update: &lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;strong&gt;WillC2
Rocks&lt;/strong&gt;! &lt;a href="http://www.knowing.net/ct.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87&amp;amp;url=http%3a%2f%2fwww.klov.com%2fgame_detail.php%3fgame_id%3d10034"&gt;Targ&lt;/a&gt; it
is! &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.knowing.net/ct.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87&amp;amp;url=http%3a%2f%2fwww.knowing.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fNameThatArcadeGame_D276%2fimage_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="image" src="http://www.knowing.net/content/binary/WindowsLiveWriter/NameThatArcadeGame_D276/image_thumb_1.png" width="469" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Well, guess I'm going to have to renew my XNA Creator's Club membership...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=a1b67e50-d97f-4de5-bc78-1a866a63ba87" /&gt;</description>
      <category>Offtopic</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=35241f47-7814-43be-b3fd-0d9664fd3880</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,35241f47-7814-43be-b3fd-0d9664fd3880.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
"I wrote an encryption algorithm with 612 bits of security." (I really like to imagine
the 'notes' from the studio on this -- "I like how this establishes that Hansen is
a very talented programmer, but let's bump it up 100 to show he was <em>really </em>good.")
</p>
        <p>
"We need Linux servers..." (In the year 2000, he expected the FBI to run its infrastructure
on OSS? No wonder this guy got nowhere!)
</p>
        <p>
Other than that, the movie was okay, even if it had the cliched cop-out "Why did he
do it? Well, in the end it doesn't matter. He did it. And that's what counts." That
may be what counts in the real world, but in a <em>story</em> the 'why' is central
to the job.
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=35241f47-7814-43be-b3fd-0d9664fd3880" />
      </body>
      <title>2 Things That Made Me Scoff at &amp;quot;Breach&amp;quot;</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,35241f47-7814-43be-b3fd-0d9664fd3880.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,35241f47-7814-43be-b3fd-0d9664fd3880.aspx</link>
      <pubDate>Thu, 10 Apr 2008 00:39:00 GMT</pubDate>
      <description>&lt;p&gt;
"I wrote an encryption algorithm with 612 bits of security." (I really like to imagine
the 'notes' from the studio on this -- "I like how this establishes that Hansen is
a very talented programmer, but let's bump it up 100 to show he was &lt;em&gt;really &lt;/em&gt;good.")
&lt;/p&gt;
&lt;p&gt;
"We need Linux servers..." (In the year 2000, he expected the FBI to run its infrastructure
on OSS? No wonder this guy got nowhere!)
&lt;/p&gt;
&lt;p&gt;
Other than that, the movie was okay, even if it had the cliched cop-out "Why did he
do it? Well, in the end it doesn't matter. He did it. And that's what counts." That
may be what counts in the real world, but in a &lt;em&gt;story&lt;/em&gt; the 'why' is central
to the job.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=35241f47-7814-43be-b3fd-0d9664fd3880" /&gt;</description>
      <category>Offtopic</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=963d4b9f-ca93-405e-aefe-4c4145f38074</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,963d4b9f-ca93-405e-aefe-4c4145f38074.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
From Miguel de Icaza comes word of <a href="http://www.knowing.net/ct.ashx?id=963d4b9f-ca93-405e-aefe-4c4145f38074&amp;url=http%3a%2f%2ftirania.org%2fblog%2farchive%2f2008%2fApr-07.html">Igor
Moochnick's open source implementation of Powershell</a>, the excellent (if frustratingly
verbose in its default configuration) shell from Microsoft
</p>
        <p>
          <a href="http://www.knowing.net/ct.ashx?id=963d4b9f-ca93-405e-aefe-4c4145f38074&amp;url=http%3a%2f%2fwww.knowing.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fOpenSourcePowershellforLinuxMacOSWindows_6442%2fimage_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="image" src="http://www.knowing.net/content/binary/WindowsLiveWriter/OpenSourcePowershellforLinuxMacOSWindows_6442/image_thumb.png" width="460" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=963d4b9f-ca93-405e-aefe-4c4145f38074" />
      </body>
      <title>Open Source Powershell for Linux, MacOS, WindowsCE, and, oh yeah, Windows</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,963d4b9f-ca93-405e-aefe-4c4145f38074.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,963d4b9f-ca93-405e-aefe-4c4145f38074.aspx</link>
      <pubDate>Wed, 09 Apr 2008 17:07:54 GMT</pubDate>
      <description>&lt;p&gt;
From Miguel de Icaza comes word of &lt;a href="http://www.knowing.net/ct.ashx?id=963d4b9f-ca93-405e-aefe-4c4145f38074&amp;amp;url=http%3a%2f%2ftirania.org%2fblog%2farchive%2f2008%2fApr-07.html"&gt;Igor
Moochnick's open source implementation of Powershell&lt;/a&gt;, the excellent (if frustratingly
verbose in its default configuration) shell from Microsoft
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.knowing.net/ct.ashx?id=963d4b9f-ca93-405e-aefe-4c4145f38074&amp;amp;url=http%3a%2f%2fwww.knowing.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fOpenSourcePowershellforLinuxMacOSWindows_6442%2fimage_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="image" src="http://www.knowing.net/content/binary/WindowsLiveWriter/OpenSourcePowershellforLinuxMacOSWindows_6442/image_thumb.png" width="460" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=963d4b9f-ca93-405e-aefe-4c4145f38074" /&gt;</description>
      <category>Knowing</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=94f4f552-ae4b-45e2-8c94-5c0fffc71472</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,94f4f552-ae4b-45e2-8c94-5c0fffc71472.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hmm.... this post advocating <a href="http://www.knowing.net/ct.ashx?id=94f4f552-ae4b-45e2-8c94-5c0fffc71472&amp;url=http%3a%2f%2fblogs.concedere.net%3a8080%2fblog%2fdiscipline%2fsoftware%2bengineering%2f%3fpermalink%3dThe-Case-for-Equality-in-Software-Development.html">Collective
Code Ownership as "the most important principle of XP"</a> has a link to my comment
on "<a href="http://www.knowing.net/ct.ashx?id=94f4f552-ae4b-45e2-8c94-5c0fffc71472&amp;url=http%3a%2f%2fblogs.concedere.net%3a8080%2fblog%2fdiscipline%2fsoftware%2bengineering%2f%3fpermalink%3dThe-Case-for-Equality-in-Software-Development.html">bad
programmers are not good programmers who are slow</a>"
</p>
        <p>
The implication is that either:
</p>
        <ol>
          <li>
Counter-productive programmers are a myth and a scapegoat at all times, or 
</li>
          <li>
CCO is a cure for counter-productive programmers</li>
        </ol>
        <p>
If (1), I'll <a href="http://www.knowing.net/ct.ashx?id=94f4f552-ae4b-45e2-8c94-5c0fffc71472&amp;url=http%3a%2f%2fwww.sdtimes.com%2fcontent%2farticle.aspx%3fArticleID%3d31698%26AspxAutoDetectCookieSupport%3d1">restate</a> that
what little evidence we have about programmer productivity points to a productivity
distribution that's skewed with a long tail of incompetence. 
</p>
        <p>
So, (2) CCO is a cure for low- or counter-productive programmers. I don't see that
at all. For one thing, I don't see any mechanism by which CCO improves the talents
of the worst programmers. It exposes them to higher-quality code than they write,
true, but bad programmers don't learn by example (I'm tempted to say their lack of
self-educational initiative is their defining characteristic). 
</p>
        <p>
From a managerial perspective, CCO can actually <em>hide</em> poor programming, in
that a poor programmer does a "works on my machine" or "works for the default scenario"
piece of crud, and a good programmer comes through and refactors the work before the
poor programming is exposed. The good programmer is disgusted and frustrated and slowed,
but management sees Bob The Poor and Gwen the Great as both finishing one task. 
</p>
        <p>
With version control logs, Bob's role in the poor work is not hidden to Gwen either,
so it's not the case that the communal nature of CCO tempers her resentment. 
</p>
        <p>
I'm 100% for CCO, but I don't see it as having anything to do with incompetent programmers.
(<font color="#ff0000">Clarification</font>: I'm 100% for CCO, but that doesn't mean
it can't 'hide poor programming' as discussed above. Nothing's perfect.)
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=94f4f552-ae4b-45e2-8c94-5c0fffc71472" />
      </body>
      <title>Does Collective Code Ownership Overcome Poor Programming?</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,94f4f552-ae4b-45e2-8c94-5c0fffc71472.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,94f4f552-ae4b-45e2-8c94-5c0fffc71472.aspx</link>
      <pubDate>Wed, 09 Apr 2008 03:51:58 GMT</pubDate>
      <description>&lt;p&gt;
Hmm.... this post advocating &lt;a href="http://www.knowing.net/ct.ashx?id=94f4f552-ae4b-45e2-8c94-5c0fffc71472&amp;amp;url=http%3a%2f%2fblogs.concedere.net%3a8080%2fblog%2fdiscipline%2fsoftware%2bengineering%2f%3fpermalink%3dThe-Case-for-Equality-in-Software-Development.html"&gt;Collective
Code Ownership as "the most important principle of XP"&lt;/a&gt; has a link to my comment
on "&lt;a href="http://www.knowing.net/ct.ashx?id=94f4f552-ae4b-45e2-8c94-5c0fffc71472&amp;amp;url=http%3a%2f%2fblogs.concedere.net%3a8080%2fblog%2fdiscipline%2fsoftware%2bengineering%2f%3fpermalink%3dThe-Case-for-Equality-in-Software-Development.html"&gt;bad
programmers are not good programmers who are slow&lt;/a&gt;"
&lt;/p&gt;
&lt;p&gt;
The implication is that either:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Counter-productive programmers are a myth and a scapegoat at all times, or 
&lt;li&gt;
CCO is a cure for counter-productive programmers&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
If (1), I'll &lt;a href="http://www.knowing.net/ct.ashx?id=94f4f552-ae4b-45e2-8c94-5c0fffc71472&amp;amp;url=http%3a%2f%2fwww.sdtimes.com%2fcontent%2farticle.aspx%3fArticleID%3d31698%26AspxAutoDetectCookieSupport%3d1"&gt;restate&lt;/a&gt; that
what little evidence we have about programmer productivity points to a productivity
distribution that's skewed with a long tail of incompetence. 
&lt;/p&gt;
&lt;p&gt;
So, (2) CCO is a cure for low- or counter-productive programmers. I don't see that
at all. For one thing, I don't see any mechanism by which CCO improves the talents
of the worst programmers. It exposes them to higher-quality code than they write,
true, but bad programmers don't learn by example (I'm tempted to say their lack of
self-educational initiative is their defining characteristic). 
&lt;/p&gt;
&lt;p&gt;
From a managerial perspective, CCO can actually &lt;em&gt;hide&lt;/em&gt; poor programming, in
that a poor programmer does a "works on my machine" or "works for the default scenario"
piece of crud, and a good programmer comes through and refactors the work before the
poor programming is exposed. The good programmer is disgusted and frustrated and slowed,
but management sees Bob The Poor and Gwen the Great as both finishing one task. 
&lt;/p&gt;
&lt;p&gt;
With version control logs, Bob's role in the poor work is not hidden to Gwen either,
so it's not the case that the communal nature of CCO tempers her resentment. 
&lt;/p&gt;
&lt;p&gt;
I'm 100% for CCO, but I don't see it as having anything to do with incompetent programmers.
(&lt;font color="#ff0000"&gt;Clarification&lt;/font&gt;: I'm 100% for CCO, but that doesn't mean
it can't 'hide poor programming' as discussed above. Nothing's perfect.)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=94f4f552-ae4b-45e2-8c94-5c0fffc71472" /&gt;</description>
      <category>Knowing</category>
    </item>
    <item>
      <trackback:ping>http://www.knowing.net/Trackback.aspx?guid=3c99e0df-0feb-40b1-82a7-30130bd4f913</trackback:ping>
      <pingback:server>http://www.knowing.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.knowing.net/PermaLink,guid,3c99e0df-0feb-40b1-82a7-30130bd4f913.aspx</pingback:target>
      <dc:creator>Larry O'Brien</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.knowing.net/ct.ashx?id=3c99e0df-0feb-40b1-82a7-30130bd4f913&amp;url=http%3a%2f%2ffeeds.feedburner.com%2f%7er%2fBinstockOnSoftware%2f%7e3%2f261690402%2fgreat-reference-for-ruby.html">Andrew
Binstock says</a>:
</p>
        <blockquote>
          <p>
Ever-dependable O'Reilly just released <a href="http://www.knowing.net/ct.ashx?id=3c99e0df-0feb-40b1-82a7-30130bd4f913&amp;url=http%3a%2f%2fwww.amazon.com%2fgp%2fredirect.html%3fie%3dUTF8%26location%3dhttp%253A%252F%252Fwww.amazon.com%252FRuby-Programming-Language-David-Flanagan%252Fdp%252F0596516177%253Fie%253DUTF8%2526s%253Dbooks%2526qid%253D1207014475%2526sr%253D8-1%26tag%3dwwwpacificdat-20%26linkCode%3dur2%26camp%3d1789%26creative%3d9325">Ruby
Programming Language</a><img height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=wwwpacificdat-20&amp;l=ur2&amp;o=1" width="1" border="0" />,
which is without a doubt the definitive Ruby reference. Not only is it co-authored
by Yukihiro "Matz" Matusmoto, the inventor of Ruby, but it is superbly well edited,
so that every page is full of useful information presented clearly. And at more than
400 pages, that's a lot of information. Couple this book with The Ruby Cookbook, which
I <a href="http://www.knowing.net/ct.ashx?id=3c99e0df-0feb-40b1-82a7-30130bd4f913&amp;url=http%3a%2f%2fbinstock.blogspot.com%2f2006%2f09%2freally-useful-ruby-book.html">reviewed</a> on
this blog, and you have probably the best 1-2 combination for learning and using Ruby.
</p>
        </blockquote>
        <p>
I haven't seen the book myself, but I trust Andrew's judgment. I certainly agree on
the value of <em>The Ruby Cookbook</em>.
</p>
        <img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=3c99e0df-0feb-40b1-82a7-30130bd4f913" />
      </body>
      <title>&amp;quot;The Ruby Programming Language&amp;quot; Gets Thumbs Up</title>
      <guid isPermaLink="false">http://www.knowing.net/PermaLink,guid,3c99e0df-0feb-40b1-82a7-30130bd4f913.aspx</guid>
      <link>http://www.knowing.net/PermaLink,guid,3c99e0df-0feb-40b1-82a7-30130bd4f913.aspx</link>
      <pubDate>Mon, 07 Apr 2008 20:34:43 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.knowing.net/ct.ashx?id=3c99e0df-0feb-40b1-82a7-30130bd4f913&amp;amp;url=http%3a%2f%2ffeeds.feedburner.com%2f%7er%2fBinstockOnSoftware%2f%7e3%2f261690402%2fgreat-reference-for-ruby.html"&gt;Andrew
Binstock says&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Ever-dependable O'Reilly just released &lt;a href="http://www.knowing.net/ct.ashx?id=3c99e0df-0feb-40b1-82a7-30130bd4f913&amp;amp;url=http%3a%2f%2fwww.amazon.com%2fgp%2fredirect.html%3fie%3dUTF8%26location%3dhttp%253A%252F%252Fwww.amazon.com%252FRuby-Programming-Language-David-Flanagan%252Fdp%252F0596516177%253Fie%253DUTF8%2526s%253Dbooks%2526qid%253D1207014475%2526sr%253D8-1%26tag%3dwwwpacificdat-20%26linkCode%3dur2%26camp%3d1789%26creative%3d9325"&gt;Ruby
Programming Language&lt;/a&gt;&lt;img height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=wwwpacificdat-20&amp;amp;l=ur2&amp;amp;o=1" width="1" border="0"&gt;,
which is without a doubt the definitive Ruby reference. Not only is it co-authored
by Yukihiro "Matz" Matusmoto, the inventor of Ruby, but it is superbly well edited,
so that every page is full of useful information presented clearly. And at more than
400 pages, that's a lot of information. Couple this book with The Ruby Cookbook, which
I &lt;a href="http://www.knowing.net/ct.ashx?id=3c99e0df-0feb-40b1-82a7-30130bd4f913&amp;amp;url=http%3a%2f%2fbinstock.blogspot.com%2f2006%2f09%2freally-useful-ruby-book.html"&gt;reviewed&lt;/a&gt; on
this blog, and you have probably the best 1-2 combination for learning and using Ruby.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I haven't seen the book myself, but I trust Andrew's judgment. I certainly agree on
the value of &lt;em&gt;The Ruby Cookbook&lt;/em&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.knowing.net/aggbug.ashx?id=3c99e0df-0feb-40b1-82a7-30130bd4f913" /&gt;</description>
      <category>Knowing</category>
      <category>Languages/Ruby</category>
    </item>
  </channel>
</rss>