<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Catfish in the Memepool</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/" />
    <link rel="self" type="application/atom+xml" href="http://laputan.org/catfish/atom.xml" />
    <id>tag:laputan.org,2008-11-01:/catfish//3</id>
    <updated>2012-11-13T18:22:04Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.14-en</generator>

<entry>
    <title>Software in the Age of Sampling</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2012/11/software-in-the-age-of-samplin.html" />
    <id>tag:laputan.org,2012:/catfish//3.439</id>

    <published>2012-11-12T17:19:23Z</published>
    <updated>2012-11-13T18:22:04Z</updated>

    <summary> I&apos;ve just returned from Øredev in Malmö, Sweden where I delivered Software in the Age of Sampling twice. The first time to a healthy turnout, the second to a nearly empty theater, to get a take without demo snafus. The video below is Take Two. Abstract Over the last generation or so, software development has changed profoundly, but some of these changes occurred so slowly they have barely been recognized. Software was once built by skilled but peculiar artisans, who meticulously crafted their original, green-fields commissions from first principles. Today, their frontiers are gone, and the very few of us build anything new from the ground up. Instead existing resources are rehashed, recombined, and remixed to produce &quot;new&quot; mash-ups based up the work of others. It&apos;s collaborative, this 21st century scavenging, and it has become a state-of-the-art approach to software development. These changes in the way we produce software have much in common with the changes that have transformed the music industry over the last thirty years. The garage band era of original composition has given way to the direct borrowing of scraps of other people&apos;s pieces and a cavalier disregard for traditional originality. This session will explore how...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<div style="text-align: justify ; position: relative">
<p>
I've just returned from <a href="http://oredev.org/2012/speakers/brian-foote">Øredev</a> in Malmö, Sweden where I delivered
<a href="http://oredev.org/2012/sessions/software-in-the-age-of-sampling">Software in the Age of Sampling</a> twice.
The first time to a healthy turnout, the second to a nearly empty theater, to get a take without demo snafus. The video below is Take Two.
</p>
</div>
<div style="background-color: #CCCCCC ; text-align: justify ; position: relative">
<b>Abstract</b>
</p>
<p>
Over the last generation or so, software development has changed profoundly, but some of these changes occurred so slowly they have barely been recognized.
</p>
<p>
Software was once built by skilled but peculiar artisans, who meticulously crafted their original, green-fields commissions from first principles. Today, their frontiers are gone, and the very few of us build anything new from the ground up. Instead existing resources are rehashed, recombined, and remixed to produce "new" mash-ups based up the work of others. It's collaborative, this 21st century scavenging, and it has become a state-of-the-art approach to software development.
</p>
<p>
These changes in the way we produce software have much in common with the changes that have transformed the music industry over the last thirty years. The garage band era of original composition has given way to the direct borrowing of scraps of other people's pieces and a cavalier disregard for traditional originality.
</p>
<p>
This session will explore how software developers in the age of sampling have as much in common with contemporary high-tech music "producers" as they do with traditional engineers.
</p>
</div>
<p align="center">
<iframe src="http://player.vimeo.com/video/53153271?badge=0" width="400" height="300" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
</p>]]>
        
    </content>
</entry>

<entry>
    <title>The Cobbler&apos;s Children</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/03/the-cobblers-children.html" />
    <id>tag:laputan.org,2011:/catfish//3.430</id>

    <published>2011-03-08T16:00:35Z</published>
    <updated>2012-11-14T12:07:13Z</updated>

    <summary> The cobbler&apos;s children are the last to be shod. So it is too for software developers these days. I&apos;m reminded of this hoary trope when I think about the state of twenty-first century programming languages and technology. Because its is still very much mired / anchored in the 95-character ASCII/EBCDIC punchcard-era practices of the fifties and sixties. This reverie was triggered by a chance Twitter sighting of a &apos;blog post by Canadian Computer Scientist Greg Wilson on why Donald Knuth&apos;s vision of Literate Programming had failed. Greg&apos;s piece resonated with me because it addresses two themes I&apos;ve trotted out myself on a couple of occasions. Such is the nature of this sort of triggering. The first is the enduring irony that, despite having delivered all manner of post-ASCII visual GUI bliss and razzle-dazzle to countless users of all descriptions, programmers themselves must still trade in primitive text-based program representations that would be familiar to time-traveling hackers from the Nixon Administration. With a handful of exceptions, today&apos;s production code would be quite at home on a keypunch (sans case). These textual accounts of programmer intent remain the canonical, authoritative representations of code, from which any supporting executable binary accounts must...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="literateprogrammingknuthtriggers" label="literate programming knuth triggers" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<div style="background-color: #C0C0C0">
<p align="center">
<em>The cobbler's children are the last to be shod.</em> 
</p>
</div>
<p>
So it is too for software developers  these days.
I'm reminded of this hoary <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/ptitleazv5ra2d">trope</a> when I think about the state of twenty-first century programming languages and technology. Because its is still very much mired / anchored in the 95-character ASCII/EBCDIC punchcard-era practices of the fifties and sixties.
</p>
<img src="http://landley.net/history/mirror/pre/punchedcards/collection/fortran.gif" align="left" hspace="5" vspace="5" width="400" alt="Punchcard"/>
<p>
This reverie was <a href="http://www.dreamsongs.com/Files/Triggers&Practice.pdf" alt="Triggers">triggered</a> by a chance Twitter sighting of a 'blog post by Canadian 
Computer Scientist <a href="http://software-carpentry.org/" alt="Greg Wilson">Greg Wilson</a> on why Donald Knuth's vision of
<a href="http://software-carpentry.org/2011/03/4069/" alt="Literate Programming">Literate Programming</a> had <u>failed</u>. 
</p>
<p>
Greg's piece resonated with me because it addresses two themes I've trotted out myself on a couple of occasions. Such is the nature of this sort of <a href="http://www.dreamsongs.com/Files/Triggers&Practice.pdf" alt="Triggers">triggering</a>.
</p>
<p>
The <strong>first</strong> is the enduring irony that, despite having delivered all manner of post-ASCII visual GUI bliss and razzle-dazzle to countless users of all descriptions, programmers themselves must still trade in primitive text-based program representations that would be familiar to time-traveling hackers from the Nixon Administration. With a handful of exceptions, today's production code would be quite at home on a keypunch (sans case). These textual accounts of programmer intent remain the canonical, authoritative representations of code, from which  any supporting executable binary accounts must be derived. For most, the vast majority, in fact, programs are ASCII characters that live in ASCII files, in directories, which these days, might be under some sort of source control, but still...
</p>
<p>
Now, one of Greg's points in his "ASCII" passage, was to remind us that Knuth's vision of integrating complex typeset annotations like equations and tables with code, and binding them to the codebase, is even now only clumsily possible using embedded HTML in "doc" comments.
</p>
<p>
And, it's true, we don't do this well. In general, tying diagrams, equations, and commentary together with code in a way that presents it conveniently along with the code so as to make it even remotely possible to <i>maintain</i> it and keep it consistent with changes to the code, is just not something one sees well supported. And given the <b>polyglot</b> nature of so many applications these days, this ASCII common denominator too often places important cross-language artifacts beyond the reach of refactoring tools that might, given a richer representation, have had a better shot at keeping such support material in sync. Think XML configuration, definition, and data files, even schema.
</p>
<img src="http://alittletourinyellow.files.wordpress.com/2012/02/cobbler.jpg" alt="Cobbler" vspace="5" hspace="5" width="250" align="right"/>
<p>
The cobbler's children lament, then, is borne of the envy that one feels over the fact that so many our customers all get to enjoy much <i>richer</i> representations of the important objects in their domains than we programmers do. 
</p>
<p>
This theme has been showing up of late when I talk about the ubiquitous 
<a href="http://www.laputan.org/mud/mud.html">Ball of Mud</a> phenomenon. These talks have come to have several "DVD" (select your own) endings, one of which explores the idea that one source of our perception of <b>muddiness</b> is the primitive tools and representations we currently employ to <strong>navigate</strong> and <strong>visualize</strong> our codebases. 
</p>
<p>
This in turn, is a partial result of working with refactoring tools developers at UIUC a few years back, where I came to believe that <b>program representation</b> is one of the most <em>interesting</em> and important unsolved problems in program language research. By this, I meant getting beyond 95-character ASCII into a <em>richer</em>, <em>round-trip</em> AST-level representation amenable to analysis, refactoring, and annotation. Such representations would need to be cast somewhere beneath text, but above the level of say, Java .class files.
</p>
<p>
This is neither a new nor an original idea, but it remains, alas, unfinished business. Ever wondered why refactoring tools for C and C++ are so slow in coming? This is part of the problem.
</p>
<p>
The <strong>second</strong> reverie that Greg triggered, which was partially reinforced by another
Twitter citation, this
<a href="http://pauladamsmith.com/articles/redis-under-the-hood.html" alt="Redis Notes">Redis Road Map</a> from <strong>Paul Smith</strong>, was this one:
</p>
<p>
One of the underlying premises of the now discredited waterfall division of labor between skilled architect/designers and rote programmer/coders was the implicit, presumably self-evident assumption that the code was <i>unreadable</i>, and that design must therefore be conveyed by "higher-level" descriptions like <strong>documents</strong> and <strong>cartoons</strong>.
</p>
<p>
Nowadays, a fundamental article of faith underlying the <em>craftmanship</em>, <em>clean code</em>, and <em>iterative, emergent design</em> communities is that the <i>code itself</i> <u>can</u> be wrought to carry the dual burden of conveying to the compiler a comprehensive set execution instructions, while at the same time communicated to at a suitable level of <strong>literacy</strong> and <strong>abstraction</strong> the details and intent of the artifacts design. A lot of stock has been placed in this conceit, so one can only hope it holds up.
</p>
<p>
It is clear that code can do so far better than the woefully minimal degree of adequacy that many shops tolerate. But the question of whether, even at our best, meticulously tended source code will be <em>enough</em> remains an open one. 
</p>]]>
        
    </content>
</entry>

<entry>
    <title>The Roots of Refactoring</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/03/post.html" />
    <id>tag:laputan.org,2011:/catfish//3.428</id>

    <published>2011-03-01T20:06:37Z</published>
    <updated>2012-06-10T19:03:56Z</updated>

    <summary> I&apos;d been of the mistaken belief that the term refactoring, while used in casual parlance during the 1980s, hadn&apos;t made it into print until the publication the seminal paper by Bill Opdyke and Ralph Johnson in 1990. Opdyke&apos;s 1992 thesis gave a more detailed account of this work. Thanks to Bill Wake for pointing out this this fully-formed treatment of the style of program revision that came to be known as refactoring in his 1984 book Thinking Forth, by Leo Brodie. And right there, on page 181, is what is, to the best of my knowledge, the first published appearance of The Word itself. Forth enjoyed a burst of popularity during the early 1980s, before the object boom. I still own a copy of Starting Forth. Alas, this is the first time I&apos;d seen this treatment of program factoring in Thinking Forth. Forth, of course, remains an ubiquitous part of our everyday lives, in the guise of a proprietary variant, Postscript, that hums along under the hood in so many of the world&apos;s printers (among other places). A tip-of-the-hat to Leo, and the refactoring pioneers of Forthdom......</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Patternalia" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="refactoringforth" label="Refactoring Forth" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<p>
I'd been of the mistaken belief that the term <b>refactoring</b>, while used in casual parlance during the 1980s, hadn't made it into print until the publication the seminal <a href="http://www.refactory.com/papers/doc_details/29-refactoring-an-aid-in-designing-application-frameworks-and-evolving-object-oriented-systems">paper</a> by <b>Bill Opdyke</b> and <b>Ralph Johnson</b> in 1990. Opdyke's 1992 <a href="http://www.laputan.org/pub/papers/opdyke-thesis.pdf">thesis</a> gave a more detailed account of this work.
</p>
<p>
Thanks to <b>Bill Wake</b> for pointing out this this fully-formed 
<a href="http://books.google.com/books?id=1AlWbXItiCYC&lpg=PA181&dq=thinking%20forth%20refactoring&pg=PA177#v=onepage&q&f=false" alt="Thinking Forth">treatment</a> of the style of program revision that came to be known as <i>refactoring</i> in his 1984 book <i>Thinking Forth</i>, by <b>Leo Brodie</b>. And right there, on page 181, is what is, to the best of my knowledge, the first published appearance of <i>The Word</i> itself.
</p>
<p>
<b>Forth</b> enjoyed a burst of popularity during the early 1980s, before the object boom. I still own a copy of <i>Starting Forth</i>. Alas, this is the first time I'd seen this treatment of program factoring in <i>Thinking Forth</i>. 
</p>
<p>
Forth, of course, remains an ubiquitous part of our everyday lives, in the guise of a proprietary variant, <i>Postscript</i>, that hums along under the hood in so many of the world's printers (among other places).
</p>
<p>
A tip-of-the-hat to Leo, and the refactoring pioneers of Forthdom...
</p>
<center>
<iframe frameborder="0" scrolling="no" style="border:0px" src="http://books.google.com/books?id=1AlWbXItiCYC&lpg=PA181&dq=thinking%20forth%20refactoring&pg=PA181&output=embed" width=500 height=500></iframe>
</center>]]>
        
    </content>
</entry>

<entry>
    <title>&quot;Real&quot; Software Engineering</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/02/vanderburg.html" />
    <id>tag:laputan.org,2011:/catfish//3.427</id>

    <published>2011-02-28T20:33:43Z</published>
    <updated>2011-03-01T22:17:23Z</updated>

    <summary> This video of a presentation by Glenn Vanderburg entitled Real Software Engineering came up last week during one of those periodic flurries of contrary opinion on Twitter regarding whether or not software development is, or is not engineering. Glenn&apos;s 51 minute talk explains why, after after having made a painstaking, convincing case that what we do do is utterly unlike what any other known engineering discipline does, he nonetheless aligns himself with the &quot;pro&quot; engineering perspective. Real Software Engineering - Glenn Vanderburg from Engine Yard on Vimeo. It&apos;s a well-prepared and delivered piece, and well worth your time. He opens by acknowledging something that anyone who has been in this field for long already knows: that the kind of Software Engineering that has been taught in Computer Science programs for the last forty years has been hopeless, comically out of touch with day-to-day software development reality. His opening examination of where &quot;Software Engineering&quot; went astray is particularly compelling; he does so by going back and examining some primary sources. For instance, the legendary NATO the 1968 meeting that established the field had some moments that seemingly foreshadowed today&apos;s Agile orthodoxy, before heading off into into the weeds for a...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="softwareengineering" label="Software Engineering" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<p>
This <a href="http://vimeo.com/16287115" alt="Real Software Engineering">video</a> of a presentation by <b>Glenn Vanderburg</b> entitled <i>Real Software Engineering</i> came up last week during one of those periodic flurries of contrary opinion on Twitter regarding whether or not <i>software development</i> is, or is not <i>engineering</i>. Glenn's 51 minute talk explains why, after after having made a painstaking, convincing case that what we do do is utterly unlike what any other known engineering discipline does, he nonetheless aligns himself with the "pro" engineering perspective. 
</p>
<center>
<iframe src="http://player.vimeo.com/video/16287115" width="400" height="225" frameborder="0"></iframe><p><a href="http://vimeo.com/16287115">Real Software Engineering - Glenn Vanderburg</a> from <a href="http://vimeo.com/engineyard">Engine Yard</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</center>
<p>
It's a well-prepared and delivered piece, and well worth your time. He opens by acknowledging something that anyone who has been in this field for long already knows: that the kind of <i>Software Engineering</i> that has been taught in Computer Science programs for the last forty years has been hopeless, comically out of touch with day-to-day software development reality.
</p>
<p>His opening examination of where "Software Engineering" went astray is particularly compelling; he does so by going back and examining some primary sources. 
For instance, the legendary
<a href="http://homepages.cs.ncl.ac.uk/brian.randell/NATO/index.html" alt="NATO">NATO</a> the 1968 meeting that established the field had some moments that seemingly foreshadowed today's Agile orthodoxy, before heading off into into the weeds for a generation the next year.
Winston Royce has evidently been saying, for 42 years, that his original
<a href="http://pascal.gugenberger.net/thoughts/waterfall-accident_assets/waterfall.pdf" alt="Waterfall">waterfall</a> paper has been tragically misunderstood. Glenn makes a good case that this is so. You may, of course, actually read the paper and decide for yourself. Parnas's <i>A Rational Design Process: How and Why to Fake it</i> is
<a href="http://web.cs.wpi.edu/~gpollice/cs3733-b05/Readings/FAKE-IT.pdf" alt="Fake It">here</a> too. Glenn has some fresh background on Parnas's use of the term "rational".
</p>
<img src="http://www.nwrain.net/~newtsuit/recoveries/narrows/gg003.jpg" alt="Galloping Gertie" hspace="5" width="300" align="right"/>
<p>
I thought I caught a welcome, albeit uncredited whiff of Petroski in the second part of the talk, where he describes how science, and art, mathematics, craft, tradition, and empiricism guide what real engineers really do. And no talk on the limits of engineering would be complete without an appearance from <i>Galloping Gertie</i>
</p>
<p>
I particularly enjoyed Glenn's treatment of of the perennial and enduring mis-perception of the roles of engineers and coders that the industry inherited from its lengthy flirtation with the waterfall model. This conceit went something like this: The "real" engineering effort involved in engineering software is in the design, not the implementation. Hence, design must be something distinct, something more demanding, than mere coding. The software engineers job then, was produce, from a given set of requirements, some artifact that could be "thrown over the wall" to the coders for "construction". 
</p>
<p>
Of course, this analogy is off. The design of the program itself is the part of this process that is akin to automotive or aircraft design. Construction, building, or fabrication is the process of reproducing the shrink-wrapped media, or invoking and executing the application over the web. For aeronautical engineers, fabricating each individual remains aircraft is quite expensive. Though software engineering began during an era of pocket-protectors and mechanical pencils where CPU were still scarce, fabrication for us now is essentially free. Given this perspective, Glenn continues, the folks dismissed as blue-collar coders in the waterfall pecking order are the <u>real</u> engineers. Because engineering is about making stuff that <i>works</i>.
And it is with this contention than Vanderburg rests his case.
</p>
<p>
Which is fine, as far as it goes. I guess, after all that, I feel less obligated to align myself with the engineering fraternity than does Glenn, given how different making software turned out to be from the other disciplines he showcased, but that's probably a matter of taste. I'm just not sure I have a dog in it. There are lots of disciplines that deliver stuff that works besides <strong>engineering</strong>: <em>cinema</em>, <em>pharmaceuticals</em>, <em>agriculture</em>, <em>bakeries</em>, <em>blacksmiths</em>, <em>composers</em>, ... I could go on. What might we yet learn by analogy from disciplines outside our mathematics and engineerings roots?
</p>
<p>
Of course, the other great unspoken truth about the software engineering tradition in Computer Science has been that software engineering has always really focused on the admittedly considerable challenges associated with managing, organizing, and yes, even leading a large, infantry scale industrial organization whose objective it is to produce software, often to the detriment of the more technical issues of interest to those in the trenches. 
</p>
<p>
Ironically, one of the successes of the Agile movement has been encourage the emergence of more antonymous "commando" scale units within the kinds of World War II Era waterfall shops that had dominated the industry. 
</p>
<p>
Indeed, these hierarchical corporate traditions, the clashes of these kinds of cultures with the agile mindset, and the daunting demands of scale are all issues that might have merited additional examination, and that continue to the contribute to the perception that software engineering is out-of-touch.
</p>



]]>
        
    </content>
</entry>

<entry>
    <title>Tests and Double-Entry Bookkeeping</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/02/double-entry-bookkeeping.html" />
    <id>tag:laputan.org,2011:/catfish//3.426</id>

    <published>2011-02-28T00:19:31Z</published>
    <updated>2011-02-27T21:47:08Z</updated>

    <summary> I came across this interview with legendary Code Hygienist Bob Martin, and want to bookmark it here before I lose it. Among the highlights was an insight that test-driven development can gain suite-cred when sold by analogy with double-entry bookkeeping. I was reminded of the early PLoP conferences where a entrepreneur and rouge scholar Dan Palanza promoted the idea of double-entry bookkeeping as pattern that he was convinced has applicability beyond the domain of accountancy. It was gratifying to see Bob showcase this useful connection between it and TDD. The discussion of codebase health metrics was useful too. Here&apos;s some information on the Braithwaite metric mentioned in the interview....</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Patternalia" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="doubleentrybookkeeping" label="Double-Entry Bookkeeping" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<img src="http://www.bookkeepingcourseshelp.com/wp-content/uploads/2011/01/double-entry-bookkeeping.jpg" alt="Double-Entry Bookkeeping" hspace="5" align="right"/>
<p>
I came across this 
<a href="http://www.scrumalliance.org/articles/300-the-land-that-scrum-forgot" alt="The Land that Scrum Forgot">interview</a> with legendary <i>Code Hygienist</i> <b>Bob Martin</b>, and
want to bookmark it here before I lose it. 
</p>
<p>
Among the highlights was an insight that test-driven development can gain suite-cred when sold by analogy with <b>double-entry bookkeeping</b>. I was reminded of the early PLoP conferences where a entrepreneur and rouge scholar <b>Dan Palanza</b> promoted the idea of double-entry bookkeeping as pattern that he was convinced has applicability beyond the domain of accountancy. It was gratifying to see Bob showcase this useful connection between it and TDD. 
</p>
<p>
The discussion of codebase health metrics was useful too. 
Here's some information on the <a href="http://www.keithbraithwaite.demon.co.uk/professional/presentations/2008/qcon/MeasureForMeasure.pdf" alt="Braithwaite Metric">Braithwaite</a> metric mentioned in the interview.
</p> ]]>
        
    </content>
</entry>

<entry>
    <title>Refactoring&apos;s Original Sin: Part II</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/02/refactorings-original-sin-part.html" />
    <id>tag:laputan.org,2011:/catfish//3.425</id>

    <published>2011-02-27T04:30:40Z</published>
    <updated>2011-02-27T19:11:28Z</updated>

    <summary> Part I of this piece made the case that Refactoring&apos;s Original Sin was having allowed Refactoring to come to be perceived as completely cosmetic elective surgery. Worse yet, the resulting improvements benefited only the innards of your application, not the parts the users see. Even as early as the early nineties, there was a recognition that allowing refactoring to be become pigeonholed as an unproductive polishing pass could do injustice to the cause of the kind of iterative, incremental design.process that we&apos;d become accustomed to working in Smalltalk. We did make several attempts to characterize this approach as a integrated iterative, incremental process in which design pervaded the object lifecyle. A few years earlier, Lehman and Belady had observed that while design was an entropy decreasing process, maintenance was an entropy increasing process, that inevitable eroded structure. Yet, somehow, the Smalltak image had avoided this fate, and the development style we&apos;d vicariously absorbed working with Smalltalk was seemingly allowing our code to do so as well. The way this worked was that, as you added new code, you&apos;d keep an eye peeled for opportunities to better integrate it with the code around you. And then ... take them. This...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="refactoring" label="Refactoring" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<img src="http://www.laputan.org/images/pictures/makeover.jpg" alt="Makeover" hspace="5"  align="right"/><p>
<a href="http://laputan.org/catfish/2011/02/refactorings-original-sin.html" alt="Part I">Part I</a> of this piece made the case that <i>Refactoring's Original Sin</i> was having allowed <b>Refactoring</b> to come to be perceived as <i><b>completely cosmetic elective surgery</b></i>. Worse yet, the resulting improvements benefited only the <i>innards</i> of your application, <u>not</u> the parts the users see.
</p>
<p>
Even as early as the early nineties, there was a recognition that allowing <i>refactoring</i> to be become pigeonholed as an unproductive polishing pass could do injustice to the cause of the kind of <b>iterative, incremental design</b>.process that we'd become accustomed to working in Smalltalk.
</p>
<p>
We did make several attempts to characterize this approach as a <i>integrated iterative, incremental</i> process in which <b>design</b> <i>pervaded</i> the object lifecyle. A few years earlier, Lehman and Belady had observed that while <b>design</b> was an entropy <i>decreasing</i> process, <b>maintenance</b> was an entropy <i>increasing</i> process, that inevitable eroded structure. 
</p>
<p>
Yet, somehow, the Smalltak image had avoided this fate, and the development style we'd vicariously absorbed working with Smalltalk was seemingly allowing our code to do so as well. The way this worked was that, as you added new code, you'd keep an eye peeled for <i>opportunities</i> to better integrate it with the code around you. And then ... <u>take</u> them. This casual, continual shift in focus from <b>function</b> to <b>form</b> and back again helped to forestall the kind of death-by-duct tape that seemed so unavoidable when working on classical code. And I think it was fair to say that it was by cultivating these form-focused improvements to the structure, clarity and presentation of the code <i>by hand</i> that we learned what <i>refactorings</i> were.
</p>
<p>
For instance, we trotted out an extended abstract
<a href="http://www.laputan.org/frameworks/fractal.html" alt="Fractal Model">A Fractal Model of the Lifecycles of Reusable Objects</a> at a few workshops during the early nineties. Conceived as a wry variation on Boehm's Spiral Model, it sketched a three phase scheme whereby an <i>Initial Prototype</i> formed the nucleus of a system that was organically grown through a succession of fine-grained, opportunistic <i>Expansion</i> and <i> Consolidation</i> phases. <i>Expansion</i> had an exploratory focus, and explicitly tolerated a certain degree of structural erosion in the cause of mastering <b>functionality</b>. 
</p>
<p>
<i>Consolidation</i> on the other hand, was a <b>form</b> focused phase in which opportunities to harvest the benefits of <i>hindsight</i> were exploited to repair any damage done during prior expansions and ensure the application was poised to address the challenges to come. Anywhere in the universe, counteracting entropy requires an investment of countervailing energy, and it was here that that entropy reduction was done.
</p>
<p>
By PLoP '94, <b>Bill Opdyke</b> and I had put together a somewhat more detailed treatment of this material that tried to cast <b>Refactoring</b> in the context of this this kind of process:
<a href="http://www.laputan.org/lifecycle/Lifecycle.html" alt="Lifecycle and Refactoring Patterns">Lifecycle and Refactoring Patterns that Support Evolution and Reuse</a>. One goal of this work was to once again underscore the idea that refactoring should normally be an integral part of incremental development, not a coarse-grained recovery project. Which is not to say that such an effort might not be called for if a codebase had gone badly to seed, but that with conscientious cultivation the need for major reclamation efforts could be prevented. 
</p>
<img src="http://www.laputan.org/images/pictures/northridge.gif" alt="Software Tectonics" hspace="5" width="300" align="right"/>
<p>
Our PLoP '95 <a href="http://www.laputan.org/metamorphosis/metamorphosis.html#SoftwareTectonics" alt="Software Tectonics">Software Tectonics</a> idea can be seen in this light: entropic stress accumulating in a system risks release with increasingly severe power-law consequences.
</p>
<p>
By then <b>Refactoring</b> was poised to become a household word, among hackers, anyway. <b>John Brant</b> and <b>Don Roberts</b> were already working on the first practical automated refactoring tool for Smalltalk, <b>Martin Fowler</b> was soon to embark on a landmark cataloging effort that would, in turn, give <b>Erich Gamma</b> a roadmap that would lead to the refactoring facilities of the Eclipse JDT. And <b>Kent Beck</b> and his cohorts were soon to deem <b>Refactoring</b> as one of the pillars of eXtreme Programming.
</p>
<p>
So, one of the reasons that Martin's <a href="http://martinfowler.com/bliki/TradableQualityHypothesis.html">TradableQualityHypothesis</a> piece resonated with me so deeply is that this is precisely the kind of perception battle I still find myself in when discussing <b>Refactoring</b> to this day. Our inability to have <b>framed</b> it as an integral, fundamental, indispensable element of a continuous, organic design and development process has left code quality and the kind of poised responsive, adaptive posture in the face of change that than makes possible, vulnerable to the remorseless whims of the budget axe.
</p>
<p>
There is <u>still</u> work to be done.
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Brownfield Software</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/02/the-mudbuster-chronicles-josh.html" />
    <id>tag:laputan.org,2011:/catfish//3.424</id>

    <published>2011-02-27T02:08:59Z</published>
    <updated>2011-03-01T01:02:08Z</updated>

    <summary> I spent an informative 51 minutes yesterday watching this InfoQ video presentation on Brownfield Software: Industrial Waste or Business Fertilizer by Josh Graham of Thoughtworks. Josh describes an intensive, heroic effort to bring a large, festering, vintage 1997 legacy Java system under control. Among the highlights: his admonition that, no matter how great the temptation may be, avoid the urge to rip out those homebrew frameworks and replace them with more modern, standard ones. The testimonials from the theretofore downtrodden hackers who&apos;d been pinned down in the trenches on this project were touching as well. Oh yeah, and they used AOP too. For logging, naturally.... They also spoke of the indispensability of engineers with superior textual skills in an environment like this, which, I gather, means the kinds of folks who for whatever reason are able to make some sense out of code most of us would find hopelessly inscrutable....</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="brownfieldlegacy" label="Brownfield Legacy" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<img src="http://www.srwenvironmental.com/uploads/2/Image/project_images/P1010195.JPG"
align="right" hspace="5" width="300"/>
<p>
I spent an informative 51 minutes yesterday watching this 
<a href="http://www.infoq.com" alt="InfoQ">InfoQ</a> video presentation on
<a href="http://www.infoq.com/presentations/Brownfield-Software">Brownfield Software: Industrial Waste or Business Fertilizer</a>
by <b>Josh Graham</b> of <i>Thoughtworks</i>.
</p>
<p>
Josh describes an intensive, heroic effort to bring a large, festering, vintage 1997 legacy Java system under control. 
</p>
<p>
Among the highlights: his admonition that, no matter how great the temptation may be, avoid the urge to rip out those <i>homebrew frameworks</i> and replace them with more modern, standard ones.
</p>
<p>
The testimonials from the theretofore downtrodden hackers who'd been pinned down in the trenches on this project were touching as well.
</p>
Oh yeah, and they used AOP too. For <i>logging</i>, naturally....
</p>
<p>
They also spoke of the indispensability of engineers with superior <i>textual</i> skills in an environment like this, which, I gather, means the kinds of folks who for whatever reason are able to make some sense out of code most of us would find hopelessly inscrutable.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Kakonomics</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/02/the-mudbuster-chronicles-kakon.html" />
    <id>tag:laputan.org,2011:/catfish//3.423</id>

    <published>2011-02-26T03:43:52Z</published>
    <updated>2011-02-27T03:05:52Z</updated>

    <summary> Came across this blog entry by Gloria Origgi, courtesy of a tweet from @ronjeffries on Kakonomics: or The Strange Preference for Low-Quality Outcomes. The piece opines that in many systems, a state of collusive mediocrity can emerge and persist between agents, whereby an exchange of low quality outcomes and minimal rewards is mutually tolerated as part an Evolutionarily Stable Strategy. It&apos;s easy to imagine this sort of low-expectations relationship emerging between an IT organization and mud maintainers, and how it might account for the kind of neglect some codebases must seemingly endure. The relationship between coder and code itself might lend themselves to this sort of analysis along the lines of Joshua Kerievsky&apos;s notions of Sufficient Design. One wishes the author had opted for a different name. I can almost hear every preschooler (and preschooler-at-heart) in the room giggle each time I read it....</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="kakonomics" label="Kakonomics" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[
<img src="http://www.edge.org/3rd_culture/origgi06/images/origgi300.jpg" align="right" hspace="5"/>
<p>
Came across this blog entry by
<a hef="http://www.edge.org/3rd_culture/bios/origgi.html">Gloria Origgi</a>, courtesy of a tweet from 
<a href="http://twitter.com/#!/RonJeffries" alt="@RonJeffries">@ronjeffries</a> on 
<a href="http://gloriaoriggi.blogspot.com/2011/01/kakonomics-or-strange-preference-for.html">Kakonomics: or The Strange Preference for Low-Quality Outcomes</a>.
</p>
<p>
The piece opines that in many systems, a state of <i>collusive mediocrity</i> can emerge and persist between agents, whereby an exchange of low quality outcomes and minimal rewards is mutually tolerated as part an <i>Evolutionarily Stable Strategy</i>.
</p>
<p>
It's easy to imagine this sort of low-expectations relationship emerging between an IT organization and mud maintainers, and how it might account for the kind of neglect some codebases must seemingly endure.
</p>
<p>
The relationship between coder and code itself might lend themselves to this sort of analysis along the lines of <b>Joshua Kerievsky's</b> notions of 
<a href="https://elearning.industriallogic.com/gh/submit?Action=PageAction&album=blog2009&path=blog2009/2010/sufficientDesign&devLanguage=Java" alt="Sufficient Design">Sufficient Design</a>.
</p>
<p>
One wishes the author had opted for a different name. I can almost hear every preschooler (and preschooler-at-heart) in the room giggle each time I read it.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Refactoring&apos;s Original Sin: Part I</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/02/refactorings-original-sin.html" />
    <id>tag:laputan.org,2011:/catfish//3.422</id>

    <published>2011-02-24T01:46:01Z</published>
    <updated>2011-02-27T23:52:17Z</updated>

    <summary> Before there was Refactoring there was refactoring. There were people who refactored just fine before Refactoring was invented. I remember right well. I remember back during the late 1980s, the OOPSLA-era Object boom was in full bloom. I had joined a new research group led by Ralph Johnson at the University of Illinois at Urbana-Champaign. And some of us were availing ourselves of the privilege of getting the best apprenticeship in object-oriented programming a body could ever get: spelunking around the PARC Smalltalk-80 codebase. Here we found code that had clearly been crafted by insanely bright, committed pioneers who had stuck with it, lived amongst it, inhabited it, as they acknowledged themselves, polished it and cultivated it. And incrementally improved it. It was clear to anyone who visited the place, and it felt like a place, that the kind of code you were browsing was the fruit of a patient, sustained, collaborative process of cultivation. All the code was there. You were free to roam, and explore as you pleased. It was a place that enticed you to join it. Smalltalk development enticed one to &quot;go native&quot;, like Gauguin&apos;s Tahiti. And you grew and cultivated your code next to...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="refactoring" label="Refactoring" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<p>
Before there was <b>Refactoring</b> there was <i>refactoring</i>. There were people who <i>refactored</i> just fine before <b>Refactoring</b> was invented.
</p>
<p>
I remember right well. 
</p>
<p>
I remember back during the late 1980s, the OOPSLA-era Object boom was in full bloom. I had joined a new research group led by <b>Ralph Johnson</b> at the University of Illinois at Urbana-Champaign. And some of us were availing ourselves of the privilege of getting the best apprenticeship in object-oriented programming a body could ever get: spelunking around the <b>PARC Smalltalk-80</b> codebase.
</p>
<img src="http://fineartamerica.com/images-medium/gauguin-tahiti-1891-granger.jpg" align="right" hspace="5" width="400" alt="Gauguin and Tahiti"/>
<p>
Here we found code that had clearly been <i>crafted</i> by insanely bright, committed pioneers who had stuck with it, lived amongst it, inhabited it, as they acknowledged themselves, polished it and cultivated it. 
And <i>incrementally</i> improved it. It was clear to anyone who visited the place, and it felt like a <i>place</i>, that the kind of code you were browsing was the fruit of a patient, sustained, collaborative process of cultivation. <i>All</i> the code was <u>there</u>. You were free to roam, and explore as you pleased.
</p>
<p>
It was a place that enticed you to join it. Smalltalk development enticed one to "go native", like <b>Gauguin's Tahiti</b>. And you grew and cultivated your code next to theirs, and when you saw an opportunity to improve it, you did. And your code grew better too.
</p>
<p>
Of course, even then, during the dusk of the Cold War, not every working programmer left every first draft untouched. If you were overconscientious, you might routinely do this as part-and parcel of bringing an implementation into being. Sometimes these ideas would come into focus once the code was actually on-the-air. In those days, when you wanted to improve the design of a chunk of existing code, you said you were going to <i>clean it up</I>, or take a final <i>polish</i> pass over it, or maybe <i>tidy it up</i> a bit. An enlightened boss might tolerate such an indulgence at the end of a successful push. But even then, the suspicion that you might be engaging in self-indulgent <i>lily-gilding</i> was never far behind. 
</p>
<p>
Often, your focus would be strictly on improving the code's <i>clarity</i> or <i>structure</i>, or <i>aesthetics</i> without changing the way it worked at all. By analogy with number theory, one could casual describe a reworked or improved version as being better <i>factored</i> than its predecessor. It became natural to describe the newer take as a <b>refactored</b> version of the older one, and more broadly, to describe this kind of focused improvement activity as <b>refactoring</b>. Still, this most often was less a distinct phase that an acute, opportunistic shift of focus. It was typically part of preparing the groundwork for some subsequent <i>functional</i> improvement.
</p>
<p>
And so it came to pass that in the early days of the reign of <i>George Bush the Elder</i>, <b>Bill Opdyke</b> and <b>Ralph Johnson</b> set about the task of cataloging some of these <I>Things You Could Do to Programs that Didn't Change The Way They Worked But Made them Better</i>, with an eye towards seeming studying them more formally, and seeing whether they could be automated. And <i>refactoring</i> became <b>Refactoring</b>, with a Capital-<b>R</b>. 
</p>
<p>
A <b>Refactoring</b> became a much more narrowly cast <i>behavior-preserving program transformation</i>, which served their research agenda fine, but cast the broader, more casual usage to the side. <b>Refactoring</b>, the activity, had henceforth to be one in which <i>only</i> such sorts of transformation were to applied. A <b>distinct</b> activity.
</p>
<p>
Subsequent authors, such as <b>Martin Fowler</b> (<i>Refactoring</i>) and <b>Joshua Kerievsky</b> (<i>Refactoring to Patterns</i>), have probably inadvertently reinforced this impression with their detailed focus on the surgical tactics and skills required to accomplish particular Refactorings, at times seemingly at the expense of broader, more holistic therapeutic approaches to day-to-day codebase health maintenance.
</p>
<img src="http://www.laputan.org/images/pictures/adam.jpg" align="right" hspace="5" alt="Adam and Eve"/>
So, what was <b>Refactoring's Original Sin</b>? Letting the idea be framed as a distinct <i>phase</i>, a polishing pass, an optional brush up, where working code was turned into "higher quality" working code that worked the same way as the original working code.
Framed this way, this <u>could</u> sound like an utterly optional spasm of indulgent, flamboyant, narcissistic navel gazing by self-indulgent prima-dona programmers, rather than a inherent, indispensable, vital element of a process that cultivated the growth and sustained health of both the codebase <u>and</u> the team.
</p>
<p>
The problem with "refactoring" is that <i>refactoring</i> is not a bad name for <b>Refactoring</b> proper, but that the idea has always cast a wider shadow, in part because of its gestation in precisely the kinds of iterative incremental incubators we nostalgically recalled above.
</p>
<p>
As a result of having framed in this fashion, the perception persist to this day that <i>refactoring</i> is a distinct, coarse-grained, and dispensable  luxury, rather than a natural, inherent, integral part of a healthy, sustainable development process.
</p>
<p>
The problem is that the <i>refactoring</i> process in which <b>Refactoring</b> plays this indispensable role, and the value of the resulting code, have never been really <i>properly</i> framed.
</p>
<p>
And a consequence of this is that <i>refactoring</i> <u>itself</u> becomes a casualty in precisely
the kinds of <a href="http://martinfowler.com/bliki/TradableQualityHypothesis.html">TradableQualityHypothesis</a> triage games that the <b>Martin Fowler</b> piece that triggered this one so eloquently showcased.
</p>


]]>
        
    </content>
</entry>

<entry>
    <title>Presidents Day 2011</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2011/02/presidents-day-2012.html" />
    <id>tag:laputan.org,2011:/catfish//3.421</id>

    <published>2011-02-22T03:18:08Z</published>
    <updated>2011-02-22T06:19:13Z</updated>

    <summary> The Dynasties of America --&gt; 1George IGeorge Washington 2John IJohn Adams 3Thomas IThomas Jefferson 4James IJames Madison 5James IIJames Monroe 6John IIJohn Quincy Adams 7Andrew IAndrew Jackson 8Martin IMartin Van Buren 9William IWilliam Henry Harrison 10John IIIJohn Tyler 11James IIIJames Knox Polk 12Zachary IZachary Taylor 13Millard IMillard Filmore 14Franklin IFranklin Pierce 15James IVJames Buchanan 16Abraham IAbraham Lincoln 17Andrew IIAndrew Johnson 18Ulysses IUlysses Simpson Grant 19Rutherford IRutherford Birchard Hayes 20James VJames Abram Garfield 21Chester IChester Alan Arthur 22Stephen IStephen Grover Cleveland 23Benjamin IBenjamin Harrison 24Stephen IStephen Grover Cleveland 25William IIWilliam McKinnley 26Theodore ITheodore Roosevelt 27William IIIWilliam Howard Taft 28Thomas IThomas Woodrow Wilson 29Warren IWarren Gamaliel Harding 30John IVJohn Calvin Coolidge 31Herbert IHerbert Clark Hoover 32Franklin IIFranklin Delano Roosevelt 33Harry IHarry S. Truman 34Dwight IDwight David Eisenhower 35John VJohn Fitzgerald Kennedy 36Lyndon ILyndon Baines Johnson 37Richard IRichard Milhous Nixon 38Gerald IGerald Rudolph Ford 39James VIJames Earl Carter, Jr. 40Ronald IRonald Wilson Reagan 41George IIGeorge Herbert Walker Bush 42William IVWilliam Jefferson Clinton 43George IIIGeorge Walker Bush 44Barack IBarack Hussein Obama This page began as: Some Ruminations on History, and on our American Regents, on the occasion of the second Coronation of His Imperial Majesty George III back in 2005. I remain fond,...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Politics and Religion" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<table align="right" border="0" cellpadding="2" bgcolor="#C0C0C0">
<!-- <caption><em>The Dynasties of America</em></caption> -->
<tr><td>1</td><th>George I</th><td>George Washington</td></tr>
<tr><td>2</td><th>John I</th><td>John Adams</td></tr>
<tr><td>3</td><th>Thomas I</th><td>Thomas Jefferson</td></tr>
<tr><td>4</td><th>James I</th><td>James Madison</td></tr>
<tr><td>5</td><th>James II</th><td>James Monroe</td></tr>
<tr><td>6</td><th>John II</th><td>John Quincy Adams</td></tr>
<tr><td>7</td><th>Andrew I</th><td>Andrew Jackson</td></tr>
<tr><td>8</td><th>Martin I</th><td>Martin Van Buren</td></tr>
<tr><td>9</td><th>William I</th><td>William Henry Harrison</td></tr>
<tr><td>10</td><th>John III</th><td>John Tyler</td></tr>
<tr><td>11</td><th>James III</th><td>James Knox Polk</td></tr>
<tr><td>12</td><th>Zachary I</th><td>Zachary Taylor</td></tr>
<tr><td>13</td><th>Millard I</th><td>Millard Filmore</td></tr>
<tr><td>14</td><th>Franklin I</th><td>Franklin Pierce</td></tr>
<tr><td>15</td><th>James IV</th><td>James Buchanan</td></tr>
<tr><td>16</td><th>Abraham I</th><td>Abraham Lincoln</td></tr>
<tr><td>17</td><th>Andrew II</th><td>Andrew Johnson</td></tr>
<tr><td>18</td><th>Ulysses I</th><td>Ulysses Simpson Grant</td></tr>
<tr><td>19</td><th>Rutherford I</th><td>Rutherford Birchard Hayes</td></tr>
<tr><td>20</td><th>James V</th><td>James Abram Garfield</td></tr>
<tr><td>21</td><th>Chester I</th><td>Chester Alan Arthur</td></tr>
<tr><td>22</td><th>Stephen I</th><td>Stephen Grover Cleveland</td></tr>
<tr><td>23</td><th>Benjamin I</th><td>Benjamin Harrison</td></tr>
<tr><td>24</td><th>Stephen I</th><td>Stephen Grover Cleveland</td></tr>
<tr><td>25</td><th>William II</th><td>William McKinnley</td></tr>
<tr><td>26</td><th>Theodore I</th><td>Theodore Roosevelt</td></tr>
<tr><td>27</td><th>William III</th><td>William Howard Taft</td></tr>
<tr><td>28</td><th>Thomas I</th><td>Thomas Woodrow Wilson</td></tr>
<tr><td>29</td><th>Warren I</th><td>Warren Gamaliel Harding</td></tr>
<tr><td>30</td><th>John IV</th><td>John Calvin Coolidge</td></tr>
<tr><td>31</td><th>Herbert I</th><td>Herbert Clark Hoover</td></tr>
<tr><td>32</td><th>Franklin II</th><td>Franklin Delano Roosevelt</td></tr>
<tr><td>33</td><th>Harry I</th><td>Harry S. Truman</td></tr>
<tr><td>34</td><th>Dwight I</th><td>Dwight David Eisenhower</td></tr>
<tr><td>35</td><th>John V</th><td>John Fitzgerald Kennedy</td></tr>
<tr><td>36</td><th>Lyndon I</th><td>Lyndon Baines Johnson</td></tr>
<tr><td>37</td><th>Richard I</th><td>Richard Milhous Nixon</td></tr>
<tr><td>38</td><th>Gerald I</th><td>Gerald Rudolph Ford</td></tr>
<tr><td>39</td><th>James VI</th><td>James Earl Carter, Jr.</td></tr>
<tr><td>40</td><th>Ronald I</th><td>Ronald Wilson Reagan</td></tr>
<tr><td>41</td><th>George II</th><td>George Herbert Walker Bush</td></tr>
<tr><td>42</td><th>William IV</th><td>William Jefferson Clinton</td></tr>
<tr><td>43</td><th>George III</th><td>George Walker Bush</td></tr>
<tr><td>44</td><th>Barack I</th><td>Barack Hussein Obama</td></tr>
</table>
<p>
This page began as: <i>Some Ruminations on History, and on our <b>American Regents</b></i>, on the occasion of the <a hef="http://www.whitehouse.gov/news/releases/2005/01/20050120-1.html" title="Go right to the source...">second</a> Coronation of His Imperial Majesty <b>George III</b>  back in 2005.
</p>
<p> 
I remain fond, as a nominal UK native, raised in the USA, of this idea of numbering American Presidents as if they were real Monarchs.
And, this page has been overdue for a touch-up, after all we witnessed, over two years ago, to condign fanfare, the Coronation of <b>Barack I</b>. In keeping with the original theme of this page, it is worth noting that while tales of descent from African kings that <b>Barack I</b> was told as a boy turned out to have been apocryphal, he may well be able to claim descent, on his mother's side, from a Scottish king, and shared 
<a href="http://www.suite101.com/content/how-obama-is-kin-to-7-presidents-and-2-kings-a124948">ancestry</a> with as many as seven American regents.
</p>
<img src="http://www.visitingdc.com/images/barack-obama-picture.jpg" align="left" width="100" hspace="5" alt="Barack I">
<p>
In 1789, our first president under our current constitution, <b>George I</b>, effectively succeeded British king <b>George III</b>, of the <i>House of Hanover</i>, as America's supreme authority. Britain's <b?George III</b>, of course, saw his legacy tarnished when he allowed his military become entangled in a stubborn insurgency in a distant part of the empire that didn't quite turn out the way he had planned. There have been two more homegrown Georges, now, since then. We've effectively come full circle.
</p>
<img src="http://www.laputan.org/images/pictures/george-iii.jpg" align="right" width="100" hspace="5" alt="George III">
<p>
Reckoning time in terms of the reigns of one's country's <a href="http://www.ipl.org/div/potus/">regents</a> is a time-honoured Anglo-Saxon tradition, I'm told, and one I've informally observed without thinking about it myself over the years. "That technology was already considered obsolete during the Nixon Administration", would be the kind of thing I'd find myself saying.
</p>
<p>
I'm amused by the idea of naming our <i>Heads of State</i> in the same traditional manner as <a href="http://www.newadvent.org/cathen/12272b.htm">Popes</a> and <a href="http://www.britannia.com/history/h6f.html">Kings</a>, using a single <i>Christian Name</i>, and a <i>Roman Numeral</i>. The results of doing so to America's <a href="http://en.wikipedia.org/wiki/Historical_rankings_of_U.S._Presidents">forty-three</a> regents are shown in the table to the right. Doing so gives one pause, and causes one to ponder the considerable imperial trappings of the American presidency.
</p>
<img src="http://www.laputan.org/images/pictures/george-i.jpg" align="left" width="100" hspace="5" alt="George I">
<p>
We have witnessed no fewer than <u>five</u> true cases of dynastic succession, accounting for fully ten of <a href="http://www.whitehouse.gov/history/presidents/">forty-three</a> reigns. It is difficult indeed to fathom how such numbers could have arisen by chance, or even through merit.
</p>
<p>
Our first dynasty, the <i>House of Adams</i>, saw the son of <b>John I</b>, <b>John II</b> retake the throne in 1825. 
</p>
<p>
The second, the <i>House of Harrison</i>, witnessed the ascension of <b>Benjamin I</b>, the grandson of <b>William I</b> in 1889. 
</p>
<p>
In 1893, the <i>Cleveland Restoration</i> saw <b>Stephen I</b> reclaim the throne himself  from <b>Benjamin I</b>, whom had in turn taken it from him. 
</p>
<p>
In 1933, the inauguration of <b>Franklin II</b>, a <a href="http://www.gwu.edu/~erpapers/abouteleanor/q-and-a/q6.htm">cousin</a> of <b>Theodore I</b> returned the <i>House of Roosevelt</i> to power. Interestingly, even though <b>Franklin II</b> and <b>Theodore I</b> themselves were fifth cousins, <b>Franklin II's</b> consort, <b><i>Anna Eleanor</b></i>, was herself a <i>Roosevelt</i>, and indeed, was the niece of <b>Theodore I</b>. The <a href="http://www.msu.edu/course/lbs/333/fall/hapsburglip.html">Hapsburgs</a>, and <a href="http://www.generations.on.ca/genealogy/pedigree.htm">Europe</a>, held no monopoly on aristocratic inbreeding, it would seem.
</p>
<p>
<b>Martin I</b> was of purely Dutch ancestry. He and his wife Spoke Dutch at home. <b>Martin I</b> and <b>Theodore I</b> <a href="http://www.geocities.com/presfacts/vanburen.html
">were</a> third cousins twice removed.
</p>
<p>
The ghastly murder of the youthful, urbane and widely admired Irishman <b>John V</b> in 1963 brought <b>Lyndon I</b> to the throne, but this reestablished no <i>Johnson</i> dynasty, for he was of no relation whatsoever to <b>Andrew II</b>. The <i>House of Johnson</i> is a <u>false</u> dynasty. 
</p>
<p>
Indeed <b>Andrew II</b>.and <b>Lyndon I</b> are among only a relative handful of those who have occupied the throne whom are not at least distant <a href="http://library.thinkquest.org/TQ0312172/cousins.html">cousins</a> to at least some of the others who've sat upon it. The other <i>American Commoners</i>: <b>Andrew I</b>, <b>James III</b>, <b>Chester I</b>, <b>William III</b>, <b>Dwight I</b>, <b>John V</b>, <b>James VI</b>, <b>Ronald I</b>, and <b>William IV</b>. <b>James VI</b> is related, however, to <u>genuine</u> indigenous <i>American Royalty</i>: Elvis Presley. 
</p>
<img src="http://www.laputan.org/images/pictures/gb41.gif" align="left" width="115" hspace="5" alt="George II">
<p>Finally, the <a hef="http://www.whitehouse.gov/news/inaugural-address.html">first</a> Coronation of <b>George III</b>, the son of <b>George II</b>, and the scion of the <i>House of Bush</i>, in 2001, consummated America's first father-son dynastic succession since the restoration of the <i>Adams</i> Family. Barbara <i>Pierce</i> Bush, the consort of <b>George II</b>, and mother to <b>George III</b>, is herself a distant <a href="http://www.bearhaven.com/family/cousin/barbara.html">cousin</a> of <b>Franklin I</b>.
</p>
<img src="http://www.laputan.org/images/pictures/george-bush-picture-4.jpg" width="100" hspace="5" vspace="5" align="right" alt="George III">
<p>
Our coronations are traditionally the occasions where we put aside the rancor and division that accompany our often contentious imperial ascension process, and 2005 we united behind, and swore our allegiance to <b>George III</b>, he having prevailed over both a challenger (the would-be <i><b>Albert I</b></i>), and an usurper (an aspiring <i><b>John VI</b></i>) to lay claim to his crown. 
</p>
<p>
<b>Barack I</b> took his crown in 2009 by vanquishing a fellow son of a Scottish King <a href="http://www.telegraph.co.uk/news/worldnews/1575595/McCain-and-Obama-share-royal-lineage.html">William I</a> and yet another prospective <i><b>John VI</b></i>.
</p><p>
Were we more like say, the <a href="http://en.wikipedia.org/wiki/United_Kingdom">United Kingdom of Great Britain and Northern Ireland</a>, we'd further festoon his <a href="http://www.thenation.com/docprint.mhtml?i=20010326&s=contest">title</a> with such honourifics as <I>Monarch of the Forty-Eight Contiguous United States of America and Alaska and Hawaii</i>, <i>Defender of the Faith</i>, and <i>Emperor of Mesopotamia</i>, but we Americans are an egalitarian lot, and tend to eschew such airs and pretensions.
</p>
<hr />
<p>
Despite the fact that the United States is nominally a <a href="http://www.house.gov/Constitution/Constitution.html">constitutional</a> republic, and not a monarchy, <i>eight</i> of America's <i>forty-two</i> regents have, tragically, and ironically, nonetheless (inadvertently, one must presume) enjoyed the imperial prerogative that a King (all have been male) may serve for <u>life</u>. Four, <b>William I</b>, <b>Zachary I</b>, <b>Warren I</b>, and <b>Franklin II</b> (our longest serving regent), died on the throne of natural causes. 
</p>
<img src="http://www.laputan.org/images/pictures/jug.jpg" hspace="5" vspace="5" align="left" alt="The Old Brown Jug">
<p>
We have, sadly, witnessed four regicides in the course of our brief history. <b>Abraham I</b>, <b>James V</b>, <b>William II</b>, and <b>John V</b>, all saw their reigns brought to an end by assassin's bullets. In 1981, <b>Ronald I</b> was shot and severely wounded, and nearly followed suit, but for timely medical attention. Indeed, historians believe that both <b>James V</b> and <b>William II</b> could have survived their wounds given better medical care.
</p>
<p>
<b>Gerald I</b>, and <b>Harry I</b> both survived assassination attempts unscathed while on the throne. <b>Franklin II</b> survived an assassination attempt unharmed during the interregnum prior to his coronation. <b>Theodore I</b> was shot, but survived during his Bull Moose campaign to restore the <i>House of Roosevelt</i> in 1912, a battle that split the Tories between him and <b>William III</b>, thereby paving the way for the eventual ascension of the scholarly pacifist <b>Thomas II</b>.
</p>
<p>
There are many who believe that only assassin's bullets and scandal thwarted the dynastic ambitions of the <i>House of Kennedy</i> and the eventual elevation of <b>John IV's</b> siblings <b><i>Robert I</b></i>, and/or perhaps even <b><i>Edward I</i></b> to the throne. The untimely death of Kennedy Crown Prince, and paparazzi favorite, <i>John Jr.</i> in 1999 further diminished the family's dynastic potential.
</p>
<p>
Amendment XXII to the constitution effectively limited the reign of any given individual to no more than ten years. Even before this, reigns were customarily short, especially by comparison with European standards, in keeping with the precedent set by <b>George I</b>. For example, the reign of <a href="http://www.royal.gov.uk/output/Page118.asp" title="From the Horse's Mouth...">Queen Victoria</a> spanned those of fully eighteen American regimes, from <b>Martin I</b>, through <b>William II</b>. Indeed, <b>Franklin II</b> was widely excoriated for breaking <b>George I's</b> precedent, and his breach thereof helped lead to the passage of the twenty-second amendment.
</p>
<img src="http://www.laputan.org/images/pictures/spiro_t_agnew.jpg" width="100" hspace="5" vspace="5" align="right" alt="Spiro I">
<p>
One regent, <b>Richard I</b>, was forced to abdicate in 1974. Alas, not for love. His successor, <b>Gerald I</b>, thereupon became America's first utterly unelected Head of State, having been appointed, not elected to the rank of <i>Vice-President of the Realm</i>, after the heir apparent who would have been <i><b>Spiro I</b></i> was forced to abdicate in disgrace, restoring at last the sacred principle of rule by <i>Divine Right</i>.
</p>
<hr />
<pre><a href="http://ingeb.org/songs/godsaveo.html" title="See all six verses here..."><b>God Save the King</b></a>

<i>O Lord our God arise,
Scatter his enemies
And make them fall;
Confound their politics,
Frustrate their knavish tricks,
On Thee our hopes we fix,
God save us all!</i></pre>
<hr />
<h6> &copy; 2005, 2011 by The Laputan Press, Ltd.</h6>
<hr/>
<p>
In keeping with the spirit of <a href="http://www.laputan.org/catfish/">Catfish in the Memepool</a>, I've located another 'blog where huge swaths of this notion had emerged quite independently in an at times uncannily similar <a href="http://www.cannells.com/colin/archives/god_save_the_elected.php">manner</a>. I'm grateful to this site's author for his superior research into the Christian <a href="http://www.americanpresident.org/history/">names</a> for <b>Stephen I</b>, <b>Thomas II</b>, and <b>John IV</b>. <a href="http://forumserver.twoplustwo.com/showthreaded.php?Cat=&Number=3032421&page=8&view=collapsed&sb=5&o=&fpart=1">Here</a> is another hit. <a href="http://www.burkes-peerage.net/sites/america/sitepages/page73-3.asp">Here</a> is a fascinating rundown on the ancestry of the presidents from Burke's Peerage.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Federation Council Calls for Replicator Technology Repatriation</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2009/07/federation-council-calls-for-r.html" />
    <id>tag:laputan.org,2009:/catfish//3.416</id>

    <published>2009-07-23T00:10:33Z</published>
    <updated>2012-05-04T00:40:31Z</updated>

    <summary> Federation Council calls for repatriation of vital replicator technology it allowed the Ferengi to sell to the Romulans......</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<p>
Federation Council calls for 
<a href="http://hbr.harvardbusiness.org/2009/07/restoring-american-competitiveness/ar/1">repatriation</a> of vital replicator technology it allowed the Ferengi to sell to the Romulans... 
</p>]]>
        
    </content>
</entry>

<entry>
    <title>On the GMail Release</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2009/07/on-the-gmail-release.html" />
    <id>tag:laputan.org,2009:/catfish//3.415</id>

    <published>2009-07-07T23:35:10Z</published>
    <updated>2009-07-11T23:36:41Z</updated>

    <summary> GMail is finally out of beta. News is like getting a wedding invitation from that sibling who has been shacked-up for 10 years......</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Sundry Ruminations" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<p>
GMail is finally out of beta. News is like getting a wedding invitation from that sibling who has been shacked-up for 10 years...
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Thomas Jay Peckish II on Scientific Revolutions</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2009/06/thomas-jay-peckish-ii-on-scien.html" />
    <id>tag:laputan.org,2009:/catfish//3.411</id>

    <published>2009-06-22T23:13:16Z</published>
    <updated>2009-07-10T06:37:22Z</updated>

    <summary> One of Thomas J. Kuhn&apos;s most trenchant observations was that the bond between Parent and Brainchild, for most, remains unshakable even in death. --Thomas Jay Peckish II...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Sundry Ruminations" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<p>
<i>One of Thomas J. Kuhn's most trenchant observations was that the bond between Parent and Brainchild, for most, remains unshakable even in death.</i><br/>
--<b>Thomas Jay Peckish II</b>
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Thomas Jay Peckish II on 21st Century Software Engineering</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2009/06/thomas-jay-peckish-ii-on-21st-2.html" />
    <id>tag:laputan.org,2009:/catfish//3.410</id>

    <published>2009-06-22T21:31:57Z</published>
    <updated>2009-06-22T23:12:24Z</updated>

    <summary> Open-Closed Principle? OCP? Make that private and Young Hakaz gonna copy-paste that pretty little banzai meditation garden of yours and do what they want to it. Encapsulate this yo. --Thomas Jay Peckish II Yo Hakaz! I chased it / and I faced it / and I cut it / and I pasted / I could taste it / &apos;til I wasted it. Peace. --Thomas Jay Peckish II...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<p>
<i>Open-Closed Principle? OCP? Make that <b>private</b> and Young Hakaz gonna copy-paste that pretty little banzai meditation garden of yours and do what they want to it. Encapsulate this yo.</i><br/>
--<b>Thomas Jay Peckish II</b>
</p>
<p>
<i>Yo Hakaz! I chased it / and I faced it / and I cut it / and I pasted / I could taste it / 'til I wasted it. <br/>Peace.</i><br/>
--<b>Thomas Jay Peckish II</b>
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Thomas Jay Peckish II on Life and Death</title>
    <link rel="alternate" type="text/html" href="http://laputan.org/catfish/2009/06/thomas-jay-peckish-ii-on-life.html" />
    <id>tag:laputan.org,2009:/catfish//3.409</id>

    <published>2009-06-09T19:21:04Z</published>
    <updated>2009-06-09T19:25:41Z</updated>

    <summary> Skills are important. A surgeon screws up, a person dies. A programmer screws up, a process dies. The stakes are identical. Unless you think a process is worth less than a human life... --Thomas Jay Peckish II...</summary>
    <author>
        <name>Brian Foote</name>
        
    </author>
    
        <category term="Bits and Bytes" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://laputan.org/catfish/">
        <![CDATA[<p>
<i>Skills are important. A surgeon screws up, a person dies. A programmer screws up, a process dies. The stakes are identical. Unless you think a process is worth less than a human life...</i><br/>
--<b>Thomas Jay Peckish II</b>
</p>]]>
        
    </content>
</entry>

</feed>
