<?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-6190051451753725265</id><updated>2011-10-01T11:24:39.445-05:00</updated><category term='IBM'/><category term='continuous integration'/><category term='Microsoft'/><category term='Architecture'/><category term='election'/><category term='cloud computing'/><category term='REST'/><category term='Amazon'/><category term='culture'/><category term='BizTalk'/><category term='MQ'/><category term='Blitz'/><category term='cloud'/><category term='SOA'/><category term='API'/><category term='Web Service'/><category term='WebSphere'/><category term='Google'/><category term='ASP.NET'/><category term='Goosh'/><category term='AWS'/><category term='SOAP'/><category term='nServiceBus'/><category term='economics'/><category term='agile'/><category term='Oslo'/><category term='JavaSpaces'/><category term='chicago'/><category term='Astoria'/><category term='Obama'/><category term='EA'/><category term='.NET'/><title type='text'>using Enterprise.Architecture;</title><subtitle type='html'>Thoughts on Enterprise Architecture from a .NET perspective</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-8678508855851105911</id><published>2010-09-09T21:44:00.000-05:00</published><updated>2010-09-09T21:45:10.518-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MQ'/><category scheme='http://www.blogger.com/atom/ns#' term='WebSphere'/><category scheme='http://www.blogger.com/atom/ns#' term='nServiceBus'/><title type='text'>WebSphere MQ Adapter for nServiceBus Released</title><content type='html'>&lt;p&gt;&lt;a href="http://code.google.com/p/nservicebuswmq/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://lh5.ggpht.com/_MzGYnDrQIUw/TImbtR9yoeI/AAAAAAAAAFk/nmO8_je0I5U/image%5B12%5D.png?imgmax=800" width="260" height="67" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Announcing the release of an open source WebSphere MQ adapter for nServiceBus – &lt;a href="http://code.google.com/p/nservicebuswmq/"&gt;nServiceBusWmq&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The code was written by Tim Sieberg and Neil Adams, with contributions by Adam Tybor. I’ll be maintaining the project.&lt;/p&gt;  &lt;p&gt;The adapter is built against nServiceBus 1.9. It is being used in production against WebSphere MQ 6.x.&lt;/p&gt;  &lt;p&gt;A notable feature in this MQ adapter is &lt;em&gt;failover protection&lt;/em&gt;. What this does is automatically drop down to a MSMQ queue on the local machine if the connection to MQ is lost. Once a connection to MQ is re-established, the messages are automatically forwarded from MSMQ to the correct MQ destination queues.&lt;/p&gt;  &lt;p&gt;We needed this because the production MQ server briefly goes offline twice a day for automatic maintenance. We didn’t want publishers to break or be interrupted, so failover was our solution.&lt;/p&gt;  &lt;p&gt;Hope this adapter helps anyone looking at nServiceBus who needs it to work with MQ. I’ve found the two to be a great combination.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-8678508855851105911?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/8678508855851105911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=8678508855851105911' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/8678508855851105911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/8678508855851105911'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2010/09/websphere-mq-adapter-for-nservicebus.html' title='WebSphere MQ Adapter for nServiceBus Released'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_MzGYnDrQIUw/TImbtR9yoeI/AAAAAAAAAFk/nmO8_je0I5U/s72-c/image%5B12%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-8047688370047555696</id><published>2009-10-04T08:08:00.003-05:00</published><updated>2009-10-04T08:21:08.599-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chicago'/><title type='text'>Norman Mailer on Chicago</title><content type='html'>&lt;p&gt;&lt;img style="display: block; float: none; margin-left: 0px; margin-right: auto" src="http://graphics8.nytimes.com/images/2009/10/04/weekinreview/04reading_500.jpg" align="right" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;   &lt;p&gt;Chicago is the great American city. New York is one of the capitals of the world and Los Angeles is a constellation of plastic, San Francisco is a lady, Boston has become Urban Renewal, Philadelphia and Baltimore and Washington wink like dull diamonds in the smog of Eastern Megalopolis, and New Orleans is unremarkable past the French Quarter. Detroit is a one-trade town, Pittsburgh has lost its golden triangle, St. Louis has become the golden arch of the corporation, and nights in Kansas City close early. The oil depletion allowance makes Houston and Dallas naught but checkerboards for this sort of game. But Chicago is a great American city. Perhaps it is the last of the great American cities.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;-- Norman Mailer, &lt;em&gt;Miami and the Siege of Chicago: An Informal History of the Republican and Democratic Conventions of 1968&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Credit to the New York Times for finding the &lt;a href="http://www.nytimes.com/2009/10/04/weekinreview/04reading.html"&gt;quote (and picture)&lt;/a&gt;.&lt;/p&gt;  &lt;div align="right"&gt;&lt;span style="text-align: right; font-style: italic; color: rgb(102,102,102); font-size:78%;"&gt;Photo: Scott Olson/Getty Images&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-8047688370047555696?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/8047688370047555696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=8047688370047555696' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/8047688370047555696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/8047688370047555696'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2009/10/norman-mailer-on-chicago.html' title='Norman Mailer on Chicago'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-2525459997517096871</id><published>2009-02-03T15:30:00.005-06:00</published><updated>2009-02-03T15:37:35.427-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='culture'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Unintended Consequences of Architecture</title><content type='html'>&lt;p&gt;&lt;a href="http://www.sxc.hu/photo/1101993"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://www.sxc.hu/pic/m/e/ed/edmondo/1101993_path.jpg" align="right" /&gt;&lt;/a&gt; Bonus plans are one of those incredibly tricky things to devise, because you know you’re going to get the behavior you’re incenting for – but that may not be the behavior you meant to elicit. Offer your employees large bonuses for big quarterly numbers, and you’re likely to get some big quarterly numbers – but the quality and durability of those results are likely to be sacrificed.&lt;/p&gt;  &lt;p&gt;NYT economics columnist David Leonhardt’s essay “&lt;a href="http://www.nytimes.com/2009/02/01/magazine/01Economy-t.html?pagewanted=print"&gt;The Big Fix&lt;/a&gt;” talks about policy decisions having unintended impacts on social and cultural norms. Key quote:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Economists don’t talk much about cultural norms. They prefer to emphasize prices, taxes and other incentives. And the transformation of the American economy will depend very much on such incentives: financial aid, Medicare reimbursements, energy prices and marginal tax rates. But it will also depend on forces that aren’t quite so easy to quantify.&lt;/p&gt;    &lt;p&gt;[…]&lt;/p&gt;    &lt;p&gt;When Washington sets out to rewrite the rules for the economy, it can pass new laws and shift money from one program to another. But the effects of those changes are not likely to be merely the obvious ones. The changes can also send signals. They can influence millions of individual decisions — about the schools people attend, the jobs they choose, the medical care they request — and, in the process, reshape the economy.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Enterprise architecture goes hand-in-hand with governance. Which means you’re devising architecture policies and enforcing those policies. In simpler terms, your architecture sends signals about what is important to the organization. But an architecture’s impact on corporate culture may not be what you expect it to be.&lt;/p&gt;  &lt;p&gt;Unintended consequences are, by definition, impossible to predict. Hindsight is all we have - here’s what I’ve seen from my own past experience:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Monocultures suppress potentially worthwhile solutions – a policy that limits you only to Microsoft products only even the airing of alternative solutions. If you need to worry about distributed systems or high scalability, you need to look beyond Microsoft. &lt;/li&gt;    &lt;li&gt;Imperative (as compared to declarative) policies create a command &amp;amp; control culture – policies that focus heavily on “thou shalt…” commands without explaining “why” only communicate that there are rules to be followed. There’s a good reason you limit who is allowed to deploy code to production systems, but your fresh-out-of-college developer isn’t likely to have experienced that &lt;em&gt;oh-my-God-I-think-I-just-brought-down-the-server&lt;/em&gt; moment of terror – and the lockdown rule is there to make sure he never does. &lt;/li&gt; &lt;/ul&gt;  &lt;br /&gt;&lt;div align="right"&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102); text-align: right;font-size:78%;"&gt;Photo: &lt;a href="http://www.sxc.hu/photo/1101993" style="text-decoration: none;"&gt;path&lt;br /&gt;&lt;/a&gt; by &lt;a href="http://www.sxc.hu/profile/edmondo" style="text-decoration: none;"&gt;edmondo&lt;/a&gt;&lt;/span&gt;&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/6190051451753725265-2525459997517096871?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/2525459997517096871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=2525459997517096871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/2525459997517096871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/2525459997517096871'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2009/02/unintended-consequences-of-architecture.html' title='Unintended Consequences of Architecture'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-8637286778315821354</id><published>2008-11-09T20:26:00.001-06:00</published><updated>2008-11-09T20:29:01.469-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chicago'/><category scheme='http://www.blogger.com/atom/ns#' term='Obama'/><category scheme='http://www.blogger.com/atom/ns#' term='election'/><title type='text'>Election Day 2008 in Chicago</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MzGYnDrQIUw/SRddJehj_QI/AAAAAAAAADA/94zAlc-7Zr8/s1600-h/Carlotta.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_MzGYnDrQIUw/SRddJehj_QI/AAAAAAAAADA/94zAlc-7Zr8/s320/Carlotta.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5266780706627124482" /&gt;&lt;/a&gt;As I do most days now since Ramona was born, I took Carlotta to school in the morning after voting. Since I had the camera with me, I took a shot of her as we walked from the bus stop to her school (walking past Wrigley Field along the way). I told Carlotta that I wouldn't be home that night, because I was going to see Barack Obama in Grant Park. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Why are you going to see Barack Obama?", she asked.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Because it's very important for him to be elected," I told her, and I realized that I had a deeper emotional investment in this election than I realized. It shouldn't have been a surprise, but it was.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MzGYnDrQIUw/SRdjkLektkI/AAAAAAAAADQ/ovLAx7Ezy0I/s1600-h/ticket.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 128px; height: 400px;" src="http://2.bp.blogspot.com/_MzGYnDrQIUw/SRdjkLektkI/AAAAAAAAADQ/ovLAx7Ezy0I/s400/ticket.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5266787762440549954" /&gt;&lt;/a&gt;&lt;div&gt;I had gotten my ticket to the Obama Rally the night before. Delia said she could handle the kids solo (her first time doing this since Ramona was born).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The city had been putting the fear of God into all of the downtown office building tenants to encourage companies to let employees telecommute on Tuesday. Huge crowds were expected, and the light rail schedules were modified to accomodate more inbound passengers late in the day. Many people at work didn't come in on Tuesday.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My grand plans of getting lots of work done after work but before the rally crumbled as I was watching the news of the returns. So I headed out to get some dinner at a local restaurant. At around 8pm I started walking down to the rally.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I neared Grant Park, the crowds increased, and hawkers selling Obama t-shirts, rally towels, and buttons were everywhere on the sidewalks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I got to the entrance at Congress, I saw there was a line waiting to get in. After about a mile of walking, I finally reached the end of the line. I was despairing of ever getting in at this point. I couldn't see any way we were getting in before 1am if they were going to have any kind of security.&lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/_MzGYnDrQIUw/SRdo2mvzakI/AAAAAAAAADY/5K_A5CdZWRw/s320/Crowd+going+in.jpg" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 240px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5266793576556358210" /&gt;&lt;/div&gt;&lt;div&gt;But the line started moving a little, then the pace picked up. We were walking at a good clip with few stops. Chants of "Obama! Obama!" and "Yes We Can!"rose among the crowd along the way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The crowd was happy but mellow. Well-behaved, even. In the "Congress Hotel" photo at right, notice the man in the black jacket carrying a folded flag.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MzGYnDrQIUw/SRdqEkVrpUI/AAAAAAAAADg/OXqHJxwX_k8/s1600-h/Past+first+security+checkpoint.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_MzGYnDrQIUw/SRdqEkVrpUI/AAAAAAAAADg/OXqHJxwX_k8/s320/Past+first+security+checkpoint.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5266794915939722562" /&gt;&lt;/a&gt;&lt;div&gt;Despite the speed with which people were streaming in, there were, in fact, two security checkpoints. The first just checked to make sure you had a ticket (in that you had some piece of paper that looked something like a ticket). The picture at right is looking back just after getting through the first security checkpoint - the security folks are in the yellow jackets.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More walking. A second security checkpoint, where a cursory match of my driver's license to my ticket may have been done. I was never searched.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MzGYnDrQIUw/SRdvD8G-hgI/AAAAAAAAADw/bRS3_rtYwxU/s1600-h/Crowd+and+skyline.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_MzGYnDrQIUw/SRdvD8G-hgI/AAAAAAAAADw/bRS3_rtYwxU/s320/Crowd+and+skyline.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5266800402698765826" /&gt;&lt;/a&gt;&lt;div&gt;Some more walking, and then a sea of people. Bright lights everywhere. Jumbotron - apparently the Obama campaign favors CNN, by the way. In the picture at left, you can make out the Chicago skyline rising up above the crowd. Estimates would later put the crowd at a quarter million.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's hard to capture the crowd adequately with these pictures - but in every direction you looked, it was more people.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MzGYnDrQIUw/SRdxFPxPaHI/AAAAAAAAAD4/rjERP3759fA/s1600-h/More+crowd.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_MzGYnDrQIUw/SRdxFPxPaHI/AAAAAAAAAD4/rjERP3759fA/s320/More+crowd.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5266802624179431538" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Then suddenly, they called (I think) Virginia for Obama. The crowd erupted. In short order after that, McCain came on to concede. The crowd around me grew impatient as he seemed to keep talking and talking. There were a smattering of boos from the crowd when he mentioned Palin.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;None of this had really sunk in yet. It was clear Obama would be coming on soon. Stevie Wonder's "Signed Sealed Delivered" was playing and I thought, "Wait, what just happened here?" People were dancing. The next song was "Sweet Home Chicago" and I took a deep breath and realized that we'd won.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MzGYnDrQIUw/SRd0SWTBm7I/AAAAAAAAAEA/EJc4YF9lFCU/s1600-h/Obama+takes+the+stage.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_MzGYnDrQIUw/SRd0SWTBm7I/AAAAAAAAAEA/EJc4YF9lFCU/s320/Obama+takes+the+stage.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5266806147804928946" /&gt;&lt;/a&gt;&lt;div&gt;Obama took the stage (you can see him on the Jumbotron in the picture to the left - that's as close as I got to him). His speech was not celebratory, but a bit somber. Many people began leaving after he finished, and I saw a few other faces still looking toward the stage that looked, frankly, stunned.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Walking away from Grant Park, I passed a building with lights spelling "USA". Somehow this took on a different tone for me than the with-us-or-against-us jingoism of the last eight years. It seemed... hopeful.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MzGYnDrQIUw/SRdsxOYBrHI/AAAAAAAAADo/MgkUYzNoYB0/s1600-h/USA.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_MzGYnDrQIUw/SRdsxOYBrHI/AAAAAAAAADo/MgkUYzNoYB0/s400/USA.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5266797882161343602" /&gt;&lt;/a&gt;&lt;div&gt;&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/6190051451753725265-8637286778315821354?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/8637286778315821354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=8637286778315821354' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/8637286778315821354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/8637286778315821354'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2008/11/election-day-2008-in-chicago.html' title='Election Day 2008 in Chicago'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_MzGYnDrQIUw/SRddJehj_QI/AAAAAAAAADA/94zAlc-7Zr8/s72-c/Carlotta.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-7754565018689103630</id><published>2008-06-13T23:38:00.003-05:00</published><updated>2008-06-13T23:49:08.378-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Goosh'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Command line Google searches with goosh</title><content type='html'>&lt;a href="http://goosh.org/"&gt;Goosh&lt;/a&gt; (short for Google Shell) is a web page that acts like a command-line interface for Google running in your browser window. It's the Google equivalent of the DOS prompt or Unix shell.&lt;br /&gt;&lt;br /&gt;At first I just thought it was cute, which it is. But now I've found myself doing most of my searches from it. So let's take it for a spin.&lt;br /&gt;&lt;br /&gt;Here's the empty goosh command line.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MzGYnDrQIUw/SFNE63jjnEI/AAAAAAAAACE/hz8M6auhViM/s1600-h/goosh+start.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_MzGYnDrQIUw/SFNE63jjnEI/AAAAAAAAACE/hz8M6auhViM/s400/goosh+start.png" alt="" id="BLOGGER_PHOTO_ID_5211584971933981762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now type a search term and hit Enter. The first 4 results display.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MzGYnDrQIUw/SFNE7ILG7fI/AAAAAAAAACM/fTFiFZmrziw/s1600-h/goosh+chicago+web+search.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_MzGYnDrQIUw/SFNE7ILG7fI/AAAAAAAAACM/fTFiFZmrziw/s400/goosh+chicago+web+search.png" alt="" id="BLOGGER_PHOTO_ID_5211584976394841586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Type the number of the result to open that link in a new tab. Type m (for more) to see more results. Type c (for clear) to clear the results. Pressing the up arrow will cycle through previous commands that you typed, just like you can in a shell window. Nice.&lt;br /&gt;&lt;br /&gt;There's a cleverness in the way Google's different search capabilities are partitioned in goosh. Type "cd images" and you switch to the images directory.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MzGYnDrQIUw/SFNHHT3E1II/AAAAAAAAACU/mQMYTOhmhio/s1600-h/goosh+images.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_MzGYnDrQIUw/SFNHHT3E1II/AAAAAAAAACU/mQMYTOhmhio/s400/goosh+images.png" alt="" id="BLOGGER_PHOTO_ID_5211587384713729154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From the images directory, type your search term, and the image results display.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MzGYnDrQIUw/SFNIdgln3aI/AAAAAAAAACc/e-x2Ysd-7CM/s1600-h/goosh+chicago+image+search.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_MzGYnDrQIUw/SFNIdgln3aI/AAAAAAAAACc/e-x2Ysd-7CM/s400/goosh+chicago+image+search.png" alt="" id="BLOGGER_PHOTO_ID_5211588865598938530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or type "video chicago" and you'll search YouTube for Chicago videos.&lt;br /&gt;&lt;br /&gt;Now, the kids on &lt;a href="http://tech.slashdot.org/article.pl?sid=08/06/02/222234"&gt;Slashdot&lt;/a&gt; don't seem to care for it because, well, you can't run unix commands in goosh, which utterly misses the point.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, a geeky in-joke I just can't resist.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MzGYnDrQIUw/SFNKLj9EbKI/AAAAAAAAACk/Fp0ft6ARpPQ/s1600-h/goosh+in+the+beginning.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_MzGYnDrQIUw/SFNKLj9EbKI/AAAAAAAAACk/Fp0ft6ARpPQ/s400/goosh+in+the+beginning.png" alt="" id="BLOGGER_PHOTO_ID_5211590756288195746" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-7754565018689103630?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/7754565018689103630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=7754565018689103630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/7754565018689103630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/7754565018689103630'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2008/06/command-line-google-searches-with-goosh.html' title='Command line Google searches with goosh'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_MzGYnDrQIUw/SFNE63jjnEI/AAAAAAAAACE/hz8M6auhViM/s72-c/goosh+start.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-8759381754572179978</id><published>2008-06-04T07:40:00.001-05:00</published><updated>2008-06-04T07:40:37.060-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Agile development aligns business &amp; IT</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/27/50283171_448dd00cc6_d.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/27/50283171_448dd00cc6_d.jpg" alt="" border="0" /&gt;&lt;/a&gt;An interesting &lt;a href="http://www.hanselminutes.com/default.aspx?showID=131"&gt;podcast&lt;/a&gt; from Scott Hanselman interviewing Owen Rogers. Scott does a consistently fantastic job with his interviews. (A &lt;a href="http://perseus.franklins.net/hanselminutes_0113.pdf"&gt;transcript&lt;/a&gt; is available if you prefer to read.)&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;The discussion is about continuous integration and monitoring. But it touches on the concept of continuous integration as "the thin edge of the wedge" of agile adoption in an organization. That is, setting up continuous integration can have a viral quality that begins to inject more agile behavior into the organization.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;That's an interesting concept in and of itself. But then the discussion also put forth the notion that agile development aligns IT more closely with the business. This is not an idea I recall hearing explicitly stated before. Thinking about how agile works, this seems patently obvious, of course. But agile is generally presented as an IT-driven effort, primarily for the benefit of IT.&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;This concept of agile being a mechanism by which to effect business/IT alignment is a good one to keep in your back pocket and could be a useful argument for enterprise architects to help sell agile to the business.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102); text-align: right;font-size:78%;" &gt;Photo: &lt;a href="http://flickr.com/photos/mezone/50283171/" style="text-decoration: none;"&gt;autumn wedges&lt;br /&gt;&lt;/a&gt; by &lt;a href="http://www.flickr.com/photos/shynes/" style="text-decoration: none;"&gt;mezone&lt;/a&gt;&lt;/span&gt;&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/6190051451753725265-8759381754572179978?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/8759381754572179978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=8759381754572179978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/8759381754572179978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/8759381754572179978'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2008/06/agile-development-aligns-business-it.html' title='Agile development aligns business &amp; IT'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-3927432788973448806</id><published>2008-02-08T08:06:00.000-06:00</published><updated>2008-02-08T09:10:44.569-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Astoria'/><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='AWS'/><title type='text'>Designing a RESTful API</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/185/484382501_8b9da5e08f.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/185/484382501_8b9da5e08f.jpg" alt="" border="0" /&gt;&lt;/a&gt;There's a bit of art that goes into designing any API. We've designed and refined a SOAP API over the last couple of years, and the RPC-like nature of SOAP does seem to make things fairly simple from an API designer's perspective. Everything looks more or less like methods you would see in C#, only exposed through a service.&lt;br /&gt;&lt;br /&gt;Designing a RESTful API, on the other hand, is a process I am finding to be a much bigger mental leap.&lt;br /&gt;&lt;br /&gt;The REST model is best suited for problems where you're dealing with assets - that is, things that you act upon. But I couldn't find any good examples that were truly RESTful and also handled complex asset scenarios.&lt;br /&gt;&lt;br /&gt;What is truly RESTful? Well, to be truly RESTful you use all 4 HTTP verbs (GET, PUT, POST, DELETE). You don't add action verbs as params (?name=smith&amp;amp;action=delete). I could be flip and say it's not RESTful because it's cheating, but it's not about a dogma. The design criteria was to make the API as simple as possible, and having to know about special action= parameters requires additional knowledge on the part of the consumer. For us, the consumer should be able to have no prior knowledge of the API, just of the resources they want to access, and still be able to accomplish useful work.&lt;br /&gt;&lt;br /&gt;The complex asset scenario is trickier, I think. Most of the RESTful APIs out there deal with rather flat and simple resource structures. Amazon's S3 resource structure never gets more complex than &lt;code&gt;GET /[bucket-name]/[key-name]&lt;/code&gt;, and Google's search API is also flat but decorated with lots of filters: &lt;code&gt;GET /search?q=bill+material&amp;amp;output=xml&amp;amp;client=test&amp;amp;site=operations&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Don't get me wrong - simple is good! It's just that these aren't great models to learn from for a more complex set of assets. For example, say I have a taxonomy of categories with n numbers of subcategories. Each category can contain n number of items. Items can also contain subitems. Categories and items can each have a set of properties, and furthermore each category and item can be one of a certain set of types, which means they can have different property sets. And the same items can appear in more than 1 category. In some cases I only want to retrieve a subset of all available properties for n items or categories.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Category A (categoryType=F1)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;.&lt;/span&gt;|- Category AA (categoryType=G4)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;....&lt;/span&gt;|-Item 27 (itemType=9H)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;....&lt;/span&gt;|-Item 492 (itemType=4Y)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;.&lt;/span&gt;|- Item 1  (itemType=9H)&lt;br /&gt;Category B (categoryType=F1)&lt;br /&gt;Category C (categoryType=F1)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;.&lt;/span&gt;|-Category CC (categoryType=H8)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;.&lt;/span&gt;|-Category CD (categoryType=H8)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;...&lt;/span&gt;|-Item 1  (itemType=9H)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;.....&lt;/span&gt;|-Item 303  (itemType=7T)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;.....&lt;/span&gt;|-Item 305  (itemType=7T)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;.....&lt;/span&gt;|-Item 306  (itemType=7T)&lt;br /&gt;&lt;span style="visibility: hidden;"&gt;.&lt;/span&gt;|-Item 27 (itemType=9H)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This is, in a nutshell, the set of resources I need to be able to expose through the API.&lt;br /&gt;&lt;br /&gt;For something with this level of complexity, where thinking in terms of sets becomes more natural, I found Microsoft's &lt;a href="http://astoria.mslivelabs.com/"&gt;Astoria&lt;/a&gt; project (officially: ADO.NET Data Services) to be very helpful. Especially the concept of filtering resources.&lt;br /&gt;&lt;br /&gt;Take the following example: &lt;code&gt;GET /Customers[ALFKI]/Orders[1]/Employees&lt;/code&gt;, which filters the assets based on the data in the brackets, in this case returning those employees who created Order ID=1 for customer ID=ALFKI. The beauty of this approach is that it's easy to extend the filters in the brackets. So I could do &lt;code&gt;GET /Customers[ALFKI]/Orders[1,2,9]/Employees&lt;/code&gt; or even &lt;code&gt;/Customers[ALFKI,PDX,MSTR]/Orders[1-1000]/Employees&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The RESTful API we're working on isn't done yet - we're just starting to create a mock service that spits out static XML so we can get a feel for how the various consumers will actually use the API. This will let us play with the details of the API and the XML format before we commit to building all the data plumbing underneath it.&lt;br /&gt;&lt;br /&gt;Here are some RESTful resources I found helpful:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://astoria.mslivelabs.com/Using%20ADO.NET%20Data%20Services_CTP1.doc"&gt;Using ADO.NET Data Services&lt;/a&gt; - some great thinking from Microsoft on building a RESTful API for selecting complex data sets&lt;/li&gt;&lt;li&gt;&lt;a href="http://cafe.elharo.com/web/why-rest-failed/"&gt;Why REST Failed&lt;/a&gt; - the title is overstated, but Elliotte Rusty Harold (no relation to me) does a great job explaining the current challenges with PUT and DELETE support in modern browsers. Good for understanding what you're getting into.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.artima.com/lejava/articles/why_put_and_delete.html"&gt;Why PUT and DELETE?&lt;/a&gt; - an interview with Elliotte Rusty Harold that does a nice job of explaining why you want to go to the effort of supporting all 4 HTTP verbs despite the limited browser support. In a word - elegance.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102); text-align: right;font-size:78%;" &gt;Photo: &lt;a href="http://farm1.static.flickr.com/185/484382501_8b9da5e08f.jpg" style="text-decoration: none;"&gt;indecision&lt;br /&gt;&lt;/a&gt; by &lt;a href="http://www.flickr.com/photos/99183065@N00/" style="text-decoration: none;"&gt;SG NoCaptiveAnimals&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-3927432788973448806?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/3927432788973448806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=3927432788973448806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/3927432788973448806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/3927432788973448806'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2008/02/designing-restful-api.html' title='Designing a RESTful API'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/185/484382501_8b9da5e08f_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-4971037676908237348</id><published>2007-12-14T00:53:00.000-06:00</published><updated>2007-12-14T01:04:41.808-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BizTalk'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Microsoft forecast: partly cloudy</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/64/226013805_2ba85ac495.jpg?v=0"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/64/226013805_2ba85ac495.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;In a previous post I asked &lt;a href="http://using-enterprise-architecture.blogspot.com/2007/12/where-is-microsoft-cloud.html"&gt;Where is the Microsoft cloud?&lt;/a&gt; That is, where is the Microsoft competitive offering to Amazon's AWS, for example.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far, I've found mostly hot air. BizTalk Services is interesting, but still very much in the early stages. Certainly worth keeping an eye on. But branding it under the BizTalk name seems very odd - these are fundamental services like authentication, access control, &amp;amp; connectivity - and not tied specifically to BizTalk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have to say that I'm not getting the great sense of urgency from Microsoft about cloud computing that Nick Malik's &lt;a href="http://blogs.msdn.com/nickmalik/archive/2007/12/10/the-battle-for-the-net-top-heats-up.aspx"&gt;"Microsoft is coming" bravado&lt;/a&gt; suggests.&lt;br /&gt;&lt;br /&gt;Now, Microsoft is certainly &lt;i&gt;talking&lt;/i&gt; a lot about cloud computing - has been for the last 6 months. From a NetworkWorld &lt;a href="http://www.networkworld.com/news/2007/071807-microsoft-services-transition.html"&gt;article&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;Microsoft also plans later this year to launch Version 1 of a 12- to 24-month project to create Windows Live Cloud Infrastructure Services, Web-based services such as directory, identity and storage. The operating system services target companies and developers, who will wrap them around their applications, such as tapping an online directory service to generate a Kerberos ticket that a user would present to gain access to an on-premises or service-based application.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Which all sounds like goodness. But that article was written in July. End of the year is only a couple of weeks away. Did I miss that Version 1 release announcement? Maybe they were talking in &lt;a href="http://en.wikipedia.org/wiki/Friedman_%28unit%29"&gt;Friedman Units&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Can a project of this magnitude be even &lt;i&gt;only&lt;/i&gt; 24 months away when Cloud Infrastructure Services is still just a Microsoft research project with a rather &lt;a href="http://research.microsoft.com/netres/projects/csip/#vision"&gt;nebulous vision&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;And if putting announcements with titles like "Microsoft Does Have a SOA Strategy" on your main SOA page is meant to inspire confidence, well...&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102); text-align: right;font-size:78%;" &gt;Photo: &lt;a href="http://www.flickr.com/photos/shynes/226013805/" style="text-decoration: none;"&gt;windy day in cliffs of moher&lt;br /&gt;&lt;/a&gt; by &lt;a href="http://www.flickr.com/photos/shynes/" style="text-decoration: none;"&gt;hynesean&lt;/a&gt;&lt;/span&gt;&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/6190051451753725265-4971037676908237348?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/4971037676908237348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=4971037676908237348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/4971037676908237348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/4971037676908237348'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/12/microsoft-forecast-partly-cloudy.html' title='Microsoft forecast: partly cloudy'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-4958028471507918728</id><published>2007-12-13T07:15:00.000-06:00</published><updated>2007-12-13T07:25:47.499-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><title type='text'>When a service isn't the answer</title><content type='html'>I was discussing a rather involved design issue with a colleague recently, and as I pulled away from the diagram I had drawn out as we were talking it over, I said, "Surely someone else has already dealt with these issues. There must be a 3rd party service we could use that would handle all of this for us."&lt;br /&gt;&lt;br /&gt;"There is," my colleague said, "but they'll charge for every transaction, which can't be written off. If we build it ourselves then the costs are a capital expense and the cost can be depreciated."&lt;br /&gt;&lt;br /&gt;And so it goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-4958028471507918728?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/4958028471507918728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=4958028471507918728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/4958028471507918728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/4958028471507918728'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/12/when-service-isnt-answer.html' title='When a service isn&apos;t the answer'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-1234474703810623789</id><published>2007-12-10T07:36:00.000-06:00</published><updated>2007-12-10T07:41:25.378-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaSpaces'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><category scheme='http://www.blogger.com/atom/ns#' term='Blitz'/><title type='text'>Distributed state management for ASP.NET</title><content type='html'>The more I delve into distributed architectures, the more I'm feeling like Microsoft just isn't providing much of a path forward to scalable distributed systems. Case in point: state management.&lt;br /&gt;&lt;br /&gt;By default, session state in ASP.NET is stored in the web server's memory. To share state across servers - which you would want to do in a server farm - you need to store it in SQL Server or in the .NET state service. This is fine for small solutions, but once you bump up against the need to partition state across many servers or multiple hosting locations, things start to get complex and expensive.&lt;br /&gt;&lt;br /&gt;Now, it seems the Java folks have worked through these issues already. Here I'm thinking of &lt;a href="http://en.wikipedia.org/wiki/Space_based_architecture"&gt;Space-Based Architecture&lt;/a&gt; and more concretely &lt;a href="http://en.wikipedia.org/wiki/JavaSpaces"&gt;JavaSpaces&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Perhaps I'm oversimplifying, but wouldn't JavaSpaces be a perfect place to store session state in a distributed system? Data in a JavaSpace is persistent, atomic, distributed, &amp;amp; fault tolerant.&lt;br /&gt;&lt;br /&gt;There isn't a .NET equivalent of JavaSpaces. But, MS does provide &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.sessionstate.sessionstatestoreproviderbase.aspx"&gt;SessionStateStoreProviderBase&lt;/a&gt; and the ability to choose a custom provider for session state.&lt;br /&gt;&lt;br /&gt;So,  here's the recipe as I see it:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Set up a JavaSpaces instance on a Linux cluster (probably using Blitz to start out with)&lt;/li&gt;&lt;li&gt;Write a custom state provider that inherits from SessionStateStoreProviderBase and implements the necessary JavaSpaces methods. (Working out the bridging between .NET &amp;amp; JavaSpaces, of course. There is a tantalizing page called &lt;a href="http://codemesh.com/products/juggernet/examples/javaspaces.html"&gt;Using JavaSpaces from .NET&lt;/a&gt; - but it relies on a commercial product to accomplish this.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Change your ASP.NET web.config to point at your new custom state provider.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;These don't appear to be big hurdles to overcome, and it seems like a nice little open source project.&lt;br /&gt;&lt;br /&gt;(In the interest of due diligence, I did run across 2 commercial software products that seem to be solving this kind of problem: &lt;a href="http://www.scaleoutsoftware.com/"&gt;ScaleOut&lt;/a&gt; and &lt;a href="http://www.alachisoft.com/ncache/"&gt;NCache&lt;/a&gt;. But for a server farm of 20 servers, you're looking at something in the neighborhood of $30K, not including the cost of the Windows Server licenses + ongoing annual maintenance fees. There is also &lt;a href="http://www.gigaspaces.com/"&gt;GigaSpaces&lt;/a&gt;, which provides hosted JavaSpaces and has a .NET API, but is also expensive.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are some links I found useful in my research:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www-128.ibm.com/developerworks/java/library/j-cluster2/?Open&amp;amp;ca=daw-co-news"&gt;High-impact Web tier clustering, Part 2: Building adaptive, scalable solutions with JavaSpaces&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dancres.org/blitz/"&gt;The Blitz Project&lt;/a&gt; (open source JavaSpace implementation with installer)&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.sessionstate.sessionstatestoreproviderbase.aspx"&gt;SessionStateStoreProviderBase Class&lt;/a&gt;&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/6190051451753725265-1234474703810623789?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/1234474703810623789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=1234474703810623789' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/1234474703810623789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/1234474703810623789'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/12/distributed-state-management-for-aspnet.html' title='Distributed state management for ASP.NET'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-6184524336759022907</id><published>2007-12-04T01:07:00.000-06:00</published><updated>2007-12-04T01:10:05.339-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='BizTalk'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oslo'/><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='AWS'/><title type='text'>Where is the Microsoft cloud?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/46/185051573_64c7ca34e8.jpg?v=0"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://farm1.static.flickr.com/46/185051573_64c7ca34e8.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;I've been doing heavy research lately into scalable distributed systems, and Amazon's &lt;a href="http://aws.amazon.com/s3"&gt;S3&lt;/a&gt; and &lt;a href="http://aws.amazon.com/ec2"&gt;EC2&lt;/a&gt; are front and center in my brain as I'm working my way through the literature.&lt;br /&gt;&lt;br /&gt;Amazon's &lt;a href="http://www.amazon.com/gp/aws/landing.html"&gt;AWS&lt;/a&gt; and now IBM's &lt;a href="http://www-03.ibm.com/press/us/en/pressrelease/22613.wss"&gt;BlueCloud&lt;/a&gt; are out in front with cloud computing offerings.  Google may or may not be planning something akin to S3 with &lt;a href="http://googleblog.blogspot.com/2007/08/simple-way-to-get-more-storage.html"&gt;Google shared storage&lt;/a&gt; combined with APIs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the midst of my research, I saw that Microsoft has a codename - &lt;a href="http://www.microsoft.com/soa/products/oslo.aspx"&gt;Oslo&lt;/a&gt; - for their next iteration of SOA tools. And so the obvious question (to me, at least) is: where is Microsoft's cloud computing offering?&lt;br /&gt;&lt;br /&gt;Well, looks like &lt;a href="http://labs.biztalk.net/"&gt;BizTalk Services&lt;/a&gt; may be Microsoft's response. &lt;a href="http://geekswithblogs.net/cyoung/archive/2007/10/09/115944.aspx"&gt;Charles Young&lt;/a&gt; has an overview of his early experiences with it.&lt;br /&gt;&lt;br /&gt;Looks like I have more research to do...&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102); text-align: right;font-size:78%;" &gt;Photo: &lt;a href="http://www.flickr.com/photos/cogdog/185051573/" style="text-decoration: none;"&gt;Net Connection&lt;/a&gt; by &lt;a href="http://www.flickr.com/photos/cogdog/" style="text-decoration: none;"&gt;cogdogblog&lt;/a&gt;&lt;/span&gt;&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/6190051451753725265-6184524336759022907?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/6184524336759022907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=6184524336759022907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/6184524336759022907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/6184524336759022907'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/12/where-is-microsoft-cloud.html' title='Where is the Microsoft cloud?'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-1543798348509855466</id><published>2007-11-29T23:17:00.000-06:00</published><updated>2007-12-04T00:50:55.508-06:00</updated><title type='text'>You get what you give</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm2.static.flickr.com/1105/1104763461_b121b52b5b.jpg?v=0"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://farm2.static.flickr.com/1105/1104763461_b121b52b5b.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;Brian Sommer asks &lt;a href="http://servicessafari.blogs.com/services_safari/2007/11/reaping-what-yo.html"&gt;Why are we paying bonuses?&lt;/a&gt; He's reporting on the frustration among executives over bonuses as entitlements, mercenary employees, how to motivate employees, and diminishing consulting skills in the workforce. Which is a lot of ground to cover in a single post.&lt;br /&gt;&lt;br /&gt;What stuck with me most was Brian's description of local Chicago execs complaining about their employees increasingly having a "what's in it for me" attitude.&lt;br /&gt;&lt;br /&gt;Ok. Forgive me for not feeling the executives' pain here, but what exactly do these execs expect to happen when their businesses reward loyalty and job tenure with... what?&lt;br /&gt;&lt;br /&gt;Let's list the disincentives mainstream contemporary US businesses have come up with:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.economist.com/daily/chartgallery/displaystory.cfm?story_id=9934771"&gt;No job security / layoffs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nationmaster.com/graph/lab_hou_wor-labor-hours-worked"&gt;Long hours&lt;/a&gt;&lt;/li&gt;&lt;li&gt;More work than life in the work/life balance (e.g. &lt;a href="http://www.nytimes.com/2006/08/10/fashion/10vacation.html#"&gt;Blackberries and laptops on vacations&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.latimes.com/classified/jobs/career/la-na-risk15may1505,0,1949046.story?coll=la-class-employ-career"&gt;No pensions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;If a company's hiring policies lead it to mostly hire rational people, then the rational and expected response to these disincentives is a mercenary attitude. To paraphrase John Maynard Keynes, when the incentives change, I change my behavior. What do you do?&lt;br /&gt;&lt;br /&gt;This is what the "ownership society" looks like - and it looks an awful lot like every man for himself. I've got mine... and good luck to you.&lt;br /&gt;&lt;br /&gt;Today's NY Times has an article that touches on this topic and, frankly, made me sad when I read it. &lt;a href="http://www.nytimes.com/2007/11/29/fashion/29Work.html?ex=1354078800&amp;amp;en=5f7a72a66b9fc4b4&amp;amp;ei=5124&amp;amp;partner=permalink&amp;amp;exprod=permalink"&gt;What Do I Do? Depends on What Week It Is&lt;/a&gt;  describes Sean Aiken's quest to work a different job every week for a year and is chronicled on &lt;a href="http://oneweekjob.com/"&gt;oneweekjob.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But here's the part that broke my heart (emphasis mine):&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;The 20-somethings who turn to One Week Job find in Mr. Aiken “an ideal of the unstable life,” says Penelope Trunk, the author of “The Brazen Careerist” (Business Plus, 2007), who blogs and lectures on the transformation of the workplace. “He sends the message ‘job-hopping is O.K.,’ ‘moving around is O.K.’”&lt;/p&gt;&lt;p&gt;That is a comforting message, she says, because &lt;b&gt;while Gen Y talks of seeking passion and embracing what is new, that is just brave cover for a less comfortable truth. “The reality is they might prefer one job that would last forever and end with retirement, but that kind of job doesn’t exist anymore,”&lt;/b&gt; Ms. Trunk says. “The alternative, the instability, terrifies them. Sean Aiken is an example of how uncertainty and constant change can be O.K..”&lt;/p&gt;&lt;/blockquote&gt;No, the job-for-life doesn't exist anymore.  That's the reality right now, and maybe forever. But it's a reality based on choices. And those choices have consequences. So execs, if your employees have a mercenary attitude, then you should be asking yourselves what is driving that response. It's not character defects. It's not a few bad apples. And it's not because people were just better back in the good old days.&lt;br /&gt;&lt;br /&gt;You get what you give.&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102); text-align: right;font-size:78%;" &gt;Photo: &lt;a href="http://www.flickr.com/photos/vees/1104763461/" style="text-decoration: none;"&gt;Good and Bad&lt;/a&gt; by &lt;a href="http://www.flickr.com/photos/vees/" style="text-decoration: none;"&gt;vees&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-1543798348509855466?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/1543798348509855466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=1543798348509855466' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/1543798348509855466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/1543798348509855466'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/11/you-get-what-you-give.html' title='You get what you give'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-806466226951884177</id><published>2007-11-28T06:09:00.000-06:00</published><updated>2007-11-30T21:16:12.792-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA for SAP</title><content type='html'>SAP has an interesting message on SOA, if I'm reading &lt;a href="http://blogs.zdnet.com/service-oriented/?p=1007"&gt;Joe McKendrick&lt;/a&gt; right on this -  you can use SAP's SOA methods while starting out small as a subscriber to their SaaS offering, and then scale up to their enterprise offering later, in what would certainly be advertised as a "seamless transition."&lt;br /&gt;&lt;br /&gt;This is precisely the sort of thing that a consistent architecture &lt;i&gt;should&lt;/i&gt; allow. Of course, it cuts both ways - you could also (theoretically) move from SAP's enterprise offering to their SaaS offering. Or more interestingly, move to a competitor who offers the same set of SAP-compatible methods.&lt;br /&gt;&lt;br /&gt;What, exactly, would prevent Oracle from offering a set of SAP-compatible methods? And who will be the first to try to claim intellectual property rights on a URL? Is &lt;i&gt;http://mycompany.com/services/sap/adduser©&lt;/i&gt; right around the corner?&lt;br /&gt;&lt;br /&gt;Once there is a significant set of companies who have committed to a particular vendor's SOA methods, they're also primed for another vendor to come sniffing around with a translation layer and lower pricing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-806466226951884177?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/806466226951884177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=806466226951884177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/806466226951884177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/806466226951884177'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/11/soa-for-sap.html' title='SOA for SAP'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-1247699219160798225</id><published>2007-11-27T18:40:00.000-06:00</published><updated>2007-11-27T19:05:12.037-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><title type='text'>How eBay Scales Up</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_MzGYnDrQIUw/R0y9oxrHGQI/AAAAAAAAAAM/G8FeUzPAMoA/s1600-h/ebaylogo.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5137689783149467906" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_MzGYnDrQIUw/R0y9oxrHGQI/AAAAAAAAAAM/G8FeUzPAMoA/s320/ebaylogo.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Here are a couple of presentations giving an overview of eBay's architectural approach and reviewing how the architecture has evolved. &lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.eos1.dk/qcon/sf2007/slides/public/RandyShoup_eBayArchPrinciples.pdf"&gt;current eBay architecture&lt;/a&gt; (Nov. 2007 presentation via &lt;a href="http://duckdown.blogspot.com/2007/11/links-for-2007-11-24.html"&gt;James McGovern&lt;/a&gt;) &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf"&gt;more history on the evolution of eBay's architecture&lt;/a&gt; (Nov. 2006 presentation) &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Of note: &lt;/div&gt;&lt;ul&gt;&lt;li&gt;No session state in application tier (use URL/cookie/scratch DB)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;No business logic in DB &amp;amp; no stored procedures&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Partition everything - if you can't split it, you can't scale it&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Async everywhere via message bus &amp;amp; periodic batch processes&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Everything fails sometime, so all operations must be fault-tolerant&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I manage an ecommerce site that has a single centralized DB (I inherited this architecture when I took it over). That single unpartionable DB is a HUGE headache, and eBay's architecture has me thinking... can I get rid of the DB altogether except as a reporting mechanism? &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;We know we need to be able to split the DB across multiple geographic sites soon. But this DB stores user account information and orders - so, why use a DB at all? Why not store user account info and order info in XML files in the file system, index them with Lucene for searching, and use async messaging to report order info to other systems that need to know (fulfillment, reporting)? I'm simplifying, of course, but in broad strokes this should work and scale very nicely.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-1247699219160798225?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/1247699219160798225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=1247699219160798225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/1247699219160798225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/1247699219160798225'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/11/here-are-couple-of-presentations-giving.html' title='How eBay Scales Up'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MzGYnDrQIUw/R0y9oxrHGQI/AAAAAAAAAAM/G8FeUzPAMoA/s72-c/ebaylogo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-6630688299432013257</id><published>2007-11-24T23:43:00.000-06:00</published><updated>2007-11-25T01:02:40.981-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><title type='text'>Services &amp; Volatility</title><content type='html'>Quick and dirty isn't what you normally think of wrt architecture, but sometimes it's useful to keep from getting caught in the weeds for too long. In short:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Define your information model&lt;/li&gt;&lt;li&gt;Define your abstract model (the business objects, as I think of it)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Define your services and their bindings to the information model&lt;/li&gt;&lt;li&gt;Define your processes and their bindings to the services - paraphrasing here, as the language is a bit vague.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;(from David S. Linthicum's &lt;a href="http://www.sdtimes.com/article/column-20071115-02.html"&gt;Reference Models and Architectures&lt;/a&gt; via &lt;a href="http://duckdown.blogspot.com/2007/11/links-for-2007-11-23.html"&gt;James McGovern&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Key point is this: "The core idea here is to place volatility into a single domain, or a place where the use of services (and thus the information) can be defined, and redefined, according to the requirements of the business."&lt;br /&gt;&lt;br /&gt;And that's my jumping-off point.&lt;br /&gt;&lt;br /&gt;Traditionally this volatility domain has been in application logic (stored procedures, business logic code, and inevitably UI code). My thinking has been moving towards the idea of pushing that volatility domain more to the services. Not the data &amp;amp; transactional services that Linthicum defines as being part of step 3 above. But rather to move the business processes into workflows accessible to the business as services. This would avoid multiple constituencies having to independently wire up the underlying services (data &amp;amp; transactional) and ensure that everyone is using a consistent workflow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I see challenges with this approach though...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;First &lt;/span&gt;challenge is that workflows imply that state is being kept because they are asynchronous. You can hand a token to the client that will later let the client pull up the workflow in its current state. But now the client has to store and track that token itself, and handle situations where the state returned from the service isn't what was expected. Maybe I'm expecting too much here, but if you're going to go to the effort of making the workflow consistent across the business, then you really want to do it from end to end.&lt;br /&gt;&lt;br /&gt;Maybe a solution would be to use webparts that front the workflow service. Here you would wrap the workflow service in a UI and keep it self contained, leveraging the ability of the webpart to share data with other webparts. And so consumers are stringing together common webparts that they organize in a way that makes sense for their part of the business.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Second&lt;/span&gt; challenge is handling the inevitable change that occurs in those workflow services. Maybe you can solve this with versioning for 80% of the consumers, and the rest of the consumers we have to accept have their own specific needs that aren't going to be met by the workflow services and this population of consumers will have to wire up their own specific code against the data &amp;amp; transactional services.&lt;br /&gt;&lt;br /&gt;So, webparts (at least in a Microsoft world) fronting workflow services. It's not a bad approach, but those webparts are going to start getting complex... not sure we haven't just traded one problem for another. But still, there just might be something here worth pursuing....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-6630688299432013257?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/6630688299432013257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=6630688299432013257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/6630688299432013257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/6630688299432013257'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/11/services-volatility.html' title='Services &amp; Volatility'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-725182254964808684</id><published>2007-11-18T13:55:00.000-06:00</published><updated>2007-11-18T14:47:06.629-06:00</updated><title type='text'>Down on the Cube Farm</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.tropicofcubicle.com/wp-content/themes/toc1/images/temp/honda_pilot_groundhog.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://www.tropicofcubicle.com/wp-content/themes/toc1/images/temp/honda_pilot_groundhog.jpg" alt="" border="0" /&gt;&lt;/a&gt;With a move to a new office space and low cubicles just around the corner, I am compelled to analyze why I find cubes so noxious and disrespectful...&lt;br /&gt;&lt;br /&gt;Maybe it's because I can remember the Microsoft job ads promising an office with a door that shuts for every programmer. &lt;span style="font-style: italic;"&gt;They get it&lt;/span&gt;, I thought.&lt;br /&gt;&lt;br /&gt;Maybe it's because sometimes I need to concentrate - really concentrate - to get every detail stuffed into my brain at one time to solve a problem. That requires a distraction-free environment.&lt;br /&gt;&lt;br /&gt;Maybe it's because I really don't want to have to listen to someone else's conversation. Not on the El, not in a restaurant, and not at work.&lt;br /&gt;&lt;br /&gt;Maybe it's because I have to talk to other people all the time, and I'm aware of the noise pollution we're creating for everyone else within earshot.&lt;br /&gt;&lt;br /&gt;But maybe mostly it's because I think it's &lt;a href="http://en.wikipedia.org/wiki/Theory_X"&gt;Theory X&lt;/a&gt; embodied. Employees must be observable at all times or else they will slack off. If you really think these are the kinds of employees that your hiring policies bring in, you really should outsource the entire company to India.&lt;br /&gt;&lt;br /&gt;And I'm not the only one:&lt;br /&gt;&lt;a href="http://craiglp.wordpress.com/2006/08/25/the-myth-of-the-collaborative-cube-farm/"&gt;The Myth of the Collaborative Cube Farm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lifehacker.com/software/geek-to-live/geek-to-live--firewall-your-attention-at-the-office-147010.php"&gt;Firewall your attention at the office&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lifehacker.com/software/interruption-management/why-proximity-kills-productivity-295064.php"&gt;Why Proximity Kills Productivity&lt;/a&gt;&lt;br /&gt;&lt;a href="http://money.cnn.com/2006/03/09/magazines/fortune/cubicle_howiwork_fortune/index.htm?cnn=yes"&gt;Cubicles: The great mistake&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6190051451753725265-725182254964808684?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/725182254964808684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=725182254964808684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/725182254964808684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/725182254964808684'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/11/down-on-cube-farm.html' title='Down on the Cube Farm'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6190051451753725265.post-6566118170193672242</id><published>2007-11-14T05:30:00.000-06:00</published><updated>2007-11-14T05:44:12.818-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><title type='text'>Guerrilla SOA is to BDUF as the Internet is to...</title><content type='html'>Joe McKendrick's post on &lt;a href="http://blogs.zdnet.com/service-oriented/?p=948"&gt;guerrilla SOA services&lt;/a&gt; describes services arising as islands or neighborhoods. Both are nice analogies.&lt;br /&gt;&lt;br /&gt;But what does EA even mean in a world of &lt;a href="http://www.infoq.com/interviews/jim-webber-qcon-london"&gt;guerrilla SOA&lt;/a&gt;? Extending the neighborhood analogy, do you have to burn everything down occasionally in order to get a coherent system? I'm thinking specifically of the experience of navigating my hometown Chicago's post-fire grid system vs. Boston's decentralized and unplanned road system.&lt;br /&gt;&lt;br /&gt;Still, I find the guerrilla SOA concept rather compelling. What I like about this approach is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It doesn't require perfection up front&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Keeps the focus on the business&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Abstracts the type system (WSDL) out to a format that can change without breaking clients. The &lt;a href="http://soya.sourceforge.net/"&gt;Soya&lt;/a&gt; project would be a concrete example of this message-oriented format.&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/6190051451753725265-6566118170193672242?l=using-enterprise-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://using-enterprise-architecture.blogspot.com/feeds/6566118170193672242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6190051451753725265&amp;postID=6566118170193672242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/6566118170193672242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6190051451753725265/posts/default/6566118170193672242'/><link rel='alternate' type='text/html' href='http://using-enterprise-architecture.blogspot.com/2007/11/guerrilla-soa-is-to-bduf-as-internet-is.html' title='Guerrilla SOA is to BDUF as the Internet is to...'/><author><name>Lee C. Harold</name><uri>http://www.blogger.com/profile/10155918585108611264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp1.blogger.com/_MzGYnDrQIUw/SFCderx5hkI/AAAAAAAAABk/G1AXbcf13g0/S220/Lee+Harold.jpg'/></author><thr:total>0</thr:total></entry></feed>
