<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:a10="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Developmentor Instructor's Blog Posts</title>
    <description />
    <lastBuildDate>Sat, 19 May 2012 18:15:00 -0700</lastBuildDate>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DevelopmentorInstructors" /><feedburner:info uri="developmentorinstructors" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/GyhcD9v2jy0/testing-views-in-aspmvc.html</link>
      <a10:author>
        <a10:name>Llewellyn Falco (Approval Tests)</a10:name>
        <a10:uri>http://blog.approvaltests.com/2012/05/testing-views-in-aspmvc.html</a10:uri>
      </a10:author>
      <title>Llewellyn Falco (Approval Tests): Testing Views in Asp.Mvc</title>
      <description>For many years, the views (the html returned from an rendered MVC controller) were an extremely difficult thing to test. Like many unreachable things, they were declared “not worth it” and ignored.&lt;br /&gt;&lt;br /&gt;Until now,&lt;br /&gt;with &lt;a href="http://www.blogger.com/www.approvaltests.com"&gt;ApprovalTests&lt;/a&gt; we have created a “simple” way to test the rendered output of a view.&amp;nbsp; I say “simple” because there is a fair amount of overhead for the 1st test, which means we wanted to give you some resources to get it working for yourself.&lt;br /&gt;&lt;br /&gt;I created a short video tutorial, and &lt;a href="https://twitter.com/#!/jamesrcounts"&gt;Jim Counts&lt;/a&gt; put together a fabulous 3 part blog + Sample Code. &lt;br /&gt;&lt;br /&gt;Now you can decide for yourself how important it is to test the views.&lt;br /&gt;&lt;h3&gt;  Video :&lt;/h3&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:a9e9f078-404d-45f9-be70-60875f22d6aa" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div&gt;&lt;object height="252" width="448"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SttlPzwJw3U?hl=en&amp;amp;hd=1"&gt;  &lt;/param&gt;&lt;embed src="http://www.youtube.com/v/SttlPzwJw3U?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;  Blog :&lt;/h3&gt;&lt;a href="http://ihadthisideaonce.wordpress.com/2012/05/15/approvaltests-and-mvc-views-getting-started/"&gt;Part 1 – Getting Started&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://ihadthisideaonce.wordpress.com/2012/05/16/approvaltests-and-mvc-views-working-with-data/"&gt;Part 2 – Working with Data&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://ihadthisideaonce.wordpress.com/2012/05/17/approvaltests-and-mvc-views-tackling-the-build-server/"&gt;Part 3 – Tackling the Build Server&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;  Code:&lt;/h3&gt;&lt;a href="https://bitbucket.org/magnifico/mvctestsite" title="https://bitbucket.org/magnifico/mvctestsite"&gt;https://bitbucket.org/magnifico/mvctestsite&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1959052963816936322-7773895963022111936?l=blog.approvaltests.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=GyhcD9v2jy0:7bfy_3BUl-o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=GyhcD9v2jy0:7bfy_3BUl-o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=GyhcD9v2jy0:7bfy_3BUl-o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=GyhcD9v2jy0:7bfy_3BUl-o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=GyhcD9v2jy0:7bfy_3BUl-o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=GyhcD9v2jy0:7bfy_3BUl-o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=GyhcD9v2jy0:7bfy_3BUl-o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=GyhcD9v2jy0:7bfy_3BUl-o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/GyhcD9v2jy0" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 19 May 2012 18:15:00 -0700</pubDate>
      <a10:updated>2012-05-19T18:15:00-07:00</a10:updated>
    <feedburner:origLink>http://blog.approvaltests.com/2012/05/testing-views-in-aspmvc.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/YFsl-IUZ0mI/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/05/17/aws-rds-sql-server-vs-sql-azure-smackdown-importing-data/</a10:uri>
      </a10:author>
      <title>Lynn Langit: AWS RDS SQL Server vs. SQL Azure Smackdown – Importing Data</title>
      <description>This is first in a series of comparisons between Amazon Web Services RDS SQL Server and SQL Azure. It is useful for me to understand exactly which features and tools work with cloud-deployed instances of SQL Server. In this screencast &amp;#8230; &lt;a href="http://lynnlangit.wordpress.com/2012/05/17/aws-rds-sql-server-vs-sql-azure-smackdown-importing-data/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=435&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=YFsl-IUZ0mI:O8LSAcvOZwc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=YFsl-IUZ0mI:O8LSAcvOZwc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=YFsl-IUZ0mI:O8LSAcvOZwc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=YFsl-IUZ0mI:O8LSAcvOZwc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=YFsl-IUZ0mI:O8LSAcvOZwc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=YFsl-IUZ0mI:O8LSAcvOZwc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=YFsl-IUZ0mI:O8LSAcvOZwc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=YFsl-IUZ0mI:O8LSAcvOZwc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/YFsl-IUZ0mI" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 17 May 2012 13:39:06 -0700</pubDate>
      <a10:updated>2012-05-17T13:39:06-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/05/17/aws-rds-sql-server-vs-sql-azure-smackdown-importing-data/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/qtadNZ2zHhE/</link>
      <a10:author>
        <a10:name>Pinku Surana</a10:name>
        <a10:uri>http://surana.wordpress.com/2012/05/17/ubuntu-is-too-much-work/</a10:uri>
      </a10:author>
      <title>Pinku Surana: Ubuntu is too much work</title>
      <description>I&amp;#8217;m returning my laptop&amp;#8217;s SSD for a replacement drive. In the meantime, I loaded Ubuntu Precise on my Sony Z. I usually run Windows w/ Linux in a VM. The installation actually went just fine. It looked good, it appeared to work and all was well. Unfortunately, my laptop has a switch to manually choose [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=surana.wordpress.com&amp;#038;blog=1937801&amp;#038;post=348&amp;#038;subd=surana&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=qtadNZ2zHhE:osjxWG4vpaE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=qtadNZ2zHhE:osjxWG4vpaE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=qtadNZ2zHhE:osjxWG4vpaE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=qtadNZ2zHhE:osjxWG4vpaE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=qtadNZ2zHhE:osjxWG4vpaE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=qtadNZ2zHhE:osjxWG4vpaE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=qtadNZ2zHhE:osjxWG4vpaE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=qtadNZ2zHhE:osjxWG4vpaE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/qtadNZ2zHhE" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 17 May 2012 07:56:11 -0700</pubDate>
      <a10:updated>2012-05-17T07:56:11-07:00</a10:updated>
    <feedburner:origLink>http://surana.wordpress.com/2012/05/17/ubuntu-is-too-much-work/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/-SdCibj6StA/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/05/16/hadoop-on-azure-deck-and-screencasts/</a10:uri>
      </a10:author>
      <title>Lynn Langit: Hadoop on Azure – Deck and Screencasts</title>
      <description>Enjoy this deck (and linked screencasts) covering Hadoop on Azure. &amp;#160;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=431&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-SdCibj6StA:gjnkPknPxTw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-SdCibj6StA:gjnkPknPxTw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-SdCibj6StA:gjnkPknPxTw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-SdCibj6StA:gjnkPknPxTw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-SdCibj6StA:gjnkPknPxTw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-SdCibj6StA:gjnkPknPxTw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-SdCibj6StA:gjnkPknPxTw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-SdCibj6StA:gjnkPknPxTw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/-SdCibj6StA" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 16 May 2012 10:54:27 -0700</pubDate>
      <a10:updated>2012-05-16T10:54:27-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/05/16/hadoop-on-azure-deck-and-screencasts/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/WKYIV85rypY/10-things-to-make-you-agile-adoption.html</link>
      <a10:author>
        <a10:name>Allan Kelly</a10:name>
        <a10:uri>http://allankelly.blogspot.com/2012/05/10-things-to-make-you-agile-adoption.html</a10:uri>
      </a10:author>
      <title>Allan Kelly: 10 Things to make you Agile adoption successfull</title>
      <description>One of the closing slides in my &lt;a href="http://softwarestrategy.co.uk/training.html"&gt;Agile Foundations course&lt;/a&gt; includes a quote from Ken Schwaber saying that only 30% of teams who attempt Scrum will be successful.  What I find interesting about this quote is that it aligns with many other change management studies.  Researchers like Harvard Professor &lt;a href="http://www.amazon.co.uk/gp/product/0875847471/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;tag=allankelly-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=0875847471"&gt;John Kotter&lt;/a&gt; regularly say 70% of major change efforts fail.&lt;br /&gt;&lt;br /&gt;On his &lt;a href="http://kenschwaber.wordpress.com/"&gt;blog Ken Schwaber&lt;/a&gt; says he doesn’t remember this and instead suggests only 30% will become “excellent development organizations.”&lt;br /&gt;&lt;br /&gt;Either way, the prognosis isn’t optimistic.  A few months ago, at the end of the course, someone asked the obvious question, a question so obvious I wonder why nobody has asked it before: “What can we do to ensure that we are in the 30% who make it?”&lt;br /&gt;&lt;br /&gt;Given that I had the Managing Director, the Director of Technology and most of the technology team in the room it was an excellent opportunity to set the change agenda.  And I fluffed it, &lt;a href="http://www.amazon.co.uk/gp/product/047051504X?ie=UTF8&amp;tag=allankelly-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=047051504X"&gt;despite having written a book on the subject&lt;/a&gt; I didn’t have a quick answer to hand.  But it set me thinking: “What are the 10 things a team can do to make Agile (any flavour) stick?”&lt;br /&gt;&lt;br /&gt;Here then is that list, the team in the room will recognise the first three, it was after that that I had to think.&lt;br /&gt;&lt;br /&gt;1) &lt;strong&gt;Use a physical board&lt;/strong&gt;: over the last year I have become convinced that the single biggest difference between teams which successfully adopt Agile working and those who try, fail, or end up stuck is the use of an actual physical board.&lt;br /&gt;&lt;br /&gt;I know some teams find this difficult, I know some teams are distributed, I know there is technology out there to do this for you but I stand by my point.  If you can make it physical, in a place where many, if not all, can see, then you are more likely to succeed.&lt;br /&gt;&lt;br /&gt;2) &lt;strong&gt;Start collecting and using statistics&lt;/strong&gt; and other data: velocity, burn-down, bugs identified, bugs logged, etc. etc.  Metrics have a bad name in software development - rightly in most cases.  But that only means that have been badly collected, managed and used, it doesn’t mean they aren’t useful.  At the very least measure your velocity and create a burn-down chart or cumulative flow diagram of the work to do or arising.&lt;br /&gt;&lt;br /&gt;3) &lt;strong&gt;Engage a coach/consultant&lt;/strong&gt;: at the risk of being accused of trying to make work for myself I should say you can adopt Agile all by yourself.  You can read the books, you can experiment, you can go on courses.  But doing it without help makes the whole process slower and increases the risk that you won’t make it to the 30%.&lt;br /&gt;&lt;br /&gt;Personally, I find it difficult to know just how an Agile Coach differs from an Agile Consultant.   What ever you call the role you want someone who can:&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;Provide advice on which practices and process to adopt, and how to best adopt them&lt;/li&gt;&lt;li&gt;Offer examples of what they have seen work, and not work, elsewhere, and how other team tackle similar issues&lt;/li&gt;&lt;li&gt;Observe, examine, query and challenge your thinking on what you are doing&lt;/li&gt;&lt;li&gt;Challenge your thinking and point out opportunities and idea that you haven’t seen yet&lt;/li&gt;&lt;/ul&gt;You may need to work with multiple advisors since few will be able to cover all process, practice, technology, product and strategy bases.  On very large team it might be worth having full-time consultants although the model I have had most success with is light-touch coaching in tandem with a pull-change model (below).&lt;br /&gt;&lt;br /&gt;I don’t believe such an advisor needs to be full time.  I practise, and have written before about, &lt;a href="http://allankelly.blogspot.com/2011/05/light-touch-agile-coaching-in-cornish.html"&gt;light-touch Agile coaching&lt;/a&gt;, in this model I return to companies at intervals, perhaps monthly, perhaps more frequently, sometimes less frequently and continue the discussion. &lt;br /&gt;&lt;br /&gt;4) &lt;strong&gt;Action over talking&lt;/strong&gt;: action speaks louder than words, until you start trying to do Agile you can’t foresee all the issues and questions which will arise.  The longer you spend talking about doing it, and not actually doing it, the more it anticipation will build up, the more more it will look like jus another management fad.&lt;br /&gt;&lt;br /&gt;By all means talk about it, plan a bit but there is no real substitute for just getting stuck in and doing it.  In particular do not spend your time agonising over whether to do XP or Scrum, or Lean or FDD, or DSDM or Kanban.  They are all pretty much of a muchness and you will end you up crafting your own hybrid anyway.&lt;br /&gt;&lt;br /&gt;Likewise, discusses a few weeks ago: &lt;a href="http://allankelly.blogspot.com/2012/03/agile-where-evidence.html"&gt;don’t waste your time looking for evidence, make your own&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Planning your way to Agile is anathema, just do it - JFDI. &lt;br /&gt;&lt;br /&gt;5) &lt;strong&gt;Give everyone training and start group wide discussions&lt;/strong&gt;: teams don’t get to be Agile by management deeming “thou shalt be Agile” - although plenty of managers and team leaders have tried the approach.  Reading books works for some people but most books go unread, or the words go in one eye and out the other.&lt;br /&gt;&lt;br /&gt;If you want to be Agile then invest in taking the time to explain to people what it is.  But don’t stop there, make time for people to talk about what Agile is to them, what they like, don’t like, will do, won’t do.  Agile is a team sport and unless the team have a shared understanding they will be playing different games.&lt;br /&gt;&lt;br /&gt;6) &lt;strong&gt;Enthuse, Pull, don’t Push&lt;/strong&gt;: Anyone who has worked around companies for a few years will have seen management pushing the latest change initiative: ISO 9000, Sig Sigma, CRM, ERP, etc. etc.  Someone dreams up these ideas and then a change machine sets about pushing them out.&lt;br /&gt;&lt;br /&gt;Apply a lean principle: Pull, don’t push.  Forbid the words “change management.”  Enthuse individuals and teams, have them ask for Agile.  And when they ask give them the help and support they need.  This works at the individual level, at the team level, at the company level.&lt;br /&gt;&lt;br /&gt;If you are in management this means you need to engineer a pincer movement: you want enthusiasm for change coming from the bottom up to meet your support coming top down.  Introducing Agile top-down alone is, in my opinion, as quite likely to kill it - employees are, rationally, skeptical of top-down management change.  We live in a post-modern, post-BRP, post-layoffs, post-recession, post-everything world.  Employees aren’t children they’ve heard what happens.&lt;br /&gt;&lt;br /&gt;Rather than impose change from the top down managers need to build, kindle people’s curiosity, get people asking questions and for help, create bottom-up change initiative and support it.  Do everything build the fire without extinguishing it.  &lt;br /&gt;&lt;br /&gt;The good news is the Agile marketing machine may already have got there ahead of you.  People may already be curious about Agile, or even keen to try it - they may even be doing it when you are not looking.  If not then find ways to stir interest.  When they come asking for support - for budget for speaker, trainers or coaches - or time to go to conferences, give it, give it generously.  Offer more, ask when else they need, and above all else: learn to change your own behaviours to match.&lt;br /&gt;&lt;br /&gt;7) &lt;strong&gt;Be clear on &lt;em&gt;Why&lt;/em&gt;&lt;/strong&gt; you are going Agile: what ever level you are, engineer, tester, project manager, director, look beyond the Agile hype.  What is the problem you want “Agile” to fix for you?  Understand why you want change and what you expect from it.&lt;br /&gt;&lt;br /&gt;Don’t just “get Agile” because it is this month’s fashion, get “Agile” to achieve something more important.&lt;br /&gt;&lt;br /&gt;8) &lt;strong&gt;Process and technical, Adopt technical side as well as process side&lt;/strong&gt;: don’t think you can just change the process and it will all be all right.  You need to address the technical side too, you need to improve quality, you need to support the engineers, testers and others who are at the code face doing the work.&lt;br /&gt;&lt;br /&gt;I’ve come across big companies who view the technical side as somehow dirty: the attitude seems to be “thats technical” or “ they get their hands dirty” or “we can ship it to [Low cost country of choice this week]”.&lt;br /&gt;&lt;br /&gt;Get your hands dirty, talk to engineers, adopt Test Driven Development, refactoring, shun big up front design architecture, learn to live with rough designs and evolving architecture.  There are real feedback loops here.&lt;br /&gt;&lt;br /&gt;9) &lt;strong&gt;Get Product Management/Owner flow to developers clear and clean: &lt;/strong&gt;it isn’t just about fixing the coding side, the requirements side needs to be addressed to.  Specifically there needs to be a clear path from someone who represents requirements - typically called a Product Owner or Product Manager and frequently staffed with a Business Analyst - and the development team.  Far more negotiation is going to happen over “what” then “when”.  Someone needs to represent - and have authority - over that side of things.&lt;br /&gt;&lt;br /&gt;10) &lt;strong&gt;Structural changes - Functional groups&lt;/strong&gt;: Staff your teams to do the work for which they are responsible, end functional groups - i.e. database developers and UI developers in separate teams.  This is just the first of more structural changes you will need to make.  But if you fail at this you won’t get to play again.&lt;br /&gt;&lt;br /&gt;There you go, each of those items could be an entry in its own right, maybe one day they will be.  Thats enough to get you started.  If there was an eleventh is would be: let go of the past, things change, Agile isn’t purely additive.  If you don’t stop doing some of your current things you will never see the full benefit.  But 11 can wait, those 10 will get your a long way.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12948038-7450696903813179220?l=allankelly.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=WKYIV85rypY:AzXk3wQWd0Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=WKYIV85rypY:AzXk3wQWd0Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=WKYIV85rypY:AzXk3wQWd0Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=WKYIV85rypY:AzXk3wQWd0Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=WKYIV85rypY:AzXk3wQWd0Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=WKYIV85rypY:AzXk3wQWd0Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=WKYIV85rypY:AzXk3wQWd0Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=WKYIV85rypY:AzXk3wQWd0Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/WKYIV85rypY" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 14 May 2012 12:50:00 -0700</pubDate>
      <a10:updated>2012-05-14T12:50:00-07:00</a10:updated>
    <feedburner:origLink>http://allankelly.blogspot.com/2012/05/10-things-to-make-you-agile-adoption.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/g5ERy3uUG9c/</link>
      <a10:author>
        <a10:name>Brock Allen</a10:name>
        <a10:uri>http://brockallen.com/2012/05/14/http-status-codes-for-rest/</a10:uri>
      </a10:author>
      <title>Brock Allen: HTTP status codes for REST</title>
      <description>While developing the upcoming Essential REST course for DevelopMentor, I thought it would be useful to put together a chart illustrating the common HTTP status codes used for each of the common HTTP methods. This isn&amp;#8217;t exhaustive and many of the status codes below might be issued by the infrastructure and not directly by your application [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brockallen.com&amp;#038;blog=23669881&amp;#038;post=108&amp;#038;subd=brockallen&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=g5ERy3uUG9c:s6ojqON7KC8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=g5ERy3uUG9c:s6ojqON7KC8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=g5ERy3uUG9c:s6ojqON7KC8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=g5ERy3uUG9c:s6ojqON7KC8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=g5ERy3uUG9c:s6ojqON7KC8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=g5ERy3uUG9c:s6ojqON7KC8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=g5ERy3uUG9c:s6ojqON7KC8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=g5ERy3uUG9c:s6ojqON7KC8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/g5ERy3uUG9c" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 14 May 2012 10:38:03 -0700</pubDate>
      <a10:updated>2012-05-14T10:38:03-07:00</a10:updated>
    <feedburner:origLink>http://brockallen.com/2012/05/14/http-status-codes-for-rest/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/EeHfBsbKAFQ/dotned-podcast-tom-verhoeff-over-geld-verdienen-met-windows-phone-7-applicaties.aspx</link>
      <a10:author>
        <a10:name>Maurice de Beijer</a10:name>
        <a10:uri>http://msmvps.com/blogs/theproblemsolver/archive/2012/05/10/dotned-podcast-tom-verhoeff-over-geld-verdienen-met-windows-phone-7-applicaties.aspx</a10:uri>
      </a10:author>
      <title>Maurice de Beijer: DotNed Podcast: Tom Verhoeff over geld verdienen met Windows Phone 7 applicaties</title>
      <description>&lt;p&gt;In deze podcast spreekt Maurice de Beijer met Tom Verhoeff over zijn sessies op de TechDays. Tom presenteerde een sessie over hoe je geld kan verdienen met Windows Phone 7 applicaties. Het lijkt op het eerste gezicht zo eenvoudig, je maakt een app en het geld stroomt binnen. Maar in de praktijk blijkt het toch iets lastiger te zijn en zijn er best wel veel details waar je op moet letten.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Blog: &lt;a href="http://blog.tomverhoeff.nl/"&gt;http://blog.tomverhoeff.nl/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Blogpost nav TechDays sessie: &lt;a href="http://blog.tomverhoeff.nl/2012/02/24/making-money-with-windows-phone-applications-at-techdays-2012/"&gt;http://blog.tomverhoeff.nl/2012/02/24/making-money-with-windows-phone-applications-at-techdays-2012/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Mark Monster zijn Unified Ad oplossing: &lt;a href="http://mark.mymonster.nl/2012/02/07/windows-phone-unified-ad-part-1-introduction/"&gt;http://mark.mymonster.nl/2012/02/07/windows-phone-unified-ad-part-1-introduction/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Verschillende posts over Tom zijn review reader tool: &lt;a href="http://blog.tomverhoeff.nl/tag/wp7rr/"&gt;http://blog.tomverhoeff.nl/tag/wp7rr/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;AddDuplex: &lt;a href="http://www.adduplex.com/"&gt;http://www.adduplex.com/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Managing Trial Applications for Windows Phone: &lt;a href="http://www.slickthought.net/post/2010/08/30/Managing-Trial-Applications-for-Windows-Phone-7.aspx"&gt;http://www.slickthought.net/post/2010/08/30/Managing-Trial-Applications-for-Windows-Phone-7.aspx&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Je kan hem &lt;a href="http://dotned.nl/PodCasts.aspx?id=30"&gt;hier afluisteren&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Met dank aan onze sponsor RedGate.   &lt;br /&gt;&lt;a href="http://www.red-gate.com/"&gt;http://www.red-gate.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809694" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EeHfBsbKAFQ:BTyYJncZ3Tw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EeHfBsbKAFQ:BTyYJncZ3Tw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=EeHfBsbKAFQ:BTyYJncZ3Tw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EeHfBsbKAFQ:BTyYJncZ3Tw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=EeHfBsbKAFQ:BTyYJncZ3Tw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EeHfBsbKAFQ:BTyYJncZ3Tw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EeHfBsbKAFQ:BTyYJncZ3Tw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=EeHfBsbKAFQ:BTyYJncZ3Tw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/EeHfBsbKAFQ" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 10 May 2012 03:12:00 -0700</pubDate>
      <a10:updated>2012-05-10T03:12:00-07:00</a10:updated>
    <feedburner:origLink>http://msmvps.com/blogs/theproblemsolver/archive/2012/05/10/dotned-podcast-tom-verhoeff-over-geld-verdienen-met-windows-phone-7-applicaties.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/R-NcwLRJh5E/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/05/10/first-look-asp-net-on-amazon-web-service-elastic-beanstock/</a10:uri>
      </a10:author>
      <title>Lynn Langit: First Look – ASP.NET on Amazon Web Service Elastic Beanstalk</title>
      <description>Here&amp;#8217;s part two of my look at the big AWS announcement yesterday &amp;#8211; full support for ASP.NET and SQL Server on AWS Elastic Beanstalk and AWS RDS.  I found it remarkably easy to get up and going with ASP.NET on &amp;#8230; &lt;a href="http://lynnlangit.wordpress.com/2012/05/10/first-look-asp-net-on-amazon-web-service-elastic-beanstock/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=428&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=R-NcwLRJh5E:mfNYX3fkqhc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=R-NcwLRJh5E:mfNYX3fkqhc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=R-NcwLRJh5E:mfNYX3fkqhc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=R-NcwLRJh5E:mfNYX3fkqhc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=R-NcwLRJh5E:mfNYX3fkqhc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=R-NcwLRJh5E:mfNYX3fkqhc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=R-NcwLRJh5E:mfNYX3fkqhc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=R-NcwLRJh5E:mfNYX3fkqhc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/R-NcwLRJh5E" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 09 May 2012 22:47:21 -0700</pubDate>
      <a10:updated>2012-05-09T22:47:21-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/05/10/first-look-asp-net-on-amazon-web-service-elastic-beanstock/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/bh3q3YK_GwQ/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/05/08/first-look-sql-server-on-amazon-web-services-rds/</a10:uri>
      </a10:author>
      <title>Lynn Langit: First Look – SQL Server on Amazon Web Services RDS</title>
      <description>Of course I had to try it out!  Here&amp;#8217;s the announcement from @Werner &amp;#8211; and the documentation from the AWS site on the new support for SQL Server in AWS RDS.  There is a free usage tier as follows: &amp;#8220;If you &amp;#8230; &lt;a href="http://lynnlangit.wordpress.com/2012/05/08/first-look-sql-server-on-amazon-web-services-rds/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=426&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=bh3q3YK_GwQ:T3IBcgjQA68:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=bh3q3YK_GwQ:T3IBcgjQA68:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=bh3q3YK_GwQ:T3IBcgjQA68:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=bh3q3YK_GwQ:T3IBcgjQA68:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=bh3q3YK_GwQ:T3IBcgjQA68:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=bh3q3YK_GwQ:T3IBcgjQA68:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=bh3q3YK_GwQ:T3IBcgjQA68:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=bh3q3YK_GwQ:T3IBcgjQA68:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/bh3q3YK_GwQ" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 08 May 2012 16:58:13 -0700</pubDate>
      <a10:updated>2012-05-08T16:58:13-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/05/08/first-look-sql-server-on-amazon-web-services-rds/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/N6dslIzUpzE/points-based-contracts-just-say-no.html</link>
      <a10:author>
        <a10:name>Allan Kelly</a10:name>
        <a10:uri>http://allankelly.blogspot.com/2012/05/points-based-contracts-just-say-no.html</a10:uri>
      </a10:author>
      <title>Allan Kelly: Points based contracts? Just Say No.</title>
      <description>With the points-mini-series still fresh in the mind now seems a good time to say publicly something which I’ve been saying privately for a long time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Avoid points based contracts.&lt;/strong&gt; i.e. don’t outsource work, or undertake work, on the basis of points - be they story points, abstract points, nebulous units of time or any other name you give them.&lt;br /&gt;&lt;br /&gt;I have one client at the moment who wants their software supplier to sign a points based contract, I’ve advised against it.  Another client is trying to sell points based contracts to their clients, while they are having some success - I think they rushed in before they had enough data to understand the implications.&lt;br /&gt;&lt;br /&gt;Why do I say this?  Well three reasons&lt;br /&gt;&lt;br /&gt;First is &lt;a href="http://en.wikipedia.org/wiki/Goodharts_law"&gt;Goodhart’s Law&lt;/a&gt;: “Any observed statistical regularity will tend to collapse once pressure is placed upon it for control purposes.”  Put it another way: any measurement metric will change behaviour once it is used for control.&lt;br /&gt;&lt;br /&gt;In this context it means: points are very good at measuring story size and team velocity, they can be accurate at predicting when a piece of work will be done.  But, if you use them for other purposes - like regulating a contract and making payments - they will change their behaviour.  They won’t be so useful for predicting end dates, or for controlling contracts for that matter.&lt;br /&gt;&lt;br /&gt;This is a problem many readers will be familiar with from traditional time estimation.  Estimates are nominally sought to determine how long a piece or work will take, and thus how much it will cost.  But they are also used as a means of targeting and for control.  They are used as a proxy for commitment and they are gamed (i.e. changed for specific ends) when they don’t give the time/cost numbers desired.  (This is something &lt;a href="http://www.estherderby.com/2012/03/estimating-is-often-helpful-estimates-are-often-not.html"&gt;Esther Derby discusses recently in her blog, &lt;em&gt;Estimating&lt;/em&gt; is often helpful, &lt;em&gt;estimates&lt;/em&gt; are not.&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;In fact, time estimates show the same range of problems present in the corporate budgeting processes and which has given rise to the &lt;a href="http://www.bbrt.org/"&gt;beyond budgeting movement&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One direct result of Goodhart’s Law in this context is...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Inflation,&lt;/strong&gt; the second reason to avoid points based contracts: points are subjective, they are not grounded in time, complexity, function point analysis, lines of code or any other objective measurement.   They are in fact like a &lt;a href="http://en.wikipedia.org/wiki/Fiat_currency"&gt;fiat currency&lt;/a&gt;: they are worth what you can buy with it.  If people don’t believe in it, or believe the value will change then it will change.  Check out &lt;a href="http://en.wikipedia.org/wiki/Rational_expectations"&gt;rational expectations&lt;/a&gt; theory if you want to understand why.&lt;br /&gt;&lt;br /&gt;Overtime points can devalue with the result that point scores increase.  Actually, I believe the free floating nature of points is one of the strongest reasons for using them but in terms of signing a contract it makes them useless.&lt;br /&gt;&lt;br /&gt;Most teams I see work in low points: 1, 2, maybe a 5, rarely an 8, they score 10, 12 or maybe 20 an iteration.  One team I saw worked in tens, and scored hundreds each iteration.  It was like one of those old Space Invaders machines were the last digit was a hard coded “0”.&lt;br /&gt;&lt;br /&gt;The team’s project manager finished planning meetings with an call for the team to work harder next iteration, to reclaim the lost time.  Iteration on iteration velocity increased.  Inflation was rampant.&lt;br /&gt;&lt;br /&gt;Finally there is &lt;strong&gt;practicality&lt;/strong&gt;. As the &lt;a href="http://allankelly.blogspot.co.uk/"&gt;recent posts from myself&lt;/a&gt; and &lt;a href="http://softwaredevelopmenttoday.blogspot.co.uk/"&gt;Vasco Duarte&lt;/a&gt; demonstrate points, there is still a lot of debate over points.  Personally I have come to the conclusion that exactly how you run iterations and count points makes a big difference.  While if you agree with Duarte you might as well dispense with points and sign story based contracts.&lt;br /&gt;&lt;br /&gt;Then there is the team: only the team which will do the work can accurately say how many points a piece of work will, or did, take; and then only when they have experience of doing the work.  So you shouldn’t sign a points based contract unless you have the team in place and they have done some of the work.&lt;br /&gt;&lt;br /&gt;Even a relaxed interpretation of that last point should lead you to conclude you should only sign a points based contract when the team is experienced in using points and you have historical data.  If you feel you must sign a points based contract then only do it when you have data.&lt;br /&gt;&lt;br /&gt;Still, I’d rather you didn’t do it in the first place.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12948038-3115883777201765400?l=allankelly.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=N6dslIzUpzE:Aa7axDjpJ9Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=N6dslIzUpzE:Aa7axDjpJ9Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=N6dslIzUpzE:Aa7axDjpJ9Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=N6dslIzUpzE:Aa7axDjpJ9Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=N6dslIzUpzE:Aa7axDjpJ9Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=N6dslIzUpzE:Aa7axDjpJ9Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=N6dslIzUpzE:Aa7axDjpJ9Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=N6dslIzUpzE:Aa7axDjpJ9Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/N6dslIzUpzE" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 08 May 2012 06:02:00 -0700</pubDate>
      <a10:updated>2012-05-08T06:02:00-07:00</a10:updated>
    <feedburner:origLink>http://allankelly.blogspot.com/2012/05/points-based-contracts-just-say-no.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/pvZKcnQZM8c/testing-circle.html</link>
      <a10:author>
        <a10:name>Llewellyn Falco (Approval Tests)</a10:name>
        <a10:uri>http://blog.approvaltests.com/2012/05/testing-circle.html</a10:uri>
      </a10:author>
      <title>Llewellyn Falco (Approval Tests): The Testing Circle</title>
      <description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;This is the pattern I find myself in day after day while practicing TDD or BDD.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kaifYMPBcXo/T6WxqTTOQZI/AAAAAAAAAk8/8FDrLK8M2Lo/s1600/Testing+Circle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://1.bp.blogspot.com/-kaifYMPBcXo/T6WxqTTOQZI/AAAAAAAAAk8/8FDrLK8M2Lo/s400/Testing+Circle.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt; Step 1?&lt;/h3&gt;Usually I start at the whiteboard. It is the easiest place to start as I sketch out the scenario I want to program, but not always. Sometimes a mockup file (image, html, or xml) is provided and I start at the result, sometimes I’m give a scenario already in English, and sometimes I have to fiddle with the code first to see what’s happening. &lt;br /&gt;&lt;h3&gt; No Beginning, No Ending&lt;/h3&gt;The great thing about the circle is no matter where a start, the flow should always be there in the end. If it isn’t, I take this as a smell that I am neglecting something. Also, while I wrote the arrows going clockwise (the normal way I view this process) they can equally go in reverse.&lt;br /&gt;&lt;h3&gt; Smell 1: No Result –&amp;gt; Whiteboard&lt;/h3&gt;If the result does trigger the original image on the whiteboard (usually long erased by the time I revisit the code), then this will be a maintenance problem when I try to remember why the code looks the way it does when it changes. &lt;br /&gt;&lt;h3&gt; Smell 2: No Code –&amp;gt; English&lt;/h3&gt;If the resulting code doesn’t make the comments &lt;strong&gt;so easy&lt;/strong&gt; that they should be deleted for not adding any value, then my intention (so clear when I’m writing the original code) will not be there when my fellow programmers, or myself even a few days later, what the understand the code later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1959052963816936322-2511646286146407636?l=blog.approvaltests.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=pvZKcnQZM8c:JRG5XfH8gg4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=pvZKcnQZM8c:JRG5XfH8gg4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=pvZKcnQZM8c:JRG5XfH8gg4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=pvZKcnQZM8c:JRG5XfH8gg4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=pvZKcnQZM8c:JRG5XfH8gg4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=pvZKcnQZM8c:JRG5XfH8gg4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=pvZKcnQZM8c:JRG5XfH8gg4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=pvZKcnQZM8c:JRG5XfH8gg4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/pvZKcnQZM8c" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 05 May 2012 16:14:00 -0700</pubDate>
      <a10:updated>2012-05-05T16:14:00-07:00</a10:updated>
    <feedburner:origLink>http://blog.approvaltests.com/2012/05/testing-circle.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/NUTbsHjKniU/html5-background-tasks-using-web-workers.aspx</link>
      <a10:author>
        <a10:name>Maurice de Beijer</a10:name>
        <a10:uri>http://msmvps.com/blogs/theproblemsolver/archive/2012/05/02/html5-background-tasks-using-web-workers.aspx</a10:uri>
      </a10:author>
      <title>Maurice de Beijer: HTML5 Background tasks using Web Workers</title>
      <description>&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/7120.image_5F00_0093ACC5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/3858.image_5F00_thumb_5F00_6D064D23.png" width="244" height="86" /&gt;&lt;/a&gt;One of the problems with running JavaScript in the browser is that everything usually executes on the same thread as the UI. With most scripts this is fine because they are short executing however if you start doing more complex calculations you might run into the vase where the UI becomes non responsive because of the JavaScript executing. And when that happens you will see one of these dialogs popup and you are at the mercy of the end user, not the best of places to be.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ffff00"&gt;Update:&lt;/font&gt; Check out these live &lt;a href="http://demos.html5support.nl/WebWorkers/Simple"&gt;Simple Web Worker&lt;/a&gt; and &lt;a href="http://demos.html5support.nl/WebWorkers/Chunked"&gt;Chunked Web Worker&lt;/a&gt; demos.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Fortunately there is a fix for this in the form of the new HTML5 Web Workers specification&lt;/h3&gt;  &lt;p&gt;Web workers are relatively well supported, IE9 being the big exception, as you can see from &lt;a href="http://caniuse.com/#feat=webworkers"&gt;caniuse.com&lt;/a&gt;. Getting started with them is quite straightforward, basically you create a Worker object and pass it the URL of the script you want to execute. This has to be a URL, you can’t just pass a function, something that would have been handy.&lt;/p&gt;  &lt;p&gt;The following HTML page contains all the code required.&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#800000;"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;html&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;body&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;#39;btnStart&amp;#39;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         Start&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;#39;btnStop&amp;#39;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;         Stop&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;#39;btnPause&amp;#39;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         Pause&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;#39;btnResume&amp;#39;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         Resume&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;#39;primes&amp;#39;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;src&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Scripts/jquery-1.7.2.js&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &amp;lt;script&amp;gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;         $(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; worker = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;             $(&lt;span style="color:#006080;"&gt;&amp;#39;#btnStart&amp;#39;&lt;/span&gt;).click(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!worker) {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;                     $(&lt;span style="color:#006080;"&gt;&amp;#39;#primes&amp;#39;&lt;/span&gt;).empty();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!!window.Worker) {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;                         worker = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Worker(&lt;span style="color:#006080;"&gt;&amp;#39;Scripts/Primes.js&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;                         worker.onmessage = &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;                             $(&lt;span style="color:#006080;"&gt;&amp;#39;&amp;lt;li&amp;gt;&amp;#39;&lt;/span&gt;).text(e.data).prependTo(&lt;span style="color:#006080;"&gt;&amp;#39;#primes&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;                         };&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                     } &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;                         $(&lt;span style="color:#006080;"&gt;&amp;#39;&amp;lt;li&amp;gt;&amp;#39;&lt;/span&gt;).text(&lt;span style="color:#006080;"&gt;&amp;#39;Web Worker is not supported :-(&amp;#39;&lt;/span&gt;).prependTo(&lt;span style="color:#006080;"&gt;&amp;#39;#primes&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;                     }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;                 }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;             });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;             $(&lt;span style="color:#006080;"&gt;&amp;#39;#btnStop&amp;#39;&lt;/span&gt;).click(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (worker) {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;                     worker.terminate();&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;                     worker = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;                     $(&lt;span style="color:#006080;"&gt;&amp;#39;&amp;lt;li&amp;gt;&amp;#39;&lt;/span&gt;).text(&lt;span style="color:#006080;"&gt;&amp;#39;Terminated&amp;#39;&lt;/span&gt;).prependTo(&lt;span style="color:#006080;"&gt;&amp;#39;#primes&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;                 }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;             });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;             $(&lt;span style="color:#006080;"&gt;&amp;#39;#btnPause&amp;#39;&lt;/span&gt;).click(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (worker) {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;                     $(&lt;span style="color:#006080;"&gt;&amp;#39;&amp;lt;li&amp;gt;&amp;#39;&lt;/span&gt;).text(&lt;span style="color:#006080;"&gt;&amp;#39;Pause&amp;#39;&lt;/span&gt;).prependTo(&lt;span style="color:#006080;"&gt;&amp;#39;#primes&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;                     worker.postMessage(&lt;span style="color:#006080;"&gt;&amp;#39;pause&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;                 }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;             });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;             $(&lt;span style="color:#006080;"&gt;&amp;#39;#btnResume&amp;#39;&lt;/span&gt;).click(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (worker) {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt;                     $(&lt;span style="color:#006080;"&gt;&amp;#39;&amp;lt;li&amp;gt;&amp;#39;&lt;/span&gt;).text(&lt;span style="color:#006080;"&gt;&amp;#39;Resume&amp;#39;&lt;/span&gt;).prependTo(&lt;span style="color:#006080;"&gt;&amp;#39;#primes&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;                     worker.postMessage(&lt;span style="color:#006080;"&gt;&amp;#39;resume&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt;                 }&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt;             });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum40"&gt;  40:&lt;/span&gt;         });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum41"&gt;  41:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum42"&gt;  42:&lt;/span&gt;     &lt;/pre&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;body&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;The important part is the start button:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; worker = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Worker(&lt;span style="color:#006080;"&gt;&amp;#39;Scripts/Primes.js&amp;#39;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; worker.onmessage = &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     $(&lt;span style="color:#006080;"&gt;&amp;#39;&amp;lt;li&amp;gt;&amp;#39;&lt;/span&gt;).text(e.data).prependTo(&lt;span style="color:#006080;"&gt;&amp;#39;#primes&amp;#39;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; };&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code creates a Worker object and points it to the JavaScript file to start executing. In this case we are going to calculate prime numbers. &lt;/p&gt;

&lt;p&gt;As soon as the Worker has loaded the JavaScript file it will start executing, no need to do anything special.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Communicating with Web Workers&lt;/h3&gt;

&lt;p&gt;The code executing as part of the Worker is completely isolated from the UI document. You can send messages between the two using the &lt;strong&gt;postMessage()&lt;/strong&gt; function but all data will be cloned, no shared references exist. When a message has been posted the other party can specify the &lt;strong&gt;onmessage&lt;/strong&gt; callback and react to the message. The worker has restrictions to the data being passed, the most important one is that nothing related to the DOM can be passed to the worker object and everything that can be is cloned first.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/5383.image_5F00_0F7ADBDF.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/4111.image_5F00_thumb_5F00_1410E699.png" width="129" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A simple implementation of the worker to calculate prime numbers looks something like this. Note the postMessage being used to pass the computed prime numbers back to the user interface,&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 2; i &amp;lt; 1000000; i++) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; isPrime = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; d = 2; d &amp;lt; i; d++) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (i % d === 0) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;             isPrime = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (isPrime) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;         postMessage(i);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Controlling the workers execution&lt;/h3&gt;

&lt;p&gt;Suppose we want to stop the workers execution there is a &lt;strong&gt;terminate()&lt;/strong&gt; function on the worker which is used in the Stop button.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; $(&lt;span style="color:#006080;"&gt;&amp;#39;#btnStop&amp;#39;&lt;/span&gt;).click(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (worker) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;         worker.terminate();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;         worker = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         $(&lt;span style="color:#006080;"&gt;&amp;#39;&amp;lt;li&amp;gt;&amp;#39;&lt;/span&gt;).text(&lt;span style="color:#006080;"&gt;&amp;#39;Terminated&amp;#39;&lt;/span&gt;).prependTo(&lt;span style="color:#006080;"&gt;&amp;#39;#primes&amp;#39;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; });&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;This will kill the worker process and that is the end of it, there is no way to restart it. Nice, simple and effective however sometimes that is not quite what we want and we want to restart the worker. 

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Suspending and resuming a worker&lt;/h3&gt;

&lt;p&gt;Given the fact that we can send messages between the UI and the worker the code below might look like a valid approach. Unfortunately this doesn’t quite work &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/0407.wlEmoticon_2D00_sadsmile_5F00_1C649623.png" /&gt;&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; isPaused = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; onmessage = &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (e.data == &lt;span style="color:#006080;"&gt;&amp;#39;pause&amp;#39;&lt;/span&gt;) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         isPaused = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; };&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 2; i &amp;lt; 1000000; i++) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; isPrime = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; d = 2; d &amp;lt; i; d++) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (i % d === 0) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;             isPrime = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (isPrime) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;         postMessage(i);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (isPaused) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;The problem here is that the &lt;strong&gt;postMessage()/onmessage&lt;/strong&gt; pair works using the event loop and as long as the Web Worker is busy calculating it will never receive the message, instead it will be queued and remain queued until the worker is idle, something that doesn’t happen until all primes have been calculated.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Using&amp;#160; a chunking algorithm&lt;/h3&gt;

&lt;p&gt;The solution is to use a chunking algorithm. This algorithm brakes the calculation into different groups and use the &lt;strong&gt;setTimeout()&lt;/strong&gt; API to execute the next chunk after a small delay. The result of using &lt;strong&gt;setTimeout()&lt;/strong&gt; is that the message posted can be read and we can actually pause and resume the worker execution. Using a chunking algorithm out background worker JavaScript looks like this:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; isPaused = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; onmessage = &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (e.data == &lt;span style="color:#006080;"&gt;&amp;#39;pause&amp;#39;&lt;/span&gt;) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         isPaused = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     } &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (e.data == &lt;span style="color:#006080;"&gt;&amp;#39;resume&amp;#39;&lt;/span&gt;) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         isPaused = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         testPrime();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt; };&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 2;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt; testPrime();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; testPrime() {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; isPrime = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; d = 2; d &amp;lt; i; d++) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (i % d === 0) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;             isPrime = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (isPrime) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;         postMessage(i);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!isPaused) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (i &amp;lt; 1000000) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;             i++;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;             setTimeout(testPrime, 0);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;br /&gt;With this in place we can pause and resume our prime number calculation &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/5432.wlEmoticon_2D00_smile_5F00_3E8C7BDC.png" /&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/3007.image_5F00_62E1862B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/4540.image_5F00_thumb_5F00_0073612B.png" width="215" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The only problem with this approach is that, in some browsers, it slows down calculations a lot. So instead of doing a &lt;strong&gt;setTimeout()&lt;/strong&gt; after every prime you might want to do so once after a series of numbers has been checked. For example with the code below:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 2;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; testPrime();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; testPrime() {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; isPrime = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; d = 2; d &amp;lt; i; d++) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (i % d === 0) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;             isPrime = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (isPrime) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         postMessage(i);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!isPaused) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (i &amp;lt; 1000000) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;             i++;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (i % 100 === 0) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;                 setTimeout(testPrime, 0);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;             } &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;                 testPrime();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;             }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;How about browsers that don’t support Web Workers?&lt;/h3&gt;

&lt;p&gt;It turns out that using this chunking approach in the UI is a very decent alternative to using a Web Worker as it prevents the user interface from completely blocking. It will still be somewhat slower to respond but is the best you can do in the circumstances.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;font color="#ffff00"&gt;Update: &lt;/font&gt;Check out these live &lt;a href="http://demos.html5support.nl/WebWorkers/Simple"&gt;Simple Web Worker&lt;/a&gt; and &lt;a href="http://demos.html5support.nl/WebWorkers/Chunked"&gt;Chunked Web Worker&lt;/a&gt; demos.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1809385" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=NUTbsHjKniU:8f84LjzjzSc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=NUTbsHjKniU:8f84LjzjzSc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=NUTbsHjKniU:8f84LjzjzSc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=NUTbsHjKniU:8f84LjzjzSc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=NUTbsHjKniU:8f84LjzjzSc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=NUTbsHjKniU:8f84LjzjzSc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=NUTbsHjKniU:8f84LjzjzSc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=NUTbsHjKniU:8f84LjzjzSc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/NUTbsHjKniU" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 02 May 2012 03:26:36 -0700</pubDate>
      <a10:updated>2012-05-02T03:26:36-07:00</a10:updated>
    <feedburner:origLink>http://msmvps.com/blogs/theproblemsolver/archive/2012/05/02/html5-background-tasks-using-web-workers.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/cvS5yiPT0Xg/</link>
      <a10:author>
        <a10:name>Michael Kennedy</a10:name>
        <a10:uri>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/q-qnPx2v8Kc/</a10:uri>
      </a10:author>
      <title>Michael Kennedy: How Are You Scaling ASP.NET?</title>
      <description>There are some interesting debates out there around scaling ASP.NET.  How do you do it? Please fill out this poll and tell the world: Interested in a blog post on this? Take it to the comments section. Cheers, @mkennedy Filed &amp;#8230; &lt;a href="http://blog.michaelckennedy.net/2012/05/01/how-are-you-scaling-asp-net/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.michaelckennedy.net&amp;#038;blog=33101121&amp;#038;post=531&amp;#038;subd=michaelckennedy&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=cvS5yiPT0Xg:xWSz7ixo1UY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=cvS5yiPT0Xg:xWSz7ixo1UY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=cvS5yiPT0Xg:xWSz7ixo1UY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=cvS5yiPT0Xg:xWSz7ixo1UY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=cvS5yiPT0Xg:xWSz7ixo1UY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=cvS5yiPT0Xg:xWSz7ixo1UY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=cvS5yiPT0Xg:xWSz7ixo1UY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=cvS5yiPT0Xg:xWSz7ixo1UY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/cvS5yiPT0Xg" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 01 May 2012 11:13:23 -0700</pubDate>
      <a10:updated>2012-05-01T11:13:23-07:00</a10:updated>
    <feedburner:origLink>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/q-qnPx2v8Kc/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/b2GdKpHfQhk/StringLiteralsAndVersusEquals.aspx</link>
      <a10:author>
        <a10:name>Mark Blomsma</a10:name>
        <a10:uri>http://www.develop-one.net/blog/2012/04/30/StringLiteralsAndVersusEquals.aspx</a10:uri>
      </a10:author>
      <title>Mark Blomsma: String literals and ‘==’ versus Equals(…)</title>
      <description>&lt;p&gt;
I had a little fun today playing with ‘==’ vs. the Equals(…) method. I knew that somewhere
in .NET 2.0 (I believe) there had been some improvements in String.Empty versus “”,
but I didn’t quite realize that this affected all string literals.
&lt;/p&gt;
&lt;p&gt;
In the code below you can see how value types and reference types may behave differently
when using ‘==’ versus the Equals method. 
&lt;br /&gt;
My surprise came when I discovered that line 39 and 41 both return TRUE. Apparently
the string literals in an assembly get put in a master list of string constants and
then reused where the same string literal gets used. &lt;strong&gt;Nice!&lt;/strong&gt; 
&lt;br /&gt;
The way to force the reference comparison of the string against object to actually
be different is to delay the creation of the string until runtime, like in line 52.
&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[]
args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; &lt;span class="rem"&gt;// value types&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; x = 10;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; y = 10;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; Console.WriteLine( x == y ); &lt;span class="rem"&gt;//
compare by value -&amp;gt; return true&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; Console.WriteLine( x.Equals( y ) ); &lt;span class="rem"&gt;//
compare by value -&amp;gt; return true&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; Console.WriteLine( &lt;span class="kwrd"&gt;object&lt;/span&gt;.ReferenceEquals(
x, y ) ); &lt;span class="rem"&gt;// compare by reference -&amp;gt; return false&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; Console.ReadLine();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; &lt;span class="rem"&gt;// Reference types&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; StringBuilder s1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder( &lt;span class="str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt; );&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; StringBuilder s2 = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder( &lt;span class="str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt; );&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt; Console.WriteLine( s1 == s2 ); &lt;span class="rem"&gt;//
compare by reference -&amp;gt; return false&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt; Console.WriteLine( s1.Equals( s2
) ); &lt;span class="rem"&gt;// compare by value -&amp;gt; return true&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 29: &lt;/span&gt; Console.WriteLine( &lt;span class="kwrd"&gt;object&lt;/span&gt;.ReferenceEquals(
s1, s2 ) ); &lt;span class="rem"&gt;// compare by reference -&amp;gt; return false&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 30: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 31: &lt;/span&gt; Console.ReadLine();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 32: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 33: &lt;/span&gt; &lt;span class="rem"&gt;// object and string&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 34: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 35: &lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; o1
= GetName();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 36: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 37: &lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; o2
= &lt;span class="str"&gt;&amp;quot;Mark&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 38: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 39: &lt;/span&gt; Console.WriteLine( o1 == o2 ); &lt;span class="rem"&gt;//
compare by reference -&amp;gt; return true&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 40: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 41: &lt;/span&gt; Console.WriteLine( o1.Equals( o2
) ); &lt;span class="rem"&gt;// compare by value -&amp;gt; return true&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 42: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 43: &lt;/span&gt; Console.WriteLine( &lt;span class="kwrd"&gt;object&lt;/span&gt;.ReferenceEquals(
o1, o2 ) ); &lt;span class="rem"&gt;// compare by reference -&amp;gt; return true&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 44: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 45: &lt;/span&gt; Console.ReadLine();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 46: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 47: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 48: &lt;/span&gt; &lt;span class="rem"&gt;// object and string&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 49: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 50: &lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; ss1 = &lt;span class="str"&gt;&amp;quot;Mark&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 51: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 52: &lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ss2 = &lt;span class="str"&gt;&amp;quot;Markx&amp;quot;&lt;/span&gt;.Substring(
0, 4 );&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 53: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 54: &lt;/span&gt; Console.WriteLine( ss1 == ss2 ); &lt;span class="rem"&gt;//
compare by reference -&amp;gt; return false&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 55: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 56: &lt;/span&gt; Console.WriteLine( ss1.Equals( ss2 ) ); &lt;span class="rem"&gt;//
compare by value -&amp;gt; return true&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 57: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 58: &lt;/span&gt; Console.WriteLine( &lt;span class="kwrd"&gt;object&lt;/span&gt;.ReferenceEquals(
ss1, ss2 ) ); &lt;span class="rem"&gt;// compare by reference -&amp;gt; return false&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 59: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 60: &lt;/span&gt; Console.ReadLine();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 61: &lt;/span&gt;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 62: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 63: &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; GetName()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 64: &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 65: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Mark&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 66: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=b2GdKpHfQhk:LfSkl4Z23j8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=b2GdKpHfQhk:LfSkl4Z23j8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=b2GdKpHfQhk:LfSkl4Z23j8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=b2GdKpHfQhk:LfSkl4Z23j8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=b2GdKpHfQhk:LfSkl4Z23j8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=b2GdKpHfQhk:LfSkl4Z23j8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=b2GdKpHfQhk:LfSkl4Z23j8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=b2GdKpHfQhk:LfSkl4Z23j8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/b2GdKpHfQhk" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 30 Apr 2012 09:51:50 -0700</pubDate>
      <a10:updated>2012-04-30T09:51:50-07:00</a10:updated>
    <feedburner:origLink>http://www.develop-one.net/blog/2012/04/30/StringLiteralsAndVersusEquals.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/z064YypePq4/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/04/29/using-variety-to-get-schema-info-for-mongodb/</a10:uri>
      </a10:author>
      <title>Lynn Langit: Using Variety to get schema info for MongoDB</title>
      <description>I tried out a utility on GitHub called Variety for MongoDB.  As the creator (@JamesCropcho) says of Variety: &amp;#8220;This lightweight tool helps you get a sense of your application&amp;#8217;s schema, as well as any outliers to that schema. Particularly useful &amp;#8230; &lt;a href="http://lynnlangit.wordpress.com/2012/04/29/using-variety-to-get-schema-info-for-mongodb/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=423&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z064YypePq4:7a6eXAtv0Iw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z064YypePq4:7a6eXAtv0Iw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=z064YypePq4:7a6eXAtv0Iw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z064YypePq4:7a6eXAtv0Iw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=z064YypePq4:7a6eXAtv0Iw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z064YypePq4:7a6eXAtv0Iw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z064YypePq4:7a6eXAtv0Iw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=z064YypePq4:7a6eXAtv0Iw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/z064YypePq4" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 29 Apr 2012 15:30:14 -0700</pubDate>
      <a10:updated>2012-04-29T15:30:14-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/04/29/using-variety-to-get-schema-info-for-mongodb/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/SY8p5Tz59jA/how-much-packaging.html</link>
      <a10:author>
        <a10:name>Andy Clymer</a10:name>
        <a10:uri>http://andyclymer.blogspot.com/2012/04/how-much-packaging.html</a10:uri>
      </a10:author>
      <title>Andy Clymer: How much packaging</title>
      <description>&lt;p&gt;Richard and myself receive a batch of Microsoft Windows Embedded licence keys.&amp;#160; Having only ordered four we were a bit amused by the size of the box they came in .&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=M47ZbefpQbY&amp;amp;feature=plcp"&gt;http://www.youtube.com/watch?v=M47ZbefpQbY&amp;amp;feature=plcp&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30604582-2931246832058060928?l=andyclymer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SY8p5Tz59jA:PkEvdCWTd8M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SY8p5Tz59jA:PkEvdCWTd8M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=SY8p5Tz59jA:PkEvdCWTd8M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SY8p5Tz59jA:PkEvdCWTd8M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=SY8p5Tz59jA:PkEvdCWTd8M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SY8p5Tz59jA:PkEvdCWTd8M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SY8p5Tz59jA:PkEvdCWTd8M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=SY8p5Tz59jA:PkEvdCWTd8M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/SY8p5Tz59jA" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 28 Apr 2012 08:40:00 -0700</pubDate>
      <a10:updated>2012-04-28T08:40:00-07:00</a10:updated>
    <feedburner:origLink>http://andyclymer.blogspot.com/2012/04/how-much-packaging.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/nu4LgWk2P_Q/whats-new-in-approvaltestsnet-v19.html</link>
      <a10:author>
        <a10:name>Llewellyn Falco (Approval Tests)</a10:name>
        <a10:uri>http://blog.approvaltests.com/2012/04/whats-new-in-approvaltestsnet-v19.html</a10:uri>
      </a10:author>
      <title>Llewellyn Falco (Approval Tests): What’s new in ApprovalTests.Net v.19?</title>
      <description>This is a relatively small release, only 2 real changes.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;EmailApprovals&lt;/li&gt;&lt;li&gt;Better Rdlc Syntax&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;   Email Verification&lt;/h3&gt;Almost every site sends some sort of email. These have been hard to test, usually requiring some sort of email to be actually sent. Now you can simply say:&lt;br /&gt;&lt;pre class="csharpcode"&gt;EmailApprovals.Verify(&lt;span class="kwrd"&gt;new&lt;/span&gt; MailMessage())&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;This is particularly nice with a&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;[UseReporter(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(FileLauncherReporter))]&lt;/pre&gt;&lt;br /&gt;As it will open in your desktop email client (like outlook, not gmail) making it very easy to see the results. If you’ve given up on desktop clients, you can grab one from &lt;a href="http://www.ninite.com/"&gt;www.ninite.com&lt;/a&gt; &lt;br /&gt;I made a video about it here:&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:80b09649-0e32-4d46-aacc-7ae879ff3fc5" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div&gt;&lt;object height="252" width="448"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Sf16dPq2n3w?hl=en&amp;amp;hd=1"&gt;   &lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Sf16dPq2n3w?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="clear: both; font-size: .8em; width: 448px;"&gt;Verifying Email&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;   Better Rdlc Support&lt;/h3&gt;Previously, if you wanted to approve a Rdlc report with multiple data sources you had to use Tuples, which got a bit annoying. In this release I am taking advantage of the anonymous enumerator syntax. The result is&lt;br /&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;RdlcApprovals.VerifyReport(reportname, assembly,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;      &lt;span class="kwrd"&gt;new&lt;/span&gt; DataPairs() { { &lt;span class="str"&gt;"DataSet1"&lt;/span&gt;, model1 }, {&lt;span class="str"&gt;"CompanyAddress"&lt;/span&gt;,model2} });&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;verses&lt;br /&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; RdlcApprovals.VerifyReport(reportname, assembly,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;      &lt;span class="kwrd"&gt;new&lt;/span&gt; Tuple&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;,&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;( &lt;span class="str"&gt;"DataSet1"&lt;/span&gt;, model1), &lt;span class="kwrd"&gt;new&lt;/span&gt; Tuple&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;,&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;"CompanyAddress"&lt;/span&gt;, model2);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;Again, there is a video of this here:&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:4c43f0cc-5b31-45d2-971b-573eae844259" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div&gt;&lt;object height="252" width="448"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0_rUBQUM5vM?hl=en&amp;amp;hd=1"&gt;   &lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0_rUBQUM5vM?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="clear: both; font-size: .8em; width: 448px;"&gt;Verifying Rdlc Reports&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Happy Testing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1959052963816936322-4062473448211544212?l=blog.approvaltests.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=nu4LgWk2P_Q:MUiysZMVkc8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=nu4LgWk2P_Q:MUiysZMVkc8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=nu4LgWk2P_Q:MUiysZMVkc8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=nu4LgWk2P_Q:MUiysZMVkc8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=nu4LgWk2P_Q:MUiysZMVkc8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=nu4LgWk2P_Q:MUiysZMVkc8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=nu4LgWk2P_Q:MUiysZMVkc8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=nu4LgWk2P_Q:MUiysZMVkc8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/nu4LgWk2P_Q" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 27 Apr 2012 22:43:00 -0700</pubDate>
      <a10:updated>2012-04-27T22:43:00-07:00</a10:updated>
    <feedburner:origLink>http://blog.approvaltests.com/2012/04/whats-new-in-approvaltestsnet-v19.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/OjDXdM9QSFY/</link>
      <a10:author>
        <a10:name>Michael Kennedy</a10:name>
        <a10:uri>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/c0apkK3rU40/</a10:uri>
      </a10:author>
      <title>Michael Kennedy: Michael’s .NET Suggested Reading List</title>
      <description>With Guerrilla .NET from DevelopMentor coming up on May 7th, it&amp;#8217;s time to refresh my .NET reading list. Want to get ready for this class or a class like it or just get a quick-start on .NET? Here&amp;#8217;s what I would recommend. &amp;#8230; &lt;a href="http://blog.michaelckennedy.net/2012/04/27/michaels-net-suggested-reading-list/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.michaelckennedy.net&amp;#038;blog=33101121&amp;#038;post=527&amp;#038;subd=michaelckennedy&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OjDXdM9QSFY:x6ceORuf1Gw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OjDXdM9QSFY:x6ceORuf1Gw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=OjDXdM9QSFY:x6ceORuf1Gw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OjDXdM9QSFY:x6ceORuf1Gw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=OjDXdM9QSFY:x6ceORuf1Gw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OjDXdM9QSFY:x6ceORuf1Gw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OjDXdM9QSFY:x6ceORuf1Gw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=OjDXdM9QSFY:x6ceORuf1Gw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/OjDXdM9QSFY" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 27 Apr 2012 16:32:57 -0700</pubDate>
      <a10:updated>2012-04-27T16:32:57-07:00</a10:updated>
    <feedburner:origLink>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/c0apkK3rU40/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/TC1FDextDYI/</link>
      <a10:author>
        <a10:name>Brock Allen</a10:name>
        <a10:uri>http://brockallen.com/2012/04/27/change-firefoxs-default-accept-header-to-prefer-json-over-xml/</a10:uri>
      </a10:author>
      <title>Brock Allen: Change FireFox’s default Accept header to prefer JSON over XML</title>
      <description>I prefer to use FireFox as my browser, but one downside is that it doesn&amp;#8217;t display XML very well (and it seems this is a problem due to some conflict with Firebug). Now that I&amp;#8217;m looking into WebApi more, the default content negotiation prefers to render XML due to the default &amp;#8220;Accept&amp;#8221; HTTP header that [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brockallen.com&amp;#038;blog=23669881&amp;#038;post=100&amp;#038;subd=brockallen&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=TC1FDextDYI:cpl-th5ExjY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=TC1FDextDYI:cpl-th5ExjY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=TC1FDextDYI:cpl-th5ExjY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=TC1FDextDYI:cpl-th5ExjY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=TC1FDextDYI:cpl-th5ExjY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=TC1FDextDYI:cpl-th5ExjY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=TC1FDextDYI:cpl-th5ExjY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=TC1FDextDYI:cpl-th5ExjY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/TC1FDextDYI" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 27 Apr 2012 11:12:38 -0700</pubDate>
      <a10:updated>2012-04-27T11:12:38-07:00</a10:updated>
    <feedburner:origLink>http://brockallen.com/2012/04/27/change-firefoxs-default-accept-header-to-prefer-json-over-xml/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/Mmmxy0y8QqU/</link>
      <a10:author>
        <a10:name>Brock Allen</a10:name>
        <a10:uri>http://brockallen.com/2012/04/27/wif-on-windows-xp-and-cassini-9/</a10:uri>
      </a10:author>
      <title>Brock Allen: WIF on Windows XP and Cassini</title>
      <description>WIF isn’t officially supported on XP (and it won’t even install), but you can ~/bin deploy it (you need to for Azure deployment). So this means you can basically develop with WIF on XP, but if you’re using Cassini as your web server then you’ll run into this bizarre exception (with a lousy stack trace [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brockallen.com&amp;#038;blog=23669881&amp;#038;post=87&amp;#038;subd=brockallen&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Mmmxy0y8QqU:_vTEgXsOSVM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Mmmxy0y8QqU:_vTEgXsOSVM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=Mmmxy0y8QqU:_vTEgXsOSVM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Mmmxy0y8QqU:_vTEgXsOSVM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=Mmmxy0y8QqU:_vTEgXsOSVM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Mmmxy0y8QqU:_vTEgXsOSVM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Mmmxy0y8QqU:_vTEgXsOSVM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=Mmmxy0y8QqU:_vTEgXsOSVM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/Mmmxy0y8QqU" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 26 Apr 2012 18:48:18 -0700</pubDate>
      <a10:updated>2012-04-26T18:48:18-07:00</a10:updated>
    <feedburner:origLink>http://brockallen.com/2012/04/27/wif-on-windows-xp-and-cassini-9/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/SfVtbEJlDPE/</link>
      <a10:author>
        <a10:name>Tony Sneed</a10:name>
        <a10:uri>http://blog.tonysneed.com/2012/04/24/roll-your-own-rest-ful-wcf-router/</a10:uri>
      </a10:author>
      <title>Tony Sneed: Roll Your Own REST-ful WCF Router</title>
      <description>Download the code for this post here. Recently I’ve been tasked with building a WCF routing service and faced the choice of whether to go with the built-in router that ships with WCF 4.0, or to build one from scratch.&amp;#160; &amp;#8230; &lt;a href="http://blog.tonysneed.com/2012/04/24/roll-your-own-rest-ful-wcf-router/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tonysneed.com&amp;#038;blog=14038854&amp;#038;post=423&amp;#038;subd=tonysneed&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SfVtbEJlDPE:CmJnhLUzqM0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SfVtbEJlDPE:CmJnhLUzqM0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=SfVtbEJlDPE:CmJnhLUzqM0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SfVtbEJlDPE:CmJnhLUzqM0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=SfVtbEJlDPE:CmJnhLUzqM0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SfVtbEJlDPE:CmJnhLUzqM0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=SfVtbEJlDPE:CmJnhLUzqM0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=SfVtbEJlDPE:CmJnhLUzqM0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/SfVtbEJlDPE" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 24 Apr 2012 08:05:16 -0700</pubDate>
      <a10:updated>2012-04-24T08:05:16-07:00</a10:updated>
    <feedburner:origLink>http://blog.tonysneed.com/2012/04/24/roll-your-own-rest-ful-wcf-router/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/EUD0xqJLcvw/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/04/23/new-1-day-class-nosql-for-the-sql-server-pro/</a10:uri>
      </a10:author>
      <title>Lynn Langit: New 1-day Class ‘NoSQL for the SQL Server Pro’</title>
      <description>Because I&amp;#8217;ve had several requests to build a short class after delivering my talk &amp;#8216;NoSQL for the SQL Server DBA&amp;#8217; at #SQLSaturday120 last month in Huntington Beach, CA, I&amp;#8217;ve decided to write and teach a one-day class around this topic. &amp;#8230; &lt;a href="http://lynnlangit.wordpress.com/2012/04/23/new-1-day-class-nosql-for-the-sql-server-pro/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=421&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EUD0xqJLcvw:H7PfzsLt7dI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EUD0xqJLcvw:H7PfzsLt7dI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=EUD0xqJLcvw:H7PfzsLt7dI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EUD0xqJLcvw:H7PfzsLt7dI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=EUD0xqJLcvw:H7PfzsLt7dI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EUD0xqJLcvw:H7PfzsLt7dI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=EUD0xqJLcvw:H7PfzsLt7dI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=EUD0xqJLcvw:H7PfzsLt7dI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/EUD0xqJLcvw" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 23 Apr 2012 09:51:59 -0700</pubDate>
      <a10:updated>2012-04-23T09:51:59-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/04/23/new-1-day-class-nosql-for-the-sql-server-pro/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/yl5iOckr2-k/points-conclusions-and-hypothesis.html</link>
      <a10:author>
        <a10:name>Allan Kelly</a10:name>
        <a10:uri>http://allankelly.blogspot.com/2012/04/points-conclusions-and-hypothesis.html</a10:uri>
      </a10:author>
      <title>Allan Kelly: Points: conclusions and hypothesis</title>
      <description>As anyone with time to spare will know I’ve recently spent a lot of time thinking, and writing about story points.  This was in response to Vasco Duarte’s Story Points Considered Harmful blog from a month or two back.  For completeness here are the links:&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;&lt;a href="http://softwaredevelopmenttoday.blogspot.co.uk/2012/01/story-points-considered-harmful-or-why.html"&gt;Vasco Duarte: Story Points Considered Harmful&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-considered-harmful-1-of-4.html"&gt;Story points considered harmful? 1 of 4 - Journey's start&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-2-of-4-duarte-arguments.html"&gt;Story points 2 of 4 - Duarte's arguments&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-3-of-4-example.html"&gt;Story points 3 of 4 - An example&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/points-4-of-4-breakdown.html"&gt;Points 4 of 4 - Breakdown&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Some conclusions I draw from this:&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;There is far more work to do on Abstract/Story Points than we, as a community have done to date&lt;/li&gt;&lt;li&gt;There are many more nuances to the assignment of points, the breakdown of work and the management of the outcomes than I think I previously realised&lt;/li&gt;&lt;li&gt;I must go and see what Mike Cohn actually says about Story Points before I say any more about his approach&lt;/li&gt;&lt;li&gt;Stable teams are crucial - but then I’ve been saying this all along&lt;/li&gt;&lt;/ul&gt;Given all this I’d like to pose a few questions and hypothesis of my own&lt;br /&gt;&lt;br /&gt;Q1: When does the correlation between story points and number of cards become stable?&lt;br /&gt;&lt;br /&gt;Hypothesis: I would expect a team new to “Agile”, stories and points to start off with erratic point scores and number of stories complete per sprint.  Thus I would not expect the correlation to be stable.  As a team settles down I would expect points to become stable, then stories completed and thus establish a correlation.&lt;br /&gt;&lt;br /&gt;Q2: Is there any serious research into story points out there?&lt;br /&gt;&lt;br /&gt;In the same line as my recent post “&lt;a href="http://allankelly.blogspot.co.uk/2012/03/agile-where-evidence.html"&gt;Agile: Where’s the Evidence?&lt;/a&gt;” it would be interesting to know if anyone has examined the use and accuracy of story points.  Again, I should seclude myself in an academic library and review the data.  But again, I have to find time.&lt;br /&gt;&lt;br /&gt;More problematic, I suspect, OK another hypothesis, that some of the reason why story points work - which &lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-3-of-4-example.html"&gt;I listed in part 3 of my posts&lt;/a&gt; - will make it very difficult to determine if they are accurate because the thing story points are measuring will change.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12948038-4913487092176742235?l=allankelly.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=yl5iOckr2-k:xFM3PXpuHSY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=yl5iOckr2-k:xFM3PXpuHSY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=yl5iOckr2-k:xFM3PXpuHSY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=yl5iOckr2-k:xFM3PXpuHSY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=yl5iOckr2-k:xFM3PXpuHSY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=yl5iOckr2-k:xFM3PXpuHSY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=yl5iOckr2-k:xFM3PXpuHSY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=yl5iOckr2-k:xFM3PXpuHSY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/yl5iOckr2-k" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 20 Apr 2012 09:16:00 -0700</pubDate>
      <a10:updated>2012-04-20T09:16:00-07:00</a10:updated>
    <feedburner:origLink>http://allankelly.blogspot.com/2012/04/points-conclusions-and-hypothesis.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/ygGmH716LAc/points-4-of-4-breakdown.html</link>
      <a10:author>
        <a10:name>Allan Kelly</a10:name>
        <a10:uri>http://allankelly.blogspot.com/2012/04/points-4-of-4-breakdown.html</a10:uri>
      </a10:author>
      <title>Allan Kelly: Points 4 of 4 - Breakdown</title>
      <description>This entry directly continues from three earlier ones:&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-considered-harmful-1-of-4.html"&gt;Story points considered harmful? 1 of 4 - Journey's start&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-2-of-4-duarte-arguments.html"&gt;Story points 2 of 4 - Duarte's arguments&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-3-of-4-example.html"&gt;Story points 3 of 4 - An example&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Duarte’s analysis, and my response, has got me thinking.  And I think it would be useful - to me at least, maybe to some readers! - to explain why I think story points, or rather the “&lt;strong&gt;Abstract Points&lt;/strong&gt;” that I prefer, are still useful, and why I advise teams to break down Blues - stories, possibly User Stories.&lt;br /&gt;&lt;br /&gt;Why do I advise teams to break down Blues/Stories?&lt;br /&gt;&lt;br /&gt;My background is as a C++ programmer, I worked on financial, telecom, and other systems.  A business story, a Blue, would frequently be bigger than a developer could manage in an iteration - particularly if you have a legacy system. Thus I would break Blues down to Whites. (See &lt;a href="http://www.google.co.uk/url?sa=t&amp;rct=j&amp;q=blue-white-red agile&amp;source=web&amp;cd=1&amp;ved=0CCcQFjAA&amp;url=http://www.allankelly.net/static/writing/overload/BlueWhiteRed.pdf&amp;ei=zhmPT928Hsuo8QOxzryoCw&amp;usg=AFQjCNGT_6rsH7vJcC1tkYpL-mx9L6LIbg"&gt;Blue-White-Red&lt;/a&gt; (PDF) if you want to know more about this approach.)&lt;br /&gt;&lt;br /&gt;Blues mean something to the business, Whites mean something to developers.  I think this situation still holds for many developers in many environments.  This has several advantages:&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;Whites are smaller pieces of work, they flow through a system more easily.  Progress can be seen, tasks tracked, velocity calculated.&lt;/li&gt;&lt;li&gt;“The Business” aka Product Owner/Manager/BA are not always good at delivering small stories, breaking a blue down gives the developer a chance.&lt;/li&gt;&lt;li&gt;On some teams the business have been beaten up by development to request really small stories.  However these stories lack business value.  Because Blues are going to be broken down they can be large enough to have value even if that means that can’t be completed in one iteration/sprint.&lt;/li&gt;&lt;li&gt;(Yes, you heard that right) Whites are completed during the iteration, when all the Whites, or the essential ones, are completed then the Blue is completed.&lt;/li&gt;&lt;li&gt;Breaking Blues down to Whites is as much a design exercise as it is an estimation and scheduling one.  This allows teams to engage in design and create a shared understanding.&lt;/li&gt;&lt;li&gt;Breaking Blues down to Whites frequently reveals functionality or assumptions about the Blue requirement which can be removed or postponed.&lt;/li&gt;&lt;li&gt;Having the Product Manager/Owner/BA in the room during this break down allows for requirements elaboration and knowledge mining.&lt;/li&gt;&lt;li&gt;Work can be rolled from one iteration to the next.  I’m very relaxed about carry over work and I think for a new team its almost unavoidable.  However doing it this way allows some points to be counted and illustrates what is happening.&lt;/li&gt;&lt;/ul&gt;(Of course the break down does create some problems: a Blue can only be done when all the Whites, or some done and other cancelled, which mean tracking becomes more complex.  It might also break the Lean idea of “single piece flow” but I’m not sure.)&lt;br /&gt;&lt;br /&gt;Next, why, given Duarte’s analysis, do I still advise teams to estimate their work?&lt;br /&gt;&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;I have seen the breakdown and estimate approach.  As &lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-3-of-4-example.html"&gt;detailed previously in one case it allowed a team to forecast to the day&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Estimating work allows teams, and individual team members, to raise a warning when work is not understood, defined or involves a lot of risk.  For example, a team estimating with planning poker will normally settle on an “average size” of task, e.g. 3 or 5 points.  When they suddenly assign 13 or 20 points to a task something is wrong.&lt;/li&gt;&lt;li&gt;And just in case the warning is ignored the team, the people at the code face, the people doing the work, have a control mechanism.  No matter how much the business or a manager bully a team they can still assign a high point score.&lt;/li&gt;&lt;li&gt;Equally, when differences in estimation appears it is a trigger to discussion, to learning, to understanding.  This is desirable.&lt;/li&gt;&lt;/ul&gt;Finally, there is one more reason why I will continue to advise to point their work, and its one I don’t normally admit to but, well Vasco, you win.....&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Placebo effect.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Managers, particularly trained project managers, find it alien to not estimate.  Actually they are not alone, I’ve seen plenty of developers and testers who think the Kanban craze of not estimating work is nutty.  Going through the rituals of pointing and planning poker provides at least the appearance of doing “the right thing.”&lt;br /&gt;&lt;br /&gt;Asking these folk to go cold turkey on planning and estimation is tough.&lt;br /&gt;&lt;br /&gt;Likewise, asking them to give up Gantt charts can be tough, so we offer them burn down charts.  To be honest I find intra-sprint burn-down charts useless.  Even the efficacy of pan-iteration burn-down charts surprised me at first.  I now see they can be very useful and recommend their use.  (Intellectually I prefer Cumulative Flow Diagrams but they are more difficult to get your head around and more difficult for the casual viewer to understand.)&lt;br /&gt;&lt;br /&gt;A mature team is, almost by definition, beyond needing placebos.  In a mature team I would expect the business to be requesting small stories which do represent value and do fit within an iteration.  Thus I would expect Duarte’s analysis to hold up and a mature team might well decide to go without points and use cards.&lt;br /&gt;&lt;br /&gt;However, for team at the beginning of its Agile journey I don’t expect these conditions hold.&lt;br /&gt;&lt;br /&gt;Finally, for this instalment, I’ve started to wonder about Blue-White-Red again.  I’ve long regarded Blue-White-Red as a Scrum/XP hybrid - closer to XP than Scrum if I’m honest.  While I’ve been asked to write more about it in the past never have.  Over time I have refined my thinking about it.  I’m now wondering if Blue-White-Red is actually something more different than I’ve ever appreciated.&lt;br /&gt;&lt;br /&gt;Maybe someone who has used &lt;a href="http://www.allankelly.net/static/writing/overload/BlueWhiteRed.pdf"&gt;Blue-White-Red&lt;/a&gt; can answer than one.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12948038-2001224205635677806?l=allankelly.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=ygGmH716LAc:0ycvB1qjAsk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=ygGmH716LAc:0ycvB1qjAsk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=ygGmH716LAc:0ycvB1qjAsk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=ygGmH716LAc:0ycvB1qjAsk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=ygGmH716LAc:0ycvB1qjAsk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=ygGmH716LAc:0ycvB1qjAsk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=ygGmH716LAc:0ycvB1qjAsk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=ygGmH716LAc:0ycvB1qjAsk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/ygGmH716LAc" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 19 Apr 2012 03:39:00 -0700</pubDate>
      <a10:updated>2012-04-19T03:39:00-07:00</a10:updated>
    <feedburner:origLink>http://allankelly.blogspot.com/2012/04/points-4-of-4-breakdown.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/fiXiyh_potI/story-points-3-of-4-example.html</link>
      <a10:author>
        <a10:name>Allan Kelly</a10:name>
        <a10:uri>http://allankelly.blogspot.com/2012/04/story-points-3-of-4-example.html</a10:uri>
      </a10:author>
      <title>Allan Kelly: Story points 3 of 4 - An example</title>
      <description>This entry continues from two earlier ones:&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-considered-harmful-1-of-4.html"&gt;Story points considered harmful? 1 of 4 - Journey's start&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-2-of-4-duarte-arguments.html"&gt;Story points 2 of 4 - Duarte's arguments&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I’ve got some (abstract) points data of my own.  Not as much as Duarte’s but some.  One team in particular is interesting.  The development manage said a few months ago “We can deliver to the day.”  But actually, when you look at the data the velocity looks quite variable.  Whats going on?&lt;br /&gt;&lt;br /&gt;Well two things, at least.  First, when you average the data out it is no where near as variable -  thats what averages do.  I’m reminded of the old economists warning: “Do not pay to much attention to one month’s figures [GDP/GNP/Inflaction/etc].  Look at the trend.”&lt;br /&gt;&lt;br /&gt;So yes, velocity iteration to iteration changes but over a longer period it is meaningful.&lt;br /&gt;&lt;br /&gt;Second, this is a team I regard as stable.  I learned a long time ago that if you don’t have a stable team your velocity data is meaningless.  The velocity is delivered by the team members, if you change the team you can’t get a meaningful velocity.&lt;br /&gt;&lt;br /&gt;While I regard this team as stable when I looked close, looked at the data and dredged my memory, this was not a stable team.  One member retired, one member joined, the team was joined by another person to tackle a specific sub-set of work, the team adopted TDD a few months after moving to iterations, later still they tried doing pair-programming.  &lt;br /&gt;&lt;br /&gt;Somewhere along the line the hardware team joined the iterations, added to the velocity, then, after a while left.  It didn’t work as well as hoped.  When you look at the data you can see this: alone the software team can have a standard deviation as low as 3.6 on an average velocity of 62 (over 5 iterations) , with the hardware team added that goes to over 17 on a velocity of 60.&lt;br /&gt;&lt;br /&gt;(Velocity falls after team expansion is a phenomenon I’ve seen in two other data sets I’ve got.  &lt;a href="http://en.wikipedia.org/wiki/Brooks's_law"&gt;Brooks’ Law&lt;/a&gt; doesn’t completely explain this, other factors are at work which I will discuss another day (i.e. when I understand them more fully!))&lt;br /&gt;&lt;br /&gt;In other words, the team wasn’t stable.  In fact, given all that change I’m surprised velocity was as stable as it was!&lt;br /&gt;&lt;br /&gt;I think a third factor was at work.  Once a team have put a point score on a card, say they point it to 5.  Then there is a mild incentive to finish the card in something that feels like 5 points.  Not the strong commitment of Scrum mythology, more a pride in ones own skills, and perhaps, a desire to score points at the end of the iteration.&lt;br /&gt;&lt;br /&gt;Fourth: its not just development estimates that are helping the team hit dates.  Armed with this data scope can be fine tuned, teams can take decisions on when to do refactorings and so on.&lt;br /&gt;&lt;br /&gt;Fifth: once a team has velocity data and can forecast dates it it can negotiate on features and deliveries.  This echo’s Duarte’s story but is more fine grained.  Of course this won’t help if the end customers/users/clients/stakeholders aren’t prepared to engage.&lt;br /&gt;&lt;br /&gt;Given all this I believe abstract points and graphs are helpful, not harmful.&lt;br /&gt;&lt;br /&gt;Perhaps one day I’ll be able to publish this data.  Its just one team but it shows that velocity and point scoring can work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12948038-7143540669324907848?l=allankelly.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=fiXiyh_potI:nMwi2FTxNjU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=fiXiyh_potI:nMwi2FTxNjU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=fiXiyh_potI:nMwi2FTxNjU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=fiXiyh_potI:nMwi2FTxNjU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=fiXiyh_potI:nMwi2FTxNjU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=fiXiyh_potI:nMwi2FTxNjU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=fiXiyh_potI:nMwi2FTxNjU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=fiXiyh_potI:nMwi2FTxNjU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/fiXiyh_potI" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 18 Apr 2012 02:44:00 -0700</pubDate>
      <a10:updated>2012-04-18T02:44:00-07:00</a10:updated>
    <feedburner:origLink>http://allankelly.blogspot.com/2012/04/story-points-3-of-4-example.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/twnOm1DDuNM/story-points-2-of-4-duarte-arguments.html</link>
      <a10:author>
        <a10:name>Allan Kelly</a10:name>
        <a10:uri>http://allankelly.blogspot.com/2012/04/story-points-2-of-4-duarte-arguments.html</a10:uri>
      </a10:author>
      <title>Allan Kelly: Story points 2 of 4 - Duarte's arguments</title>
      <description>This blog entry follow directly from the previous &lt;a href="http://allankelly.blogspot.co.uk/2012/04/story-points-considered-harmful-1-of-4.html"&gt;Story Points - Journey’s Start&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Key to Duarte argument, and something I didn’t originally appreciate from his initial Tweets is: he is not saying story points are rubbish, forget about them.  What he is saying is: it is simpler and equally accurate to just count the stories as atomic items.  This is equivalent to saying “All stories are 1 point” and having done with it.&lt;br /&gt;&lt;br /&gt;For a mature team with a good relationship with its stakeholders I could see this working well.  However, for less mature teams (who have difficulty agreeing among themselves) or a team with bully-boy stakeholders (or bully boy anyone else for that matter) then I think being able to put a higher point score on the card serves as a useful warning mechanism.&lt;br /&gt;&lt;br /&gt;Duarte says in his blog “the best predictor of the future is your past performance!”  On this I couldn’t agree more.  He then poses three questions - and answers - which I think are worth reviewing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Q1: Is there sufficient difference between what Story Points and ’number of items’ measure to say that they don’t measure the same thing?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Here he finds there is a close correlation.  I’m not surprised here, in fact I would expect this to be the case.  Teams are encouraged to write small stories, in fact Scrum almost mandates this because work should be completely done at the end of a sprint.  In effect there is an upper bound placed on the size of a story.&lt;br /&gt;&lt;br /&gt;Actually, I’m not so keen on this rule.  I allow work to be carried from iteration to iteration but I only allow points to be scored when the work is done.  Thus I encourage stories to be completed in an iteration but I don’t mandate it.  One of the exercises I do with teams on my courses actually sets out to illustrate this point.&lt;br /&gt;&lt;br /&gt;At the very least I would expect teams to settle on an “average story size” implicitly. Notice also that the correlation applies whether all stories are of size 1 or of size 2, 3 or any other number.  Its a correlation between two series of numbers.&lt;br /&gt;&lt;br /&gt;However, given all this Duarte has a point: if your stories are clustered around an average size then you might as well count the stories.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Q2: Which one of the two metrics is more stable? And what does that mean?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Duarte’s analysis says that both stories and story points have similar standard deviation.  Thus they are of similar stability.  Since these two are closely correlated this isn’t a surprise.  In fact, given the correlation, it would be a surprise if one was notably more stable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Q3: Are both metrics close enough so that measuring one (number of items) is equivalent to measuring the other (Story Points)?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Duarte’s data seems to measure the same thing - again, if they are closely correlated then this is exactly what you would expect.  You can write out the equation: &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Story Points ~= (Correlation Co-efficient) x (Number of Stories)&lt;br /&gt;&lt;br /&gt;(The ~= is supposed to mean approximately equal.)&lt;br /&gt;&lt;br /&gt;With this out of the way Duarte moves on to consider Mike Cohn’s claims for story points.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Claim 1&lt;/strong&gt;: The use of Story points allows us to change our mind whenever we have new information about a story&lt;br /&gt;&lt;strong&gt;Duarte says&lt;/strong&gt;: Story Points offer no advantage over just simply counting the number of items left to be Done.&lt;br /&gt;&lt;br /&gt;I agree here.  I’ve long encouraged teams to move away from story pointing work in the distant future.  Yes I encourage them to story point some stories in the backlog - say a few months work - and story point tasks - for the next iteration.  But for stuff that is “out there” or has just arisen my advice is usually:  just assign it your average story point value.&lt;br /&gt;&lt;br /&gt;In other words, assume your average story point value is your Correlation Co-efficient.  When work gets close then estimate it traditionally, you might find the value changes.  When it gets really close break it down into tasks.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Claim 2&lt;/strong&gt;: The use of Story points works for both epics and smaller stories&lt;br /&gt;&lt;strong&gt;Duarte says&lt;/strong&gt;: there is no significant added information by classifying a story in a 100 SP category&lt;br /&gt;&lt;br /&gt;Again I agree.  To be honest I’m not a fan of Epics and while some of the teams I work with use them I often encourage teams to dump them.  To me an epic is just a collection of stories around a theme.&lt;br /&gt;&lt;br /&gt;Actually, what Cohn and Duarte are saying are not at odds here.  Cohn doesn’t (seem to) make any additional claims.  Its just a scaling question.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Claim 3&lt;/strong&gt;: The use of Story points doesn’t take a lot of time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;&lt;strong&gt;Duarte says&lt;/strong&gt;: In fact, as anybody that has tried a nontrivial project knows it can take days of work to estimate the initial backlog for a reasonable size project.&lt;br /&gt;&lt;br /&gt;Here I have issues with both Cohn and Duarte.  &lt;br /&gt;If you are estimating stories then it does take time.  Fast as it is, even planning poker takes time.  However there is also a lot of design and requirements discussion going on in that activity.  Therefore I don’t see this as a problem.  In fact I see it as an important learning exercise.&lt;br /&gt;&lt;br /&gt;True, on a none trivial project it will take time to estimate a large backlog.  But a) that is valuable learning and b) I won’t try.  I’d either estimate it in chunks or I’d apply an average estimate to work which wasn’t going to happen anytime soon - see claim #2.&lt;br /&gt;&lt;br /&gt;I deliberately delay estimation as long as possible to allow more information to arrive and because work will change.  It might be changed out of all recognition or it might go away completely.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Claim 4&lt;/strong&gt;: The use of Story points provides useful information about our progress and the work remaining&lt;br /&gt;&lt;strong&gt;Duarte says&lt;/strong&gt;: This claim holds true if, and only if you have estimated all of your stories in the Backlog and go through the same process for each new story added to the Backlog.&lt;br /&gt;&lt;br /&gt;Again I agree.  However I doubt the usefulness of the concept of “work remaining”.  Its only work remaining if you think you have a lump of work to do.  In my experience work is always negotiable.  Its just that people don’t want to negotiate until they accept that they won’t get everything.&lt;br /&gt;&lt;br /&gt;One of my clients has gone through the very expensive exercise of estimating all the work they might do.  Earlier this year they realised they had 3000 points to do by Christmas.  They also realised they had capacity to do less than 1000.  This brought home to fact that they couldn’t do everything - something many people on the project had long known or suspected.  The company are still working through this issue but at they are having the discussion now, in March and April not September and October.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Claim 5&lt;/strong&gt;: The use of Story points is tolerant of imprecision in the estimates&lt;br /&gt;&lt;strong&gt;Duarte says&lt;/strong&gt;: there's no data [in Cohn’s book] to justify the belief that Story Points do this better than merely counting the number of Stories Done. In fact, we can argue that counting the number of stories is even more tolerant of imprecisions&lt;br /&gt;&lt;br /&gt;Again I agree.  But then, if there is a high correlation between story points and stories then this is self-evident.  And again, as I said before: we need to work with aggregates and averages.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Claim 6&lt;/strong&gt;: Story points can be used to plan releases&lt;br /&gt;&lt;strong&gt;Duarte says&lt;/strong&gt;: Fair enough. On the other hand we can use any estimation technique to do this, so how would Story Points [be better than counting the number of stories]&lt;br /&gt;&lt;br /&gt;Again, agreement, and with correlation its self evident.&lt;br /&gt;&lt;br /&gt;Duarte goes on to give a worked examples in which a project does not achieve the desire velocity and gets cancelled.  His story makes no use of story points, simply stories.  To be honest I’m missing something here.  True the stories in his story have no points, but I don’t see where that makes a difference.  What he describes is exactly the way I would play the scenario although I would have story points in the mix.&lt;br /&gt;&lt;br /&gt;His conclusion:  “Don't estimate the size of a story further than this: when doing Backlog Grooming or Sprint Planning just ask: can this Story be completed in a Sprint by one person? If not, break the story down!”&lt;br /&gt;&lt;br /&gt;This is interesting because while Duarte is working at the story level this pretty closely models the way I advise teams to work.  I always tell teams: &lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;“I’d like a story to be small, to fit in one iteration but that isn’t always the way.”&lt;/li&gt;&lt;li&gt;“In my experience stories need to be broken down, both so they can get done but also so you get flow and as part of a design exercise.”&lt;/li&gt;&lt;/ul&gt;I then have teams break down stories - which I call blues - into (developer) tasks - whites - this follows my &lt;a href="http://www.google.co.uk/url?sa=t&amp;rct=j&amp;q=blue white red agile&amp;source=web&amp;cd=1&amp;ved=0CDUQFjAA&amp;url=http://www.allankelly.net/static/writing/overload/BlueWhiteRed.pdf&amp;ei=RmyNT7-9JImO8gO_6KitCw&amp;usg=AFQjCNGT_6rsH7vJcC1tkYpL-mx9L6LIbg"&gt;Blue-White-Red&lt;/a&gt; process from a few years back.  I then put points on whites - at this point you probably start to see why I prefer the term Abstract Points not Story Points because Whites aren’t stories.&lt;br /&gt;&lt;br /&gt;When a team have a feel for points then I will have them put points - the same units, just bigger - on Blues.  For Blues that won’t be done for a while then I’m happy to assign averages, and for Blues that are further out then I’m happy to leave them unpointed.&lt;br /&gt;&lt;br /&gt;So, thank you for reading my analysis of here and staying all the way.&lt;br /&gt;&lt;br /&gt;My conclusion?  I think I agree with Duarte but I don’t agree with him.  I think I actually disagree with Mike Cohn but I’d have to go back and look at what he says himself.&lt;br /&gt;&lt;br /&gt;I think the way I estimate with teams, the way I used to do it when I ran teams and the way I teach clients to estimate is more different than perhaps I appreciated.  My method grew from my interpretation of Kent Beck’s XP planning game and velocity.  However I now think my approach has drifted from this.  The result of my experience, seeing what works and what doesn’t has refined my approach.&lt;br /&gt;&lt;br /&gt;The approach I’ve ended up with has similarities with what Duarte describes but is also different.&lt;br /&gt;&lt;br /&gt;Despite lots of authors attempts to describe Scrum/XP planning and estimating I still find myriads of minor variations.  Some improve things, some not.  Until this moment I’ve always believed my approach only differed in minor ways.  Now I’m thinking....&lt;br /&gt;&lt;br /&gt;And what of the Duarte’s harmful claim?  Actually, although he uses the word in the title I don’t see any discussion of the harm they cause.&lt;br /&gt;&lt;br /&gt;Story points might be pointless but do they do any harm?  I don’t really see it, they may be a waste of time, there might be more effective ways of doing the same thing but that’s not the same as harmful.  Story points might mislead, there is little evidence here so I’ll hold judgement on that one.&lt;br /&gt;&lt;br /&gt;To be continued....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12948038-8090281216724401056?l=allankelly.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=twnOm1DDuNM:LLubJYIrXZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=twnOm1DDuNM:LLubJYIrXZs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=twnOm1DDuNM:LLubJYIrXZs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=twnOm1DDuNM:LLubJYIrXZs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=twnOm1DDuNM:LLubJYIrXZs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=twnOm1DDuNM:LLubJYIrXZs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=twnOm1DDuNM:LLubJYIrXZs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=twnOm1DDuNM:LLubJYIrXZs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/twnOm1DDuNM" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 17 Apr 2012 06:14:00 -0700</pubDate>
      <a10:updated>2012-04-17T06:14:00-07:00</a10:updated>
    <feedburner:origLink>http://allankelly.blogspot.com/2012/04/story-points-2-of-4-duarte-arguments.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/zemDY7Q5pQo/html5-and-device-api-s.aspx</link>
      <a10:author>
        <a10:name>Maurice de Beijer</a10:name>
        <a10:uri>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/16/html5-and-device-api-s.aspx</a10:uri>
      </a10:author>
      <title>Maurice de Beijer: HTML5 and Device API’s</title>
      <description>&lt;p&gt;Last week the question of HTML5 and sensors came up. This wasn’t really strange as we where talking about the HTML5 GeoLocation features and using the, optional, GPS is just one device or sensor you might want to use.&lt;/p&gt;  &lt;p&gt;It turns out the W3C has a Device &lt;a href="http://www.w3.org/2009/dap/"&gt;APIs Working Group&lt;/a&gt; working on this problem. They are working on a whole range of interesting devices like:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Battery Status API&lt;/li&gt;    &lt;li&gt;Contacts API&lt;/li&gt;    &lt;li&gt;HTML Media Capture&lt;/li&gt;    &lt;li&gt;Media Capture API&lt;/li&gt;    &lt;li&gt;Network Information API&lt;/li&gt;    &lt;li&gt;Sensor API&lt;/li&gt;    &lt;li&gt;Vibration API&lt;/li&gt;    &lt;li&gt;Calendar API&lt;/li&gt;    &lt;li&gt;MediaStream Capture Scenarios&lt;/li&gt;    &lt;li&gt;And more..&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://dvcs.w3.org/hg/dap/raw-file/tip/sensor-api/Overview.html"&gt;Sensor API&lt;/a&gt; covers a group of others&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;AmbientTemperature&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;A ambient temperature&lt;/li&gt;    &lt;li&gt;AtmPressure&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;A pressure sensor&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;RelHumidity&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;A releative humidity sensor&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;AmbientLight&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;A light sensor&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;AmbientNoise&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;A ambient noise sensor&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;DevMagneticField&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;A magnetic field sensor&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;DevProximity&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;A proximity sensor&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Sweet, this should open up some nice capabilities in the future. The problem is that for now this is just one of may standards out there and it seems it will be some time before these standards are actually usable. Guess we have to stick to native clients, or something like &lt;a href="http://phonegap.com/"&gt;PhoneGap&lt;/a&gt;, for now.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.theproblemsolver.nl/"&gt;TheProblemSolver&lt;/a&gt;   &lt;br /&gt;&lt;a href="http://www.dotnetevents.nl/"&gt;DotNetEvents&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1808896" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=zemDY7Q5pQo:0R6dOASnzbs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=zemDY7Q5pQo:0R6dOASnzbs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=zemDY7Q5pQo:0R6dOASnzbs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=zemDY7Q5pQo:0R6dOASnzbs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=zemDY7Q5pQo:0R6dOASnzbs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=zemDY7Q5pQo:0R6dOASnzbs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=zemDY7Q5pQo:0R6dOASnzbs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=zemDY7Q5pQo:0R6dOASnzbs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/zemDY7Q5pQo" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 16 Apr 2012 07:40:19 -0700</pubDate>
      <a10:updated>2012-04-16T07:40:19-07:00</a10:updated>
    <feedburner:origLink>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/16/html5-and-device-api-s.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/axvxN4Xo9y0/story-points-considered-harmful-1-of-4.html</link>
      <a10:author>
        <a10:name>Allan Kelly</a10:name>
        <a10:uri>http://allankelly.blogspot.com/2012/04/story-points-considered-harmful-1-of-4.html</a10:uri>
      </a10:author>
      <title>Allan Kelly: Story points considered harmful? 1 of 4 - Journey's start</title>
      <description>A few months ago &lt;a href="http://softwaredevelopmenttoday.blogspot.co.uk/"&gt;Vasco Duarte&lt;/a&gt;, with a little help from &lt;a href="http://www.metaprog.com/blogs/"&gt;Joseph Pelrine&lt;/a&gt; started a discussion entitled “&lt;a href="http://softwaredevelopmenttoday.blogspot.co.uk/2012/01/story-points-considered-harmful-or-why.html"&gt;Story Points considered harmful&lt;/a&gt;.”  They, or at least Vasco, has given this as a &lt;a href="http://www.slideshare.net/duartevasco/story-points-considered-harmful-or-why-the-future-of-estimation-is-really-in-our-past"&gt;conference keynote&lt;/a&gt; and has &lt;a href="http://softwaredevelopmenttoday.blogspot.co.uk/2012/01/story-points-considered-harmful-or-why.html"&gt;blogged about it&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(Warning: this is the first of 4 blog entires, its quite a long post.  Plus I think there are two appendix blog entries to follow up.)&lt;br /&gt;&lt;br /&gt;Now I’ll admit, when I first heard this argument I thought “Well I can guess where they are coming from” - I have sympathy with the argument, I’ve always considered story points as suspect myself.  I also thought “But I don’t think they are right”.  Specifically I know a team who use story points and claim to be able to schedule delivery “to the day.”&lt;br /&gt;&lt;br /&gt;I’ve collected some data of my own from teams I’ve worked with, am working with or at least in contact with and done a bit of amateur analysis.  I’m also taking time to go over Vasco and Joseph’s arguments.&lt;br /&gt;&lt;br /&gt;This is a big topic and its going to take me a while to get to the bottom of the data, what I think and  the pro and con arguments.  So please forgive me, this is going to take a few, possibly long blog articles to go through.&lt;br /&gt;&lt;br /&gt;Lets get a couple of things on the table to start with.&lt;br /&gt;&lt;br /&gt;Firstly I don’t believe Story points are a Scrum technique.  Yes they have been subsumed into Common Scrum but I believe they originally originated with Extreme Programming.  Where they originated isn’t really important because I believe story point estimation and tasking (i.e. estimating work to do with story points and then scheduling a number of story points) is at odds with Scrum Commitment.&lt;br /&gt;&lt;br /&gt;I’ve blogged about this before, &lt;a href="http://allankelly.blogspot.co.uk/2010/06/two-ways-to-fill-iterations.html"&gt;Two Ways to Fill and Iteration&lt;/a&gt;, so I won’t repeat myself.  Just say, in my book commitment and story pointing are alternatives.&lt;br /&gt;&lt;br /&gt;By the way, the name Story Points comes from &lt;a href="http://blog.mountaingoatsoftware.com/"&gt;Mike Cohn&lt;/a&gt;, I prefer to call them &lt;strong&gt;Abstract Points&lt;/strong&gt;, and I’ve heard others call them “Nebulous Units of Time”.&lt;br /&gt;&lt;br /&gt;Second, I don’t believe story points can ever be stable if you don’t have a stable team.  If you remove people from a team I expect it to slow down, if you add people to the team I expect it to slow down too - at least in the short term.  In the longer term you might increase capacity but frankly I don’t know how long that will take.&lt;br /&gt;&lt;br /&gt;I few years ago I worked with one team which had story/abstract points which appeared to be random.  When I adjusted form changes in team staffing they average was constant.  That said, I don’t expect points to remain constant, they might do for a while but I expect them to fluctuate at the very least.&lt;br /&gt;&lt;br /&gt;It goes without saying that I expect sprint/iteration length to be stable too.&lt;br /&gt;&lt;br /&gt;Which brings us to the third thing: with points, stories and projections, they only work at the average and aggregate level.  They are a good predictor over several sprints but they offer no guarantees for the next sprint/iteration.&lt;br /&gt;&lt;br /&gt;Finally, for now, something I do agree with Duarte on: we can’t estimate.  By “we” I mean humans.  Last year I devoted several blog entries to the subject, &lt;a href="http://allankelly.blogspot.co.uk/2011/03/humans-can-estimate-tasks.html"&gt;Humans Can’t Estimate&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12948038-3253511319826292006?l=allankelly.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=axvxN4Xo9y0:TNhwLZz0_dw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=axvxN4Xo9y0:TNhwLZz0_dw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=axvxN4Xo9y0:TNhwLZz0_dw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=axvxN4Xo9y0:TNhwLZz0_dw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=axvxN4Xo9y0:TNhwLZz0_dw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=axvxN4Xo9y0:TNhwLZz0_dw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=axvxN4Xo9y0:TNhwLZz0_dw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=axvxN4Xo9y0:TNhwLZz0_dw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/axvxN4Xo9y0" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 16 Apr 2012 07:40:00 -0700</pubDate>
      <a10:updated>2012-04-16T07:40:00-07:00</a10:updated>
    <feedburner:origLink>http://allankelly.blogspot.com/2012/04/story-points-considered-harmful-1-of-4.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/vCx34hTTY1Q/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/04/16/java-vs-smallbasic-for-teaching-kids-programming/</a10:uri>
      </a10:author>
      <title>Lynn Langit: Java vs. SmallBasic for Teaching Kids Programming</title>
      <description>We&amp;#8217;ve been experimenting with porting our TKP (Teaching Kids Programming) recipe library over to Java (from SmallBasic).  We recorded a short video showing a comparison between using the SmallBasic language and editor as it compares to using Java with Eclipse &amp;#8230; &lt;a href="http://lynnlangit.wordpress.com/2012/04/16/java-vs-smallbasic-for-teaching-kids-programming/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=419&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=vCx34hTTY1Q:OPgv_8WQSEw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=vCx34hTTY1Q:OPgv_8WQSEw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=vCx34hTTY1Q:OPgv_8WQSEw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=vCx34hTTY1Q:OPgv_8WQSEw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=vCx34hTTY1Q:OPgv_8WQSEw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=vCx34hTTY1Q:OPgv_8WQSEw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=vCx34hTTY1Q:OPgv_8WQSEw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=vCx34hTTY1Q:OPgv_8WQSEw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/vCx34hTTY1Q" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 15 Apr 2012 17:11:01 -0700</pubDate>
      <a10:updated>2012-04-15T17:11:01-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/04/16/java-vs-smallbasic-for-teaching-kids-programming/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/02tZczbGPTU/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/04/13/mongodb-for-the-net-developer-zero-to-go-in-9-minutes/</a10:uri>
      </a10:author>
      <title>Lynn Langit: MongoDB for the .NET developer – Zero to Go in 9 minutes</title>
      <description>As I explore NoSQL options, I am more and more impressed with both the ease-of-use and the power of MongoDB.  Here are two short videos to get you started. In the first video (&amp;#60; 5 minutes), I show you where &amp;#8230; &lt;a href="http://lynnlangit.wordpress.com/2012/04/13/mongodb-for-the-net-developer-zero-to-go-in-9-minutes/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=417&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=02tZczbGPTU:woJYobcjePM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=02tZczbGPTU:woJYobcjePM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=02tZczbGPTU:woJYobcjePM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=02tZczbGPTU:woJYobcjePM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=02tZczbGPTU:woJYobcjePM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=02tZczbGPTU:woJYobcjePM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=02tZczbGPTU:woJYobcjePM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=02tZczbGPTU:woJYobcjePM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/02tZczbGPTU" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 13 Apr 2012 12:02:55 -0700</pubDate>
      <a10:updated>2012-04-13T12:02:55-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/04/13/mongodb-for-the-net-developer-zero-to-go-in-9-minutes/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/RXXGLgTXrYQ/the-browser-landscape-is-changing.aspx</link>
      <a10:author>
        <a10:name>Maurice de Beijer</a10:name>
        <a10:uri>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/13/the-browser-landscape-is-changing.aspx</a10:uri>
      </a10:author>
      <title>Maurice de Beijer: The browser landscape is changing</title>
      <description>&lt;p&gt;I hadn’t really been paying attention to the popularity of browsers a whole lot for the last few months until this week as I was teaching HTML5 and the usage stats influence what is usable and what not. Sure I heard some time ago that Chrome was larger then IE but as most of these statistics are more about politics then anything else I tend to ignore them and just check some sites I know are producing real numbers for me. And the best I know way is to compare Google Analytics on some large sites.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;And was I surprised this week when I checked.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;These are the stats I collected last December for an HTML5 presentation I did back then:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/1401.image_5F00_17FA4950.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/3312.image_5F00_thumb_5F00_3296BF9C.png" width="760" height="379" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you can see there are three big players and Internet Explorer was the biggest with a 42% market share. Now your stats may vary slightly but I would be very surprised they where very different for a general purpose website.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;However when I checked this week things where very different.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/3683.image_5F00_7CD15474.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/4251.image_5F00_thumb_5F00_53E63F6B.png" width="799" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The total number of visits may be down quite a bit but we arte still looking at more than half a million visits here. And not only did Google Chrome pass Internet Explorer but so did Firefox. And even with the overall traffic being down more than 25% Chrome still manages to get more visits in now then it did in December.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Didn’t see that one coming, it sure seems we are living in a very interesting time as HTML5 developers.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.theproblemsolver.nl/"&gt;TheProblemSolver&lt;/a&gt;   &lt;br /&gt;&lt;a href="http://www.dotnetevents.nl/"&gt;DotNetEvents&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1808814" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=RXXGLgTXrYQ:5L7hicIWoZE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=RXXGLgTXrYQ:5L7hicIWoZE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=RXXGLgTXrYQ:5L7hicIWoZE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=RXXGLgTXrYQ:5L7hicIWoZE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=RXXGLgTXrYQ:5L7hicIWoZE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=RXXGLgTXrYQ:5L7hicIWoZE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=RXXGLgTXrYQ:5L7hicIWoZE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=RXXGLgTXrYQ:5L7hicIWoZE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/RXXGLgTXrYQ" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 13 Apr 2012 05:55:58 -0700</pubDate>
      <a10:updated>2012-04-13T05:55:58-07:00</a10:updated>
    <feedburner:origLink>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/13/the-browser-landscape-is-changing.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/lxcsWQlmb0s/</link>
      <a10:author>
        <a10:name>Michael Kennedy</a10:name>
        <a10:uri>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/NqRYj0Mbd9w/</a10:uri>
      </a10:author>
      <title>Michael Kennedy: Downloads from Building Rich Input Forms in ASP.NET MVC Webcast</title>
      <description>Thanks to all who attended my webcast yesterday. Here is the recorded video, slides, and demo application. Slides: Kennedy-Rich-Forms-with-ASP.NET-MVC-Slides.zip Demo Application: Kennedy-MVC-Forms-Demo.zip Video Recording: Remember, you&amp;#8217;ll need to run MongoDB to make the web app work. Read the readme in the zip &amp;#8230; &lt;a href="http://blog.michaelckennedy.net/2012/04/11/downloads-from-building-rich-input-forms-in-asp-net-mvc-webcast/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.michaelckennedy.net&amp;#038;blog=33101121&amp;#038;post=509&amp;#038;subd=michaelckennedy&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=lxcsWQlmb0s:sh0Ged5S4iU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=lxcsWQlmb0s:sh0Ged5S4iU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=lxcsWQlmb0s:sh0Ged5S4iU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=lxcsWQlmb0s:sh0Ged5S4iU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=lxcsWQlmb0s:sh0Ged5S4iU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=lxcsWQlmb0s:sh0Ged5S4iU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=lxcsWQlmb0s:sh0Ged5S4iU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=lxcsWQlmb0s:sh0Ged5S4iU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/lxcsWQlmb0s" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 11 Apr 2012 22:27:46 -0700</pubDate>
      <a10:updated>2012-04-11T22:27:46-07:00</a10:updated>
    <feedburner:origLink>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/NqRYj0Mbd9w/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/2e-zM-JJUJg/</link>
      <a10:author>
        <a10:name>Pinku Surana</a10:name>
        <a10:uri>http://surana.wordpress.com/2012/04/11/ubuntu-software-center-ui-issues/</a10:uri>
      </a10:author>
      <title>Pinku Surana: Ubuntu Software Center UI issues</title>
      <description>I&amp;#8217;ve loaded Precise into VMware (2GB, 2 cores). In 30 minutes I&amp;#8217;ve run across so many UI idiosyncrasies in Software Center that I can&amp;#8217;t remember them all. Here&amp;#8217;s a short list: When I installed git, it didn&amp;#8217;t change it&amp;#8217;s status to installed until I moved to another screen and back. When I went back to see [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=surana.wordpress.com&amp;#038;blog=1937801&amp;#038;post=347&amp;#038;subd=surana&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2e-zM-JJUJg:sj2nG_fS-bA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2e-zM-JJUJg:sj2nG_fS-bA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=2e-zM-JJUJg:sj2nG_fS-bA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2e-zM-JJUJg:sj2nG_fS-bA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=2e-zM-JJUJg:sj2nG_fS-bA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2e-zM-JJUJg:sj2nG_fS-bA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2e-zM-JJUJg:sj2nG_fS-bA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=2e-zM-JJUJg:sj2nG_fS-bA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/2e-zM-JJUJg" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 11 Apr 2012 13:30:20 -0700</pubDate>
      <a10:updated>2012-04-11T13:30:20-07:00</a10:updated>
    <feedburner:origLink>http://surana.wordpress.com/2012/04/11/ubuntu-software-center-ui-issues/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/PnxZHqwlZHs/using-jquery-from-an-html5-web-worker.aspx</link>
      <a10:author>
        <a10:name>Maurice de Beijer</a10:name>
        <a10:uri>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/10/using-jquery-from-an-html5-web-worker.aspx</a10:uri>
      </a10:author>
      <title>Maurice de Beijer: Using jQuery from an HTML5 Web Worker</title>
      <description>&lt;p&gt;&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; is one of the most useful frameworks out there for web development. And while most of jQuery is very much about working with the browser DOM there is also another side to it that makes doing networking real easy and that is all based around the &lt;a href="http://api.jquery.com/jQuery.ajax/"&gt;$.ajax()&lt;/a&gt; and related, like the &lt;a href="http://api.jquery.com/jQuery.getJSON/"&gt;$.getJSON()&lt;/a&gt;, functions. Now HTML5 contains a real useful part in &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html"&gt;Web Workers&lt;/a&gt; for doing work that should not block the background thread. And using the &lt;a href="http://www.w3.org/TR/XMLHttpRequest/"&gt;XMLHttpRequest&lt;/a&gt; for network IO is fine in a Web Worker. &lt;/p&gt;  &lt;p&gt;Unfortunately however working with the DOM is not ok in the Web Worker, which makes total sense, but as a result using jQuery, which has lots of DOM related code is not fine in a Web Worker. And that is a shame because using jQuery for just network IO would be much easier that the XMLHttpRequest and totally fine if it would load.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So removing the DOM code from jQuery should solve the problem right?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Enter the jQuery - No DOM Edition&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It turns out &lt;a href="https://github.com/kpozin"&gt;Konstantin Pozin&lt;/a&gt; did just that with the jQuery - No DOM Edition &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/theproblemsolver.metablogapi/6457.wlEmoticon_2D00_smile_5F00_587E6705.png" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can find it &lt;a href="https://github.com/kpozin/jquery-nodom"&gt;here&lt;/a&gt; or download a test version &lt;a href="http://cloud.github.com/downloads/kpozin/jquery-nodom/jquery.nodom.js"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.theproblemsolver.nl/"&gt;TheProblemSolver&lt;/a&gt;   &lt;br /&gt;&lt;a href="http://www.dotnetevents.nl/"&gt;DotNetEvents&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1808676" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PnxZHqwlZHs:0NpwdXOXSCQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PnxZHqwlZHs:0NpwdXOXSCQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=PnxZHqwlZHs:0NpwdXOXSCQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PnxZHqwlZHs:0NpwdXOXSCQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=PnxZHqwlZHs:0NpwdXOXSCQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PnxZHqwlZHs:0NpwdXOXSCQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PnxZHqwlZHs:0NpwdXOXSCQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=PnxZHqwlZHs:0NpwdXOXSCQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/PnxZHqwlZHs" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 10 Apr 2012 01:57:00 -0700</pubDate>
      <a10:updated>2012-04-10T01:57:00-07:00</a10:updated>
    <feedburner:origLink>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/10/using-jquery-from-an-html5-web-worker.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/z6KUjRF4oOU/whats-new-in-approvaltests-net-v18.html</link>
      <a10:author>
        <a10:name>Llewellyn Falco (Approval Tests)</a10:name>
        <a10:uri>http://blog.approvaltests.com/2012/04/whats-new-in-approvaltests-net-v18.html</a10:uri>
      </a10:author>
      <title>Llewellyn Falco (Approval Tests): What’s New in ApprovalTests .Net v.18?</title>
      <description>&lt;ol&gt;&lt;li&gt;FrontLoadedReporter&lt;/li&gt;&lt;li&gt;IEnviromentAwareReport Upgrades&lt;/li&gt;&lt;li&gt;CodeCompareReporter&lt;/li&gt;&lt;li&gt;DictionarySupport&lt;/li&gt;&lt;li&gt;EF and Mvc3 additions&lt;/li&gt;&lt;li&gt;Bug Fixes&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;FrontLoadedReporter Attribute (For Build Systems)&lt;/h3&gt;You can now add the following code to your assembly.&lt;br /&gt;&lt;pre class="csharpcode"&gt;[assembly: FrontLoadedReporter(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(NCrunchReporter))]&lt;/pre&gt;&lt;br /&gt;This is only allowed at the assembly level, and &lt;strong&gt;must &lt;/strong&gt;be a IEnvironmentAwareReporter. If the reporter is allowed in the current environment, it will circumvent &lt;strong&gt;all &lt;/strong&gt;other reporters. This is very useful for Build Systems where you want to override the behavior of the reporters.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;IEnvironmentAwareReporter is file specific (better composition)&lt;/h3&gt;The IEnvironmentAwareReporter interface has changed from&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;bool&lt;/span&gt; IsWorkingInThisEnvironment();&lt;/pre&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;bool&lt;/span&gt; IsWorkingInThisEnvironment(&lt;span class="kwrd"&gt;string&lt;/span&gt; forFile);&lt;/pre&gt;&lt;br /&gt;this allows for better composition of reporters. For example I can now combine DiffReporters that only do text with DiffReporters that do images. If you have an Image it will fall thru to the ImageReporter even if the TextDiff Program is on your system.&lt;br /&gt;&lt;br /&gt;This is especially nice for…&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;CodeCompareReporter &lt;/h3&gt;My new favorite text diff tool is Code Compare, mainly because it integrates directly into Visual Studio 2010. You can &lt;a href="http://www.devart.com/codecompare/"&gt;download it here&lt;/a&gt; (it’s free)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-l0MMaZLtGc8/T4Py1_NPCyI/AAAAAAAAAjA/z4tGHzW1xFI/s1600-h/Screen%252520shot%2525202012-04-10%252520at%2525201.31.56%252520AM%25255B3%25255D.png"&gt;&lt;img alt="Screen shot 2012-04-10 at 1.31.56 AM" border="0" height="151" src="http://lh5.ggpht.com/-ZRzA8_TnFro/T4Py2KM5c2I/AAAAAAAAAjI/6WB9sDTBi_o/Screen%252520shot%2525202012-04-10%252520at%2525201.31.56%252520AM_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Screen shot 2012-04-10 at 1.31.56 AM" width="591" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;Dictionary Support&lt;/h3&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;var map = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(){&lt;br /&gt;{&lt;span class="str"&gt;"Caption"&lt;/span&gt;, &lt;span class="str"&gt;"Mal"&lt;/span&gt;},&lt;br /&gt;{&lt;span class="str"&gt;"Pilot"&lt;/span&gt;, &lt;span class="str"&gt;"Wash"&lt;/span&gt;},&lt;br /&gt;{&lt;span class="str"&gt;"Companion"&lt;/span&gt;, &lt;span class="str"&gt;"Inara"&lt;/span&gt;}  };&lt;br /&gt;Approvals.VerifyAll(map);&lt;/pre&gt;&lt;br /&gt;This will now create the expected approval result. I don’t know how this didn’t exist from the very start. It is worth noting that keys will be presented in their natural ordering (to allow consistency.)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;EF and Mvc3 &lt;/h3&gt;I added a Mock Saver, LambdaLoader &amp;amp; SingleLambdaLoader to the Enitity Framework support.&lt;br /&gt;I also added .Explict to the Mvc3 Toolkit. I will make videos about this approach soon.&lt;br /&gt;&lt;h3&gt;Bug Fixes&lt;/h3&gt;There were 2 bugs that got fixed this round.&lt;br /&gt;64-bit machines didn’t launch 32-bit Reporters.&lt;br /&gt;XUnit Reporter didn’t invoke the right Equals Method.&lt;br /&gt;&lt;br /&gt;Both are fixed now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1959052963816936322-5891512604432954852?l=blog.approvaltests.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z6KUjRF4oOU:YOKlu6W5h9Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z6KUjRF4oOU:YOKlu6W5h9Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=z6KUjRF4oOU:YOKlu6W5h9Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z6KUjRF4oOU:YOKlu6W5h9Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=z6KUjRF4oOU:YOKlu6W5h9Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z6KUjRF4oOU:YOKlu6W5h9Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=z6KUjRF4oOU:YOKlu6W5h9Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=z6KUjRF4oOU:YOKlu6W5h9Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/z6KUjRF4oOU" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 10 Apr 2012 01:44:00 -0700</pubDate>
      <a10:updated>2012-04-10T01:44:00-07:00</a10:updated>
    <feedburner:origLink>http://blog.approvaltests.com/2012/04/whats-new-in-approvaltests-net-v18.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/CHzrXesuBPM/</link>
      <a10:author>
        <a10:name>Tony Sneed</a10:name>
        <a10:uri>http://blog.tonysneed.com/2012/04/08/ninject-wcf-extensions-for-restful-services/</a10:uri>
      </a10:author>
      <title>Tony Sneed: Ninject WCF Extensions for RESTful Services</title>
      <description>Download the code for this post. A while ago I blogged about using Ninject for dependency injection with WCF Services.&amp;#160; The advantage of using DI is that it allows you to achieve loose coupling in your application architecture, so that &amp;#8230; &lt;a href="http://blog.tonysneed.com/2012/04/08/ninject-wcf-extensions-for-restful-services/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tonysneed.com&amp;#038;blog=14038854&amp;#038;post=415&amp;#038;subd=tonysneed&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=CHzrXesuBPM:np9LVn85blo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=CHzrXesuBPM:np9LVn85blo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=CHzrXesuBPM:np9LVn85blo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=CHzrXesuBPM:np9LVn85blo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=CHzrXesuBPM:np9LVn85blo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=CHzrXesuBPM:np9LVn85blo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=CHzrXesuBPM:np9LVn85blo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=CHzrXesuBPM:np9LVn85blo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/CHzrXesuBPM" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 08 Apr 2012 07:53:58 -0700</pubDate>
      <a10:updated>2012-04-08T07:53:58-07:00</a10:updated>
    <feedburner:origLink>http://blog.tonysneed.com/2012/04/08/ninject-wcf-extensions-for-restful-services/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/-X_wNGVBOZA/</link>
      <a10:author>
        <a10:name>Brock Allen</a10:name>
        <a10:uri>http://brockallen.com/2012/04/08/cookieless-session-considered-dangerous/</a10:uri>
      </a10:author>
      <title>Brock Allen: Cookieless session considered dangerous</title>
      <description>Another question came up: &amp;#8220;What if users disable cookies &amp;#8211; won&amp;#8217;t session break?&amp;#8221;. Yes. So will Forms Authentication and the Anonymous Identification Module. And so will half the web. But wait &amp;#8212; session state, forms authentication and the anonymous identification modules all have cookieless modes. Surely if that&amp;#8217;s an option it&amp;#8217;s fine to use, right? [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brockallen.com&amp;#038;blog=23669881&amp;#038;post=51&amp;#038;subd=brockallen&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-X_wNGVBOZA:b9YLs19nhDE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-X_wNGVBOZA:b9YLs19nhDE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-X_wNGVBOZA:b9YLs19nhDE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-X_wNGVBOZA:b9YLs19nhDE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-X_wNGVBOZA:b9YLs19nhDE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-X_wNGVBOZA:b9YLs19nhDE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-X_wNGVBOZA:b9YLs19nhDE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-X_wNGVBOZA:b9YLs19nhDE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/-X_wNGVBOZA" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 07 Apr 2012 21:31:13 -0700</pubDate>
      <a10:updated>2012-04-07T21:31:13-07:00</a10:updated>
    <feedburner:origLink>http://brockallen.com/2012/04/08/cookieless-session-considered-dangerous/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/MuM5AFE6iFs/</link>
      <a10:author>
        <a10:name>Brock Allen</a10:name>
        <a10:uri>http://brockallen.com/2012/04/07/think-twice-about-using-session-state/</a10:uri>
      </a10:author>
      <title>Brock Allen: Think twice about using session state</title>
      <description>So this question comes up all the time: &amp;#8220;Where should I keep my shopping cart data for my application?&amp;#8221; The common knee-jerk response is &amp;#8220;use session state&amp;#8221;. I find this to typically be the wrong answer if you want to build a resilient and scalable application. Session state was originally meant for this kind of [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brockallen.com&amp;#038;blog=23669881&amp;#038;post=44&amp;#038;subd=brockallen&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=MuM5AFE6iFs:OA1qexOyUZo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=MuM5AFE6iFs:OA1qexOyUZo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=MuM5AFE6iFs:OA1qexOyUZo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=MuM5AFE6iFs:OA1qexOyUZo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=MuM5AFE6iFs:OA1qexOyUZo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=MuM5AFE6iFs:OA1qexOyUZo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=MuM5AFE6iFs:OA1qexOyUZo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=MuM5AFE6iFs:OA1qexOyUZo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/MuM5AFE6iFs" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 06 Apr 2012 21:31:32 -0700</pubDate>
      <a10:updated>2012-04-06T21:31:32-07:00</a10:updated>
    <feedburner:origLink>http://brockallen.com/2012/04/07/think-twice-about-using-session-state/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/OIUy22-xhVw/</link>
      <a10:author>
        <a10:name>Michael Kennedy</a10:name>
        <a10:uri>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/AyrKrg787Kk/</a10:uri>
      </a10:author>
      <title>Michael Kennedy: Webcast: Building Rich Input Forms in ASP.NET MVC Tuesday April 10</title>
      <description>[Update: View the recordings and downloads.] Want to learn more about building great forms in MVC? Attend my free DevelopMentor webcast this Tuesday. Webcast: Building Rich Input Forms in ASP.NET MVC https://www3.gotomeeting.com/register/559059054 In this webcast we will explore the powerful &amp;#8230; &lt;a href="http://blog.michaelckennedy.net/2012/04/06/webcast-building-rich-input-forms-in-asp-net-mvc-tuesday-april-10/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.michaelckennedy.net&amp;#038;blog=33101121&amp;#038;post=505&amp;#038;subd=michaelckennedy&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OIUy22-xhVw:nTl4VAzI9ng:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OIUy22-xhVw:nTl4VAzI9ng:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=OIUy22-xhVw:nTl4VAzI9ng:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OIUy22-xhVw:nTl4VAzI9ng:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=OIUy22-xhVw:nTl4VAzI9ng:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OIUy22-xhVw:nTl4VAzI9ng:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=OIUy22-xhVw:nTl4VAzI9ng:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=OIUy22-xhVw:nTl4VAzI9ng:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/OIUy22-xhVw" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 06 Apr 2012 12:42:41 -0700</pubDate>
      <a10:updated>2012-04-06T12:42:41-07:00</a10:updated>
    <feedburner:origLink>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/AyrKrg787Kk/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/UDWCL3kUOTs/dotned-podcast-patriek-van-dorp-over-nuget-packages-voor-windows-azure.aspx</link>
      <a10:author>
        <a10:name>Maurice de Beijer</a10:name>
        <a10:uri>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/06/dotned-podcast-patriek-van-dorp-over-nuget-packages-voor-windows-azure.aspx</a10:uri>
      </a10:author>
      <title>Maurice de Beijer: DotNed podcast: Patriek van Dorp over NuGet packages voor Windows Azure</title>
      <description>&lt;p&gt;In &lt;a href="http://www.dotned.nl/PodCasts.aspx?id=28"&gt;deze podcast&lt;/a&gt; spreekt Maurice de Beijer met Patriek van Dorp over zijn TechDays presentatie over NuGet packages voor Windows Azure.&lt;/p&gt;  &lt;p&gt;Links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Blog: &lt;a href="http://patriekvandorp.net/"&gt;http://patriekvandorp.net&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;TechDays presentaties: &lt;a href="http://www.techdays.nl/AgendaDetail.aspx?cid=2271"&gt;http://www.techdays.nl/AgendaDetail.aspx?cid=2271&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Wazug: &lt;a href="http://www.wazug.nl/"&gt;http://www.wazug.nl/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;NuGet: &lt;a href="http://nuget.org/"&gt;http://nuget.org/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Presentatie met links naar de NuGet packages: &lt;a href="http://static.techdays.nl/Speakers/Presentations/2012/Patriek%20van%20Dorp%20-%20NuGet%20For%20Windows%20Azure.pdf"&gt;http://static.techdays.nl/Speakers/Presentations/2012/Patriek van Dorp - NuGet For Windows Azure.pdf&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Met dank aan onze sponsor &lt;a href="http://www.red-gate.com/"&gt;RedGate&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1808469" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=UDWCL3kUOTs:qBN66mDdM8Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=UDWCL3kUOTs:qBN66mDdM8Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=UDWCL3kUOTs:qBN66mDdM8Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=UDWCL3kUOTs:qBN66mDdM8Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=UDWCL3kUOTs:qBN66mDdM8Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=UDWCL3kUOTs:qBN66mDdM8Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=UDWCL3kUOTs:qBN66mDdM8Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=UDWCL3kUOTs:qBN66mDdM8Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/UDWCL3kUOTs" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 06 Apr 2012 02:43:00 -0700</pubDate>
      <a10:updated>2012-04-06T02:43:00-07:00</a10:updated>
    <feedburner:origLink>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/06/dotned-podcast-patriek-van-dorp-over-nuget-packages-voor-windows-azure.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/PrR8yk7YiZ4/pet-usb-keys.html</link>
      <a10:author>
        <a10:name>Andy Clymer</a10:name>
        <a10:uri>http://andyclymer.blogspot.com/2012/04/pet-usb-keys.html</a10:uri>
      </a10:author>
      <title>Andy Clymer: Pet USB Keys</title>
      <description>A friend of mine has designed some dog USB keys. I'm sure they will be a hit with dog lovers and kids alike&lt;br /&gt;&lt;br /&gt;You can buy them online&lt;br /&gt;&lt;br /&gt;http://www.petstar-tech.com/&lt;br /&gt;"Designed in Farnham assembled in China"&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30604582-1990127888255869408?l=andyclymer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PrR8yk7YiZ4:Ny1dVB0fG-Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PrR8yk7YiZ4:Ny1dVB0fG-Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=PrR8yk7YiZ4:Ny1dVB0fG-Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PrR8yk7YiZ4:Ny1dVB0fG-Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=PrR8yk7YiZ4:Ny1dVB0fG-Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PrR8yk7YiZ4:Ny1dVB0fG-Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=PrR8yk7YiZ4:Ny1dVB0fG-Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=PrR8yk7YiZ4:Ny1dVB0fG-Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/PrR8yk7YiZ4" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 05 Apr 2012 12:19:00 -0700</pubDate>
      <a10:updated>2012-04-05T12:19:00-07:00</a10:updated>
    <feedburner:origLink>http://andyclymer.blogspot.com/2012/04/pet-usb-keys.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/-IspAzix4hE/</link>
      <a10:author>
        <a10:name>Brock Allen</a10:name>
        <a10:uri>http://brockallen.com/2012/04/05/ajax-with-html-or-json/</a10:uri>
      </a10:author>
      <title>Brock Allen: Ajax with HTML or JSON</title>
      <description>Recently a poster on the asp.net forums asked about the difference between returning HTML or JSON from Ajax calls. Here was my answer: airic82 Well, ya. But working doesn&amp;#8217;t always mean its following best practices. Sinful term! &amp;#8220;Best practice&amp;#8221; requires context. Usually the answer is &amp;#8220;it depends&amp;#8221; and thus there&amp;#8217;s rarely &amp;#8220;the one and only [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brockallen.com&amp;#038;blog=23669881&amp;#038;post=36&amp;#038;subd=brockallen&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-IspAzix4hE:TCzVxPbEs3g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-IspAzix4hE:TCzVxPbEs3g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-IspAzix4hE:TCzVxPbEs3g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-IspAzix4hE:TCzVxPbEs3g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-IspAzix4hE:TCzVxPbEs3g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-IspAzix4hE:TCzVxPbEs3g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=-IspAzix4hE:TCzVxPbEs3g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=-IspAzix4hE:TCzVxPbEs3g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/-IspAzix4hE" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 04 Apr 2012 22:27:30 -0700</pubDate>
      <a10:updated>2012-04-04T22:27:30-07:00</a10:updated>
    <feedburner:origLink>http://brockallen.com/2012/04/05/ajax-with-html-or-json/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/puqsUeUhdtg/</link>
      <a10:author>
        <a10:name>Michael Kennedy</a10:name>
        <a10:uri>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/Hb5eby26t5Q/</a10:uri>
      </a10:author>
      <title>Michael Kennedy: No, You Don’t Need A Windows App</title>
      <description>Do you think you need a Window&amp;#8217;s app for your next project? Here&amp;#8217;s a thought: No you don&amp;#8217;t. Let me give you one less reason choose the rocky-road of desktop apps today. You&amp;#8217;ll hear people tell you that if you &amp;#8230; &lt;a href="http://blog.michaelckennedy.net/2012/04/04/no-you-dont-need-a-windows-app/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.michaelckennedy.net&amp;#038;blog=33101121&amp;#038;post=462&amp;#038;subd=michaelckennedy&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=puqsUeUhdtg:6diGNkSmMXM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=puqsUeUhdtg:6diGNkSmMXM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=puqsUeUhdtg:6diGNkSmMXM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=puqsUeUhdtg:6diGNkSmMXM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=puqsUeUhdtg:6diGNkSmMXM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=puqsUeUhdtg:6diGNkSmMXM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=puqsUeUhdtg:6diGNkSmMXM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=puqsUeUhdtg:6diGNkSmMXM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/puqsUeUhdtg" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 04 Apr 2012 08:03:33 -0700</pubDate>
      <a10:updated>2012-04-04T08:03:33-07:00</a10:updated>
    <feedburner:origLink>http://feedproxy.google.com/~r/MichaelCKennedysWeblog/~3/Hb5eby26t5Q/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/jAUl0eKTgkU/slides-from-my-security-and-rest-services-session-at-engineering-world-2012.aspx</link>
      <a10:author>
        <a10:name>Maurice de Beijer</a10:name>
        <a10:uri>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/04/slides-from-my-security-and-rest-services-session-at-engineering-world-2012.aspx</a10:uri>
      </a10:author>
      <title>Maurice de Beijer: Slides from my security and REST services session at Engineering World 2012</title>
      <description>&lt;p&gt;Here are the slides from my securing REST services session I did at &lt;a href="http://www.engineeringworld.nl/"&gt;Engineering World 2012&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="width:425px;" id="__ss_12240516"&gt;&lt;strong style="margin:12px 0px 4px;display:block;"&gt;&lt;a title="Beveiliging en REST services" href="http://www.slideshare.net/mauricedb/beveiliging-en-rest-services" target="_blank"&gt;Beveiliging en REST services&lt;/a&gt;&lt;/strong&gt; &lt;iframe height="355" src="http://www.slideshare.net/slideshow/embed_code/12240516" frameborder="0" width="425" scrolling="no"&gt;&lt;/iframe&gt;    &lt;div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px;"&gt;View more &lt;a href="http://www.slideshare.net/thecroaker/death-by-powerpoint" target="_blank"&gt;PowerPoint&lt;/a&gt; from &lt;a href="http://www.slideshare.net/mauricedb" target="_blank"&gt;Maurice Beijer&lt;/a&gt; &lt;/div&gt;    &lt;div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px;"&gt;&amp;#160;&lt;/div&gt;    &lt;div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px;"&gt;Enjoy!&lt;/div&gt;    &lt;div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px;"&gt;&amp;#160;&lt;/div&gt;    &lt;div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px;"&gt;&lt;a href="http://www.theproblemsolver.nl/"&gt;TheProblemSolver&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.dotnetevents.nl/"&gt;DotNetEvents&lt;/a&gt;&lt;/div&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1808351" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=jAUl0eKTgkU:RCesEN968Mo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=jAUl0eKTgkU:RCesEN968Mo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=jAUl0eKTgkU:RCesEN968Mo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=jAUl0eKTgkU:RCesEN968Mo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=jAUl0eKTgkU:RCesEN968Mo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=jAUl0eKTgkU:RCesEN968Mo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=jAUl0eKTgkU:RCesEN968Mo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=jAUl0eKTgkU:RCesEN968Mo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/jAUl0eKTgkU" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 04 Apr 2012 02:32:00 -0700</pubDate>
      <a10:updated>2012-04-04T02:32:00-07:00</a10:updated>
    <feedburner:origLink>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/04/slides-from-my-security-and-rest-services-session-at-engineering-world-2012.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/7Og2hPKF6YA/double-check-locking.html</link>
      <a10:author>
        <a10:name>Andy Clymer</a10:name>
        <a10:uri>http://andyclymer.blogspot.com/2012/04/double-check-locking.html</a10:uri>
      </a10:author>
      <title>Andy Clymer: Double check locking</title>
      <description>&lt;p&gt;At my recent Async talk at DevWeek I built an Asynchronous queue that enables the consumers to take advantage of async and await keywords available in C# 5.&amp;#160; You can download the code &lt;a href="http://rocksolidknowledge.blob.core.windows.net/demos/DevWeek2012/Async.zip" target="_blank"&gt;here&lt;/a&gt;, the final step in that implementation was to make use of double check locking.&amp;#160; A delegate came up to me afterwards and said my code wasn’t thread safe, in that I could end up with a partially completed object.&amp;#160; This was due to the fact that the CPU can re-order write operations to optimise memory bus, and that is true of some processors.&amp;#160; In that the reference to the object could be flushed out to main memory before the data associated with the object constructor.&amp;#160; This certainly was the case in .NET 1.1 with certain chip sets not true for your classic x86 and x64 but the Itanium I-A64 family of processor.&amp;#160; The work around was to make the pointer to the constructed object volatile forcing the compiler to place the appropriate memory barrier instructions.&lt;/p&gt;  &lt;p&gt;However in .NET 2.0 the CLR team enforced a more strong memory model since they didn’t like the idea of managed code behaving so differently on the final target hardware.&amp;#160; Here is a &lt;a href="http://msdn.microsoft.com/en-gb/magazine/cc163715.aspx#S11" target="_blank"&gt;link&lt;/a&gt; to the write up from MSDN mag by Vance Morrison the compiler architect of the .NET runtime explaining why you don’t need to use volatile from .NET 2.0 onwards.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30604582-3352712449694687183?l=andyclymer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=7Og2hPKF6YA:iO8SNtF_NYM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=7Og2hPKF6YA:iO8SNtF_NYM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=7Og2hPKF6YA:iO8SNtF_NYM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=7Og2hPKF6YA:iO8SNtF_NYM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=7Og2hPKF6YA:iO8SNtF_NYM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=7Og2hPKF6YA:iO8SNtF_NYM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=7Og2hPKF6YA:iO8SNtF_NYM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=7Og2hPKF6YA:iO8SNtF_NYM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/7Og2hPKF6YA" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 03 Apr 2012 05:26:00 -0700</pubDate>
      <a10:updated>2012-04-03T05:26:00-07:00</a10:updated>
    <feedburner:origLink>http://andyclymer.blogspot.com/2012/04/double-check-locking.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/9bIesihKemo/devweek-2012-demos.html</link>
      <a10:author>
        <a10:name>Andy Clymer</a10:name>
        <a10:uri>http://andyclymer.blogspot.com/2012/04/devweek-2012-demos.html</a10:uri>
      </a10:author>
      <title>Andy Clymer: DevWeek 2012 Demos</title>
      <description>&lt;p&gt;Just to say my demos from DevWeek 2012 are now available for download &lt;a href="http://www.rocksolidknowledge.com/Conferences.mvc" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30604582-2888415008430107091?l=andyclymer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=9bIesihKemo:0IllSRlqet4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=9bIesihKemo:0IllSRlqet4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=9bIesihKemo:0IllSRlqet4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=9bIesihKemo:0IllSRlqet4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=9bIesihKemo:0IllSRlqet4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=9bIesihKemo:0IllSRlqet4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=9bIesihKemo:0IllSRlqet4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=9bIesihKemo:0IllSRlqet4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/9bIesihKemo" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 03 Apr 2012 05:08:00 -0700</pubDate>
      <a10:updated>2012-04-03T05:08:00-07:00</a10:updated>
    <feedburner:origLink>http://andyclymer.blogspot.com/2012/04/devweek-2012-demos.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/W6jkE0WepkM/demos-and-slides-from-my-html5-and-rest-presentation-in-belgium-last-week.aspx</link>
      <a10:author>
        <a10:name>Maurice de Beijer</a10:name>
        <a10:uri>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/03/demos-and-slides-from-my-html5-and-rest-presentation-in-belgium-last-week.aspx</a10:uri>
      </a10:author>
      <title>Maurice de Beijer: Demos and slides from my HTML5 and REST presentation in Belgium last week</title>
      <description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="width:425px;" id="__ss_12219585"&gt;&lt;strong style="margin:12px 0px 4px;display:block;"&gt;&lt;a title="HTML5 &amp;amp; rest services" href="http://www.slideshare.net/mauricedb/html5-rest-services" target="_blank"&gt;HTML5 &amp;amp; rest services&lt;/a&gt;&lt;/strong&gt; &lt;iframe height="355" src="http://www.slideshare.net/slideshow/embed_code/12219585" frameborder="0" width="425" scrolling="no"&gt;&lt;/iframe&gt;    &lt;div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px;"&gt;View more &lt;a href="http://www.slideshare.net/thecroaker/death-by-powerpoint" target="_blank"&gt;PowerPoint&lt;/a&gt; from &lt;a href="http://www.slideshare.net/mauricedb" target="_blank"&gt;Maurice Beijer&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;You can download the ASP.NET WebAPI demo &lt;a href="http://dl.dropbox.com/u/3913446/Blog/WepApiDemo_20120329.zip"&gt;here&lt;/a&gt; and the SignalR demo &lt;a href="http://dl.dropbox.com/u/3913446/Blog/SignalRDemo_20120329.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.theproblemsolver.nl/"&gt;TheProblemSolver&lt;/a&gt;   &lt;br /&gt;&lt;a href="http://www.dotnetevents.nl/"&gt;DotNetEvents&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1808350" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=W6jkE0WepkM:YYYgfMgKqhs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=W6jkE0WepkM:YYYgfMgKqhs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=W6jkE0WepkM:YYYgfMgKqhs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=W6jkE0WepkM:YYYgfMgKqhs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=W6jkE0WepkM:YYYgfMgKqhs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=W6jkE0WepkM:YYYgfMgKqhs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=W6jkE0WepkM:YYYgfMgKqhs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=W6jkE0WepkM:YYYgfMgKqhs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/W6jkE0WepkM" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 03 Apr 2012 01:29:00 -0700</pubDate>
      <a10:updated>2012-04-03T01:29:00-07:00</a10:updated>
    <feedburner:origLink>http://msmvps.com/blogs/theproblemsolver/archive/2012/04/03/demos-and-slides-from-my-html5-and-rest-presentation-in-belgium-last-week.aspx</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/Ptry7IOwpg8/</link>
      <a10:author>
        <a10:name>Tony Sneed</a10:name>
        <a10:uri>http://blog.tonysneed.com/2012/04/02/ssd-sata-best-of-both-worlds/</a10:uri>
      </a10:author>
      <title>Tony Sneed: SSD + SATA = Best of Both Worlds</title>
      <description>Every once and a while I pull something off that makes me smile.&amp;#160; I experienced this sensation last week when I swapped out the DVD drive in my MacBook Pro and replaced it with the 500 GB SATA hard drive &amp;#8230; &lt;a href="http://blog.tonysneed.com/2012/04/02/ssd-sata-best-of-both-worlds/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tonysneed.com&amp;#038;blog=14038854&amp;#038;post=410&amp;#038;subd=tonysneed&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Ptry7IOwpg8:dL2GMSRJRM4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Ptry7IOwpg8:dL2GMSRJRM4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=Ptry7IOwpg8:dL2GMSRJRM4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Ptry7IOwpg8:dL2GMSRJRM4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=Ptry7IOwpg8:dL2GMSRJRM4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Ptry7IOwpg8:dL2GMSRJRM4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=Ptry7IOwpg8:dL2GMSRJRM4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=Ptry7IOwpg8:dL2GMSRJRM4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/Ptry7IOwpg8" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 02 Apr 2012 07:00:07 -0700</pubDate>
      <a10:updated>2012-04-02T07:00:07-07:00</a10:updated>
    <feedburner:origLink>http://blog.tonysneed.com/2012/04/02/ssd-sata-best-of-both-worlds/</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/2rOD-E4lQSE/devweek-2012.html</link>
      <a10:author>
        <a10:name>Andy Clymer</a10:name>
        <a10:uri>http://andyclymer.blogspot.com/2012/04/devweek-2012.html</a10:uri>
      </a10:author>
      <title>Andy Clymer: Devweek 2012</title>
      <description>Had a great conference as ever. Thanks to everyone who attended the RSK talks. I literally left the conference and went on holiday. Will be back tomorrow so will upload the demos to the website on Tuesday 3rd&lt;br /&gt;&lt;br /&gt;If you want a refresher on the asynchronous talk we have screencasts on the site that cover some of the aspects&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/30604582-8052980758977531005?l=andyclymer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2rOD-E4lQSE:ZdeNZBUnYkM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2rOD-E4lQSE:ZdeNZBUnYkM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=2rOD-E4lQSE:ZdeNZBUnYkM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2rOD-E4lQSE:ZdeNZBUnYkM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=2rOD-E4lQSE:ZdeNZBUnYkM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2rOD-E4lQSE:ZdeNZBUnYkM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=2rOD-E4lQSE:ZdeNZBUnYkM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=2rOD-E4lQSE:ZdeNZBUnYkM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/2rOD-E4lQSE" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 02 Apr 2012 01:10:00 -0700</pubDate>
      <a10:updated>2012-04-02T01:10:00-07:00</a10:updated>
    <feedburner:origLink>http://andyclymer.blogspot.com/2012/04/devweek-2012.html</feedburner:origLink></item>
    <item>
      <link>http://feedproxy.google.com/~r/DevelopmentorInstructors/~3/h0jeqpRHHl8/</link>
      <a10:author>
        <a10:name>Lynn Langit</a10:name>
        <a10:uri>http://lynnlangit.wordpress.com/2012/04/02/hadoop-on-azure-javascript-mapreduce-using-aws-s3-data/</a10:uri>
      </a10:author>
      <title>Lynn Langit: Hadoop on Azure – JavaScript MapReduce using AWS S3 data</title>
      <description>What? Use a Microsoft Azure product (Hadoop on Azure) to run a MapReduce job (using JavaScript) on data stored on AWS S3? Seems like a great blog topic for April 1, doesn&amp;#8217;t it? Enjoy the video. Here&amp;#8217;s Microsoft&amp;#8217;s Denny Lee&amp;#8217;s &amp;#8230; &lt;a href="http://lynnlangit.wordpress.com/2012/04/02/hadoop-on-azure-javascript-mapreduce-using-aws-s3-data/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lynnlangit.wordpress.com&amp;#038;blog=26206754&amp;#038;post=414&amp;#038;subd=lynnlangit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=h0jeqpRHHl8:YOpDdC5geVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=h0jeqpRHHl8:YOpDdC5geVc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=h0jeqpRHHl8:YOpDdC5geVc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=h0jeqpRHHl8:YOpDdC5geVc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=h0jeqpRHHl8:YOpDdC5geVc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=h0jeqpRHHl8:YOpDdC5geVc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?a=h0jeqpRHHl8:YOpDdC5geVc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DevelopmentorInstructors?i=h0jeqpRHHl8:YOpDdC5geVc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevelopmentorInstructors/~4/h0jeqpRHHl8" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 01 Apr 2012 19:01:27 -0700</pubDate>
      <a10:updated>2012-04-01T19:01:27-07:00</a10:updated>
    <feedburner:origLink>http://lynnlangit.wordpress.com/2012/04/02/hadoop-on-azure-javascript-mapreduce-using-aws-s3-data/</feedburner:origLink></item>
  </channel>
</rss>

