<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:idx="urn:atom-extension:indexing" xmlns:gr="http://www.google.com/schemas/reader/atom/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" idx:index="no"><!--
Content-type: Preventing XSRF in IE.

--><generator uri="http://www.google.com/reader">Google Reader</generator><id>tag:google.com,2005:reader/user/13668608591451703896/state/com.google/broadcast</id><title>Arnon's shared items in Google Reader</title><gr:continuation>CLSDr8um2JsC</gr:continuation><author><name>Arnon</name></author><updated>2009-07-18T21:38:00Z</updated><link rel="self" href="http://feeds.feedburner.com/ARGOReadings" type="application/atom+xml" /><entry gr:crawl-timestamp-msec="1247953080920"><id gr:original-id="tag:gigix.agilechina.net,2009-07-17:600">tag:google.com,2005:reader/item/179c40ffa079f6de</id><title type="html">Jeff Xiong: Move To Multi-threaded Rails</title><published>2009-07-17T02:11:05Z</published><updated>2009-07-17T02:11:05Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/H8KetYAVriA/move-to-multi-threaded-rails" type="text/html" /><summary xml:base="http://blogs.thoughtworks.com/" type="html">&lt;p&gt;When doing performance in local box, we found that requests are waiting to be processed due to Rails is single-threaded by default. We changed the configuration to enable multi-threaded mode as described in this blog entry:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://m.onkey.org/2008/10/23/thread-safety-for-your-rails"&gt;Thread safety for your Rails&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;(also refer to &lt;a href="http://guides.rubyonrails.org/2_2_release_notes.html#thread-safety"&gt;Rails 2.2 release notes&lt;/a&gt; )&lt;/p&gt;


	&lt;p&gt;The most important change was to eager-load /lib directory, and thus move libraries for test out of it.&lt;/p&gt;


&lt;blockquote&gt;config.threadsafe! also disables automatic loading by ActiveSupport::Dependencies. Alternatively, you can just add lib/ directory to eager load paths. The following inside production.rb will do that :
&lt;pre&gt;config.eager_load_paths &amp;lt;&amp;lt; &amp;quot;#{RAILS_ROOT}/lib&amp;quot;&lt;/pre&gt;&lt;/blockquote&gt;

	&lt;p&gt;We had some rough tests to ensure the functionality is not broken. Multi-threaded mode also might require more memory than single-threaded mode. Still keep testing.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/H8KetYAVriA" height="1" width="1"/&gt;</summary><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/PlanetTw"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/PlanetTw</id><title type="html">Planet TW</title><link rel="alternate" href="http://blogs.thoughtworks.com/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/PlanetTw/~3/GnVbX_pqjpg/move-to-multi-threaded-rails</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247952709629"><id gr:original-id="tag:blogger.com,1999:blog-8987096.post-3449989461662144150">tag:google.com,2005:reader/item/1927253205b18c58</id><category term="featured" scheme="http://www.blogger.com/atom/ns#" /><title type="html">Lean Reading List</title><published>2009-07-17T08:10:00Z</published><updated>2009-07-17T17:45:24Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/wEcMFQuSWik/lean-reading-list.html" type="text/html" /><content xml:base="http://blog.scottbellware.com/" type="html">&lt;p&gt;I read Mary and Tom Poppendieck's first book on Lean Software Development, "&lt;a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783"&gt;Lean Software Development: An Agile Toolkit&lt;/a&gt;" in 2005.  It went in one eye and out the other. &lt;/p&gt;  &lt;p&gt;I was the Software Development track chair for Austin's InnoTech conference in November of that year.  Mary was gracious enough to accept our invitation to come to Austin to keynote the track and to moderate a panel. &lt;/p&gt;  &lt;p&gt;I listened to Mary's talk and got a few more clarifying tid bits from it, but mostly, I dismissed it at the time as some form agile sideshow that didn't quite measure up to the specifics that XP brought to the table.  A number of us went out for burgers with Mary after the conference and continued the conversation, but I don't think anyone in the group was fundamentally moved by Lean. &lt;/p&gt;  &lt;p&gt;I wasn't equipped with the experience to see Lean for what it was.  Later, I realized the deep hubris that encumbered my thinking and the vanity that would lead me to expect that I could intuit a subject as vast as Lean from a single book, the way I could with XP and Scrum. &lt;/p&gt;  &lt;p&gt;I suffered a serious set-back in 2007.  My career's pinnacle dream project was flirting with disaster. &lt;/p&gt;  &lt;p&gt;The company I worked for faced an intractable intellectual property constraint that limited our product's market to a small fraction of the whole.  In November of 2006, I sold the company on an ambitious plan to solve the problem by building our own platform that we would have unlimited rights to sell.  We started exploratory work and envisioning in December.  The undertaking had significant executive sponsorship.  When our board of directors voted to not fund the project, the CEO bought out the board and gave us the green light.  We started official work in earnest in January. &lt;/p&gt;  &lt;p&gt;In November of 2007, I sounded the failure warning alarm to my management, and I kept sounding it.  In January of 2008, with the situation becoming increasingly intractable, I parted ways with the project and the company.  Three months later, after having given the team a chance to pull itself together, the project was canceled and the team was dismissed from the company - from the most junior technologist, up to the executive overseeing the project. &lt;/p&gt;  &lt;p&gt;I was frustrated by having felt handcuffed by Agile development orthodoxies that no longer fit the problems of the team, and yet were followed mechanically, and reinforced by management that was captivated by its first exposure to Agile.  &lt;/p&gt;  &lt;p&gt;I told some of the details of my experiences to a friend.  We talked about Agile, in many variants, including Lean Software Development.  My friend recommended that I read about the Theory of Constraints and recommended "&lt;a href="http://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0884270610"&gt;The Goal: A Process of Ongoing Improvement&lt;/a&gt;" by Eliyahu Goldratt and Jeff Cox.  In reading The Goal, I recognized the detailed mechanical process that I faced in the failed project.  At that time, I hadn't connected what I had begin to learn in The Goal with what I know about Agile Development and the gaps in Agile that I had begun to see after seven years of immersion. &lt;/p&gt;  &lt;p&gt;Following The Goal, I wanted to read more into some of Lean's roots.  I had largely avoided the Toyota literature up till that point, and I wasn't convinced that I would get much from The Toyota Production System.  I knew a number of people in my community who had read The Machine that Changed the World and The Toyota Production System, but I never really got the sense that the reading had connected them with the transformative learning that I had experienced in Agile development. &lt;/p&gt;  &lt;p&gt;Before committing to throwing myself into the Toyota literature, I wanted a sample of what I might be getting into.  I started with an article.  I read "&lt;a href="http://harvardbusiness.org/product/decoding-the-dna-of-the-toyota-production-system/an/99509-PDF-ENG"&gt;Decoding the DNA of the Toyota Production System&lt;/a&gt;" by Steven J. Spear and H. Kent Bowen published in the Harvard Business Review. &lt;/p&gt;  &lt;p&gt;In this article, the authors talk about the things that companies seemed to miss when trying to duplicate Toyota's successes using Toyota's methods.  I'm a sucker for stories of unasked questions.  The rest of my reading about Toyota and Lean in general would be an exploration of the &lt;em&gt;unasked question&lt;/em&gt;.  The authors' message: Toyota's fundamental nature as a &lt;em&gt;learning organization&lt;/em&gt; is often overlooked, with undue attention paid to Toyota's more obvious practices and mechanics. &lt;/p&gt;  &lt;p&gt;And this is what drew me in to the Toyota literature.  Here I saw the parallels to my failed organization, my own nature as a learner, a seeker, a pathfinder, and a teacher.  I recognized the many of the intractable problems that I had observed in the behavior of my failed organization. &lt;/p&gt;  &lt;p&gt;On my team, it had become an unspoken entitlement conferred that people were not required to take direction.  This was largely exasperated by a management approach that was fixated on social experimentation and which was not capable of guiding the technical execution or product design imperatives of the project.  It was an Agile methods laboratory that produced no real acceptable features for a year. &lt;/p&gt;  &lt;p&gt;I learned in Spear's and Bowen's article that the organizational structure, mechanics, and protocols that I felt would benefit the team were the basis of Toyota's organization and culture as I was coming to understand them. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/Toyota-Way-Jeffrey-Liker/dp/0071392319/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247816751&amp;amp;sr=1-1"&gt;The Toyota Way&lt;/a&gt; by Jeffrey Liker was my first read into the Toyota literature.  I chose this book to specifically continue learning about the Toyota DNA rather than dig into Toyota's specific process mechanics.  Understanding that focusing on the process mechanics led to common problems in learning and adopting Toyota's methods, I wanted to hold off on the obvious aspects longer. &lt;/p&gt;  &lt;p&gt;I read the Toyota Way with the observations of the Harvard Business Review article fresh in mind, as well as the mind-opening lessons about work management and problem solving from The Goal providing a backdrop. &lt;/p&gt;  &lt;p&gt;Cautious of becoming yet another Toyota disciple, I took a turn away from Toyota-specific literature and back toward Lean in general and read "&lt;a href="http://www.amazon.com/Lean-Thinking-Corporation-Revised-Updated/dp/0743249275/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247561211&amp;amp;sr=1-1"&gt;Lean Thinking: Banish Waste and Create Wealth in Your Corporation&lt;/a&gt;" by James P. Womack and Daniel T. Jones.  This book tells the story of the companies and people taught by Womack and Jones as they traveled around the world after writing The Machine that Changed the World.  It reinforced and what I had learned about learning culture and continuous improvement as well as organizational structure and process in the books that preceded it. &lt;/p&gt;  &lt;p&gt;While this reading and studying was happening, I was also tweeting about my experiences and studies, and having numerous long conversations on the phone with some of my peers who had themselves started studying the same material.  I also revisited my failed project with the previous product owner, who was still with the company, and still succeeding in his own work. &lt;/p&gt;  &lt;p&gt;If I had read this material in a vacuum, without any of the constant interaction with my professional network, and the continual revisitation of previous failure, I believe it would have been a much less informative and transformative experience.  My circle of friends and network of colleagues continues to inform my learning, and I expect that it will continue to do so. &lt;/p&gt;  &lt;p&gt;I turned the reading back to software, choosing to read Mary and Tom Poppendieck's second book, "&lt;a href="http://www.amazon.com/Implementing-Lean-Software-Development-Addison-Wesley/dp/0321437381/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247562911&amp;amp;sr=1-2"&gt;Implementing Lean Software Development: From Concept to Cash&lt;/a&gt;".  Reading a Lean software book from my vantage at that time was a very different experience than when I had read the first Lean software book.  The subject had now come to life.  It was tangible, and it was deeper than what I had presumed previously.  From here, my perspective of Lean Software Development takes meaning beyond my perspective of XP and Agile culture and mechanics. &lt;/p&gt;  &lt;p&gt;I had organized the ALT.NET Open Space Conference the previous year, and hadn't want to simply fall into the trap of trying to duplicate an original moment.  I wanted another theme for the second annual conference.  Over the course of many of those conversations with friends and colleagues, we talked about the essential force of the ALT.NET movement as something akin to Lean's Continuous Improvement.  The theme of the second conference became Continuous Improvement, with hopes that we would come to understand it more, and maybe understand better whether ALT.NET is indeed a Continuous Improvement culture. &lt;/p&gt;  &lt;p&gt;I subsequently read another Toyota book, "&lt;a href="http://www.amazon.com/Extreme-Toyota-Radical-Contradictions-Manufacturer/dp/0470267623"&gt;Extreme Toyota: Radical Contradictions That Drive Success at the World's Best Manufacturer&lt;/a&gt;" by Emi Osono, Norihiko Shimizu, Hirotaka Takeuchi.  This book takes on seeming contradictions in Toyota's culture and organization, such as the simultaneity of both a flat organization and a rigid hierarchical organization and the imperatives of a learning culture and continuous improvement that unify the two.  The book also spoke about the climate of contradiction that Toyota uses to stimulate creativity and problem solving. &lt;/p&gt;  &lt;p&gt;Tom and Mary accepted our invitation to come to the Continuous Improvement Conference in Austin and share their experience with learning organizations, software development, product development, scientific method, and leadership.  I can't imagine that Mary and Tom got as much out of the experience as we did, but they had a lasting impact on our community. &lt;/p&gt;  &lt;p&gt;Mary and Tom often say that Lean Software Development is informed more by the Toyota Product Development System than the Toyota Production System.  Dave Laribee got to the Toyota Product Development book before I did and warned me that it was quite dry but worth reading, and it was.  "&lt;a href="http://www.amazon.com/Toyota-Product-Development-System-Integrating/dp/1563272822"&gt;The Toyota Product Development System: Integrating People, Process And Technology&lt;/a&gt;" by James M. Morgan and Jeffery K. Liker spoke a great deal more about requirements, design, planning for work, and creating workspaces, as well as the risk-mitigation processes that Toyota uses.  This book also goes into greater detail about the Toyota's people and roles, and fostering "towering technical competence". &lt;/p&gt;  &lt;p&gt;The TPDS book also talks about Lean leadership and the &lt;a href="http://blog.scottbellware.com/2008/12/chief-engineer.html"&gt;Chief Engineer&lt;/a&gt; role.  It further reinforces the notion of managers and group leaders as having great technical competence, often knowing the work of their staff better than they do, and being paramountly responsible for teaching their staff though the scientific method and Toyota's A3 report technique. &lt;/p&gt;  &lt;p&gt;Dave read David Anderson's book, "&lt;a href="http://www.amazon.com/Agile-Management-Software-Engineering-Constraints/dp/0131424602/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247566601&amp;amp;sr=1-1"&gt;Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results&lt;/a&gt;" while I was reading the TPDS book, and I followed the TPDS book with David Anderson's book.  I wish I would have read this book years ago, but again my biases obstructed my perception of the value I would get from it.  In this book, David Anderson ties the Theory of Constraints directly to software development and translates pull systems and throughput accounting to the work.&lt;/p&gt;  &lt;p&gt;Dave turned me on to Cory Ladas' writing on the &lt;a href="http://leansoftwareengineering.com/"&gt;Lean Software Engineering blog&lt;/a&gt;.  I read a few articles, and then went back to the start of the blog and read forward.  Much of that writing has been compiled into his book "&lt;a href="http://www.lulu.com/content/3864767"&gt;Scrumban - Essays on Kanban Systems for Lean Software Development&lt;/a&gt;".  Cory’s writing goes quite deep into pull systems and Kanban for software development.  This material and David Anderson’s book offer a profound exploration of applying the mechanical aspects of Lean.&lt;/p&gt;  &lt;p&gt;I put into practice what I learned both from my own experience and from studying and study groups on a project with a distributed team in Austin starting in August 2008.  My instinct at first was to overlay their existing organization and process with Scrum.  Instead, I looked for signs of what was keeping the organization back, established some basic measurements, and did my best to teach what I knew about how to solve these problems.  It wasn't trivial work, but it reaffirmed my experience and study of both the cultural and behavioral aspects of Lean, as well as the mechanics, such as Kanban.  The experience also continued to reaffirm XP practices as the tactical foundation of both Lean and Agile strategies. &lt;/p&gt;  &lt;p&gt;While in Austin, Mary and Tom mentioned the book "&lt;a href="http://www.amazon.com/dp/1934109207/?tag=googhydr-20&amp;amp;hvadid=2837473727&amp;amp;ref=pd_sl_91z6em5bow_e"&gt;Managing to Learn: Using the A3 Management Process to Solve Problems, Gain Agreement, Mentor, and Lead&lt;/a&gt;" by John Shook, which tells the story of the techniques and processes used in learning culture and learning organization, and goes much deeper into the the teacher/student relationship and responsibilities that are the foundation of Lean. &lt;/p&gt;  &lt;p&gt;I'm presently reading this book.  It's an innovative book not only for its content but also for its form, and is well worth the read, and practice.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold"&gt;Context&lt;/span&gt;&lt;br&gt;&lt;/p&gt;  &lt;p&gt;I wrote this article because people in my network asked me for some recommendations on books on Lean.  The more I thought about it, the more I thought that listing some titles and links might not be entirely responsible. &lt;/p&gt;  &lt;p&gt;The books that I read and the order in which I read them is inseparable from the context in which I read them.  This isn't a canonical list and it shouldn't be treated that way.  There are many, many more resources available. &lt;/p&gt;  &lt;p&gt;I've benefited tremendously from the choices I've made for study and for engaging community to enliven that study.  I wholeheartedly recommend the books I've talked about here, and I would even recommend going through them in the order that I read them.  In retrospect, the reading order worked well as an evolutionary thread and helped me reinforce a deeper understanding of subtler aspects of Lean while continuing to layer on ever broader knowledge. &lt;/p&gt;  &lt;p&gt;Nonetheless, your mileage may vary, and if your experiences are quite different from those I've laid out here, then you might disregard my own learning adventure and concoct your own. &lt;/p&gt;  &lt;p&gt;Either way, foster a community to learn with, and sit at the feet of as many masters who'll tolerate your presence.  Anything you learn from a book is just material until you light it up with experience (or reflection) and turn it into knowledge.  Learning in isolation rarely has the yield of learning enlivened by experience and community.  That's not always the case, but if you have a tendency to hide in a cave, understand that much of Lean is a social practice. &lt;/p&gt;  &lt;p&gt;I still haven't read The Machine that Changed the World or The Toyota production System.  I may read them at some point, but my goal isn't to consume every Toyota book that I can find.  My goal is to synthesize as much understanding as I can, and the past two years have been very rewarding in this regard. &lt;/p&gt;  &lt;p&gt;I recently founded the Lean Software Austin group, and I'm looking forward to continuing the study and the work in Lean principles and software development as this community grows as a learning organization itself.  The story doesn't end here, but the narrative reading list does (for now). &lt;/p&gt;  &lt;p&gt;For your convenience, here is an actual list of the reading I referenced in this article: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783"&gt;Lean Software Development, "Lean Software Development: An Agile Toolkit&lt;/a&gt; by Mary and Tom Poppendieck &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0884270610"&gt;The Goal: A Process of Ongoing Improvement&lt;/a&gt; by Eliyahu Goldratt and Jeff Cox &lt;/li&gt;    &lt;li&gt;&lt;a href="http://harvardbusiness.org/product/decoding-the-dna-of-the-toyota-production-system/an/99509-PDF-ENG"&gt;Decoding the DNA of the Toyota Production System&lt;/a&gt; by Steven J. Spear and H. Kent Bowen (Harvard Business Review) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Toyota-Way-Jeffrey-Liker/dp/0071392319/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247816751&amp;amp;sr=1-1"&gt;The Toyota Way&lt;/a&gt; by Jeffrey Liker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Lean-Thinking-Corporation-Revised-Updated/dp/0743249275/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247561211&amp;amp;sr=1-1"&gt;Lean Thinking: Banish Waste and Create Wealth in Your Corporation&lt;/a&gt; by James P. Womack and Daniel T. Jones &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Implementing-Lean-Software-Development-Addison-Wesley/dp/0321437381/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247562911&amp;amp;sr=1-2"&gt;Implementing Lean Software Development: From Concept to Cash&lt;/a&gt; by Mary and Tom Poppendieck &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Extreme-Toyota-Radical-Contradictions-Manufacturer/dp/0470267623"&gt;Extreme Toyota: Radical Contradictions That Drive Success at the World's Best Manufacturer&lt;/a&gt; by Emi Osono, Norihiko Shimizu, Hirotaka Takeuchi &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Toyota-Product-Development-System-Integrating/dp/1563272822"&gt;The Toyota Product Development System: Integrating People, Process And Technology&lt;/a&gt; by James M. Morgan and Jeffery K. Liker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Agile-Management-Software-Engineering-Constraints/dp/0131424602/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1247566601&amp;amp;sr=1-1"&gt;Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results&lt;/a&gt; by David Anderson &lt;/li&gt;    &lt;li&gt;&lt;a href="http://leansoftwareengineering.com/"&gt;Lean Software Engineering&lt;/a&gt; by Cory Ladas &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.lulu.com/content/3864767"&gt;Scrumban - Essays on Kanban Systems for Lean Software Development&lt;/a&gt; by Cory Ladas &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/dp/1934109207/?tag=googhydr-20&amp;amp;hvadid=2837473727&amp;amp;ref=pd_sl_91z6em5bow_e"&gt;Managing to Learn: Using the A3 Management Process to Solve Problems, Gain Agreement, Mentor, and Lead&lt;/a&gt; by John Shook &lt;/li&gt; &lt;/ul&gt;&lt;br&gt;&lt;hr&gt;&lt;br&gt;&lt;a href="http://ampgt.com/"&gt;&lt;br&gt;&lt;img alt="Ampersand GT" src="http://ampgt.com/images/ampgt_text_logo.gif" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;p&gt;Working with software developers and organizations to help realize the potential of software product development through higher productivity, higher quality, and improved customer experience&lt;br&gt;&lt;/p&gt;&lt;p&gt;Learn more about my work and how I can help you at &lt;a href="http://ampgt.com/"&gt;ampgt.com&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/8987096-3449989461662144150?l=blog.scottbellware.com"&gt;&lt;/div&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sbellware?a=slCk_B0PSo4:CkUWdrPyulw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sbellware?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sbellware?a=slCk_B0PSo4:CkUWdrPyulw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sbellware?i=slCk_B0PSo4:CkUWdrPyulw:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sbellware?a=slCk_B0PSo4:CkUWdrPyulw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sbellware?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sbellware?a=slCk_B0PSo4:CkUWdrPyulw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sbellware?d=l6gmwiTKsz0" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sbellware?a=slCk_B0PSo4:CkUWdrPyulw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sbellware?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sbellware?a=slCk_B0PSo4:CkUWdrPyulw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sbellware?i=slCk_B0PSo4:CkUWdrPyulw:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sbellware?a=slCk_B0PSo4:CkUWdrPyulw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sbellware?d=TzevzKxY174" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sbellware/~4/slCk_B0PSo4" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/wEcMFQuSWik" height="1" width="1"/&gt;</content><author><name>Scott Bellware</name></author><source gr:stream-id="feed/http://blog.scottbellware.com/feeds/posts/default"><id>tag:google.com,2005:reader/feed/http://blog.scottbellware.com/feeds/posts/default</id><title type="html">Scott Bellware</title><link rel="alternate" href="http://blog.scottbellware.com/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/sbellware/~3/slCk_B0PSo4/lean-reading-list.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247936178756"><id gr:original-id="tag:blogger.com,1999:blog-9135608907297595437.post-4753811257157822492">tag:google.com,2005:reader/item/70f64a55ee0ba528</id><category term="mashlets" scheme="http://www.blogger.com/atom/ns#" /><category term="Mulesource" scheme="http://www.blogger.com/atom/ns#" /><category term="enterprise mashups" scheme="http://www.blogger.com/atom/ns#" /><category term="ESB" scheme="http://www.blogger.com/atom/ns#" /><title type="html">Lessons from The Golden Hammer and The Mule</title><published>2009-07-17T16:40:00Z</published><updated>2009-07-17T19:27:12Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/jXnpX8mFebQ/lessons-from-golden-hammer-and-mule.html" type="text/html" /><content xml:base="http://blogs.jackbe.com/" type="html">&lt;a href="http://3.bp.blogspot.com/_J_GGG8cr6A8/SmCrZAZQfXI/AAAAAAAAALw/lP3zV_pqflM/s1600-h/hammer.jpg"&gt;&lt;img style="float:right;margin:0 0 10px 10px;width:110px;height:110px" src="http://3.bp.blogspot.com/_J_GGG8cr6A8/SmCrZAZQfXI/AAAAAAAAALw/lP3zV_pqflM/s320/hammer.jpg" border="0" alt=""&gt;&lt;/a&gt;&lt;em&gt;'I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.'&lt;/em&gt; (Abraham Maslow, The Psychology of Science, 1966).  Most college freshmen learn about the hammer.  And we certainly know all about the hammer in the IT industry.  By 1998 this worst-practice had become so common in IT circles, in fact, that the book '&lt;a href="http://www.amazon.com/AntiPatterns-Refactoring-Software-Architectures-Projects/dp/0471197130"&gt;AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis&lt;/a&gt;' immortalized this anti-pattern with the happy title of &lt;a href="http://en.wikipedia.org/wiki/Law_of_the_instrument"&gt;'the golden hammer'&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;img src="http://4.bp.blogspot.com/_J_GGG8cr6A8/SmCrqCJhFiI/AAAAAAAAAMA/elHAAvnWafM/s200/mule.jpg" style="float:left;margin:0 10px 10px 0;width:200px;height:200px" border="0" alt=""&gt;Recently, Ross Mason, the CTO of open-source SOA tools creator &lt;a href="http://www.mulesource.org/display/COMMUNITY/Home"&gt;MuleSource&lt;/a&gt;, wrote &lt;a href="http://blog.mulesource.org/2009/07/to-esb-or-not-to-esb/"&gt;a great blog&lt;/a&gt; about the golden hammer problem in the world of the ESB.  We feel his pain.  As an emerging technology vendor ourselves, we are very eager to understand and share the best uses of enterprise mashup technology.&lt;br&gt;&lt;br&gt;&lt;strong&gt;You have a fairly good use-case for enterprise mashups if you have a dynamic information environment that requires the real-time assembly of disparate data silos in &lt;a href="http://en.wikipedia.org/wiki/Context_analysis"&gt;a user-specific context&lt;/a&gt; for critical decision-making.&lt;/strong&gt;  But that's a bit of a mouthful.  So what do enterprise mashups mean in business terms?  I like the answer I got from a CTO at BlueCross BlueShield, the medical insurance giant: mashups &lt;em&gt;'...create valuable and actionable information'&lt;/em&gt;.  Recent examples we've seen include solutions for &lt;a href="http://en.wikipedia.org/wiki/Situational_awareness"&gt;Situational Awareness&lt;/a&gt;, budget analysis, &lt;a href="http://www.jackbe.com/recovery/"&gt;Recovery and Reinvestment Act reporting&lt;/a&gt;, clinical research, data packaging, and executive KPI dashboards.&lt;br&gt;&lt;br&gt;Interestingly, we are also occasionally asked why can't an ESB can't do the job of an Enterprise Mashup Platform.&lt;span&gt;  &lt;strong&gt;ESBs and Enterprise Mashup Platform ('EMP', for short) have some similar qualities but they differ in one fundamental way: ESBs are decidely 'A-to-A' (application-to-application) and EMPs are 'A-to-U' (application-to-user)&lt;/strong&gt;. &lt;br&gt;&lt;br&gt;ESBs emphasize features and qualities that support robust application-to-application integration and just don't have any  true user-facing, collaborative capabilities.  And I think Ross agrees: &lt;em&gt;'Mule and other ESBs offer real value in scenarios where there are at least a few integration points or at least 3 applications to integrate. They are also well suited to scenarios where loose coupling, scalability and robustness are required.'&lt;/em&gt;&lt;br&gt;&lt;br&gt;In contrast, enterprise mashups are as much about viewing, rating, personalizing and sharing as they are about data assembly.  Here at JackBe &lt;a href="http://blogs.jackbe.com/search/label/mashlets"&gt;we think about mashlets, porlets, spreadsheets&lt;/a&gt;, and iPhone apps as much as we think about data-source virtualization, mashup transformations and standardized mashup interfaces.  To paraphrase one of my favorite Gartner analysts, &lt;strong&gt;an enterprise mashup platform without meaningful capabilities to deliver the mashups to consuming users is simply not an enterprise mashup platform&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;What this really means is that &lt;a href="http://blogs.jackbe.com/2007/08/implementing-soa-without-mashups-you.html"&gt;ESBs like MuleSource and EMPs like JackBe's &lt;/a&gt;&lt;a href="http://www.jackbe.com/products/"&gt;Presto&lt;/a&gt; compliment each other very well.  #5 on Ross's 'ESB Selection Criteria' list even says &lt;em&gt;'Do you need to publish services for consumption by other applications? This is a good fit for Mule as it provides a robust and scalable service container...'&lt;/em&gt;. And that's exactly where an EMP comes in!  One of JackBe's best customers uses ESB-based web services instrumented with &lt;a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsn"&gt;Web Services Notification&lt;/a&gt; to send data a number consuming applications, including Presto.  Presto mashes the inbound data and delivers the mashup via mashlet to a user-facing portal in real-time.&lt;br&gt;&lt;br&gt;As my 9th-grade shop-class teacher used to say: &lt;em&gt;'A good carpenter knows his tools'&lt;/em&gt;.  Makes me wonder if Maslow was a friend of his.&lt;/span&gt;&lt;div&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/9135608907297595437-4753811257157822492?l=blogs.jackbe.com"&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/jXnpX8mFebQ" height="1" width="1"/&gt;</content><author><name>Chris Warner</name></author><gr:likingUser>02848039997193907980</gr:likingUser><source gr:stream-id="feed/http://blogs.jackbe.com/feeds/posts/default"><id>tag:google.com,2005:reader/feed/http://blogs.jackbe.com/feeds/posts/default</id><title type="html">The Enterprise Web 2.0 Blog</title><link rel="alternate" href="http://blogs.jackbe.com/" type="text/html" /></source><feedburner:origLink>http://blogs.jackbe.com/2009/07/lessons-from-golden-hammer-and-mule.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247936162876"><id gr:original-id="http://devhawk.net/PermaLink,guid,d425eb36-8a14-4877-ba44-cfb9aa87a4ef.aspx">tag:google.com,2005:reader/item/7e29ddbafe5d7130</id><category term="Development" /><category term="Software Design" /><category term="Software Engineering" /><title type="html">The Texas Dependency Injection Massacre</title><published>2009-07-17T23:55:40Z</published><updated>2009-07-17T23:55:40Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/xf20iAiyanY/The+Texas+Dependency+Injection+Massacre.aspx" type="text/html" /><content xml:base="http://devhawk.net/" type="html">
        &lt;p&gt;
Since I think I’ve beaten the “I think what most people call architecture is really
engineering” meme to death, let’s move on to something else. Eric Smith of &lt;a href="http://thelimberlambda.com/"&gt;The
Limber Lambda&lt;/a&gt; blog (love that name!) &lt;a href="http://www.lyricsdepot.com/david-lee-roth/experience.html"&gt;commented&lt;/a&gt;:
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
I'm a little concerned with the intimation that use of interfaces, respect for visibility
of type members and use of dependency injection equates to "over-engineering".
As with everything, it depends on what you're trying to achieve, and generalisations
in this regard, especially when junior people who may not understand what's at stake
are reading, can be damaging.
&lt;/p&gt;
          &lt;p&gt;
I find it an uphill battle to engender a constructive mindset in developers who have
established bad habits and whose pride lies in the way of addressing those habits.
&lt;/p&gt;
          &lt;p&gt;
Anti-"process" talk by Joel Spolsky and the "pragmatism brigade"
makes it harder. A while ago I had a new developer refuse to write unit tests despite
it being an established practice in our team because "... Jeff and Joel said
they were bad in the StackOverflow podcast ...". Yikes.
&lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
Let me be very clear. I &lt;em&gt;never &lt;/em&gt;suggested that techniques such as interfaces
and dependency injection are over engineering. These are good engineering practices,
and every software engineer should understand them. And if Joel and Jeff really said
unit tests were bad, well that would be about the dumbest thing I’d have every heard
either of those two say. Yikes indeed.
&lt;/p&gt;
        &lt;p&gt;
But as Eric writes, “it depends on what you're trying to achieve”. Engineering techniques
like dependency injection, polymorphism, encapsulation are tools, and there are many
good reasons to use them. But like many tools, they can also be used &lt;a href="http://en.wikipedia.org/wiki/The_Texas_Chain_Saw_Massacre"&gt;for
evil&lt;/a&gt;.
&lt;/p&gt;
        &lt;p&gt;
In other words, the tools themselves are always innocent – you have to look at how
and why they are being used by the people who are using them.
&lt;/p&gt;
        &lt;p&gt;
Let’s take &lt;a href="http://en.wikipedia.org/wiki/Dependency_injection"&gt;dependency
injection&lt;/a&gt; as an example. Externalizing a software component’s dependencies enables
you to test it isolation from the rest of your system. For example, it’s very common
to inject a dependency that writes to a durable store, such as a logger or a data
access component. In your unit tests, you inject a mock durable store instead of the
real dependency. The mock will be faster (no need to actually write to disk), cleaner
(no need to clean up the files on disk between test runs) and will behave exactly
to the spec (bugs in the dependency component won’t create false failures in the component
you’re testing). Those are all good engineering arguments for using DI, full stop.
&lt;/p&gt;
        &lt;p&gt;
Furthermore, DI helps insulate a software component against changes in its dependencies.
I may not be able to predict specific changes with any precision, but it’s probably
safe to assume that there a given component’s dependencies aren’t going to remain
completely static. DI doesn’t insulate you 100% from possible changes – in particular,
it doesn’t help if the dependency’s interface changes.
&lt;/p&gt;
        &lt;p&gt;
But I would argue that you can go too far with DI. Let’s go back to the logger component
example I described above. Maybe, the over engineer thinks, we’ll want the logger
to write to the database instead of the file system in the future. Or maybe we’ll
want the logger to write to a different database. And if it’s supporting a different
database, then maybe the logger should support different back end databases. Or maybe,
Or Maybe, OR MAYBE.. 
&lt;/p&gt;
        &lt;p&gt;
We’ve gone from a simple component that logs to the file system and turned it into
a engineering monstrosity with multiple points of variability and extensibility. When
you start saying “maybe we should” or “this could change in the future” or stuff like
that, that’s when you start over engineering something.
&lt;/p&gt;
        &lt;p&gt;
Unfortunately, there’s only one way to know when you’ve started over-engineering:
Experience. Sorry Eric, I can’t help you with your junior engineers. As David Lee
Roth &lt;a href="http://www.lyricsdepot.com/david-lee-roth/experience.html"&gt;once sang&lt;/a&gt;,
Experience is the “worst teacher goin’”. But if there’s a better way to learn, I don’t
know it. In the meantime, I suggest code reviews and pair programming.
&lt;/p&gt;
        &lt;img width="0" height="0" src="http://devhawk.net/aggbug.ashx?id=d425eb36-8a14-4877-ba44-cfb9aa87a4ef"&gt;
      &lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=i8GFMGjrak4:7egpsGAsIA0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=i8GFMGjrak4:7egpsGAsIA0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=i8GFMGjrak4:7egpsGAsIA0:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?d=XQ266DUsA9M" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=i8GFMGjrak4:7egpsGAsIA0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=i8GFMGjrak4:7egpsGAsIA0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?i=i8GFMGjrak4:7egpsGAsIA0:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devhawk/~4/i8GFMGjrak4" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/xf20iAiyanY" height="1" width="1"/&gt;</content><author><name>Harry Pierson</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/Devhawk"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/Devhawk</id><title type="html">DevHawk</title><link rel="alternate" href="http://devhawk.net/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/Devhawk/~3/i8GFMGjrak4/The+Texas+Dependency+Injection+Massacre.aspx</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247935581342"><id gr:original-id="91d46819-8472-40ad-a661-2c78acb4018c:9836997">tag:google.com,2005:reader/item/0f40b8efb179dd2f</id><category term="Indigo" scheme="http://blogs.msdn.com/drnick/archive/tags/Indigo/default.aspx" /><category term="TCP/IP" scheme="http://blogs.msdn.com/drnick/archive/tags/TCP_2F00_IP/default.aspx" /><category term="Performance" scheme="http://blogs.msdn.com/drnick/archive/tags/Performance/default.aspx" /><title type="html">Tuning ConnectionBufferSize</title><published>2009-07-17T12:00:00Z</published><updated>2009-07-17T12:00:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/Si3S9sMHQJ8/tuning-connectionbuffersize.aspx" type="text/html" /><summary xml:base="http://blogs.msdn.com/drnick/default.aspx" type="html">&lt;p&gt;
Poor network utilization for large TCP data transfers is often a symptom of an overly small &lt;a href="http://blogs.msdn.com/drnick/archive/2006/03/10/547568.aspx"&gt;ConnectionBufferSize&lt;/a&gt;.  The ConnectionBufferSize is the size of the send and receive buffers used by the connection oriented transports, and in particular the TCP transport where the default size is 8 KB.
&lt;/p&gt;&lt;p&gt;
If all of the following factors are present, then you might want to investigate whether tuning the connection buffer size will improve the performance of your application:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;
Using the TCP transport in a binding
&lt;/li&gt;&lt;li&gt;
Bottleneck is in data transfer rather than data computation
&lt;/li&gt;&lt;li&gt;
Regularly transferring large messages or experiencing high connection latency
&lt;/li&gt;&lt;li&gt;
Network utilization is noticeably lower than file copies or other data transfers between the same two machines
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
On the other hand, the following factors might discourage you from increasing the connection buffer size:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;
Memory pressure
&lt;/li&gt;&lt;li&gt;
Interactive applications
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
I’ve previously &lt;a href="http://blogs.msdn.com/drnick/archive/2008/02/04/tcp-throttling.aspx"&gt;recommended increasing the ConnectionBufferSize&lt;/a&gt; up to 64 KB once the network speed exceeds 100 Mbps and keeping the default for slower networks.  I’ve found recently though several deployments where performance has benefited from bumping up the connection buffer size more aggressively.  The exact optimal values for a deployment depend on many factors besides the bandwidth, such as the frequency of dropped packets, transmission latency, and the presence of routers or bridges.
&lt;/p&gt;&lt;p&gt;
I’m now considering recommended ranges of 8 KB-32 KB for connection up to 100 Mbps and 32 KB-256 KB for faster connections.  If you’ve tried tuning the ConnectionBufferSize of a WCF application and seen optimal values significantly outside these ranges, I’d be interested in hearing from you.
&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9836997" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/Si3S9sMHQJ8" height="1" width="1"/&gt;</summary><author><name>Nicholas Allen</name></author><source gr:stream-id="feed/http://blogs.msdn.com/drnick/rss.xml"><id>tag:google.com,2005:reader/feed/http://blogs.msdn.com/drnick/rss.xml</id><title type="html">Nicholas Allen&amp;#39;s Indigo Blog</title><link rel="alternate" href="http://blogs.msdn.com/drnick/default.aspx" type="text/html" /></source><feedburner:origLink>http://blogs.msdn.com/drnick/archive/2009/07/17/tuning-connectionbuffersize.aspx</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247904686821"><id gr:original-id="">tag:google.com,2005:reader/item/787460d68885c362</id><title type="html">CMMI Version 1.3 Plan Update</title><published>2009-07-18T03:52:29Z</published><updated>2009-07-18T03:52:29Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/6rrPV6d7tfQ/cmmiv13update.html" type="text/html" /><summary xml:base="http://www.sei.cmu.edu/" type="html">CMMI Version 1.3 will include updates to the models
in all three constellations: CMMI for Development (CMMI-DEV),
Acquisition (CMMI-ACQ), and Services (CMMI-SVC), as well as updates to
the Standard CMMI Appraisal Method for Process Improvement (SCAMPI)
method. These updates will focus on high maturity, more effective
generic practices, appraisal efficiency, and consistency and commonality
across the three constellations.&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/6rrPV6d7tfQ" height="1" width="1"/&gt;</summary><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://www.sei.cmu.edu/rss/sei.xml"><id>tag:google.com,2005:reader/feed/http://www.sei.cmu.edu/rss/sei.xml</id><title type="html">Software Engineering Institute (SEI)</title><link rel="alternate" href="http://www.sei.cmu.edu" type="text/html" /></source><feedburner:origLink>http://www.sei.cmu.edu/news-at-sei/whats-new/cmmiv13update.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247829975093"><id gr:original-id="http://www.infoq.com/news/2009/07/coping-with-bugs">tag:google.com,2005:reader/item/ef8add7b7818aea4</id><title type="html">Coping with Bugs on an Agile/Scrum Project</title><published>2009-07-16T02:39:00Z</published><updated>2009-07-16T02:39:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/TpGhvsK-k10/coping-with-bugs" type="text/html" /><summary xml:base="http://www.infoq.com/" type="html">An often asked question is how does Scrum recommend a team to handle bugs? Should they be placed on the product backlog? Or on a separate bug list? If they’re on the backlog, does the Product Owner get to set their priority or are they automatically the most important items? Should there be a separate bug fixing sprint? &lt;i&gt;By Mark Levison&lt;/i&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/TpGhvsK-k10" height="1" width="1"/&gt;</summary><author><name>Mark Levison</name></author><source gr:stream-id="feed/http://www.infoq.com/rss/rss.action?token=pnh3tDf0ZtgBsB2JJ70MoS0Ie5s6Ccgw"><id>tag:google.com,2005:reader/feed/http://www.infoq.com/rss/rss.action?token=pnh3tDf0ZtgBsB2JJ70MoS0Ie5s6Ccgw</id><title type="html">InfoQ Personalized Feed for Arnon Rotem-Gal-Oz</title><link rel="alternate" href="http://www.infoq.com" type="text/html" /></source><feedburner:origLink>http://www.infoq.com/news/2009/07/coping-with-bugs</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247829918986"><id gr:original-id="http://www.engadget.com/2009/07/16/hybrid2-public-bike-concept-promises-to-help-power-city-buses/">tag:google.com,2005:reader/item/76d082f6ffdcf113</id><category term="bus" /><category term="hybrid" /><category term="hybrid bicycle" /><category term="hybrid bike" /><category term="hybrid2" /><category term="HybridBicycle" /><category term="HybridBike" /><category term="public transit" /><category term="public transportation" /><category term="PublicTransit" /><category term="PublicTransportation" /><category term="regenerative braking" /><category term="RegenerativeBraking" /><title type="html">Hybrid2 public bike concept promises to help power city buses</title><published>2009-07-16T06:38:00Z</published><updated>2009-07-16T06:38:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/RCxFyA4nBm8/" type="text/html" /><summary xml:base="http://www.engadget.com/" type="html">&lt;div align="center"&gt;&lt;a href="http://www.yankodesign.com/2009/07/13/bus-powered-bike-rides/"&gt;&lt;img hspace="4" border="1" vspace="4" src="http://www.blogcdn.com/www.engadget.com/media/2009/07/hybrid2-bike-07-15-09.jpg" alt=""&gt;&lt;/a&gt;&lt;br&gt; &lt;span style="float:right;margin-bottom:16px;margin-left:4px"&gt;&lt;/span&gt;
&lt;div align="left"&gt;&lt;a href="http://www.engadget.com/tag/hybridbike"&gt;Hybrid bikes&lt;/a&gt; are one thing, but designer Chiyi Chen looks to have something far grander in mind for his Hybrid2 bike concept, which he says could one day help power fleets of city buses. To do that, the hybrid part of the bike (a regenerative braking system) wouldn't be used to help power the bike itself at all, but would instead store the energy in an ultracapacitor that'd then feed the energy back into the grid when its parked at a special bike stand, which would in turn be used to help charge the hybrid electric buses. Not one to overlook an ingenious little detail, Chen has also devised a special card RFID card that would not only be used to unlock the bike, but keep track of the energy that each rider generates -- build up enough credits and you can ride the bus for free. Intrigued? Head on past the break for a video overview from the man himself.&lt;br&gt;&lt;br&gt;[Via &lt;a href="http://www.inhabitat.com/2009/07/15/hybrid-squared-an-energy-generating-bike-rental-system/"&gt;Inhabitat&lt;/a&gt;]&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.engadget.com/2009/07/16/hybrid2-public-bike-concept-promises-to-help-power-city-buses/" rel="bookmark"&gt;Continue reading &lt;em&gt;Hybrid2 public bike concept promises to help power city buses&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Filed under: &lt;a href="http://www.engadget.com/category/transportation/" rel="tag"&gt;Transportation&lt;/a&gt;&lt;/p&gt;&lt;p style="padding:5px;background:#ddd;border:1px solid #ccc;clear:both"&gt;&lt;a href="http://www.engadget.com/2009/07/16/hybrid2-public-bike-concept-promises-to-help-power-city-buses/"&gt;Hybrid2 public bike concept promises to help power city buses&lt;/a&gt; originally appeared on &lt;a href="http://www.engadget.com"&gt;Engadget&lt;/a&gt; on Thu, 16 Jul 2009 01:38:00 EST.  Please see our &lt;a href="http://www.weblogsinc.com/feed-terms/"&gt;terms for use of feeds&lt;/a&gt;.&lt;/p&gt;&lt;h6 style="clear:both;padding:8px 0 0 0;height:2px;font-size:1px;border:0;margin:0;padding:0"&gt;&lt;/h6&gt;&lt;a href="http://www.yankodesign.com/2009/07/13/bus-powered-bike-rides/"&gt;Read&lt;/a&gt; | &lt;a href="http://www.engadget.com/2009/07/16/hybrid2-public-bike-concept-promises-to-help-power-city-buses/" rel="bookmark" title="Permanent link to this entry"&gt;Permalink&lt;/a&gt; | &lt;a href="http://www.engadget.com/forward/19099410/" title="Send this entry to a friend via email"&gt;Email this&lt;/a&gt; | &lt;a href="http://www.engadget.com/2009/07/16/hybrid2-public-bike-concept-promises-to-help-power-city-buses/#comments" title="View reader comments on this entry"&gt;Comments&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/RCxFyA4nBm8" height="1" width="1"/&gt;</summary><author><name>Donald Melanson</name></author><gr:likingUser>02602375881726452988</gr:likingUser><gr:likingUser>16555522281066470607</gr:likingUser><gr:likingUser>04531752924912055503</gr:likingUser><gr:likingUser>04352931134973900628</gr:likingUser><gr:likingUser>18410372417507573655</gr:likingUser><gr:likingUser>07040365225074180417</gr:likingUser><gr:likingUser>13589645864775072003</gr:likingUser><gr:likingUser>11531277625571809818</gr:likingUser><gr:likingUser>04890067619218435200</gr:likingUser><gr:likingUser>11517097502321662393</gr:likingUser><gr:likingUser>00928775487484884046</gr:likingUser><gr:likingUser>03653541712958195261</gr:likingUser><gr:likingUser>09010755952835854175</gr:likingUser><gr:likingUser>00081976052517872559</gr:likingUser><gr:likingUser>16039099039267542969</gr:likingUser><gr:likingUser>06658330709945959833</gr:likingUser><gr:likingUser>12190287379001127882</gr:likingUser><gr:likingUser>02175411561917442871</gr:likingUser><gr:likingUser>13480678272104461090</gr:likingUser><gr:likingUser>05095189392953071982</gr:likingUser><gr:likingUser>07756220171043283164</gr:likingUser><gr:likingUser>09644712295973787031</gr:likingUser><gr:likingUser>02344498028793859296</gr:likingUser><gr:likingUser>08560004895993035657</gr:likingUser><gr:likingUser>17690779660612629369</gr:likingUser><gr:likingUser>14936072727084599997</gr:likingUser><gr:likingUser>14719917338300703943</gr:likingUser><gr:likingUser>01096890051837480152</gr:likingUser><gr:likingUser>12060279344442101232</gr:likingUser><gr:likingUser>08748823588543312374</gr:likingUser><gr:likingUser>08158322875672961154</gr:likingUser><gr:likingUser>17950954877393645759</gr:likingUser><gr:likingUser>02047564433247936074</gr:likingUser><gr:likingUser>11327821146363322144</gr:likingUser><gr:likingUser>09706548030985698578</gr:likingUser><gr:likingUser>04377414944690784795</gr:likingUser><gr:likingUser>07243557925472937084</gr:likingUser><gr:likingUser>03935370085214143735</gr:likingUser><gr:likingUser>18389948605835531110</gr:likingUser><gr:likingUser>03836803951260465676</gr:likingUser><gr:likingUser>17752321079678697417</gr:likingUser><gr:likingUser>03721926681214791970</gr:likingUser><gr:likingUser>00904201404913637723</gr:likingUser><gr:likingUser>08980310590270963641</gr:likingUser><gr:likingUser>15319922575167392355</gr:likingUser><gr:likingUser>06399857261161633037</gr:likingUser><gr:likingUser>15147859244830175764</gr:likingUser><gr:likingUser>01551056224330913207</gr:likingUser><gr:likingUser>10994279747257323408</gr:likingUser><gr:likingUser>17962442502712866841</gr:likingUser><gr:likingUser>07041600341616353553</gr:likingUser><gr:likingUser>03528651407251013541</gr:likingUser><gr:likingUser>04506058666570634721</gr:likingUser><gr:likingUser>07363320619191045629</gr:likingUser><gr:likingUser>10080945556244944069</gr:likingUser><gr:likingUser>13863174198635357988</gr:likingUser><gr:likingUser>01004436876879306304</gr:likingUser><gr:likingUser>00585731436113250548</gr:likingUser><gr:likingUser>16117191087986684888</gr:likingUser><gr:likingUser>10739712521854814181</gr:likingUser><gr:likingUser>10412891826738186162</gr:likingUser><gr:likingUser>15941814606830800522</gr:likingUser><gr:likingUser>12067762900251359522</gr:likingUser><gr:likingUser>11899360103941108057</gr:likingUser><gr:likingUser>02230492120886303878</gr:likingUser><gr:likingUser>04228490859538668092</gr:likingUser><gr:likingUser>13635450175843525123</gr:likingUser><gr:likingUser>05318620677516919825</gr:likingUser><gr:likingUser>06475771769283566778</gr:likingUser><gr:likingUser>00285525823836440842</gr:likingUser><gr:likingUser>09515997831876491237</gr:likingUser><gr:likingUser>04039797474917500269</gr:likingUser><gr:likingUser>01756756184065093909</gr:likingUser><gr:likingUser>03256766496404044475</gr:likingUser><gr:likingUser>01740337747560675996</gr:likingUser><gr:likingUser>11493518223822023017</gr:likingUser><gr:likingUser>05285052774626608729</gr:likingUser><gr:likingUser>10206159356411340505</gr:likingUser><gr:likingUser>02810461480072125570</gr:likingUser><gr:likingUser>12705099081015215221</gr:likingUser><gr:likingUser>02105344651215225135</gr:likingUser><gr:likingUser>04667247161778855963</gr:likingUser><gr:likingUser>07347837465739902307</gr:likingUser><gr:likingUser>15929237808561595810</gr:likingUser><gr:likingUser>15626955825987726626</gr:likingUser><gr:likingUser>01339813279480748089</gr:likingUser><gr:likingUser>09672041804595895303</gr:likingUser><gr:likingUser>14363644313128493126</gr:likingUser><gr:likingUser>17187486029445626559</gr:likingUser><gr:likingUser>12493580049959030396</gr:likingUser><gr:likingUser>06978248808858102100</gr:likingUser><gr:likingUser>09579355116894715679</gr:likingUser><gr:likingUser>14775189678199892329</gr:likingUser><gr:likingUser>02452186419056786250</gr:likingUser><gr:likingUser>01367024150840087468</gr:likingUser><gr:likingUser>01126700047591795485</gr:likingUser><gr:likingUser>17262273260937384244</gr:likingUser><gr:likingUser>11711674330590796358</gr:likingUser><gr:likingUser>04144679689988895997</gr:likingUser><gr:likingUser>00097889907426026597</gr:likingUser><source gr:stream-id="feed/http://www.engadget.com/rss.xml"><id>tag:google.com,2005:reader/feed/http://www.engadget.com/rss.xml</id><title type="html">Engadget</title><link rel="alternate" href="http://www.engadget.com" type="text/html" /></source><feedburner:origLink>http://www.engadget.com/2009/07/16/hybrid2-public-bike-concept-promises-to-help-power-city-buses/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247805328622"><id gr:original-id="c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7148532">tag:google.com,2005:reader/item/9e0079429e7a4199</id><title type="html">Don’t Choose – Combine Your Practices</title><published>2009-07-16T13:22:21Z</published><updated>2009-07-16T13:22:21Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/7V55zt4WGRE/don-t-choose-combine-your-practices.aspx" type="text/html" /><summary xml:base="http://weblogs.asp.net/jsemeniuk/default.aspx" type="html">&lt;p&gt;I have been “preaching” about why you should combine software engineering management practices for a long time (almost all of my presentations end with this as a call to action).  A lot of people get stuck in the religion of their current practice (or the practice that they see in the industry that holds the most promise).  Today Scrum is hot.  Kanban techniques are also gaining traction – especially in the blog/twitter spheres.  I’ve been a big proponent of Feature Driven Development in the past – and there are a barrage of other techniques stemming from eXtreme Programming, Test Driven Development, Behavior Driven Development … the list goes on.&lt;/p&gt;  &lt;p&gt;These days, I have to admit I’m very happy to see more emphasis on Lean techniques, such as Kanban systems, in the management of software engineering teams.  Don’t get trapped in the Kanban religion though…it’s too easy.  I’m also a big fan of something I’ve called “Feature Driven Scrumban Development” – which demonstrates the merging of a few different mindsets.  I actually used to call it “eXtremely Lead Feature Driven Scrum Based Development” – however, that was just too much of a mouthful ;-)  I made it up to prove a point – what we need to be “without form” – similar to the end goal of a practitioner of martial arts – when it comes to applicability of team and project management techniques.&lt;/p&gt;  &lt;p&gt;If you’re interested in some of these concepts go out and read this book:&lt;/p&gt;  &lt;p&gt;Scrumban - Essays on Kanban Systems for Lean Software Development &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.amazon.com/Scrumban-Essays-Systems-Software-Development/dp/0578002140" href="http://www.amazon.com/Scrumban-Essays-Systems-Software-Development/dp/0578002140"&gt;http://www.amazon.com/Scrumban-Essays-Systems-Software-Development/dp/0578002140&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The book is easier to read if you are already familiar with Scrum and FDD and even a lot of Lean concepts…&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7148532" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/7V55zt4WGRE" height="1" width="1"/&gt;</summary><author><name>Joel Semeniuk</name></author><gr:likingUser>07458333694624125345</gr:likingUser><source gr:stream-id="feed/http://weblogs.asp.net/jsemeniuk/rss.aspx"><id>tag:google.com,2005:reader/feed/http://weblogs.asp.net/jsemeniuk/rss.aspx</id><title type="html">Joel From Canada</title><link rel="alternate" href="http://weblogs.asp.net/jsemeniuk/default.aspx" type="text/html" /></source><feedburner:origLink>http://weblogs.asp.net/jsemeniuk/archive/2009/07/16/don-t-choose-combine-your-practices.aspx</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247803543405"><id gr:original-id="http://www.threeriversinstitute.org/blog/?p=291">tag:google.com,2005:reader/item/bca726cea9a24143</id><category term="JUnit Max" /><title type="html">Putting Max on the Back Burner</title><published>2009-07-17T00:54:50Z</published><updated>2009-07-17T00:54:50Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/fgekTbC26Z0/" type="text/html" /><content xml:base="http://www.threeriversinstitute.org/blog" type="html">&lt;p style="text-align:center"&gt;&lt;img title="Airplane landing in the sunset" src="http://farm3.static.flickr.com/2182/2438588835_5b71f3503b.jpg" alt="" width="350" height="263"&gt;&lt;/p&gt;
&lt;p&gt;This note is to inform JUnit Max subscribers that I will not be actively developing Max further (extraordinary events notwithstanding). Customers wishing to cancel their subscriptions are welcome to do so, as long as they stop using Max. Anyone wanting a refund will be granted one, no questions asked. Subscribers are welcome to continue using Max for the duration of their subscription, but no further subscriptions or renewals will be accepted.&lt;/p&gt;
&lt;h2&gt;Reasons&lt;/h2&gt;
&lt;p&gt;Max addresses a genuine need: dedicated TDDers really do need better, faster feedback. Max’s approach of risk-first test execution and an embedded UI modeled on syntax error reporting successfully deliver that feedback. There is an audience who can effectively use what Max delivers.&lt;/p&gt;
&lt;p&gt;The business problem with Max is that there just aren’t enough of us who rely on tests minute-by-minute. Even allowing for my marketing and sales mistakes, the data suggests that there are at most a few thousand Java programmers actively practicing TDD. That’s not a large enough market to sustain a business, especially as the market turned out to be price sensitive. Even if every Max subscriber successfully convinced 100 of their friends to sign up, there wouldn’t have been enough revenue.&lt;/p&gt;
&lt;p&gt;And so, much as I love the concept of better, faster test feedback and extending the benefits of developer testing, I will henceforth be investing my time in other products and in my consulting clients. I am not closing the door to future business–if someone comes along with a 10,000 seat order or offers to buy Max in order to donate it to the Eclipse foundation, I’ll be glad to discuss the possibilities.&lt;/p&gt;
&lt;h2&gt;Lessons&lt;/h2&gt;
&lt;p&gt;I learned a lot developing, marketing, and selling Max. One thing I learned is that I love being involved in the entire business. There were days in the middle where I felt fully engaged, fully alive. I’d like more of that in my life.&lt;/p&gt;
&lt;p&gt;Here are some more specific lessons I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Release early and often. The phrase, “If you aren’t embarrassed, you waited too long to release,” was very helpful to me. My first release was the tiniest sliver of what I imagined, but it gave me market validation (even if Erik and Saff were the only two people to buy it) and, more importantly, energy. The rapid release cycle let me experiment with features that I hoped would drive sales (none did) and fix blocking defects.&lt;/li&gt;
&lt;li&gt;Ship it and fix it. The product needs to provide value from the first, but it doesn’t need to provide everyone with value all the time. Early sales answer questions about the market size. Early users accept some rough edges if they get to be first and you fix the problems. Not reflexively fixing every defect was a hard transition for me, but, often, answering the next business question was tmy highest priority. I would recommend installing real-time remote error reporting for anyone bringing client software to market. It was nerve-wracking at first to see all the errors, but in the end the feedback was invaluable.&lt;/li&gt;
&lt;li&gt;End-to-end. I wish I had implemented a tiny sliver of the server functionality earlier. My ambition for Max was always larger than what I delivered, but implementing something of the service offering, however small, would have communicated that vision more clearly. Given the market size problem, it wouldn’t have made a difference in the end, though.&lt;/li&gt;
&lt;li&gt;Cut your losses. The exponential revenue growth turned down in May (negative second derivative). June was worse. It was six weeks from the first signals that the market was saturated to today.&lt;/li&gt;
&lt;li&gt;Lean startup. The most helpful advice I got came from Eric Ries and his Lean Startup ideas. Balancing time between the problem team and the solution team is a challenge for me, as I like making things.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Until We Meet Again&lt;/h2&gt;
&lt;p&gt;This is a sad kind of post to write. I had a vision of programming for my living, making tools to help make the work of other programmers go more smoothly. That’s not going to happen, not now with this product.&lt;/p&gt;
&lt;p&gt;I’d like to thank all the Max subscribers for their feedback and forebearance with a young and rapidly evolving product. Ilja Preuss, David Gageot, and Eric Lefevre-Ardant were particularly generous with their time. Most of all I’d like to thank David Saff for telling me exactly what he thought of Max and for giving up some of his precious JUnit programming time listening to me vent.&lt;/p&gt;
&lt;p&gt;It’s never easy to give up one dream and move to the next. My problem monitoring the behavior of Max in the field turns out to be common, and there are few good general solutions available. I’ll soon be launching a new product for developers of Eclipse-based products to deliver real-time feedback about errors. We’ll see if I get enough revenue to get the wheels off the ground of this one. If you have an Eclipse-based application deployed and want to find out what’s going on “out there”, drop me a line.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/fgekTbC26Z0" height="1" width="1"/&gt;</content><author><name>KentBeck</name></author><gr:likingUser>16524902531872678726</gr:likingUser><gr:likingUser>03619485709055274177</gr:likingUser><source gr:stream-id="feed/http://www.threeriversinstitute.org/blog/?feed=rss2"><id>tag:google.com,2005:reader/feed/http://www.threeriversinstitute.org/blog/?feed=rss2</id><title type="html">Three Rivers Institute</title><link rel="alternate" href="http://www.threeriversinstitute.org/blog" type="text/html" /></source><feedburner:origLink>http://www.threeriversinstitute.org/blog/?p=291</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247769891134"><id gr:original-id="tag:typepad.com,2003:post-6a00d8345208e269e20115711a1cbc970c">tag:google.com,2005:reader/item/1818182b3f2746cd</id><category term="Anne Thomas Manes" scheme="http://www.sixapart.com/ns/types#category" /><category term="SOA" scheme="http://www.sixapart.com/ns/types#category" /><title type="html">Navigating the Myriad SOA Standards and Specifications</title><published>2009-07-16T17:58:52Z</published><updated>2009-07-16T20:11:28Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/LHQ-P9adLm4/navigating-the-myriad-soa-standards-and-specifications.html" type="text/html" /><content xml:base="http://apsblog.burtongroup.com/" xml:lang="en-US" type="html">&lt;div&gt;&lt;p&gt;Blogger: &lt;a href="http://www.burtongroup.com/AboutUs/Bios/PrintBio.aspx?Id=94"&gt;Anne Thomas Manes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bgaps.typepad.com/.shared/image.html?/photos/uncategorized/2008/07/09/643.jpg"&gt;&lt;img alt="643" border="0" height="124" src="http://apsblog.burtongroup.com/images/2008/07/09/643.jpg" style="float:left;margin:0px 5px 5px 0px" title="643" width="100"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This just in:&lt;/p&gt;
&lt;p&gt;&amp;quot;Members of OASIS, OMG, and The Open Group announce the publication of a new white paper, &amp;#39;&lt;a href="http://www.opengroup.org/projects/soa/uploads/40/20044/W096.pdf"&gt;Navigating the SOA Open Standards Landscape Around Architecture&lt;/a&gt;.&amp;#39;  The paper was produced to help the SOA community at large navigate the myriad of overlapping technical products produced by these organizations with specific emphasis on the “A” in SOA; i.e., Architecture.&lt;/p&gt;
&lt;p&gt;This joint white paper explains and positions standards for SOA reference models, ontologies, reference architectures, maturity models, modeling languages, and  governance. It outlines where the works are similar, highlights the strengths of each body of work, and touches on how the work can be used together in complementary ways. It is also meant as a guide to users of these specifications for selecting the technical products most appropriate for their needs, consistent with where they are today and where they plan to head on their SOA journeys.&amp;quot;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/LHQ-P9adLm4" height="1" width="1"/&gt;</content><author><name>Anne Thomas Manes</name></author><source gr:stream-id="feed/http://apsblog.burtongroup.com/atom.xml"><id>tag:google.com,2005:reader/feed/http://apsblog.burtongroup.com/atom.xml</id><title type="html">Application Platform Strategies Blog</title><link rel="alternate" href="http://apsblog.burtongroup.com/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ApplicationPlatformStrategiesBlog/~3/KA2NpKoTUak/navigating-the-myriad-soa-standards-and-specifications.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247764927735"><id gr:original-id="http://herbsutter.wordpress.com/2009/07/15/effective-concurrency/">tag:google.com,2005:reader/item/c670c678ed4752db</id><category term="Concurrency" /><category term="Software Development" /><title type="html">Effective Concurrency: The Power of “In Progress”</title><published>2009-07-15T23:08:59Z</published><updated>2009-07-15T23:08:59Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/v869fZXNj8c/" type="text/html" /><media:group><media:content url="http://0.gravatar.com/avatar/c0ba56bfd231f8f04feb057728975181?s=96&amp;d=identicon&amp;r=G" /></media:group><content xml:base="http://herbsutter.wordpress.com/" type="html">&lt;div&gt;&lt;br&gt;&lt;p&gt;This month’s &lt;strong&gt;Effective Concurrency&lt;/strong&gt; column, &lt;a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=218401447"&gt;The Power of “In Progress”&lt;/a&gt;, is now live on DDJ’s website.&lt;/p&gt;
&lt;p&gt;From the article:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Don’t let a long-running operation take hostages. When some work that takes a long time to complete holds exclusive access to one or more popular shared resources, such as a thread or a mutex that controls access to some popular shared data, it can block other work that needs the same resource. Forcing that other work to wait its turn hurts both throughput and responsiveness.&lt;/p&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;Let’s look at the question from another angle, suggested by my colleague Terry Crowley: Instead of viewing partially-updated state with in-progress work as an ‘unfortunate’ special case to remember and recover from, what if we simply embrace it as the normal case? …&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I hope you enjoy it. Finally, here are links to previous Effective Concurrency columns:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/200001985"&gt;The Pillars of Concurrency&lt;/a&gt; (Aug 2007) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/201202924"&gt;How Much Scalability Do You Have or Need?&lt;/a&gt; (Sep 2007) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://ddj.com/cpp/201804238"&gt;Use Critical Sections (Preferably Locks) to Eliminate Races&lt;/a&gt; (Oct 2007) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/202401098"&gt;Apply Critical Sections Consistently&lt;/a&gt; (Nov 2007) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://ddj.com/architect/202802983"&gt;Avoid Calling Unknown Code While Inside a Critical Section&lt;/a&gt; (Dec 2007) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/204801163"&gt;Use Lock Hierarchies to Avoid Deadlock&lt;/a&gt; (Jan 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/cpp/205900309"&gt;Break Amdahl’s Law!&lt;/a&gt; (Feb 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/206100542"&gt;Going Superlinear&lt;/a&gt; (Mar 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/206903306"&gt;Super Linearity and the Bigger Machine&lt;/a&gt; (Apr 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://ddj.com/architect/207100682"&gt;Interrupt Politely&lt;/a&gt; (May 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://ddj.com/architect/208200273"&gt;Maximize Locality, Minimize Contention&lt;/a&gt; (Jun 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/208801371"&gt;Choose Concurrency-Friendly Data Structures&lt;/a&gt; (Jul 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/209900973"&gt;The Many Faces of Deadlock&lt;/a&gt; (Aug 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/cpp/210600279"&gt;Lock-Free Code: A False Sense of Security&lt;/a&gt; (Sep 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/210604448"&gt;Writing Lock-Free Code: A Corrected Queue&lt;/a&gt; (Oct 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/cpp/211601363"&gt;Writing a Generalized Concurrent Queue&lt;/a&gt; (Nov 2008) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/cpp/211800538"&gt;Understanding Parallel Performance&lt;/a&gt; (Dec 2008)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/212201163"&gt;Measuring Parallel Performance: Optimizing a Concurrent Queue&lt;/a&gt; (Jan 2009)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/hpc-high-performance-computing/212701484"&gt;volatile vs. volatile&lt;/a&gt; (Feb 2009)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=214100002"&gt;Sharing Is the Root of All Contention&lt;/a&gt; (Mar 2009)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=215900465"&gt;Use Threads Correctly = Isolation + Asynchronous Messages&lt;/a&gt; (Apr 2009)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=216500409"&gt;Use Thread Pools Correctly: Keep Tasks Short and Nonblocking&lt;/a&gt; (Apr 2009)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=217500206"&gt;Eliminate False Sharing&lt;/a&gt; (May 2009)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=217801299"&gt;Break Up and Interleave Work to Keep Threads Responsive&lt;/a&gt; (Jun 2009)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=218401447"&gt;The Power of “In Progress”&lt;/a&gt; (Jul 2009)&lt;/p&gt;
&lt;/blockquote&gt;
Posted in Concurrency, Software Development  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/herbsutter.wordpress.com/259/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/herbsutter.wordpress.com/259/"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/herbsutter.wordpress.com/259/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/herbsutter.wordpress.com/259/"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/herbsutter.wordpress.com/259/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/herbsutter.wordpress.com/259/"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/herbsutter.wordpress.com/259/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/herbsutter.wordpress.com/259/"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/herbsutter.wordpress.com/259/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/herbsutter.wordpress.com/259/"&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=herbsutter.wordpress.com&amp;amp;blog=3379246&amp;amp;post=259&amp;amp;subd=herbsutter&amp;amp;ref=&amp;amp;feed=1"&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/v869fZXNj8c" height="1" width="1"/&gt;</content><author><name>Herb Sutter</name></author><gr:likingUser>00280824883861951485</gr:likingUser><gr:likingUser>08325299619752444869</gr:likingUser><gr:likingUser>02969338194923384073</gr:likingUser><gr:likingUser>06163396203632298686</gr:likingUser><gr:likingUser>09846907250718215842</gr:likingUser><gr:likingUser>18034138901950941937</gr:likingUser><gr:likingUser>11967577028120371827</gr:likingUser><gr:likingUser>04465681049486503111</gr:likingUser><gr:likingUser>09843317737501091757</gr:likingUser><source gr:stream-id="feed/http://herbsutter.wordpress.com/feed/"><id>tag:google.com,2005:reader/feed/http://herbsutter.wordpress.com/feed/</id><title type="html">Sutter&amp;#39;s Mill</title><link rel="alternate" href="http://herbsutter.wordpress.com" type="text/html" /></source><feedburner:origLink>http://herbsutter.wordpress.com/2009/07/15/effective-concurrency/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247763919415"><id gr:original-id="">tag:google.com,2005:reader/item/61a8aaae6e0afc2b</id><category term="My Blogs" /><title type="html">Key Person Won't Participate</title><published>2009-07-15T17:13:33Z</published><updated>2009-07-15T17:13:33Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/GnA6hDz4mYs/index.php" type="text/html" /><summary xml:base="http://www.stevenmsmith.com/index.php?option=com_content&amp;task=section&amp;id=7" type="html">&lt;p&gt;&lt;strong&gt;Unable to gain the participation of a key person for a project retrospective?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; A retrospective, sometime called a post-mortem or lessons learned session, is an event designed to discover and preserve the aspects of a project that were managed well; and discover and change the aspects that weren't. I consider this event a fundamental feedback mechanism for a learning organization.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;My friend Mitch is a case in point. He won't show up for a retrospective.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; Mitch builds business software infrastructure. For more than a decade, he has been doing this job for the same IT organization. The company that employs him is huge. Its business is complex. Its executives are demanding. Its systems must scale. But the investments in business software infrastructure consistently fail. And the failures disappear from view.&lt;/p&gt;
We&amp;#39;re talking about the squandering of hundreds of millions of dollars. You would think that magnitude of failure would have everyone&amp;#39;s attention, especially those demanding executives. Not so. According to Mitch, elaborate stories are constructed to explain the failures and important people invoke the magic words, &amp;quot;That&amp;#39;s water under the bridge,&amp;quot;  which make the failures disappear.
&lt;p&gt;Mitch clearly sees the failures and would like to do something about them. But he sees retrospectives as an equally large failure. When he looks back on the his participation in retrospectives for failed projects, he sees a consistent pattern. Each retrospective would find that a root cause for the failure was insufficient or inadequate sponsorship. And in every case, nothing ever happened to improve project sponsorship.&lt;/p&gt;&lt;strong&gt;The past.&lt;/strong&gt; Each project team reaches an organizational river that they cannot cross without additional resources. They need a bridge built because the river is wide, fast and rocky. No sponsor exists, however, with the power to authorize its construction.
&lt;p&gt;The project team valiantly goes into the forest, cuts down trees, and lashes them together to create a makeshift raft. They try to cross the river at the exact point where they wanted the bridge built. Like a scene from a Western movie, the raft crashes into the rocks, the contents scatter and tumble downstream.&lt;/p&gt;
&lt;p&gt;The exhausted members struggle to shore. They eventually reconnect. They realize the project is dead. Someone suggests a retrospective.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The present.&lt;/strong&gt; You are organizing the retrospective. As you send a meeting request to the members of the team, you tug at your ear attempting to release the water trapped inside.&lt;/p&gt;
Mitch receives the meeting request. He thinks to himself, &amp;quot;It&amp;#39;s best to not make a big thing about this. I&amp;#39;ll tell her what she wants to hear. But I&amp;#39;m not going.&amp;quot; He clicks &amp;quot;Accept.&amp;quot;
&lt;p&gt;You see Mitch's acceptance. You recall an earlier retrospective where Mitch hadn't participated. You remember he accepted that meeting request too. And you also recall that there were a few others who behaved the same way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What can you do to gain Mitch's participation in this retrospective?&lt;/strong&gt; I suggest the following strategy:&lt;/p&gt;
&lt;p&gt;0. Review the results from previous retrospectives. What should have resulted but didn't? Explicitly redesign the retrospective to address those deficiencies. A design element to show that this time will be different is to bring in an outside facilitator to lead the event.&lt;/p&gt;
&lt;p&gt;1. Gain the sponsorship of someone who has the power to do something with the results of the retrospective. Show this change by adding an agenda item for the team to share its findings with the sponsor at the end of the retrospective.&lt;/p&gt;
&lt;p&gt;2. Make time for a face-to-face discussions with Mitch and all participants before the retrospective.&lt;/p&gt;
&lt;p&gt;3. Ask each person, &amp;quot;What could prevent you from being fully present during the retrospective?&amp;quot; &lt;/p&gt;
&lt;p&gt;4. Be willing to make adjustment, such as rescheduling or changing more elements of the design, to ensure the highest level of participation.&lt;/p&gt;
&lt;p&gt;5. Review the retrospectives objectives and agenda with each person. Highlight the differences between this retrospectives and earlier events.&lt;/p&gt;
&lt;p&gt;6. Ask each person for suggestions about what would make the retrospective even better for them. Consider them and change the design accordingly.&lt;/p&gt;
&lt;p&gt;7. Remind each person that if the team wants things to change it must show the data, its meaning and significance in ways that will compel the sponsor to respond. Ask them to find relevant data and bring it with them to the retrospective.&lt;/p&gt;
&lt;p&gt;8. Ask each person, &amp;quot;Is there anything that I should have asked you that I didn&amp;#39;t?&amp;quot; For anything mentioned, asked them how they would answer their own question.&lt;/p&gt;
&lt;p&gt;9. Tell each person how important their participation is to you personally.&lt;/p&gt;
&lt;p&gt;10. Say, &amp;quot;Thank you.&amp;quot;&lt;/p&gt;
&lt;p&gt;Let's assume that Mitch is right about the root cause of the problem. What better venue is there for gaining sponsorship for the next project than a project retrospective? But breaking this kind of viscous cycle is always difficult. &lt;/p&gt;
&lt;p&gt;Gaining sponsorship is more than having someone listen to the findings and recommendations. Success hinges on creating superb findings with data that backs them up and connecting them with the personal success of the sponsor. The more things that personally connect with the sponsor, the more likely that that person will be to take action on the recommendations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Any attempt to force Mitch to participate is stupid and counterproductive.&lt;/strong&gt; You may be able to force his body into a chair, but he doesn't have to bring his mind. Your best chance is through showing him that this retrospective will succeed and trigger action. So ensure that the person who agrees to be the sponsor will take action when presented with a compelling business case. Otherwise, cancel the retrospective because it will waste your time and everyone else's.&lt;/p&gt;
&lt;p align="center"&gt;©2009 Steven M. Smith&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/beingeffective?a=0MZbKiKJFEY:wKG0Z9_UE40:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/beingeffective?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/beingeffective?a=0MZbKiKJFEY:wKG0Z9_UE40:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/beingeffective?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/beingeffective?a=0MZbKiKJFEY:wKG0Z9_UE40:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/beingeffective?i=0MZbKiKJFEY:wKG0Z9_UE40:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/beingeffective?a=0MZbKiKJFEY:wKG0Z9_UE40:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/beingeffective?i=0MZbKiKJFEY:wKG0Z9_UE40:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/beingeffective?a=0MZbKiKJFEY:wKG0Z9_UE40:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/beingeffective?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/beingeffective?a=0MZbKiKJFEY:wKG0Z9_UE40:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/beingeffective?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/beingeffective?a=0MZbKiKJFEY:wKG0Z9_UE40:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/beingeffective?i=0MZbKiKJFEY:wKG0Z9_UE40:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/beingeffective/~4/0MZbKiKJFEY" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/GnA6hDz4mYs" height="1" width="1"/&gt;</summary><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/beingeffective"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/beingeffective</id><title type="html">Steve Smith&amp;#39;s Being Effective</title><link rel="alternate" href="http://www.stevenmsmith.com/index.php?option=com_content&amp;task=section&amp;id=7" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/beingeffective/~3/0MZbKiKJFEY/index.php</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247729641337"><id gr:original-id="http://devhawk.net/PermaLink,guid,9dbbe690-a32a-41c8-996b-d3f1af8ed69c.aspx">tag:google.com,2005:reader/item/7d682641bb06a9d5</id><category term="Architecture" /><title type="html">Architecture Astronauts and Over Engineers</title><published>2009-07-16T00:12:32Z</published><updated>2009-07-16T00:12:32Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/Yi3Lt575QPQ/Architecture+Astronauts+And+Over+Engineers.aspx" type="text/html" /><content xml:base="http://devhawk.net/" type="html">
        &lt;p&gt;
Since it’s apparently Architecture Week™ [1] here at DevHawk, here’s another of my
favorite Dilbert cartoons of all time – relevant to the discussion at hand.
&lt;/p&gt;
        &lt;p&gt;
          &lt;a title="Dilbert.com" href="http://dilbert.com/strips/comic/2008-03-04/"&gt;
            &lt;img style="display:block;float:none;margin-left:auto;margin-right:auto" border="0" alt="Dilbert.com" src="http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/800/1890/1890.strip.gif"&gt;
          &lt;/a&gt;
        &lt;/p&gt;
        &lt;p&gt;
Two interesting &lt;a href="http://devhawk.net/CommentView,guid,94b98f0d-d884-4557-8df0-8f0dca3b72e7.aspx#commentstart"&gt;comments&lt;/a&gt; on
yesterday’s post:
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
Architectural thinking is a necessary (and very important) part of software development
- but beyond the systems level (which is systems administration and not software architecture)
I have a hard time seeing divorcing architectural thinking from the actual development
as anything but a terrible thing. Although I see that your definition of architecture
(at the functional level) does not match my caricature of the 'architecture astronauts'
which I do think can be endemic in languages that encourage additional layers of architecture.
[&lt;a href="http://www.voidspace.org.uk/"&gt;Michael Foord&lt;/a&gt;]
&lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
So based on the definition of architecture I'm reading into your post, you wouldn't
consider the choice of object-oriented versus functional programming styles from an
architectural perspective? I'm trying to understand what level of architecture you
mean here. Like Michael, I usually think of architecture even down into the implementation
patterns level (hence the architecture astronauts), but that seems to be included
in what you might be calling an engineering concern. [&lt;a href="http://wizardsofsmart.net/"&gt;Ryan
Riley&lt;/a&gt;]
&lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
Let me be very clear. Using my definition, there is no such thing “architecture even
down into the implementation patterns level”. I’d argue that the implementation patterns
level is engineering, not architecture. From what I’ve seen, the terms “architecture”
and “engineering” tend to be used interchangeably in the software industry, and frankly
I think that’s a mistake. I said as much in &lt;a href="http://devhawk.net/2005/08/31/Architecture+At+The+Intersection.aspx"&gt;yet
another post&lt;/a&gt; I wrote four years ago:
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
Architecture is the intersection between business and IT.
&lt;/p&gt;
          &lt;p&gt;
If a decision doesn't effect a business person, it's not an architecture decision.
I'm not saying it's not important - I think the role of the software engineer is critical
in large-scale enterprise system design and construction. And I will readily admit
that often a single person is responsible for both architecture and engineering. But
that doesn't make them the same activity. As long as we continue to confuse the two
disciplines, we hold them both back.
&lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
Michael and Ryan (or anyone else for that matter) are welcome to disagree with my
definition of architecture. I often joke that if you asked ten architects to define
“architecture”, you’d get twelve answers. But that’s my definition and I’m sticking
to it. 
&lt;/p&gt;
        &lt;p&gt;
But what of the Architecture Astronauts? Both Michael and Ryan mentioned them. Unsurprisingly,
I think that term is used too broadly as well. If you go back and read Joel’s &lt;a href="http://www.joelonsoftware.com/articles/fog0000000018.html"&gt;original
post&lt;/a&gt; of Architecture Astronauts, there wasn’t much reference, if any, to the implementation
layer at all. 
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
The Architecture Astronauts will say things like: "Can you imagine a program
like&lt;i&gt;&lt;/i&gt;Napster where you can download &lt;i&gt;anything,&lt;/i&gt; not just songs?"
Then they'll build applications like Groove that they think are &lt;i&gt;more&lt;/i&gt; general
than Napster, but which seem to have neglected that wee little feature that lets you
type the name of a song and then listen to it -- the feature we wanted in the first
place. Talk about missing the point. If Napster &lt;i&gt;wasn't&lt;/i&gt; peer-to-peer but it &lt;i&gt;did&lt;/i&gt; let
you type the name of a song and then listen to it, it would have been just as popular
&lt;/p&gt;
          &lt;p&gt;
          &lt;/p&gt;
          &lt;p&gt;
[Joel on Software, &lt;a href="http://www.joelonsoftware.com/articles/fog0000000018.html"&gt;Don't
Let Architecture Astronauts Scare You&lt;/a&gt;]
&lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
I feel that my definition fits very well with the way Joel writes about architecture
in this paragraph. The Architect Astronaut is trying to solve a real business problem
- people need access to information besides music. But the mistake they make is thinking
they can solve multiple problems with a single solution. So they abstract higher and
higher until they’ve lost sight of the original problem and can only focus on the
abstractions. If you look at what Joel has to say about technologies like Hailstorm
and Jini, you see the same pattern emerge. 
&lt;/p&gt;
        &lt;p&gt;
This isn’t to say that similar problems of over-abstraction don’t happen at the implementation
layer – they do. But they happen for very different reasons. Astronaut Architects
are trying to solve multiple problems with a single solution. But when over-abstraction
happens at the implementation level, it because someone thought they could predict
the future.
&lt;/p&gt;
        &lt;p&gt;
We’ve all seen our fair share of over-engineered systems that introduce significant
unneeded complexity on the off chance that the development team can successfully predict
the kind of change likely to come in the next version of the product. Invariably,
the team’s precognitive abilities are revealed to be as poor as everyone else's, so
they’re left with a bunch of extra layers of software cruft that has to be maintained
but provides zero additional value to the system. I’ve blogged about that problem
before as well: &lt;a href="http://devhawk.net/2008/03/05/Kitchen+Sink+Variability.aspx"&gt;Kitchen
Sink Variability&lt;/a&gt;.
&lt;/p&gt;
        &lt;p&gt;
Since I’m big on keeping the terminology of architecture and engineering separate,
then I’d argue that we need a different term than Architecture Astronaut for people
who want to introduce additional layers of abstraction at the implementation layer
on the off chance that they don’t suck at precognition. Since we call such systems
over-engineered, wouldn’t that make the people who build them “Over Engineers”?
&lt;/p&gt;
        &lt;p&gt;
          &lt;hr&gt;
        &lt;/p&gt;
        &lt;p&gt;
[1] It’s like &lt;a href="http://en.wikipedia.org/wiki/Shark_Week"&gt;Shark Week&lt;/a&gt;, but
with white boards and even more terrifying.
&lt;/p&gt;
        &lt;img width="0" height="0" src="http://devhawk.net/aggbug.ashx?id=9dbbe690-a32a-41c8-996b-d3f1af8ed69c"&gt;
      &lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=cbBU1eRnhb8:owh83bwF5KE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=cbBU1eRnhb8:owh83bwF5KE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=cbBU1eRnhb8:owh83bwF5KE:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?d=XQ266DUsA9M" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=cbBU1eRnhb8:owh83bwF5KE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Devhawk?a=cbBU1eRnhb8:owh83bwF5KE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Devhawk?i=cbBU1eRnhb8:owh83bwF5KE:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devhawk/~4/cbBU1eRnhb8" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/Yi3Lt575QPQ" height="1" width="1"/&gt;</content><author><name>Harry Pierson</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/Devhawk"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/Devhawk</id><title type="html">DevHawk</title><link rel="alternate" href="http://devhawk.net/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/Devhawk/~3/cbBU1eRnhb8/Architecture+Astronauts+And+Over+Engineers.aspx</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247729495803"><id gr:original-id="http://www.downloadsquad.com/2009/07/15/google-zaps-chrome-updates-with-shrink-ray/">tag:google.com,2005:reader/item/7e558648f3238179</id><category term="chromium" /><category term="google-chrome" /><category term="security" /><category term="updates" /><category term="web-browser" /><title type="html">Google zaps Chrome updates with shrink ray, and there was much rejoicing</title><published>2009-07-16T02:10:00Z</published><updated>2009-07-16T02:10:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/3zcBSpmt_hk/click.phdo" type="text/html" /><summary xml:base="http://www.downloadsquad.com/" type="html">&lt;p&gt;Filed under: &lt;a href="http://www.downloadsquad.com/category/google/" rel="tag"&gt;Google&lt;/a&gt;, &lt;a href="http://www.downloadsquad.com/category/open-source/" rel="tag"&gt;Open Source&lt;/a&gt;, &lt;a href="http://www.downloadsquad.com/category/browser/" rel="tag"&gt;Browsers&lt;/a&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;a href="http://blog.chromium.org/2009/07/smaller-is-faster-and-safer-too.html"&gt;&lt;img width="550" vspace="4" hspace="4" height="249" border="0" alt="" src="http://www.blogcdn.com/www.downloadsquad.com/media/2009/07/chrom-sf23f32.jpg"&gt;&lt;/a&gt;&lt;/div&gt;
One of our perennial complaints about annoying apps like iTunes is the fact that they require us to reinstall the whole app every time there's an update. Apart from being annoying, it's inefficient. &lt;br&gt; &lt;br&gt; Google seems to feel the same way, which has led Chrome/Chromium developers to implement a new binary diff algorithm (dubbed Courgette) which greatly reduces the size of its updates. Courgette delivers updates that are .08% the size of the Chromium mini installer (about 80Kb as opposed to 10Mb). In the &lt;a href="http://blog.chromium.org/2009/07/smaller-is-faster-and-safer-too.html"&gt;official blog post&lt;/a&gt;, they state "&lt;span style="font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:16px"&gt;It is an anathema to us to push out a whole new 10MB update to give you a ten line security fix."&lt;/span&gt; Can I get an Amen?&lt;br&gt; &lt;br&gt;The blog also offers several reasons Google is excited about the new, Liliputian updates:&lt;br&gt; &lt;blockquote&gt;&lt;span style="font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:16px"&gt;We want smaller updates because it narrows the window of vulnerability. If the update is a tenth of the size, we can push ten times as many per unit of bandwidth. We have enough users that this means more users will be protected earlier. A secondary benefit is that a smaller update will work better for users who don't have great connectivity.&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt; Now if we could just convince other application developers to adopt this kind of attitude toward patching. I'm not going to hold my breath.&lt;p style="padding:5px;background:#ddd;border:1px solid #ccc;clear:both"&gt;&lt;a href="http://www.downloadsquad.com/2009/07/15/google-zaps-chrome-updates-with-shrink-ray/"&gt;Google zaps Chrome updates with shrink ray, and there was much rejoicing&lt;/a&gt; originally appeared on &lt;a href="http://www.downloadsquad.com"&gt;Download Squad&lt;/a&gt; on Wed, 15 Jul 2009 21:10:00 EST.  Please see our &lt;a href="http://www.weblogsinc.com/feed-terms/"&gt;terms for use of feeds&lt;/a&gt;.&lt;/p&gt;&lt;h6 style="clear:both;padding:8px 0 0 0;height:2px;font-size:1px;border:0;margin:0;padding:0"&gt;&lt;/h6&gt;&lt;a href="http://blog.chromium.org/2009/07/smaller-is-faster-and-safer-too.html"&gt;Read&lt;/a&gt; | &lt;a href="http://www.downloadsquad.com/2009/07/15/google-zaps-chrome-updates-with-shrink-ray/" rel="bookmark" title="Permanent link to this entry"&gt;Permalink&lt;/a&gt; | &lt;a href="http://www.downloadsquad.com/forward/19099373/" title="Send this entry to a friend via email"&gt;Email this&lt;/a&gt; | &lt;a href="http://www.downloadsquad.com/2009/07/15/google-zaps-chrome-updates-with-shrink-ray/#comments" title="View reader comments on this entry"&gt;Comments&lt;/a&gt;&lt;br style="clear:both"&gt;
&lt;br style="clear:both"&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:fa9d3deee77e9ebac66250ca1a225375:VyeXsHSuSbbaJ94EVD92pDBYQnarEVj71rDmbtPLOCxty7icSNkmxYaSzIj3GFfiXHUrDnFbZOA%2B"&gt;&lt;img border="0" title="Add to digg" alt="Add to digg" src="http://images.pheedo.com/images/mm/digg.gif"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:d2ef0605587494b4f3915da3144db687:eP9UHwqwew0pzwAgJFCp3txOTYo6eai8To7Ru1AMh8STS%2BHrKpw0zdho95TfsEUom2EMbYSlG9jX"&gt;&lt;img border="0" title="Add to del.icio.us" alt="Add to del.icio.us" src="http://images.pheedo.com/images/mm/delicious.gif"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:95eb56d532e8d6a739571e62ad91fd34:bzislMuqD6sa6GPPb5KTqk7pUW58z1SghpBCv9fo5uu74So95lyS6oATYl%2BmJRpXyqz9mZkvDe8j"&gt;&lt;img border="0" title="Add to Google" alt="Add to Google" src="http://images.pheedo.com/images/mm/google.png"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:7270b05ca1393858bd13a4b48abb6112:ijy%2BY4nt1YKQDUZFegfB4gU6wylTt1Wu1vp2ajDzEN1MTx%2FdVvq5cC8eJM5Kxj8rgJxxfHjbxr73yA%3D%3D"&gt;&lt;img border="0" title="Add to StumbleUpon" alt="Add to StumbleUpon" src="http://images.pheedo.com/images/mm/stumbleit.gif"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:27444288be6de6251d444503de18af1f:CVZ6BEnbxZGhpuoGIVt47qm7%2FjT6jNlFA3%2Fgro96RAqgx6KzcEXMLSYkYtIK1pfv7Fn7AqEQW0JrKg%3D%3D"&gt;&lt;img border="0" title="Add to Facebook" alt="Add to Facebook" src="http://images.pheedo.com/images/mm/facebook.gif"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:357d964d82fd840e0cdffcd8e56979fb:Bd%2FmjDpHRKDbnD1lRBxhde%2BM4kYrl2GRnXUMLm9sBod%2FdfoLoFuCO7nH9SWOMF7J%2FX1FUM2vLjoT"&gt;&lt;img border="0" title="Add to Reddit" alt="Add to Reddit" src="http://images.pheedo.com/images/mm/reddit.png"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:d36d10f83d64a641e5ed7aa82b5f990d:Djc1RpRfFVF683gkBtxvu0xtUFVqXksp5NZQMVWZsO8EbYTgSWQeKGKm5Hw9%2FQw96UbOjTzG3wavBg%3D%3D"&gt;&lt;img border="0" title="Add to Technorati" alt="Add to Technorati" src="http://images.pheedo.com/images/mm/technorati.png"&gt;&lt;/a&gt;
&lt;br style="clear:both"&gt;
&lt;a href="http://ads.pheedo.com/click.phdo?s=60bb2000798e1609e67db3e705476314&amp;amp;p=1"&gt;&lt;img alt="" style="border:0" border="0" src="http://ads.pheedo.com/img.phdo?s=60bb2000798e1609e67db3e705476314&amp;amp;p=1"&gt;&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/3zcBSpmt_hk" height="1" width="1"/&gt;</summary><author><name>Lee Mathews</name></author><gr:likingUser>04399793781434395697</gr:likingUser><gr:likingUser>12145228547220788406</gr:likingUser><gr:likingUser>09516182636405945426</gr:likingUser><gr:likingUser>15873238818986028654</gr:likingUser><gr:likingUser>04105133741613888949</gr:likingUser><gr:likingUser>05849052985714716492</gr:likingUser><gr:likingUser>17518124910909542205</gr:likingUser><gr:likingUser>14853375615618333308</gr:likingUser><gr:likingUser>14616784913960152726</gr:likingUser><gr:likingUser>12628807165032909821</gr:likingUser><gr:likingUser>14744834820221051838</gr:likingUser><gr:likingUser>13623380438518787512</gr:likingUser><gr:likingUser>13109658333781147922</gr:likingUser><gr:likingUser>00424042592787625168</gr:likingUser><gr:likingUser>13749601311520147106</gr:likingUser><gr:likingUser>00910357295470931293</gr:likingUser><gr:likingUser>02853115971958326654</gr:likingUser><gr:likingUser>11466788778185157292</gr:likingUser><gr:likingUser>15460710397209450163</gr:likingUser><gr:likingUser>03558746107930569411</gr:likingUser><gr:likingUser>06154291116017854848</gr:likingUser><gr:likingUser>17691545220783626261</gr:likingUser><gr:likingUser>01599687593580997417</gr:likingUser><gr:likingUser>04966105524767801928</gr:likingUser><gr:likingUser>16193136804887150621</gr:likingUser><gr:likingUser>02742186893224714347</gr:likingUser><gr:likingUser>03988905426529058003</gr:likingUser><gr:likingUser>11606479815317485703</gr:likingUser><gr:likingUser>08056218071436922282</gr:likingUser><gr:likingUser>14232723607729048176</gr:likingUser><gr:likingUser>09298366235030332216</gr:likingUser><gr:likingUser>17645210719363041422</gr:likingUser><gr:likingUser>02592501068909117967</gr:likingUser><gr:likingUser>18043711279637485413</gr:likingUser><gr:likingUser>16094501596620897636</gr:likingUser><gr:likingUser>10303999348257579233</gr:likingUser><gr:likingUser>00365771591104639511</gr:likingUser><gr:likingUser>07009837532300504967</gr:likingUser><gr:likingUser>05142910529678398892</gr:likingUser><source gr:stream-id="feed/http://www.downloadsquad.com/rss.xml"><id>tag:google.com,2005:reader/feed/http://www.downloadsquad.com/rss.xml</id><title type="html">Download Squad</title><link rel="alternate" href="http://www.downloadsquad.com" type="text/html" /></source><feedburner:origLink>http://www.pheedcontent.com/click.phdo?i=60bb2000798e1609e67db3e705476314</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247729424889"><id gr:original-id="91d46819-8472-40ad-a661-2c78acb4018c:9834716">tag:google.com,2005:reader/item/f9556101e7768293</id><category term="CLR Binder" scheme="http://blogs.msdn.com/clrteam/archive/tags/CLR+Binder/default.aspx" /><category term="Aarthi Ramamurthy" scheme="http://blogs.msdn.com/clrteam/archive/tags/Aarthi+Ramamurthy/default.aspx" /><title type="html">CLR 4: Making the AssemblyResolve event more useful</title><published>2009-07-15T22:04:00Z</published><updated>2009-07-15T22:04:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/3PsDLEy-h0o/clr-4-making-the-assemblyresolve-event-more-useful.aspx" type="text/html" /><summary xml:base="http://blogs.msdn.com/clrteam/default.aspx" type="html">&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3" face="Calibri"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3" face="Calibri"&gt;In the introductory post on CLR Binder (‘&lt;/font&gt;&lt;a href="http://blogs.msdn.com/clrteam/archive/2009/01/29/understanding-the-binder-part-1.aspx"&gt;&lt;font size="3" face="Calibri"&gt;Understanding the Binder – Part 1&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;’), we listed the set of steps that the CLR Binder follows, in order to locate an assembly and bind to it. On reading this, an obvious question comes to mind. What happens when all of these steps fail to locate the assembly? Does the binder simply quit looking? &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3" face="Calibri"&gt;It eventually does, but not before firing the &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx"&gt;&lt;font size="3" face="Calibri"&gt;AssemblyResolve&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt; event. The user can register an event handler for the AssemblyResolve event and then load the assembly that was intended to be loaded in the first place (or execute some other code appropriately). &lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The AssemblyResolve event itself has been around for a while now. So what’s changed in CLR 4? Prior to CLR 4, if an assembly A has a reference to another assembly B, and an AssemblyResolve event occurs for the referenced assembly (in this case, B), there is no means to know the identity of the parent assembly (or the referencing assembly, or A). &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Why is this problematic? Let’s take this example. Let’s assume that an assembly FirstParent.dll references Child.dll. Let’s also assume SecondParent.dll also references Child.dll. On failing to load Child.dll, AssemblyResolve event is fired. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Now, while loading FirstParent.dll and SecondParent.dll using LoadFile(), an AssemblyResolve event is fired for Child.dll. Looking at the AssemblyResolve event, it is unclear as to which parent assembly actually triggered loading Child.dll. This is not helpful if the user wants to execute different code as a part of the ResolveEventHandler, depending on the parent assembly that caused attempting to load Child.dll. &lt;span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3" face="Calibri"&gt;In CLR 4, the AssemblyResolve event provides richer information that includes the parent assembly’s identity. &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.resolveeventargs_members(VS.100).aspx"&gt;&lt;font size="3" face="Calibri"&gt;System.ResolveEventArgs&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt; now has a property called &lt;b&gt;RequestingAssembly&lt;/b&gt;, which is the assembly which requested the (unsuccessful) load of the child assembly, triggering an AssemblyResolve event. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;With this new property, when AssemblyResolve event is fired, apart from the current assembly (which could not be located by the Binder), the parent assembly is also provided. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Thus, using this property,&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;(a) The user now knows which assembly caused the load event &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;(b) The event handler can now make use of the parent assembly that is passed.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3" face="Calibri"&gt;You can read more about this new property &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.resolveeventargs.requestingassembly(VS.100).aspx"&gt;&lt;font size="3" face="Calibri"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;. &lt;span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3" face="Calibri"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size="3" face="Calibri"&gt; &lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9834716" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/3PsDLEy-h0o" height="1" width="1"/&gt;</summary><author><name>CLRTeam</name></author><gr:likingUser>15471474322263784087</gr:likingUser><gr:likingUser>16950801946615166653</gr:likingUser><gr:likingUser>00984179064965887038</gr:likingUser><source gr:stream-id="feed/http://blogs.msdn.com/clrteam/rss.xml"><id>tag:google.com,2005:reader/feed/http://blogs.msdn.com/clrteam/rss.xml</id><title type="html">CLR Team Blog</title><link rel="alternate" href="http://blogs.msdn.com/clrteam/default.aspx" type="text/html" /></source><feedburner:origLink>http://blogs.msdn.com/clrteam/archive/2009/07/15/clr-4-making-the-assemblyresolve-event-more-useful.aspx</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247691014752"><id gr:original-id="http://tirania.org/blog/archive/2009/Jul-15.html">tag:google.com,2005:reader/item/6a52b183d94cbf5a</id><title type="html">Banshee as a Platform?</title><published>2009-07-16T01:01:00Z</published><updated>2009-07-16T01:01:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/2m5-9uSPYRU/Jul-15.html" type="text/html" /><summary xml:base="http://tirania.org/blog/index.html" type="html">&lt;p&gt;Aaron Bockover recently
	discussed &lt;a href="http://abock.org/2009/07/14/exciting-updates-on-the-road-to-banshee-2-0"&gt;Banshee's
	modular architecture&lt;/a&gt;.   Aaron discusses using Banshee as a
	foundation for managing not only music, and videos but merging
	with F-Spot to manage photos as well:

	&lt;center&gt;
	&lt;img src="http://abock.org/blog-images/gcds-banshee-platform.png"&gt;
	&lt;/center&gt;

	&lt;p&gt;The &lt;a href="http://download.banshee-project.org/documents/banshee-gcds-09.pdf"&gt;slides
	from his talk&lt;/a&gt; go into a bit more detail.

	&lt;p&gt;Jonathan Pobst takes the platform
	idea &lt;a href="http://jpobst.blogspot.com/2009/07/banshee-as-platform.html"&gt;one
	step further&lt;/a&gt; and suggests that Banshee's core could also
	be used to replace YAST's Software Installer UI:

	&lt;center&gt;
	&lt;img src="http://1.bp.blogspot.com/_4IfYnHLEdnY/Slu05q-ZTfI/AAAAAAAAAq0/RNF2e3BYQx4/s400/yastshee1.png"&gt;
	&lt;/center&gt;

	&lt;p&gt;Jonathan says:

	&lt;blockquote&gt;
	Every time I use YaST's Software Manager, I wonder if it would
	be better implemented using Banshee. Banshee's interface has
	been tuned for usability, both on its own, and what it borrows
	from iTunes. Software management is a naturally scary
	operation, and using an interface that the user is already
	familiar with could help reduce user fear.

	&lt;p&gt;Of course, it would just be the interface pieces of Banshee
	in a new app, you wouldn't actually start Banshee for software
	installation.

	&lt;p&gt;Another feature I would like to see taken from
	iTunes/Banshee is downloading/installing in the
	background. Once I hit Install, go ahead and download the
	application in the background, and install it in the
	background. I can click on the "Downloading/Installing.." menu
	item if I want to see what's going on. Most of the time, I'd
	rather be looking at other things to download.
	
	&lt;/p&gt;&lt;/p&gt;&lt;/blockquote&gt;
	
	&lt;p&gt;I think this is a brilliant idea.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/2m5-9uSPYRU" height="1" width="1"/&gt;</summary><author><name>miguel@gnome.org (Miguel de Icaza)</name></author><gr:likingUser>12353501221184647693</gr:likingUser><gr:likingUser>14945023965945085688</gr:likingUser><gr:likingUser>06300323322621469299</gr:likingUser><gr:likingUser>15474578300717451045</gr:likingUser><gr:likingUser>08513793102099923397</gr:likingUser><gr:likingUser>02920638525180409239</gr:likingUser><gr:likingUser>02309822942690320304</gr:likingUser><source gr:stream-id="feed/http://tirania.org/blog/miguel.rss2"><id>tag:google.com,2005:reader/feed/http://tirania.org/blog/miguel.rss2</id><title type="html">Miguel de Icaza</title><link rel="alternate" href="http://tirania.org/blog/index.html" type="text/html" /></source><feedburner:origLink>http://tirania.org/blog/archive/2009/Jul-15.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247690171772"><id gr:original-id="http://www.downloadsquad.com/2009/07/15/open-atrium-customizable-open-source-team-portal/">tag:google.com,2005:reader/item/a25c24ac7f6713b0</id><category term="atrium" /><category term="collaboration" /><category term="intranet" /><category term="open-atrium" /><category term="open-source" /><title type="html">Open Atrium: customizable, open-source team portal</title><published>2009-07-15T20:00:00Z</published><updated>2009-07-15T20:00:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/UGByZHUvZsw/click.phdo" type="text/html" /><summary xml:base="http://www.downloadsquad.com/" type="html">&lt;p&gt;Filed under: &lt;a href="http://www.downloadsquad.com/category/business/" rel="tag"&gt;Business&lt;/a&gt;, &lt;a href="http://www.downloadsquad.com/category/office/" rel="tag"&gt;Office&lt;/a&gt;, &lt;a href="http://www.downloadsquad.com/category/productivity/" rel="tag"&gt;Productivity&lt;/a&gt;, &lt;a href="http://www.downloadsquad.com/category/social-software/" rel="tag"&gt;Social Software&lt;/a&gt;&lt;/p&gt;&lt;a href="http://openatrium.com/"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" alt="" src="http://www.blogcdn.com/www.downloadsquad.com/media/2009/07/openatrium11.jpg"&gt;&lt;/a&gt;&lt;a href="http://openatrium.com/"&gt;Open Atrium&lt;/a&gt; is a new open-source "team portal" that looks like it's going to be running a lot of intranets in the near future. It comes with six basic features: a blog, a wiki, a calendar, a to do list, a shoutbox, and a dashboard. You can also create smaller groups within your team, and they'll each have members-only versions of those features. That's pretty useful, but where Atrium separates itself from the pack of other offerings out there is in the ability to build your own features.&lt;br&gt;&lt;br&gt;It looks like the folks behind Open Atrium are pushing to create a feature-developer community, where people can build and share features for everyone to take advantage of. If you've always felt like every collaboration option out there was missing one feature or another, Atrium might be able to scratch that itch. My favorite basic feature is the iGoogle-like dashboard, which looks like the glue that holds all the other parts together. On the technical side of things, the core of Atrium is Drupal, and also uses PHP, Apache and MySQL.&lt;p style="padding:5px;background:#ddd;border:1px solid #ccc;clear:both"&gt;&lt;a href="http://www.downloadsquad.com/2009/07/15/open-atrium-customizable-open-source-team-portal/"&gt;Open Atrium: customizable, open-source team portal&lt;/a&gt; originally appeared on &lt;a href="http://www.downloadsquad.com"&gt;Download Squad&lt;/a&gt; on Wed, 15 Jul 2009 15:00:00 EST.  Please see our &lt;a href="http://www.weblogsinc.com/feed-terms/"&gt;terms for use of feeds&lt;/a&gt;.&lt;/p&gt;&lt;h6 style="clear:both;padding:8px 0 0 0;height:2px;font-size:1px;border:0;margin:0;padding:0"&gt;&lt;/h6&gt;&lt;a href="http://openatrium.com/"&gt;Read&lt;/a&gt; | &lt;a href="http://www.downloadsquad.com/2009/07/15/open-atrium-customizable-open-source-team-portal/" rel="bookmark" title="Permanent link to this entry"&gt;Permalink&lt;/a&gt; | &lt;a href="http://www.downloadsquad.com/forward/19098400/" title="Send this entry to a friend via email"&gt;Email this&lt;/a&gt; | &lt;a href="http://www.downloadsquad.com/2009/07/15/open-atrium-customizable-open-source-team-portal/#comments" title="View reader comments on this entry"&gt;Comments&lt;/a&gt;&lt;br style="clear:both"&gt;
&lt;br style="clear:both"&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:30dae610a536f4a5a0ccb3e2a2439dac:%2Fu7pA%2B%2FInTksLYr88y0GpEdJ66LbIqkw9Hr1%2BTdhOd%2FBWqGRyBmG54%2FYugAVJj42nGLSS9e8r6%2Fv"&gt;&lt;img border="0" title="Add to digg" alt="Add to digg" src="http://images.pheedo.com/images/mm/digg.gif"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:2c89567dd66b15b9a76f920ac1b092f5:eEopqcM6owABNohQDp61zI%2B28VTHPlW73mnKHjRxE8kCRuJ5cSZxdJErO48uTO7noczyTQmDOEzj"&gt;&lt;img border="0" title="Add to del.icio.us" alt="Add to del.icio.us" src="http://images.pheedo.com/images/mm/delicious.gif"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:423f7ffb54dc8f615a00ee3e0f12578f:MUh9Yz2r36X40shMaJzuaUvQSiqGDOhwZGSwnQ%2FLW9GX%2FkHAZZ3nt867PcLmw3EIcHC%2B8azRycWy"&gt;&lt;img border="0" title="Add to Google" alt="Add to Google" src="http://images.pheedo.com/images/mm/google.png"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:56dddef534be165a7a6369ce5cd0fb4d:QK3C2GCokf9dV6o%2F5lEEGWyTp25m0rBK8SlKGq0eC07xa7OmNYfDVBk2qclMNkDNgUfVTHJEZigcpw%3D%3D"&gt;&lt;img border="0" title="Add to StumbleUpon" alt="Add to StumbleUpon" src="http://images.pheedo.com/images/mm/stumbleit.gif"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:3a647c98d5054534f0e8cc5970d07f35:jtWld%2BuMIZ3vmMv0pjabd1qU4bcw4Ix2Cbxbf%2BUXIFGrqaFbpCYtP8qczN66ahVHLJNGakddF9Kpsg%3D%3D"&gt;&lt;img border="0" title="Add to Facebook" alt="Add to Facebook" src="http://images.pheedo.com/images/mm/facebook.gif"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:1741b113333c5a6b0d563e629d7a44a2:D1joQn%2BNhDwQ3dJVvoVAZgZabn81MKUqCGGo5hGOjud00QXWbvv9KP%2Bm%2F2c5C5GsJv9k1tNq%2Bwl9"&gt;&lt;img border="0" title="Add to Reddit" alt="Add to Reddit" src="http://images.pheedo.com/images/mm/reddit.png"&gt;&lt;/a&gt;
  &lt;a style="font-size:10px;color:maroon" href="http://www.pheedcontent.com/hostedMorselClick.php?hfmm=v3:7da75e2f5eca83dcc89a81042b585724:%2Fgu6zVokSVLIgx8g38AXFQxCMSw4lGQ3MJXObsfS415Ch6cz4T7mVA1jzlfJ1U6R4HAbgK9TbJEz1g%3D%3D"&gt;&lt;img border="0" title="Add to Technorati" alt="Add to Technorati" src="http://images.pheedo.com/images/mm/technorati.png"&gt;&lt;/a&gt;
&lt;br style="clear:both"&gt;
&lt;a href="http://ads.pheedo.com/click.phdo?s=e4d760eba842a9f09ecb90852769748a&amp;amp;p=1"&gt;&lt;img alt="" style="border:0" border="0" src="http://ads.pheedo.com/img.phdo?s=e4d760eba842a9f09ecb90852769748a&amp;amp;p=1"&gt;&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/UGByZHUvZsw" height="1" width="1"/&gt;</summary><author><name>Jay Hathaway</name></author><gr:likingUser>15871664589952411833</gr:likingUser><gr:likingUser>14652674580770775143</gr:likingUser><gr:likingUser>09876117107540290209</gr:likingUser><gr:likingUser>03847000793701479270</gr:likingUser><gr:likingUser>14856799135878388959</gr:likingUser><gr:likingUser>01599687593580997417</gr:likingUser><gr:likingUser>16485927243553647209</gr:likingUser><gr:likingUser>12176367837166605458</gr:likingUser><gr:likingUser>01783509113979006270</gr:likingUser><gr:likingUser>16578119791009851968</gr:likingUser><gr:likingUser>06780156327021571831</gr:likingUser><gr:likingUser>01254742584981095094</gr:likingUser><source gr:stream-id="feed/http://www.downloadsquad.com/rss.xml"><id>tag:google.com,2005:reader/feed/http://www.downloadsquad.com/rss.xml</id><title type="html">Download Squad</title><link rel="alternate" href="http://www.downloadsquad.com" type="text/html" /></source><feedburner:origLink>http://www.pheedcontent.com/click.phdo?i=e4d760eba842a9f09ecb90852769748a</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247685084233"><id gr:original-id="http://www.markhneedham.com/blog/?p=1391">tag:google.com,2005:reader/item/46cda08d19cde32a</id><title type="html">Mark Needham: F#: What I've learnt so far</title><published>2009-06-30T13:09:35Z</published><updated>2009-06-30T13:09:35Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/is-7h98zK6Q/" type="text/html" /><summary xml:base="http://blogs.thoughtworks.com/" type="html">&lt;p&gt;I did a presentation of some of the stuff that I've learnt from playing around with F# over the last six months or so at the most recent &lt;a href="http://sydney.ozalt.net/2009/05/june-meeting-f.html"&gt;Alt.NET Sydney meeting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've included the slides below but there was also some interesting discussion as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One of the questions asked was around how you would deal with code on a real project with regards to structuring it and ensuring that it was maintainable. I'm not actually sure what the answer is to this question as I haven't written any code in F# that's in production but there are certainly applications written n F# that are in production - the main one that I know a bit about is one which &lt;a href="http://pandamonial.com/"&gt;Amanda Laucher&lt;/a&gt; worked on &lt;a href="http://vimeo.com/3555080"&gt;which she spoke about at the Alt.NET conference in Seattle&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;There was some discussion about dynamic v static languages - &lt;a href="http://fragmental.tw/"&gt;Phil&lt;/a&gt; spoke of not caring about what type something is rather caring about what it does. I pretty much agree with this and I think when using languages which have quite strong type inference such as F# (and more-so Haskell from what I hear) then I think we do move more towards that situation. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://erik.doernenburg.com"&gt;Erik&lt;/a&gt; raised the point that functional languages aren't the solution for everything and I certainly feel it's niche is probably around operations with heavy data parsing/mining involved. I'm not sure I'd fancy doing an ASP.NET MVC application only in F# although I've seen some WPF code written using F# (unfortunately can't remember where) which looked reasonable so I'm not sure we should write it off just yet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I've put the code that I walked through in the presentation on &lt;a href="http://bitbucket.org/markhneedham/altnet-sydney-fsharp/changeset/dfcbc2acf486/"&gt;bitbucket&lt;/a&gt;.&lt;/p&gt;
&lt;div style="width:425px;text-align:left"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline" href="http://www.slideshare.net/markhneedham/f-what-ive-learnt-so-far?type=presentation" title="F#: What I&amp;#39;ve learnt so far"&gt;F#: What I've learnt so far&lt;/a&gt;
&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px"&gt;View more &lt;a style="text-decoration:underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline" href="http://www.slideshare.net/markhneedham"&gt;markhneedham&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/MarkNeedham/~4/oMi5qerZzXw" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/is-7h98zK6Q" height="1" width="1"/&gt;</summary><author gr:unknown-author="true"><name>(author unknown)</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/PlanetTw"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/PlanetTw</id><title type="html">Planet TW</title><link rel="alternate" href="http://blogs.thoughtworks.com/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/PlanetTw/~3/gA2zVR2o3pw/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247682515910"><id gr:original-id="http://jrothman.com/blog/mpd/?p=8782">tag:google.com,2005:reader/item/f3d576c88f160022</id><category term="agile" /><category term="project management" /><title type="html">Small Steps Are Good; Be Careful What You Call Those Steps</title><published>2009-07-14T20:56:03Z</published><updated>2009-07-14T20:56:03Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/ARGOReadings/~3/e62jVX3Di90/small-steps-are-good-be-careful-what-you-call-those-steps.html" type="text/html" /><content xml:base="http://jrothman.com/blog/mpd" type="html">&lt;p&gt;I love it when my readers challenge what I’m saying, as in  &lt;a href="http://jrothman.com/blog/mpd/2009/07/plunge-in-or-dip-your-toe-for-projects.html"&gt;Plunge In or Dip Your Toe? (for Projects).&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I do believe in small steps for projects. I’ve long been an advocate of inch-pebbles, of standup meetings, of iterations and incremental development. I love knowing what done means, for the project and for features inside a project. You don’t have to be agile to use those ideas.&lt;/p&gt;
&lt;p&gt;The idea I was *trying* to get across is that if you &lt;strong&gt;call&lt;/strong&gt; something agile, please make it agile. If you dip your toe into it, you have not made the commitment. If you vary your timeboxes depending on whether you finish work in the timebox, that’s not agile; that’s incremental development. You can say, “We’re experimenting with incremental development. We choose to  vary the length of the timebox so we can practice getting to done. Maybe after we practice it for a while, we’ll fix our timeboxes and see how that works.”&lt;/p&gt;
&lt;p&gt;That’s perfectly reasonable. I encourage you to do so, if you haven’t tried incremental development yet. But don’t call it agile. It’s not.&lt;/p&gt;
&lt;p&gt;The idea of plunging or toe-dipping for some of my clients is about management’s expectations. “We paid for this 2-day workshop last week. Why aren’t you agile now??” is a more typical management reaction (which is why I have a draft about what management needs to do).&lt;/p&gt;
&lt;p&gt;Maybe I’m too particular about what I like to call things. But if you’re toe-dipping, say you are. If you’ve moved to something, such as agile, commit to the principles and practices that make it up. But don’t call it agile if all you do is continuous integration. If you’ve never done continuous integration before, congratulations! You’ll never go back &lt;img src="http://jrothman.com/blog/mpd/wp-includes/images/smilies/icon_smile.gif" alt=":-)"&gt;  But continuous integration by itself is not agile. I know of many successful waterfall projects who used continuous integration (merging the coding and integration phases) who would never claim to be agile, but used that practice because it fit for them.&lt;/p&gt;
&lt;p&gt;Baby steps for change is a good idea. It’s difficult (impossible?) to make a wholesale change. Taking baby steps, trying them out, seeing what works is a great idea. Just be careful what you call it. If you’re not doing it all, you’re not agile. You are making changes. You are likely making it better. In my experience, at some point, you will need to make the plunge. At that point, commit and plunge. Just don’t call it agile until you make that plunge.&lt;/p&gt;
&lt;p align="left"&gt;&lt;a href="http://twitter.com/home/?status=Small+Steps+Are+Good%3B+Be+Careful+What+You+Call+Those+Steps+http://pgmf5.th8.us" title="Post to Twitter"&gt;&lt;img src="http://jrothman.com/blog/mpd/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="[Post to Twitter]" border="0"&gt;&lt;/a&gt; &lt;a href="http://twitter.com/home/?status=Small+Steps+Are+Good%3B+Be+Careful+What+You+Call+Those+Steps+http://pgmf5.th8.us" title="Post to Twitter"&gt;Tweet This Post&lt;/a&gt;  &lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=1kls3ilGlOE:MDifJYrnt2A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=1kls3ilGlOE:MDifJYrnt2A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=1kls3ilGlOE:MDifJYrnt2A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=1kls3ilGlOE:MDifJYrnt2A:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=1kls3ilGlOE:MDifJYrnt2A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=1kls3ilGlOE:MDifJYrnt2A:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=1kls3ilGlOE:MDifJYrnt2A:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=1kls3ilGlOE:MDifJYrnt2A:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/1kls3ilGlOE" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/e62jVX3Di90" height="1" width="1"/&gt;</content><author><name>johanna</name></author><source gr:stream-id="feed/http://www.jrothman.com/weblog/RSS/mpdblogger_rss.xml"><id>tag:google.com,2005:reader/feed/http://www.jrothman.com/weblog/RSS/mpdblogger_rss.xml</id><title type="html">Managing Product Development</title><link rel="alternate" href="http://jrothman.com/blog/mpd" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/ManagingProductDevelopment/~3/1kls3ilGlOE/small-steps-are-good-be-careful-what-you-call-those-steps.html</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-15 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ARGOReadings/~3/wwWVX1IK7QA/arnonrgo" /><updated>2009-06-16T00:00:00-07:00</updated><id>http://del.icio.us/arnonrgo#2009-06-15</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://martinfowler.com/articles/rubyAtThoughtWorks.html"&gt;Ruby at ThoughtWorks&lt;/a&gt;&lt;br/&gt;
Martin Fowler summarizes ThoughtWorks experience in 41 ruby projects&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/wwWVX1IK7QA" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/arnonrgo#2009-06-15</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-06 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ARGOReadings/~3/m2ZWyevM7sk/arnonrgo" /><updated>2009-06-07T00:00:00-07:00</updated><id>http://del.icio.us/arnonrgo#2009-06-06</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/"&gt;Gojko Adzic &amp;raquo; Oracle Coherence vs Gigaspaces XAP&lt;/a&gt;&lt;br/&gt;
datagrid options&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/m2ZWyevM7sk" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/arnonrgo#2009-06-06</feedburner:origLink></entry><entry><title type="text">Links for 2009-05-29 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ARGOReadings/~3/XmFaY49_CzM/arnonrgo" /><updated>2009-05-30T00:00:00-07:00</updated><id>http://del.icio.us/arnonrgo#2009-05-29</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.julianbrowne.com/article/viewer/soa-myths"&gt;SOA Myth and Mystery&lt;/a&gt;&lt;br/&gt;
Nice article (from 2007) on myths and rules for SOA&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.crisp.se/futureofagile/slides/henrikkniberg"&gt;Scrum vs. Kanban&lt;/a&gt;&lt;br/&gt;
A comparison&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/XmFaY49_CzM" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/arnonrgo#2009-05-29</feedburner:origLink></entry><entry><title type="text">Links for 2009-05-09 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ARGOReadings/~3/POhOqmKlTWY/arnonrgo" /><updated>2009-05-10T00:00:00-07:00</updated><id>http://del.icio.us/arnonrgo#2009-05-09</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://bitworking.org/news/428/the-lack-of-design-patterns-in-python-pycon-2009"&gt;The (lack of) design patterns in Python - PyCon 2009&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://highscalability.com/dyradlinq"&gt;DyradLINQ&lt;/a&gt;&lt;br/&gt;
MS research project for distributing linq queries&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/POhOqmKlTWY" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/arnonrgo#2009-05-09</feedburner:origLink></entry><entry><title type="text">Links for 2009-05-06 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ARGOReadings/~3/SY2zHtsiCGM/arnonrgo" /><updated>2009-05-07T00:00:00-07:00</updated><id>http://del.icio.us/arnonrgo#2009-05-06</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.eoinwoods.info/index.php?page=articles"&gt;eoinwoods.info - Articles&lt;/a&gt;&lt;br/&gt;
Articles by Eoin Woods&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/SY2zHtsiCGM" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/arnonrgo#2009-05-06</feedburner:origLink></entry><entry><title type="text">Links for 2009-05-02 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ARGOReadings/~3/UdETkYad8sI/arnonrgo" /><updated>2009-05-03T00:00:00-07:00</updated><id>http://del.icio.us/arnonrgo#2009-05-02</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://tech.groups.yahoo.com/group/ambysoft/message/247"&gt;Agile Videos with Grady Booch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblogs.asp.net/cibrax/archive/2009/04/22/openrasta-an-open-source-alternative-for-developing-restful-services.aspx"&gt;OpenRasta, an open source alternative for developing Restful services&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/UdETkYad8sI" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/arnonrgo#2009-05-02</feedburner:origLink></entry><entry><title type="text">Links for 2009-04-18 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ARGOReadings/~3/5xQrbWOAfgM/arnonrgo" /><updated>2009-04-19T00:00:00-07:00</updated><id>http://del.icio.us/arnonrgo#2009-04-18</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://testobsessed.com/wordpress/wp-content/uploads/2007/02/testheuristicscheatsheetv1.pdf"&gt;Test Heuristics cheat sheet&lt;/a&gt;&lt;br/&gt;
List of things to test on various contexts&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ARGOReadings/~4/5xQrbWOAfgM" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/arnonrgo#2009-04-18</feedburner:origLink></entry></feed>
