<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8050462</id><updated>2012-01-06T10:02:09.469-06:00</updated><category term='images'/><category term='acceptance testing'/><category term='estimating'/><category term='testing selenium webrat'/><category term='wiki'/><category term='atdd agile'/><category term='watin'/><category term='standups'/><category term='news'/><category term='tool'/><category term='principals'/><category term='selenium'/><category term='photos'/><category term='links'/><category term='pairing'/><category term='toilet paper'/><category term='agile atdd'/><category term='agile'/><category term='best practice'/><category term='testing agile practices'/><category term='integration testing'/><category term='kanban'/><category term='news soa'/><category term='fun'/><category term='xp'/><category term='innovations'/><category term='announcements'/><title type='text'>Asynchrony Community Blog</title><subtitle type='html'>This is a blog set up for Asynchrony employees, contractors and clients.  Views expressed here are not the views of Asynchrony Solutions, Inc. and are the personal expressions of their creators.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default?start-index=101&amp;max-results=100'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>147</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8050462.post-1222344237966274352</id><published>2009-12-29T12:51:00.002-06:00</published><updated>2009-12-29T13:00:07.922-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Transitioning From Matt to Steve</title><content type='html'>&lt;a href="http://www.flickr.com/photos/fourworlds/4225450005/" title="Matt to Steve by daveelf, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4059/4225450005_ff815e06a2_o.gif" width="295" height="366" alt="Matt to Steve" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Animation might take a few seconds to load.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1222344237966274352?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1222344237966274352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1222344237966274352' title='45 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1222344237966274352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1222344237966274352'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/12/transitioning-from-steve-to-matt.html' title='Transitioning From Matt to Steve'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>45</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-7661871080032609474</id><published>2009-02-13T10:20:00.002-06:00</published><updated>2009-02-13T10:36:50.272-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Link Roundup</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://xprogramming.com/blog/2009/02/01/quality-speed-tradeoff-youre-kidding-yourself/"&gt;Quality-Speed Tradeoff — You’re kidding yourself&lt;/a&gt;: Ron Jeffries on the quality vs. speed argument&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tecnicadelpomodoro.it/docs/francesco-cirillo/2007/ThePomodoroTechnique_v1-3.pdf"&gt;The Pomodoro Technique&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://agileinaflash.blogspot.com/"&gt;Agile in a Flash&lt;/a&gt;: Agile Reference in the form of flashcards, with explanations and comments&lt;/li&gt;&lt;li&gt;&lt;a href="http://wolfbyte-net.blogspot.com/2009/01/clean-code-developer-grades-black.html"&gt;Clean Code Grades&lt;/a&gt;: Clean Code Developer Grade system is a graduated collection of principles, rules and practices which a software professional can use to produce "cleaner" code. It is based partly on the contents of the book Clean Code by Robert C. Martin.  &lt;/li&gt;&lt;li&gt;&lt;a href="http://availagility.wordpress.com/2008/10/28/kanban-flow-and-cadence/"&gt;Kanban, Flow and Cadence&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adaptivepath.com/blog/2009/02/03/burndowns-and-flareups-in-agile-design/"&gt;Burndowns and Flareups in Agile Design&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-7661871080032609474?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/7661871080032609474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=7661871080032609474' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/7661871080032609474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/7661871080032609474'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/02/link-roundup.html' title='Link Roundup'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-5816075980868139945</id><published>2009-01-30T17:05:00.000-06:00</published><updated>2009-01-30T17:09:50.307-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Link roundup</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://gojko.net/2009/01/26/announcing-trinidad-in-process-test-runner-for-fitnesse-wiki-pages/"&gt;Announcing Trinidad: In-process test runner for FitNesse wiki pages&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.oreillynet.com/ruby/blog/2008/03/cruisecontrol_charts.html"&gt;Rake Stats&lt;/a&gt;: How to log Rails 'rake stats' command output over time and add extensions to it into CruiseControl&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Clarke Ching's &lt;a href="http://www.rocksintogold.com/"&gt;"Rocks into Gold"&lt;/a&gt;: a biztech parable for software developers who want to Survive - and then Thrive – through the Credit Crunch.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/478106/Hiring_Software_Developers_The_Agile_Aptitude_Test"&gt;Hiring Software Developers: The Agile Aptitude Test&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.information-age.com/channels/development-and-integration/perspectives-and-trends/989977/agile-payback.thtml"&gt;Agile Payback&lt;/a&gt;: The adoption of agile programming methods has proved one of the most effective and popular strategies of the past year&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.exampler.com/blog/2007/11/06/latour-3-anthrax-and-standups/"&gt;Anthrax and Standups&lt;/a&gt;: Slightly old but relevant post from Brian Marick on story-based standups&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.techdarkside.com/playgrounds-a-thought-on-testing"&gt;Playgrounds &amp;amp; a Thought on Testing&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-5816075980868139945?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/5816075980868139945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=5816075980868139945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/5816075980868139945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/5816075980868139945'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/link-roundup_30.html' title='Link roundup'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-7392088709426587816</id><published>2009-01-29T08:00:00.001-06:00</published><updated>2009-01-29T08:00:00.389-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>Asynchrony honorably mentioned as Great Place to Work</title><content type='html'>St. Louis Magazine has an article that notes something that those of us who work at Asychrony already knew: Asynchrony is a great place to work. We received an honorable mention in the publication's &lt;a href="http://www.stlmag.com/media/St-Louis-Magazine/January-2009/Great-Places-to-Work/"&gt;January issue highlighting the area's Great Places to Work&lt;/a&gt;. Sure, our "Employees play Halo on two 40-inch TVs," but we're got several of the other perks that other companies have, and some that they don't. Like flexible childcare, pet-friendliness, FFASHH, and, of course, the free lunches. That chinese food in the first-floor refrigerator &lt;span class="Apple-style-span" style="font-style: italic;"&gt;was &lt;/span&gt;for everyone, right?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-7392088709426587816?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/7392088709426587816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=7392088709426587816' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/7392088709426587816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/7392088709426587816'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/asynchrony-honorably-mentioned-as-great.html' title='Asynchrony honorably mentioned as Great Place to Work'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-34776703258508941</id><published>2009-01-28T10:00:00.003-06:00</published><updated>2009-01-28T10:06:14.846-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news soa'/><title type='text'>Defense Systems highlights Asynchrony's SOA work at USTRANSCOM</title><content type='html'>&lt;a href="http://defensesystems.com/articles/2009/01/22/transcom-begins-transition-to-soa.aspx"&gt;Defense Systems magazine had a good article&lt;/a&gt; about Asynchrony's SOA work at USTRANSCOM. Here's a snippet with a quote from Steve:&lt;div&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The prescriptive architecture is due for delivery in the fall of 2009, said Steve Elfanbaum, Asynchrony’s president. But it won’t take the full length of the contract for new Web-based capabilities to come out, or for the transition architecture to be fully defined.&lt;/p&gt; &lt;p&gt; &lt;/p&gt;&lt;p&gt;“People (in USTRANSCOM) are already clamoring for new services and want to use what we have now,” he said. “So as things come out of this process, as the various templates and standards fall out, we’ll start to use those as soon as we can.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;That's textbook agile philosophy, providing value as soon as possible. Who says government contracts can't be done agilely (or at least more agilely)?&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-34776703258508941?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/34776703258508941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=34776703258508941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/34776703258508941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/34776703258508941'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/defense-systems-highlights-asynchronys.html' title='Defense Systems highlights Asynchrony&apos;s SOA work at USTRANSCOM'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-2075319805618340342</id><published>2009-01-26T19:53:00.000-06:00</published><updated>2009-01-26T19:53:00.108-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Link roundup</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://johnwilger.com/2009/01/13/retro-facilitation.html?disqus_reply=5107401"&gt;Retrospective facilitation&lt;/a&gt; -- John Wilger&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.thepmpodcast.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=220&amp;amp;Itemid=9"&gt;Kanban introduction&lt;/a&gt; -- Eric Landes (podcast)&lt;/li&gt;&lt;li&gt;&lt;a href="http://xndev.blogspot.com/2009/01/this-is-how-we-do-it.html"&gt;"How we develop software at Socialtext"&lt;/a&gt; (video)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.alistapart.com/articles/gettingrealaboutagiledesign"&gt;Getting Real About Agile Design&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.flashbulbinteraction.com/WTS_opening.html"&gt;Working through Screens&lt;/a&gt; (ebook on user interaction)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codegreenlabs.com/"&gt;Agile Philanthropy&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-2075319805618340342?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/2075319805618340342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=2075319805618340342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2075319805618340342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2075319805618340342'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/link-roundup_26.html' title='Link roundup'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-7020554301499937758</id><published>2009-01-21T15:28:00.004-06:00</published><updated>2009-01-21T15:40:08.835-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='innovations'/><title type='text'>Environmentally friendly, reusable story cards</title><content type='html'>Besides conversation, nothing beats the tactile, low-fi index card for communicating story information. And for environmentally friendly story cards, nothing beats this invention (well, we're not really sure it's an invention in the strictest sense) by Asynchronite Dan King: The Lamindex Story Card. As the name implies, it's a laminated index card that can be used and reused for countless stories and countless projects.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QmOsFQJoLLQ/SXeWC2Tt-TI/AAAAAAAAACI/ZCjMVCR6PTw/s1600-h/lamindex-wipe.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 324px;" src="http://2.bp.blogspot.com/_QmOsFQJoLLQ/SXeWC2Tt-TI/AAAAAAAAACI/ZCjMVCR6PTw/s400/lamindex-wipe.jpg" alt="" id="BLOGGER_PHOTO_ID_5293864862679431474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QmOsFQJoLLQ/SXeV94Jy4MI/AAAAAAAAACA/OWdgtF77uuY/s1600-h/lamindex-blank.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 305px;" src="http://3.bp.blogspot.com/_QmOsFQJoLLQ/SXeV94Jy4MI/AAAAAAAAACA/OWdgtF77uuY/s400/lamindex-blank.jpg" alt="" id="BLOGGER_PHOTO_ID_5293864777275334850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QmOsFQJoLLQ/SXeV4Ch15AI/AAAAAAAAAB4/ELXdmSj1Hbw/s1600-h/lamindex.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 334px; height: 400px;" src="http://3.bp.blogspot.com/_QmOsFQJoLLQ/SXeV4Ch15AI/AAAAAAAAAB4/ELXdmSj1Hbw/s400/lamindex.jpg" alt="" id="BLOGGER_PHOTO_ID_5293864676981335042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;They're relatively cheap to make (just go to Kinko's if you don't have your own laminator or teacher friend), though Dan advises getting the "special kind" of laminate for easy cleaning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-7020554301499937758?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/7020554301499937758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=7020554301499937758' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/7020554301499937758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/7020554301499937758'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/environmentally-friendly-reusable-story.html' title='Environmentally friendly, reusable story cards'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QmOsFQJoLLQ/SXeWC2Tt-TI/AAAAAAAAACI/ZCjMVCR6PTw/s72-c/lamindex-wipe.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-1137238168437226682</id><published>2009-01-09T17:22:00.002-06:00</published><updated>2009-01-09T17:31:09.483-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='toilet paper'/><title type='text'>The Toilet Paper (Installment 25): Single-Responsibility Principle (SOLID, part 2)</title><content type='html'>&lt;span style="font-style: italic;"&gt;A class should have exactly one reason to change&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Single-Responsibility Principle (SRP) helps you create classes that are resilient in the face of requirements changes. Put more simply, the SRP guides you in creating individual classes that are highly focused on a single implementation concept, so that each individual class is less likely to be affected by each requirements change. Each class is very limited in what it knows how to do and what it knows about, so an individual requirement change is less likely to affect that class. As a result, classes that change less often and accumulate less code are less likely to accumulate bugs as well. They can be tested thoroughly and raise the overall quality of your application.&lt;br /&gt;&lt;br /&gt;Let's look at an example. Suppose we have a Product class that models information and behavior associated with some widget we're selling. It might look something like this:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;public class Product {&lt;br /&gt; public String Name { get; private set; }&lt;br /&gt; public String Sku { get; private set; }&lt;br /&gt; public Money ShippingCharges(Destination dest) {…}&lt;br /&gt; public Money CalculateDiscount(Contract contract){…}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Assuming that the implementations of how to calculate shipping charges and discounts are inside both of those methods, this class clearly has multiple responsibilities – three, in fact. First, it models a product, which has properties, shipping charges and discounts. But this class also charges shipping and calculates discounts. This may not seem that important, but it means that this particular class is harder to understand and changes more often than would otherwise be necessary. The biggest shortcoming, however, is that the logic for these calculations is hidden inside the Product class, making these non-trivial bits of code harder to find and harder to test independently.&lt;br /&gt;&lt;br /&gt;To solve this, refactor this class so that it delegates the responsibility of how doing the calculations are done to two other, more specialized classes, such as ShippingChargeCalculator and PriceDiscounter. That would leave you with three classes, each of which has one reason to change, decreasing the complexity of the system and increasing maintainability, flexibility, and testability.&lt;br /&gt;&lt;br /&gt;You can find much more on the SRP on Google. Try searching for "&lt;a href="http://www.google.com/search?q=ActiveRecord+Single-Responsibility+Principle&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;ActiveRecord Single-Responsibility Principle&lt;/a&gt;" for hours of enjoyment!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1137238168437226682?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1137238168437226682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1137238168437226682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1137238168437226682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1137238168437226682'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/toilet-paper-installment-25-single.html' title='The Toilet Paper (Installment 25): Single-Responsibility Principle (SOLID, part 2)'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-1793422959025928058</id><published>2009-01-07T14:31:00.000-06:00</published><updated>2009-01-07T14:32:07.975-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Link roundup</title><content type='html'>Product Ownership&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.rgalen.com/publications.html"&gt;Becoming a Great Scrum Product Owner (eBook)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Testing&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.acceptancetesting.info/the-book/"&gt;Bridging the Communication Gap: Specification by Example and Agile Acceptance Testing&lt;/a&gt; (book)&lt;/li&gt;&lt;li&gt;&lt;a href="http://jnarrate.org/"&gt;JNarrate&lt;/a&gt;: Tool that allows you to write acceptance tests with code using a fluent API&lt;/li&gt;&lt;li&gt;&lt;a href="http://craftingsw.blogspot.com/"&gt;Craft of Software blog&lt;/a&gt;: Matt Heusser's new blog for testers&lt;/li&gt;&lt;li&gt;&lt;a href="http://groups.google.com/group/software_craftsmanship"&gt;Software Craftsmanship&lt;/a&gt;: Google group&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Best Practices&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.se-radio.net/podcast/2008-07/episode-105-retrospectives-linda-rising"&gt;Linda Rising podcast on Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://availagility.wordpress.com/2008/08/28/kanban-and-retrospectives/"&gt;Kanban and Retrospectives&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Agile&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/Media/Video/"&gt;“Seven Years Later: What the Agile Manifesto Left Out”&lt;/a&gt; presentation by Brian Marick at Agile Development Practices &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1793422959025928058?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1793422959025928058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1793422959025928058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1793422959025928058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1793422959025928058'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/link-roundup.html' title='Link roundup'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-2276661538448510397</id><published>2009-01-05T17:03:00.009-06:00</published><updated>2009-01-07T12:18:30.999-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='images'/><category scheme='http://www.blogger.com/atom/ns#' term='principals'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>Asynchrony Principals Aging Like Fine Wine</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a href="http://www.flickr.com/photos/27180696@N02/3172247272/" title="We Get Better Looking Each Day by daveelf, on Flickr"&gt;&lt;img src="http://farm2.static.flickr.com/1016/3172247272_281da60ef1.jpg" alt="We Get Better Looking Each Day" height="500" width="365" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;First image is from around the time of our 1999 start-up. The second is the 2009 version.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-2276661538448510397?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/2276661538448510397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=2276661538448510397' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2276661538448510397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2276661538448510397'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/asynchrony-principles-aging-like-fine.html' title='Asynchrony Principals Aging Like Fine Wine'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1016/3172247272_281da60ef1_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-4773179742567235032</id><published>2009-01-01T10:40:00.011-06:00</published><updated>2009-01-01T11:29:40.264-06:00</updated><title type='text'>Using JavaScript to check if an image is loaded</title><content type='html'>I had an interesting problem the other day. The project I'm on is a real estate listing website. It's very &lt;a href="http://en.wikipedia.org/wiki/Web_2.0"&gt;Web 2.0&lt;/a&gt;, using AJAX calls to provide the user with a rich experience. We use the &lt;a href="http://www.prototypejs.org/"&gt;Prototype Library&lt;/a&gt; for all our AJAX calls and DOM manipulation.  &lt;br /&gt;&lt;br /&gt;So the problem came about with the enlarged photo browsing portion of the site. Each listing has at least one photo associated with it. If the listing has more than one photo, then the user can browse through the photo with simple NEXT &amp; PREVIOUS links. Under the scene, when the user presses one of the links we make a simple AJAX call to load the next image and swap out the div the image belongs to.&lt;br /&gt;&lt;br /&gt;The problem came about when we were testing in IE. The footer would sometimes appear right over the image. IE wasn't recognizing that one of the div elements was supposed to grow to match the size of the image inside it.  The simple fix was to set the Height of the problem div to the Height of the child div that is holding the image. To do this all I had to do was call this method in the "onComplete" section of my AJAX call.&lt;br /&gt;&lt;br /&gt;This worked in most cases but there were still times when the footer tag would appear in the middle.  With the help of &lt;a href="http://getfirebug.com/lite.html"&gt;firebug lite&lt;/a&gt;, and Nate Young, I realized that my method was being called before the image was finished loading. The solution was loading the image and checking the &lt;a href="http://www.devguru.com/Technologies/Ecmascript/Quickref/image.html"&gt;"complete"&lt;/a&gt; on the image object.  If the image isn't finished, just make a simple recursive call. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;function moveFooter(){&lt;br /&gt;  if ($('enlargedImageDiv') &amp;amp;&amp;amp; $('imageContainer')){&lt;br /&gt;    var image = &lt;br /&gt;      new Image($('imageContainer').siblings[0]);&lt;br /&gt;    if(image.complete) {&lt;br /&gt;      Element.setStyle($('enlargedImageDiv'), {&lt;br /&gt;        height:$('imageContainer').getHeight()+41&lt;br /&gt;      });&lt;br /&gt;    }else{&lt;br /&gt;      moveFooter()&lt;br /&gt;    } &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-4773179742567235032?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/4773179742567235032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=4773179742567235032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/4773179742567235032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/4773179742567235032'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2009/01/using-javascript-oncomplete-to-check-if.html' title='Using JavaScript to check if an image is loaded'/><author><name>Eric Neunaber</name><uri>http://www.blogger.com/profile/18394319456644274008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-1665124807222439808</id><published>2008-12-31T14:20:00.003-06:00</published><updated>2008-12-31T14:27:49.108-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='estimating'/><category scheme='http://www.blogger.com/atom/ns#' term='best practice'/><title type='text'>Is estimating a bad practice?</title><content type='html'>&lt;a href="http://blogs.agilefaqs.com/2008/12/25/estimation-considered-harmful/"&gt;According to Naresh Jain&lt;/a&gt;, writing in response to a &lt;a href="http://www.linkedin.com/e/ava/828175/37631/add-qa-disc-0Qt79xs2RVr6JBpnsJt7dBpSBA/"&gt;LinkedIn Agile Alliance discussion&lt;/a&gt;, it is:&lt;br /&gt;&lt;blockquote&gt;Estimates are a hang-over from the waterfall world. For the last 6 years, I’ve been very happy and successful building products and delivering projects without all the estimation related ab-ra-ca-dab-ra. No more real-time, ideal-time, story point, function point; non-sense. I’ve realized the key is to focus on the flow of the deliverable and not whether your are delivering according to the estimates.&lt;/blockquote&gt;He goes on to make a pretty compelling case for the abolition of estimates (he provides some useful back-and-forth with his detractors in the comments, too). Since some of our teams have started down the kan-ban path, it would be interesting to know how much of our experience squares with Jain's claims.&lt;br /&gt;&lt;br /&gt;Jain also references &lt;a href="http://submissions.agile2008.org/node/4804"&gt;Joshua Kerievsky's Agile 2008 presentation&lt;/a&gt; on the same topic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1665124807222439808?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1665124807222439808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1665124807222439808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1665124807222439808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1665124807222439808'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/is-estimating-bad-practice.html' title='Is estimating a bad practice?'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6742401550926039123</id><published>2008-12-30T12:33:00.003-06:00</published><updated>2008-12-30T12:46:46.619-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='atdd agile'/><title type='text'>An acceptance-test development approach by any other name would smell as sweet</title><content type='html'>Gaffo forwarded this snippet from the &lt;a href="http://www.blogger.com/rspec-users@rubyforge.org"&gt;RSpec users list&lt;/a&gt; in response to the question "Is there a difference between Behaviour-Driven-Development and Story-Driven-Development?":&lt;br /&gt;&lt;blockquote&gt;Excellent question,&lt;br /&gt;&lt;br /&gt;I think the more common term is STDD (Story Test Driven Development). There is ATDD (Acceptance-Test Driven Development too) ;-)&lt;br /&gt;&lt;br /&gt;They are all variations on the same theme and only marginally different IMO. The biggest difference seems to be that different people and groups promote them and talk about them in slightly different ways, and emphasise the various techniques differently. My personal take is that BDD *is* ATDD/STDD, but with an additional emphasis on Business value and getting the words right. I'm not sure how ATDD and STDD are different.&lt;br /&gt;&lt;br /&gt;Maybe the best place to get a good balance of viewpoints on this topic is in a tool-agnostic forum - maybe this one:&lt;br /&gt;&lt;a href="http://groups.google.com/group/behaviordrivendevelopment" target="_blank"&gt;http://groups.google.com/group/behaviordrivendevelopment&lt;/a&gt; (I don't know of any STDD or ATDD forums).&lt;br /&gt;&lt;br /&gt;There are good articles about ATDD and STDD here:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://testobsessed.com/wordpress/wp-content/uploads/2008/12/"&gt;http://testobsessed.com/wordpress/wp-content/uploads/2008/12/example.pdf&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://industriallogic.com/papers/storytest.pdf"&gt;http://industriallogic.com/papers/storytest.pdf&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nxtbook.com/nxtbooks/sqe/bettersoftware0908/"&gt;http://www.nxtbook.com/nxtbooks/sqe/bettersoftware0908/&lt;/a&gt; (page 24-29)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;Sounds about right to me. The most important thing is what you actually are doing, not what you call it (though that's important, too). Around here, I use ATDD, since I think it best describes the practice and people are already familiar with what acceptance tests are. And STDD sounds too much like &lt;span style="font-style: italic;"&gt;STD&lt;/span&gt;, which doesn't exactly foster a mindset of willing acceptance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6742401550926039123?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6742401550926039123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6742401550926039123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6742401550926039123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6742401550926039123'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/acceptance-test-development-approach-by.html' title='An acceptance-test development approach by any other name would smell as sweet'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-596832383645798444</id><published>2008-12-23T16:47:00.002-06:00</published><updated>2008-12-23T17:02:09.700-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><title type='text'>DynamicPageList installed on wiki</title><content type='html'>We've installed the &lt;a href="http://www.mediawiki.org/wiki/Extension:DynamicPageList"&gt;DynamicPageList extension&lt;/a&gt; on the company wiki. The extension is:&lt;br /&gt;&lt;blockquote&gt;a universal reporting tool for MediaWikis, listing category members and intersections with various formats and details ... Typically the selection of pages to be shown will be based on one or more categories. But there are many other choices for selection criteria, like e.g. author, namespace, date, name pattern, usage of templates or references to other articles.&lt;/blockquote&gt;This allows us to dynamically generate lists, such as most-popular pages, recently-edited pages and pages edited by certain authors. I initially found the extension in my quest for a way to organize our retrospectives and let interested people see at a glance, say, the last five retrospectives for a particular project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-596832383645798444?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/596832383645798444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=596832383645798444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/596832383645798444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/596832383645798444'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/dynamicpagelist-installed-on-wiki.html' title='DynamicPageList installed on wiki'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-7423755254243655151</id><published>2008-12-22T10:27:00.010-06:00</published><updated>2008-12-22T14:22:15.283-06:00</updated><title type='text'>Path to Programming</title><content type='html'>Over the weekend, I read &lt;a href="http://pshaw.wordpress.com/2008/10/18/i-have-no-idea-how-difficult-my-class-is/"&gt;this article&lt;/a&gt; along with discussions about it on &lt;a href="http://www.reddit.com/r/programming/comments/7km8s/the_more_that_i_teach_computer_programming_the/"&gt;Reddit,&lt;/a&gt; &lt;a href="http://news.ycombinator.com/item?id=404009"&gt;Hacker News&lt;/a&gt; and a related discussion on what it takes to become a talented programmer on &lt;a href="http://radar.oreilly.com/2008/12/hard-work-and-practice-in-programming.html"&gt;O'Reilly's blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It got me thinking about my own path to programming:&lt;br /&gt;&lt;br /&gt;0. My first CS course ever was in high school.  I did ok, middling at best.  It was taught in C++.  The Borland compiler we used marked syntax errors the line after they occurred, which caused me a lot of headaches.  The final assignment, biggest grade of the class, was to create a game, any game.  The brightest kid in the class wrote a poker game using ascii art to actually draw the cards.  I thought I was at least as smart as him, so I made a poker game as well, but halfway through writing it, realized I couldn't figure out how to determine what hand a player was dealt, so I did what any industrious 10th grader would do.  I rigged the game.  Every hand dealt to the player was all hearts and it always printed out:&lt;br /&gt;&lt;code style="font-weight: bold;"&gt;You have a flush!&lt;/code&gt;&lt;br /&gt;I did not go to college hoping to earn a degree in Computer Science.&lt;br /&gt;&lt;br /&gt;1. As a biology undergrad, though, I did have to take an introductory computer science class.  It was in C.  What I had learned in High School was sufficient enough that I slept through every class and aced every homework assignment.  In retrospect, it probably set unrealistic expectations for courses to come.&lt;br /&gt;&lt;br /&gt;2. The summer after my freshman year, during a summer internship in a bio lab, I found myself spending every waking moment in the library reading technical computer books.  The campus had a network of vending machines with student id card readers attached that would, when swiped, bill your student account.  I noticed that they left the phone line that connected them to the campus network exposed, and was convinced that if only I knew a little bit more about TCP/IP I could send the machine someone else's student id number and get free Snickers for the duration of my internship.  I never succeeded, but at the end of the internship nothing I had still to study in biology seemed as appealing as figuring out the answers to all of the questions my reading had stirred up.  That fall semester, I enrolled in CS.&lt;br /&gt;&lt;br /&gt;3. My Operating Systems class made the most sense of any class I took as a CS major.  Each assignment covered a separate system call and that system call would be printed at the top of the assignment handout, verbatim from the man page.  Combined with a good specification of exactly what our program was supposed to output and how we were to deal with error conditions meant that in order to turn in a working program, all I had to do was read the assignment and the man pages enough times to put statements together in the right order.  I won't even pretend that I understood how my assignment to write a primitive shell worked, I had just read the execv man page enough times that by sheer combinatorial probability it had to work.&lt;br /&gt;&lt;br /&gt;4.  Many people in the comments on the article and in the forums noted that while initially programming may not make sense to a lot of people, sometimes, out of the blue it will "click" for a student.  I actually had an "Aha" moment &lt;span style="font-style: italic;"&gt;during&lt;/span&gt; a final as time was being called.  The last question on the last test of Computer Architecture and Assembly Programming, asked what instruction was equivalent to popping the top of the call stack.  I will never accuse anyone of having a dumb, blank stare again as my slack expression betrayed that fact that somewhere inside my cranium, hexadecimal notation, the von Neumann architecture, Intel memory addressing and the 8086 instruction set were coalescing into actual understanding.  Even more amazing was that my brain took those tiny electrical impulses and mechanically translated them into little carbon-graphite scratches representing a correct answer.  I remember leaving the test, talking to a fellow student for whom that question had not ignited any cranial conflagrations and despite the urge to prove my superiority, I withheld my hard won answer from him, realizing that sometimes the possession of knowledge comes secondary to its acquisition.&lt;br /&gt;&lt;br /&gt;The common thread of my education, though, I think, was that I never really questioned why things worked the way they did or worried that I didn't have as much control over them as I wanted.  In High School I never questioned why I wrote &lt;code&gt;int main(char* argc, char** argv)&lt;/code&gt; even though I had no idea what those two arguments were, nor ever used them in my programs, nor (until my infamous OS shell assignment) questioned how those values would ever be populated.&lt;br /&gt;&lt;br /&gt;More &lt;span style="font-style: italic;"&gt;theologically&lt;/span&gt; inclined students wanted to know why the for loop looked the way it did or pouted when they knew that they wanted their code to be compiled, but could not properly translate that knowledge into a series of dashes and letters that gcc would understand.&lt;br /&gt;&lt;br /&gt;I never questioned the magical gcc incantation that was usually provided to me.  Cryptic error messages, I felt deep down, were &lt;span style="font-style: italic;"&gt;my&lt;/span&gt; fault.  It is this same suspicion that persists in me even today, keeping me from writing copious amounts of bug reports for the software I use.&lt;br /&gt;&lt;br /&gt;I did know I hated C++ and liked C, though I had seen the phrase C/C++ bandied about so often that I thought that they were merely two different styles of writing the same language, sort of like the distinction between which style of brace indentation you chose.&lt;br /&gt;&lt;br /&gt;And once, while practicing for a programming contest, competing against my advising professor, he blew my mind by writing some 4 or 5 line string function in C that I had written with 1 in Java, and like the master to the grasshopper, asked my how mine could still be slower.&lt;br /&gt;&lt;br /&gt;There were more classes, but I was a college student and blissfully unaware of the totality with which my life after college would be consumed with, well, life after college and I tried not to let too many more painful epiphanies erupt inside my skull.  Departed from college for a handful of years, I now work with very smart people that force these epiphanies on me cruelly and with great relish.  Its probably why our company has been as successful as it has been and makes me wonder just what their path to programming was.&lt;br /&gt;&lt;br /&gt;So, to end of this heinously long post, I completely agree with whoever it was that said "A little bit of knowledge is a dangerous thing".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-7423755254243655151?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/7423755254243655151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=7423755254243655151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/7423755254243655151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/7423755254243655151'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/path-to-programming.html' title='Path to Programming'/><author><name>Nate</name><uri>http://www.blogger.com/profile/13345231139427891523</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-1350242331124828264</id><published>2008-12-19T09:58:00.001-06:00</published><updated>2008-12-19T10:02:05.366-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Link Roundup</title><content type='html'>Methodology:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://leansoftwareengineering.com/ksse/scrum-ban/"&gt;Scrum-ban&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;User experience:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://fivesecondtest.com/"&gt;Five-second test&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.gdinwiddie.com/2008/11/28/agile-usability/"&gt;Agile Usability&lt;/a&gt;, George Dinwiddie’s blog&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/BetterSoftware/magazine.asp?fn=cifea&amp;amp;ac=384"&gt;Getting Agile with user-centered design&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Programming:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;amp;ObjectType=COL&amp;amp;ObjectId=14444&amp;amp;tth=DYN&amp;amp;tt=siteemail&amp;amp;iDyn=2"&gt;Reusability vs. Usability: Where to Draw the Line?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://evagilist.wordpress.com/2008/12/16/will-the-agile-holidays-create-discipline-debt/"&gt;Will the holidays create discipline debt?&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Testing:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/s.asp?F=S14400_COL_2"&gt;Simple strategies to keep quality visible&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Conferences:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.citconf.com/msp2009/"&gt;CITCON 2009&lt;/a&gt;&lt;span class="Title"&gt;&lt;a name="coltop"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1350242331124828264?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1350242331124828264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1350242331124828264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1350242331124828264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1350242331124828264'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/link-roundup_15.html' title='Link Roundup'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6590341993311749007</id><published>2008-12-17T14:36:00.022-06:00</published><updated>2008-12-18T23:11:35.017-06:00</updated><title type='text'>Reducing authorization Redundancy in Web.config</title><content type='html'>We are developing a website that includes several pages, where user access is by page.  The users are assigned to groups, which correspond to user roles, in Active Directory.  Access to the various pages is based upon a member's being associated with any one of a group of roles.&lt;br /&gt;&lt;br /&gt;Here is an example that illustrates the situation:&lt;br /&gt;&lt;br /&gt;A user is granted access to the pages, "Bananas.aspx", "MonkeyMatch.aspx", and "Swingers.aspx" if (s)he is in any of the roles: "monkey a", "monkey b", "monkey c".&lt;br /&gt;&lt;br /&gt;A user is granted access to the pages, "JavaJabber.aspx", "RailsRules.aspx", and "CodeGuru.aspx" if (s)he is in either of the roles: "geek 0" or "geek 1".&lt;br /&gt;&lt;br /&gt;A user in the admin role is granted access to all pages.&lt;br /&gt;&lt;br /&gt;Only a user in the admin role is granted access to the page, "SpyOnGeeksAndMonkeys.aspx".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So,  Web.config might look like this:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;    font-size: small;&lt;br /&gt;    color: black;&lt;br /&gt;    font-family: Consolas, "Courier New", Courier, Monospace;&lt;br /&gt;    background-color: #ffffff;&lt;br /&gt;    /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .alt&lt;br /&gt;{&lt;br /&gt;    background-color: #f4f4f4;&lt;br /&gt;    width: 100%;&lt;br /&gt;    margin: 0em;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/.NetConfiguration/v2.0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!-- blah, blah ... --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authentication&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;="Forms"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;forms&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=".ADAuthCookie"&lt;/span&gt; &lt;span class="attr"&gt;timeout&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt; &lt;span class="attr"&gt;loginUrl&lt;/span&gt;&lt;span class="kwrd"&gt;="login.aspx"&lt;/span&gt; &lt;span class="attr"&gt;defaultUrl&lt;/span&gt;="&lt;span class="attr"&gt;default&lt;/span&gt;.&lt;span class="attr"&gt;axpx&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;authentication&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="?"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="rem"&gt;&amp;lt;!-- blah, blah, blah --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="Bananas.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;   &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;   &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="monkey a,monkey b,monkey c,admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="MonkeyMatch.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="monkey a,monkey b,monkey c,admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="JavaJabber.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="geek 0,geek 1,admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="RailsRules.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="geek 0,geek 1,admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="CodeGuru.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="geek 0,geek 1,admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="SpyOnGeeksAndMonkeys.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="images"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="css"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!-- blah, blah, blah --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can see the problem!  Having the list of roles duplicated in the various location elements is definitely asking for trouble.  What are the chances that someone will mess up the roles on a new page -- or even in the original configuration.  As the number of roles and the number of pages increase, it gets even worse.&lt;br /&gt;&lt;br /&gt;It would be very nice if the path attribute of the location element could take multiple paths.  Unfortunately, it doesn't.&lt;br /&gt;&lt;br /&gt;There are options.  We could organize the structure of the site around authorization.  In that case each location element would only need to reference the containing folder.  Sometimes that makes sense.&lt;br /&gt;&lt;br /&gt;Another option is to use the configSource attribute of the authorization element.  We can then write separate files that have the configuration that we need.  For example, we can write these files:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AuthMonkey.config&lt;/span&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;    font-size: small;&lt;br /&gt;    color: black;&lt;br /&gt;    font-family: Consolas, "Courier New", Courier, Monospace;&lt;br /&gt;    background-color: #ffffff;&lt;br /&gt;    /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .alt&lt;br /&gt;{&lt;br /&gt;    background-color: #f4f4f4;&lt;br /&gt;    width: 100%;&lt;br /&gt;    margin: 0em;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode .lnum { color: #606060&lt;/style&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="monkey a,monkey b,admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AuthGeek.config&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="geek 0,geek 1,admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AuthAdmin.config&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;allow&lt;/span&gt; &lt;span class="attr"&gt;roles&lt;/span&gt;&lt;span class="kwrd"&gt;="admin"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;deny&lt;/span&gt; &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AuthAllowAllUsers.config&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;allow &lt;span class="attr"&gt;users&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The web.config location elements can now be replaced with:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;    font-size: small;&lt;br /&gt;    color: black;&lt;br /&gt;    font-family: Consolas, "Courier New", Courier, Monospace;&lt;br /&gt;    background-color: #ffffff;&lt;br /&gt;    /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .alt&lt;br /&gt;{&lt;br /&gt;    background-color: #f4f4f4;&lt;br /&gt;    width: 100%;&lt;br /&gt;    margin: 0em;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="Bananas.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthMonkey.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="MonkeyMatch.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthMonkey.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="JavaJabber.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthGeek.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="RailsRules.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthGeek.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="CodeGuru.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthGeek.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="SpyOnGeeksAndMonkeys.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthAdmin.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="images"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthAllowAllUsers.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="css"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthAllowAllUsers.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authorization&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="AuthAllowAllUsers.config"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;location&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As a result, the groups of roles are kept in one place.  The Web.config file now references the appropriate authorization rules in the location elements.  This is a great improvement over redundant values in the allow and deny elements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6590341993311749007?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6590341993311749007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6590341993311749007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6590341993311749007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6590341993311749007'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/reducing-authorization-redundancy-in.html' title='Reducing authorization Redundancy in Web.config'/><author><name>Mike Gage</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-2664139486311755742</id><published>2008-12-17T10:11:00.014-06:00</published><updated>2008-12-17T16:40:12.785-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acceptance testing'/><category scheme='http://www.blogger.com/atom/ns#' term='integration testing'/><category scheme='http://www.blogger.com/atom/ns#' term='watin'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><title type='text'>Acceptance testing pains converting WatiN tests to run in Selenium</title><content type='html'>For the last year and a half we have been using &lt;a href="http://watin.sourceforge.net/"&gt;WatiN&lt;/a&gt; to drive our automated integration/acceptance tests for one of our projects  (If you'd like some insight into our decision, see &lt;a href="http://adamesterline.com/2007/04/23/watin-watir-and-selenium-reviewed/"&gt;Adam's blog post on it&lt;/a&gt;), and it has worked out really well. However, lately we have been experiencing pain when it comes to running our acceptance tests, and we have considered moving our tests to run using &lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt; instead.&lt;br /&gt;&lt;br /&gt;Our first point of pain is the amount of time it takes to run our acceptance tests. We have around 500+ and they have been taking close to 40 minutes to run. I'm not sure at what point they began to take so long, but I hardly considered 40 minutes to be acceptable.  One of the key ideas behind &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Development&lt;/a&gt; is the red, green, refactor principle, which requires you to run your tests often.  With the acceptance tests taking 40 minutes to run, I had begun to find myself running those tests less and thus losing the security blanket that we had created by writing those tests from the very beginning.&lt;br /&gt;&lt;br /&gt;Another point of pain is testing the number of web browsers we are supporting. Currently we are supporting eight different browsers, Firefox 2 &amp;amp; 3 (Mac &amp;amp; PC varieties), Safari 2.0.4 &amp;amp; 3 (Mac only), IE 6 &amp;amp; 7.  We are looking to add support for at least two more, Google Chrome &amp;amp; IE 8. One of WatiN's biggest limitations is that it only runs in IE. Our stories had to be tested manually in the other browsers to ensure they were complete and if you do this often enough it, you will loose a lot of time out of your development cycle.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We decided to reexamine using &lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt;, particularly &lt;a href="http://selenium-grid.seleniumhq.org/"&gt;Selenium Grid&lt;/a&gt; and &lt;a href="http://seleniumhq.org/projects/remote-control/"&gt;Selenium RC&lt;/a&gt;, in our test suite.  We were hoping to a) Speed up the time it took to run out tests b) Run our test across a larger set of browsers.  Knowing how the Grid works, we knew that &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;b&lt;/span&gt; could easily be achieved, but how would the speed compared to WatiN. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a test we converted a small subset of our fixtures, about 10, over to Selenium and did some slight benchmarking.  After the 10 fixtures were converted, we didn't see any initial improvement in the average test time. It was decided the advantage gained by being able to test across multiple browsers was more than enough for us to convert the rest of our tests to Selenium.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It appeared the quickest way to move forward was to rewrite our tests using &lt;a href="http://seleniumhq.org/projects/ide/"&gt;SeleniumIDE&lt;/a&gt;. It took two developers about a week and a half to convert every test over and flush out any old tests or broken tests.  After this was all said and done the Selenium tests ran about two to five minutes faster than the WatiN tests, but I feel that what we gained was well worth the effort. At the very least, we did not slow ourselves down and we can now test across multiple browsers with ease, and I like knowing that whatever changes we make will be tested and tested well.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;*We were able to speed the tests up and get them to run in as little as 12 minutes. I'll share that in a later post.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-2664139486311755742?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/2664139486311755742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=2664139486311755742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2664139486311755742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2664139486311755742'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/acceptance-testing-pains-converting.html' title='Acceptance testing pains converting WatiN tests to run in Selenium'/><author><name>Eric Neunaber</name><uri>http://www.blogger.com/profile/18394319456644274008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6429890395987315333</id><published>2008-12-16T14:08:00.007-06:00</published><updated>2008-12-16T14:23:47.280-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='best practice'/><category scheme='http://www.blogger.com/atom/ns#' term='pairing'/><title type='text'>Pairamid</title><content type='html'>A few teams at Asynchrony have used pairing charts as a mechanism to help us pair and change pairs frequently so that we gain the benefits of sharing knowledge, widening our understanding of the code, etc. Here's an example of something I call the "pairamid" (pun intended):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QmOsFQJoLLQ/SUgNheX6QlI/AAAAAAAAABg/tcy9kTk4hjc/s1600-h/pairamid.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 355px;" src="http://2.bp.blogspot.com/_QmOsFQJoLLQ/SUgNheX6QlI/AAAAAAAAABg/tcy9kTk4hjc/s400/pairamid.jpg" alt="" id="BLOGGER_PHOTO_ID_5280485431832101458" border="0" /&gt;&lt;/a&gt;In this particular pairing chart, we put a tally for each pairing session, color-coded by day of the week. It serves as a gentle reminder in our war room that we shouldn't let one of the squares have too many more tallies than any other and that person x should try pairing with person y (which we obviously weren't doing very well that iteration!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6429890395987315333?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6429890395987315333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6429890395987315333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6429890395987315333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6429890395987315333'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/pairamid.html' title='Pairamid'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QmOsFQJoLLQ/SUgNheX6QlI/AAAAAAAAABg/tcy9kTk4hjc/s72-c/pairamid.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-5996587535063330475</id><published>2008-12-10T09:02:00.004-06:00</published><updated>2008-12-12T09:15:47.284-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Link roundup</title><content type='html'>Product ownership:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/Media/eNewsletters/Iterations/Default.aspx?eNewsletter=200812#powerbookreview"&gt;&lt;span class="BlackTextTitle1White"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.stickyminds.com/Media/eNewsLetters/Iterations/Default.aspx?eNe#powerbookreview"&gt;A Product Needs an Owner&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Agile adoption:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;amp;ObjectType=COL&amp;amp;ObjectId=14404&amp;amp;tth=DYN&amp;amp;tt=siteemail&amp;amp;iDyn=2"&gt;&lt;span class="Title"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;amp;ObjectType=COL&amp;amp;ObjectId=14404" name="coltop"&gt;Little Scrum Pigs and the Big, Bad Wolf&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Testing:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a name="coltop"&gt;&lt;/a&gt;&lt;a href="http://searchsoftwarequality.bitpipe.com/data/document.do;jsessionid=CF4FA0552D08BB13F07469A0E44C4FC0?res_id=1209485432_588&amp;amp;src=DED_ssoftq_12_09_08"&gt;Best Practices for Implementing Automated Functional Testing Solutions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://testobsessed.com/2008/12/08/acceptance-test-driven-development-atdd-an-overview/"&gt;ATDD: An Overview&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Tools:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.michaeldkelly.com/blog/archives/218"&gt;Choosing a code-coverage tool&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Reference:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://rdocul.us/"&gt;RDocul.us: All Ruby Docs, always up to date!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Conferences:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sqe.com/ConferenceArchive/StarEast2008/"&gt;StarEast 2009&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://parlezuml.com/softwarecraftsmanship/"&gt;Software Craftsmanship 2009&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-5996587535063330475?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/5996587535063330475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=5996587535063330475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/5996587535063330475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/5996587535063330475'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/link-roundup.html' title='Link roundup'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6729707106889295160</id><published>2008-12-09T09:15:00.004-06:00</published><updated>2008-12-09T09:21:36.331-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile atdd'/><title type='text'>Hendrickson on ATDD</title><content type='html'>The prolific Elisabeth Hendrickson has posted another insightful piece on her blog, &lt;a href="http://testobsessed.com/2008/12/08/acceptance-test-driven-development-atdd-an-overview/"&gt;an overview of Acceptance-Test-Driven Development&lt;/a&gt;. I'll let you read it, which includes &lt;a href="http://testobsessed.com/wordpress/wp-content/uploads/2008/12/atddexample.pdf"&gt;a .pdf with more details&lt;/a&gt;, but I wanted to highlight a graphic from the .pdf:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QmOsFQJoLLQ/ST6MW_OIJjI/AAAAAAAAABM/_XNTculx19s/s1600-h/atddcycle.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 384px;" src="http://4.bp.blogspot.com/_QmOsFQJoLLQ/ST6MW_OIJjI/AAAAAAAAABM/_XNTculx19s/s400/atddcycle.jpg" alt="" id="BLOGGER_PHOTO_ID_5277810139880498738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I think we do the Discuss and Develop components well, but our weaker muscles tend to be the Distill and Demo aspects. Distilling takes a bit more time, but I think it's an example of the old saying "a stitch in time saves nine."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6729707106889295160?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6729707106889295160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6729707106889295160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6729707106889295160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6729707106889295160'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/hendrickson-on-atdd.html' title='Hendrickson on ATDD'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QmOsFQJoLLQ/ST6MW_OIJjI/AAAAAAAAABM/_XNTculx19s/s72-c/atddcycle.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-1980652796691324073</id><published>2008-12-05T14:37:00.003-06:00</published><updated>2008-12-05T14:42:09.830-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcements'/><title type='text'>Twitter badges now on blog sidebar</title><content type='html'>I added individual Twitter badges of Asynchrony employees to the sidebar of this blog. Apparently, there's no way to aggregate multiple Twitter accounts into one badge that I've seen. If someone wants to try, let me know.&lt;br /&gt;&lt;br /&gt;Also, I'm using the big block flash badges because there's no easy way to display multiple individual non-flash badges on the same html page. You can &lt;a href="http://getsatisfaction.com/twitter/topics/embed_two_twitter_accounts_onto_one_website#reply_621386"&gt;read more about it&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1980652796691324073?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1980652796691324073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1980652796691324073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1980652796691324073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1980652796691324073'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/12/twitter-badges-now-on-blog-sidebar.html' title='Twitter badges now on blog sidebar'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6218722750506621032</id><published>2008-11-26T08:47:00.005-06:00</published><updated>2008-12-05T14:42:29.454-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing selenium webrat'/><title type='text'>Helmkamp on Story-Driven Development</title><content type='html'>Gaffo noted &lt;a href="http://goruco2008.confreaks.com/01_helmkamp.html"&gt;this very good talk&lt;/a&gt; -- "Story Driven Development" -- by "the guy who runs webrat" (aka Bryan Helmkamp):&lt;br /&gt;&lt;blockquote&gt;It really picks up about 25 minutes in for us, but the first 25 minutes are interesting because they cover Rspec and story runner (the precursor to cucumber). He's talking about a lot of the things we're currently running into and I think it will help facilitate later discussions.&lt;/blockquote&gt;Good stuff; I second Mike's commendation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6218722750506621032?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6218722750506621032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6218722750506621032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6218722750506621032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6218722750506621032'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/11/helmkamp-on-story-driven-development.html' title='Helmkamp on Story-Driven Development'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-3123088695710022398</id><published>2008-11-25T13:33:00.012-06:00</published><updated>2008-11-26T09:00:14.326-06:00</updated><title type='text'>Testing Pyramid, part 2</title><content type='html'>I went ahead and grabbed the actual test numbers from the build(s) -- simply the total number of assertions in each of the test levels (unit, functional, integration and UI) -- and generated a chart in Excel:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QmOsFQJoLLQ/SSxUzGYD3EI/AAAAAAAAAA8/DO2PweBqnLI/s1600-h/it5testingtriangle.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 327px; height: 370px;" src="http://2.bp.blogspot.com/_QmOsFQJoLLQ/SSxUzGYD3EI/AAAAAAAAAA8/DO2PweBqnLI/s400/it5testingtriangle.jpg" alt="" id="BLOGGER_PHOTO_ID_5272682500605598786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I posted it in our war room; we'll see what kind of conversation it sparks. It looks like we need to continue moving toward increasing the ratio of webrat (integration) tests to Selenium (UI) tests, as well as upping our base level of units. Using the actual data also corrected my anecdotal assumption that we had a lot more unit tests than we do (see my sketch in my previous post).&lt;br /&gt;&lt;br /&gt;UPDATE: I ran the numbers for another team. Here's their chart:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QmOsFQJoLLQ/SS1jsBvLVjI/AAAAAAAAABE/_p3o33ilzk4/s1600-h/acetestingtriangle.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 327px; height: 370px;" src="http://3.bp.blogspot.com/_QmOsFQJoLLQ/SS1jsBvLVjI/AAAAAAAAABE/_p3o33ilzk4/s400/acetestingtriangle.jpg" alt="" id="BLOGGER_PHOTO_ID_5272980346752423474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This team has some UI tests written in Watir, but they don't run them (so they're useless). All of their integration tests are Webrat; apparently, these can be run as Selenium tests, but the team isn't doing that (yet). This team has the fundamentals down well -- more unit tests than functional, more functional than integration. We'll see how they expand the upper levels of their triangle in the coming weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-3123088695710022398?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/3123088695710022398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=3123088695710022398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/3123088695710022398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/3123088695710022398'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/11/testing-pyramid-part-2.html' title='Testing Pyramid, part 2'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QmOsFQJoLLQ/SSxUzGYD3EI/AAAAAAAAAA8/DO2PweBqnLI/s72-c/it5testingtriangle.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-1983133499090500702</id><published>2008-11-24T08:55:00.002-06:00</published><updated>2008-11-24T09:13:37.082-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing agile practices'/><title type='text'>Constructing the testing pyramid</title><content type='html'>I like Mike Cohn's testing pyramid as a guideline for test allocation, and I've mentioned it to a couple of teams around here (for more, read &lt;a href="http://patrickwilsonwelsh.com/?p=32"&gt;Patrick Wilson-Welsh's blog&lt;/a&gt; and/or see &lt;a href="http://patrickwilsonwelsh.com/wp-content/uploads/2008/08/flipping-the-triangle.pdf"&gt;his Agile 2008 presentation&lt;/a&gt;). Lately, on one team, we've been very earnest about writing Selenium tests for UATs, even doing some ATDD. But we're seeing what many have seen: Selenium tests are often (necessarily) long and slow, and occasionally brittle. I asked the team what our "testing pyramid" would look like, and it's something like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div&gt;          ^^^^^^^^^^^^    (GUI/system)&lt;/div&gt;&lt;div&gt;           ^^^^^^^^^^     (functional)&lt;/div&gt;&lt;div&gt;        ^^^^^^^^^^^^^^^^^ (unit)&lt;/div&gt;&lt;/pre&gt;&lt;div&gt;That is, the majority of our tests are at the unit level (that's good), but we are top-heavy with GUI tests. So with the help of the Ace team, we're moving toward more under-the-GUI integration tests using Webrat. Now we're looking more like:&lt;div&gt;&lt;pre&gt;&lt;br /&gt;&lt;div&gt;          ^^^^^^^^^^^^    (GUI/system)&lt;/div&gt;&lt;div&gt;              ^^^^        (integration)&lt;/div&gt;&lt;div&gt;           ^^^^^^^^^^     (functional)&lt;/div&gt;&lt;div&gt;        ^^^^^^^^^^^^^^^^^ (unit)&lt;/div&gt;&lt;/pre&gt;&lt;div&gt;The goal is to convert some of those Selenium (GUI/system) tests to Webrat (integration) and get our pyramid more in line (and help our team be more productive). There's still obviously need for the GUI-system tests, but we're just trying to be smarter about it. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1983133499090500702?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1983133499090500702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1983133499090500702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1983133499090500702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1983133499090500702'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/11/constructing-testing-pyramid.html' title='Constructing the testing pyramid'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6474564289634557188</id><published>2008-11-21T13:48:00.002-06:00</published><updated>2008-11-21T13:59:53.649-06:00</updated><title type='text'>Aysnchrony Mentioned In Local Blog</title><content type='html'>A local blog titled "Downtown St. Louis Business" does a fantastic job posting the latest news, rumors, and rumblings of local area corporations.&lt;br /&gt;&lt;br /&gt;Brian, the site's primary author, posted a column earlier this week that summarized local businesses that have sadly relocated their headquarters from downtown St. Louis, to other areas of the metro area.&lt;br /&gt;&lt;br /&gt;On a much brighter note, Brian posted &lt;a href="http://downtownstlbiz.blogspot.com/2008/11/what-weve-gained.html"&gt;a column today&lt;/a&gt; that notes local businesses that have pursued the opposite path - moving their business *into* the downtown perimeter.   Although it isn't exactly "news" - since Asynchrony relocated from Earth City in April '08 - it's nice to see our business recognized as one of the local corporations contributing to the growth of downtown St. Louis.&lt;br /&gt;&lt;br /&gt;Here here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6474564289634557188?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://downtownstlbiz.blogspot.com/2008/11/what-weve-gained.html' title='Aysnchrony Mentioned In Local Blog'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6474564289634557188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6474564289634557188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6474564289634557188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6474564289634557188'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/11/aysnchrony-mentioned-in-local-blog.html' title='Aysnchrony Mentioned In Local Blog'/><author><name>Matt Sebek</name><uri>http://www.blogger.com/profile/06427613142982796818</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ITmvNbbKEqk/SNkMSTnj08I/AAAAAAAAAxQ/vsAhajGMbLY/S220/jsf-head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-514218621639569852</id><published>2008-11-14T13:59:00.002-06:00</published><updated>2008-11-14T14:27:32.109-06:00</updated><title type='text'>ENTER key press in Selenium</title><content type='html'>Mike Gage needed to simulate an ENTER key press in Selenium to call a submit. Erstwhile Asynchronite Ryan Tyer provided some helpful feedback &lt;a href="http://twitter.com/rtyer/status/1005845427"&gt;via Twitter&lt;/a&gt; (we're gonna miss him!):&lt;br /&gt;&lt;blockquote&gt;In selenium, there is a submit function. This submits the form without using a submit button, same as an enter key press.  [And in &lt;a href="http://twitter.com/rtyer/status/1005847244"&gt;a followup&lt;/a&gt;:] Further, you should be able to simulate an enter key press with selenium...in rc (java) selenium.keyDown(id, "\\13");&lt;/blockquote&gt;Mike specifically wanted to make sure that the ENTER did something, which meant that he didn't want to use the submit function in Selenium. Here's what worked for him, using Ryan's approach (only with KeyPress) -- in Firefox, at least:&lt;br /&gt;     &lt;blockquote&gt;[Test]&lt;br /&gt;     public void EnterKeyPressedOnTextAreaTriggersSubmit()&lt;br /&gt;     {&lt;br /&gt;         selenium.Open("/");&lt;br /&gt;         selenium.WaitForPageToLoad(DEFAULT_PAGE_TIMEOUT);&lt;br /&gt;         selenium.Type("quicksearchtextcriteria", "text");&lt;br /&gt;         selenium.KeyPress("quicksearchtextcriteria", "13");&lt;br /&gt;         selenium.WaitForPageToLoad(DEFAULT_PAGE_TIMEOUT);&lt;br /&gt;&lt;br /&gt;         Assert.IsTrue(selenium.IsTextPresent("We could not find an exact match for your Quick Search entry"));&lt;br /&gt;     }&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-514218621639569852?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/514218621639569852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=514218621639569852' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/514218621639569852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/514218621639569852'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/11/enter-key-press-in-selenium.html' title='ENTER key press in Selenium'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-5962771447735865129</id><published>2008-11-11T08:51:00.002-06:00</published><updated>2008-11-11T08:54:09.618-06:00</updated><title type='text'>Tip: A Visible Approach to Sizing Stories</title><content type='html'>Brian sent me an email that had &lt;a href="http://www.agileuniversity.org/e-mail/au_newsletter_08_nov.html"&gt;this interesting tip&lt;/a&gt; from another Brian, &lt;a href="http://www.agileu.org/trainer.jsp?id=692"&gt;Brian Bozzuto&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;Next time you are sizing a large number of stories - especially when beginning a new project - consider using a visual method. This exercise is best done with a long table. Begin with an average size story card and place it in the center of the table. Take the next story and place it either above or below the first story depending on its size. The team should, one at a time, place stories on the table relative to the size of those already laid out. Rather than trying to define an absolute size, the team will sort stories based on their approximate size.&lt;br /&gt;&lt;br /&gt;This exercise forces people to think in relative terms instead of absolute estimates. Once all the stories have been placed in order, the team takes a set of planning poker cards and inserts each card along the spectrum of stories to identify the transition from one size to the next larger one. For example, those stories on the simple end of the sizing spectrum will start at "1", and the team will place the "3" card at the point where the first story is that should be sized as 3 instead of 1. The team is done once they have ordered every story on the table and grouped them into one of the story sizes.&lt;br /&gt;&lt;br /&gt;This visual exercise is most useful when a team has a hard time moving from the high precision exercise of estimating to the relative exercise of sizing. It is also useful when there are a large number of stories to be sized, as most teams will move through the sizing much faster than in traditional planning poker. However, it does allow each individual to provide an unbiased opinion, and moderators should be sensitive to the fact that soft spoken team members may have a harder time offering input. &lt;/blockquote&gt;&lt;div&gt;If anyone tries this, let us know. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-5962771447735865129?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/5962771447735865129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=5962771447735865129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/5962771447735865129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/5962771447735865129'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/11/tip-visible-approach-to-sizing-stories.html' title='Tip: A Visible Approach to Sizing Stories'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-9061526380764592001</id><published>2008-10-30T10:12:00.004-05:00</published><updated>2008-10-30T10:26:15.945-05:00</updated><title type='text'>Grouping "Friends" List on Facebook</title><content type='html'>One feature I especially like since the Facebook redesign is the ability to group your "Friends" list. If you have not noticed this feature yet, start by going to your "Friends" list. On the left side, click "Make a New List." Just as the instructions say, choose a name for your list, then hit the Enter key to save the name. You will be given a screen where you can type names or, even better, you can select multiple friends from a list of your entire Friends list.&lt;br /&gt;&lt;br /&gt;Additionally, this feature allows you to do two other things I find helpful: 1) You can send a message to an entire group of friends and 2) You can select your group from the "Live Feed" on the dashboard. This allows you to get a quick update of information for a select group of people.&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/ABRA%7E1.UNG/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-9061526380764592001?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/9061526380764592001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=9061526380764592001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/9061526380764592001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/9061526380764592001'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/grouping-friends-list-on-facebook.html' title='Grouping &quot;Friends&quot; List on Facebook'/><author><name>Abra</name><uri>http://www.blogger.com/profile/14210559993863792524</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-8532595931585082218</id><published>2008-10-28T13:33:00.003-05:00</published><updated>2008-10-28T13:56:48.371-05:00</updated><title type='text'>OpenCV on Fedora 8</title><content type='html'>Our team has just spent a bit of time configuring and running openCV on our Fedora 8 boxes.  openCV is a very rich toolkit for applications that have computer vision requirements.  After some bouncing around between various useful web sites with different installation processes, we assembled a complete set that works for us.&lt;br /&gt;&lt;br /&gt;This install process includes the ffmpeg libraries, and takes you from a basic Fedora 8 box to running the facedetect example.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Install ffmpeg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do this as root.&lt;br /&gt;&lt;br /&gt;    * yum install SDL-devel&lt;br /&gt;    * From &lt;a href="http://ffmpeg.mplayerhq.hu/download.html"&gt;ffmpeg&lt;/a&gt;, download a &lt;a href="http://ffmpeg.mplayerhq.hu/ffmpeg-checkout-snapshot.tar.bz2"&gt;full checkout&lt;/a&gt;.&lt;br /&gt;    * tar xjf ffmpeg-checkout-snapshot.tar.bz2&lt;br /&gt;    * cd ffmpeg-checkout-2008-10-28 (or whatever release yours is)&lt;br /&gt;    * ./configure --enable-shared --enable-swscale --enable-gpl&lt;br /&gt;    * make (You'll have time to get coffee, maybe see a movie, while this runs.)&lt;br /&gt;    * make install&lt;br /&gt;    * echo "/usr/local/lib" &gt;/etc/ld.so.conf.d/ffmpeg.conf&lt;br /&gt;    * ldconfig &lt;br /&gt;&lt;br /&gt;Now, run ffplay and pass it the name of a local video file - flv, avi, whatever. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Install OpenCV&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You're still root, yes?&lt;br /&gt;&lt;br /&gt;    * yum install gtk2-devel&lt;br /&gt;    * Download http://downloads.sourceforge.net/opencvlibrary/opencv-1.1pre1.tar.gz&lt;br /&gt;    * cd /tmp&lt;br /&gt;    * tar xzf opencv-1.1pre1.tar.gz&lt;br /&gt;    * cd /usr/local/include/&lt;br /&gt;    * mkdir ffmpeg&lt;br /&gt;    * cd ffmpeg&lt;br /&gt;    * find ../ -name "*.h" | xargs -n1 ln -s&lt;br /&gt;    * cd /tmp/opencv-1.1.0/&lt;br /&gt;    * ./configure --enable-apps --enable-shared --with-ffmpeg --with-gnu-ld --with-x --without-quicktime CXXFLAGS=-fno-strict-aliasing CFLAGS=-I/usr/local/include/ffmpeg CPPFLAGS=-I/usr/local/include/ffmpeg LDFLAGS=-L/usr/local/lib&lt;br /&gt;&lt;br /&gt;You should see&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;...&lt;br /&gt;    Use gtk+ 2.x:             yes&lt;br /&gt;    Use gthread:              yes&lt;br /&gt;...&lt;br /&gt;    Use ffmpeg:               yes&lt;br /&gt;...&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;    * make&lt;br /&gt;    * make install &lt;br /&gt;&lt;br /&gt;Now, to verify that everything's good.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;facedetect&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can do this as an ordinary user in your home directory.  You'll need an avi to use, in the place of /shared/public/videos/dove_hires.avi, but I'll leave it up to you to go find one.&lt;br /&gt;&lt;br /&gt;    * mkdir face&lt;br /&gt;    * cd face&lt;br /&gt;    * rsync -a /tmp/opencv-1.1.0/samples/c/ .&lt;br /&gt;    * g++ facedetect.c -o facedetect -I /usr/local/include/opencv/ -L /usr/local/lib/ -lm -lcv -lhighgui -lcvaux&lt;br /&gt;    * ./facedetect --cascade="/tmp/opencv-1.1.0/data/haarcascades/haarcascade_frontalface_alt2.xml" /shared/public/videos/dove_hires.avi &lt;br /&gt;&lt;br /&gt;You should see the video play, with facedetect drawing a red circle around anything it thinks is a face.  Cool stuff!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-8532595931585082218?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/8532595931585082218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=8532595931585082218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/8532595931585082218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/8532595931585082218'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/opencv-on-fedora-8.html' title='OpenCV on Fedora 8'/><author><name>Don Branson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/_eLQYQqSv_xM/SPZtz2_XGGI/AAAAAAAAAAM/9BhM9Cf4yQY/S220/IMG_2976.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-3523287372606339745</id><published>2008-10-27T13:30:00.001-05:00</published><updated>2008-10-27T13:46:17.783-05:00</updated><title type='text'>Free Lean Software Development Course</title><content type='html'>&lt;div&gt;Alan Shalloway (NetObjectives) is offering a free Lean Software Development Course starting Dec. 1. Here's some of the email that I saw posted on the XP-St. Louis list:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;Lean-Thinking provides a framework from which to improve virtually any organization's software development process. While not a panacea, Lean provides clarity on what to look at and how to solve the problems that are often beyond other methods. For software development organizations, Lean provides several principles that provide guidance to Agile methods, particiularly Scrum. Lean will assist those organizations which have either had problems adopting Agile methods or those who have been successful at the team level and are now attempting to scale it to the Enterprise. See Alan Shalloway's blog Is Scrum Failing Us?  for some examples of the challenges Lean can give guidance to.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This Free on-line training is true training, including lectures, readings, exercises and question &amp;amp; answer periods. The intent of this training is:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Provide the equivalent of a one-day Lean Software Development Overview course&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Promote Lean Software Development to many in the industry&lt;br /&gt;&lt;/li&gt;&lt;li&gt;To improve the ability of participants to explain to their associates why Lean Software Development is useful&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Provide insights on how to scale Agile/Scrum to the enterprise&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Session 1: Introduction to Lean Software Development&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Session 2: Five Reasons for Agility&lt;/div&gt;&lt;div&gt;Session 3: Lean as a Guide for Agile Methods&lt;/div&gt;&lt;div&gt;Session 4: QA's role in Lean Agile Software Development&lt;/div&gt;&lt;div&gt;Session 5: How Business Analysts can help their teams&lt;/div&gt;&lt;div&gt;Session 6: Lean Anti-Patterns&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Here's the link, if you're interested: &lt;a href="http://tech.groups.yahoo.com/group/NetObjectivesLeanOnlineTraining/"&gt;http://tech.groups.yahoo.com/group/NetObjectivesLeanOnlineTraining/&lt;/a&gt; If you decide to take it, please let me know or post a comment here.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-3523287372606339745?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/3523287372606339745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=3523287372606339745' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/3523287372606339745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/3523287372606339745'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/free-lean-software-development-course.html' title='Free Lean Software Development Course'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-8333045265181986531</id><published>2008-10-23T16:01:00.005-05:00</published><updated>2008-10-23T19:48:28.912-05:00</updated><title type='text'>Adventures in testing (or user experience? or fraud?)</title><content type='html'>&lt;div&gt;Let's hope that we don't have any job applicants from the Obama campaign anytime soon; their online work is a bit, shall we say, suspect. From &lt;a href="http://www.powerlineblog.com/archives/2008/10/021856.php"&gt;Powerline blog&lt;/a&gt;, quoting a reader's experiment with Obama's web site:&lt;/div&gt;&lt;blockquote&gt;I've read recent reports of the Obama campaign receiving donations from dubious names and foreign locales and it got me wondering: How is this possible?&lt;br /&gt;&lt;br /&gt;I run a small Internet business and when I process credit cards I'm required to make sure the name on the card exactly matches the name of the customer making the purchase. Also, the purchaser's address must match that of the cardholders. If these don't match, then the payment isn't approved. Period. So how is it possible that the Obama campaign could receive donations from fictional people and places? Well, I decided to do a little experiment. I went to the Obama campaign website and entered the following:&lt;br /&gt;&lt;br /&gt;Name: John Galt&lt;br /&gt;Address: 1957 Ayn Rand Lane&lt;br /&gt;City: Galts Gulch&lt;br /&gt;State: CO&lt;br /&gt;Zip: 99999&lt;br /&gt;&lt;br /&gt;Then I checked the box next to $15 and entered my actual credit card number and expiration date (it didn't ask for the 3-didgit code on the back of the card) and it took me to the next page and... "Your donation has been processed. Thank you for your generous gift."&lt;br /&gt;&lt;br /&gt;This simply should not, and could not, happen in any business or any campaign that is honestly trying to vet it's donors. Also, I don't see how this could possibly happen without the collusion of the credit card companies. They simply wouldn't allow any business to process, potentially, hundreds of millions in credit card transactions where the name on the card doesn't match the purchasers name.&lt;br /&gt;&lt;br /&gt;In short, with the system set up as it is by the Obama camp, an individual could donate unlimited amounts of money by simply making up fake names and addresses. And Obama is doing his best to facilitate this fraud. This is truly scandalous.&lt;/blockquote&gt;&lt;div&gt;It would seem that the people running Obama's site either a) don't test their stuff very well, b) don't care much for user experience, c) intentionally engaged in fraud or d) all of the above. It's a lesson for all of us, whether we're programming web sites for high-profile political campaigns or simple apps for internal use. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh, and the power of the blogosphere shows itself again: &lt;a href="http://corner.nationalreview.com/post/?q=YzlmYjAxODY5OTgyZGQ5OTNhYWMzYzBiZmEwM2Q2OTE="&gt;NRO's The Corner blog reports&lt;/a&gt; that the Obama camp, $600 million later, has fixed the problem.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-8333045265181986531?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/8333045265181986531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=8333045265181986531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/8333045265181986531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/8333045265181986531'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/adventures-in-testing-or-user.html' title='Adventures in testing (or user experience? or fraud?)'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-8979877164695659421</id><published>2008-10-21T12:04:00.006-05:00</published><updated>2008-11-11T08:58:53.592-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanban'/><title type='text'>For all your Kanban needs</title><content type='html'>Since at least two of our projects have dipped a figurative foot in the Kanban pool (aCe and kinda Mako and kinda MFKR), people who are interested in learning more (like me!) can join &lt;a href="http://groups.yahoo.com/group/kanbandev"&gt;a Yahoo group for Kanban development&lt;/a&gt;, aptly titled "kanbandev."&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are a few other Kanban links:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/agile-kanban-boards"&gt;Visualizing Agile Projects using Kanban Boards&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilemanagement.net/Articles/Weblog/KanbaninAction.html"&gt;Kanban in action&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilemanagement.net/Articles/Papers/TOCICOBarcelona.html"&gt;Worst to best in 9 months&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2008/10/kanban_agile"&gt;Kanban as Alternative Agile Implementation&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jamesshore.com/Blog/Kanban-Systems.html"&gt;James Shore's Kanban overview&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-8979877164695659421?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/8979877164695659421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=8979877164695659421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/8979877164695659421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/8979877164695659421'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/for-all-your-kanban-needs.html' title='For all your Kanban needs'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6256558561492325048</id><published>2008-10-20T16:56:00.005-05:00</published><updated>2008-10-21T10:14:07.164-05:00</updated><title type='text'>Cross-Location Teams: Stay Connected Via Co-Op</title><content type='html'>If you're anything like me, RSS feeds have significantly altered your reading habits.&lt;br /&gt;&lt;br /&gt;So many options, so little time.&lt;br /&gt;&lt;br /&gt;I skim, glance, peek, and ponder (alliteration, +2 blogging points) through countless options that are surface-level unique only through the negligible details.&lt;br /&gt;&lt;br /&gt;Although the sophomoric tendencies of limiting my reading/downloading habits to items that immediately appeal to my interests is mindless at best, I've learned to appreciate 'simple' in addition to 'functionality'.&lt;br /&gt;&lt;br /&gt;One such item I encountered over the weekend is the "Co-Op" web application.&lt;br /&gt;&lt;br /&gt;Think Ace iteration planning...mixed with online to-do managers such as "&lt;a href="http://www.rememberthemilk.com/"&gt;Remember The Milk&lt;/a&gt;"...mixed with &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://joesportsfan.com/wordpress/wp-content/uploads/2008/10/coop-anatomy.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://joesportsfan.com/wordpress/wp-content/uploads/2008/10/coop-anatomy.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Co-Op is completely web-based, completely free, and completely simple.  Yet, it encourages structure and organization across a group of people that are working tasks in parallel.&lt;br /&gt;&lt;br /&gt;While morning stand-ups and the tight environments of a localized agile team can probably accomplish most of Co-Ops online features on its own, don't write off it's usefulness just yet.&lt;br /&gt;&lt;br /&gt;As Asynchrony continues work in corporations with existing IT shops, off-site employees communicating with on-site employees is a growing concern.  The need for a cross-location communication tool external to email is evident, and essential, to daily team performance.&lt;br /&gt;&lt;br /&gt;Furthermore, although the Asynchrony sales team attempts to stay connected with daily standups, any number of individuals could be out of town or away from the office.  And yet, there are proposals and projects that depend on the entire group.&lt;br /&gt;&lt;br /&gt;Co-Op serves as a central meeting place for general team notes, important to-dos, and team member status updates.  It's worth taking a brief look.  I promise.&lt;br /&gt;&lt;br /&gt;And yes, each team member can upload their own avatar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6256558561492325048?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6256558561492325048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6256558561492325048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6256558561492325048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6256558561492325048'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/cross-location-teams-stay-connected-via.html' title='Cross-Location Teams: Stay Connected Via Co-Op'/><author><name>Matt Sebek</name><uri>http://www.blogger.com/profile/06427613142982796818</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ITmvNbbKEqk/SNkMSTnj08I/AAAAAAAAAxQ/vsAhajGMbLY/S220/jsf-head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-8491027714470020638</id><published>2008-10-13T16:40:00.003-05:00</published><updated>2008-10-13T16:52:15.927-05:00</updated><title type='text'>Selenium tip of the day: assertXpathCount</title><content type='html'>For those of you (like me) learning some Selenium IDE commands, here's a tip that Ben showed me today: assertXpathCount. The other day, Abra and I were trying to assert that a certain column in a table contained the same value. Ben noted another way to specifically check the count of something in a page using assertXpathCount. So if I wanted to assert that Roger's name appears in a column (any cell with a particular class) three times, I'd use the assertXpathCount command and the following arguments:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Target:&lt;pre&gt;//td[@class="presenter" and contains(text(),"Roger")]&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Value:&lt;pre&gt;3&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-8491027714470020638?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/8491027714470020638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=8491027714470020638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/8491027714470020638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/8491027714470020638'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/selenium-tip-of-day-assertxpathcount.html' title='Selenium tip of the day: assertXpathCount'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-1866097923425484619</id><published>2008-10-09T08:45:00.002-05:00</published><updated>2008-10-09T08:57:03.093-05:00</updated><title type='text'>Another published Asynchronite!</title><content type='html'>Some of you may have already heard: Shawn Sheldon is the latest Asynchronite to become a published author. &lt;a href="http://www.tatepublishing.com/bookstore/book.php?w=978-1-60604-515-2"&gt;Tate Publishing&lt;/a&gt; recently released his children's novel, Stranded, the first book of his Dragon Ship Series. From the site:&lt;br /&gt;&lt;blockquote&gt;"That night was another restless one. Actually, it was the worst one of my life to that point. I knew I had better get some rest if I was to have any hope of managing the day that was coming for me the following morning. What kind of day you ask? Let’s review. Tomorrow I would need to secretly explore the Blue Goose site gathering intelligence information, lead my brother and sister and four other children in play, and rescue my dog Snowball—a pretty tall order for a twelve year old; I think anyone would have to agree! In Stranded, the first book in the all new series The Dragon Ship Series, written by Shawn Sheldon, follow a boy and his brother and sister on their unusual Christmas vacation. Their backyard adventure leads to both frightening and exciting encounters with intelligent dragons, Bigfoot, and ‘pet’ robots. A mystery begins to unravel as they discover that the common link involves an amazing space ship, hazardous waste, and even their own family history. Will they be smart enough and brave enough to meet the challenges they discover?&lt;/blockquote&gt;Congrats, Shawn! Bring your copy to the third floor, and he'll autograph it for you!&lt;br /&gt;&lt;br /&gt;p.s. Yes, those are his kids on the book cover.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1866097923425484619?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1866097923425484619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1866097923425484619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1866097923425484619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1866097923425484619'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/another-published-asynchronite.html' title='Another published Asynchronite!'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6411949210559599560</id><published>2008-10-08T14:44:00.001-05:00</published><updated>2008-10-08T14:51:40.610-05:00</updated><title type='text'>Customer tests breaking the build?</title><content type='html'>I was chatting with a team member about the possibility of his team moving toward &lt;a href="http://asynchrony.blogspot.com/2008/09/marcano-on-acceptance-test-driven.html"&gt;ATDD (Acceptance-Test-Driven Development)&lt;/a&gt; in which they would write automated acceptance tests before development. He raised the concern that it would mean that they would be checking in tests that broke the build for unacceptably-long periods of time (a day or more). I turned to Brian Button and Ryan Tyer to see how they handle that. Their responses: &lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Brian:&lt;/span&gt; I ignore the ATs that aren't implemented yet so they don't show up as broken tests. (I mean ignore from a JUnit ignore point of view, not just ignoring by choosing not to look at their failures!)  Once I start working on something, I unignore the tests.&lt;br /&gt;&lt;br /&gt;The restriction on checking in code on broken tests goes for programmer tests, not customer tests. Customer tests go from ignored, to failing, to passing, and shouldn't ever regress.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ryan:&lt;/span&gt; I'd add that with some testing frameworks (TestNG comes to mind) you can flag tests to ignore programatically (@Ignore if I remember correctly).  These will not be run so they will not fail the build.  You could have two suites of tests (all and all but ignored tests) for the frameworks that don't support this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Brian: &lt;/span&gt;That idea is what I was talking about. In junit 3, you'd have to comment the test out or something, since it doesn't have a way to ignore tests. In Junit4, Nunit, Xunit.net, TestNg, you just mark the test as ignored.&lt;br /&gt;&lt;br /&gt;In visual studio architect edition, team suite, or tester edition, you can use test lists to separate ignored ATs from those that should pass.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6411949210559599560?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6411949210559599560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6411949210559599560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6411949210559599560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6411949210559599560'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/customer-tests-breaking-build.html' title='Customer tests breaking the build?'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-98356553433577138</id><published>2008-10-08T12:17:00.002-05:00</published><updated>2008-10-08T14:40:58.540-05:00</updated><title type='text'>Google Chrome, Zimbra and you</title><content type='html'>I started using Google Chrome when it first came out but quickly reverted to Mozilla Firefox 3 because the advanced version of Zimbra didn't work on Chrome. When I polled the company about whether anyone else could get the two to work together, here's what I received:&lt;br /&gt;&lt;blockquote&gt;"No.  And it's really annoying.  I believe they have some js in the page that looks for IE 6 or 7 and Firefox browsers and anything else gets the standard view."&lt;br /&gt;&lt;br /&gt;"yes and no. I am using Chrome, but the Ajax version doesn't work.  I am using it anyway, because I have run into issues with the Ajax version in Firefox."&lt;br /&gt;&lt;br /&gt;"Last time I looked there were some issues with it and both google and zimbra were looking into it."&lt;br /&gt;&lt;br /&gt;"I have been using Chrome for a while, and it always uses the standard version no matter what version you pick.  I'm guessing here, but suspect that Zimbra doesn't recognize the browser so it doesn't understand whether or not it has AJAX support, so it launches the safest (standard) version no matter what you choose.&lt;br /&gt;&lt;br /&gt;Another thing to note here is that Zimbra Standard has some things that don't work properly (and there are AI's already in ACE about them).  For one thing you can't download e-mail attachments (it produces an invalid URL in the download link).  For another, if you create a public calendar entry (i.e. "Out of Office") via Chrome, nobody else can see it but you.  There are probably other limitations, but those are the only ones I've seen so far.  Other than that Chrome &amp;amp; Zimbra seem to work together okay - albeit limited by what the HTML version can do."&lt;br /&gt;&lt;br /&gt;"Elitist"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-98356553433577138?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/98356553433577138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=98356553433577138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/98356553433577138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/98356553433577138'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/google-chrome-zimbra-and-you.html' title='Google Chrome, Zimbra and you'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-1634257316170251366</id><published>2008-10-07T10:30:00.000-05:00</published><updated>2008-10-07T10:38:36.194-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='toilet paper'/><category scheme='http://www.blogger.com/atom/ns#' term='best practice'/><title type='text'>Finally-close your resources</title><content type='html'>&lt;p&gt; You are a java programmer. Do you read from databases? Perhaps you write to files? If you aren't careful, you might be creating memory leaks and inadvertently leaving database connections open. Java is notorious for making simple things like file i/o complicated.  Consider the try-catch block inside the finally block, which is necessary because the close() method throws an IOException; what is an application programmer supposed to do if the operating system won't allow him to close an open file? Witness the following code: &lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;1 myFile.open();&lt;br /&gt;2 contents = myFile.readContents();&lt;br /&gt;3 myFile.close(); &lt;/pre&gt;&lt;/blockquote&gt;If an exception occurs while reading the file's contents on line 2, your program will skip over line 3 where the file is closed, as the exception interrupts normal execution flow and propagates up the stack, leaving the file ambiguously open. Fortunately, you can invoke this simple solution. Behold:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;1 File file = new&lt;br /&gt;File("/shared/home/richard.green/.bashrc");&lt;br /&gt;2 BufferedReader reader = null;&lt;br /&gt;try {&lt;br /&gt;reader = new BufferedReader( new FileReader(file) );    &lt;br /&gt;String line = reader.readLine();&lt;br /&gt;// Deal with line&lt;br /&gt;}&lt;br /&gt;catch (IOException e){&lt;br /&gt;// Deal with exception ...&lt;br /&gt;}&lt;br /&gt;finally {&lt;br /&gt;try {&lt;br /&gt;reader.close();&lt;br /&gt;} catch (IOException e) { /* ignored */ }&lt;br /&gt;} &lt;/pre&gt;&lt;/blockquote&gt;When execution leaves the try block (line 3), code inside the finally block (line 5) is executed under any circumstance. Therefore, in the above solution, if an exception occurs while reading the file's contents on line 3, the file will still be closed on line 5 before the exception propagates up the stack.&lt;br /&gt;&lt;p&gt;Frameworks like Commons IO from the Apache group ( &lt;a href="http://commons/apache.org/io"&gt;http://commons/apache.org/io&lt;/a&gt;) take much of the pain out of dealing with Java I/O. Commons IO provides variety of utility classes which safely implement common I/O operations without dealing with the ugly Java Reader/Stream/Exception semantics.&lt;br /&gt;&lt;br /&gt;Resource leaks due to exceptions are a problem in more-or-less every programming language. Each language has its own idioms for dealing with them.  C++ coders wrap resources in their own classes and use the language's constructor-destructor semantics to allocate and de-allocate the resource.  In Ruby, you use the IO::open method with a block; this automatically closes the resource when the block ends.  Familiarize yourself with these idioms as part of learning a new language. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-1634257316170251366?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/1634257316170251366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=1634257316170251366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1634257316170251366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/1634257316170251366'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/finally-close-your-resources.html' title='Finally-close your resources'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6990712068458526155</id><published>2008-10-06T15:06:00.000-05:00</published><updated>2008-10-06T15:10:25.412-05:00</updated><title type='text'>Coming soon: Selenium Grid</title><content type='html'>Coming soon to a project near you: The advantages of &lt;a href="http://selenium-grid.openqa.org/"&gt;Selenium Grid&lt;/a&gt;. From the web site:&lt;br /&gt;&lt;blockquote&gt;Selenium Grid          transparently &lt;strong&gt;distribute [sic] your tests on multiple machines&lt;/strong&gt;        so that you can &lt;strong&gt;run your tests in parallel&lt;/strong&gt;,         cutting down the time required for running in-browser test suites.        This will &lt;strong&gt;dramatically speeds up         end-to-end web testing&lt;/strong&gt;, giving you quick and accurate feedback         you can rely on to improve your web application.       &lt;/blockquote&gt;We've been using Grid for one of our customers and within the next few weeks will be setting up a hub for use in other projects. See Cornel, Dave M. or me for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6990712068458526155?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6990712068458526155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6990712068458526155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6990712068458526155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6990712068458526155'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/coming-soon-selenium-grid.html' title='Coming soon: Selenium Grid'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-9132086643014520678</id><published>2008-10-06T15:05:00.000-05:00</published><updated>2008-10-07T10:04:29.826-05:00</updated><title type='text'>Agile2008 conference proceedings</title><content type='html'>The &lt;a href="http://agile2008.org/"&gt;Agile2008&lt;/a&gt; conference proceedings are now on the public drive at &lt;span style="font-weight: bold;"&gt;\Agile Conferences\Agile2008&lt;/span&gt;. You can find a lot of good presentations and material there. (The &lt;span style="font-weight: bold;"&gt;Agile Conferences&lt;/span&gt; directory also has Agile2006 and Starwest2007.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-9132086643014520678?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/9132086643014520678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=9132086643014520678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/9132086643014520678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/9132086643014520678'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/10/agile2008-conference-proceedings.html' title='Agile2008 conference proceedings'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-3621730393098253341</id><published>2008-09-25T11:02:00.000-05:00</published><updated>2008-09-25T11:11:32.504-05:00</updated><title type='text'>Marcano on acceptance-test-driven development</title><content type='html'>When I met Antony Marcano, who runs the essential blog &lt;a href="http://www.testingreflections.com/"&gt;Testing Reflections&lt;/a&gt;, a year ago at STARWest in Anaheim, I immediately liked his views on agile testing. He published a very insightful article in &lt;a href="http://www.nxtbook.com/nxtbooks/sqe/bettersoftware0908/"&gt;Better Software this month&lt;/a&gt; on a topic that's been top-of-mind for me recently: Acceptance-Test-Driven Development (ATDD). I'll let him explain (emphases mine):&lt;br /&gt;&lt;blockquote&gt;ATDD bridges the gap between an idea summarized in a user story and the implementation of that story. It helps elicit the detail behind the idea to make it better understood by both the customer with the idea and the cross-functional development team that will implement it. ...&lt;br /&gt;&lt;br /&gt;Whenever we begin to discuss acceptance criteria, it’s safe to say &lt;span style="font-style: italic;"&gt;the user story alone is not enough&lt;/span&gt;. To establish a shared understanding of a user story, the customer elaborates on the idea behind it by first outlining some acceptance criteria—often in terms of the new behaviors that the system will exhibit once the story is implemented. This is so that the team has a high-level view of the story’s real meaning. Programmers, testers, and the customer exchange examples of specific inputs and outputs that further clarify the scope of the user story. This results in refinements to existing acceptance criteria or additional criteria. During the iteration, programmers and testers work with the customer to draw out the detail required for them to expand outlined acceptance criteria into specific examples in the form of tests. From these tests, programmers infer the underlying rules that must be implemented. During this process, with the help of a variety of testing techniques, testers help to identify exception cases and reduce other example behaviors into equivalent cases. The result is &lt;span style="font-style: italic;"&gt;a set of examples, expressed as automated acceptance tests&lt;/span&gt;. These tests are run and, since the feature isn’t implemented yet, they fail—as expected. For each of these automated acceptance tests, programmers implement enough of the software for the acceptance test to pass (ideally using TDD with unit tests). Once all the acceptance tests for a story pass, the story is done— almost.&lt;/blockquote&gt;(He goes on to note that the story's not "done" until exploratory testing -- another important practice -- happens.) It seems to me that ATDD goes a long way to solving many pains: knowing when "done" is, eliciting requirements, developing the right features first, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-3621730393098253341?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/3621730393098253341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=3621730393098253341' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/3621730393098253341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/3621730393098253341'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/09/marcano-on-acceptance-test-driven.html' title='Marcano on acceptance-test-driven development'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-2884584575161234876</id><published>2008-09-23T10:31:00.000-05:00</published><updated>2008-09-23T10:34:05.067-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='standups'/><category scheme='http://www.blogger.com/atom/ns#' term='toilet paper'/><category scheme='http://www.blogger.com/atom/ns#' term='best practice'/><title type='text'>Standups and communication</title><content type='html'>Communication is the first core value of XP. So how does your team communicate with each other? How well do you do it?&lt;br /&gt;&lt;br /&gt;One way that our development teams communicate is via daily standup meetings. But what is a standup meeting, anyway? How about this definition: a self-organizing daily gathering to gain shared understanding of the state of our team, focus our day and remind ourselves that we're all in this together. As one comment on Ward Cunningham's wiki puts it, "Our aim is modest: to identify short-term obstacles. The agenda is minimalist: What does the day look like?" Some teams eschew standups because they’re not helpful; perhaps understanding the objectives can help you reshape your standup. How do you know if your standup meetings are effective? Here are some possible outcomes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Everyone knows what he or she is going to do -- and with whom -- as soon as the standup ends (rather than finding a pair partner or figuring out what to do after the meeting ends).&lt;/li&gt;&lt;li&gt;Everyone understands where the team is on all the stories -- if an outsider were to ask you about any story, you could answer (rather than merely “the story I'm working on”).&lt;/li&gt;&lt;li&gt;Everyone knows high-level problems facing the team for the day (rather than not knowing).&lt;/li&gt;&lt;li&gt;Everyone has a sense of how complete the iteration is, and what needs to be done to "make it" (rather than being surprised on the last day).&lt;/li&gt;&lt;li&gt;The team has decided to have breakout meetings to resolve specific problems (rather than try to solve bigger problems in the standup).&lt;/li&gt;&lt;li&gt;Everyone knows what the team is pledging to accomplish for the day (rather than being unfocused).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If you're not accomplishing these, check out the standups article on &lt;a href="http://www.martinfowler.com/"&gt;Martin Fowler's site&lt;/a&gt;, which provides useful patterns and identifies "smells" for standups. Now for some best practices that we’ve seen around Asynchrony:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Prompt start: The way a team starts its standup is indicative of the way the day will go; when everyone arrives on-time (or, heaven forbid, a minute early!) the meeting tends to have a snappier pace. Use a fun disincentive to cut down on lateness (e.g., tardy MFKR team members having to wear a PPE jumpsuit).&lt;/li&gt;&lt;li&gt;Story-based: Rather than focusing on individual check-ins, the team talks about its progress in terms of stories. Facing the story posters on the board, the team talks about the unfinished stories in order of priority and how to complete them. The team can set a goal by determining which stories it will attempt to finish that day.&lt;/li&gt;&lt;li&gt;Know what’s next: Before the standup meeting is over, know who your pair partner is (consult the pairing chart for help) and what task you’re going to work on, and go to it.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-2884584575161234876?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/2884584575161234876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=2884584575161234876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2884584575161234876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2884584575161234876'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2008/09/standups-and-communication.html' title='Standups and communication'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-6048734758868771459</id><published>2007-06-29T10:27:00.000-05:00</published><updated>2007-06-29T10:32:34.250-05:00</updated><title type='text'>Hans Reiser: Once a Linux Visionary, Now Accused of Murder</title><content type='html'>&lt;a href="http://www.wired.com/techbiz/people/magazine/15-07/ff_hansreiser?currentPage=1"&gt;Wired Magazine&lt;/a&gt; has published an interview with a man about to stand trial for the murder of his separated wife. The article is written like a short story of sorts with bits of code dropped in for dramatic influence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-6048734758868771459?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wired.com/techbiz/people/magazine/15-07/ff_hansreiser?currentPage=1' title='Hans Reiser: Once a Linux Visionary, Now Accused of Murder'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/6048734758868771459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=6048734758868771459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6048734758868771459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/6048734758868771459'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2007/06/hans-reiser-once-linux-visionary-now.html' title='Hans Reiser: Once a Linux Visionary, Now Accused of Murder'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.superwes.com/forum/images/avatars/137654194640eeb324edbe1.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-2626991412420833652</id><published>2007-05-25T11:20:00.001-05:00</published><updated>2007-05-25T11:29:02.584-05:00</updated><title type='text'>Strategic error doomed asynchrony.com</title><content type='html'>Nate just forwarded this email to a couple of us who've been around long enough to remember &lt;a href="http://findarticles.com/p/articles/mi_m0EIN/is_2000_April_13/ai_61476352"&gt;the revolutionary software incubator&lt;/a&gt; that was &lt;a href="http://web.archive.org/web/20030622102712/www.asynchrony.com/welcome.jsp"&gt;asynchrony.com&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;From: "DevGalaxy Support" &lt;support@devgalaxy.com&gt;&lt;br /&gt;Date: May 25, 2007 7:19:55 AM CDT&lt;br /&gt;To: sales@asynchrony.com&lt;br /&gt;Subject: Increased Odds "5 star award" from DevGalaxy.com&lt;br /&gt;&lt;br /&gt;Hello,&lt;br /&gt;&lt;br /&gt;Congratulations!&lt;br /&gt;&lt;br /&gt;Due to the number of downloads that your product had from our users and based on our own review we decided to grant your product with the DevGalaxy "5 Stars Award". This means that "Increased Odds" is highly apreciated and already in the top of the searches.&lt;br /&gt;&lt;br /&gt;You must be proud of this award and you should let all your users or potential users know about this by displaying it on your website, or on software boxes inside your product.&lt;br /&gt;&lt;br /&gt;You can read more about your product's award on our website: http://www.devgalaxy.com/program-q-h-a-a-q.aspx.&lt;br /&gt;&lt;br /&gt;For displaying your award use the following details:&lt;br /&gt;Web site URL: http://www.devgalaxy.com/&lt;br /&gt;Software URL: http://www.devgalaxy.com/program-q-h-a-a-q.aspx&lt;br /&gt;Award Html Code:&lt;br /&gt;========================&lt;br /&gt;&lt;a href="http://www.devgalaxy.com/"&gt;&lt;br /&gt;&lt;img alt="DevGalaxy - Free Sofware Downloads" src="http://www.devgalaxy.com/images/awards/5StarSmall.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;========================&lt;br /&gt;&lt;br /&gt;If you have other software products that you want to get an evaluation for, feel free to request it by sending us an email at:&lt;br /&gt;awards@devgalaxy.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;DevGalaxy.com Team&lt;br /&gt;http://www.devgalaxy.com&lt;/support@devgalaxy.com&gt;&lt;/blockquote&gt;&lt;support@devgalaxy.com&gt;&lt;br /&gt;I checked out the site -- a whopping 1068 downloads! And here we were spending all of our resources pushing PDA &lt;del&gt;Bomb&lt;/del&gt;Defense. Man, we misjudged the market for lotto apps.&lt;br /&gt;&lt;/support@devgalaxy.com&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-2626991412420833652?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/2626991412420833652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=2626991412420833652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2626991412420833652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/2626991412420833652'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2007/05/strategic-error-doomed-asynchronycom.html' title='Strategic error doomed asynchrony.com'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-116371896224389122</id><published>2006-11-16T17:12:00.000-06:00</published><updated>2006-11-16T17:16:02.253-06:00</updated><title type='text'>Rage in the Diebold Machine</title><content type='html'>&lt;a href="http://tinyurl.com/y9qpoj"&gt;Fortune Article "Rage in the Machine"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Why we never have to worry about job security while producing quality software.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;Here's a five-step plan guaranteed to make an obscure company absolutely notorious.&lt;br /&gt;&lt;br /&gt;First get into a business you don't understand, selling to customers who barely understand it either. Then roll out your product without adequate testing. Don't hire enough skilled people. When people notice problems, deny, obfuscate and ignore. Finally, blame your critics when it all blows up in your face. &lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-116371896224389122?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://tinyurl.com/y9qpoj' title='Rage in the Diebold Machine'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/116371896224389122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=116371896224389122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/116371896224389122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/116371896224389122'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/11/rage-in-diebold-machine.html' title='Rage in the Diebold Machine'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-115169558205076943</id><published>2006-06-30T14:19:00.000-05:00</published><updated>2006-06-30T14:27:06.150-05:00</updated><title type='text'>Are flip-flops damaging your career?</title><content type='html'>I don't usually read or link to Reuters, but &lt;a href="http://today.reuters.com/news/newsarticle.aspx?type=domesticNews&amp;storyid=2006-06-29T124651Z_01_N21256287_RTRUKOC_0_US-LIFE-FLIPFLOPS.xml&amp;amp;src=rss&amp;amp;rpc=22"&gt;this story&lt;/a&gt; was so appropos (I just saw Dan) that I couldn't pass it up:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Style gurus warn that flip-flops, which are worn mainly by younger women, could be harmful to a career.&lt;/p&gt;&lt;p&gt;"Shoes convey the mood of a woman. Wearing flip-flops conveys the mood that you are relaxed and on vacation. That's not a good message in the office," said Meghan Cleary, a style commentator who wrote the book "The Perfect Fit: What Your Shoes Say About You."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Since when was feeling relaxed and on vacation not a good message in the office? Apparently, the writer didn't consult any studies on the correlation of companies' restrictive footwear policies and absenteeism... Come to Asynchrony, where every day is like a vacation!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-115169558205076943?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://today.reuters.com/news/newsarticle.aspx?type=domesticNews&amp;storyid=2006-06-29T124651Z_01_N21256287_RTRUKOC_0_US-LIFE-FLIPFLOPS.xml&amp;src=rss&amp;rpc=22' title='Are flip-flops damaging your career?'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/115169558205076943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=115169558205076943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/115169558205076943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/115169558205076943'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/06/are-flip-flops-damaging-your-career.html' title='Are flip-flops damaging your career?'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-114901316718019225</id><published>2006-05-30T13:18:00.000-05:00</published><updated>2006-05-30T13:19:27.190-05:00</updated><title type='text'>Agile RSS feeds</title><content type='html'>I've put together a page with headlines from a wide variety of rss feeds on the topic of Agile development.  You can find it &lt;a href="http://www.pageflakes.com/fourworlds.ashx?page=1048232"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-114901316718019225?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.pageflakes.com/fourworlds.ashx?page=1048232' title='Agile RSS feeds'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/114901316718019225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=114901316718019225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114901316718019225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114901316718019225'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/05/agile-rss-feeds.html' title='Agile RSS feeds'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-114840876196108591</id><published>2006-05-23T13:24:00.000-05:00</published><updated>2006-05-23T13:26:01.970-05:00</updated><title type='text'>Vader Of The Opera</title><content type='html'>Darth and Luke battle and belt it out in this musical.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-114840876196108591?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.youtube.com/watch?v=n97ztLmxH8A' title='Vader Of The Opera'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/114840876196108591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=114840876196108591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114840876196108591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114840876196108591'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/05/vader-of-opera.html' title='Vader Of The Opera'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-114528916374396090</id><published>2006-04-17T10:48:00.000-05:00</published><updated>2006-04-17T10:52:44.860-05:00</updated><title type='text'>Movie Cast Helper</title><content type='html'>From Lori...&lt;br /&gt;&lt;br /&gt;MyHeritage.com does facial recognition on photos to find celebrity matches.&lt;br /&gt;&lt;br /&gt;Personally, I don't like it.  It says Pam looks like Erica Durance, while I look like Kim Jong Il.  Not nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-114528916374396090?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.myheritage.com' title='Movie Cast Helper'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/114528916374396090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=114528916374396090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114528916374396090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114528916374396090'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/04/movie-cast-helper.html' title='Movie Cast Helper'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-114365095091038112</id><published>2006-03-29T10:47:00.000-06:00</published><updated>2006-03-29T10:49:10.926-06:00</updated><title type='text'>A True Employee Incentive</title><content type='html'>&lt;span style="font-weight:bold;"&gt;World's first beer health spa opens in Czech&lt;/span&gt;&lt;br /&gt;London, Mar 28: A family brewery in the Czech Republic has opened the world’s first beer health centre in its cellar. The Chodovar Family brewery in Chodova Plana offers beer baths, beer massages and beer cosmetics.&lt;br /&gt;&lt;br /&gt;The cellar has seven huge Victorian style baths where visitors can swim in beer while enjoying a pint poured at a bathside bar.&lt;br /&gt;&lt;br /&gt;"Beer can treat a range of conditions, particularly skin conditions, and the health centre should appeal to men who are put off by 'posh' traditional spas. I have heard of some places in other countries where people can swim in beer but it's just a gimmick. We believe in the healing properties of beer and we offer the full range of treatments. We are a fully-fledged beer spa," Ananova quoted Jiri Plevka, the owner as saying.&lt;br /&gt;&lt;br /&gt;The guests are charged 80 pounds for weekend packages, and can indulge in a range of health treatments including beer wraps, starting at 12 pounds per session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-114365095091038112?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chodovar.cz/' title='A True Employee Incentive'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/114365095091038112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=114365095091038112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114365095091038112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114365095091038112'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/03/true-employee-incentive.html' title='A True Employee Incentive'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-114321913713363104</id><published>2006-03-24T10:50:00.000-06:00</published><updated>2006-03-24T10:52:17.146-06:00</updated><title type='text'>You Got Game?  You Know Jack?</title><content type='html'>Hey, Sports Fans!  If you KNOW sports, put yourself to the test here.&lt;br /&gt;&lt;a href="http://www.faniq.com"&gt;faniq.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-114321913713363104?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.faniq.com' title='You Got Game?  You Know Jack?'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/114321913713363104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=114321913713363104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114321913713363104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114321913713363104'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/03/you-got-game-you-know-jack.html' title='You Got Game?  You Know Jack?'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-114203080289074878</id><published>2006-03-10T16:40:00.000-06:00</published><updated>2006-03-10T16:46:42.900-06:00</updated><title type='text'>Par for the OC?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img91.imageshack.us/img91/179/img46409wz.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://img91.imageshack.us/img91/179/img46409wz.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;The last Sunday evening when Pam and I were in Huntington Beach for Boeing, we travelled down to Laguna Beach to see the sunset, eat dinner and witness the hotness of the OC.&lt;br /&gt;&lt;br /&gt;This picture I took that day deserves a 'Priceless' award!  No plates or registration AND illegally parked.  The officer writing the ticket said, "He can afford this!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-114203080289074878?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/114203080289074878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=114203080289074878' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114203080289074878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114203080289074878'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/03/par-for-oc.html' title='Par for the OC?'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-114202635791253357</id><published>2006-03-10T15:18:00.000-06:00</published><updated>2006-03-10T15:32:37.943-06:00</updated><title type='text'>Company library: It begins</title><content type='html'>Need a five-minute break this beautiful Friday afternoon? No, I don’t need to bum a smoke or play ping pong – I’m talking about a diversion that has a more, er, direct benefit to the company. ;)&lt;br /&gt;&lt;br /&gt;I’ve been thinking about a way in which we can leverage our employees’ collective book collection (is that redundant redundant?) so that we can know what books we have at our disposal. So I invite you to help me try LibraryThing, an online book-cataloging site. It’s free and easy, and I’ve registered an asynchrony user for us all to share. It uses the concept of tagging, which you may be familiar with from sites like Flickr or del.icio.us.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Go to &lt;a href="http://www.librarything.com"&gt;http://www.librarything.com&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Sign in using &lt;span style="font-weight: bold;"&gt;asynchrony/asynchrony&lt;/span&gt;. &lt;/li&gt;&lt;li&gt;Click the Add books tab. &lt;/li&gt;&lt;li&gt;Add as many of your books as you like, tagging liberally. &lt;/li&gt;&lt;/ol&gt; Some examples of tags might be the book owner (or, since many of our books are technically company-owned, book “possessor”) – I suggest using aCe login name – location or topics. Check out the list of books already in our catalog to see what I mean.&lt;br /&gt;&lt;br /&gt;If you have any questions or ideas, please let me know. Thanks!&lt;br /&gt;&lt;br /&gt;-Matt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-114202635791253357?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/114202635791253357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=114202635791253357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114202635791253357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/114202635791253357'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/03/company-library-it-begins.html' title='Company library: It begins'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113959312702958744</id><published>2006-02-10T11:15:00.001-06:00</published><updated>2006-02-10T11:38:47.093-06:00</updated><title type='text'>Top 10 Advantages of ADD in a High Tech Career</title><content type='html'>Are you ADD?  Yes?  Great!&lt;br /&gt;&lt;br /&gt;Now you don't need to spend money on drugs to treat the problem, go into High Tech and MAKE MONEY from your SKILLS!&lt;br /&gt;&lt;br /&gt;Of course, we need testers too.  Know any OCD people?&lt;br /&gt;&lt;br /&gt;And, if you're ADD and OCD (like me), it could be a BFD!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113959312702958744?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://adultaddstrengths.com/2006/02/09/top-10-advantages-of-add-in-a-high-tech-career/' title='Top 10 Advantages of ADD in a High Tech Career'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113959312702958744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113959312702958744' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113959312702958744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113959312702958744'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/02/top-10-advantages-of-add-in-high-tech_10.html' title='Top 10 Advantages of ADD in a High Tech Career'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113959197470588495</id><published>2006-02-10T11:15:00.000-06:00</published><updated>2006-02-10T11:42:26.216-06:00</updated><title type='text'>Top 10 Advantages of ADD in a High Tech Career</title><content type='html'>I guess it's fitting that Blogger locked up and I tried to repost this without checking. haha... chuckle chuckle&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113959197470588495?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://adultaddstrengths.com/2006/02/09/top-10-advantages-of-add-in-a-high-tech-career/' title='Top 10 Advantages of ADD in a High Tech Career'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113959197470588495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113959197470588495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113959197470588495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113959197470588495'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/02/top-10-advantages-of-add-in-high-tech.html' title='Top 10 Advantages of ADD in a High Tech Career'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113839879726291616</id><published>2006-01-27T15:45:00.000-06:00</published><updated>2006-01-27T15:53:17.313-06:00</updated><title type='text'>Which language to use?</title><content type='html'>This guy did an essay on 'C++ vs Java vs Python vs Ruby : a first impression'.&lt;br /&gt;&lt;a href="http://www.dmh2000.com/cjpr/"&gt;http://www.dmh2000.com/cjpr/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What no comparison to some wonderful Micro$oft language? (ha, no)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113839879726291616?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.dmh2000.com/cjpr/' title='Which language to use?'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113839879726291616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113839879726291616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113839879726291616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113839879726291616'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/01/which-language-to-use.html' title='Which language to use?'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113837977541920727</id><published>2006-01-27T10:31:00.000-06:00</published><updated>2006-01-27T10:36:15.433-06:00</updated><title type='text'>Maybe we're on the wrong track...</title><content type='html'>Found out about this conference via &lt;a href="http://www.agileprogrammer.com/oneagilecoder/"&gt;Brian Button's blog&lt;/a&gt;; I have to admit, some of the arguments are pretty compelling.  We've been doing Agile for a couple of years now...maybe it's time to step back and re-evaluate.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.waterfall2006.com/"&gt;http://www.waterfall2006.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think I'm going to have to attend, anyone care to join me?  We can all get tickets to Tim Lister's keynote: "Dead Fish Can't Swim But They Can Float Down a Waterfall."&lt;br /&gt;&lt;br /&gt;Save the date: April 1, 2006!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113837977541920727?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.waterfall2006.com/' title='Maybe we&apos;re on the wrong track...'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113837977541920727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113837977541920727' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113837977541920727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113837977541920727'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/01/maybe-were-on-wrong-track.html' title='Maybe we&apos;re on the wrong track...'/><author><name>N</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113822072301100152</id><published>2006-01-25T14:23:00.000-06:00</published><updated>2006-01-25T14:25:23.023-06:00</updated><title type='text'>Keep the press free</title><content type='html'>If the &lt;a href="http://www.opinionjournal.com/extra/?id=110007867"&gt;left's regulatory war against free speech&lt;/a&gt; moves onto the soil of blogs, what would happen to our little company blog, anyway?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113822072301100152?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113822072301100152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113822072301100152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113822072301100152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113822072301100152'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/01/keep-press-free.html' title='Keep the press free'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113814145582943173</id><published>2006-01-24T16:23:00.000-06:00</published><updated>2006-01-24T16:24:15.840-06:00</updated><title type='text'>URL o' the day</title><content type='html'>&lt;a href="http://chucknorrisfacts.com/"&gt;Chuck Norris Facts&lt;/a&gt;. Read them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113814145582943173?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://chucknorrisfacts.com/' title='URL o&apos; the day'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113814145582943173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113814145582943173' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113814145582943173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113814145582943173'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/01/url-o-day.html' title='URL o&apos; the day'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113691691528673958</id><published>2006-01-10T12:12:00.000-06:00</published><updated>2006-01-10T12:17:47.773-06:00</updated><title type='text'>Robots Go To War</title><content type='html'>Here is an article from Popular Science which talks about robotic initiatives like FCS.&lt;br /&gt;&lt;a href="http://tinyurl.com/8p7fs"&gt;Article&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As the Robo-Gaffo will someday say, "Oh Snap! (brrt, bing)  It's on!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113691691528673958?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.popsci.com/popsci/technology/generaltechnology/f59ca60b2e948010vgnvcm1000004eecbccdrcrd.html' title='Robots Go To War'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113691691528673958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113691691528673958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113691691528673958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113691691528673958'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2006/01/robots-go-to-war.html' title='Robots Go To War'/><author><name>Duke</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_N98uqaXVK1I/TPxiTYBUlhI/AAAAAAAAABE/EhSRmJSYqrs/s1600-R/574417.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113460352516875357</id><published>2005-12-14T17:38:00.000-06:00</published><updated>2005-12-14T17:41:30.273-06:00</updated><title type='text'>Hey, who's that guy with all the chicks!?</title><content type='html'>Asynchrony gadfly Dan King is on the prowl again, this time &lt;a href="http://www.insidestl.com/stlnightlife/displayimage.php?album=121&amp;amp;pos=5"&gt;getting some attention at the DD Lounge&lt;/a&gt; in Brentwood. Hey, Dan, take your satchel off and have a beer -- or five!&lt;br /&gt;&lt;br /&gt;This strikes a little too close to home for my taste, living as I do about 500 feet from the DD...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113460352516875357?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113460352516875357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113460352516875357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113460352516875357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113460352516875357'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/12/hey-whos-that-guy-with-all-chicks.html' title='Hey, who&apos;s that guy with all the chicks!?'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-113320168526007344</id><published>2005-11-28T12:09:00.000-06:00</published><updated>2005-12-02T14:46:01.383-06:00</updated><title type='text'>Watch the earth move for Dan</title><content type='html'>This is a must-see for all internet users (QuickTime required): &lt;a href="http://www.uberu.com/DanJump.mov"&gt;Dan's Thanksgiving-weekend kite-flying adventure&lt;/a&gt; (file also available at: \\geonosis\public\dan\video\DanJump.mov). Your indifferent narrator is Mike Gaffney. Dan is "flying" a &lt;a href="http://www.windpowersports.com/kites/flexifoil/blade.html"&gt;20' x 6' foil kite&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;He's thankful to be alive.&lt;br /&gt;&lt;br /&gt;If you can't get enough from that footage, download the post-flight trauma coverage (\\geonosis\public\dan\video\DanJumpFull.mp4).&lt;br /&gt;&lt;br /&gt;Disclaimer: Not suitable for audiences who are easily frightened. Rated PG-13 for some language and on-screen violence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-113320168526007344?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/113320168526007344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=113320168526007344' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113320168526007344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/113320168526007344'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/11/watch-earth-move-for-dan.html' title='Watch the earth move for Dan'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-112119103482616869</id><published>2005-07-12T12:57:00.000-05:00</published><updated>2005-07-12T12:57:14.860-05:00</updated><title type='text'>Backwards Bowler Takes Baton Rouge By Storm</title><content type='html'>Specifically for those of you who like an oddity, this story may just "strike" a chord:  http://www.bowl.com/articleView.aspx?i=10669&amp;f=1&lt;br /&gt;&lt;br /&gt;IF you look deeper into this, you can actually view a news report which shows this guy, who actually averages better than 180 and has recorded a 279 game.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-112119103482616869?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://asynchrony.blogspot.com/' title='Backwards Bowler Takes Baton Rouge By Storm'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/112119103482616869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=112119103482616869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/112119103482616869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/112119103482616869'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/07/backwards-bowler-takes-baton-rouge-by.html' title='Backwards Bowler Takes Baton Rouge By Storm'/><author><name>Hoish</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-112110223924384562</id><published>2005-07-11T12:02:00.000-05:00</published><updated>2005-07-12T10:36:14.713-05:00</updated><title type='text'>Aaron Gets It On</title><content type='html'>All of us here at Asynchrony have unique talents (some more desirable than others), but few of us are gifted -- and courageous -- enough to share them with an live audience full of strangers, including television viewers. That's what makes Aaron "Marvin" Molitor's recent performance of&lt;span style="font-style: italic;"&gt; Let's Get It On&lt;/span&gt; in &lt;a href="http://www.kmov.com/contests/luckyBreak/splash_070104luckyBreak.htm"&gt;Harrah’s Lucky Break&lt;/a&gt; impressive -- and he won!&lt;br /&gt;&lt;br /&gt;Aaron was one of 32 weekly winners who will go on to compete for one of eight semi-finalist spots. Those are eventually narrowed to three finalists and then one winner. As a weekly winner, he received two cardinal tickets, a one-night stay and dinner for two at Harrah’s St. Louis, a $50 gift certificate to Michael Genovese Jewelers and to top all that off $50 in gift certificates to Dairy Queen. I guess we know who's buying lunch.&lt;br /&gt;&lt;br /&gt;So Aaron, we know it's much more than the glorified karaoke contest you claimed it was, it's a chance for your co-workers to privately make fun of you while &lt;a href="%5C%5Cgeonosis%5Cpublic%5CAaronLuckyBreak.avi"&gt;viewing your performance on our desktops&lt;/a&gt;. We salute, you, Mister Casino-Talent-Search-Contest Winner!&lt;br /&gt;&lt;br /&gt;(Seriously, though, Aaron's quite a singer -- check out &lt;a href="%5C%5Cgeonosis%5Cpublic%5CAaronLuckyBreak.avi"&gt;the video&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-112110223924384562?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/112110223924384562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=112110223924384562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/112110223924384562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/112110223924384562'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/07/aaron-gets-it-on.html' title='Aaron Gets It On'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-112085157255288891</id><published>2005-07-08T14:34:00.000-05:00</published><updated>2005-07-08T14:40:04.823-05:00</updated><title type='text'>Great Moments in Asynchrony History</title><content type='html'>On this date, 2002:&lt;br /&gt;&lt;br /&gt;PDA Defense support specialist Darren "Radar" Ruotolo responds to an urgent customer email, replying "We apologize for any incontinence you may have experienced."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;This Great Moment in Asynchrony History has been brought to you by Microsoft Spellchecker: "Transforming your mistakes into bigger ones."&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-112085157255288891?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/112085157255288891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=112085157255288891' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/112085157255288891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/112085157255288891'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/07/great-moments-in-asynchrony-history.html' title='Great Moments in Asynchrony History'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111928109075341925</id><published>2005-06-20T10:22:00.000-05:00</published><updated>2005-06-20T10:24:50.763-05:00</updated><title type='text'>Agile Documentation</title><content type='html'>Our XP mentor Brian Button recently published &lt;a href="http://www.agilestl.com/Articles/DoubleDuty.pdf"&gt;an article&lt;/a&gt; about how to use tests to make API documentation for outside developers that's a lot more useful than a bunch of words in a manual.  It's not far from the way we're doing things anyway, but puts some formalities and best practices behind it.  Good stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111928109075341925?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.agilestl.com/Articles/DoubleDuty.pdf' title='Agile Documentation'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111928109075341925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111928109075341925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111928109075341925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111928109075341925'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/06/agile-documentation.html' title='Agile Documentation'/><author><name>N</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111901751616551978</id><published>2005-06-17T09:11:00.000-05:00</published><updated>2005-06-17T09:13:53.446-05:00</updated><title type='text'>Hey Mom, I'm on MTV!</title><content type='html'>&lt;a href=http://www.gamersquarter.com/&gt;&lt;img align=right src=http://www.gamersquarter.com/images/Issue2frontSM.jpg&gt;&lt;/a&gt;Wes Ehrlichman, georgeous Software Support Specialist working at the St. Louis Asynchrony office, works on an independant Video Game Magazine on the side called &lt;a href=http://www.gamersquarter.com/&gt;The Gamer's Quarter&lt;/a&gt;.  His magazine has recently been featured in an &lt;a href=http://www.mtv.com/news/articles/1504242/20050616/index.jhtml?headlines=true&gt;MTV News story&lt;/a&gt;.  Be sure to check them both out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111901751616551978?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://asynchrony.blogspot.com/' title='Hey Mom, I&apos;m on MTV!'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111901751616551978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111901751616551978' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111901751616551978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111901751616551978'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/06/hey-mom-im-on-mtv.html' title='Hey Mom, I&apos;m on MTV!'/><author><name>SuperWes</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111686890008984952</id><published>2005-05-23T12:20:00.000-05:00</published><updated>2005-05-23T12:21:40.096-05:00</updated><title type='text'>Favicon maker</title><content type='html'>I stumbled upon &lt;a href="http://www.html-kit.com/favicon/"&gt;this site&lt;/a&gt; a few weeks back -- it convert an image into a favicon in seconds! Pretty cool, especially for web designers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111686890008984952?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.html-kit.com/favicon/' title='Favicon maker'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111686890008984952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111686890008984952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111686890008984952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111686890008984952'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/05/favicon-maker.html' title='Favicon maker'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111661884689815306</id><published>2005-05-20T09:54:00.000-05:00</published><updated>2005-05-20T17:10:49.533-05:00</updated><title type='text'>Star Wars: The Day After</title><content type='html'>All right, so most of us were so consumed yesterday with our mad Demo Ball skills that we didn't have much time to chat about the movie. What did everyone think? I'll get us started with a &lt;a href="http://www.stltoday.com/stltoday/entertainment/reviews.nsf/movie/story/9A10AAD51622C96C86257005004324AB?OpenDocument"&gt;review from the Post-Dispatch by Joe Williams&lt;/a&gt;. Now I'm not a big fan of Williams's, but I think it's hard to disagree with his comments.&lt;br /&gt;&lt;br /&gt;Also, from the WSJ review today:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;"Lucas goes to the dull side"&lt;/li&gt;   &lt;li&gt;"Still, all of the visual inventions in all of the worlds of that far-off galaxy can't hide the clumsiness of the film's stab at profundity. "My powers have doubled since the last time we met," Anakin boasts to an adversary, but Mr. Christensen's acting powers have not."&lt;/li&gt; &lt;/ul&gt; I'm not sure whom they're talking about, but could it be that they thought Peter Frampton was in reality Hayden Christensen, the wooden actor who played Anakin in Episode II?&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://images.zap2it.com/ltvimages/images/240/starwarsepisode3_240_001.jpg" height="180" /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src="http://rockpix.com/gallery/frampton2.jpg" style="" height="180" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111661884689815306?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111661884689815306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111661884689815306' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111661884689815306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111661884689815306'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/05/star-wars-day-after.html' title='Star Wars: The Day After'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111566038231209701</id><published>2005-05-09T12:31:00.000-05:00</published><updated>2005-05-09T12:39:42.480-05:00</updated><title type='text'>Needed: Help converting Baseball Encyclopedia code</title><content type='html'>&lt;lee com=""&gt;Lee Sinins, the creator of the highly popular (well, among baseball stat-geeks, anyway) &lt;a href="http://www.baseball-encyclopedia.com/"&gt;Sabermetric Baseball Encyclopedia&lt;/a&gt;, is looking for someone who could help him convert the encyclopedia's code from Windows to Mac. I know we're increasingly getting Mac experience (or is it simply &lt;span style="font-style: italic;"&gt;ownership &lt;/span&gt;experience?), so maybe someone could lend him a hand.&lt;br /&gt;&lt;br /&gt;If you're interested, you can contact me or &lt;a href="mailto:lee@baseball-encyclopedia.com"&gt;Lee directly&lt;/a&gt;.&lt;br /&gt;&lt;/lee&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111566038231209701?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111566038231209701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111566038231209701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111566038231209701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111566038231209701'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/05/needed-help-converting-baseball.html' title='Needed: Help converting Baseball Encyclopedia code'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111471098566104010</id><published>2005-04-28T12:56:00.000-05:00</published><updated>2005-04-28T13:02:07.996-05:00</updated><title type='text'>Game Developers using XP</title><content type='html'>&lt;img src=http://www.wired.com/wired/archive/11.09/images/FT_xmen_1.jpg align=right width=150&gt;I was checking an indie game development web site and came across an article by someone who is using ExtremeProgramming techinques to create their game engine.  &lt;a href=http://ludumdare.com/articles/?link=v&amp;arid=13&gt;Here's the link&lt;/a&gt;, and here's a quote:&lt;blockquote&gt;I started using XP (ExtremeProgramming) today for the first time, on the first class of the LudiEngine and within the first 15 minutes I think I have already become hooked.&lt;br /&gt;&lt;br /&gt;Essentially what I am starting off with under the XP principles is the TestFirstDesign which means that you program your tests first and you use these tests to determine what you want your class to do.&lt;br /&gt;&lt;br /&gt;The immediate advantages I see and felt here are that I am only designing for functionality, so the class ends up being simpler than if I designed it’s code and data structures first. I may have been tempted to code more cases than I really need, but since I am only programming to satisfy the tests I have written, then I don’t do this.&lt;/blockquote&gt;This comes after getting back from the &lt;a href=http://www.gdconf.com&gt;Game Developer's Conference&lt;/a&gt; where I heard several people speak on how messed up the project scheduling and business practices in game development really are.  Maybe they could learn a bit from Asynchrony!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111471098566104010?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://ludumdare.com/articles/?link=v&amp;arid=13' title='Game Developers using XP'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111471098566104010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111471098566104010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111471098566104010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111471098566104010'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/04/game-developers-using-xp.html' title='Game Developers using XP'/><author><name>SuperWes</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111350306461860789</id><published>2005-04-14T13:24:00.000-05:00</published><updated>2005-04-14T13:34:38.056-05:00</updated><title type='text'>Impress Your Date with the Postmodern Essay Generator</title><content type='html'>&lt;img src="http://www.thetick.ws/images/ansArthur%20and%20date.jpg" align="right" width="200" /&gt;You can use this &lt;a href="http://www.elsewhere.org/cgi-bin/postmodern/"&gt;Random Postmodern Essay Generator&lt;/a&gt; to create a randomly generated essay that uses so many big words that no matter how educated your date is, she probably won't realize that what you're saying makes absolutely no sense. She'll want those "smart genes" in her kids and you may just get lucky. Check out this quote from one of the essays I found/created:&lt;blockquote&gt;"Society is intrinsically responsible for sexism," says Baudrillard; however, according to Geoffrey[2] , it is not so much society that is intrinsically responsible for sexism, but rather the fatal flaw, and some would say the absurdity, of society. Therefore, the subject is contextualised into a conceptual narrative that includes sexuality as a paradox. Scuglia[3] holds that we have to choose between precultural nihilism and the dialectic paradigm of narrative.&lt;/blockquote&gt;Pure gold right there buddy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111350306461860789?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://asynchrony.blogspot.com/' title='Impress Your Date with the Postmodern Essay Generator'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111350306461860789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111350306461860789' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111350306461860789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111350306461860789'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/04/impress-your-date-with-postmodern.html' title='Impress Your Date with the Postmodern Essay Generator'/><author><name>SuperWes</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111258076148502209</id><published>2005-04-03T21:09:00.000-05:00</published><updated>2005-04-03T21:12:41.486-05:00</updated><title type='text'>A random find</title><content type='html'>&lt;a href="http://audiokarma.org/forums/showthread.php?t=30442&amp;page=4"&gt;Something interesting&lt;/a&gt; I happened to come across just now. Check out the id and avatar of the first post on the page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111258076148502209?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://audiokarma.org/forums/showthread.php?t=30442&amp;page=4' title='A random find'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111258076148502209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111258076148502209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111258076148502209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111258076148502209'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/04/random-find.html' title='A random find'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.superwes.com/forum/images/avatars/137654194640eeb324edbe1.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111211063217016051</id><published>2005-03-29T09:33:00.000-06:00</published><updated>2005-03-29T09:37:12.173-06:00</updated><title type='text'>Share video from your PC with Olivelink</title><content type='html'>&lt;a href="http://www.olivelink.com/"&gt;Olivelink&lt;/a&gt; allows you to stream video to anyone in the world from your PC.  They're in &lt;a href="http://www.olivelink.com/survey/"&gt;beta&lt;/a&gt; at the moment.  I haven't tried it yet, but it seems like a pretty simple way to share personal video without either sending huge files or using an outside service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111211063217016051?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.olivelink.com/' title='Share video from your PC with Olivelink'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111211063217016051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111211063217016051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111211063217016051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111211063217016051'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/03/share-video-from-your-pc-with.html' title='Share video from your PC with Olivelink'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-111023033276197207</id><published>2005-03-07T15:12:00.000-06:00</published><updated>2005-03-07T15:18:52.833-06:00</updated><title type='text'>Google updates desktop search</title><content type='html'>Despite some performance issues reported by some of our co-workers, I thought it worth noting that a new non-beta version of &lt;a href="http://desktop.google.com/"&gt;Google Desktop Search&lt;/a&gt; was released yesterday. Very interesting is the upcoming release of api's that will allow the inclusion of both desktop and internet searches from applications.&lt;br /&gt;&lt;br /&gt;&lt;table valign="center" border="0" cellpadding="0" cellspacing="1"&gt; &lt;tbody&gt;&lt;tr valign="center"&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td&gt; &lt;br /&gt;&lt;/td&gt;                 &lt;td&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;New! &lt;/b&gt;&lt;/span&gt; &lt;/td&gt;               &lt;/tr&gt;               &lt;tr valign="center"&gt;                 &lt;td&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td&gt;&lt;span style=""&gt;&lt;img style="vertical-align: middle;" alt="Netscape" mail="" src="http://desktop.google.com/images/netscape.gif" height="16" width="16" /&gt;  Netscape Mail / Thunderbird &lt;/span&gt;&lt;/td&gt;               &lt;/tr&gt;               &lt;tr valign="center"&gt;                 &lt;td&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td valign="top"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td valign="top"&gt;&lt;span style=""&gt;&lt;img style="vertical-align: middle;" alt="Netscape/Firefox/Mozilla" src="http://desktop.google.com/images/ff.gif" height="16" width="16" /&gt;  Netscape / Firefox / Mozilla&lt;/span&gt;&lt;/td&gt;               &lt;/tr&gt;               &lt;tr&gt;                 &lt;td valign="center"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td nowrap="nowrap"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td nowrap="nowrap"&gt;&lt;span style=""&gt;&lt;img style="vertical-align: middle;" alt="PDF" src="http://desktop.google.com/images/pdf.gif" height="16" width="16" /&gt;  PDF&lt;/span&gt;&lt;/td&gt;               &lt;/tr&gt;               &lt;tr&gt;                 &lt;td valign="center"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td valign="bottom"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td valign="bottom"&gt;&lt;span style=""&gt;&lt;img style="vertical-align: middle;" alt="Music" src="http://desktop.google.com/images/mus.gif" height="16" width="16" /&gt;  Music&lt;/span&gt;&lt;/td&gt;               &lt;/tr&gt;               &lt;tr&gt;                 &lt;td valign="center"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td valign="bottom"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td valign="bottom"&gt;&lt;span style=""&gt;&lt;img style="vertical-align: middle;" alt="Images" src="http://desktop.google.com/images/jpg.gif" height="16" width="16" /&gt;  Images&lt;/span&gt;&lt;/td&gt;               &lt;/tr&gt;               &lt;tr&gt;                 &lt;td valign="center"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td nowrap="nowrap"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td nowrap="nowrap"&gt;&lt;span style=""&gt;&lt;img style="vertical-align: middle;" alt="Video" src="http://desktop.google.com/images/mov.gif" height="16" width="16" /&gt;  Video&lt;/span&gt;&lt;/td&gt;               &lt;/tr&gt;               &lt;tr&gt;                 &lt;td valign="center"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td valign="center"&gt;&lt;br /&gt;&lt;/td&gt;                 &lt;td valign="center"&gt;&lt;br /&gt;&lt;/td&gt;               &lt;/tr&gt;               &lt;tr&gt;                 &lt;td colspan="3" valign="center"&gt;&lt;table style="width: 377px; height: 18px;" border="0" cellpadding="0" cellspacing="0"&gt;                     &lt;tbody&gt;&lt;tr&gt;                       &lt;td valign="top" width="6%"&gt;&lt;br /&gt;&lt;/td&gt;                       &lt;td width="94%"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-111023033276197207?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://battellemedia.com/archives/001305.php' title='Google updates desktop search'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/111023033276197207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=111023033276197207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111023033276197207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/111023033276197207'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/03/google-updates-desktop-search.html' title='Google updates desktop search'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110996900177135602</id><published>2005-03-04T14:27:00.000-06:00</published><updated>2005-03-04T14:44:42.110-06:00</updated><title type='text'>Creative marketing opportunity for Asynchrony: Produce an Irish Film!</title><content type='html'>It only seems logical that Asynchrony should want to tap into &lt;a href="http://www.heritage.org/research/features/index/country.cfm?id=Ireland"&gt;one of the fastest-growing economies in the world&lt;/a&gt;. And, of course, I have just the plan to do it.&lt;br /&gt;&lt;br /&gt;What better way to get our name out than to produce a movie? An Irish filmmaker is offering on eBay a spot to appear in a documentary about Irish baseball. According to&lt;a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;category=88433&amp;amp;amp;item=5562717300&amp;amp;rd=1"&gt; the listing&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;The producers of "The Emerald Diamond" invite you to put your name and face on the big screen. High bidder is guaranteed a spot in the film and the title of "Executive Producer" with number one billing in the credits of the film.&lt;/blockquote&gt; As of this posting, the bid was at a reasonable $1,000. I can't imagine a better return on investment. So here's my proposal: The company pays the auction bid, and I'll assume all costs to travel overseas and fulfill the obligations for the film. I'll wear my Asynchrony "Join the revolution!" t-shirt on-camera, and my black "Code for love and money" one when I'm kicking back on the set or in the trailer. I would be happy to share the screen credit as "Asynchro Philip."&lt;br /&gt;&lt;br /&gt;Better yet: We're in the process of promoting our new HUBzone company -- let's kick it off with a major-motion picture credit and a simple name change: O'Synchrony. Bidding ends in eight days!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110996900177135602?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;category=88433&amp;item=5562717300&amp;rd=1' title='Creative marketing opportunity for Asynchrony: Produce an Irish Film!'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110996900177135602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110996900177135602' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110996900177135602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110996900177135602'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/03/creative-marketing-opportunity-for.html' title='Creative marketing opportunity for Asynchrony: Produce an Irish Film!'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110996236212215840</id><published>2005-03-04T12:47:00.000-06:00</published><updated>2005-03-04T12:52:42.123-06:00</updated><title type='text'>Travel back to web sites of the past</title><content type='html'>&lt;img src="http://web.archive.org/images/wayback_logo_sm.gif" /&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.archive.org/web/web.php"&gt;Wayback Machine&lt;/a&gt; is an archive of web pages as they were on specific dates in the past, all the way back to 1996. For instance, you can see the evolution of &lt;a href="http://web.archive.org/web/*/http://www.asynchrony.com"&gt;www.asynchrony.com&lt;/a&gt;.&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110996236212215840?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.archive.org/web/web.php' title='Travel back to web sites of the past'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110996236212215840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110996236212215840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110996236212215840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110996236212215840'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/03/travel-back-to-web-sites-of-past.html' title='Travel back to web sites of the past'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110972856837431638</id><published>2005-03-01T19:45:00.000-06:00</published><updated>2005-03-01T19:58:21.140-06:00</updated><title type='text'>Bellevegan to speak at "Who owns culture?" forum</title><content type='html'>Thought &lt;a href="http://wilcoworld.net/news/"&gt;this&lt;/a&gt; might be interesting to a few of you (I really was thinking of you, Dave), though I'm not really sure how to enjoy it other than to buy a plane ticket to The Big Apple and attend it yourself (perhaps Wired will have a transcript afterward).&lt;br /&gt;&lt;br /&gt;I've never met Jeff Tweedy, a fellow Bellevegan (or Bellevillian, as some would have it), but &lt;span style="font-style: italic;"&gt;my good friend's older brother went to high school with him and he was pretty cool&lt;/span&gt;. I just like his music (particularly the old &lt;a href="http://uncletupelo.com/"&gt;UT&lt;/a&gt; days).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;JEFF TWEEDY AND LAWRENCE LESSIG AT NEW YORK PUBLIC LIBRARY ON APRIL 7 Jeff Tweedy and Stanford Law School professor Lawrence Lessig offer up their opinions regarding Napster, free culture, and the arts. Lessig wrote the 2004 book Free Culture: How Big Media Uses Technology and the Law to Lock Down Culture and Control Creativity. Steven Johnson, author of Interface Culture: How New Technology Transforms the Way We Create and Communicate, will moderate the discussion. Tickets on sale Thursday, March 17 at 10 a.m via Smarttix.com. Additional Ticket info to follow. &lt;p&gt;WHO OWNS CULTURE?&lt;br /&gt;          LIVE from the NYPL in conjunction with Wired magazine&lt;br /&gt;          Jeff Tweedy&lt;br /&gt;          Lawrence Lessig&lt;br /&gt;          Steven Johnson&lt;br /&gt;          Thursday, April 7 at 7 p.m.&lt;br /&gt;        Celeste Bartos Forum&lt;/p&gt; &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110972856837431638?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wilcoworld.net/news/' title='Bellevegan to speak at &quot;Who owns culture?&quot; forum'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110972856837431638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110972856837431638' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110972856837431638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110972856837431638'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/03/bellevegan-to-speak-at-who-owns.html' title='Bellevegan to speak at &quot;Who owns culture?&quot; forum'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110962853651156823</id><published>2005-02-28T16:04:00.000-06:00</published><updated>2005-02-28T16:09:48.073-06:00</updated><title type='text'>Copernic Desktop Search 1.5 Beta Available</title><content type='html'>I've tried a number of desktop search engines and my favorite at the moment is &lt;a href="http://www.copernic.com/en/products/desktop-search/whats-new.html"&gt;Copernic&lt;/a&gt;. One of the best features is its ability to index network drives, which is pretty important to many people here. It also seems to be very stable and doesn't obviously slow down the computer even when indexing.&lt;br /&gt;&lt;br /&gt;The new beta has a number of enhancements including Mozilla Thunderbird support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110962853651156823?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.copernic.com/en/products/desktop-search/whats-new.html' title='Copernic Desktop Search 1.5 Beta Available'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110962853651156823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110962853651156823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110962853651156823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110962853651156823'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/02/copernic-desktop-search-15-beta.html' title='Copernic Desktop Search 1.5 Beta Available'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110935110008166368</id><published>2005-02-25T11:03:00.000-06:00</published><updated>2005-02-25T11:07:38.043-06:00</updated><title type='text'>Firefox Upgrade available</title><content type='html'>All Firefox users are encouraged to download security update at mozilla.org&lt;br /&gt;&lt;br /&gt;February 24, 2005, (Mountain View, CA). The Mozilla Foundation, a non-profit organization dedicated to preserving choice and promoting innovation on the Internet, today released an update to its award-winning Firefox 1.0 browser. The Firefox security update is available for the 27 million users who have already downloaded the free browser. The Mozilla Foundation encourages all users to download the update, which is available now on all platforms at &lt;a href="www.mozilla.org"&gt;www.mozilla.org&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.mozilla.org/products/firefox/"&gt;&lt;br /&gt;Here's the download page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110935110008166368?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.mozilla.org/press/mozilla-2005-02-24.html' title='Firefox Upgrade available'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110935110008166368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110935110008166368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110935110008166368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110935110008166368'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/02/firefox-upgrade-available.html' title='Firefox Upgrade available'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110910980498605240</id><published>2005-02-22T16:00:00.000-06:00</published><updated>2005-02-22T16:03:24.986-06:00</updated><title type='text'>Gmail invites available</title><content type='html'>&lt;img src="http://gmail.google.com/gmail/help/images/logo.gif"&gt;&lt;br /&gt;&lt;br /&gt;If you'd like a gmail (google mail) account and haven't been able to snag an invite, your wait is over.  isnoop.net has a &lt;a href="http://isnoop.net/gmail/"&gt;gmail spooler&lt;/a&gt; with scores of donated gmail invites for the taking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110910980498605240?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://isnoop.net/gmail/' title='Gmail invites available'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110910980498605240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110910980498605240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110910980498605240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110910980498605240'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/02/gmail-invites-available.html' title='Gmail invites available'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110676364822859156</id><published>2005-02-10T12:17:00.000-06:00</published><updated>2005-02-14T10:34:10.256-06:00</updated><title type='text'>Wash Ave Lofts</title><content type='html'>stlouislofts.com is a great spot for finding many different lofts that are either under development or are already completed in the Washington Avenue area. Any lofts that are in the 63103 zip code fall into the HUBZone.&lt;br /&gt;&lt;br /&gt;Here are links to specific lofts around the area: Wash Ave, Soulard, CWE, etc. You will need to double check the addresses against the HUBZone locator to ensure that you are looking at a loft in the HUBZone. (https://eweb1.sba.gov/hubzone/internet/)&lt;br /&gt;&lt;br /&gt;http://www.gracelofts.com/gracelofts.html&lt;br /&gt;http://www.paulbrownlofts.com/&lt;br /&gt;http://www.2020washington.com/&lt;br /&gt;http://www.am-development.com/&lt;br /&gt;http://www.loftworks-stl.com/&lt;br /&gt;http://www.theannexlofts.com/&lt;br /&gt;http://www.wireworkslofts.com/&lt;br /&gt;http://www.eldershirtlofts.com/&lt;br /&gt;http://www.railwaylofts.com/&lt;br /&gt;http://www.3224.net/&lt;br /&gt;http://www.metrolofts-stl.com/&lt;br /&gt;http://www.stagneslofts.com/&lt;br /&gt;http://www.westgatelofts.com/&lt;br /&gt;http://www.citymuseum.org/lofts.html&lt;br /&gt;http://www.loftsatjthompsonsquare.com/&lt;br /&gt;http://www.continental-building.com/&lt;br /&gt;http://www.rudmanonthepark.com/&lt;br /&gt;http://www.loftworks-stl.com/printers/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110676364822859156?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.stlouislofts.com/' title='Wash Ave Lofts'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110676364822859156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110676364822859156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110676364822859156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110676364822859156'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/02/wash-ave-lofts.html' title='Wash Ave Lofts'/><author><name>stephanie greytak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110788464056673587</id><published>2005-02-08T11:41:00.000-06:00</published><updated>2005-02-08T11:44:00.566-06:00</updated><title type='text'>Google Maps in beta</title><content type='html'>Check out &lt;a href="http://maps.google.com/"&gt;Google's answer to MapQuest&lt;/a&gt;.  It's a pretty nice interface, although it was unable to find my parents' house accurately...&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110788464056673587?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://maps.google.com/' title='Google Maps in beta'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110788464056673587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110788464056673587' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110788464056673587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110788464056673587'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/02/google-maps-in-beta.html' title='Google Maps in beta'/><author><name>N</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110779180066354879</id><published>2005-02-07T09:51:00.000-06:00</published><updated>2005-02-07T09:56:40.663-06:00</updated><title type='text'>Mozilla Sunbird Calendar Just Released</title><content type='html'>&lt;img src="http://axentra.net/www/sunbird/images/comparison_1.png"&gt;&lt;br /&gt;&lt;br /&gt;Mozilla has just released &lt;a href="http://www.mozilla.org/projects/calendar/sunbird.html"&gt;Sunbird&lt;/a&gt;, the new alternative to Outlook's calendar.&lt;br /&gt;&lt;br /&gt;From the site:&lt;br /&gt;&lt;br /&gt;The Sunbird Project is a redesign of the &lt;a href="http://www.mozilla.org/projects/calendar/"&gt;Mozilla Calendar component&lt;/a&gt;. Our goal is to produce a cross platform standalone calendar application based on Mozilla's XUL user interface language. At the moment the Sunbird name is a project name. It is not official and may change in the future.&lt;br /&gt;&lt;br /&gt;Our intended user is someone who uses &lt;a href="http://http://www.mozilla.org/products/firefox/"&gt;Mozilla Firefox&lt;/a&gt; and &lt;a href="Mozilla Thunderbird"&gt;Mozilla Thunderbird&lt;/a&gt; and wants a calendar application based on Mozilla.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110779180066354879?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.mozilla.org/projects/calendar/sunbird.html' title='Mozilla Sunbird Calendar Just Released'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110779180066354879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110779180066354879' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110779180066354879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110779180066354879'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/02/mozilla-sunbird-calendar-just-released.html' title='Mozilla Sunbird Calendar Just Released'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110744695739348479</id><published>2005-02-03T10:09:00.000-06:00</published><updated>2005-02-03T10:09:17.393-06:00</updated><title type='text'>Spam Costs 2.2 Billion Annually in lost time!</title><content type='html'>&lt;a href="http://asynchrony.blogspot.com/"&gt;Asynchrony Community Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;Deleting spam costs nearly $22 billion each year, study says&lt;br /&gt;Associated Press&lt;br /&gt;Story continues below ad&lt;br /&gt;&lt;br /&gt;NEW YORK (AP) -- Time wasted deleting junk e-mail costs American businesses nearly $22 billion a year, according to a new study from the University of Maryland.&lt;br /&gt;&lt;br /&gt;A telephone-based survey of adults who use the Internet found that more than three-quarters receive spam daily. The average spam messages per day is 18.5 and the average time spent per day deleting them is 2.8 minutes.&lt;br /&gt;&lt;br /&gt;The loss in productivity is equivalent to $21.6 billion per year at average U.S. wages, according to the National Technology Readiness Survey produced by Rockbridge Associates, Inc., and the Center for Excellence in Service at Maryland's business school.&lt;br /&gt;&lt;br /&gt;The study, to be released Thursday, also found that 14 percent of spam recipients actually read messages to see what they say, and 4 percent of the recipients have bought something advertised through spam within the past year.&lt;br /&gt;&lt;br /&gt;The random survey of 1,000 U.S. adults was conducted in November and has a margin of sampling error of plus or minus 3 percentage points. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110744695739348479?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://asynchrony.blogspot.com/' title='Spam Costs 2.2 Billion Annually in lost time!'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110744695739348479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110744695739348479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110744695739348479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110744695739348479'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/02/spam-costs-22-billion-annually-in-lost.html' title='Spam Costs 2.2 Billion Annually in lost time!'/><author><name>Hoish</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110718995960825164</id><published>2005-01-31T10:40:00.000-06:00</published><updated>2005-01-31T10:45:59.606-06:00</updated><title type='text'>a9 adds yellow pages search</title><content type='html'>&lt;img src="http://a9.com/-/static/images/yp-screen.gif"&gt;&lt;br /&gt;&lt;br /&gt;Although they  haven't hit St. Louis yet for storefront images, &lt;a href="http://www.a9.com"&gt;A9.com&lt;/a&gt; (an &lt;a href="http://www.amazon.com"&gt;Amazon&lt;/a&gt; venture, offers a great new yellow pages search engine that plots hits on a street map, and adds images of the buildings when available.&lt;br /&gt;&lt;br /&gt;From their site: "The most powerful technology A9.com invented for Yellow Pages is “Block View,” which brings the Yellow Pages to life by showing a street view of millions of businesses and their surroundings. Using trucks equipped with digital cameras, global positioning system (GPS) receivers, and proprietary software and hardware, A9.com drove tens of thousands of miles capturing images and matching them with businesses and the way they look from the street."&lt;br /&gt;&lt;br /&gt;"The whole process (except for the driving!) is completely automatic, making it fast and efficient. Block View allows users to see storefronts and virtually walk up and down the streets of currently more than 10 U.S. cities using over 20 million photographs. We are driving and at some point hope to cover the whole country."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110718995960825164?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110718995960825164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110718995960825164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110718995960825164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110718995960825164'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/01/a9-adds-yellow-pages-search.html' title='a9 adds yellow pages search'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110658525493913040</id><published>2005-01-24T10:46:00.000-06:00</published><updated>2005-01-24T10:47:34.940-06:00</updated><title type='text'>I think it's time for an Asynchrony company car</title><content type='html'>And in my opinion, &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/B00067F1CE/ref=ase_downandoutint-20/002-8265547-2032852?v=glance&amp;s=miscellaneous"&gt;this one&lt;/a&gt; is ideal.  Just read the reviews!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110658525493913040?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110658525493913040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110658525493913040' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110658525493913040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110658525493913040'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/01/i-think-its-time-for-asynchrony.html' title='I think it&apos;s time for an Asynchrony company car'/><author><name>N</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110601742545254099</id><published>2005-01-17T20:54:00.000-06:00</published><updated>2005-01-18T19:43:53.830-06:00</updated><title type='text'>Woot.com makes the front page of CNN.com</title><content type='html'>&lt;img src="http://webpages.charter.net/jamesandjenny/images/cnnwoot.jpg" align="right" /&gt;&lt;br /&gt;Dave Rutledge's new affiliation, &lt;a href="http://www.woot.com/"&gt;woot.com&lt;/a&gt;, is linked on the home page of &lt;a href="http://www.cnn.com/"&gt;cnn.com&lt;/a&gt; today, just barely (you have to scroll to the bottom of the page to see it). The article featured is called &lt;a href="http://www.business2.com/b2/web/articles/0,17863,1014676,00.html?cnn=yes"&gt;The Wonders of Woot&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110601742545254099?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cnn.com#weatherBox' title='Woot.com makes the front page of CNN.com'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110601742545254099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110601742545254099' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110601742545254099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110601742545254099'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/01/wootcom-makes-front-page-of-cnncom.html' title='Woot.com makes the front page of CNN.com'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.superwes.com/forum/images/avatars/137654194640eeb324edbe1.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110600090750853262</id><published>2005-01-17T15:26:00.000-06:00</published><updated>2005-01-17T16:30:09.526-06:00</updated><title type='text'>Baseball blog renamed (VANITY)</title><content type='html'>Just wanted to let all you baseball fans know that we've renamed our baseball blog from Fallclassic (name connoted only an interest in post-season activity) to &lt;span style="font-weight: bold;"&gt;Fungoes&lt;/span&gt;. You can now read all the best news, analysis and witty observations about our national pastime at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fungoes.blogspot.com/"&gt;http://fungoes.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nate and I are frequent contributors. Come observe our baseball blogging prowess! Fungoes: &lt;a href="http://funwavs.com/wavfile.php?quote=4099&amp;amp;sound=16"&gt;Learn it, know it, live it.&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110600090750853262?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fungoes.blogspot.com/' title='Baseball blog renamed (VANITY)'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110600090750853262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110600090750853262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110600090750853262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110600090750853262'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/01/baseball-blog-renamed-vanity.html' title='Baseball blog renamed (VANITY)'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110546026034576901</id><published>2005-01-11T10:13:00.000-06:00</published><updated>2005-01-11T10:17:40.346-06:00</updated><title type='text'>Yahoo Desktop Search </title><content type='html'>&lt;img src="http://us.i1.yimg.com/us.yimg.com/i/tb/yds/mainLogo.gif"&gt;&lt;br /&gt;&lt;br /&gt;Choices, choices and more choices. Yahoo has just released &lt;a href="http://desktop.yahoo.com/"&gt;their flavor&lt;/a&gt; of desktop search in beta. It's power by &lt;a href="http://www.x1.com/"&gt;X1 Technologies&lt;/a&gt;, which has had a well-reviewed commercial desktop search product for quite some time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110546026034576901?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://desktop.yahoo.com/' title='Yahoo Desktop Search '/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110546026034576901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110546026034576901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110546026034576901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110546026034576901'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/01/yahoo-desktop-search.html' title='Yahoo Desktop Search '/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110537831573644107</id><published>2005-01-10T11:30:00.000-06:00</published><updated>2005-01-10T11:31:55.736-06:00</updated><title type='text'>Who's watching your webcam</title><content type='html'>This &lt;a href="http://www.boingboing.net/2005/01/04/googling_unsecured_w.html"&gt;post&lt;/a&gt; on Boing Boing describes Google searches that find unsecured webcams. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110537831573644107?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.boingboing.net/2005/01/04/googling_unsecured_w.html' title='Who&apos;s watching your webcam'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110537831573644107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110537831573644107' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110537831573644107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110537831573644107'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/01/whos-watching-your-webcam.html' title='Who&apos;s watching your webcam'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110476696909912718</id><published>2005-01-03T09:35:00.000-06:00</published><updated>2005-01-03T09:43:25.170-06:00</updated><title type='text'>Wikipedia critique by founder focuses on anti-elitist culture</title><content type='html'>&lt;a href="http://www.wikipedia.org/"&gt;Wikipedia&lt;/a&gt; founder &lt;a href="http://people.cohums.ohio-state.edu/sanger3/"&gt;Larry Sanger&lt;/a&gt; posted an &lt;a href="http://www.kuro5hin.org/story/2004/12/30/142458/25"&gt;article&lt;/a&gt; arguing that the site's anti-elitist culture needed to be changed. For anyone following collaboration technologies, the article and related thread makes for fascinating and useful reading.  This article is also being discussed on &lt;a href="http://slashdot.org/articles/05/01/03/144207.shtml?tid=95&amp;tid=1"&gt;slashdot&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110476696909912718?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.kuro5hin.org/story/2004/12/30/142458/25' title='Wikipedia critique by founder focuses on anti-elitist culture'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110476696909912718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110476696909912718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110476696909912718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110476696909912718'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2005/01/wikipedia-critique-by-founder-focuses.html' title='Wikipedia critique by founder focuses on anti-elitist culture'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110357759036040631</id><published>2004-12-20T15:16:00.000-06:00</published><updated>2004-12-20T15:30:33.190-06:00</updated><title type='text'>New Asynchrony Runners Blog</title><content type='html'>Are you an avid, occassional, or want to be but don't ever have time or the will power runner out there? If so, check out our new Asynchrony Runners Blog at &lt;a href="http://arunners.blogspot.com"&gt;http://arunners.blogspot.com&lt;/a&gt;. We'll be gearing up to April 10's half and full marathons, and we're sure you want to be a part of it. A lofty goal for sure, but wouldn't it be amazing to get 75% company participation in these events!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110357759036040631?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://arunners.blogspot.com/' title='New Asynchrony Runners Blog'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110357759036040631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110357759036040631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110357759036040631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110357759036040631'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2004/12/new-asynchrony-runners-blog.html' title='New Asynchrony Runners Blog'/><author><name>Myles</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110321271796068579</id><published>2004-12-16T09:56:00.000-06:00</published><updated>2004-12-16T09:58:37.960-06:00</updated><title type='text'>Ask Jeeves desktop search beta available</title><content type='html'>&lt;img src="http://sp.ask.com/docs/desktop/img/ajds_preview.gif"&gt;&lt;br /&gt;&lt;br /&gt;Yet another free desktop search offering, this time from &lt;a href="http://sp.ask.com/docs/desktop/"&gt;Ask Jeeves&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110321271796068579?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sp.ask.com/docs/desktop/' title='Ask Jeeves desktop search beta available'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110321271796068579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110321271796068579' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110321271796068579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110321271796068579'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2004/12/ask-jeeves-desktop-search-beta.html' title='Ask Jeeves desktop search beta available'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110314599460388234</id><published>2004-12-15T15:24:00.000-06:00</published><updated>2004-12-15T15:31:15.026-06:00</updated><title type='text'>Wireless Internet Access on-board by 2006?</title><content type='html'>Looks like we're going to be able to surf up in the air by end of next year!   For some of us "road warriors" this will be a welcome diversion to in-flight boredom.&lt;br /&gt;&lt;br /&gt;For details, see the story &lt;a href="http://story.news.yahoo.com/news?tmpl=story&amp;e=2&amp;u=/ap/20041215/ap_on_go_ca_st_pe/fcc_air_travelers"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110314599460388234?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://story.news.yahoo.com/news?tmpl=story&amp;e=2&amp;u=/ap/20041215/ap_on_go_ca_st_pe/fcc_air_travelers' title='Wireless Internet Access on-board by 2006?'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110314599460388234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110314599460388234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110314599460388234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110314599460388234'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2004/12/wireless-internet-access-on-board-by.html' title='Wireless Internet Access on-board by 2006?'/><author><name>Hoish</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110314610495415352</id><published>2004-12-15T15:19:00.000-06:00</published><updated>2004-12-15T15:28:24.953-06:00</updated><title type='text'>Wiki News</title><content type='html'>First there was the &lt;a href="http://en.wikipedia.org/wiki/Main_Page"&gt;wikipedia&lt;/a&gt;. Now comes &lt;a href="http://en.wikinews.org/wiki/Main_Page"&gt;WikiNews&lt;/a&gt; where citizen journalists from around the world can contribute to the online news digest.  From their mission statement:&lt;br /&gt;&lt;blockquote&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;While Wikinews aims to be a useful resource of its own, it will also provide an alterative to proprietary news agencies like the &lt;i&gt;Associated Press&lt;/i&gt; or &lt;i&gt;Reuters&lt;/i&gt;; that is, it will allow independent media outfits to get a high quality feed of news free of charge to complement their own reporting. Thanks to copyleft, anyone can create their own free news source—even a non-neutral one—on the basis of our work. Even if our articles will initially be few, they will be free, permanently available and not require registration before reading.&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size:85%;"&gt;While we are faced with many new challenges, Wikinews will adopt the key principles which have made Wikipedia and the other Wikimedia websites what they are today: &lt;a href="http://en.wikipedia.org/wiki/Wikipedia:Neutral_point_of_view" class="extiw" title="w:Wikipedia:Neutral point of view"&gt;neutrality&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/free_content" class="extiw" title="w:free content"&gt;free content&lt;/a&gt;, and an open decision-making process.&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size:85%;"&gt;We seek to promote the idea of the &lt;i&gt;citizen journalist&lt;/i&gt;, because we believe that everyone can make a useful contribution to painting the big picture of what is happening in the world around us. The time has come to create a free news source, by the people and for the people. We invite you to join us in this effort which has the potential to change the world forever.&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110314610495415352?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://en.wikinews.org/wiki/Main_Page' title='Wiki News'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110314610495415352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110314610495415352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110314610495415352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110314610495415352'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2004/12/wiki-news.html' title='Wiki News'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110306677490126286</id><published>2004-12-14T17:22:00.000-06:00</published><updated>2004-12-14T17:26:14.900-06:00</updated><title type='text'>Jigsaw snagged me already</title><content type='html'>There's a new social networking site called&lt;a href="http://www.jigsaw.com/"&gt; Jigsaw&lt;/a&gt; that launched in December.  It's basically a place to trade business contact information.   THEY ALREADY HAVE MY INFO!  Well, actually not my super-secret e-mail address (that I won't post here for fear of e-mail harvesting programs) but my "mass" email address.  Oh yeah...they also list my title as President!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110306677490126286?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://socialsoftware.weblogsinc.com/entry/1234000700022856/' title='Jigsaw snagged me already'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110306677490126286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110306677490126286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110306677490126286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110306677490126286'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2004/12/jigsaw-snagged-me-already.html' title='Jigsaw snagged me already'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110306565006020730</id><published>2004-12-14T17:02:00.000-06:00</published><updated>2004-12-14T17:07:30.060-06:00</updated><title type='text'>Microsoft desktop search beta not firefox friendly</title><content type='html'>I went to take a look at &lt;a href="http://beta.toolbar.msn.com/"&gt;Microsoft's challenge&lt;/a&gt; to &lt;a href="http://desktop.google.com/?promo=app-gds-en-us"&gt;Google Desktop Search&lt;/a&gt; and guess what...&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Warning! Your browser does not meet the  																	&lt;br /&gt;minimum system requirements. You are&lt;br /&gt;recommended to use the MSN Toolbar Suite  																	&lt;br /&gt;with Internet Explorer 5.01 or later.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Don't they know we've banned their friggin' browser here?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110306565006020730?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://beta.toolbar.msn.com/' title='Microsoft desktop search beta not firefox friendly'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110306565006020730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110306565006020730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110306565006020730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110306565006020730'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2004/12/microsoft-desktop-search-beta-not.html' title='Microsoft desktop search beta not firefox friendly'/><author><name>fourworlds</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8050462.post-110298214577927579</id><published>2004-12-13T17:52:00.000-06:00</published><updated>2004-12-13T17:55:45.780-06:00</updated><title type='text'>Weblog Awards Announced!</title><content type='html'>Some of my favorite blogs won (excepting &lt;a href="http://emptyisform.com/"&gt;Dave's personal blog&lt;/a&gt;). Curiously, the Asynchrony Community Blog did not garner any. Perhaps we should demand a recount in Ohio.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8050462-110298214577927579?l=asynchrony.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://2004weblogawards.com/' title='Weblog Awards Announced!'/><link rel='replies' type='application/atom+xml' href='http://asynchrony.blogspot.com/feeds/110298214577927579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8050462&amp;postID=110298214577927579' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110298214577927579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8050462/posts/default/110298214577927579'/><link rel='alternate' type='text/html' href='http://asynchrony.blogspot.com/2004/12/weblog-awards-announced.html' title='Weblog Awards Announced!'/><author><name>Pip</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/-Wxa21DStFwc/TozCcy_YMGI/AAAAAAAABKE/Nu9M08HZJpg/s220/matt-at-grayton.png'/></author><thr:total>1</thr:total></entry></feed>
