<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7494582752654566190</id><updated>2011-10-01T10:57:00.329-07:00</updated><category term='provisioning'/><category term='data integration'/><category term='clojure'/><category term='enterprise architecture'/><category term='recruiting'/><category term='soa'/><category term='gregor'/><category term='mythical man month'/><category term='sam pullura'/><category term='juergen hoeller'/><category term='sitebricks'/><category term='hadoop'/><category term='software development'/><category term='configuration'/><category term='development operations'/><category term='git'/><category term='spring'/><category term='software engineering'/><category term='andy hunt'/><category term='group dynamics'/><category term='pragmatic thinking learning'/><category term='bdd'/><category term='platform architecture'/><category term='adtaas'/><category term='humor'/><category term='scala'/><category term='peter coad'/><category term='java'/><category term='elastic search'/><category term='technical heroes'/><category term='resource oriented architecture'/><category term='cucumber'/><category term='thoughtworks'/><category term='idioms'/><category term='concurrency'/><category term='hiring'/><category term='rest'/><category term='evolutionary design'/><category term='continuous delivery'/><category term='consistency'/><category term='functional testing'/><category term='saas'/><category term='dsl'/><category term='operations'/><category term='design'/><category term='governance'/><category term='version control'/><category term='heroku'/><category term='subversion'/><category term='ruby'/><category term='capacity'/><category term='deployment pipelines'/><category term='unit tests'/><category term='monad'/><category term='java rants'/><category term='woa'/><category term='feature branching'/><category term='musing'/><category term='web oriented architecture'/><category term='steve souder'/><category term='leadership'/><category term='paas'/><category term='context maps'/><category term='roa'/><category term='embedded documentation'/><category term='agile'/><category term='raas'/><category term='wicket'/><category term='amazon'/><category term='consulting'/><category term='ecommerce'/><category term='functional'/><category term='iaas'/><category term='tdd'/><category term='devops'/><category term='learning'/><category term='brian goetz'/><category term='thinking'/><category term='lean'/><category term='cvs'/><category term='grady booch'/><category term='soap'/><category term='cloud computing'/><category term='uncle bob martin'/><category term='patterns'/><category term='dvcs'/><category term='domain driven design'/><category term='deployment'/><category term='multi-tenant architecture'/><category term='bounded contexts'/><category term='yslow'/><category term='commentary'/><category term='web services'/><category term='fowler'/><category term='technical debt'/><category term='infoq'/><category term='ddd'/><category term='commitment'/><category term='ehcache'/><category term='domain specific language'/><category term='service oriented architecture'/><category term='functional programming'/><category term='corporate life'/><category term='iry'/><category term='walmart'/><category term='career'/><category term='retaining'/><category term='caching'/><category term='management'/><title type='text'>Technology Vulture</title><subtitle type='html'>Technology related ramblings on Web &amp;amp; Server Side Software Development, Java, Spring, LAMP, Open Source, Architecture, Scalability, Dynamic Languages, Agile Patterns and Anti-Patterns and anything else that might fall down from atop my high horse.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-6173303749306156702</id><published>2011-04-16T11:37:00.000-07:00</published><updated>2011-04-16T11:37:04.032-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><title type='text'>"Private Pyle, you are definitely born again hard. Hell, I may even allow you to serve as a rifleman in my beloved corp."</title><content type='html'>Over the past year I feel like perhaps I too have been born again hard. &amp;nbsp;After nearly a decade of increasing "responsibility" and the white papers, power points, project management - I even joined the ranks of the PMP for god knows what reason. &amp;nbsp;After all that, the TOGAF cert and EA boards and buzzword central, I'd had enough and re-joined the ranks of the engineer, tossing aside the&amp;nbsp;shackles&amp;nbsp;of enterprise architecture. &lt;br /&gt;&lt;br /&gt;Actually, I misspoke. &amp;nbsp;No choo-choos or&amp;nbsp;cantilevers&amp;nbsp;at my job. &amp;nbsp;Rather, I took my place again among the brotherhood of the developer. I'll admit I dislike the title of engineer as much as I do architect. &amp;nbsp;I'm not working on railroads, or crafting the next generation computer processor, just as I'm not designing buildings or bridges. &amp;nbsp;I'm developing software, which is still in its infancy and thus is still as much art as it is science. &amp;nbsp;That's what I love about it. &amp;nbsp;I'd forgotten what an aesthetically beautiful thing a well designed piece of software can be, even apart what it might do. &amp;nbsp;And I love it that I can look at what I wrote three months ago (or even three weeks ago) and see what a piece of shit it was. &amp;nbsp;It doesn't mean I'm a bad developer but that I'm continually becoming a better one. &lt;br /&gt;&lt;br /&gt;For now, I'll leave the houses to Frank&amp;nbsp;Lloyd&amp;nbsp;Wright.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-6173303749306156702?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/6173303749306156702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2011/04/private-pyle-you-are-definitely-born.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6173303749306156702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6173303749306156702'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2011/04/private-pyle-you-are-definitely-born.html' title='&quot;Private Pyle, you are definitely born again hard. Hell, I may even allow you to serve as a rifleman in my beloved corp.&quot;'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-6804668884742066924</id><published>2011-01-08T15:10:00.000-08:00</published><updated>2011-01-08T15:10:52.508-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional programming'/><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Fear of a Paren Planet</title><content type='html'>Is there a technical term for fear of excessive&amp;nbsp;parentheses? &amp;nbsp;If so, I am so afflicted. &amp;nbsp;These decease has kept me from embracing Lisp and Lisp-derived languages, including the latest hot&amp;nbsp;commodity, Clojure. &amp;nbsp;I really admire a lot of what Clojure is all about, especially its use of Software Transactional Memory, tight integration with Java / runs on the JVM, etc. &amp;nbsp;I'm a big fan of functional programming, having fallen in with a Scala crowd for a good chunk of 2010. &amp;nbsp;I've always been a fanatical immutability nut with my Java code, driving people nuts with my&amp;nbsp;incessant&amp;nbsp;use of final (and am happy to report my current client's technical leadership is similarly mad in this regard). &amp;nbsp;The stock of functional programming and&amp;nbsp;immutability will only rise as highly, even massively concurrent programs become norm in our multi-core world as Moore's Law gives way to Amdahl's Law.&amp;nbsp;&amp;nbsp;All of which should lead me to Clojure's door. &amp;nbsp;These parens, after all, are just syntax, only surface. &amp;nbsp;In a way the minimalist nature is beautiful. &amp;nbsp; So maybe now is the time to get over my irrational fear and take the plunge. &amp;nbsp;I don't think Clojure could take the place of Scala as my favorite functional language, though (even if Scala is in fact less pure in that department). &amp;nbsp;I'm also, in the end, an object snob and like the dual nature that Scala provides there: objects in the large and functional in the details. &amp;nbsp;But perhaps even that wall could come crashing down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-6804668884742066924?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/6804668884742066924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2011/01/fear-of-paren-planet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6804668884742066924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6804668884742066924'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2011/01/fear-of-paren-planet.html' title='Fear of a Paren Planet'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-1816732792172369000</id><published>2010-11-13T14:27:00.000-08:00</published><updated>2011-04-20T19:36:47.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fowler'/><category scheme='http://www.blogger.com/atom/ns#' term='iry'/><category scheme='http://www.blogger.com/atom/ns#' term='functional'/><category scheme='http://www.blogger.com/atom/ns#' term='monad'/><category scheme='http://www.blogger.com/atom/ns#' term='domain specific language'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Those who can do sometimes can still teach</title><content type='html'>I just finished &lt;a href="http://en.wikipedia.org/wiki/Martin_Fowler"&gt;Martin Fowler&lt;/a&gt;'s new opus, &lt;a href="http://www.amazon.com/Domain-Specific-Languages-Addison-Wesley-Signature-Martin/dp/0321712943"&gt;Domain Specific Languages&lt;/a&gt;. &amp;nbsp;Years in the making, it's a good read. &amp;nbsp;It's Fowler, so that's not a surprise: even if I disagreed with everything he wrote, I'd still enjoy reading his work. &amp;nbsp;I don't want to&amp;nbsp;regurgitate&amp;nbsp;it here but suffice to say that the book is laid out in a form familiar to Fowler fans (the first half is a narrative and the second, a reference). &amp;nbsp; You may not think &lt;a href="http://en.wikipedia.org/wiki/Domain-specific_language"&gt;DSL&lt;/a&gt;s affect what you're currently into but if you're involved with technology at all, you'd be wrong. &amp;nbsp;You might also be surprised at what Fowler considers DSLs and his ideas around &lt;a href="http://en.wikipedia.org/wiki/Fluent_interface"&gt;fluent interface&lt;/a&gt; driven APIs (fluent APIs are generally a bad thing from a design perspective when viewed purely in an&amp;nbsp;imperative&amp;nbsp;light but are essential in the context of a DSL).&lt;br /&gt;&lt;br /&gt;Speaking of good writers / communicators, I've been lucky enough to have been introduced to &lt;a href="http://james-iry.blogspot.com/"&gt;James Iry's blog&lt;/a&gt; in recent months, now that I've down deep into the &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt; rabbit hole at work. &amp;nbsp;I'm into my third month of every day Scala coding and loving it more having had a chance to develop in anger with the language. &amp;nbsp;I was off put by Scala when first playing around with it last year, thinking a hybrid Object/Functional language was a Bad Thing. &amp;nbsp;It most certainly can be a bad and overly complicated thing, but that's true more or less of any language in the wrong hands. &amp;nbsp;But with the right infrastructure built up around the scala core (maven plugins, the right libraries, Spring, Scala IDE plugins - Eclipse, Intellij and Netbeans all have working versions that are everyday getting better), it's the simplicity that I'm left with. &amp;nbsp;And I love the Object/Functional bifurcation (OO in the large and functional in the small tends to be the best approach for most things, I've found). &amp;nbsp;Anyway, back to James. &amp;nbsp;The key of success with Scala (or any functional language) is to understand the basics around FP. &amp;nbsp;One of the key concepts is the Monad. &amp;nbsp;The concepts and properties around Monads can be a tad intimidating to the uninitiated but like many things, at their core, Monads are pretty basic. &amp;nbsp;James has some of the best blog posts around such topics, laid out in such a way even us mere mortals finally get it. &amp;nbsp; His &lt;a href="http://james-iry.blogspot.com/2007/09/monads-are-elephants-part-1.html"&gt;4-parter on Monads&lt;/a&gt; are a case in point. &amp;nbsp;Check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-1816732792172369000?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/1816732792172369000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/11/those-who-can-sometimes-still-teach.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1816732792172369000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1816732792172369000'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/11/those-who-can-sometimes-still-teach.html' title='Those who can do sometimes can still teach'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-130206177952362878</id><published>2010-08-07T13:39:00.000-07:00</published><updated>2010-08-07T13:39:52.715-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='devops'/><category scheme='http://www.blogger.com/atom/ns#' term='development operations'/><category scheme='http://www.blogger.com/atom/ns#' term='deployment pipelines'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous delivery'/><title type='text'>Continuous Continuum</title><content type='html'>There are classics in technology literature, much like there is in any other category of writing. &amp;nbsp;Many classics are at least&amp;nbsp;superficially&amp;nbsp;dated and for more than a few, this runs deeper. &amp;nbsp;While this might be true for other forms, the rapid pace at which technology evolves means that a software engineering tome is much more&amp;nbsp;susceptible&amp;nbsp;to&amp;nbsp;obsolescence&amp;nbsp;than a novel concerning the folly of war. &amp;nbsp;And, of course, the pace at which something can attain "classic" status tends to be much quicker in the tech world as well. &amp;nbsp; &amp;nbsp;I think there are at least a few books out there (and more every year) that I keep coming back to, and not just as a novelty (like when I pick up one of my original X Windows books from the 80s for a chuckle). &amp;nbsp; &amp;nbsp;Fowler's &amp;nbsp;Refactoring, Brian Goetz's Concurrency in Java and Joshua Bloch's Effective Java are books that don't get old for me (and the later two are not great only within the context of the Java programming language).&lt;br /&gt;&lt;br /&gt;Well, there's a new book in town. &amp;nbsp;Too early to tell if it'll take its place among those other tomes in my pantheon, but I have a feeling it'll make it to the second tier (along side such notables as Sam Ruby's RESTful Web Services, Kent Beck's Test Driven Development, Peter Coad's Java Design and Martin Ordesky's Programming in Scala). &amp;nbsp;The book? &amp;nbsp;&lt;a href="http://continuousdelivery.com/"&gt;Continuous Delivery&lt;/a&gt;&amp;nbsp;by Jez Humble and David Farley. &amp;nbsp;It doesn't have anything ground breaking in it (technology books rarely do - the industry moves much too fast &amp;nbsp;while the publishing industry lumbers along much too slowly for that to happen). &amp;nbsp;But the subject itself is, to my mind, one of the most&amp;nbsp;fundamental&amp;nbsp;pieces of the IT pie, growing ever more&amp;nbsp;fundamental&amp;nbsp;as an organization grows. &amp;nbsp;It's also fundamental if utility computing is ever to approach its potential and become the underpinnings of a real enterprise level transformation (cloud everything hype aside). &amp;nbsp;&lt;br /&gt;&lt;br /&gt;I've been consulting for the better part of 10 years now and have probably spent about half that time in trying to bridge the gulf between development and operations (and the other half helping to automate bits and pieces of the build/deploy/provision/configure puzzle or troubleshooting problems when some manual portion of that death march went haywire). &amp;nbsp; &amp;nbsp;So it's a subject near and dear to my heart. &amp;nbsp;The book's well written and I'm liking it thus far (I just hope enough people who are not already members of the choir get their hands on this religion). &amp;nbsp; &amp;nbsp;Let's pray that it does.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-130206177952362878?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/130206177952362878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/08/continuous-continuum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/130206177952362878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/130206177952362878'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/08/continuous-continuum.html' title='Continuous Continuum'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-4430897054849624145</id><published>2010-05-30T13:54:00.001-07:00</published><updated>2010-05-30T13:54:24.864-07:00</updated><title type='text'>Deck Lifting</title><content type='html'>I'm cutting code on the deck and recovering from a wicked sunburn.  I know better than to venture outdoors without SPF 10000 plastered head to toe or a space suit.  But apparently not better enough.  I'm attempting to learn the lift framework by knocking out a pet store (hey, I'm relatively old school).   All part of my year-long scalification.  Lift is a nice web framework, not that we needed another to choose from.  I wouldn't pick it to use for a real world app, probably, but it suits my immediate needs.  It seems that even with all the fancy frameworks and increasing choice of languages, the LAMP stack still rules for large scale web apps, at least on the front end.  As it should be, though I personally haven't, living mostly in the world of enterprisey applications, except for the past three years when the large scale ecommerce platform I was a part of was Flash, JavaScript and Spring MVC.  Now I'm in the telecomm world and it's Flash/Flex and Spring MVC.  I try my best to stay out of the front end's hair for the most part (I'm not very good at it and prefer integration and backend server side challenges.  Which is where Scala shines.  So why then Lift?  First, it's well put together.  I'm always a sucker for well architected frameworks, whatever layer they serve.  Second, it provides a means by which a great deal of the language can be exercised in interesting ways. &lt;br /&gt;&lt;br /&gt;So, gotta get back to my light lifting.  And hiding from that evil sun.   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-4430897054849624145?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/4430897054849624145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/05/deck-lifting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4430897054849624145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4430897054849624145'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/05/deck-lifting.html' title='Deck Lifting'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-2276640272362387212</id><published>2010-04-17T15:06:00.000-07:00</published><updated>2010-04-17T15:06:30.234-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thinking'/><title type='text'>thinking about thinking</title><content type='html'>Despite my best intentions, I've neglected this blog. &amp;nbsp;I've been spending whatever spare time I've had on my other non-techie blogs and frankly haven't been taken with anything on the technology front that's inspired me much lately. &amp;nbsp;&lt;br /&gt;&lt;br /&gt;One thing I've noticed that certainly isn't inspiring has nonetheless been on my mind lately: thinking, or rather the lack of it. &amp;nbsp;It &amp;nbsp;has been an unfortunate constant to greater or lesser degree over the quarter century I've been making a living writing software: we too often as both developers and managers forget to include in time estimations what might well be the most important thing: time to think. &lt;br /&gt;&lt;br /&gt;Estimates might include the time it takes to "design" (usually, the time to type up the design or sketch it out), the time to type in the code and tests, time to debug, refactor, adjust, and time for documentation (user doc, examples, etc.). &amp;nbsp;Each of these activities as described are necessary things but are in the end essentially documenting the results of thinking. &amp;nbsp;The code documents your thinking so that the machine understands and can execute it, the debugger helps you figure out where your thinking has gone wrong (so do, obviously, your tests). &amp;nbsp;It seems to me, though, that the actual thinking itself is never raised as a formal activity. &amp;nbsp;Ideally, it shouldn't need to be (it should be assumed as the primary driver for everything else). &amp;nbsp;But in my experience that isn't always the case. All the rote things you have to do take time as well, and often if something doesn't fit into that vein, it's not considered. &amp;nbsp;Of course, you still have to do the thinking, but because no time has been allocated for it, it often gets rushed and relegated to a supporting part where it really ought to be the star. &amp;nbsp;Maybe it's just me, but I have a feeling in this case, it's not.&lt;br /&gt;&lt;br /&gt;Of course, this malady has been noted over the years by a number of folks. &amp;nbsp;Check out&lt;a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"&gt; Andy Hunt's Pragmatic Thinking and Learning&lt;/a&gt; for a great read that touches on this (among many other things).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-2276640272362387212?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/2276640272362387212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/04/thinking-about-thinking.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2276640272362387212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2276640272362387212'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/04/thinking-about-thinking.html' title='thinking about thinking'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-6502222625346068337</id><published>2010-03-13T17:02:00.000-08:00</published><updated>2010-04-03T18:39:56.100-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional programming'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Scala Revisited</title><content type='html'>I've gone over my love-hate relationship with Scala &lt;a href="http://technologyvulture.blogspot.com/2009/08/scala-columdrum.html"&gt;on these pages before&lt;/a&gt; but it's&amp;nbsp;skewed&amp;nbsp;toward love now that I've seen it in action for more than prototypes and poking around (it's used increasingly on the server-side with the products developed at my current client). &lt;br /&gt;&lt;br /&gt;I want to be clear that I'll always have reservations about any language that tries to straddle the&amp;nbsp;divide and be both object oriented and functional: it makes the language too big and too complex. &amp;nbsp;Scala's approach toward operator overloading (really, just allowing operator&amp;nbsp;characters&amp;nbsp;such as + and / and == as valid method names) has me flashing back to the nightmare of C++ debugging while having so many ways to shortcut different expression idioms bothers me as well; it allows you to write Perl-like self&amp;nbsp;obfuscating&amp;nbsp;code. &amp;nbsp;It's a positive trade-off for people with an&amp;nbsp;aversion&amp;nbsp;to typing but I'm sick: I enjoy writing and don't mind verbose expressions if they make things clearer, though I'm happy to be done with extraneous type declarations, parens and semi-colons.&lt;br /&gt;&lt;br /&gt;The thing I'm digging with Scala is the relative simplicity in reasoning about concurrent operations and the power of being able to pass around little chunks of functionality. &amp;nbsp;Now I know these aren't necessarily limited to functional languages: Ruby provides blocks/lambdas/closures and with Java 7's fork/join framework, the concurrency library of the JDK itself is helping to drain some of the&amp;nbsp;unnecessary&amp;nbsp;complexity out of concurrent programming with Java. &amp;nbsp;But the elegant and immutable nature of functional programming brings out the beauty of software development like I haven't experienced in a while. And all this from just perusing the stuff. &lt;br /&gt;&lt;br /&gt;I guess I'm lucky with my first taste of Scala in a real project. &amp;nbsp;It seems most of it is written pretty well. &amp;nbsp;That means not as a "better Java" ignoring the functional and Scala conventions and idioms. &amp;nbsp;It also means not using all the language bells and whistles - it's damn complex enough on its own. &amp;nbsp;You can write shitty code in any language and Scala will give you more than your share of rope in that regard - we haven't yet. &amp;nbsp;Then again, I haven't taken my first crack at it yet here. &amp;nbsp;:-)&lt;br /&gt;&lt;br /&gt;Speaking of things functional, there's some good info in &lt;a href="http://www.infoq.com/interviews/stuart_holloway_clojure;jsessionid=DE293F691E05A1CA0795C85C2ACCB16D"&gt;this InfoQ talk with Stuart Holloway on Clojure&lt;/a&gt;, &amp;nbsp;a more purely functional Lisp-like language for the JVM (and the CLR). &amp;nbsp; Makes me want to learn Clojure, but my brain's already full. &amp;nbsp;Besides, I'm more English Lit than I am Comp Sci and I need to get back to my roots again (I haven't picked up a non-techie book in a few weeks and think I'm going through some sort of withdrawal). &amp;nbsp;Then there are those two non-techie blogs I've been neglecting of late. &amp;nbsp;Thank god for the rain today so I can catch up ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-6502222625346068337?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/6502222625346068337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/03/scala-revisited.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6502222625346068337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6502222625346068337'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/03/scala-revisited.html' title='Scala Revisited'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-1444140847224971995</id><published>2010-02-20T11:07:00.000-08:00</published><updated>2010-02-20T11:07:57.970-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='platform architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><title type='text'>Enterprise Architecture is not Platform Architecture</title><content type='html'>The whole NOSQL thing has been a hot topic over the past year or so in  the tech blogosphere and I don't aim to add to the discussion (suffice to say that both relational and non-relational data stores have their place and it all depends on your requirements; this is not my area of religion). &amp;nbsp;No, the reason I bring it up has more to do with the larger concerns&amp;nbsp;behind the rising tide of NOSQL and other like uprisings against conventional enterprise architectural thinking. &lt;br /&gt;&lt;br /&gt;It seems that folks are starting to understand that those things very important to enterprise applications are often different than those most critical to an internet-scale application (or other what some like to call "platform" applications). &amp;nbsp;The people designing and developing these apps tend to come from the same community of technologists, with their own preconceptions of the architectural characteristics an application or system should have. &amp;nbsp;Since enterprise applications came first, you get the things important to them applied to platform systems, even when it might be clear to a dispassionate observer that different concerns should be at play. So you get ACID or even 2PC transactions at every corner, relational databases, lots of small custom applications, failures treated as fatal. &amp;nbsp;You might have some of those things in a platform architecture, but often they are not nearly as important as the twin towers of horizontal scalability and the expectation - and thus&amp;nbsp;resilience&amp;nbsp;in the face - of failure. &amp;nbsp; The middleware vendors orient their best practices around enterprise applications, since that's their bread and butter from a financial&amp;nbsp;perspective (but that just adds to the confusion).&lt;br /&gt;&lt;br /&gt;It's good to see that these preconceptions are being pushed aside as platform applications are becoming more&amp;nbsp;prevalent. &lt;br /&gt;&lt;br /&gt;Enterprise architecture can learn from platform architecture too. &amp;nbsp;I just hope folks don't go whole hog in the other direction ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-1444140847224971995?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/1444140847224971995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/02/enterprise-architecture-is-not-platform.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1444140847224971995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1444140847224971995'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/02/enterprise-architecture-is-not-platform.html' title='Enterprise Architecture is not Platform Architecture'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-1964338217111064695</id><published>2010-02-10T09:29:00.000-08:00</published><updated>2010-02-10T16:16:32.037-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='elastic search'/><category scheme='http://www.blogger.com/atom/ns#' term='heroku'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>things i'm paying attention to</title><content type='html'>Yeah, Yeah, I know: a list of things I'm "paying attention to" is just another way of saying that I have no ideas or opinions of my own at the moment. &amp;nbsp; Sort of like the tour guide at the Duff Brewery when he says, "We've got a lot of exciting new ideas in the works." &amp;nbsp;Homer presses him on it, "Like what?" &amp;nbsp; The guy is dumbfounded by the probing question and stands mute while we see a single pipe in the background originating from one big vat of beer and then splitting off into three chutes labeled Duff Dry, Duff Dark and Duff Regular. &amp;nbsp;Sort of like that. &lt;br /&gt;&lt;br /&gt;Actually, I have a lot of opinions and even some hair brained ideas. &amp;nbsp;Most of my &lt;i&gt;technology-related&lt;/i&gt; opinions &lt;i&gt;today&lt;/i&gt; are centered on the increasingly important constructs enabling software to run efficiently and correctly under truly (and highly) concurrent conditions. &amp;nbsp;Lots of adjectives there. &amp;nbsp;This is increasingly important for (at least) two reasons: 1.) More and more machines have more processors and more cores per processor and 2.) More organizations have the need for larger scale systems, generating more data, requiring significantly more parallel (read: concurrent) processing in order to match its scale. &amp;nbsp;Often this is distributed concurrency (which has its own challenges) but within that larger framework exist increased needs for in-process concurrency. &amp;nbsp; &amp;nbsp;Ya can't really scale up and take advantage of additional processors on a box if the software itself was not designed to execute concurrently. &amp;nbsp;That means doing it efficiently and correctly or suffering the consequences.&lt;br /&gt;&lt;br /&gt;Java 5 provided a whole host of high-order concurrency capabilities to the JDK with java.util.concurrent and Java 7 is adding the fork/join construct (the master of java concurrency, &lt;a href="http://www.ibm.com/developerworks/java/library/j-jtp11137.html#author1"&gt;Brian Goetz&lt;/a&gt;, explains the latter &lt;a href="http://www.ibm.com/developerworks/java/library/j-jtp11137.html"&gt;here&lt;/a&gt;). &amp;nbsp;Still, even when we get to the point where Java 7 goes first GA and then mainstream (a few years off), all of this good stuff is still fundamentally built on the concept of synchronizers guarding shared, mutable data, and that's pretty darn low level for your average developer to be able to reason about consistently. &amp;nbsp;One slip-up and you've got a ticking time bomb. &amp;nbsp;A time-bomb that often doesn't go off until you're in production running on machines with more and faster processors with additional cores than ya had in development or QA.&lt;br /&gt;&lt;br /&gt;Concurrency is something where Scala shines. I've &lt;a href="http://technologyvulture.blogspot.com/2009/08/scala-columdrum.html"&gt;written elsewhere on this blog&lt;/a&gt; about my love-hate relationship with Scala, but for highly concurrent capabilities running on a JVM, it's only love-love I have for this half-breed OO/functional concoction. &amp;nbsp;After all, Scala &lt;i&gt;&lt;b&gt;is&lt;/b&gt;&lt;/i&gt; short for scalable. &amp;nbsp;The reasons for this are two-fold: 1.) &lt;a href="http://ruben.savanne.be/articles/concurrency-in-erlang-scala"&gt;Scala's Erlang actor framework&lt;/a&gt; provides a high level mailbox messaging construct that is easy to reason about when it comes to formulating software that is correct in the face of concurrency&amp;nbsp;and 2.) Scala's functional programming&amp;nbsp;heritage&amp;nbsp;means it's easier and more efficient to make your data immutable than it is with Java, and we all know immutable data is one of concurrency's best friends.&lt;br /&gt;&lt;br /&gt;I said I was just going to list the things I'm paying attention to today, and so now I will:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.elasticsearch.com/"&gt;Elastic Search&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scala-lang.org/node/4587"&gt;Scala 2.8&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://heroku.com/"&gt;Heroku&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://akkasource.org/"&gt;Akka Project&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dbmsmusings.blogspot.com/2009/06/what-is-right-way-to-measure-scale.html"&gt;How to Measure Scale&lt;/a&gt; (an "oldie" but a goodie)&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.dzone.com/articles/comparison-gridcloud-computing?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+zones%2Farchitects+%28Architects+Zone%29"&gt;Comparison of grid frameworks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/springmvc_jsx-rs;jsessionid=320E6649D5519398C13B62947E4FF4F4"&gt;InfoQ Comparison of Spring MVC and JAX-RS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/Automating-Operations;jsessionid=320E6649D5519398C13B62947E4FF4F4"&gt;InfoQ: Automating Operations with Spring Batch and Spring Integration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2010/02/future-of-flash"&gt;InfoQ: The Future of Flash&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/jclouds/"&gt;JClouds&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/views/java/libraryview.jsp?site_id=1&amp;amp;contentarea_by=Java&amp;amp;sort_by=Date&amp;amp;sort_order=2&amp;amp;start=1&amp;amp;end=58&amp;amp;topic_by=&amp;amp;product_by=&amp;amp;type_by=All%20Types&amp;amp;show_abstract=true&amp;amp;search_by=practice:"&gt;IBM's Java Concurrency Practice Series by Brian Goetz, et. al.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-1964338217111064695?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/1964338217111064695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/02/things-im-paying-attention-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1964338217111064695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1964338217111064695'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/02/things-im-paying-attention-to.html' title='things i&apos;m paying attention to'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-4925710169398995077</id><published>2010-02-03T15:30:00.000-08:00</published><updated>2010-02-05T21:19:04.403-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='commentary'/><title type='text'>Agile by any other name might just be Salvageable</title><content type='html'>I agree totally with &lt;a href="http://www.gearstream.com/blog/14/59/CIO-Magazine-Forrester-Say-Agile-Is-Now-Mainstream-If-So-Be-Very-Afraid.html"&gt;Brad Murphy's fear of the coronation of Agile as "mainstream"&lt;/a&gt; by industry analysts and CIO magazine. &amp;nbsp; I've been working primarily as a consultant over the past decade or so and have been to a lot of organizations. &amp;nbsp;Sadly, all too often, "Agile" is rolled out as though it were a software package (just like SOA and now Cloud Computing). &amp;nbsp;They then declare themselves iterative and agile because they've instituted a couple of practices that are associated with "agile" (usually, things like continuous integration and refactoring and far less often things like test driven development and pair programming). &lt;br /&gt;&lt;br /&gt;Sometimes an organization actually really does try and do emergent design and truly iterative development but again, far too often, where they've gone this extra mile, they've declared the results a failure and stepped back from the ledge. &amp;nbsp;Of course, it fails usually because senior management does not also commit to these things and enforce their practices across all the stakeholders involved. &amp;nbsp;It was always, "Well, QA will still test things at the end." &amp;nbsp;Or, "we'll still run the project the way we have." &amp;nbsp;Or, "We'll still do up-front requirements gathering." Or, "production operations folks will still only accept the complete and 'final' version of the software." And almost always, "We already have a deadline and the features committed for that date." &amp;nbsp;This last is rarely flexible, even when in almost every case, things are delivered late and without all the features anyway. &amp;nbsp;Still, can't let senior management in on the fact that they've got their heads firmly buried in the sand.&lt;br /&gt;&lt;br /&gt;Not all organizations are like this of course. &amp;nbsp;And not all parts of even large organizations have fallen in this regard. &amp;nbsp;But a lot have. &amp;nbsp;And claiming agile is now truly mainstream is simply validating an organization's false understanding of what agile principles truly are.&lt;br /&gt;&lt;br /&gt;Perhaps, like SOA, we simply need now to find another name for Agile in order to save it from itself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-4925710169398995077?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/4925710169398995077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/02/agile-by-any-other-name-might-just-be.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4925710169398995077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4925710169398995077'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/02/agile-by-any-other-name-might-just-be.html' title='Agile by any other name might just be Salvageable'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-4215499820412134882</id><published>2010-01-27T12:03:00.000-08:00</published><updated>2010-02-04T09:50:09.949-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roa'/><category scheme='http://www.blogger.com/atom/ns#' term='resource oriented architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='service oriented architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='soap'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='saas'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='woa'/><category scheme='http://www.blogger.com/atom/ns#' term='web oriented architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Service Oriented Ambiguity Redux</title><content type='html'>I've been neglecting this blog in favor of my non-tech screeds for far too long now. &amp;nbsp;When I have posted, I've done so only to point out some particularly interesting (to me) ideas and opinions from others. &amp;nbsp;It's high time I put something out there that I'm particularly passionate about, so here goes ...&lt;br /&gt;&lt;br /&gt;One of the things that has irked me over the past five or so years are the many myths and misconceptions around &lt;a href="http://en.wikipedia.org/wiki/Service-orientation"&gt;Service Oriented&lt;/a&gt; Architecture (&lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;SOA&lt;/a&gt;) (or, as &lt;a href="http://en.wikipedia.org/wiki/Martin_Fowler"&gt;Martin Fowler&lt;/a&gt; rightly labeled it, &lt;a href="http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html"&gt;Service Oriented Ambiguity&lt;/a&gt;). &amp;nbsp;I'm pretty much in agreement with Fowler (as I usually am) that SOA has long become a hopelessly sprintered term that means everything from "&lt;a href="http://en.wikipedia.org/wiki/SOAP_(protocol)"&gt;SOAP&lt;/a&gt;" to "Business/Technology Organizational Transformation" and should be abandoned to the dustbin of techno history (not necessarily the things people mean when they say "SOA" but simply "SOA" itself). &amp;nbsp;Still, though the rampant hype has died down and replaced as the buzz word de jour by the equally ambiguous "&lt;a href="http://en.wikipedia.org/wiki/Cloud_Computing"&gt;Cloud Computing&lt;/a&gt;", SOA has stuck around. &amp;nbsp;So I'd like to at least state what it means to me, strictly from an technology architecture perspective.&lt;br /&gt;&lt;br /&gt;Generally, I tend to follow &lt;a href="http://thomaserl.com/"&gt;Tom Erl&lt;/a&gt;'s&amp;nbsp;literature when it comes to service orientation, particularly his &lt;a href="http://www.soaprinciples.com/"&gt;principles&lt;/a&gt; and the &lt;a href="http://www.soa-manifesto.org/"&gt;manifesto&lt;/a&gt; he spearheaded. &amp;nbsp;It quite literally means that your architecture is built and operates through the consumption and production of services. &amp;nbsp;Yeah, yeah - services don't necessarily mean web services. &amp;nbsp;Except that 99.9% of the time they do. &amp;nbsp;They certainly don't mean just any web services:&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Remote_procedure_call"&gt;RPC&lt;/a&gt;-based SOAP "services" are too often simply procedure calls wrapped up in http and XML dressing. &amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/REST"&gt;RESTful&lt;/a&gt; Services tend to be the most pure when they are really RESTful rather than just labeled that way (they all too often degenerate into "returning a bunch of shit wrapped in JSON/XML in response to a random http request"). &amp;nbsp;Of course, the best RESTful services often follow a &lt;a href="http://en.wikipedia.org/wiki/Resource_oriented_architecture"&gt;Resource Oriented Architecture (ROA)&lt;/a&gt;, which is somewhat different. &amp;nbsp;REST != SOA. &amp;nbsp;REST is an architectural &lt;i&gt;style&lt;/i&gt;, not an architecture. &amp;nbsp;Read &lt;a href="http://www.amazon.com/Restful-Web-Services-Leonard-Richardson/dp/0596529260"&gt;RESTful Web Services&lt;/a&gt; for more details on ROA. &amp;nbsp;And check out the &lt;a href="http://hinchcliffe.org/archive/2009/12/14/18179.aspx"&gt;Web Oriented Architecture (Un)-Manifesto&lt;/a&gt;, which is not just about REST, but WOA is to my mind much more interesting than "SOA" ever was.&lt;br /&gt;&lt;br /&gt;To get back to the point I'm trying to make, service oriented architecture means that the architecture of the system/platform/application itself is oriented around and talks services internally. &amp;nbsp;It does not necessarily mean that the system/platform/application exposes services for use by external entities. &amp;nbsp;You can have an architecture that exposes all kinds of wonderful web services for use by external clients and it might still be an ages-old monolith or a modern and perfectly reasonable component-based model. It's not necessarily service oriented. &amp;nbsp;I'd call it service exposed. &amp;nbsp;Likewise, you may expose no interfaces outside of the system itself, or you might publish an RPC API, but the internal architecture itself could still well be service oriented. &amp;nbsp;The interfaces exposed to the client should be&amp;nbsp;orthogonal&amp;nbsp;to the architecture of the underlying system implementing them. &amp;nbsp;Now, practically speaking, the two are likely to influence one another strongly, but the point is that they do not have to.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Software_as_a_service"&gt;Software as a Service (SaaS)&lt;/a&gt;&amp;nbsp;- and its offspring, &lt;a href="http://en.wikipedia.org/wiki/Platform_as_a_Service"&gt;Platform&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Infrastructure_as_a_Service"&gt;Infrastructure&lt;/a&gt; as Services - also get intermixed into this equation. SaaS as a term predates SOA by many years but is more popular than ever now, while its much-hyped children, PaaS and IaaS, are even more the rage with Cloud Computing at the forefront. &amp;nbsp;But each of these qualities of architecture have their own&amp;nbsp;inherent&amp;nbsp;characteristics, many not necessarily the most paramount or even applicable to service orientation (multi-tenancy, availability, scalability).&lt;br /&gt;&lt;br /&gt;Too often I see all these architectural characteristics lumped together or used&amp;nbsp;interchangeably&amp;nbsp;and thought that at least for my own clarity, I'd get my 2 cents on the matter down "on&amp;nbsp;record."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-4215499820412134882?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/4215499820412134882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/01/service-oriented-ambiguity-redux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4215499820412134882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4215499820412134882'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/01/service-oriented-ambiguity-redux.html' title='Service Oriented Ambiguity Redux'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-479092905675131091</id><published>2010-01-19T17:59:00.000-08:00</published><updated>2010-01-27T16:26:23.772-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musing'/><category scheme='http://www.blogger.com/atom/ns#' term='career'/><category scheme='http://www.blogger.com/atom/ns#' term='consulting'/><title type='text'>What I want to be when I grow up?  Well ...</title><content type='html'>I've made a recent move from full-time information technology architect for an e-commerce solutions provider back to the role I played for the seven years prior to joining that company in 2007: technology consultant. &amp;nbsp;Probably I'll be asked by clients to perform duties that on the surface seem pretty similar to those I was doing for my full-time employer; however, appearance can be&amp;nbsp;deceiving. &amp;nbsp;A lot of what you end up doing in a full-time gig, especially if you're in a senior role, only marginally relates to your "primary" responsibilities. &amp;nbsp;These "secondary" duties often consume a large chunk of the day (project management,&amp;nbsp;procurement&amp;nbsp;of hardware, software, etc.). &amp;nbsp;A consultant, on the other hand, is often hired to perform a very specific role for a very specific time period. &amp;nbsp;Sometimes organizations bring on consultants for an unspecified period of time to essentially fill a full-time position, but I'll be specifically shying away from those engagements this go-round.&lt;br /&gt;&lt;br /&gt;I'm not suggesting that one role is better than the other. &amp;nbsp;Both clearly have their pros and cons. &amp;nbsp;But I'm ready to focus more on the task(s) I feel I'm good at and that I like doing and consulting gives me what I feel is the best opportunity to do that. &amp;nbsp;Or to go broke trying. :-) &amp;nbsp;Of course, it'll also land me in places I'd rather not be (but I'll ensure that this only happens for short periods of time by keeping the contract lengths short). &amp;nbsp;With consulting, I have to keep on my toes over a broad spectrum of technologies so that I can be 'the expert' on short notice. &amp;nbsp;I like that. &amp;nbsp;I also have to deal with the uncertainty of (un)employment from time to time and the possibility of significant travel, which I don't like so much. &amp;nbsp;Still, on balance, the siren song of consulting finally won out, at least until I can find out what I really want to do when I grow up. :-)&lt;br /&gt;&lt;br /&gt;If I have my druthers, I'll be focusing on large scale web capacity, scalability and concurrency challenges and resulting solutions for clients. &amp;nbsp;That's where my passions are these days and will be how I orient my marketing message to potential clients. &amp;nbsp;But whatever the gig, I'll do my best to make the most of each&amp;nbsp;engagement, always on the look-out for that next special domain and/or organization that I might want to stick around with on a more permanent basis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-479092905675131091?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/479092905675131091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2010/01/figuring-out-what-i-want-to-be-when-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/479092905675131091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/479092905675131091'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2010/01/figuring-out-what-i-want-to-be-when-i.html' title='What I want to be when I grow up?  Well ...'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-5841154018628495176</id><published>2009-12-22T07:31:00.000-08:00</published><updated>2009-12-22T07:31:49.721-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='provisioning'/><title type='text'>Blogs with your Eggnog</title><content type='html'>I just love reading &lt;a href="http://teddziuba.com/"&gt;Ted Dziuba's blog&lt;/a&gt;. &amp;nbsp;The guy has a way with words and to top it off, a wonderfully cynical sense of humor. &amp;nbsp;The&amp;nbsp;&lt;a href="http://teddziuba.com/2009/12/how-i-spot-valuable-engineers.html"&gt;latest post&lt;/a&gt;&amp;nbsp;goes over his method for spotting engineering talent. &amp;nbsp;Specifically, how he determines who is and isn't a valuable engineer (his formula is valuable = smart + productive + battle-tested).&amp;nbsp;&amp;nbsp;He gleans the most information by figuring out what pisses the candidate off. &amp;nbsp;Particularly if it's some piece of a technology that they otherwise enjoy. &amp;nbsp; Good stuff.&lt;br /&gt;&lt;br /&gt;Another of my favorites from the blogosphere is &lt;a href="http://www.kitchensoap.com/"&gt;Kitchen Soap&lt;/a&gt;, an operations focused missive which subscribes to the development/ops (Dev/Ops)&amp;nbsp;philosophy&amp;nbsp;(sadly, it's a&amp;nbsp;philosophy&amp;nbsp;that is a long ways from catching on in most corporate IT departments).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nutrun.com/"&gt;Nutrun&lt;/a&gt;&amp;nbsp;(gotta love it for the name alone) is another I've been perusing of late, especially the &lt;a href="http://nutrun.com/weblog/incremental-deployment/"&gt;post related to incremental deployment&lt;/a&gt;,&amp;nbsp;since large scale deployment with lots of moving parts has been an increasing interest of mine.&lt;br /&gt;&lt;br /&gt;I see &lt;a href="http://www.infoq.com/news/2009/12/spring30"&gt;Spring 3.0 went final&lt;/a&gt;. &amp;nbsp;I still think Spring rocks, but there is increasing grumbling that the lightweight rebel who helped depose the bloated, self-satisfied Java EE king is itself getting a little bloated and self-satisfied (maybe there's some fear regarding SpringSource's new VMWare master and what it'll do to the technology). &amp;nbsp;Meanwhile, Java EE 6 has come out after a good while in the gym looking much more fit and useable again. Perhaps ready for another run at the crown? &amp;nbsp;Maybe. &amp;nbsp;I wouldn't go quite so far myself just yet. &amp;nbsp;Like I said, I still think Spring rocks.&lt;br /&gt;&lt;br /&gt;Speaking of Spring, I can't wait for it to get here - already sick of snow not even two days into winter ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-5841154018628495176?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/5841154018628495176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/12/blogs-with-your-eggnog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/5841154018628495176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/5841154018628495176'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/12/blogs-with-your-eggnog.html' title='Blogs with your Eggnog'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-4238266911427483534</id><published>2009-12-09T18:36:00.000-08:00</published><updated>2009-12-09T18:37:28.459-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='caching'/><category scheme='http://www.blogger.com/atom/ns#' term='capacity'/><category scheme='http://www.blogger.com/atom/ns#' term='ddd'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='bdd'/><category scheme='http://www.blogger.com/atom/ns#' term='gregor'/><category scheme='http://www.blogger.com/atom/ns#' term='data integration'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>Nothing new under the sun (perhaps I should say "under the oracle")</title><content type='html'>It's been a month since I've posted here and I sense this Technology Blather feels more than a bit neglected (especially if it's found out how active I've been on the other two non-techie blogs I maintain). &amp;nbsp;Frankly, I just haven't been feeling all that passionate about the world of technology lately - nothing has really floated my boat and gotten me fired up. &amp;nbsp; I'm always interested in unique solutions to web-scale capacity and concurrency problems, and data integration sort of falls into that bin for me as well. &lt;br /&gt;&lt;br /&gt;I've been piddling around with Erland and Scala around the house and checking out what folks are doing in the world of &lt;a href="http://www.infoq.com/articles/write-behind-caching"&gt;web and object caching&lt;/a&gt; for large-scale distributed systems. &amp;nbsp;But nothing to write home (or, more specifically, to write here) about.&lt;br /&gt;&lt;br /&gt;Gregor had &lt;a href="http://www.eaipatterns.com/ramblings/71_javaone.html"&gt;an interesting post&lt;/a&gt; just a bit ago. &amp;nbsp;Gregor doesn't post on his blog a whole lot, but when he does, it's always worth reading.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://teddziuba.com/2009/11/introducing-milo.html"&gt;Ted Dziuba&lt;/a&gt; is entertaining as always and introduced &lt;a href="http://milo.com/"&gt;Milo.com&lt;/a&gt;&amp;nbsp;late last month.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/presentations/bdd-and-ddd"&gt;Dan North talks&lt;/a&gt; about two of my favorite software development approaches (one pattern based and the other process based) and shows how they are in so many ways very much made for one another.&lt;br /&gt;&lt;br /&gt;But none of this is new under the sun - all of it is great but nothing earth shattering. &amp;nbsp;I'm hoping for good things come 2010 ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-4238266911427483534?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/4238266911427483534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/12/nothing-new-under-sun-perhaps-i-should.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4238266911427483534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4238266911427483534'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/12/nothing-new-under-sun-perhaps-i-should.html' title='Nothing new under the sun (perhaps I should say &quot;under the oracle&quot;)'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-2682689696762274643</id><published>2009-11-10T15:21:00.000-08:00</published><updated>2009-11-10T15:21:37.718-08:00</updated><title type='text'>More unique insights from other people's minds</title><content type='html'>Uncle Bob &lt;a href="http://blog.objectmentor.com/articles/2009/10/08/tdd-triage"&gt;recently posted his thoughts&lt;/a&gt; on test driven development couched in a critical light.&amp;nbsp; Not critical as in negative (this is TDD and Uncle Bob, after all).&amp;nbsp; Rather, critical in the sense that he attempts to ask those questions usually posed by TDD skeptics and then proceeds to answer them.&amp;nbsp;&amp;nbsp; I usually enjoy Uncle Bob's writing, but this one struck me as particularly well done (I really like its perspective).&lt;br /&gt;&lt;br /&gt;There's an &lt;a href="http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf"&gt;excellent presentation&lt;/a&gt; floating around of a keynote Google's Jeff Dean gave on building and maintaining very large, very distributed systems.&amp;nbsp; It's pretty good.&amp;nbsp; If you work with large scale systems, you should read it.&amp;nbsp; In fact, even if you don't, you should read it (it's likely you eventually will).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-2682689696762274643?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/2682689696762274643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/11/more-unique-insights-from-other-peoples.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2682689696762274643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2682689696762274643'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/11/more-unique-insights-from-other-peoples.html' title='More unique insights from other people&apos;s minds'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-7870107727455361443</id><published>2009-10-09T09:58:00.000-07:00</published><updated>2009-10-09T09:58:56.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><category scheme='http://www.blogger.com/atom/ns#' term='cucumber'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='bdd'/><title type='text'>Other Peoples Words (a lazy man's perspective)</title><content type='html'>Some really great tech articles this week that I'm digging on ...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/Closing-Gap-Apps-Ops-Jake-Sorofman"&gt;Closing the Gap Between Apps and Operations&lt;/a&gt; (this gap is one of my pet peeves)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/wilk-cucumber"&gt;Cucumbered&lt;/a&gt; (I can never get enough of this framework - love it)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/turning-on-a-sixpence"&gt;Deploying to Production Every Week&lt;/a&gt; (and the discipline to be able to pull it off)&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.springsource.com/2009/09/29/spring-framework-3-0-rc1-released/"&gt;Spring 3.0 RC 1 Overview&lt;/a&gt; (a good overview from one of Spring's two Dads) &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kitchensoap.com/2009/10/05/meanwhile-more-meta-metrics/"&gt;More Meta-Metrics &lt;/a&gt;(I love everything about this blog, but especially the attitude)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-7870107727455361443?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/7870107727455361443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/10/other-peoples-words-lazy-mans.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/7870107727455361443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/7870107727455361443'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/10/other-peoples-words-lazy-mans.html' title='Other Peoples Words (a lazy man&apos;s perspective)'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-6789048804389041970</id><published>2009-09-29T08:44:00.000-07:00</published><updated>2009-10-31T17:13:02.463-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sitebricks'/><title type='text'>She's a brickhouse ...</title><content type='html'>I'm digging the idea of &lt;a href="http://www.infoq.com/news/2009/09/google-sitebricks"&gt;Sitebricks &lt;/a&gt;and plan to take it for a test drive this weekend.&amp;nbsp; Maybe it'll reinvigorate my energy for web frameworks that has been exhausted by plethora of offerings out there, most of which seem pretty darn similar despite all their claims for uniqueness.&amp;nbsp; Even if I love it, though, it's unlikely I'll see it much in the enterprise (where I tend to spend my daytime hours).&amp;nbsp; Also, it would have to be pretty amazing - and different - for me to get over my anger a them for developing yet another web framework.&amp;nbsp; My bookshelves are getting heavy (even my virtual bookshelves have a weight limit, measured more in the strain on my eyes and frontal lobe than mass).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-6789048804389041970?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/6789048804389041970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/09/she-brickhouse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6789048804389041970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6789048804389041970'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/09/she-brickhouse.html' title='She&amp;#39;s a brickhouse ...'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-33504888886192119</id><published>2009-09-21T06:04:00.000-07:00</published><updated>2009-10-03T08:12:54.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><title type='text'>Passive-Agressive Developer Personalities - which one are you?</title><content type='html'>If you don't follow &lt;a href="http://teddziuba.com/"&gt;Ted Zuiba's blog&lt;/a&gt;, I recommend you check it out.&amp;nbsp; I love his sardonic sense of humor.&amp;nbsp; He can be pretty brutal with this commentary.&amp;nbsp; But, really, that's what's great about it.&amp;nbsp; Also, he's got some pretty cogent advice.&lt;br /&gt;&lt;br /&gt;As per usual, there's some interesting work afoot on the &lt;a href="http://www.agileweboperations.com/open-communication-stops-demotivating-your-team/"&gt;Agile Web Operations blog&lt;/a&gt;.&amp;nbsp; The latest is a great one on development team motivation.&amp;nbsp; Or rather, the supposition that development teams don't need motivation (they're already motivated when they come onboard, that's why they accepted the job offer).&amp;nbsp; We simply need to actively stop de-motivating them.&amp;nbsp; You might say this is just arguing semantics, but I think the difference in perspective is illuminating on many fronts.&amp;nbsp; At its heart is the notion of developer as thinking individual who takes an active interesting in learning new things and advancing their capabilities.&amp;nbsp; Developers who don't treat training as a 'let me just sit back and let the teacher wash this know-how over me' but rather 'this is a chance for me to learn - learning is the active verb here more so than teaching'.&amp;nbsp; I think you want to weed the passive 'teach-me' types out of the organization in favor of the 'let-me-get-in-there-and-learn' sort.&lt;br /&gt;&lt;br /&gt;But that's just me.&amp;nbsp; If you disagree, perhaps we can start a developer exchange program.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-33504888886192119?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/33504888886192119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/09/passive-agressive-developer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/33504888886192119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/33504888886192119'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/09/passive-agressive-developer.html' title='Passive-Agressive Developer Personalities - which one are you?'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-889350098394192546</id><published>2009-09-04T07:42:00.000-07:00</published><updated>2010-01-27T17:42:38.586-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fowler'/><category scheme='http://www.blogger.com/atom/ns#' term='dvcs'/><category scheme='http://www.blogger.com/atom/ns#' term='feature branching'/><title type='text'>The Spinning Continuous</title><content type='html'>Martin has posted &lt;a href="http://martinfowler.com/bliki/FeatureBranch.html"&gt;another interesting musing on Feature Branching&lt;/a&gt;.  It's particularly enlightening on its coverage of the thorny problems related to this practice with large scale concurrent (and sometimes conflicting) development - the Fear of the Big Merge - and how &lt;a href="http://en.wikipedia.org/wiki/Continuous_Integration"&gt;Continuous Integration&lt;/a&gt; can help.&lt;br /&gt;&lt;br /&gt;Martin points out that the more recent &lt;a href="http://en.wikipedia.org/wiki/Distributed_revision_control"&gt;Distributed Version Control Systems (DVCS)&lt;/a&gt; such as &lt;a href="http://git-scm.com/"&gt;Git &lt;/a&gt;have largely solved the visibility and understanding of syntactical or textual differences when merging but they can't solve the semantic differences.  And they aren't any help when refactorings have renamed, reshaped and morphed classes, methods, etc.  The pain of the Big Merge make folks reluctant to do the refactoring necessary to keep the code clean and relatively free of technical debt.&lt;br /&gt;&lt;br /&gt;Martin's answer: a variant on the old joke &lt;span style="font-style: italic;"&gt;'Doctor, it hurts when I do this.' 'So don't do that!'&lt;/span&gt;&lt;br /&gt;If the Big Merge is painful, don't do the Big Merge.  Do a continuous small merge and then when there are semantic uncertainties, communicate with the developer(s) working in that area.  Use CI to do the small merges and use your voice and brain to do the communication part.&lt;br /&gt;&lt;br /&gt;Simple, perhaps obvious advice - but the best kind usually is and it never hurts to hear it regularly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-889350098394192546?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/889350098394192546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/09/spinning-continuous.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/889350098394192546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/889350098394192546'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/09/spinning-continuous.html' title='The Spinning Continuous'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-3334913092189676110</id><published>2009-09-04T07:25:00.000-07:00</published><updated>2009-10-03T08:12:54.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raas'/><category scheme='http://www.blogger.com/atom/ns#' term='ecommerce'/><category scheme='http://www.blogger.com/atom/ns#' term='walmart'/><title type='text'>It's not innocuous as it might seem but neither as competent  as some might fear</title><content type='html'>&lt;a href="http://www.internetnews.com/ec-news/article.php/3837186"&gt;Walmart's announcement&lt;/a&gt; that they are opening up their e-commerce platform to third party retailers with Walmart Marketplace seems a logical move, just given their ginormous operational capabilities.  They'll likely not compete with Amazon in the cloud computing game any time soon (they're too much an old school brick and mortar outfit for that.  But &lt;a href="http://www.ebizq.net/blogs/connectedweb/2009/09/walmart_offers_retailing_as_a.php"&gt;Retail as a Service&lt;/a&gt; (or the more general &lt;a href="http://blogs.msdn.com/davidlem/archive/2006/12/04/business-process-as-a-service-meta-layers-and-designers.aspx"&gt;Process as a Service&lt;/a&gt; as some are calling it) is perhaps a much more lucrative biz and the old boys in Arkansas (or at least the young turks who have the old boys ear) are coming to understand this.&lt;br /&gt;&lt;br /&gt;It's kind of scary but should be interesting to watch.&lt;br /&gt;&lt;br /&gt;I guess I'm not as nervous as perhaps I should be simply because I'm guessing they have enough folks in the big seats in the executive bathrooms who are clueless when it comes to a business/technology marriage. And, more importantly, another group in the slightly smaller stalls with the slight less puffy TP who have just enough of a clue that they'll stumble around a good while before acquiring solid footing in this brave new world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-3334913092189676110?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/3334913092189676110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/09/it-not-innocuous-as-it-might-seem-but.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/3334913092189676110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/3334913092189676110'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/09/it-not-innocuous-as-it-might-seem-but.html' title='It&amp;#39;s not innocuous as it might seem but neither as competent  as some might fear'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-4723289732902915998</id><published>2009-08-23T17:33:00.000-07:00</published><updated>2009-10-03T08:12:54.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='soap'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>'She was a cute little ruin that he pulled out of the rubble. Now they are both living in a soft soap bubble' - Declan McManus, 2002</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_abw9jtqKT80/SpHqzvFK6uI/AAAAAAAAAlw/DFG2K1pM0TY/s1600-h/soap.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5373334004962093794" src="http://4.bp.blogspot.com/_abw9jtqKT80/SpHqzvFK6uI/AAAAAAAAAlw/DFG2K1pM0TY/s200/soap.jpg" style="cursor: pointer; float: left; height: 121px; margin: 0pt 10px 10px 0pt; width: 116px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://soa.dzone.com/news/rest-soap"&gt;Another REST versus SOAP post &lt;/a&gt;  to chew on.  I usually steer clear of this well-worn subject like the plague, but for whatever reason started skimming this post and it's kind of useful.  I know, I know - REST isn't a protocol, it's an architecture style that's thrown about loosely for a lot of things and you can (in a narrow sense, with enough effort) "do" REST using SOAP (2.0).&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_abw9jtqKT80/SpHq7sL0MCI/AAAAAAAAAl4/Nt6jE8O1C_g/s1600-h/rest.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5373334141623611426" src="http://2.bp.blogspot.com/_abw9jtqKT80/SpHq7sL0MCI/AAAAAAAAAl4/Nt6jE8O1C_g/s200/rest.jpg" style="cursor: pointer; float: right; height: 119px; margin: 0pt 0pt 10px 10px; width: 116px;" /&gt;&lt;/a&gt;&lt;br /&gt;Maybe it's the pragmatist in me but I think it comes down to what the consumer needs are. You remember them, right?  What do they look like?  Do they need the WSDL trappings or any of the WS-* protocols that require SOAP as their base?   Are their message exchange patterns consistent with a RESTful style or a more message or RPC based approach?&lt;br /&gt;&lt;br /&gt;The answer can be neither - some of the best Web Services out there today are not either REST or SOAP.   Many of Google and Yahoo's Web Services are "REST-like" or "REST with extensions".   Some of Amazon's Web Services are SOAP, some are quasi RESTful, some are Query style and some RPC-ish.&lt;br /&gt;&lt;br /&gt;It's all about what the current consumers want.  Make the implementations such that it'll be easy to add additional flavors if you come across new consumers who need something else, but do it then, not now.  They're not your consumers yet.&lt;br /&gt;&lt;br /&gt;You might be gun-shy because you've made those 'narrow' decisions in the past and then it took so much effort to add additional capabilities like this after the fact.   That's not a problem of the interfaces you expose, though - that's a probably with the implementation.   Doc, it hurts when I do this.  Then don't do that.&lt;br /&gt;&lt;br /&gt;You do remember your consumers, right Brett?  Oh, I'm sorry - did I break your concen&lt;a href="http://2.bp.blogspot.com/_abw9jtqKT80/SpHqD4LLWzI/AAAAAAAAAlo/SmFFdaZgq9U/s1600-h/pulp-fiction.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5373333182769486642" src="http://2.bp.blogspot.com/_abw9jtqKT80/SpHqD4LLWzI/AAAAAAAAAlo/SmFFdaZgq9U/s200/pulp-fiction.jpg" style="cursor: pointer; float: right; height: 104px; margin: 0pt 0pt 10px 10px; width: 200px;" /&gt;&lt;/a&gt;tration?&lt;br /&gt;&lt;br /&gt;Perhaps if all of the great technology debates were framed within the bounds of &lt;a href="http://www.imdb.com/title/tt0110912/"&gt;Pulp Fiction&lt;/a&gt;, the world would be a  less complex (if more violent and foul mouthed) place.&lt;br /&gt;&lt;br /&gt;Actually, it could never be more violent than it is already (and this would be over-the-top movie stylized mayhem).&lt;br /&gt;&lt;br /&gt;And if it's more foul mouthed, what the fuck is wrong with that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-4723289732902915998?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/4723289732902915998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/was-cute-little-ruin-that-he-pulled-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4723289732902915998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4723289732902915998'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/was-cute-little-ruin-that-he-pulled-out.html' title='&amp;#39;She was a cute little ruin that he pulled out of the rubble. Now they are both living in a soft soap bubble&amp;#39; - Declan McManus, 2002'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_abw9jtqKT80/SpHqzvFK6uI/AAAAAAAAAlw/DFG2K1pM0TY/s72-c/soap.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-8849564615699044806</id><published>2009-08-21T14:38:00.000-07:00</published><updated>2009-10-03T08:12:54.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='commitment'/><title type='text'>I stand convicted of not showing my conviction more</title><content type='html'>Wow - &lt;a href="http://teddziuba.com/2009/08/stop-using-the-word-we.html"&gt;great post here about responsibility and conviction&lt;/a&gt;.  I know I'm guilty-as-charged at using the passive 'we' when pointing out 'challenges'.  There is a difference between using tact and turning the work place into pre-school. "Everyone gets a prize, no one is better or worse than anyone else.  Nap time between 2 - 4."&lt;br /&gt;&lt;br /&gt;If everyone gets rewarded along with those who deserve it, the sharp and motivated folks on the team see that, then they'll be motivated to work somewhere else.&lt;br /&gt;&lt;br /&gt;Before you know it, you've spun Darwin upside down with a corporate survival of the complacent and that becomes the prevalent attitude of the organization.&lt;br /&gt;&lt;br /&gt;And that's no survival at all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-8849564615699044806?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/8849564615699044806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/i-stand-convicted-of-not-showing-my.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/8849564615699044806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/8849564615699044806'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/i-stand-convicted-of-not-showing-my.html' title='I stand convicted of not showing my conviction more'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-2993001930091870527</id><published>2009-08-20T15:22:00.000-07:00</published><updated>2009-10-03T08:12:54.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>I'm still waiting for a World World Conference</title><content type='html'>You know you've arrived as a technology when you get a 'World' conference named after you.  Such apparently &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=57054"&gt;is the case&lt;/a&gt; with &lt;a href="http://hadoop.apache.org/"&gt;Apache Hadoop&lt;/a&gt;, the Java-based distributed data storage and analysis framework built by &lt;a href="http://blog.lucene.com/"&gt;Doug Cutting&lt;/a&gt; and others initially while developing the &lt;a href="http://lucene.apache.org/"&gt;Lucene&lt;/a&gt;-based &lt;a href="http://lucene.apache.org/nutch/"&gt;Nutch&lt;/a&gt; Search Engine, on a foundation of its own distributed file system and &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt;'s &lt;a href="http://en.wikipedia.org/wiki/MapReduce"&gt;Map-Reduce&lt;/a&gt; programming model. This might seem like a particularly narrow focus for a technology conference but it goes to show the many and varied uses of Hadoop by the industry.&lt;br /&gt;&lt;br /&gt;The conference won't really be about Hadoop, of course - it'll be about getting a look at the details behind all those interesting problems people are using the framework to help solve.  This class of problem is anything but narrow.  Massively distributed, massively concurrent data storage, retrieval and analysis/processing challenges are an ever growing reality for an ever growing percentage of IT shops across the world.  It certainly is where I hang my hat (or where I would hang my hat if I was losing my hair and needed to wear one).   We don't yet use Hadoop (or the techniques behind it) but we probably should.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-2993001930091870527?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/2993001930091870527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/i-still-waiting-for-world-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2993001930091870527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2993001930091870527'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/i-still-waiting-for-world-world.html' title='I&amp;#39;m still waiting for a World World Conference'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-4121662890819228662</id><published>2009-08-18T06:59:00.000-07:00</published><updated>2009-10-03T08:12:54.598-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='ehcache'/><title type='text'>Layin' about lying in bed - maybe it was something that I thought I said (feverishly caching agile memories)</title><content type='html'>I'm running a fever and have given up all hope of concentrating on anything work wise today so it's time to cruise through the blogosphere, catching up on my tech favs.  Of course, what might seem genius to me now could be crap when I'm lucid again.&lt;br /&gt;&lt;br /&gt;Keeping that in mind ...&lt;br /&gt;&lt;br /&gt;I recommend taking a thorough read through &lt;a href="http://blog.dynatrace.com/2009/08/13/java-memory-problems/"&gt;this post on Java memory problems&lt;/a&gt;.  It might be seemingly obvious to many that have been in the Java game for awhile, so it's all the more reason to give it some attention.  We tend to gloss over what is 'obvious' and then are surprised when we're tripped up by it.   And we invariably are.&lt;br /&gt;&lt;br /&gt;Here's an interesting white paper on &lt;a href="http://scalingsoftwareagility.files.wordpress.com/2009/08/the-agile-enterprise-big-picture.pdf"&gt;rolling out agile to large enterprise&lt;/a&gt;.  It's a good overview of large scale organizational and process structure. Of course, read it with a realistic attitude.  We all know there is never an end-all be-all anything and this goes in particular for things of an organizational nature.   Organizations are comprised of people and those pesky carbon-based water bags are always the biggest wild card, no matter how much we might want to make analogies with inanimate objects (it's an apples-to-carburetor comparison, which isn't very useful).  The kinda folks that live by these analogies are of course human themselves (well, most of them are, most of the time).   Which means that they inevitably end up demonstrating the fallacy of their own position, to others, anyway, if not to themselves.&lt;br /&gt;&lt;br /&gt;A certain executive standard bearer for the periodic table very recently compared software developers to automated dishwashers during a discussion.  Ironically, this was in a meeting whose primary goal involved quantifying the monetary value of agile.  He had a valid point (there is not a 'bad' and 'good', binary with people - it's a scale) but the analogy used to make it was bogus (and the scale off - it's not a linear scale by any stretch).&lt;br /&gt;&lt;br /&gt;But I digress, check out the white paper. All other things being equal, you have to organize such that your software boundaries align to the extent they can with your organizational boundaries so that you minimize cross org communications requirements (that's overhead not directly related to the value prop) and at the same time can better instill a sense of ownership and pride within the team by delivering deploy able, usable software.&lt;br /&gt;&lt;br /&gt;But maybe that's just the fever talking ...&lt;br /&gt;&lt;br /&gt;Hey &lt;a href="http://www.infoq.com/news/2009/08/terracotta-buys-ehcache"&gt;good news &lt;/a&gt;for those of us who are EHCache users and have a stake in its continued success and growth but who are also fans of (or at least have seen some exciting potential in) Terracotta.  Terracotta has hired on EHCache maintainer Greg Luck and will now be distributing and supporting the EHCache code base.  They be gearing up to be gunning for Cameron and Oracle Coherence, so says Eric in not-so-many words.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-4121662890819228662?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/4121662890819228662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/layin-about-lying-in-bed-maybe-it-was.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4121662890819228662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/4121662890819228662'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/layin-about-lying-in-bed-maybe-it-was.html' title='Layin&amp;#39; about lying in bed - maybe it was something that I thought I said (feverishly caching agile memories)'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-7775426751697952014</id><published>2009-08-14T08:04:00.000-07:00</published><updated>2009-10-03T08:12:54.591-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='lean'/><category scheme='http://www.blogger.com/atom/ns#' term='infoq'/><title type='text'>Teenage Wasteland and Virtual Spring Cleaning</title><content type='html'>There's an&lt;a href="http://www.infoq.com/news/2009/08/seven-wastes-intro"&gt; interesting read on InfoQ&lt;/a&gt; (well, there's always something worthwhile there, it seems) that adapts &lt;a href="http://en.wikipedia.org/wiki/Muda_%28Japanese_term%29"&gt;Shigeo Shingo's Toyota Production System (TPS) Seven Wastes&lt;/a&gt; to Software Development.  It's a summary of the ongoing work at &lt;a href="http://agilesoftwaredevelopment.com/blog/jackmilunsky/7-wastes-part-1-partially-done-work"&gt;Agile Software Development&lt;/a&gt; and certainly not a new topic.  I've bitched these seven wastes here at least once before.  It might be my biggest professional/corporate pet peeve outside of misaligned organizational boundaries.  And it's much 'easier' (relatively speaking) to solve.&lt;br /&gt;&lt;br /&gt;One of the wastes listed is having 'completed' software that is not deployed into production.  This is an all-too-common oxymoron in corporate technology shops the world over.  As the saying goes, 'It ain't complete until it hits the street'.   Or something to that effect.&lt;br /&gt;&lt;br /&gt;Remember, &lt;a href="http://www.infoq.com/articles/deployment-is-the-goal"&gt;d&lt;/a&gt;&lt;a href="http://www.infoq.com/articles/deployment-is-the-goal"&gt;eployment is the goal&lt;/a&gt;, not 'code complete' or 'QA passed'.&lt;br /&gt;&lt;br /&gt;But the genesis of this is that damn misaligned organizational boundary problem sticking its nose into things again: when people are so stove-piped and specialized into their little corner of the product lifecycle, why be surprised when they think things are 'done'?&lt;br /&gt;&lt;br /&gt;Most of the companies with this organizational malady were likely not always afflicted in this way.  It's the result of growth (sometimes, very rapid growth).   Fixing it is not easy but nothing worthwhile ever is.  I think I've reached my quota of cliches for the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-7775426751697952014?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/7775426751697952014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/teenage-wasteland-and-virtual-spring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/7775426751697952014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/7775426751697952014'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/teenage-wasteland-and-virtual-spring.html' title='Teenage Wasteland and Virtual Spring Cleaning'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-5374689435766003905</id><published>2009-08-11T06:37:00.000-07:00</published><updated>2009-10-03T08:12:54.396-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grady booch'/><title type='text'>Grady</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_abw9jtqKT80/SoGG5Yk0hiI/AAAAAAAAALk/obncRw9Tad8/s1600-h/booch.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5368720551209895458" src="http://1.bp.blogspot.com/_abw9jtqKT80/SoGG5Yk0hiI/AAAAAAAAALk/obncRw9Tad8/s200/booch.jpg" style="cursor: pointer; float: right; height: 123px; margin: 0pt 0pt 10px 10px; width: 107px;" /&gt;&lt;/a&gt;&lt;br /&gt;I see that Grady Booch is &lt;a href="http://www.handbookofsoftwarearchitecture.com/index.jsp?page=Main"&gt;brewing up a software architecture handbook&lt;/a&gt;.  I'll certainly keep an eye on this.&lt;br /&gt;&lt;br /&gt;Booch is still a very good writer and his ideas around process and architecture in the early 90s were at the time pretty revolutionary.   Fourteen years later, &lt;a href="http://www.amazon.com/Object-Solutions-Object-Oriented-Addison-Wesley-Technology/dp/0805305947"&gt;Object Solutions&lt;/a&gt; is still one of my favorite tech books.&lt;br /&gt;&lt;br /&gt;Over the past decade, UML and the Unified Process (UP) have been targeted as 'heavyweight' and anti-agile.  But much of the real criticisms are misplaced - it's not the modeling language or development (meta) process that's at fault but the literal way in which they've both been interpreted and regurgitated.&lt;br /&gt;&lt;br /&gt;And I blame Rational (later, IBM), with their heavy handed tooling, particularly the Rational Unified Process (RUP).&lt;br /&gt;&lt;br /&gt;RUP != UP.&lt;br /&gt;&lt;br /&gt;Hell, UP doesn't even equal UP.  It was badly named.  Shoulda been Unified Meta Process or Unified Process Template.&lt;br /&gt;&lt;br /&gt;UP was the first truly 'mainstream' development process (or process-like thing) espousing an iterative and incremental approach.  Unfortunately, because it was in fact a meta-process and attempted to be an all encompassing template rather than a singular process or method,  mainstream IT started doing what they do best: blinding/literally applying *everything* in it.&lt;br /&gt;&lt;br /&gt;It was only a matter of time before you had RUP dictators mandating the whole kit and kaboodle, and then you could hear the gears of progress grinding to a halt, budgets being blown and trees the world over mourning their genocide in the name of the grand Heavy Weight Methodology.&lt;br /&gt;&lt;br /&gt;Yes, Grady worked for (in fact, founded) Rational and so deserves a lot of the blame.  But he was off 'on tour' as a tech rock star by the time RUP and the prescriptive tooling were rolled out.&lt;br /&gt;&lt;br /&gt;And none of this changes the fact that the man can communicate effectively.  Both his writings and his talks are unfailingly interesting and usually useful too.&lt;br /&gt;&lt;br /&gt;So I'll keep my eye on this latest from one of my tech heroes of the 90s.  He may have been subsumed in my eyes by Fowler and Goetz and Bloch and Beck, but I'll continue listening.&lt;br /&gt;&lt;br /&gt;He did after all, give us Clouds (no, not cloud computing - the arguably even more influential cloud diagrams).&lt;br /&gt;&lt;br /&gt;Speaking of Grady, check out &lt;a href="http://www.redmonk.com/cote/2008/06/09/grady-booch-on-multi-core-uml-dsls-at-rsdc-2008/"&gt;this discussion&lt;/a&gt; he had with &lt;a href="http://www.redmonk.com/cote/"&gt;Michael Cote&lt;/a&gt; on a variety of topi&lt;a href="http://1.bp.blogspot.com/_abw9jtqKT80/SoGG-WR8ylI/AAAAAAAAALs/Mltw4S8X9gI/s1600-h/Grady-SS.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5368720636493220434" src="http://1.bp.blogspot.com/_abw9jtqKT80/SoGG-WR8ylI/AAAAAAAAALs/Mltw4S8X9gI/s200/Grady-SS.jpg" style="cursor: pointer; float: right; height: 150px; margin: 0pt 0pt 10px 10px; width: 113px;" /&gt;&lt;/a&gt;cs last year.  Concurrency, DSLs, UML, etc.  Pretty good.  Boy, Grady is looking ever more the part of the wise old guru on the mountain top (or maybe just more like his 'namesake' from Sanford and Son). Pretty far from his days at the Air Force Academy.&lt;br /&gt;&lt;br /&gt;Hey, I still buy the new Springsteen albums when they come out, and the Clash overtook him in my book back in 1978.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-5374689435766003905?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/5374689435766003905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/grady.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/5374689435766003905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/5374689435766003905'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/grady.html' title='Grady'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_abw9jtqKT80/SoGG5Yk0hiI/AAAAAAAAALk/obncRw9Tad8/s72-c/booch.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-6497600665889404272</id><published>2009-08-10T10:38:00.000-07:00</published><updated>2009-10-03T08:12:54.584-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hiring'/><category scheme='http://www.blogger.com/atom/ns#' term='amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='recruiting'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='retaining'/><title type='text'>In the land of the blind, the one-eyed man is visionary</title><content type='html'>Apparently not satisfied with the quality of on-the-market technology talent in the real world, Amazon held &lt;a href="http://www.allthingsdistributed.com/2009/07/amazon_is_inworld_and_hiring.html"&gt;a job fair on Second Life recently&lt;/a&gt;.  Huh.  Seems they were looking to fill actual, flesh-and-blood positions.&lt;br /&gt;&lt;br /&gt;It's an interesting angle.   Attracting and retaining quality people are two of the hardest things an organization can do.  Talent retention is the more complicated of the two, but it's not a discrete thing (it's the culture and vision and day-to-day operation of the organization itself that is going to do the heavy lifting there).&lt;br /&gt;&lt;br /&gt;Attracting good people also has to do with vision, culture, day-to-day stuff, since that often manages to leak out to the general community (especially if the community is small enough) but there is a discrete, deliberate and focused part of attraction that ya gotta work on as well.&lt;br /&gt;&lt;br /&gt;Let's take an organization that is primarily a Java-based technology company.   In the Philadelphia area in mid-2009, the Java community is fairly large but the percentage of those active in social events such as the Java User Group (JUG) is relatively small.  They like to talk, though.  About what makes an organization worth working for and what doesn't.  Word of mouth about any Java centric organization of size spreads pretty quickly, for good or ill.  It's uncannily accurate in the facts but rarely possesses all of the truth (usually because even the folks working at an organization likely don't know what that is).&lt;br /&gt;&lt;br /&gt;It takes a concerted 'marketing' effort to help keep the community vibe positive, especially if other parts of your organization are unknowingly tipping the scale in the other direction.  You have to make your technology investments very public, especially if you are digging into areas of interest to local talent.   Give your best and brightest time to present at local events and actively participate in forums and such.  The best software developers will always recruit more real talent than an army of recruiters will.&lt;br /&gt;&lt;br /&gt;If you don't have technology visionaries somewhere in senior management, though, you'll always be swimming upstream.   You might be able to band together with other like-minded folks and if you work hard enough and are lucky enough, turn the tide and reverse the flow.   If the senior management realizes that the vision thing is missing among them and they trust enough in the rank-and-file technology leadership, this might just work.  If however you have an activist executive force that feels they possess the vision, two things will happen:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;they'll be right and the organization will fail because the grunts on the ground do not believe in them&lt;/li&gt;&lt;li&gt;you'll be right and the organization will fail because those on high don't believe in the ones charged with delivering on the dream.   &lt;/li&gt;&lt;/ol&gt;In the end, the failure in either case won't be spectacularly obvious to outsiders and it won't happen quickly.  Think &lt;a href="http://en.wikipedia.org/wiki/White_dwarf"&gt;white dwarf&lt;/a&gt; rather than &lt;a href="http://en.wikipedia.org/wiki/Supernova"&gt;supernova&lt;/a&gt;.  In fact, it will likely be declared as a small victory of some sort.  I'm sure if you've spent more than a few years in corporate America, you'll recognize these hollow "victories".&lt;br /&gt;&lt;br /&gt;If you're committed in any way to your organization, ya gotta fight the power to prevent these "victories" from happening.&lt;br /&gt;&lt;br /&gt;Software people know that "&lt;a href="http://www.martinfowler.com/ieeeSoftware/failFast.pdf"&gt;fail fast&lt;/a&gt;" can be a very good thing indeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-6497600665889404272?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/6497600665889404272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/in-land-of-blind-one-eyed-man-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6497600665889404272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6497600665889404272'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/in-land-of-blind-one-eyed-man-is.html' title='In the land of the blind, the one-eyed man is visionary'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-63852449913733652</id><published>2009-08-10T10:36:00.000-07:00</published><updated>2009-10-03T08:12:54.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit tests'/><category scheme='http://www.blogger.com/atom/ns#' term='infoq'/><category scheme='http://www.blogger.com/atom/ns#' term='uncle bob martin'/><category scheme='http://www.blogger.com/atom/ns#' term='technical debt'/><title type='text'>New and Noteworthy,Tidbits and Doodads</title><content type='html'>Check out&lt;a href="http://www.infoq.com/news/2009/07/Better-Unit-Tests"&gt; Building better Unit Tests&lt;/a&gt; on InfoQ - it's Mom and Apple Pie but it never hurts to have it repeated. On a somewhat related topic, &lt;a href="http://www.infoq.com/news/2009/07/junit-4.7-rules"&gt;new bits in JUnit version 4.7.&lt;/a&gt; Also, &lt;a href="http://martinfowler.com/bliki/IllustrativeProgramming.html"&gt;a post I missed when it appeared a couple of weeks ago from Fowler&lt;/a&gt; that is, as usual for him, thought provoking.&lt;br /&gt;&lt;br /&gt;And &lt;a href="http://blog.objectmentor.com/articles/2009/05/20/clean-code-and-battle-scarred-architecture"&gt;wise words from Uncle Bob&lt;/a&gt;: All systems are collections of historical compromises. I'd add that the longer the compromises have been around, the more likely they've given birth to descendant compromises (such a family tree can span several generations in the space of a few short years). Often this family amasses a fortune in technical debt (rare is the system that has a family filled with technical trust fund babies - if you find one, latch onto it and don't let it go).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-63852449913733652?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/63852449913733652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/new-and-noteworthytidbits-and-doodads.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/63852449913733652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/63852449913733652'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/new-and-noteworthytidbits-and-doodads.html' title='New and Noteworthy,Tidbits and Doodads'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-1780204762996615756</id><published>2009-08-10T10:35:00.000-07:00</published><updated>2009-10-03T08:12:54.343-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional testing'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='bdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>BDD != functional testing</title><content type='html'>&amp;nbsp;Why did Behavior Driven Development morph into "functional testing", somehow separate from Test Driven Development?  That was certainly not Dan North's intent when he devised BDD.  Ironically, he came up with it as a response to people's misconception of TDD as being about testing.  He thought that creating a 'new' way of doing things ("new" in the window dressing sense) with precise language would put the emphasis on behavior rather than testing.  But behavior doesn't mean functional testing.  You can test the behavior of a single method of a single class using BDD and that's as narrowly scoped, white-box, unit test as you can get.  If you express it using the BDD ubiquitous language, it's BDD (whether through tooling, or a Domain Specific Language or simply using Given/When/Then naming conventions within your unit test suite).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-1780204762996615756?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/1780204762996615756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/bdd-functional-testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1780204762996615756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1780204762996615756'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/bdd-functional-testing.html' title='BDD != functional testing'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-8082349165237288034</id><published>2009-08-10T10:34:00.000-07:00</published><updated>2009-10-03T08:12:54.577-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='bdd'/><title type='text'>Time off for good behavior</title><content type='html'>&lt;a href="http://dannorth.net/"&gt;Dan North&lt;/a&gt; has a &lt;a href="http://www.infoq.com/presentations/bdd-dan-north"&gt;great talk on Behavior Driven Development (BDD) &lt;/a&gt;posted over on InfoQ.  I love the genesis behind BDD: it started with Dan being frustrated over people thinking that &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Development (TDD)&lt;/a&gt; was about tests.&lt;br /&gt;&lt;br /&gt;TDD is really about a way of designing and developing with a consumer/client focused bent: you start by walking in the shoes of your customer, using the software you haven't built yet.  The customer in the case of TDD might be &lt;span style="font-style: italic; font-weight: bold;"&gt;you&lt;/span&gt; - maybe you'll be consuming the methods of the class you're about to develop in order to develop a higher level class.  But that's just a matter of scope and doesn't change the fact that you need to develop from the perspective of the person that will be using that particular piece of software.&lt;br /&gt;&lt;br /&gt;We call these prototypical consumption exercises "writing tests", but in Dan's mind that was looking at it the wrong way -  it's really focused on the behavior of your software.  Thus Behavior Driven Development.&lt;br /&gt;&lt;br /&gt;BDD has since morphed into something more than just another way of looking at TDD, providing a textual grammar (a "&lt;a href="http://en.wikipedia.org/wiki/Domain-specific_language"&gt;Domain Specific Language&lt;/a&gt;", albeit a small one) for specifying "&lt;span style="font-style: italic;"&gt;given&lt;/span&gt; these conditions,  when I execute this action, then I should have these results".   Given, When, Then.  Pretty simple.&lt;br /&gt;&lt;br /&gt;"Getting the words right", Dan North said.  Words being so important and so often dismissed.   Getting words wrong (or at least not agreeing on or thinking about the same things when you say something) might be the single biggest source of pain in our industry (indeed, in the world).&lt;br /&gt;&lt;br /&gt;This is one of the many reasons why I'm a big proponent of another agile discipline, &lt;a href="http://domaindrivendesign.org/"&gt;Domain Driven Design (DDD)&lt;/a&gt;, is its idea of a &lt;a href="http://domaindrivendesign.org/node/132"&gt;Ubiquitous Language&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyway, "Given, When, Then".  Sort of acceptance criteria-like - thus BDD is often labeled an 'acceptance' testing process.  I personally think that boxes into something smaller than it deserves: I think it can be used for unit testing and functional testing and integration testing too.&lt;br /&gt;&lt;br /&gt;The idea that you can execute textual user stories is pretty powerful.  Done right, it implies no more (or at least minimal) separate "requirements documents" or "test plans" or the dreaded "traceability" documents that often accompany them.  That's where the BDD tools come in.   And there are &lt;a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development#Tools"&gt;a lot of them&lt;/a&gt;:&lt;a href="http://rspec.info/"&gt; RSpec&lt;/a&gt;, &lt;a href="http://cukes.info/"&gt;Cucumber&lt;/a&gt; (for Ruby) and &lt;a href="http://jbehave.org/"&gt;JBehave&lt;/a&gt; (Java) are probably the most popular.&lt;br /&gt;&lt;br /&gt;But it's not about the tools, be clear, but rather the people and their interactions - having more of the latter with the former.  If you haven't, take a look: there is a wide world of sports beyond your father's  unit testing.&lt;br /&gt;&lt;br /&gt;There is also a&lt;a href="http://www.infoq.com/presentations/Scala-Jonas-Boner"&gt; rockin' talk&lt;/a&gt; on "pragmatic &lt;a href="http://en.wikipedia.org/wiki/Scala_%28programming_language%29"&gt;Scala&lt;/a&gt;" - two of my favorite things.  Scala has everything I love: a strong sense of concurrency built into the language (&lt;a href="http://lamp.epfl.ch/%7Ephaller/actors.html"&gt;'actors!'&lt;/a&gt;), static typing &lt;span style="font-style: italic;"&gt;but with a brevity of syntax&lt;/span&gt;, a functional bent ('to iterate is human, to recurse divine'), runs on the &lt;a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine"&gt;Java Virtual Machine&lt;/a&gt;.  Great stuff.  Good for you.  The details of the language around how you invoke methods and what symbols you can use to name them has resulted in a lot of Scala code that's hard to read, but the idea of Scala is absolutely wonderful.  I'm only just thinking in terms of its pragmatic value, with visions of Perl-like obfuscation dancing in my head.  But still, check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-8082349165237288034?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/8082349165237288034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/time-off-for-good-behavior.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/8082349165237288034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/8082349165237288034'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/time-off-for-good-behavior.html' title='Time off for good behavior'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-1585625584384685975</id><published>2009-08-10T10:33:00.000-07:00</published><updated>2009-10-03T08:12:54.570-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='governance'/><category scheme='http://www.blogger.com/atom/ns#' term='leadership'/><title type='text'>"Baa Baa Mr. Sheep. Careful, you're walking all over your own self now. Walk on, Mr. Sheep. Walk on." - R. Newman, 1977</title><content type='html'>The common take on effective governance is that it first and foremost requires an effective governor, with perhaps second being a decent overall legislature.   It's hard to argue that these are necessary ingredients; however, my vote for top dog is  a level of &lt;span style="font-style: italic;"&gt;participation&lt;/span&gt; and, to take it further, &lt;span style="font-style: italic;"&gt;ownership&lt;/span&gt; on the part of the &lt;span style="font-style: italic;"&gt;governed&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This ground up governance is usually down on the priority list for corporate leadership in my experience, and I think it's mostly because that's a much harder thing to realize.  It's gotta start with the organizational model you choose: small teams of multi-disciplined individuals stand a better chance of enabling ground-up governance.&lt;br /&gt;&lt;br /&gt;When I say 'multi-disciplined', I don't mean that everyone on the team can develop software, write requirements, test, coach, manage workloads, and so on.  I do mean that everyone takes an interest in all those things to a degree.  That a programmer is not afraid to attempt writing requirements, that a business analyst doesn't shy away from testing, that a quality assurance specialist doesn't balk at some light software touch-ups.  You have your roles and your primary job but it shouldn't box you in and limit your ability to help the team: that's the priority in this ideal.&lt;br /&gt;&lt;br /&gt;Ideally, each of these teams would own one or more relatively discrete and preferably deploy able, deliverable, releasable products and would be responsible for those products from birth to death.  Members of this kind of team are much more likely to feel empowered than specialists that belong to very large teams and produce a piece of the product, perhaps never to deal with it once development is finished, or never to see it except during "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;QA&lt;/span&gt; testing".&lt;br /&gt;&lt;br /&gt;Even small teams that are walled off into these specialized corners have a hard time feeling like they own and are responsible for something.&lt;br /&gt;&lt;br /&gt;It's the difference in accountability dynamics:  the ideal being more akin to parent/child while the more common org resembles a the math teacher/pupil relationship (or maybe guard/inmate is more accurate).&lt;br /&gt;&lt;br /&gt;It's also the difference in efficiency and frustration levels.  When you are specialized, and your team is only one piece of a much larger puzzle, you have to cross organizational boundaries much more frequently to get things done.  And if &lt;a href="http://en.wikipedia.org/wiki/Lean_manufacturing"&gt;Lean Manufacturing&lt;/a&gt; has taught us anything, it's that crossing boundaries is very expensive in terms of &lt;a href="http://agilesoftwaredevelopment.com/blog/jackmilunsky/7-wastes-part-1-partially-done-work"&gt;time and waste&lt;/a&gt;.  Lean, unlike many concepts/ disciplines/processes/analogies, does translate pretty well from manufacturing and engineering to software development.&lt;br /&gt;&lt;br /&gt;This isn't news - there is plenty of &lt;a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6V0B-4RRFN8D-1&amp;amp;_user=10&amp;amp;_rdoc=1&amp;amp;_fmt=&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;_docanchor=&amp;amp;view=c&amp;amp;_searchStrId=958397070&amp;amp;_rerunOrigin=google&amp;amp;_acct=C000050221&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=10&amp;amp;md5=ec218e7d1b449aae2e46464f344a298a"&gt;empirical evidence&lt;/a&gt; to support this from a number of sources.  &lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;Scrum&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Extreme_Programming"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XP&lt;/span&gt; &lt;/a&gt;and other agile disciplines have been espousing this for many years now.  &lt;a href="http://en.wikipedia.org/wiki/Taiichi_Ohno"&gt;Taiichi Ohno&lt;/a&gt; proved it back when the &lt;a href="http://en.wikipedia.org/wiki/Eniac"&gt;Eniac&lt;/a&gt; was state of the art.&lt;br /&gt;&lt;br /&gt;This is all aimed &lt;span style="font-weight: bold; font-style: italic;"&gt;toward an ideal&lt;/span&gt;, I am not kidding myself.&lt;br /&gt;&lt;br /&gt;That's the hard part, especially if you've already got a workforce that through attrition (due to previous practices and culture) has rid itself of a large percentage of precisely those kind of people that would thrive in this ideal environment.  It also means you've likely retained a goodly bunch of people that positively &lt;span style="font-weight: bold; font-style: italic;"&gt;fear and loathe&lt;/span&gt; this.&lt;br /&gt;&lt;br /&gt;But ya gotta start where you are and and slowly reverse that attrition cycle.&lt;br /&gt;&lt;br /&gt;Empowerment and self management of those doing the work is key to this.  Hey, I'm not suggesting a proletarian overthrow of the bourgeoisie management (well, maybe I am to some degree, but with a wholly capitalistic bent).   Rather, that we attract and retain those developers and testers and business analysts and product managers that are excited about ownership, decision making and self management in addition to their primary technical skills.  In so doing, we can gradually tip the scale, making management more about technical coaching and mentoring.  If the managers can't make this transition, either through philosophical opposition or because they don't have the chops, it's time to lose them through position elimination and attrition.&lt;br /&gt;&lt;br /&gt;Sure, you still need executive and administrative/HR management in any corporation of size, but the percentage of management to worker bee in most IT departments I've worked with is tipped way out of balance, in some cases with more managers than developers or BAs or testers in a given group (and as a consultant for many years, I've worked in a good cross section of the industry).  Mainly this is done because one naturally wants to advance in their profession.  Usually that means moving into management and often, the company loses twice (you lose a valuable and eager technical asset and you gain a mediocre and unenthusiastic manager).&lt;br /&gt;But it is hard.  Not nearly as hard, though, as fighting against the natural ways in which individuals organize absent traditional governance - throughout history, survival of the fittest as shown this to be true.&lt;br /&gt;&lt;br /&gt;Local optimization is only good if ownership is sufficiently complete of the things you're optimizing within that locality: if it isn't, likely as not your optimization will adversely impact another piece of the total package and in the end, the total package is what counts.&lt;br /&gt;After all, you don't hear folks say, "Boy, this web site keeps crashing on me - it's rarely available but when it is, did you see that nifty calculation widget?  Makes all the downtime worthwhile".&lt;br /&gt;&lt;br /&gt;The other thing is unnecessary waste.  One of the "lean" questions often asked is 'how much of your day is spent working on communications with other groups versus work that directly benefits the end product?'  We should all aspire to minimize this with the understanding that we can't wholly eliminate it.  Communications and traceability documents are waste (they do not directly benefit the end product).  They may or may not be &lt;span style="font-style: italic;"&gt;necessary &lt;/span&gt;waste.  If they are necessary, rather than just saying 'that's the way it is', why not look further to see if we can change the landscape such that they become obsolete and unnecessary?&lt;br /&gt;&lt;br /&gt;Mother nature, in the end, only yields so much.   As a wise woman once said, 'it's not nice to fool Mother Nature' - just as true with organizations as it was with butter.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://www.ibm.com/developerworks/rational/library/jun07/kroll/index.html"&gt;Scott Ambler&lt;/a&gt;, &lt;a href="http://www.agile-software-development.com/2008/06/agile-teams-dont-need-managers.html"&gt;Kelly Waters&lt;/a&gt;, &lt;a href="http://www.agilealliance.com/system/article/file/784/file.pdf"&gt;Ken Schwabe&lt;/a&gt;r, and &lt;a href="http://www.ibm.com/developerworks/rational/library/content/RationalEdge/aug04/5558.html"&gt;Phillipe Krutchen&lt;/a&gt; for starters and google +organization +software +ownership +empowerment +self-managing +benefits +challenges&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-1585625584384685975?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/1585625584384685975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/baa-mr-sheep-careful-you-walking-all.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1585625584384685975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1585625584384685975'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/baa-mr-sheep-careful-you-walking-all.html' title='&amp;quot;Baa Baa Mr. Sheep. Careful, you&amp;#39;re walking all over your own self now. Walk on, Mr. Sheep. Walk on.&amp;quot; - R. Newman, 1977'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-6081962494028880291</id><published>2009-08-10T10:32:00.000-07:00</published><updated>2009-10-03T08:12:54.359-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fowler'/><category scheme='http://www.blogger.com/atom/ns#' term='java rants'/><category scheme='http://www.blogger.com/atom/ns#' term='steve souder'/><category scheme='http://www.blogger.com/atom/ns#' term='yslow'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='juergen hoeller'/><category scheme='http://www.blogger.com/atom/ns#' term='multi-tenant architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='sam pullura'/><title type='text'>"He could have had any woman in the world - but none could match the beauty of his own hand - he was not 'master of his domain'"</title><content type='html'>The goings-on of some 'masters' of their professional domains ...&lt;br /&gt;&lt;br /&gt;As usual, some great stuff in the last couple of days posted to InfoQ:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.martinfowler.com/"&gt;The Man&lt;/a&gt; summarizes &lt;a href="http://www.infoq.com/presentations/fowler-ruby"&gt;three years of Ruby engagements&lt;/a&gt; by ThoughtWorkers&lt;/li&gt;&lt;li&gt;An&lt;a href="http://www.infoq.com/presentations/SalesForce-Multi-Tenant-Architecture-Craig-Weissman"&gt; interesting talk on the multi-tenant architecture of Salesforce.com&lt;/a&gt; by their Craig Weissman&lt;/li&gt;&lt;li&gt;A &lt;a href="http://www.infoq.com/presentations/Spring-Framework-3.0-Juergen-Hoeller"&gt;tour of Spring 3.0&lt;/a&gt; by one of Spring's Two Dads, Juergen Hoeller&lt;/li&gt;&lt;/ul&gt;If you don't already indulge, I recommend checking out Sam Pullura's &lt;a href="http://javarants.com/"&gt;JavaRants&lt;/a&gt;.  Sam's a bright guy that hangs out at Yahoo these days as Chief Technologist.  He was one of the original Weblogic Engineers and apparently made a pile of dough when BEA bought Weblogic back in 1998.  He stuck it out for a couple of years at BEA and has since been bouncing around as a technical advisor and angel investor with various startups - slinging Java code from time to time.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.stevesouders.com/"&gt;Steve Souders&lt;/a&gt; is another guy you should check out.  He's the creator of YSlow and all around front end engineer extraordinaire.  He has jumped ship from Yahoo to Google (they must have some sort of engineering exchange program going on with all the cross pollination between the two).  His blog is always entertaining and informative and he's got &lt;a href="http://www.amazon.com/dp/0596522304?tag=stevsoud-20&amp;amp;camp=213381&amp;amp;creative=390973&amp;amp;linkCode=as4&amp;amp;creativeASIN=0596522304&amp;amp;adid=1RYWX369KYR05GM6D37E&amp;amp;"&gt;another book out&lt;/a&gt;, similar in style to &lt;a href="http://www.amazon.com/gp/product/0596529309?ie=UTF8&amp;amp;tag=stevsoud-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596529309"&gt;his first one&lt;/a&gt;.  Both are useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-6081962494028880291?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/6081962494028880291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/could-have-had-any-woman-in-world-but.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6081962494028880291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6081962494028880291'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/could-have-had-any-woman-in-world-but.html' title='&amp;quot;He could have had any woman in the world - but none could match the beauty of his own hand - he was not &amp;#39;master of his domain&amp;#39;&amp;quot;'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-8647896081381502428</id><published>2009-08-10T10:30:00.000-07:00</published><updated>2010-01-27T17:46:01.211-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='brian goetz'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='corporate life'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>Drinking your way to drydock</title><content type='html'>One of today's areas of focus for me at work is in producing some useful training materials on embedded documentation for software and best practices for java development in our world of concurrency and multi-core systems.  The guy that is tying these two disparate ideas together for me this Monday is the esteemed &lt;a href="http://www.briangoetz.com/"&gt;Brian Goetz&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Goetz is a master of caffeinated concurrency, well known in Java circles (as I've written here before, please grab &lt;a href="http://www.amazon.com/gp/product/0321349601?ie=UTF8&amp;amp;tag=none0b69&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321349601"&gt;Java Concurrency in Practice&lt;/a&gt; at once if you haven't and also catch his &lt;a href="http://www.infoq.com/author/Brian-Goetz"&gt;InfoQ presentations&lt;/a&gt;).   Please check out '&lt;a href="http://www.ibm.com/developerworks/library/j-jtp09238.html"&gt;Are All Stateful Web Apps Broken?&lt;/a&gt;' if you work with Java Web Applications - turns out most of us are deploying these things half blind with our fingers crossed and praying that the gods of concurrency will be kind to us.  There is a better way.&lt;br /&gt;&lt;br /&gt;It turns out that Mr. Goetz also has a great (though somewhat dated) &lt;a href="http://www.ibm.com/developerworks/java/library/j-jtp0821.html"&gt;write-up on best practices of software embedded documentation&lt;/a&gt; for java.  It was written in 2002 and the JavaDoc tool has been updated a bit since then (for instance, "package-info.java" didn't exist yet for package-scoped documentation and you had to include a package.html file mixed in with your java).  Still, bar-none the best single article I've read on the subject.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-8647896081381502428?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/8647896081381502428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/drinking-your-way-to-drydock.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/8647896081381502428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/8647896081381502428'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/drinking-your-way-to-drydock.html' title='Drinking your way to drydock'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-3881184392015662719</id><published>2009-08-10T10:27:00.000-07:00</published><updated>2009-10-03T08:12:54.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fowler'/><category scheme='http://www.blogger.com/atom/ns#' term='brian goetz'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='andy hunt'/><category scheme='http://www.blogger.com/atom/ns#' term='gregor'/><category scheme='http://www.blogger.com/atom/ns#' term='pragmatic thinking learning'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>I hope you know this will go down on your permanent record</title><content type='html'>Things other than work (or maybe instead of work) that I am paying attention to today (technology version):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/programming-cloud-gregor-hohpe"&gt;Gregor's Cloud Talk&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://securerespond.com/thoughtworks/tab/"&gt;ThoughtWorks Panel Discussion&lt;/a&gt; with Fowler and Co.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline;"&gt;String Template&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I'm re-reading &lt;a href="http://blog.toolshed.com/"&gt;Andy Hunt&lt;/a&gt;'s &lt;a href="http://www.amazon.com/Pragmatic-Thinking-Learning-Refactor-Programmers/dp/1934356050/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247253378&amp;amp;sr=8-2"&gt;Pragmatic Thinking &amp;amp; Learning&lt;/a&gt; - if you haven't read it, please do.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Well, back to work.  Trying to come up with a way in which to best get across to folks some useful (and to contrast it, some very not-so-useful) ways in which embedded software documentation (in our case, JavaDoc)  can be applied.  Mainly, that it not simply repeat what the code should already tell you (and if the code is not telling you, chances are that the comments applied to it are smells pointing to a refactoring opportunity).   Code should not be commented, in general.  Methods can be commented occasionally, but should be scrutinized to ensure the comment doesn't stink (ensure that it's telling you something valuable that is not possible to express in the method code).  Classes, packages and modules are the things needing the comments: you want good example usages.  You also want doc on policies that can't be expressed in code (thread safety, for instance), though annotations can be helpful in this case (&lt;a href="http://www.briangoetz.com/"&gt;Brian Goetz&lt;/a&gt; has some recommended concurrency annotations in his seminal &lt;a href="http://www.amazon.com/gp/product/0321349601?ie=UTF8&amp;amp;tag=none0b69&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321349601"&gt;Java Concurrency in Practice&lt;/a&gt; book.&lt;br /&gt;&lt;br /&gt;JavaDoc at the package and module level via a package-info.java class can be extremely helpful and is too rarely done.  I can go generate Javadoc for a module of code and even if there is no explicit JavaDoc markup made for the individual classes and methods, it provides me a lot of valuable information out of the box; however, it tells me nothing about the purpose of the package or module as a whole.  That's what's missing and what often requires the creation of some external document that very quickly gets (and stays) out of sync with the code.&lt;br /&gt;&lt;br /&gt;I'm trying to put together some simple examples that get this point across.  Keeping this point across time and a large organization is the challenge.   Those that will instinctively 'get' this already do, so I don't worry about them; it's weeding out those that never will - since I'm not King and can't fire them on the spot - to get to those that just need a little bit of encouragement, some breathing room and a new perspective.   This problem isn't specific to this topic - it's teaching and adoption and empowering everyone to own our software, to own their own career and to know that you're not just a drone in Sector 7G waiting for the whistle to blow so you can slide down the dinosaur.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-3881184392015662719?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/3881184392015662719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/i-hope-you-know-this-will-go-down-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/3881184392015662719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/3881184392015662719'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/i-hope-you-know-this-will-go-down-on.html' title='I hope you know this will go down on your permanent record'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-1157647072971768085</id><published>2009-08-10T10:26:00.000-07:00</published><updated>2009-10-03T08:12:54.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lean'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='leadership'/><title type='text'>Lean on me</title><content type='html'>I've been reading up a lot on the roots of &lt;a href="http://en.wikipedia.org/wiki/Lean_manufacturing"&gt;lean manufactoring&lt;/a&gt;.  It's become in vogue to apply these principles to the practices of&lt;a href="http://en.wikipedia.org/wiki/Lean_software_development"&gt; software development&lt;/a&gt; and while I applaud that, I think it's important that one understands the genesis of an idea, especially if that idea has lived through several generations and has been translated from one very different arena (in this case, from automobile manufacturing in the 50s, 60s, and 70s as part of the &lt;a href="http://en.wikipedia.org/wiki/Toyota_Production_System"&gt;Toyota Production System&lt;/a&gt;) to another (envisioning, developing, deploying and managing software in the 21st century).  Most folks that have a cursory understanding of lean tell me it's about the reduction of waste - throwing away all of those things that do not directly add value to your endeavor.   Queues, inventory, task lists, etc. are all bad because they are things that are sitting around and not adding value.  'Just in Time' production - that's the key. That's all certainly core to the 'what', but unless you dig into &lt;a href="http://en.wikipedia.org/wiki/Taiichi_Ohno"&gt;Taiichi Ohno&lt;/a&gt;'s teachings, you miss the 'how'.   Central to the 'how' is the role of 'management'.  To Ohno, a good manager is a master craftsman, mentor, and teacher.  &lt;span style="font-size:130%;"&gt;Managing &lt;span style="font-weight: bold;"&gt;is&lt;/span&gt; Teaching.&lt;/span&gt;  That is the real power of this philosophy.  If you believe management is about anything else, then you've already lost.  You may go, grasshopper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-1157647072971768085?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/1157647072971768085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/lean-on-me.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1157647072971768085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1157647072971768085'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/lean-on-me.html' title='Lean on me'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-7465819824510486291</id><published>2009-08-10T10:25:00.000-07:00</published><updated>2009-10-03T08:12:54.555-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='leadership'/><title type='text'>Oh, But I was so much older then - I'm younger than that now</title><content type='html'>What's worse - poor management or poor leadership?   I saw the former get a beat down from the latter today and much as I am pained by bad management, it can be worked around.  I don't think bad leadership can be, especially if it is unquestioned.  It brings to mind that old &lt;a href="http://en.wikipedia.org/wiki/Hans_Christian_Andersen"&gt;Hans Christian Andersen&lt;/a&gt; classic, ' &lt;a href="http://en.wikipedia.org/wiki/The_Emperor%27s_New_Clothes"&gt;The Emperor's New Clothes&lt;/a&gt;'.&lt;br /&gt;&lt;br /&gt;Sometimes I feel like a deck hand on the &lt;a href="http://en.wikipedia.org/wiki/Exxon_Valdez"&gt;Exxon Valdez&lt;/a&gt; with&lt;a href="http://en.wikipedia.org/wiki/Joseph_Hazelwood"&gt; Capt Joesph Hazelwood&lt;/a&gt; at the helm.  With all the officers going on about how fine the good Captain navigates around those icebergs after polishing off his third bottle of rum - please, have another, Captain!  That's a great idea!&lt;br /&gt;&lt;br /&gt;Hans, I wish you were here ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-7465819824510486291?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/7465819824510486291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/oh-but-i-was-so-much-older-then-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/7465819824510486291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/7465819824510486291'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/oh-but-i-was-so-much-older-then-i.html' title='Oh, But I was so much older then - I&amp;#39;m younger than that now'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-3179428590757143075</id><published>2009-08-10T10:23:00.000-07:00</published><updated>2009-10-03T08:12:54.322-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='consistency'/><category scheme='http://www.blogger.com/atom/ns#' term='technical heroes'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='idioms'/><title type='text'>Trying to learn how to walk like the heroes we thought we had to be</title><content type='html'>The brilliant &lt;a href="http://www.jimdero.com/Bangs/EventsSXSW.htm"&gt;Boy Howdy&lt;/a&gt; scribe &lt;a href="http://en.wikipedia.org/wiki/Lester_Bangs"&gt;Lester Bangs&lt;/a&gt; once wrote, "A hero is a goddamn stupid thing to have in the first place and a general block to anything you might wanna accomplish on your own." &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He wrote this even as he shamelessly idolized (and in the next breath, often demonized) Lou Reed.  Lester, like most great originals, was aggressively (even proudly) contradictory. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The rest of us mere mortals are just as contradictory - I think the difference is that we usually try and reign in (or otherwise hide) this 'flaw'. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm not sure when consistency became king.  It's great for a lot of things - take for example the discipline of engineering.   Which is just one of the reasons I contend that software development !=  software engineering (in fact, that there is no such thing as software engineering).  &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are certainly elements of software development that require engineering-like rigor.  For these elements, I am fanatical about consistency.  This is for the low-level stuff, naming, implementation patterns and idioms - the kind of thing that is within the realm of &lt;a href="http://checkstyle.sourceforge.net/"&gt;checkstyle&lt;/a&gt;.  But architecture and design, even when applying common patterns and using a common (ubiquitous) language, lives more within the world of art than it does science.  &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The more we embrace this, the better off we'll be.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-3179428590757143075?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/3179428590757143075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/trying-to-learn-how-to-walk-like-heroes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/3179428590757143075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/3179428590757143075'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/trying-to-learn-how-to-walk-like-heroes.html' title='Trying to learn how to walk like the heroes we thought we had to be'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-6478684165597127732</id><published>2009-08-10T10:21:00.000-07:00</published><updated>2009-10-03T08:12:54.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='context maps'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='domain driven design'/><category scheme='http://www.blogger.com/atom/ns#' term='evolutionary design'/><category scheme='http://www.blogger.com/atom/ns#' term='bounded contexts'/><title type='text'>Everything's in context - nothing is absolute</title><content type='html'>Context is everything - the best decision in one context could very well be the worst move in another.  That's why I love &lt;a href="http://www.domaindrivendesign.org/"&gt;Domain Driven Design&lt;/a&gt;'s &lt;a href="http://dddstepbystep.com/wikis/ddd/bounded-context.aspx"&gt;Bounded Contexts &lt;/a&gt;and why I think the concept deserves consideration beyond the world of design and architecture.   Organizational structure, for instance.    Find your bounded contexts and organize around them.  Groups should be dependent on other groups only via &lt;a href="http://dddstepbystep.com/wikis/ddd/context-map.aspx"&gt;Context Map&lt;/a&gt;s.&lt;br /&gt;&lt;br /&gt;Speaking of Domain Driven Design, why has something with so many good ideas in so many contexts only seemed to have really taken root in the .NET community?  The contexts for its use are usually programming in the small (places where objects and components and the like naturally live) and not so much for programming in the large (distributed architectures like the web).   But the resources that constitute a &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt;ful architecture (and I definitely have some &lt;a href="http://mikeschinkel.com/blog/whatisarestafarian/"&gt;RESTafarian&lt;/a&gt; blood in me) are often internally constructed of good old objects and components.  It just seems like as a industry, we're slowly losing (or perhaps never really had) a culture of design in software development.   I'm not talking here about Big Up-Front Design - I'm talking design as part of software development.&lt;br /&gt;&lt;br /&gt;I'll argue that you can't really design software without implementing software ( that it's &lt;span style="font-style: italic; font-weight: bold;"&gt;not&lt;/span&gt; an engineering discipline).  But you can certainly implement software without having designed anything (or at least without having designed anything well).&lt;br /&gt;&lt;br /&gt;I think Big Up-Front Design has in fact killed actual design, the resulting software rarely looking much like The Design as Written, perhaps on tablets of stone.  Usually those tablets have languished on the shelf for a good while since they were originally inscribed, perhaps by the architect on the hill (speaking as I do from my perch on high).  The poor soul that has been assigned to "implement it" is left to figure out if there is any value to the design or if it's simply an obstacle to the development of a useful solution that meets the needs of the customer now (assuming these needs have been articulated in the first place: but that is another topic entirely).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-6478684165597127732?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/6478684165597127732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/everything-in-context-nothing-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6478684165597127732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/6478684165597127732'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/everything-in-context-nothing-is.html' title='Everything&amp;#39;s in context - nothing is absolute'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-880613555821290393</id><published>2009-08-10T10:20:00.000-07:00</published><updated>2009-10-03T08:12:54.291-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='mythical man month'/><title type='text'>Look at the man that you'd call uncle, having a heart attack round your ankles</title><content type='html'>I've been re-reading &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;The Mythical Man-Month&lt;/a&gt;, still relevant after 34 years. One of the gems concerning the state of software documentation: "The trees are described, the bark and leaves are commented, but there is no map of the forest". This applies even more today than it did in the mid-70s when it was written.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-880613555821290393?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/880613555821290393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/look-at-man-that-you-call-uncle-having.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/880613555821290393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/880613555821290393'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/look-at-man-that-you-call-uncle-having.html' title='Look at the man that you&amp;#39;d call uncle, having a heart attack round your ankles'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-28819936538527102</id><published>2009-08-10T10:17:00.000-07:00</published><updated>2009-10-03T08:12:54.280-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='technical heroes'/><category scheme='http://www.blogger.com/atom/ns#' term='thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>'Let me have my little vicious circle' - Don Birnam</title><content type='html'>InfoQ has posted &lt;a href="http://www.infoq.com/presentations/agilists-and-architects"&gt;a great presentation&lt;/a&gt; by ThoughtWorkers Rebecca Parsons and Martin Fowler on the role of architecture in agile organizations. I highly recommend anyone who works or has worked in an organization of any size to check it out, particularly if you happen to be an executive within that organization and you're grappling with how best to (re)organize your technology department. Stu Iridium, I'm looking at you.&lt;br /&gt;&lt;br /&gt;Also over on InfoQ from last week, the master of percolating parallelism, Brian Goetz, provides a window into &lt;a href="http://www.infoq.com/presentations/brian-goetz-concurrent-parallel"&gt;java SE 7 concurrency enhancements&lt;/a&gt;. I always recommend checking out anything Brian has to say, as he belongs to my pantheon of technology heroes (taking a seat alongside Joshua Bloch and Martin Fowler).&lt;br /&gt;&lt;br /&gt;As I wrote that last sentence, I couldn't help but reflect on my tech heroes past. In the late 80s/early 90s it was Kernighan, Ritchie, and Thompson from Bell Labs, along with W. Richard Stevens, and Brjarne Stroustrup. Later in the 90s, it was James Gosling and Grady Booch. I guess technical heroes have a relatively short shelf life (not unlike technology itself).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-28819936538527102?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/28819936538527102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/me-have-my-little-vicious-circle-don.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/28819936538527102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/28819936538527102'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/me-have-my-little-vicious-circle-don.html' title='&amp;#39;Let me have my little vicious circle&amp;#39; - Don Birnam'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-39091077599680022</id><published>2009-08-10T10:12:00.000-07:00</published><updated>2009-10-03T08:12:54.542-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Group Captain, please make me a drink of grain alcohol and rainwater - Gen. Jack D. Ripper</title><content type='html'>What really smokes my rhino these days are guys who should know better that keep insisting on adding more and more fine grained configuration to our provisioning and deployment processes - We need more moving parts!  We need total control!  We need a binary editor so we can change byte 935 from 0110 to 0111 within dickcheney-Version666.jar in test888 because it's Tuesday at noon and my aunt has bursitis in her shoulder!&lt;br /&gt;&lt;br /&gt;Yes, and our people can handle this so well!  God forbid we be allowed to create a small set of complete machine images with all apps, configs, data, everything - type install and &lt;span style="font-weight: bold;"&gt;*nothing more*.&lt;/span&gt;  No 'runbook' or 'manifest' with a bazillion manual steps and two hail Marys.  If &lt;span style="font-weight: bold;"&gt;anything&lt;/span&gt; needs to change, you change it in source control and create a new build (which kicks off your unit tests, deploys the image, and then kicks off the functional, integration, and performance/scalability tests).   All without any more dumbitude than automation can have. Granted, automation can certainly have dumbitude if its creator has it, but those pesky automated unit tests will kick in and raise the dumbitude detector flags in the form of red bars and if they miss it, the integration tests catch it, and the functional tests after that.  At least it gives us a fighting chance.&lt;br /&gt;&lt;br /&gt;I'm not bitter - and it is Friday.  Amen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-39091077599680022?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/39091077599680022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/group-captain-please-make-me-drink-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/39091077599680022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/39091077599680022'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/group-captain-please-make-me-drink-of.html' title='Group Captain, please make me a drink of grain alcohol and rainwater - Gen. Jack D. Ripper'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-2666094755316467139</id><published>2009-08-10T08:51:00.001-07:00</published><updated>2009-10-03T08:12:54.350-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='peter coad'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Coding with Coad</title><content type='html'>Whatever happened to &lt;a href="http://en.wikipedia.org/wiki/Peter_Coad"&gt;Peter Coad&lt;/a&gt;?   He and Mark Mayfield wrote, in my opinion, &lt;span style="font-style: italic; font-weight: bold;"&gt;the&lt;/span&gt; &lt;a href="http://www.amazon.com/Java-Design-Building-Better-Applets/dp/0139111816"&gt;book on Java-based Object Oriented Design&lt;/a&gt; in 1996 (2nd edition appearing in '98), and it ain't for Javaphiles alone.  Their criteria for making the choice between using inheritance or composition in a given situation is alone more than worth the price of admission. It's something that more developers should read and apply: in short, use inheritance only when:&lt;br /&gt;&lt;ul style="font-style: italic;"&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Your object "Is a special kind of" the candidate parent object and not “Is a role played by” that object&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 56%;"&gt;&lt;span style="color: blue; left: -4.37%; position: absolute;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;You will &lt;span style="font-weight: bold;"&gt;never &lt;/span&gt;need to transmute your object to be in some other class &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 56%;"&gt;&lt;span style="color: blue; left: -4.37%; position: absolute;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;Your object &lt;span style="font-weight: bold;"&gt;extends&lt;/span&gt; rather than &lt;span style="font-weight: bold;"&gt;overrides&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;nullifies&lt;/span&gt; behavior&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 56%;"&gt;&lt;span style="color: blue; left: -4.37%; position: absolute;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;Your object does not subclass what is merely a utility class &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 56%;"&gt;&lt;span style="color: blue; left: -4.37%; position: absolute;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;For problem domain objects,  your object is "a special kind of " role, transaction, or thing &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Now, Coed and Mayfield go on to explain under what circumstances you would reasonably break these rules but that such circumstances are indeed exceptions.&lt;br /&gt;&lt;br /&gt;To answer my opening inquiry as to the whereabouts of Mr. Coad, it seems that once his company TogetherSoft was acquired by Borland (I truly miss TogetherJ ControlCenter), he sort of drifted out of the software development game.  He's a pretty religious guy, they say, and he's focused on that arena of his life.  He and I don't share that particular passion, but I'm sure whatever he's doing there, he's doing it well.  It looks, from &lt;a href="http://www.petercoad.com/"&gt;his website&lt;/a&gt;, that he's also started up a charter jet service, along with launching several biblical software applications.  Modeling in Color, Feature Driven Development, Party, Place or Thing: all I know for sure is that the software development profession is the poorer with his absence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-2666094755316467139?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/2666094755316467139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/coding-with-coad.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2666094755316467139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2666094755316467139'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/coding-with-coad.html' title='Coding with Coad'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-1582279444248926551</id><published>2009-08-10T08:51:00.000-07:00</published><updated>2009-10-03T08:12:54.271-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fowler'/><category scheme='http://www.blogger.com/atom/ns#' term='domain driven design'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='group dynamics'/><category scheme='http://www.blogger.com/atom/ns#' term='leadership'/><title type='text'>'I wish that for just one time, you could stand inside my shoes. You'd know what a drag it is to see you' - Robert Allen Zimmerman, 1966</title><content type='html'>I can't believe I missed &lt;a href="http://www.infoq.com/news/2009/07/half-think-UT-will-help%20http://www.infoq.com/articles/service-dynamics-todor-boev%20http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr?type=presentation"&gt;this presentation&lt;/a&gt; when it first came out - very instructive and relevant in my neck of the woods.  The advice is easier given than taken (and its lessons applied).  But it's gotta be better than business as usual.&lt;br /&gt;&lt;br /&gt;Anyway,  on to other things.&lt;br /&gt;&lt;br /&gt;Rummaging through the blogs, I thought that these posts were worth a plug:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kitchensoap.com/2009/05/10/context-and-operational-metrics/"&gt;Context and Operational Metrics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stevesouders.com/blog/2009/07/28/omniti-and-performance-koolaid/"&gt;OmniTI and Performance Koolaid&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.domaindrivendesign.org/library/evans_2009_1"&gt;Eric Evans and what he's learned about Domain Driven Design in the past 6 years&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://martinfowler.com/articles/obamaSoftware.html"&gt;S&lt;/a&gt;&lt;a href="http://martinfowler.com/articles/obamaSoftware.html"&gt;oftware and Obama's victory (Fowler reflects)&lt;/a&gt;&lt;a href="http://martinfowler.com/articles/obamaSoftware.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-1582279444248926551?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/1582279444248926551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/wish-that-for-just-one-time-you-could.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1582279444248926551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/1582279444248926551'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/wish-that-for-just-one-time-you-could.html' title='&amp;#39;I wish that for just one time, you could stand inside my shoes. You&amp;#39;d know what a drag it is to see you&amp;#39; - Robert Allen Zimmerman, 1966'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-8408359482799062322</id><published>2009-08-10T08:50:00.000-07:00</published><updated>2009-10-03T08:12:54.620-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Scala Columdrum</title><content type='html'>Man, I really want to love &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It runs on the&lt;a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine"&gt; JVM&lt;/a&gt; and interacts well with &lt;a href="http://java.sun.com/"&gt;Java&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It is statically typed.  Despite dynamic language proponent's insistence that static typing is overrated, unit testing will catch all runtime type mismatches, etc., testing can only ensure the presence of bugs, not their absence.  Compiler-flagged type enforcement can ensure the absence of this very narrow but prevalent class of error.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It has sensible type inference.  The pain of static typing comes in all the boiler plate verbosity usually accompanying such a language, just to shove the compiler's face in it ('see this type??? here it is - remember it!').  Scala's type inference allows it to approach the brevity of dynamic languages such as &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt;, removing one of the biggest arguments against static typing.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It encourages immutability with val-ues as well as var-iables.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It provides a nice framework in the core library around concurrency modeled on &lt;a href="http://erlang.org/"&gt;Erlang&lt;/a&gt;'s &lt;a href="http://www.javaworld.com/javaworld/jw-02-2009/jw-02-actor-concurrency1.html"&gt;actor&lt;/a&gt; that should help you write efficient and, just as importantly, (more apt to be) correct multi-threaded applications.  (See also this &lt;a href="http://swik.net/scala/del.icio.us%2Ftag%2Fscala/Actor+Based+Concurrency+-+Scala+vs+Java+vs+Erlang/bka5q"&gt;evaluation of actor concurrency, Scala, Erland and Java.&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It is fully &lt;a href="http://en.wikipedia.org/wiki/Object_Oriented"&gt;object oriented&lt;/a&gt; but also a &lt;a href="http://en.wikipedia.org/wiki/Functional_programming"&gt;functional&lt;/a&gt; language, so you can be functional when you need to be ('to iterate is human, to recurse divine').   &lt;/li&gt;&lt;/ul&gt;But I can't love it.   In fact, in practice, I don't even think I like it.&lt;br /&gt;&lt;br /&gt;Its 'Achilles Heel', at least for me, is syntactical in nature.  You can basically name methods using any symbols you'd like, enabling operator overloading - sort of,  actually 'operators' are all just method calls here -  in addition to &lt;a href="http://www.perl.org/"&gt;Perl&lt;/a&gt;-like tendencies toward self obfuscating code.  Operator overloading was one of the many things I disliked about C++ and I don't like it any better 20 years later, even if the rules are at least consistent with Scala (anything can be a method call and "." and "()" are optional for single arg'd calls).   The problem is that this is worse than just operator ambiguity, it's *anything* ambiguity.   This and other syntax choices can and have resulted in a body of Scala source that is downright impenetrable.  And this is directed at &lt;span style="font-style: italic;"&gt;well-written&lt;/span&gt; Scala: I'd hate to see the bad stuff.  Perhaps it's &lt;a href="http://creativekarma.com/ee.php/weblog/comments/my_verdict_on_the_scala_language/"&gt;spelled out best here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Scala is young but there are numerous &lt;a href="http://www.artima.com/scalazine/articles/twitter_on_scala.html"&gt;high profile web applications starting to use it &lt;/a&gt;and a number of exciting frameworks are being built on its back, the &lt;a href="http://liftweb.net/"&gt;Lift web framework&lt;/a&gt; being perhaps the most well known of the bunch.&lt;br /&gt;&lt;br /&gt;Can I get past this syntactical annoyance?  Sure.  Might I have to?  It's possible.  We're still waiting for an &lt;a href="http://en.wikipedia.org/wiki/List_of_JVM_languages"&gt;alternate language running on the JVM&lt;/a&gt; to reach critical mass.  But with the Oracle acquisition of Sun and thus ownership of Java the language, it's hard to say what will happen to it - nothing much for some time, obviously, given 14 year proliferation of Java-based applications the world over, but eventually.   Even without Larry Ellison's imminent domination of our planet, the language is getting awfully bloated (the O'Reilly Nutshell book comes from a mighty big fuckin' nut!) and conversely is missing some essential ingredients, such as real closures.  And it's just getting to be time for another to dominate.   Given the large base of apps and the evolution of the JVM, I'm thinking something running on it has got the best chance (sorry, Rubyists).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;'s the most popular JVM alternative to Java to date, but it is, at its heart, a scripting language more than anything, good for that and for building some simple web applications.  Not sure it fits as a server-side language, certainly not as the foundation for your platform or enterprise (if there is such a thing anymore).&lt;br /&gt;&lt;br /&gt;So maybe I'll need to embrace my inner obfuscation one day and become a serious Scaladite (Scalapal-a? Scal-lad? Too sexist.  Scalavocate?).  Meanwhile, I'm holding out for something else.   Of course, &lt;a href="http://steveeichert.com/blog/2009/02/19/scala-prevented-my-house-from-burning-down.html"&gt;I wouldn't want my house to burn down&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-8408359482799062322?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/8408359482799062322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/scala-columdrum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/8408359482799062322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/8408359482799062322'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/scala-columdrum.html' title='Scala Columdrum'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-2309732045272887823</id><published>2009-08-10T08:46:00.000-07:00</published><updated>2009-10-03T08:12:54.629-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fowler'/><category scheme='http://www.blogger.com/atom/ns#' term='wicket'/><title type='text'>Random Thoughts, Trivial Drivel</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;a href="http://martinfowler.com/bliki/SelfInitializingFake.html"&gt;Fowler's Fakes&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Martin&lt;a href="http://martinfowler.com/bliki/SelfInitializingFake.html"&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;serves some food for thought&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;around testing strategies when dealing with remote services. Not super filing but a tasty snack. I'm rarely disappointed when swinging by Fowler's restaurant for some brain food.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.infoq.com/news/2009/08/value-velocity"&gt;What is the Value you are Delivering?&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;This is a great read. Velocity is not Value. Sometimes I feel as though most people have completely forgotten why they are delivering something. It's not to get done on time or get done within budget or to crank your iteration velocity up. Somebody (hopefully, somebody) has the expectation that what you deliver will provide value to its consumer. If it doesn't, all of the other metrics are meaningless (well, they still have meaning, but only as a cautionary tale).&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="yshortcuts" id="lw_1249404720_2"&gt;&lt;a href="http://wicket.apache.org/"&gt;&lt;span style="font-weight: bold;"&gt;Wicket Smart&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;I started playing around with&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://wicket.apache.org/"&gt;Wicket&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/a&gt;over the weekend. I like it quite a bit. Love the component-based nature and clean separation of concerns. Especially now with Wicket 1.4: Java 5 based, richly typed, and&lt;span style="font-style: italic;"&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;not backward compatible&lt;/span&gt;. And thank the gods of good sense over the demons of appeasement for breaking backward compatibility, just a little bit, in this particular case - hey, don't like it? They'll give you your money back and you can go crawl down your Java 1.4 wormhole back into 2002 :-).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-2309732045272887823?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/2309732045272887823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/random-thoughts-trivial-drivel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2309732045272887823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/2309732045272887823'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/random-thoughts-trivial-drivel.html' title='Random Thoughts, Trivial Drivel'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-903283170902060067</id><published>2009-08-10T08:41:00.000-07:00</published><updated>2009-10-03T08:12:54.249-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='paas'/><category scheme='http://www.blogger.com/atom/ns#' term='iaas'/><category scheme='http://www.blogger.com/atom/ns#' term='saas'/><category scheme='http://www.blogger.com/atom/ns#' term='adtaas'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>That long black cloud is coming down, I feel like I'm knocking on heaven's door</title><content type='html'>I tell ya it seems like the players and the playahs in the cloud computing and ADTAAS (Any Damn Thing As A Service) space are doubling every week.   Like most viral trends (whether they be real game changers or mostly hype), this is producing some creative and useful capabilities but is also attracting the shills, hustlers and sharks.&lt;br /&gt;&lt;br /&gt;Then there is the gray area in between.  Lots of vendors are feverishly slapping "Cloud Ready" on top of their now dated SOA stickers (which were slapped on top of the Component Based, J2EE Compliant, Distributed and Web stickers).  It's like the clearance items on the last day of a going out of business sale or your Ski Jacket on the last day of the season after an active year on the slopes.&lt;br /&gt;&lt;br /&gt;Some software firms are simply tossing their packaged offerings onto a provider cloud and presto-change-o, check out their new As-A-Service capabilities!  "Unlike [fill in competitors]&lt;insert&gt;, we've built this from the ground up to be [fill in latest buzzwords]&lt;insert&gt;!"   Indeed.&lt;br /&gt;&lt;br /&gt;A wise man once said, &lt;a href="http://www.tv.com/the-simpsons/marge-vs.-the-monorail/episode/1356/trivia.html"&gt;"Ya know, a town with money is like a mule with a spinning wheel - He doesn't know how he got it and damned if he knows what to do with it."&lt;/a&gt;    This prophet, of course, is none other than&lt;a href="http://simpsons.wikia.com/wiki/Lyle_Lanley"&gt; Lyle Lanley&lt;/a&gt;, selling the town of Springfield on &lt;a href="http://en.wikipedia.org/wiki/Marge_vs._the_Monorail"&gt;the joy and profit of buying and operating their own monorail&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Marge_vs._the_Monorail"&gt;.&lt;/a&gt;   And this parable is mentioned only partially in jest.&lt;br /&gt;&lt;br /&gt;The Simpsons provide a lot of sage advice in their fractured fables.  Some young writer named Conan O'Brien spun that particular cautionary monorail tale of the consequences of wanting to be like The Other Guy when he has something shiny and new.&lt;br /&gt;&lt;br /&gt;The Simpson clan's &lt;a href="http://en.wikipedia.org/wiki/The_Joy_of_Sect"&gt;Joy of Sect&lt;/a&gt; provides similar enlightenment on the dangers of simply following &lt;a href="http://simpsons.wikia.com/wiki/The_Leader"&gt;'The Leader'&lt;/a&gt;.   The 'Cloudists' and 'SAASians' of the world today remind me in some ways of  &lt;a href="http://simpsons.wikia.com/wiki/Movementarianism"&gt;Movementarians&lt;/a&gt; in this episode, managing to brainwash virtually an entire community with vague promises and subtle threats (well, not so subtle, perhaps).&lt;br /&gt;&lt;br /&gt;Who needs the Bible or the Koran (or Dianetics) when you have the Simpsons?&lt;br /&gt;&lt;br /&gt;I should be very clear that I think Cloud Computing and especially Infrastructure As A Service is much more a game changer than a lot of hot air.  That's not even debatable: the game has already been changed by it for 1000s of companies who couldn't otherwise have afforded a web presence for their business (and in any case were most definitely priced out of handling their peaks and valleys of demand online).  The idea that you don't have to buy or lease your own hardware and can scale up or down based on need (or on your available budget) can't be overstated.  Well, it can be (and has been) overstated for fun and profit by the shills and shamwows I've been bemoaning, but it's a powerful thing nonetheless.&lt;br /&gt;&lt;br /&gt;In the end, ya just gotta remember that not everything is meant to be cloud enabled or provided As-A-Service.  I see what I thought were otherwise reasonable people trying to twist their square requirements into round fluffy white holes and star-shaped As-A-Service slots simply so they could have the industry analysts label them into the magical wavy quadrants with the most snap-crackle-pop, virtual-cloud-as-a-service being the snappiest right now.&lt;br /&gt;&lt;br /&gt;And the cloud doesn't write your business applications for you.  You still have to do that.  They still probably have to abide by a set of business rules (which can include regulatory and security constraints that go beyond what at least many of the big cloud providers can offer today).&lt;br /&gt;&lt;br /&gt;There are also technical as well as other constraints at play here.  Bandwidth, distribution, data ownership/protection, legal worries.  They all still apply.  Lots of smart folks are working through most of these concerns and they are all in the end solvable if they haven't yet been.  But they are solvable in the large, not necessarily solvable for you.&lt;br /&gt;&lt;br /&gt;For instance, if you still need to talk to a system of yours that cannot be provisioned in the cloud, you'll probably need to at least ensure that the conversations are not lengthy or chatty, lest you surrender scalability in your pursuit of scalability (or marketability).  If that's not possible due to the centralized nature of such a system,  then you might have to hold off on your trip to the heavens (at least in this particular case).&lt;br /&gt;&lt;br /&gt;Like anything, due diligence shouldn't be skipped in the mad rush to be relevant.  Take a peak into each vendor's &lt;a href="http://simpsons.wikia.com/wiki/Movementarianism"&gt;'Forbidden Barn'&lt;/a&gt; before you eat what they're cooking.&lt;br /&gt;&lt;br /&gt;Finally, check out others that have gone before you with a similar profile who might prove instructive.  You'll want to see how the &lt;a href="http://en.wikipedia.org/wiki/List_of_fictional_places_on_The_Simpsons#North_Haverbrook"&gt;North Haverbrooks&lt;/a&gt; of the world are making out.&lt;/insert&gt;&lt;/insert&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-903283170902060067?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/903283170902060067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/that-long-black-cloud-is-coming-down-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/903283170902060067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/903283170902060067'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/that-long-black-cloud-is-coming-down-i.html' title='That long black cloud is coming down, I feel like I&amp;#39;m knocking on heaven&amp;#39;s door'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7494582752654566190.post-7581856831390544436</id><published>2009-08-10T08:29:00.000-07:00</published><updated>2009-10-03T08:12:54.261-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='dvcs'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='cvs'/><title type='text'>Git-y-up - chasing the version control flame at a leasurely pace</title><content type='html'>What  &lt;a href="http://ianclatworthy.wordpress.com/2007/10/11/why-distributed-version-control-matters/"&gt;Distributed Version Control System (DVCS)&lt;/a&gt; did you wake up with this morning? (And what were you thinking/drinking last night that put you in this awkward position?)&lt;br /&gt;&lt;br /&gt;We've been moving all of our new development at work from &lt;a href="http://www.nongnu.org/cvs/"&gt;CVS&lt;/a&gt; to &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; (SVN) over the past year, following an industry trend in that direction.  Mainly because CVS wasn't built from the ground up to be distributed and because we change/add source directory structures more than occasionally (new Java package, for instance).  CVS doesn't deal with those directory structure changes easily, at least not outside of straight-up additions/deletions, because it only versions files (not always a bad thing, as I'll get into later).   If you're somewhat-obscure-movie minded, you can think of it like the&lt;a href="http://www.imdb.com/title/tt0120789/"&gt; geographic difference between Elm and Main Street&lt;/a&gt; in &lt;a href="http://www.imdb.com/title/tt0120789/"&gt;Pleasantville&lt;/a&gt; - Elm is like CVS - it's shorter and only has houses.&lt;br /&gt;&lt;br /&gt;And I'll stop-hyphenating-everything-to-make-up-words-now.&lt;br /&gt;&lt;br /&gt;Of course we're following behind that CVS to Subversion industry trend by several years and are about to get lapped on the track as a good chunk of the open source community are filing for SVN divorce, largely falling into the arms of &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;, though others have flown the coop with &lt;a href="http://mercurial.selenic.com/wiki/"&gt;Mercurial&lt;/a&gt; and &lt;a href="http://bazaar-vcs.org/"&gt;Bazaar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Branching and Merging woes are the usual causes cited for this move away from Subversion and I understand why.  Sure, SVN allows you to branch  pretty much anything (because branches are literally just copies of your whole enchilada).  It's the merging that kills ya.  It's better than CVS in that you &lt;span style="font-style: italic;"&gt;actually can&lt;/span&gt; branch and merge directory structures.   And it's gotten easier with SVN 1.5 and 1.6 but the dreaded merge can still be very painful and time consuming endeavor.&lt;br /&gt;&lt;br /&gt;Where Subversion takes a step back from CVSland, in my opinion, is in the way it represents the versioned data: an opaque-to-you-cause-its-binary database.  Sorry, a break out of hyphenitis again.   With CVS, your file is still a file (granted, it's all versions of your file with a bunch of metadata, but you can hand fix it if something goes wrong).  If the SVN repo gets corrupt in any way, well - hopefully your backup is recent and you only lose a few hours.&lt;br /&gt;&lt;br /&gt;Git doesn't have the Subversion/CVS concept of checking files and modules out from a repository.   With Git you clone the master repository and from that point on, the module you're working on is also a full fledged Git repo (you can commit to it, you can branch and merge your files to your heart's content).   I'm not here to sing the praises of Git - I don't know enough about it yet.  And others are doing a fine job of &lt;a href="http://whygitisbetterthanx.com/"&gt;tooting git's horn&lt;/a&gt;.  I think more than git itself, the thing that gets the OSS community excited is the &lt;a href="http://github.com/"&gt;GitHub&lt;/a&gt;, a source code hosting / collaboration / cloudy kind of thing.  SCM served up SAAS-style.&lt;br /&gt;&lt;br /&gt;I know even less about Mircurial and Bazaar than I do Git.   And of course there are a number of popular commercial products (Perforce, ClearCase, PVCS, etc.).  Some better than others, all have their own special fleas.  As that giant of philosophy, &lt;a href="http://www.imdb.com/character/ch0012282/"&gt;Gordon Gekko&lt;/a&gt;, once said, 'Pick the dogs with the least fleas.'  There you go.  Of course, one person's fleas are another person's flea circus.  'Buddy's learning.'&lt;br /&gt;&lt;br /&gt;So we'll keep an eye on the exodus even as we continue to mush onward with Subversion.  I hope the Subversion maintainers are taking some cues from these other DVCS offering as they plan and prioritize upcoming releases.  Perhaps by the time folks start migrating off one of these "newbies", there will be room for us to climb aboard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7494582752654566190-7581856831390544436?l=technologyvulture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technologyvulture.blogspot.com/feeds/7581856831390544436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/git-y-up-chasing-version-control-flame.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/7581856831390544436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7494582752654566190/posts/default/7581856831390544436'/><link rel='alternate' type='text/html' href='http://technologyvulture.blogspot.com/2009/08/git-y-up-chasing-version-control-flame.html' title='Git-y-up - chasing the version control flame at a leasurely pace'/><author><name>Steve Buzzard</name><uri>http://www.blogger.com/profile/08210714419956027197</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_2E2d3_u_2jE/Ssdr7SFHsHI/AAAAAAAAAAM/8o2YIS7JUtQ/S220/08242009.jpg'/></author><thr:total>0</thr:total></entry></feed>
