<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Wide Awake Developers</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.michaelnygard.com/blog/atom.xml" />
   <id>tag:www.michaelnygard.com,2008:/blog//1</id>
    <link rel="service.post" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1" title="Wide Awake Developers" />
    <updated>2008-06-25T22:32:19Z</updated>
    <subtitle>An ongoing examination of what it means to be an IT professional in today&apos;s world.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.2ysb5-20051201</generator>
 
<entry>
    <title>Creeping Fees</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/06/creeping_fees_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=224" title="Creeping Fees" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.224</id>
    
    <published>2008-06-25T22:25:00Z</published>
    <updated>2008-06-25T22:32:19Z</updated>
    
    <summary>A couple of years ago, the Minneapolis-St. Paul airport introduced self-pay parking gates. Scan a credit card on the way in and on the way out, and it just debits the card. This obviously saves money on parking attendants, and...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Stuff" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>A couple of years ago, the Minneapolis-St. Paul airport introduced self-pay parking gates. Scan a credit card on the way in and on the way out, and it just debits the card. This obviously saves money on parking attendants, and it's pretty convenient for parkers.</p><p>At first, to encourage adoption, they offered a discount of $2 per day. Every time you'd approach the entry, a friendly voice from a Douglas Adams novel would ask, &quot;Would you like to save $2 per day on parking?&quot; For general parking, that meant $14 instead of $16 per day.</p><p>Some time later, this switched from being an incentive for adopting the system to a penalty for avoiding it. How? They raised the rates by $2 per day. So now, the top rate if you use self-pay is back to $16. If you don't use it, then your top rate bumped up to $18. Clearly they put somebody from the banking industry in charge of this parking system.</p><p>Now, it's changed again, from $2 per day to $2 per transaction. So it's just $2 off the top of whatever your overall parking fees are.</p><p>This gradual creep is really interesting. I wonder what the next step will be. A $2 per year discount would be one way to approach it. Maybe a &quot;frequent parker&quot; program. More likely the discount will drop to $1 per transaction, or it will just be discarded altogether.</p><p>That's OK with me, because swiping the credit card is still more convenient than exchanging cash money with a human anyway.</p><p>Besides, back when it was cash based, I always got tagged with the ATM fee anyway.&nbsp;</p>]]>
        
    </content>
</entry>
<entry>
    <title>Word Cloud Bandwagon</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/06/word_cloud_bandwagon.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=223" title="Word Cloud Bandwagon" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.223</id>
    
    <published>2008-06-17T20:57:19Z</published>
    <updated>2008-06-17T21:21:21Z</updated>
    
    <summary><![CDATA[Wordle has been meming it's way around the 'Net lately.&nbsp; Figured I'd join the crowd by doing a word cloud for Release It.&nbsp; This is from the preface.&nbsp; Considering that this is just from fairly simple text analysis, I'm surprised...]]></summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="ReleaseItBook" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p><a target="_blank" href="http://www.wordle.net/">Wordle</a> has been meming it's way around the 'Net lately.&nbsp; Figured I'd join the crowd by doing a word cloud for <a href="http://www.amazon.com/gp/product/0978739213?ie=UTF8&amp;tag=michaelnygard-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0978739213">Release It</a>.&nbsp; This is from the preface.</p><p><img width="832" height="571" border="0" src="/images/blog/wordle/release_it_preface.png" style="float:none; border:0px"/>&nbsp;</p>
<p>Considering that this is just from fairly simple text analysis, I'm surprised at how accurately it represents the key concerns.  &quot;Software&quot; and &quot;money&quot; have roughly equal prominence. &quot;Life&quot; appears near the middle, along with &quot;excitement&quot;, &quot;revenue&quot;, &quot;production&quot; and &quot;systems&quot;. Not bad for an algortihm.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Webber and Fowler on SOA Man-Boobs</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/06/webber_and_fowler_on_soa_manbo.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=222" title="Webber and Fowler on SOA Man-Boobs" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.222</id>
    
    <published>2008-06-08T03:39:20Z</published>
    <updated>2008-06-08T03:47:08Z</updated>
    
    <summary>InfoQ posted a video of Jim Webber and Martin Fowler doing a keynote speech at QCon London this Spring. It&apos;s a brilliant deconstruction of the concept of the Enterprise Service Bus. I can attest that they&apos;re both funny and articulate...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Architecture" />
            <category term="Business" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>InfoQ posted a video of <a href="http://jim.webber.name/">Jim Webber</a> and <a href="http://www.martinfowler.com/">Martin Fowler</a> doing a <a href="http://www.infoq.com/presentations/soa-without-esb">keynote speech</a> at QCon London this Spring. It's a brilliant deconstruction of the concept of the Enterprise Service Bus. I can attest that they're both funny and articulate (whether on the stage or off.)<br /></p><p>Along the way, they talk about building services incrementally, delivering value at every step along the way. They advocate decentralized control and direct alignment between services and the business units that own them.&nbsp;</p><p>I agree with every word, though I'm vaguely uncomfortable with how often they say &quot;enterprise man boobs&quot;.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Coincidence or Back-end Problem?</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/06/coincidence_or_backend_problem.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=221" title="Coincidence or Back-end Problem?" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.221</id>
    
    <published>2008-06-07T15:48:24Z</published>
    <updated>2008-06-07T15:58:17Z</updated>
    
    <summary>An odd thing happened to me today. Actually, an odd thing happened yesterday, but it&apos;s having the same odd thing happen today that really makes it odd. With me so far?Yesterday, while I was shopping at Amazon, Amazon told me...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>An odd thing happened to me today. Actually, an odd thing happened yesterday, but it's having the same odd thing happen today that really makes it odd. With me so far?</p><p>Yesterday, while I was shopping at Amazon, Amazon told me that my American Express card had expired. While it is set for a May expiration, it's several years in the future. I didn't think too much of it, because when I re-entered the same information, Amazon accepted it.</p><p>Today, I got the same thing with the same card on iTunes!</p><p>Online stores don't do a whole lot with your credit cards. For the most part, they just make a call out to a credit card processor. Small stores have to go through a second-tier CCVS system that charges a few pennies per transaction. Large ones---and do they get larger than Amazon?---generally connect directly to a payment processor. The payment processor may charge a fraction of a cent per transaction, but they definitely make it up in volume.</p><p>(There are other business factors, too, like the committed transaction volume, response time SLAs, and the like.)</p><p>Asynchronously, the payment processor collects from the issuing bank. It's the issuing bank that actually bills you, and sets your interest rate and payment terms.<br /></p><p>Whereas VISA and MasterCard work with thousands of issuers, American Express doesn't. When you get an AmEx card, they are the issuing bank as well as the payment processor.</p><p>Which makes it highly suspect that the same card gave me the same error through two different sites. It makes me think that American Express has introduced a bug in their validation system, causing spurious declines for expiration.&nbsp;</p>]]>
        
    </content>
</entry>
<entry>
    <title>Social Factors</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/06/social_factors.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=220" title="Social Factors" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.220</id>
    
    <published>2008-06-06T21:45:00Z</published>
    <updated>2008-06-06T21:55:38Z</updated>
    
    <summary>I mentioned Tom DeMarco just a couple of days ago. I&apos;m re-reading his great book, Why Does Software Cost So Much? for the first time in about ten years.Personally, I credit Tom as one of the unsung progenitors of the...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Human Dynamics" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>I mentioned <a href="http://en.wikipedia.org/wiki/Tom_DeMarco">Tom DeMarco</a> just a <a href="http://www.michaelnygard.com/blog/2008/06/six_word_methods.html">couple of days ago</a>. I'm re-reading his great book, <a href="http://www.amazon.com/gp/product/093263334X?ie=UTF8&amp;tag=michaelnygard-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=093263334X">Why Does Software Cost So Much?</a><img width="1" height="1" border="0" src="http://www.assoc-amazon.com/e/ir?t=michaelnygard-20&amp;l=as2&amp;o=1&amp;a=093263334X" /> for the first time in about ten years.</p><p>Personally, I credit Tom as one of the unsung progenitors of the agile movement. Long before we had &quot;<a href="http://agilealliance.org/">Agile</a>&quot; or even &quot;lightweight methods&quot;, Tom was talking about the psycho-social nature of software development.&nbsp;</p><p>For instance, here's an excerpt from essay 8, &quot;Nontechnological Issues in Software Engineering&quot;:</p><blockquote><p>Imagine your boss just plunked a specification on your desk and asked, &quot;How long will it take you and one other person to get this job done?&quot; What's the first question out of your mouth?</p><p>Would you ask, &quot;Can we use object-oriented methods?&quot; or &quot;What CASE system can we buy?&quot; or &quot;Is it okay to use rapid prototyping?&quot; Of course not. Your first question is,</p><p><em>Who is the other person?</em></p></blockquote><p>Absolutely. Right on, Tom.&nbsp;</p>]]>
        
    </content>
</entry>
<entry>
    <title>Plurk.</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/06/plurk.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=219" title="Plurk." />
    <id>tag:www.michaelnygard.com,2008:/blog//1.219</id>
    
    <published>2008-06-06T16:13:33Z</published>
    <updated>2008-06-06T16:19:58Z</updated>
    
    <summary>A friend invited me to Plurk. So far, I&apos;ve resisted Twitter for no good reason (other than a vague sense of social insecurity.) I figure I&apos;ll dip my toe into Plurk, though.This link is an open invite to Plurk. It&apos;ll...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Stuff" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>A friend invited me to <a href="http://www.plurk.com">Plurk</a>. So far, I've resisted Twitter for no good reason (other than a vague sense of social insecurity.) I figure I'll dip my toe into Plurk, though.</p><p>This <a href="http://plurk.com/redeemByURL?from_uid=39189&amp;check=104064598&amp;s=1">link</a> is an open invite to Plurk. It'll let anyone join. Fair warning, it's also a &quot;friend&quot; link.&nbsp;</p>]]>
        
    </content>
</entry>
<entry>
    <title>Six Word Methods</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/06/six_word_methods.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=218" title="Six Word Methods" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.218</id>
    
    <published>2008-06-04T02:44:37Z</published>
    <updated>2008-06-04T03:39:28Z</updated>
    
    <summary>In his great collection of essays Why Does Software Cost So Much?, Tom DeMarco makes the interesting point that the software industry had grown from zero to $300 billion dollars (in 1993). This indicates that the market had at least...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Design" />
            <category term="Humor" />
            <category term="Stuff" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>In his great collection of essays <a href="http://www.amazon.com/gp/product/093263334X?ie=UTF8&amp;tag=michaelnygard-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=093263334X">Why Does Software Cost So Much?</a><img width="1" height="1" border="0" src="http://www.assoc-amazon.com/e/ir?t=michaelnygard-20&amp;l=as2&amp;o=1&amp;a=093263334X" />, Tom DeMarco makes the interesting point that the software industry had grown from zero to $300 billion dollars (in 1993). This indicates that the market had at least $300B worth of demand for software, <em>even while complaining continuously</em> about the cost and quality of the very same software. It seems to me that the demand for software production, together with the time and cost pressures, has only increased dramatically since then.</p>  <p>(DeMarco enlightens us that the perennial question, &quot;Why does software cost so much?&quot; is not really a question at all, but rather a goad or a <a href="http://www.michaelnygard.com/blog/2007/12/budgetecture_and_its_ugly_cous.html">negotiation</a>. Also very true.)</p><p>Fundamentally, the demand for software production far outstrips our industry's ability to supply it. In fact, I believe that we can classify most software methods and techniques by their relation and response to the problem of surplus demand. Some try to optimize for least-cost production, others for highest quality, still others for shortest cycle time.</p><p>In the spirit of <a target="_blank" href="http://www.npr.org/programs/totn/features/2008/02/memoir/gallery/index.html">six-word memoirs</a>, here are the sometimes dubious responses that various technology and development methods' offer to the overwhelming demand for software production.&nbsp;</p><p><strong>Waterfall</strong>: Nevermind backlog, requirements were signed off.</p><p><strong>RAD</strong>: Build prototypes faster than discarding them.</p><p><strong>Offshore outsourcing</strong>: Army of cheap developers producing junk.</p><p><span style="font-weight: bold">Onshore outsourcing</span>: Same junk, but with expensive developers.</p><p><strong>Agile</strong>: Avoid featuritis; outrun pesky business users.<br /></p><p><strong>Domain-specific languages</strong>: Compress every problem into one-liners.<br /></p><p><strong>CMMi</strong>: Enough Process means nothing's ever wasted.<br /></p><p><strong>Relational Databases</strong>: Code? Who cares? Data lives forever.</p><p><strong>Model-driven architecture</strong>: Jackson Pollack's models into inscrutable code.<br /></p><p><strong>Web Services</strong>: Terrorize XML until maximum reuse achieved.</p><p><strong>FORTH</strong>: backward writing IF punctuation time SAVE.<br /></p><p><strong>SOA</strong>: Iron-fisted governance ensures total calcification.<br /></p><p><strong>Intentional programming</strong>: Parallelize programming... make programmers of everyone.<br /></p><p><strong>Google as IDE</strong>: It's been done, probably in <a target="_blank" href="http://en.wikipedia.org/wiki/Befunge">Befunge</a>.<br /></p><p><strong>Open-source</strong>: Bury the world in abandoned code.</p><p><strong>Mashups</strong>: Parasitize others' apps, then APIs change.</p><p><strong>LISP</strong>: With enough macros, one uberprogrammer sufficies.</p><p><span style="font-weight: bold">perl</span>: Too busy coding to maintain anyway.</p><p><span style="font-weight: bold">Ruby</span>: Meta-programming: same problems, mysterious solutions.</p><p><span style="font-weight: bold">Ocaml</span>: No, try meta-meta-meta-programming.</p><p><span style="font-weight: bold">Groovy</span>: Faster Java coding, runs like C-64.</p><p><span style="font-weight: bold">Software-as-a-Service</span>: Don't write your own, rent ours.</p><p><span style="font-weight: bold">Cloud Computing</span>: Programmers would go faster without administrators.</p>]]>
        
    </content>
</entry>
<entry>
    <title>New Article: S2AP + Eclipse + Maven walkthrough</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/05/article_s2ap_eclipse_maven_wal.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=217" title="New Article: S2AP + Eclipse + Maven walkthrough" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.217</id>
    
    <published>2008-05-31T00:52:17Z</published>
    <updated>2008-05-31T01:01:21Z</updated>
    
    <summary>See Getting Started With SpringSource Application Platform, Eclipse, and Maven.Most of the information out there about programming in S2AP is in blogs or references to really old OSGi tutorials. It took me long enough to configure some basic Eclipse project...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Articles" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>See <a  href="http://www.michaelnygard.com/articles/s2ap_eclipse/DevGuide_GettingStarted.html" class="article-link">Getting Started With SpringSource Application Platform, Eclipse, and Maven</a>.</p><p>Most of the information out there about programming in S2AP is in blogs or references to really old OSGi tutorials. It took me long enough to configure some basic Eclipse project support that I figured it was worth writing down. All of the frameworks and tool sets are very flexible, which means you have more choices to deal with when setting up a project. Sometimes, being concrete helps... there may be a lot of options, but when it's time to do a project, you only care about one set of choices for those options. This guide is completely specific to using Eclipse to write bundle projects for SpringSource Application Platform.</p><p>If that's your specific set of needs, great! If not, that's OK too, because the beauty of the Web is that somebody else will have a tutorial on your exact combination, too.&nbsp;</p>]]>
        
    </content>
</entry>
<entry>
    <title>Canadian Privacy Commissioner Highlights Cloud Privacy Concerns</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/05/canadian_privacy_commissioner.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=216" title="Canadian Privacy Commissioner Highlights Cloud Privacy Concerns" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.216</id>
    
    <published>2008-05-28T19:42:26Z</published>
    <updated>2008-05-28T19:55:49Z</updated>
    
    <summary><![CDATA[A little while ago, I wrote a piece about the conflict between &quot;clouds&quot; and the hard boundaries of the political sphere. There's no physical place called &quot;cyberspace&quot;, and any cloud computing infrastructure has to actually exist somewhere.Like many U.S. citizens,...]]></summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Cloud Computing" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>A little while ago, I wrote a <a href="http://www.michaelnygard.com/blog/2008/04/geography_imposes_itself_on_th.html">piece</a> about the conflict between &quot;clouds&quot; and the hard boundaries of the political sphere. There's no physical place called &quot;cyberspace&quot;, and any cloud computing infrastructure has to actually exist somewhere.</p><p>Like many U.S. citizens, I really hate the idea that facts about me become somebody else's copyrighted property just because they get stored in a database. Canada has a justifiably good reputation for protecting its citizens' privacy. Their legal framework takes the refreshing position of protecting individuals rather than protecting the ability of non-corporeal entities (a.k.a. &quot;incorporated persons&quot;, a.k.a. &quot;corporations&quot;) to collect any and all information.</p><p>I hadn't realized that there were such offices as the &quot;<a href="http://www.ipc.on.ca/index.asp?navid=1" target="_blank">Information and Privacy Commissioner of Ontario</a>&quot;, however.</p><p>Better still, Ontario's IPC Commissioner, Dr. Ann Cavoukian, is very current. She's just released a white paper on the <a href="http://www.ipc.on.ca/index.asp?navid=46&amp;fid1=748" target="_blank">privacy implications of cloud computing</a>. She's calling for open standards around digital identity management, and outlines some technological building blocks needed for controllable trust and identity verification.</p><p>Unlike the U.S. approach to identity verification, Dr. Cavoukian's approach has nothing to do with catching illegal aliens, welfare frauds, or terrorists. Instead, it's about creating open, trustworthy ways for humans to interact in all their various modalities from commerce, to entertainment, and even to romance.&nbsp;</p>]]>
        
    </content>
</entry>
<entry>
    <title>Quickie: GAE is GA</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/05/quickie_gae_to_go_ga.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=215" title="Quickie: GAE is GA" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.215</id>
    
    <published>2008-05-28T18:56:12Z</published>
    <updated>2008-05-28T19:03:16Z</updated>
    
    <summary><![CDATA[According to eWeek, Google will make GAE open to public use on May 28th.&nbsp; Which would be today.The original GAE site isn't updated at this point, but you can get started anyway.&nbsp; I just set up my account and registered...]]></summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Cloud Computing" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>According to <a target="_blank" href="http://www.eweek.com/c/a/Application-Development/Google-Opens-Prices-Google-App-Engine/">eWeek</a>, Google will make GAE open to public use on May 28th.&nbsp; Which would be today.</p><p>The <a href="http://code.google.com/appengine/">original GAE site</a> isn't updated at this point, but you can <a target="_blank" href="http://appengine.google.com">get started</a> anyway.&nbsp; I just set up my account and registered an app. (I predict tens of thousands of empty apps. Long-tail distribution here, just like SourceForge: an overwhelming majority of empty projects, with a vanishingly tiny minority that have 99% of the traffic.)<br /></p><p>Now I just need to find time to learn Python and write something cool.&nbsp;</p>]]>
        
    </content>
</entry>
<entry>
    <title>Wii Wescue</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/05/wii_wescue.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=214" title="Wii Wescue" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.214</id>
    
    <published>2008-05-16T21:56:58Z</published>
    <updated>2008-05-16T22:16:34Z</updated>
    
    <summary>So, I got a Wii for Father&apos;s Day last year. It&apos;s been a lot of fun to play together with my kids, my wife, and even my parents and in-laws. It&apos;s fantastic to have a game system that we can...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Stuff" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>So, I got a Wii for Father's Day last year. It's been a lot of fun to play together with my kids, my wife, and even my parents and in-laws. It's fantastic to have a game system that we can all play together and be reasonably competitive.&nbsp; My six-year old can hold her own in Wii bowling, but she cries a lot when we play Halo. (I'm just kidding...)</p><p>Unfortunately, my three-year old put a shiny disc of her own into it: a plastic toy coin. Well, it does say &quot;Play Money&quot; right on the front. Right in the drive slot. I figured my Wii was a goner for sure.</p><p><img width="240" height="144" title="&quot;Play Money&quot;" alt="&quot;Play Money&quot;" src="http://farm4.static.flickr.com/3164/2497334455_94ea9b20fd_m.jpg" style="border: 0; align=center;"/>&nbsp;</p><p>I set about opening the thing up to remove the coin, but got stumped by these custom screws, kind of like a Philips head, but with three prongs. Turns out these are called &quot;<a href="http://en.wikipedia.org/wiki/Triwing">Triwing</a>&quot; screws and they're specifically designed to keep end users out of the machine, on the theory that these are not widely used screws, so most people won't have the means to unscrew them. True, it slowed me down a bit. I had to order a kit from Thinkgeek that has driver bits for every console on the market.</p><p>Opened it up, got the coin out, and the Wii still works!</p><p>But, surely these belong <em>somewhere</em>, don't they?</p>

<p style="height: 700px;">
<img width="500" height="300" border="0" title="Letfovers?" alt="Letfovers?" src="http://farm4.static.flickr.com/3166/2498164200_55a8e98e44.jpg" style="border: 0; align=center;" />&nbsp;</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Opening Up SpringSource AP</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/05/opening_up_springsource_ap.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=213" title="Opening Up SpringSource AP" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.213</id>
    
    <published>2008-05-14T21:57:20Z</published>
    <updated>2008-05-14T22:11:36Z</updated>
    
    <summary>Just now getting my hands on the SpringSource Application Platform. It&apos;s deceptive, because there&apos;s very little functionality exposed when you run it. It starts up with less ceremony than Apache or Tomcat. (Which is kind of funny, when you consider...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Stuff" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>Just now getting my hands on the SpringSource Application Platform. It's deceptive, because there's very little functionality exposed when you run it. It starts up with less ceremony than Apache or Tomcat. (Which is kind of funny, when you consider that it <em>includes</em> Tomcat.)</p>

<p>When you look at the bundle repository, though, it's clear that a lot of stuff is packaged in here. In a way, that's like the Spring framework itself. On the surface, it looks like just a bean configurator. All the <span style="font-style: italic">really</span> powerful stuff is in the libraries built out of that small core.</p>

<p>Here's a quick listing of the bundles in version 1.0.0.beta:&nbsp;</p>

<pre>
./bundles/ext/com.springsource.com.google.common.collect-0.5.0.alpha.jar
./bundles/ext/com.springsource.edu.emory.mathcs.backport-3.0.0.jar
./bundles/ext/com.springsource.javax.activation-1.1.0.jar
./bundles/ext/com.springsource.javax.annotation-1.0.0.jar
./bundles/ext/com.springsource.javax.ejb-3.0.0.jar
./bundles/ext/com.springsource.javax.el-2.1.0.jar
./bundles/ext/com.springsource.javax.jms-1.1.0.jar
./bundles/ext/com.springsource.javax.mail-1.4.0.jar
./bundles/ext/com.springsource.javax.persistence-1.0.0.jar
./bundles/ext/com.springsource.javax.servlet-2.5.0.jar
./bundles/ext/com.springsource.javax.servlet.jsp-2.1.0.jar
./bundles/ext/com.springsource.javax.servlet.jsp.jstl-1.1.2.jar
./bundles/ext/com.springsource.javax.xml.bind-2.0.0.jar
./bundles/ext/com.springsource.javax.xml.rpc-1.1.0.jar
./bundles/ext/com.springsource.javax.xml.soap-1.3.0.jar
./bundles/ext/com.springsource.javax.xml.stream-1.0.1.jar
./bundles/ext/com.springsource.javax.xml.ws-2.1.1.jar
./bundles/ext/com.springsource.json-1.0.0.BUILD-20080422112602.jar
./bundles/ext/com.springsource.org.antlr-3.0.1.jar
./bundles/ext/com.springsource.org.aopalliance-1.0.0.jar
./bundles/ext/com.springsource.org.apache.catalina-6.0.16.jar
./bundles/ext/com.springsource.org.apache.commons.fileupload-1.2.0.jar
./bundles/ext/com.springsource.org.apache.commons.io-1.4.0.jar
./bundles/ext/com.springsource.org.apache.commons.logging-1.1.1.jar
./bundles/ext/com.springsource.org.apache.coyote-6.0.16.jar
./bundles/ext/com.springsource.org.apache.el-6.0.16.jar
./bundles/ext/com.springsource.org.apache.jasper-6.0.16.jar
./bundles/ext/com.springsource.org.apache.jasper.org.eclipse.jdt-6.0.16.jar
./bundles/ext/com.springsource.org.apache.juli.extras-6.0.16.jar
./bundles/ext/com.springsource.org.apache.taglibs.standard-1.1.2.jar
./bundles/ext/com.springsource.org.aspectj.runtime-1.6.0.m2.jar
./bundles/ext/com.springsource.org.aspectj.weaver-1.6.0.m2.jar
./bundles/ext/com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar
./bundles/ext/com.springsource.slf4j.org.apache.log4j-1.5.0.jar
./bundles/ext/org.springframework.aop-2.5.4.A.jar
./bundles/ext/org.springframework.aspects-2.5.4.A.jar
./bundles/ext/org.springframework.beans-2.5.4.A.jar
./bundles/ext/org.springframework.context-2.5.4.A.jar
./bundles/ext/org.springframework.context.support-2.5.4.A.jar
./bundles/ext/org.springframework.core-2.5.4.A.jar
./bundles/ext/org.springframework.jdbc-2.5.4.A.jar
./bundles/ext/org.springframework.jms-2.5.4.A.jar
./bundles/ext/org.springframework.orm-2.5.4.A.jar
./bundles/ext/org.springframework.osgi.core-1.1.0.M2A.jar
./bundles/ext/org.springframework.osgi.extender-1.1.0.M2A.jar
./bundles/ext/org.springframework.osgi.io-1.1.0.M2A.jar
./bundles/ext/org.springframework.transaction-2.5.4.A.jar
./bundles/ext/org.springframework.web-2.5.4.A.jar
./bundles/ext/org.springframework.web.portlet-2.5.4.A.jar
./bundles/ext/org.springframework.web.servlet-2.5.4.A.jar
./bundles/ext/org.springframework.web.struts-2.5.4.A.jar
./bundles/subsystems/com.springsource.platform.common/com.springsource.platform.common.env-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.common/com.springsource.platform.common.math-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.concurrent/com.springsource.platform.concurrent.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.config/com.springsource.platform.config.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.control/com.springsource.platform.control.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.deployer/com.springsource.platform.deployer.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.deployer/com.springsource.platform.deployer.hot-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.ffdc/com.springsource.platform.ffdc.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.io/com.springsource.platform.io.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.kernel/com.springsource.platform.kernel.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.kernel/com.springsource.platform.kernel.dm-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.management.proxy/com.springsource.platform.management.proxy-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.profile/com.springsource.platform.profile.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.serviceability/com.springsource.platform.serviceability.ffdc-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.serviceability/com.springsource.platform.serviceability.ffdc.aspects-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.serviceability/com.springsource.platform.serviceability.tracing.aspects-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.servlet/com.springsource.platform.servlet.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.servlet/com.springsource.platform.servlet.tomcat-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.system/com.springsource.platform.system.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.web/com.springsource.platform.web.core-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.web/com.springsource.platform.web.dm-1.0.0.beta.jar
./bundles/subsystems/com.springsource.platform.web/com.springsource.platform.web.support-1.0.0.beta.jar
</pre>

<p>There's clearly a lot of functionality built in, but how do you get at it? The SAP, erm, SpringSource AP documentation screams for improvement. Maybe they think that, because all the parts are documented elsewhere, there's no need for any integrated docset. If so, they would be wrong. Despite that, I'm interested enough to keep poking away at it.</p>

<p>Oh, and one other thing: the default administrator account is <tt>admin/springsource</tt>. (It's actually defined in <tt>servlet/conf/tomcat-users.xml</tt>.) For some reason, that's buried in chapter 5 of the user guide. It would be handy to make that more prominent.</p>]]>
        
    </content>
</entry>
<entry>
    <title>JavaOne is a Hot Zone</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/05/virus_attack_at_javaone.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=212" title="JavaOne is a Hot Zone" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.212</id>
    
    <published>2008-05-09T19:44:53Z</published>
    <updated>2008-05-09T19:51:18Z</updated>
    
    <summary>Apparently, there&apos;s a virus attack. Not a computer virus. A real virus. Hot zone instead of a hot spot.From my inbox this morning:The JavaOne conference team has been notified by the San Francisco Department of Public Health about an identified...</summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="JavaOne" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>Apparently, there's a virus attack. Not a computer virus. A real virus. Hot zone instead of a hot spot.<br /></p><p>From my inbox this morning:</p><blockquote><p>The JavaOne conference team has been notified by the San Francisco Department of Public Health about an identified outbreak of a virus in the San Francisco area. Testing is still underway to identify the specific virus in question, but they believe it to be the Norovirus, a common cause of the &quot;stomach flu&quot;, which can cause temporary flu-like symptoms for up to 48 hours. Part of the San Francisco area impacted includes the Moscone Center, the site of the JavaOne conference which is being held this week. We are working with the appropriate San Francisco Department of Public Health and Moscone representatives to mitigate the impact this will have on the conference and steps are being taken overnight to disinfect the facility. We have not received any indication that the show should end early, so will have the full schedule of events on Friday as planned. We hope to see you then. <br /><br />   Please see the attached notification from the Department of Public Health.  <br /><br /> For further information, as well as Frequently Asked Questions related to the Norovirus, please visit the San Francisco Department of Public Health website at <a target="_blank" href="http://sfcdcp.org/norovirus.cfm">http://sfcdcp.org/norovirus.cfm</a>&nbsp;</p></blockquote><p>The <a href="http://www.cdc.gov/ncidod/dvrd/revb/gastro/norovirus.htm">CDC description</a> includes the phrase &quot;acute gastroenteritis.&quot;&nbsp;</p><p>&nbsp;</p>]]>
        
    </content>
</entry>
<entry>
    <title>Grab Bag of Demos</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/05/grab_bag_of_demos.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=211" title="Grab Bag of Demos" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.211</id>
    
    <published>2008-05-09T18:54:18Z</published>
    <updated>2008-05-09T19:06:40Z</updated>
    
    <summary><![CDATA[Sun opened the final day of JavaOne with a general session called &quot;Extreme Innovation&quot;. This was a showcase for novel, interesting, and out-of-this-world uses of Java based technology.VisualVM&nbsp;VisualVM works with local or remote applications, using JMX over RMI to connect...]]></summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="JavaOne" />
            <category term="Stuff" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>Sun opened the final day of JavaOne with a general session called &quot;Extreme Innovation&quot;. This was a showcase for novel, interesting, and out-of-this-world uses of Java based technology.</p><p><strong>VisualVM</strong>&nbsp;</p><p>VisualVM works with local or remote applications, using JMX over RMI to connect to remote apps. While you have to run VisualVM itself under JDK 1.6, it can connect to any version of JVm from 1.4.2 through 1.7. Local apps are automatically detected and offered in the UI for debugging.&nbsp; VisualVM uses the <a href="http://java.sun.com/javase/technologies/core/toolsapis/jpda/">Java Platform Debugger Architecture</a> to show thread activities, memory usage, object counts, and call timing. It can also take snapshots of the application's state for post-mortem or remote analysis.</p><p>Memory problems can be a bear to diagnose. VisualVM includes a heap analyzer that can show reference chains. From the UI, it looks like it can also detect and indicate reference loops.</p><p>One interesting feature of VisualVM is the ability to add plug-ins for application-specific behavior. Sun demonstrated a Glassfish plugin that adds custom metrics for request latency and volume, and the ability to examine each application context independently.</p><p>The application does not require any special instrumentation, so you can run VisualVM directly against a production application. According to Sun, it adds &quot;almost no overhead&quot; to the application being examined. I'd still be very cautious about that. VisualVM allows you to enable CPU and memory profiling in real-time, so that will certainly have an effect on the application. Not to mention, it also lets you trigger a heap dump, which is always going to be costly.</p><p>VisualVM is available for download now.</p><p><strong>JavaScript Support in NetBeans</strong></p><p>Sun continues to push NetBeans at every turn. In this case, it was a demo of the JavaScript plugin for NetBeans. This is really a nice plugin. It uses type inferencing to provide autocompletion and semantic warnings. For example, it would warn you if a function had inconsistent return statements. (Such as returning an object from one code path mixed with a void return from another.)</p><p>It also has a handy developer aid: it warns developers about browser compatibility.</p><p>I don't do a whole lot of JavaScript, but I couldn't help thinking about other dynamic languages. Ifthe plugin can do that kind of type inferencing---without executing the code---for one dynamic language, then it should be possible to do for other dynamic languages. That could remove a lot of objections about Groovy, Scala, JRuby, etc.</p><p><strong>Fluffy Stuff at the Edge</strong></p><p>We got a couple of demos of Java in front of the end-user. One was a cell phone running an OpenGL scene at about 15 frames per second on an <a href="http://www.nvidia.com/object/apx_2500.html">NVidia chipset</a>. All the rendering was done in Java and displayed via <a href="http://www.khronos.org/opengles/">OpenGL ES</a>, with 3D positional audio. Not bad at all.</p><p><a href="http://www.projectdarkstar.com/">Project Darkstar</a> got a few moments in the spotlight, too. They showed off a game called <a href="http://www.callofthekings.com/main.php">Call of the Kings</a>, a multiplayer RTS that looked like it came from 1999.&nbsp; Call of the Kings uses the <a href="http://www.jmonkeyengine.com/">jMonkey Engine</a> (built on top of <a href="http://joal.dev.java.net/">JOAL</a>, <a href="http://jogl.dev.java.net/">JOGL</a>, and <a href="http://jinput.dev.java.net/">jInput</a>) on the client and Project Darkstar's game server on the backend. It's OK, but as game engines go, I'm not sure how it will be relevant.</p><p>There was also a JavaCard demo, running Robocode players on JavaCards.&nbsp; That's not just storing the program on the card, it was actually executing on the card. Two finalists were brought up on stage (but not given microphones of their own, I noticed) for a final battle between their tanks. Yellow won, and received a PS3. Red lost, but got a PSP for making it to the finals.</p><p><a href="http://www.sentilla.com/">Sentilla</a> tried to get out from the &quot;<a href="http://www.theserverside.com/news/thread.tss?thread_id=49332">creepy</a>&quot; moniker by bouncing mesh-networked, location-tracking beachballs around the audience. Each one had a Sentilla &quot;mote&quot; in it, with a 3D accelerometer inside. Receivers at the perimeter of the hall could triangulate the beachballs' locations by signal strength. For me, the most interesting thing here was James Gosling's talk about powering the motes. They draw so little power that it's possible to power them from ambient sources: vibration and heat. Interesting. Still creepy, but interesting.</p><p>The next demo was mind-blowing. The <a href="http://www.livescribe.com/">livescribe pulse</a> is a Java computer built into a pen. It's hard to describe how wild this thing is, you almost have to <a href="http://www.livescribe.com/smartpen/videos.html">see it</a> for any of this to make sense.</p><p>At one point, the presenter wrote down a list, narrating as he went. For item one, he wrote the numeral &quot;1&quot; and the word &quot;pulse&quot;, describing the pen as he went. For item two, he wrote the numeral &quot;2&quot; and draw a little doodle of a desktop. Item three was the numeral and a vague cloudy thing. All this time, the pen was recoding his audio, and associating bits of the audio stream with the page locations. So when he tapped the numeral &quot;1&quot; that he had written, the pen played back his audio. Not bad.</p><p>Then he put an &quot;application card&quot; on the table and tapped &quot;Spanish&quot; on it. He wrote down the word &quot;one&quot;... and the pen spoke the word &quot;uno&quot;.&nbsp; He wrote &quot;coffee please&quot; and it said &quot;cafe por favor&quot;. Then he had it do the same phrase in Mandarin and Arabic. Handwriting recognition, machine translation, and speech synthesis all in the pen. Wow.<br /></p><p>Next, he selected a program from the pen's menu. The special notebook has a menu crosshair on it, but you can draw your own crosshair and it works the same way: use the pen to tap the up-arrow on paper, and the menu changes on the display. He picked a piano program, and the pen started to give him directions on how to draw a piano. Once he was done drawing it, he could tap the &quot;keys&quot; on paper to play notes.<br /></p><p>The pen captures x, y, and t information as you write, so it's digitizing the trajectory rather than the image. This is great for data compression when you're sharing pages across the livescribe web site. It's probably also great for forgers, so there might be a concern there.</p><p><strong>Industrial Strength</strong></p><p>Emphasizing real-time Java for a bit, Sun showed off &quot;Blue Wonder&quot;, an industrial controller built out of an x86 computer running Solaris 10 and Java RTS 2.0.&nbsp; This is suitable for factory control applications and is, apparently, very exciting to factory control people.</p><p>From the <a href="http://www.darpagrandchallenge.com/">DARPA Urban Challenge</a> event, we saw &quot;<a href="http://video.aol.com/video-detail/tommy-jr-crash-at-darpa-urban-challenge-nqe/1253754136">Tommy Jr.</a>&quot;, an autonomous vehicle. It followed <a href="http://www.teamjefferson.com/">Paul Perrone</a> into the room, narrating each move it was making. Fortunately, nobody tried to demonstrate it's crowd control or <a href="http://www.youtube.com/watch?v=6MrmUBrT2p4">law enforcement features</a>. Instead, they showed off an array of high resolution sensors and actuators. It's all controlled, under very tight real-time constraints, by a single x86 board running Solaris and Java RTS.</p><p><strong>Into New Realms</strong></p><p>Next, we saw a demo of <a href="http://jmars.asu.edu/">JMars</a>. This impressive application helps scientists make sense out of the 150 terabytes of data we've collected from various Mars probes. It combines data and imaging layers from many different probes. One example overlaid hematite concentrations on top of an infrared image layer. It also knows enough about the various satellites orbits to help plan imaging requests.</p><p>Ultimately, JMars was built to help target landing sites for both scientific interest and technical viability. We'll soon see how well they did: the <a href="http://www.planetary.org/explore/topics/phoenix/">Phoenix lander</a> arrives in about two weeks, targeting a <a href="http://www.planetary.org/explore/topics/phoenix/landing_site.html">site</a> that was selected using JMars.</p><p>JMars is both free to use and is also open source. Dr. Phil Christensen from Arizon State University invited the Java community to explore Mars for themselves, and perhaps join the project team.</p><p><strong>CERN<br /></strong>Thousands of people, physicists and otherwise, are eagerly awaiting the <a href="http://www.cern.ch/LHC/">LHC</a>'s activation. We got to see a little bit behind the scenes about how Java is being used within CERN.</p><p>On the one hand, some very un-sexy business process work is being done. LHC is a vast project, so it's got people, budget, and materials to manage. Ho hum. It's not easy to manage all those business processes, but it sure doesn't demo well.</p><p>On the other hand, showing off the grid computing infrastructure does.</p><p>Once it's operating, the <a href="http://atlas.ch/">ATLAS</a> detectors alone will produce a gigabyte an hour of image data. All of it needs to be processed. &quot;Processing&quot; here means running through some amazing pattern recognition programs to analyze events, looking for anomalies. There will be far too many collisions generated every day for a physicist to look at all of them, so automated techniques have to weed out &quot;uninteresting&quot; collisions and call attention to ones that dont' fit the profile.</p><p>CERN estimates that 100,000 CPUs will be needed to process the data. They've built a coalition of facilities into a multi-tier grid. Even today, they're running 16,000 jobs on the grid across hundreds of data centers. With that many nodes involved, they need some good management and visualization tools, and we got to see one. It's a 3D world model with iconified data centers showing their status and capacity. Jobs fly from one to another along geodesic links. Very cool stuff.</p><p><strong>Summary</strong></p><p>Java is a mature technology that's being used in many spheres other than application server programming. For me, and many other JavaOne attendees, this session really underscored the fact that none of our own projects are anywhere near as cool as these demos. I'm left with the desire to go build something cool, which was probably the point.<br /><br /></p>]]>
        
    </content>
</entry>
<entry>
    <title>SOA: Time For a Rethink</title>
    <link rel="alternate" type="text/html" href="http://www.michaelnygard.com/blog/2008/05/soa_time_for_a_rethink.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://michaelnygard.com/blog-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=210" title="SOA: Time For a Rethink" />
    <id>tag:www.michaelnygard.com,2008:/blog//1.210</id>
    
    <published>2008-05-08T22:00:00Z</published>
    <updated>2008-05-08T22:05:06Z</updated>
    
    <summary><![CDATA[The notion of a service-oriented architecture is real, and it can deliver. The term &quot;SOA&quot;, however, has been entirely hijacked by a band of dangerous Taj Mahal architects. They seem innocuous, it part because they'll lull you to sleep with...]]></summary>
    <author>
        <name>michael</name>
        
    </author>
            <category term="Architecture" />
    
    <content type="html" xml:lang="en" xml:base="http://www.michaelnygard.com/blog/">
        <![CDATA[<p>The notion of a service-oriented architecture is real, and it can deliver. The term &quot;SOA&quot;, however, has been entirely hijacked by a band of dangerous <a target="_blank" href="http://www.michaelnygard.com/blog/2007/11/soa_without_the_edifice.html">Taj Mahal architects</a>. They seem innocuous, it part because they'll lull you to sleep with endless protocol diagrams. Behind the soporific technology discussion lies a grave threat to your business. </p><p>&quot;SOA&quot; has come to mean <a target="_blank" href="http://www.michaelnygard.com/blog/2008/05/saps_soa_esr_1.html">top-down, up-front, strong-governance, all-or-nothing</a> process (moving at glacial speed) implemented by an ill-conceived stack of technologies. SOAP is not the problem. WSDL is not the problem. Even BPEL is not the problem. The problem begins with the entire world view.<br /></p><p>We need to abandon the term &quot;SOA&quot; and invent a new one. &quot;SOA&quot; is chasing a false goal. The idea that services will be so strongly defined that no integration point will ever break is unachievable. Moreover, it's optimizing for the wrong thing. Most business today are not safety-critical. Instead, they are highly competitive.<br /> </p><p>We need loosely-coupled services, not orchestration.<br /></p><p>We need services that emerge from the business units they serve, not an IT governance panel.</p><p>We need services to change as rapidly as the business itself changes, not after a chartering, funding, and governance cycle.<br /><br />Instead of trying to build an antiseptic, clockwork enterprise, we need to embrace the messy, chaotic, Darwinian nature of business. We should be enabling rapid experimentation, quick rollout of &quot;barely sufficient&quot; systems, and fast feedback. We need to enable emergence, not stifle it.<br /></p><p>Anything that slows down that cycle of experimentation and adjustment puts your business on the same evolutionary path as the Great Auk. I never thought I'd find myself quoting Tom Peters in a tech blog, but the key really is to &quot;Test fast, fail fast, adjust fast.&quot;<br /></p>]]>
        
    </content>
</entry>

</feed> 

