    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Professionalism in Programming #31</title>
        <link>https://members.accu.org/index.php/articles/801</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>




<div class="xar-mod-head"><span class="xar-mod-title">Professionalism in Programming, from CVu journal + CVu Journal Vol 17, #2 - Apr 2005</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c184/">Journal Columns</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c182/">Professionalism</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c97/">172</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/c182-97/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/articles/c182+97/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Professionalism in Programming #31</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 05 April 2005 13:16:11 +01:00 or Tue, 05 April 2005 13:16:11 +01:00</p>
<p><strong>Summary:</strong>&nbsp;<p>Last time we began a high-paced stroll through a gallery of collected programmer stereotypes.
In this concluding article we'll finish the tour, and see what makes the best type of programmer. Brace yourself: here come more Code Monkeys...</p></p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e22" id="d0e22"></a></h2>
</div>
<p><img src="/var/uploads/journals/resources/goodliffe_code_monkeys_2.png" align=
"right"></p>
<div class="blockquote">
<blockquote class="blockquote">
<p>Darwinian Man, though well-behaved, at best is only a monkey
shaved (Gilbert and Sullivan)</p>
</blockquote>
</div>
<p>Last time we began a high-paced stroll through a gallery of
collected programmer stereotypes. We're looking at individual
developer attitudes, to see how they can drastically affect the
quality of the software we write and how they affect the whole
development team.</p>
<p>In this concluding article we'll finish the tour, and see what
makes the best type of programmer. Brace yourself: here come more
Code Monkeys...</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e33" id="d0e33"></a>6. The
Cowboy</h2>
</div>
<p><img src="/var/uploads/journals/resources/goodliffe_code_monkeys_cowboy.png"
align="left">Some would incorrectly classify this guy a
<span class="emphasis"><em>Hacker</em></span>. He's not a hacker in
the classic sense of the word. 'Hacker' is a term used by geeks to
proudly describe a heroic coder<sup>[<a name="d0e42" href=
"#ftn.d0e42" id="d0e42">1</a>]</sup>. The Cowboy is a shoddy
programmer, who actively avoids hard work. He'll take as many
shortcuts as he can find.</p>
<p>The Cowboy dives straight into code and does the minimum work to
solve the immediate problem. He won't care if it's not a very good
solution, if it compromises the code structure, or will not satisfy
future requirements.</p>
<p>A Cowboy is anxious to complete each task and move on to the
next. If he's read a little about processes, he'll call this Agile
Programming. It's really just laziness.</p>
<div class="variablelist">
<dl>
<dt><span class="term">Strengths</span></dt>
<dd>
<p>Cowboy code works, but isn't particularly elegant. Cowboys like
to learn new things, but seldom get around to it (it's too much
like hard work).</p>
</dd>
<dt><span class="term">Weaknesses</span></dt>
<dd>
<p>You'll spend ages cleaning up after a Cowboy. Their aftermath is
not a pleasant place to be. Cowboy code always requires later
repair, rework and refactoring. They have a limited palette of
techniques to use, and no real engineering skills.</p>
</dd>
<dt><span class="term">What to do if you are one</span></dt>
<dd>
<p>Learn to hack code in the right sense of the word. Take a pride
in your work, and spend more time over it. Admit your failings, and
try to improve.</p>
</dd>
<dt><span class="term">How to work with them</span></dt>
<dd>
<p>Never go into a Cowboy's house; if their code's anything to go
by, it'll be a DIY disaster! Understand that they're not a
malicious breed, just a little lazy. Organise reviews of their
code. Get them pair programming (they might work well with an Eager
Coder, but if you want to see fur flying pair them with a
Planner).</p>
</dd>
</dl>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e78" id="d0e78"></a>7. The
Planner</h2>
</div>
<p><img src="/var/uploads/journals/resources/goodliffe_code_monkeys_planner.png"
align="left">The Planner thinks about what he's doing so much, the
project's been canned long before he's started writing any
code.</p>
<p>It's true, you <span class="emphasis"><em>must</em></span> plan
up front and establish a cohesive design, but this guy forms an
impenetrable cocoon around himself and refuses any contact with the
outside world until he's finished. Meanwhile everything's changing
around him.</p>
<p>Terminally educated, the Planner studies and reads a lot. A
common subspecies is the Process Weenie; he knows all about the
'proper development process', but is weak on hitting deadlines or
getting anything done. (Process Weenies eventually become middle
managers, and then get fired.)</p>
<div class="variablelist">
<dl>
<dt><span class="term">Strengths</span></dt>
<dd>
<p>They <span class="emphasis"><em>do</em></span> design. They do
think. They don't hack out thoughtless code.</p>
</dd>
<dt><span class="term">Weaknesses</span></dt>
<dd>
<p>When a Planner sets to work there is a very real danger of
<span class="emphasis"><em>over design</em></span>. He tends to
create very complex systems. Planners are the key cause of
<span class="emphasis"><em>analysis paralysis</em></span> - where
development gets more focused on methods and modelling than on
prototyping and creating a solution. The Planner likes to generate
endless documents and call meetings every other hour.</p>
<p>He spends ages thinking, and not enough time doing anything. He
knows a lot, but it doesn't all make the leap from theory to
practice.</p>
</dd>
<dt><span class="term">What to do if you are one</span></dt>
<dd>
<p>It is important to create careful designs up front, but consider
incremental development and prototyping as methods to verify your
design. Sometimes you can't commit to a design until you've
actually started to implement it. Only then will you appreciate all
the problems.</p>
<p>Try to establish a better balance of planning and action.
Console yourself that it's better to spend too long designing than
to write awful code - the latter is far harder to fix.</p>
</dd>
<dt><span class="term">How to work with them</span></dt>
<dd>
<p>Ahead of time, agree all milestones and deadlines for a
Planner's work. Throw in a <span class="emphasis"><em>design
complete</em></span> milestone; they'll be happy that it has been
recognised as an important task, and encouraged to complete their
design work on time. This is usually enough to crystallise a
Planner into action.</p>
<p>Avoid meetings with a Planner. You'll spend an hour arguing
about how to decide the agenda.</p>
</dd>
</dl>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e134" id="d0e134"></a>8. The Old
Timer</h2>
</div>
<p><img src=
"/var/uploads/journals/resources/goodliffe_code_monkeys_old_timer.png" align=
"left">This old boy is a senior programmer from the old school. Sit
back and listen to him reminisce about the Good Old Days, when he
used punch cards and machines without enough memory to hold the
result of an integer addition.</p>
<p>The Old Timer's either happy that he's still doing what he loves
the most, or bitter that he's missed promotion countless times.
He's seen it all, knows all the answers, and won't learn new tricks
(he'll tell you that there's nothing new to learn, we just
repackage the same old ideas).</p>
<p>An Old Timer doesn't suffer fools gladly. He's a bit cranky, and
is easily irritated.</p>
<div class="variablelist">
<dl>
<dt><span class="term">Strengths</span></dt>
<dd>
<p>He's been programming for years, and so has considerable
experience and wisdom. The Old Timer has a mature approach to
coding. He has learnt what qualities make good and bad programs,
and how to avoid the common pitfalls.</p>
</dd>
<dt><span class="term">Weaknesses</span></dt>
<dd>
<p>The Old Timer won't willingly learn new techniques. Fed up with
fashionable ideas that promise much and deliver little, he's slower
and more resilient to change.</p>
<p>He has little patience thanks to years of corporate ineptitude.
He's been at the receiving end of countless tight deadlines and
unreasonable managers.</p>
</dd>
<dt><span class="term">What to do if you are one</span></dt>
<dd>
<p>Don't be too judgmental of younger more enthusiastic
programmers. You were once like them, and <span class=
"emphasis"><em>your</em></span> code wasn't awful.</p>
</dd>
<dt><span class="term">How to work with them</span></dt>
<dd>
<p><span class="emphasis"><em>You don't know how easy you have it,
you young programmers</em></span>. Don't mess with an Old Timer, or
you'll find out how he survived this long in the software factory.
Choose your battles with him wisely. Show him respect, but treat
him as a peer, not a deity.</p>
<p>Understand the Old Timer's motivation. Check if he's programming
because he loves to do so, or because he can't scale the
promotional ladder any higher.</p>
</dd>
</dl>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e178" id="d0e178"></a>9. The
Zealot</h2>
</div>
<p><img src="/var/uploads/journals/resources/goodliffe_code_monkeys_zealot.png"
align="left">The Zealot is a brainwashed convert, a disciple who
blindly thinks that everything <span class=
"emphasis"><em>BigCo</em></span> produces is excellent. Teenage
girls have rock stars to worship; programmers have their own idols.
In his enthusiasm, the Zealot takes it upon himself to become an
unpaid technology evangelist. He'll try to incorporate BigCo
products into every assignment he is given.</p>
<p>The Zealot follows BigCo to the exclusion of all other
approaches, and rarely knows about alternatives. Anything that's
not excellent in the current BigCo product line will be fixed in
the next version, which we <span class=
"emphasis"><em>must</em></span> upgrade to
immediately<sup>[<a name="d0e192" href="#ftn.d0e192" id=
"d0e192">2</a>]</sup>.</p>
<div class="variablelist">
<dl>
<dt><span class="term">Strengths</span></dt>
<dd>
<p>He knows BigCo's products inside out, and will produce genuinely
good designs based on them. He is productive with that technology,
but not necessarily maximally productive - other unfamiliar
approaches might be more effective.</p>
</dd>
<dt><span class="term">Weaknesses</span></dt>
<dd>
<p>Being a Zealot, he's neither objective nor pragmatic. There may
be better non-BigCo designs that he will miss. Worse, though, are
the Zealot's continual rants about BigCo.</p>
</dd>
<dt><span class="term">What to do if you are one</span></dt>
<dd>
<p>No one expects you to turn away from your beloved BigCo. It's
valuable to understand their technologies and know how to deploy
them. But don't be a technology bigot. Embrace different approaches
and new ways of thinking. Don't look at them with an air of
superiority, or prejudge them.</p>
</dd>
<dt><span class="term">How to work with them</span></dt>
<dd>
<p>Don't bother getting into philosophical arguments with a Zealot.
Don't try to explain the virtues of your preferred technology - he
won't listen. Watch yourself - one conversation with this guy can
turn <span class="emphasis"><em>you</em></span> into a Zealot. He's
contagious.</p>
<p>Zealots are generally harmless (and amusing to watch from a
distance), unless your project is at a critical design stage. At
this point, provide a clear, unbiased perspective on the problem
domain and insist on a thorough evaluation of all implementation
approaches. Remember: he might be right.</p>
<p>If you encounter silly arguments, counter them with well
prepared, accurate, detailed information about the strengths of
your approach and the weaknesses of his.</p>
</dd>
</dl>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e228" id="d0e228"></a>10. The
Slacker</h2>
</div>
<p><img src="/var/uploads/journals/resources/goodliffe_code_monkeys_slacker.png"
align="left">The Slacker is a workshy sluggard. He's hard to
detect, because he's learnt to make it look like he's overloaded
with jobs. His 'design' is playing solitaire, his 'research' is
looking at fast cars on the web, and his 'implementation' is
working on his own stuff. The Slacker actively avoids all
assignments (&quot;Oh, I'm <span class="emphasis"><em>far</em></span>
too busy to do <span class="emphasis"><em>that</em></span>&quot;).</p>
<p>A more subtle Slacker will only work on the things he wants to,
or the bits he thinks should be done, not what he's supposed to.
Despite working all the time, he'll never get his jobs done.</p>
<p>The Slacker knows how to have fun. He parties too much, and can
usually be found sleeping under his desk. His diet consists mostly
of coffee, except for lunchtimes when you'll find him in the
bar.</p>
<p>This guy can be a burn-out; one too many failed projects has
killed his desire to work.</p>
<div class="variablelist">
<dl>
<dt><span class="term">Strengths</span></dt>
<dd>
<p>At least he knows how to have fun.</p>
</dd>
<dt><span class="term">Weaknesses</span></dt>
<dd>
<p>A Slacker is an obvious liability. It's hard to prove he's
slacking - some hard problems <span class=
"emphasis"><em>do</em></span> take a while to sort out. A
programmer might not be slack, just not skilled enough to solve the
problem quickly.</p>
</dd>
<dt><span class="term">What to do if you are one</span></dt>
<dd>
<p>Work on your morals, and start to put some effort in. Or learn
to live with the guilt.</p>
</dd>
<dt><span class="term">How to work with them</span></dt>
<dd>
<p>It's best not to bitch about a Slacker - you have your own
flaws. In good time he'll get his come-uppance.</p>
<p>Take measures to prove that you are working effectively, and
that delays are the Slacker's fault. It might help to keep a
methodical diary of your work. A clear set of deadlines is
generally enough to get a Slacker working. Don't start writing his
stuff too, even in desperation. He'll only expect you to do this
next time.</p>
<p>Avoid burnout yourself, try to have fun as you work. Perhaps you
should hit the bar with him one lunchtime.</p>
</dd>
</dl>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e278" id="d0e278"></a>11. The
Reluctant Team Leader</h2>
</div>
<p><img src=
"/var/uploads/journals/resources/goodliffe_code_monkeys_reluctant_team_leader.png"
align="left">This is the organisational classic; a developer who's
been promoted to team leader when there was no further technical
route for him to advance. You can plainly see that he is
uncomfortable in this role. He doesn't have the correct skillset,
and struggles to keep up. He is a programmer, and wants to program.
This guy is not a natural organiser or manager of people, and is a
bad communicator.</p>
<p>Most programmers make spectacularly bad leaders. There are few
genuinely excellent software team leaders; it requires a particular
skillset that is both technical and organisational.</p>
<p>The Reluctant Team Leader is usually quite mild mannered and
indecisive - how else did he get persuaded to take on this job? He
gets squashed between the development team and management, taking
the blame for slippage and poor software. An increasingly harrassed
expression grows on his face until he finally burns out.</p>
<div class="variablelist">
<dl>
<dt><span class="term">Strengths</span></dt>
<dd>
<p>The Reluctant Team Leader has a real sympathy for the
programmer's plight - he's been there, and now wishes he was back.
Often he is far too willing to take responsibility for late
software delivery, to prevent the programmers being picked on by
management. Just as he's not good at delegating work, he's not good
at apportioning blame.</p>
</dd>
<dt><span class="term">Weaknesses</span></dt>
<dd>
<p>When a Team Leader tries to write code it will be awful. He
never has enough time to write, design, and test carefully. He
naively plans himself a full day's coding alongside team leading
duties. He can't fit it all in, and so the Reluctant Team Leader
spends longer and longer in the office, trying to keep up.</p>
<p>He can't organise well, can't explain things to managers, and
can't manage his team members properly.</p>
</dd>
<dt><span class="term">What to do if you are one</span></dt>
<dd>
<p>Get training. Quickly.</p>
<p>If you're not happy in this role, push for a career move. This
is not admitting defeat; it's pointless to burn yourself out doing
something you hate and aren't good at. Not everybody has the skills
or passion for management. Move to the area you do have skill and
passion for.</p>
<p>If you like herculean tasks, try to sort out the promotion path
at your company. Get them to recognise that a managerial position
should not be the next step up from senior developer. Few
programmers make decent managers; their brains aren't wired up the
right way.</p>
</dd>
<dt><span class="term">How to work with them</span></dt>
<dd>
<p>Be sympathetic, and do everything you can to help the Team
Leader. Give him reports on time, and try to get your work done to
schedule. If you might miss a deadline, let the Team Leader know
early on, so he can plan around it.</p>
</dd>
</dl>
</div>
<div class="sidebar">
<p class="title c3">Getting Personal</p>
<p>This classification of programmer attitudes isn't particularly
scientific. Psychologists have devised more formal personality
classifications; authoritative ways of calling you a freak. They
don't focus exclusively on the software development world, but do
give a valuable insight into programmer behaviour.</p>
<p>The <span class="emphasis"><em>Myers Briggs Type
Indicator</em></span> is perhaps the most popular tool. It
decomposes your personality across four axes: extrovert (E) or
introvert (I), sensing (S) or intuitive (N), thinking (T) or
feeling (F), and judging (J) or perceptive (P). This classification
results in a four letter descriptor; ISTJ would be common for a
Code Monkey.</p>
<p>Belbin's <span class="emphasis"><em>Team Roles</em></span> are a
taxonomy of attitudes, investigating how an individual works as a
part of their team. Belbin identifies nine specific behavioural
roles: three action-oriented, three people-oriented, and three
cerebral personalities. Understanding these enables us to build
effective teams from people with complimentary skills; if every
programmer was a <span class="emphasis"><em>coordinator</em></span>
then nothing would ever get done.</p>
<p>Neither of these personality taxonomies have a one-to-one
mapping with my programmer classifications. And they have a
distinct lack of primates.</p>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e339" id="d0e339"></a>The Ideal
Programmer</h2>
</div>
<p>From this tangled mess, it's clear to see that we're a strange
breed. Which of these code monkeys should we aspire to? What code
monkey cocktail will create the Ideal Programmer?</p>
<p>Unfortunately, in the Real World there are no perfect
programmers - the beast is an urban myth. Although this question is
somewhat academic, finding an answer will give us something to aim
for.</p>
<p>The fabled Ideal Programmer is part:</p>
<div class="variablelist">
<dl>
<dt><span class="term">Politician</span></dt>
<dd>
<p>They must be diplomatic, able to deal with all of these weird
code monkeys and the many, many more creatures that inhabit the
software factory - managers, testers, support, customers, users,
and so on.</p>
</dd>
<dt><span class="term">Relational</span></dt>
<dd>
<p>They work well with others. They aren't territorial about their
code and aren't afraid to get their hands dirty if a task is for
the common good. They communicate well - they can listen as well as
talk.</p>
</dd>
<dt><span class="term">Artistic</span></dt>
<dd>
<p>They can design elegant solutions, and appreciate the aesthetic
aspects of a high quality implementation.</p>
</dd>
<dt><span class="term">Technical genius</span></dt>
<dd>
<p>They write solid, industrial strength code. They have a broad
palette of technical skills, and understand how and when to apply
them.</p>
</dd>
</dl>
</div>
<p>Reading that list again, it's quite clear what we should be. If
you haven't realised yet, I'll spell it out for you. The ideal
programmer is a: PRAT.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e375" id="d0e375"></a>So What?</h2>
</div>
<div class="blockquote">
<blockquote class="blockquote">
<p>Only the wisest and stupidest of men never change.
(Confucius)</p>
</blockquote>
</div>
<p>Whilst it's entertaining to stare in the cages at all of these
code monkeys and have a laugh at their expense, what should you do
about this? If you do nothing then it's been little more than mere
entertainment; you'll walk away doing exactly the same stupid
things you've always done.</p>
<p>To improve as a programmer you must change. Change is hard - it
runs contrary to our nature. The saying goes: a leopard doesn't
change his spots. If he did, he wouldn't be a leopard any more.
Perhaps that's the key. More of us should be wildebeest or
rhinoceros.</p>
<p>Take a moment to think about the following questions:</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p>What kind of code monkey are you most like? If you're honest
there's probably a little of each of them in you. Identify the one
or two that describe you in a nutshell.</p>
</li>
<li>
<p>What are your particular strengths and weaknesses?</p>
</li>
</ul>
</div>
<p>Look over your code monkey description again, and see what
practical things you could change. What specific techniques will
help you to overcome bad attitudes, and how can you capitalise on
your good ones?</p>
<div class="sidebar">
<p class="title c3">ACCU Conference 2005</p>
<p>This series has been a snapshot of my presentation at last
year's ACCU conference. If you fancy staring at more monkeys then
come to the conference in April this year. I'm taking code monkeys
to the next level: I'll be discussing writing software in
<span class="emphasis"><em>teams</em></span>. You'll see how to
survive software writing teams, and learn techniques to improve
your day-to-day software writing experience.</p>
<p>Come to <span class="emphasis"><em>Life in the Software
Factory</em></span>. It'll be a blast.</p>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e409" id=
"d0e409"></a>Conclusion</h2>
</div>
<p>Programmers are a social species (which is odd considering their
lack of social skills). They are social by necessity; you can't
create excellent large software systems without a closely working
team of programmers, who are knit into a larger social structure
(be it a department, company, or an open source culture).</p>
<p>Each of these programmers has their own foibles and
peculiarities. Their underlying attitudes affect how well they
program - both in their approach to the code and to their place in
the team.</p>
<p>If you want to be an exceptional programmer, you need to foster
the correct positive attitudes. Remember: aim to be a <span class=
"emphasis"><em>prat</em></span>.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e421" id=
"d0e421"></a>Acknowledgement</h2>
</div>
<p>Thanks to my friend and colleague David Brookes for the
excellent monkey illustrations. I owe you another pint, Dave (or
perhaps another banana!)</p>
</div>
<div class="footnotes"><br>
<hr class="c4" width="100">
<div class="footnote">
<p><sup>[<a name="ftn.d0e42" href="#d0e42" id=
"ftn.d0e42">1</a>]</sup> Also been subverted by ignorant people,
and used mistakenly to mean <span class=
"emphasis"><em>cracker</em></span> - someone who breaks into
computer systems without permission.</p>
</div>
<div class="footnote">
<p><sup>[<a name="ftn.d0e192" href="#d0e192" id=
"ftn.d0e192">2</a>]</sup> Don't assume that Zealots only idolise
certain software vendors. A Zealot might equally be an open source
advocate, or hanker after an obsolete software package.</p>
</div>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
