<?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:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">
  <channel>
    <title>#.think.in</title>
    <description>learn.create.enjoy</description>
    <link>http://blog.sharpthinking.com.au/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-Au</language>
    <blogChannel:blogRoll>http://blog.sharpthinking.com.au/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:title>#.think.in</dc:title>
    <creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sharpthinking" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">sharpthinking</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title>#.think.in infoDose #36 (4th July - 11th July)</title>
      <description>&lt;h3&gt;Announcements&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blog.wekeroad.com/subsonic/subsonic-3-0-is-released"&gt;SubSonic 3.0 is Released&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://willcodeforgreen.gnomedex.com"&gt;Will Code for Green! Developer Contest&lt;/a&gt; - any proxy americans out there?&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.pcworld.com/article/168036/google_chrome_desktop_os.html"&gt;Google Set to Take On Microsoft With Desktop OS&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/grothaug/pages/downloadable-ndc2009-videos.aspx"&gt;MSDN Up North Downloadable NDC2009 videos&lt;/a&gt;&lt;/li&gt; ... oh yea, and something called Silverlight 3.0 was released    &lt;li&gt;&lt;a href="http://www.microsoft.com/silverlight/seethelight/default.html"&gt;See the Light&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.net/blogs/jesseliberty"&gt;Jesse Liberty - Silverlight Geek&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlighthack.com/post/2009/07/09/Silverlight-3-Relase-and-Download-Links.aspx"&gt;Silverlight 3 Relase Download Links and Installation Instructions&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/msmossyblog/archive/2009/07/09/australian-silverlight-expression-3-tour.aspx"&gt;The MossyBlog Times. Australian Silverlight &amp;amp; Expression 3 Tour.&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.grumpydev.com/2009/07/04/why-shouldn%E2%80%99t-i-use-prism"&gt;Why Shouldn’t I use PRISM Grumpy Dev&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.slideshare.net/mattetti/couchdb-perform-like-a-pr0n-star"&gt;CouchDB Perform like a pr0n star&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.developerfusion.com/media/44785/episode-13-test-maintainability"&gt;Episode 13 Test Maintainability&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://elegantcode.com/2009/07/05/mspec-take-2"&gt;MSpec – Take 2 Elegant Code&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://mhinze.com/automapper-in-nerddinner"&gt;AutoMapper in NerdDinner&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/07/03/how-not-to-do-dependency-injection-in-nerddinner.aspx"&gt;How not to do Dependency Injection, in NerdDinner&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Developer&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.msdnevents.com/thrivedev/DriveCareer"&gt;Thrive for Developers - Driving Your Career&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://elegantcode.com/2009/07/03/wpf-multithreading-using-the-backgroundworker-and-reporting-the-progress-to-the-ui"&gt;WPF Multithreading Using the BackgroundWorker and Reporting the Progress to the UI. Elegant Code&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://exposureroom.com/members/RIAViewMirror.aspx"&gt;Ian Smith On ExposureRoom&lt;/a&gt; - Scott Gu in London&lt;/li&gt;    &lt;li&gt;&lt;a href="http://sweux.com/blogs/psampaio/index.php/2009/07/06/a-view-model-base-class-to-use-with-mvvm-in-wpf"&gt;A view model base class to use with MVVM in WPF UX and WPF ramblings&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/07/03/how-not-to-do-dependency-injection-in-nerddinner.aspx"&gt;How not to do Dependency Injection, in NerdDinner - Jimmy Bogard -&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?ShowID=187"&gt;Hanselminutes&lt;/a&gt; - The Art of Unit Testing with Roy Osherov&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.noop.nl/2009/07/join-the-club-coding-like-uncle-bob.html"&gt;NOOP.NL Join the CLUB (Coding Like Uncle Bob)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.kodefuguru.com/post/2009/07/06/Refactor-ForEach-to-Join.aspx"&gt;Refactor ForEach to Join&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://abdullin.com/journal/2009/7/8/deployment-and-updates-of-desktop-applications-wix-clickonce.html"&gt;Deployment and Updates of Desktop Applications WiX, ClickOnce and Other Scenarios - Journal - Rinat Abdullin&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://lunarsea.info/WebTrends/How_to_Hire_an_A_Team"&gt;How to Hire an A-Team LunarSea&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/ian_cooper/archive/2009/07/07/embrace-pain.aspx"&gt;Embrace Pain&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.makinggoodsoftware.com/2009/06/22/how-to-write-readable-code"&gt;How to write readable code 5 Tips to improve your code readability&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;UI&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/06/15/40-helpful-resources-on-user-interface-design-patterns"&gt;40+ Helpful Resources On User Interface Design Patterns&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://jeffblankenburg.com/2009/07/day-2-silverlight-screen-transitions.aspx"&gt;Silverlight Screen Transitions&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://jeffblankenburg.com/labels/31%20days%20of%20Silverlight.aspx"&gt;31 days of silverlight&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devlicio.us/blogs/rob_eisenberg/archive/2009/07/07/mvvm-philosophy-and-case-studies-introduction.aspx"&gt;MVVM – Philosophy and Case Studies&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Code&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msmvps.com/blogs/omar/archive/2009/04/08/web-2-0-ajax-portal-using-jquery-asp-net-3-5-silverlight-linq-to-sql-wf-and-unity.aspx"&gt;Web 2.0 AJAX Portal using jQuery, ASP.NET 3.5, Silverlight, Linq to SQL, WF and Unity&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ccimetadata.codeplex.com"&gt;Common Compiler Infrastructure&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.coderecycling.net/2009/03/code-quality-by-exception-handling.html"&gt;Code and software quality by advanced exception handling in .NET&lt;/a&gt; - exception handling&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=303&amp;amp;AspxAutoDetectCookieSupport=1"&gt;.NET - Screenshot in 2 Clicks using .NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.markhneedham.com/blog/2009/07/08/f-parsing-cruise-build-data"&gt;F# Parsing Cruise build data at Mark Needham&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/06/29/new-codeplex-project-a-simple-undo-redo-framework.aspx"&gt;Kirill Osenkov New CodePlex project a simple UndoRedo framework&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/astebner/archive/2009/07/06/9820065.aspx"&gt;Final version of WiX v3.0 now available for download&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.tech-cats.com/2008/11/using-nant-to-traverse-directories-and.html"&gt;Using NAnt to Traverse Directories and Execute SQL&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asoft.be/prod_netver.html"&gt;.NET Version Detector&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Singularity Watch&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://io9.com/5306489/a-drug-that-could-give-you-perfect-visual-memory"&gt;io9 - A Drug That Could Give You Perfect Visual Memory - Memory-enhancing drugs&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ow.ly/g7X1"&gt;Cyber armies are gearing up in the cold war of the web&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dailygalaxy.com/my_weblog/2009/07/stephen-hawking-the-planet-has-entered-a-new-phase-of-evolution.html"&gt;Stephen Hawking Humans Have Entered a New Stage of Evolution&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.technologyreview.com/blog/guest/23802"&gt;Ray Kurzweil on How to Combat Aging&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://hplusmagazine.com/editors-blog/first-three-days-singularity-university"&gt;The First Three Days of Singularity University&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.theinquirer.net/inquirer/news/1432807/robot-invented-crawl-veins"&gt;Robot invented to crawl through veins&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.stumbleupon.com/s/#2i9kd1/www.newscientist.com/article/dn17439-new-clues-in-search-for-elixir-of-youth.html"&gt;New clues in search for elixir of youth&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://mkweb.bcgsc.ca/circos"&gt;Circos - visualize genomes and genomic data&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.redicecreations.com/specialreports/2006/03mar/reality.html"&gt;How does the Universe work and What is Reality&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/mR0MboVBNds" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/07/11/thinkin-infoDose-36-(4th-July-11th-July).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/07/11/thinkin-infoDose-36-(4th-July-11th-July).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=b5d96f24-f63a-4b1a-abc0-3865e6c961e7</guid>
      <pubDate>Sat, 11 Jul 2009 07:40:15 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=b5d96f24-f63a-4b1a-abc0-3865e6c961e7</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=b5d96f24-f63a-4b1a-abc0-3865e6c961e7</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/07/11/thinkin-infoDose-36-(4th-July-11th-July).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=b5d96f24-f63a-4b1a-abc0-3865e6c961e7</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #35 (25th June - 2nd July)</title>
      <description>&lt;h3&gt;Announcements&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.componentart.com/community/competition2009/howtowin.aspx"&gt;Summer Silverlight Coding Competition&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/shanemo/archive/2009/06/30/surface-sdk-now-available-to-microsoft-partners.aspx"&gt;Shane Morris UXB Surface SDK now available to Microsoft Partners&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.istartedsomething.com/20090630/teched-australia-attendees-free-hp-mini-windows-7"&gt;Microsoft TechEd Australia attendees to receive free HP Mini Notebook with Windows 7&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://goneale.com/2009/06/24/entity-framework-40-what-you-may-be-missing"&gt;Entity Framework 4.0 What You May Be Missing&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://gojko.net/2009/06/23/improving-performance-and-scalability-with-ddd"&gt;Improving performance and scalability with DDD&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/KB/library/mefpart1.aspx"&gt;Managed Extensibility Framework Part 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/bobbrum/archive/2009/06/23/enterprise-library-5-0-some-architecture-changes.aspx"&gt;Enterprise Library 5.0 Some Architecture Changes&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.udidahan.com/2009/06/29/dont-create-aggregate-roots"&gt;Don’t Create Aggregate Roots&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ow.ly/g7Pw"&gt;'how thingamy will revolutionize enterprise software&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://herdingcode.com/?p=189"&gt;Herding Code 51 Greg Young on Our Grand Failure – Thoughts on DDDD&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Developer&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://webworkerdaily.com/2009/06/25/how-to-make-efficiency-infectious-when-working-with-a-team"&gt;How to Make Efficiency Infectious When Working With a Team&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/jackmilunsky/7-wastes-part-1-partially-done-work"&gt;The 7 Software Development Wastes - Part 1 Agile Software Development&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.steverubel.com/a-lifestreaming-workflow"&gt;A Lifestreaming Workflow&lt;/a&gt; - tools for lifestreaming&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.noop.nl/2009/06/top-200-blogs-for-developers-q2-2009.html"&gt;Top 200 Blogs for Developers (Q2 2009)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/presentations/katz-couchdb-and-me"&gt;CouchDB and Me&lt;/a&gt; - watch this if you ever considered breaking away from the corporate shackles and go it alone&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/TheHaaHaShowVisitsNETRocks.aspx"&gt;The HaaHa Show visits .NET Rocks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/webdevelopertips/archive/2009/06/23/tip-83-did-you-know-you-can-get-the-name-of-the-calling-method-from-the-stack-using-reflection.aspx"&gt;Did you know... You can get the name of the calling method&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://geekswithblogs.net/Martinez/articles/understanding-expression-trees.aspx"&gt;Understanding expression trees&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.benhall.me.uk/2009/06/xunitgwt-given-when-then-gwt-extension.html"&gt;Given When Then (GWT) extension for xUnit.net&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Silverlight&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.ajaxline.com/20-most-interesting-silverlight-tutorials"&gt;20 Most Interesting Silverlight Tutorials&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sparklingclient.com/downloading-and-building-prism"&gt;How to Find, Download and Build Prism for Silverlight&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://xunit.codeplex.com/Wiki/View.aspx?title=WhyDidWeBuildXunit"&gt;xUnit.net - Unit Testing for .NET - Home&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.typemock.com"&gt;Unit testing .NET - plain smart test tools mock framework C# VB Typemock&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.google.com/p/moq"&gt;moq - Google Code&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Singularity Watch&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.forbes.com/2009/06/18/cosmist-terran-cyborgist-opinions-contributors-artificial-intelligence-09-hugo-de-garis.html"&gt;The Coming Artilect War&lt;/a&gt; - &lt;em&gt;Hugo de Garis&lt;/em&gt; reckons gigadeath is imminent&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.transalchemy.com"&gt;TransAlchemy&lt;/a&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://suelange.wordpress.com"&gt;Singularity Watch&lt;/a&gt; - hey, that's my idea!&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wired.com/culture/culturereviews/magazine/17-07/st_singularity"&gt;Congratulations Human, You've Been Accepted to Singularity University&lt;/a&gt; - funny&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=dmECjrGnnwg"&gt;Msg to our decendants File 0001&lt;/a&gt; – umm, … yea??&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.transalchemy.com/2009/04/age-of-transitions.html"&gt;TransAlchemy The Age of Transitions&lt;/a&gt; - brainwashed, Darwinism, eugenics, big brother matrix styled post human society, worth a view&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.physorg.com/news165418586.html"&gt;Scientists create first electronic quantum processor&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Books&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0809074656?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0809074656"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="alva-100x150" border="0" alt="alva-100x150" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/think.ininfoDose3525thJune4thJuly/35210B7C/alva100x150.jpg" width="104" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.booko.com.au"&gt;Compare book &amp;amp; DVD prices in Australia with Booko&lt;/a&gt; – next time you’re thinking of buying a book (in Australia) go to this site first&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.fishpond.com.au"&gt;Fishpond.com.au&lt;/a&gt; – this book ecommerce site seems to be pretty good for Aussies&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.nanotechproject.org/topics/nano101/introduction_to_nanotechnology"&gt;Introduction to Nanotechnology • Nanotechnology 101 • Nanotechnology Project&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ifs.massey.ac.nz/people/staff.php?personID=8"&gt;Andrew Brodie, Institute of Fundamental Sciences, Massey University&lt;/a&gt; - yea, didn't you know, I study nanotech in my spare time ;-)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://search.tacomapubliclibrary.org/booklist/booklist.asp?printme=1&amp;amp;iam=100prek"&gt;Book Lists 100 Books Your Child Should Hear before Kindergarten at the Library&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.builderau.com.au/blogs/betaliving/viewblogpost.htm?p=339271172&amp;amp;feed=rss"&gt;Microsoft misses the Outlook point&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://stackexchange.com"&gt;StackExchange™—The Stack Overflow Knowledge Exchange Platform&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/Ilb5hFdNENk" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/07/04/thinkin-infoDose-35-(25th-June-2nd-July).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/07/04/thinkin-infoDose-35-(25th-June-2nd-July).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=96eafc0b-3707-4d41-98c6-a65357eadeda</guid>
      <pubDate>Sat, 04 Jul 2009 09:06:35 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=96eafc0b-3707-4d41-98c6-a65357eadeda</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=96eafc0b-3707-4d41-98c6-a65357eadeda</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/07/04/thinkin-infoDose-35-(25th-June-2nd-July).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=96eafc0b-3707-4d41-98c6-a65357eadeda</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #34 (18th June - 24th June)</title>
      <description>&lt;h3&gt;Announcements&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/australia/remix/videos/default.aspx"&gt;Remix Australia Videos&lt;/a&gt; - if you didn't get to Sydney, like me :(, check out the presentations.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/msroboticsstudio/archive/2009/06/18/microsoft-robotics-developer-studio-2008-r2-released.aspx"&gt;Microsoft Robotics Developer Studio 2008 R2 Released&lt;/a&gt; - maybe &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.msteched.com/australia/public/registration-info.aspx"&gt;Microsoft Tech.Ed Australia 2009 - Register for the event&lt;/a&gt; - early bird registration - $300 off ... now I just need another $1699&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&amp;#160; - data access, languages, tech choices&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://theahmadblog.blogspot.com/2009/06/only-pattern-for-data-access-is-there.html"&gt;The Only Pattern for Data Access is - There Are No Patterns for Data Access&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/karlseguin/archive/2009/06/18/nhibnerate-handling-the-special-cases.aspx"&gt;NHibnerate Handling the Special Cases&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://wiki.fluentnhibernate.org/show/GettingStarted%3A+First+Project"&gt;Getting Started First Project in Fluent NHibernate&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2009/06/23/nhibernate-ltnatural-idgt.aspx"&gt;NHibernate - natural-id&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://developmentalmadness.blogspot.com/2009/06/data-access-stored-procedures-vs-orm-ad.html"&gt;Data Access Stored Procedures vs. ORM (ad hoc) Queries&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/windowsmobile/en-au/developer/default.mspx"&gt;Windows Mobile Developers Australia Codemasons' Guild&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/brucezhang/archive/2009/06/22/focus-on-the-extension-of-wcf-behavior.aspx"&gt;Focus on the Extension of WCF Behavior&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.iismatt.com/IISMATT/post/2009/06/17/Installing-Windows-SharePoint-Services-Application-Template-Core-and-All-Templates.aspx"&gt;Installing Windows SharePoint Services Application Template Core and All Templates&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://martinfowler.com/articles/rubyAtThoughtWorks.html"&gt;Ruby at ThoughtWorks&lt;/a&gt; - Fowler discusses experiences with Ruby based projects&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dnrtv.com/default.aspx?showNum=141"&gt;dnrTV&lt;/a&gt; - F# screncast&lt;/li&gt;    &lt;li&gt;&lt;a href="http://deepfriedbytes.com/podcast/episode-33-getting-the-scoop-about-olso-and-m-with-shawn-wildermuth"&gt;Getting the Scoop About Olso and M&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Developer - processes, learning&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/mendelt/whos-owner-shared-code-vs-code-ownership"&gt;Who's the owner Shared code vs. code ownership Agile Software Development&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://dnicolet1.tripod.com/agile/index.blog?entry_id=1919449"&gt;Effective software development&lt;/a&gt; - Mentoring the value of pairing&lt;/li&gt;    &lt;li&gt;&lt;a href="http://shapingsoftware.com/2009/06/22/patterns-and-practices-of-lean-software-development"&gt;Patterns and Practices of Lean Software Development&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://adam.blog.heroku.com/past/2009/6/23/values"&gt;Values&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.google.com/corporate/tenthings.html"&gt;Corporate Information - Our Philosophy&lt;/a&gt; - Google Philosophy&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/presentations/durnall-parkinson-thoughtworks-lean-it"&gt;Lean Concepts for IT Professionals&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/06/stop-and-refactor"&gt;Stop and Refactor&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/articles/Gogolowicz-Swanson-SSRS"&gt;SQL Server Reporting Services and Working with Overlay Data&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/presentations/adopting-agile-practices"&gt;Adopting Agile Practices&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://learning.microsoft.com/MANAGER/CATALOG.ASPX?CLANG=EN-US&amp;amp;DTYPE=TABLE&amp;amp;SORT=PUBLICATIONDATEDESCENDING&amp;amp;PAGE=1&amp;amp;CATS=%7BD4E8E42C-3D5A-4A6E-915D-D99556A49BD7%7D%3A%7BDDA21A37-3B6B-4A34-9948-D2771ED55D60%7D"&gt;Microsoft Learning Manager&lt;/a&gt; - start here if iinterested in getting certifications&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tutorialfeed.blogspot.com/2009/06/9-important-xml-syntax-rules-you-must.html"&gt;9 Important XML Syntax Rules You Must Know&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/The+Code+Room/Episode-1"&gt;Episode 1 The Code Room Channel 9&lt;/a&gt; – gold geekiness&lt;/li&gt;    &lt;li&gt;&lt;a href="http://securedresponses.com/thoughtworks/audioseries"&gt;ThoughtWorks - Audio Series&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Silverlight/WPF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/tinisha/archive/2009/06/18/creating-styles-in-expression-blend-2.aspx"&gt;A User Experience Journey Creating Styles in Expression Blend 2&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.developerfusion.com/media/42509/which-comes-first-the-view-or-the-viewmodel"&gt;Which comes first the View or the ViewModel&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://developmentalmadness.blogspot.com/2009/06/prism-for-silverlight-2-taking-hello.html"&gt;Prism for Silverlight 2 Taking ‘Hello World’ to a Whole New Level&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/dphill/archive/2009/06/15/prism-quick-start-kit-update.aspx"&gt;Prism Quick Start Kit Update&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://houseofbilz.com/archive/2009/06/19/adventures-in-mvvm----ball-of-mud-vs-mvvm.aspx"&gt;Adventures in MVVM -- Ball of Mud vs MVVM&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://no-new-ideas.blogspot.com/2009/06/nsyntheis-011-has-escaped.html"&gt;NSyntheis 0.1.1 has escaped!&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.infosupport.com/blogs/ernow/archive/2009/06/21/silverlight-windows-live-writer-and-wordpress.aspx"&gt;Silverlight, Windows Live Writer and WordPress&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;h3&gt;Singularity Watch&lt;/h3&gt;    &lt;li&gt;&lt;a href="http://earth2tech.com/2009/06/09/are-commercial-buildings-ready-for-open-source-energy-management"&gt;Are Commercial Buildings Ready for Open-Source Energy Management&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityhub.com/2009/06/16/kurzweil-in-the-lyons-den"&gt;Kurzweil in the Lyons’ Den&lt;/a&gt; - Ray cops a beating for being the glass is half full guy&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hpluscafe.com"&gt;H+ Cafe - Upload Your Thoughts&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.newscientist.com/article/dn17355-lightbulb-molecule-has-a-bright-future.html"&gt;'Lightbulb' molecule has a bright future&lt;/a&gt; - teeny-tiny lights!&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.newscientist.com/article/dn17346"&gt;Brain could adapt well to cyborg enhancements&lt;/a&gt; - I want my terminator hand!&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.wookah.com"&gt;Wookah&lt;/a&gt; - I was wondering if there was an aggregated search engine out there&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.geekdom.com/portfolio"&gt;Geeky Innovations - Geekdom - Kingdom of Geeks&lt;/a&gt; - this seem to be a v.cool company&lt;/li&gt;    &lt;li&gt;&lt;a href="http://revision3.com/shows"&gt;Revision3 Current Shows&lt;/a&gt; - if you are a geek, you don't need ever need foxtel ... or a tv for that matter!&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.newscientist.com/article/dn17359-warning-over-superbug-risk-from-pets.html"&gt;Warning over 'superbug' risk from pets &lt;/a&gt; - anyone want two cats ... cheap!&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.stubbleblog.com/index.php/2009/06/the-real-lessons-from-twitter"&gt;The Real Lessons From Twitter&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/BMt4TH7aBbI" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/06/24/thinkin-infoDose-34-(18th-June-24th-June).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/06/24/thinkin-infoDose-34-(18th-June-24th-June).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=00ce0c8e-b3da-4387-8495-8ccdadbefd10</guid>
      <pubDate>Wed, 24 Jun 2009 21:52:42 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=00ce0c8e-b3da-4387-8495-8ccdadbefd10</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=00ce0c8e-b3da-4387-8495-8ccdadbefd10</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/06/24/thinkin-infoDose-34-(18th-June-24th-June).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=00ce0c8e-b3da-4387-8495-8ccdadbefd10</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #33 (10th June - 17th June)</title>
      <description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Development&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/06/Agile-Team-Schedule"&gt;An Agile Team's Weekly Schedule&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.agileproductdesign.com/blog/agile_is_culture_not_process.html"&gt;Agile development is more culture than process and why thinking of agile as culture and not just process explains resistance&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://geekswithblogs.net/starr/archive/2008/07/19/scrum--agile-developement-a-renaissance-of-culture-through-the.aspx"&gt;Scrum Agile Development - A Renaissance of Culture Through the Eyes of Levi-Strauss&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/06/high-performance-teams-teamicide"&gt;High-performance Teams – Avoiding Teamicide&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.makinggoodsoftware.com/2009/06/04/10-commandments-for-creating-good-code"&gt;10 commandments for creating good code&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://richarddingwall.name/2009/06/08/using-nunit-to-check-your-ioc-container-is-set-up-right"&gt;Using NUnit to check your IoC container is set up right&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.scotthyoung.com/blog/2007/08/23/nine-habits-to-change-your-life"&gt;Nine Habits to Change Your Life&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.developerfusion.com/media/42331/michael-lee-stallard-on-being-fired-up-or-burned-out"&gt;Michael Lee Stallard on being fired up or burned out&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/06/love_agile_testing"&gt;Top Ten Reasons to Love Agile Testing&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://agilezen.com/features/enhances-visibility"&gt;Kanban for Lean Project Management&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/06/hinchcliffe-REST-WOA"&gt;REST is a style -- WOA is the architecture.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/presentations/responsive-design"&gt;Responsive Design&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BreakingAllTheRulesWithWCF.aspx"&gt;Breaking All The Rules with WCF&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/ricardoperes/archive/2009/06/10/nhibernate-mappings.aspx"&gt;NHibernate Mappings - Development With A Dot&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnet-tv.com/2009/06/11/ngourd-presentation"&gt;NGourd Presentation .NET Software Development Videos &amp;amp; Tutorial Directory&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.imeta.co.uk/sstrong/archive/2009/06/11/708.aspx"&gt;LINQ to NHibernate, part IV&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/presentations/just-you-wait"&gt;Just You Wait&lt;/a&gt; - Kent Beck&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/presentations/tony-hoare-computing-engineering"&gt;The Science of Computing and the Engineering of Software&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Silverlight/WPF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/eventr"&gt;eventr&lt;/a&gt; - reference application using SuperDeepZoom control&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/gabrielschenker/archive/2009/06/09/fluent-silverlight-part-3-binding-events-to-commands.aspx"&gt;Binding Events to Commands&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://west-wind.com/weblog/posts/796725.aspx"&gt;WPF Bindings and CurrentCulture Formatting&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverzine.com/tutorials/splash-screens-and-loaders-in-silverlight"&gt;SilverZine Tutorial - Splash screens and Loaders in Silverlight&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?ShowID=182"&gt;Hanselminutes&lt;/a&gt; - Silverlight 3 with Tim Heuer&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://nhmodeller.selfip.com/Default.aspx"&gt;NHModeller - Home&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://smtp4dev.codeplex.com"&gt;smtp4dev&lt;/a&gt; - developer/tester smtp server&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ferventcoder.com/archive/2009/06/10/subversion-1.6-tree-conflicts-and-the-incompatibility-of-subversion-1.5.aspx"&gt;Subversion 1.6, Tree Conflicts, and the Incompatibility of Subversion 1.5 What You Need to Know&lt;/a&gt;&lt;/li&gt;   &lt;a href="http://www.scotthyoung.com/blog/books"&gt;&lt;/a&gt;&lt;/ul&gt;  &lt;h3&gt;Books&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0596518021?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596518021"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/think.ininfoDose3310thJune17thJune/16328B2E/image.png" width="124" height="164" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0596518021?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596518021"&gt;Beautiful Teams&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0785223584?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0785223584"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/think.ininfoDose3310thJune17thJune/4D989C5C/image.png" width="106" height="164" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0785223584?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0785223584"&gt;Fired Up or Burned Out How to Reignite Your Team's Passion, Creativity, and Productivity Michael L. Stallard&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.lulu.com/content/4964815"&gt;After the Software Wars by Keith Curtis (Book) in Computers &amp;amp; Internet&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Singularity Watch&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://singularityhub.com/2009/05/29/the-scientific-battle-against-alzheimers-disease"&gt;The Scientific Battle Against Alzheimer’s Disease&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityhub.com/2009/06/01/war-20-rise-of-the-robots"&gt;War 2.0 - Rise of the Robots&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://newsroom.cisco.com/dlls/2009/prod_060909.html"&gt;Global IP Traffic to Increase Fivefold by 2013&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.newscientist.com/article/dn17280-speeding-up-brain-networks-might-boost-iq.html"&gt;Speeding up brain networks might boost IQ&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.technologyreview.com/business/22745"&gt;Roll-Up Solar Panels&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityhub.com/2009/06/05/swarm-robotics-beware-the-swarm"&gt;Swarm Robotics Beware The Swarm (videos)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.technologyreview.com/blog/arxiv/23616"&gt;The Dizzying Data Rate Conundrum&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.happiness-project.com"&gt;The Happiness Project&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://chrisguillebeau.com/3x5/files/2008/06/worlddomination.pdf"&gt;Guide to world Domination&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.greatplacetowork.com.au/best/lists.php?year=current&amp;amp;idListName=au&amp;amp;detail=1&amp;amp;order=rank"&gt;Great Place to Work(TM) Institute&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.scotthyoung.com/blog/2007/03/25/how-to-ace-your-finals-without-studying"&gt;How to Ace Your Finals Without Studying&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/etgII9Ytm9Y" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/06/17/thinkin-infoDose-33-(10th-June-17th-June).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/06/17/thinkin-infoDose-33-(10th-June-17th-June).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=2ec43661-194d-4cde-9bc4-8a650a84f599</guid>
      <pubDate>Wed, 17 Jun 2009 22:04:39 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=2ec43661-194d-4cde-9bc4-8a650a84f599</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=2ec43661-194d-4cde-9bc4-8a650a84f599</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/06/17/thinkin-infoDose-33-(10th-June-17th-June).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=2ec43661-194d-4cde-9bc4-8a650a84f599</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #32 (2nd June - 9th June)</title>
      <description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Announcements&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://serverfault.com"&gt;Server Fault&lt;/a&gt; – stackoverflow for NOCs :)&lt;/p&gt;  &lt;h3&gt;Development&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.yourlifestyledesigner.net/creation/start-online-business"&gt;What You Need To Start Your Own Online Business&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://metamodern.com/2009/05/27/how-to-learn-about-everything"&gt;How to Learn About Everything&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.randsinrepose.com/archives/2009/06/01/a_deep_breath.html"&gt;A Deep Breath&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/archives/001260.html"&gt;How to Motivate Programmers&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://codezest.com/archive/2009/05/31/top-10-reasons-why-employees-leave-in-it.aspx"&gt;Top 10 Reasons Why Employees Leave in IT&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://codezest.com/archive/2009/04/19/c-regions-are-not-useful-give-me-a-break.aspx"&gt;C# Regions are not Useful Give me a Break&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://codezest.com/archive/2009/05/17/summary-of-agile.aspx"&gt;Summary of Agile&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://startupblog.wordpress.com/2009/06/02/10-steps-to-web-start-up"&gt;10 steps to web start up&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ecorner.stanford.edu"&gt;Entrepreneurship Corner Stanford University's free podcasts and video clips of entrepreneurial thought leaders and innovator&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://mikehadlow.blogspot.com/2009/05/what-i-look-for-in-code-review.html"&gt;What I look for in a Code Review&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ferventcoder.com/archive/2009/06/02/ndepend-and-cruisecontrol.net.aspx"&gt;NDepend and CruiseControl.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sarahtaraporewalla.com/thoughts/tag/pair-programming"&gt;pair programming&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codingthearchitecture.com/pages/services/training.html"&gt;Training&lt;/a&gt; – software architecture training &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codingthearchitecture.com/pages/book/role.html"&gt;The role of a hands-on software architect&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/arturtrosin/archive/2009/06/02/domain-driven-design-two-basic-premises.aspx"&gt;Domain-Driven Design Two basic premises&lt;/a&gt; - DDD &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sarahtaraporewalla.com/thoughts/design/i-dont-believe-in-orm-object-as-your-domain-model"&gt;I don’t believe in ORM object as your domain model&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.cuberick.com/2009/06/to-orm-or-not-to-orm.html"&gt;To ORM or Not to ORM.&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Unit Testing&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.highoncoding.com/Articles/449_A_Look_at_CreateMock__DynamicMock_and_PartialMock_Methods_in_RhinoMocks.aspx"&gt;A Look at CreateMock, DynamicMock and PartialMock Methods in RhinoMocks&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;.Net&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.softinsight.com/bnoyes/2009/05/30/DebuggableSelfHostWindowsServiceProjects.aspx"&gt;Debuggable Self-Host Windows Service Projects&lt;/a&gt; &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/05/30/may-30th-links-asp-net-ajax-asp-net-mvc-visual-studio.aspx"&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://demiliani.com/blog/archive/2009/05/29/6553.aspx"&gt;Windows Workflow 4.0 quick Activity reference&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb397951.aspx"&gt;Expression Trees&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/rosherove/archive/2009/06/02/review-cryptolicensing-for-net.aspx"&gt;Review CryptoLicensing for .NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://thirstydeveloper.com/2009/04/27/TheThirstyDeveloper60SQLServer2008ForDevelopers.aspx"&gt;SQL Server 2008 for developers&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Books&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0465026567?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0465026567"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/think.ininfoDose322ndJune9thJune/0AD559C5/image.png" width="170" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Singularity Watch&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://gizmodo.com/5274319/xbox-360-project-natal-full+body-motion-control-one+ups-the-wii?skyline=true&amp;amp;s=x"&gt;Xbox 360 Project Natal Full-Body Motion Control One-Ups the Wii - Project Natal&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ted.com/talks/ray_kurzweil_announces_singularity_university.html"&gt;Ray Kurzweil A university for the coming singularity Video&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityu.org/academics/tracks"&gt;Academic Tracks &amp;amp; Teams Singularity University&lt;/a&gt; – a spare $25K anyone? &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.engineeringchallenges.org"&gt;Grand Challenges for Engineering&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://startups.sharmavishal.com/2008/06/growing-list-of-australian-startups.html"&gt;List of Australian Startups&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/ukdpe"&gt;YouTube - ukdpe's Channel&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=l1wKO3rID9g"&gt;The Downfall of Agile Hitler&lt;/a&gt; - gold &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ted.com/talks/matthew_childs_9_rules_of_rock_climbing.html"&gt;Matthew Childs' 9 life lessons from rock climbing Video&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Quotes&lt;/h3&gt;  &lt;p&gt;&amp;quot; Live as if you were to die tomorrow. Learn as if you were to live forever.&amp;quot; - Gandhi&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/wTVJyn-swuY" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/06/13/thinkin-infoDose-32-(2nd-June-9th-June).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/06/13/thinkin-infoDose-32-(2nd-June-9th-June).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=7a1baf87-50ad-47a3-a235-228fe2d7ad2e</guid>
      <pubDate>Sat, 13 Jun 2009 07:22:23 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=7a1baf87-50ad-47a3-a235-228fe2d7ad2e</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=7a1baf87-50ad-47a3-a235-228fe2d7ad2e</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/06/13/thinkin-infoDose-32-(2nd-June-9th-June).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=7a1baf87-50ad-47a3-a235-228fe2d7ad2e</wfw:commentRss>
    </item>
    <item>
      <title>NGourd BDD for WPF Applications</title>
      <description>&lt;p&gt;I checked out &lt;a href="http://code.google.com/p/ngourd/" target="_blank"&gt;NGourd&lt;/a&gt;, a project to build a &lt;a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development" target="_blank"&gt;BDD&lt;/a&gt; tool based on &lt;a href="http://cukes.info/" target="_blank"&gt;Cucumber&lt;/a&gt; which &lt;a href="http://wolfbyte-net.blogspot.com/" target="_blank"&gt;Michael Minutillo&lt;/a&gt; has started. I’d never previously used or even heard of Cucumber, but as I read on I liked a lot about it. It’s an agile development tool and it has a colourful console!&lt;/p&gt;  &lt;p&gt;The concept is illustrated beautifully at &lt;a title="http://cukes.info/" href="http://cukes.info/"&gt;http://cukes.info/&lt;/a&gt;, but here is my take anyway. Behavior is described in the form of a series of plain text steps. The steps are then implemented as parameterized test methods. Using some reflection and regular expressions the plain text steps are mapped to corresponding implementations and run as red/green light tests.&lt;/p&gt;  &lt;p&gt;I started wondering if WPF applications could be tested with NGourd. There’s a great IronPython sample in which a WPF application is started in a new thread and built dynamically from the IronPython interactive console.&lt;/p&gt;  &lt;p&gt;Could something like this could be done in NGourd steps?&lt;/p&gt;  &lt;pre style="font-size: 120%"&gt;	
&lt;span&gt;Scenario: Can Perform basic arithmetic&lt;br /&gt;&lt;/span&gt;
&lt;span&gt;Given I start the application&lt;/span&gt;
&lt;span&gt;When I enter 2 + 2&lt;/span&gt;
&lt;span&gt;And I click GO&lt;/span&gt;
&lt;span&gt;Then I should see 4&lt;/span&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

&lt;p&gt;By using a thread to run the application and a dispatcher to invoke methods on it I had a crude framework to write the steps to make a System.Windows.Application dance. The steps class library has references to the application (to run and test it) and to the NGourd.Core (which has the Attributes I need to decorate the step classes and methods). I’ve exposed the controls of application publically to make the test easier to write.&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;[Steps]
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Behaviour
{
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Thread _thread;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Dispatcher _dispatcher;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; App _app;

    [Step(&lt;span style="color: #006080"&gt;&amp;quot;start the application&amp;quot;&lt;/span&gt;)]
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; StartApplication()
    {
        AutoResetEvent are = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; AutoResetEvent(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);
        _thread = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Thread(() =&amp;gt;
        {
            _app = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; App();
            _app.Startup += (sender, eventArgs) =&amp;gt;
                    {
                        _dispatcher =
                            Dispatcher.FromThread(_thread);
                        are.Set();
                    };
            _app.Run();
        });
        _thread.SetApartmentState(ApartmentState.STA);
        _thread.Start();
        are.WaitOne();
    }

    [Step(&lt;span style="color: #006080"&gt;@&amp;quot;enter (.*)&amp;quot;&lt;/span&gt;)]
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; EnterScript(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; script)
    {
        _dispatcher.Invoke(
            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Action(() =&amp;gt;
            {
                _app.MainWindow.UserScript.Text = script;
            }));
    }

    ...

    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; After()
    {
        _dispatcher.Invoke(
            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Action(() =&amp;gt;
            {
                _app.MainWindow.Close();
            }
            ));
        _thread.Join();
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Writing the application&lt;/h3&gt;

&lt;p&gt;The demo application is a trivial calculator that executes Python statements. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;a href="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/DCRCodeRunnerBDDTestingWindowswithNGourd/491B49BF/image.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/DCRCodeRunnerBDDTestingWindowswithNGourd/3A709DDA/image_thumb.png" width="226" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The method below &lt;em&gt;is&lt;/em&gt; the model for this application. It’s worth mentioning it’s very easy to include C# objects to the scope of the ScriptSource, but only for this post, I’ve restrained myself to the more simple behavior I specified earlier (but I did add it to the demo which can be downloaded &lt;a href="http://static.sharpthinking.com.au/2009/ngourd-calculator/DLRCalculator.zip" target="_blank"&gt;here&lt;/a&gt;)&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; EvaluateExpression(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; expression)
{
    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
    {
        ScriptEngine engine = Python.CreateEngine();
        ScriptRuntime runtime = engine.Runtime;

        ScriptSource source =
          engine.CreateScriptSourceFromString(
                       expression,
                       SourceCodeKind.Expression);

        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (source.Execute() ?? &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;).ToString();
    }
    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;(Exception ex)
    {
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ex.Message;
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Of course this could be unit tested itself.&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;[TestMethod]
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ModelCanDoBasicArithmetic()
{
    Model model = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Model();
    &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; output = model.EvaluateExpression(&lt;span style="color: #006080"&gt;&amp;quot;2+2&amp;quot;&lt;/span&gt;);
    Assert.AreEqual(&lt;span style="color: #006080"&gt;&amp;quot;4&amp;quot;&lt;/span&gt;, output);
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;So what are we testing? I guess its this&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Execute_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)
{
    output.Text = _model.EvaluateExpression(input.Text);
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;The only thing I had to do the application specifically to get it working in test environment was delete an attribute in App.xaml root element&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;StartupUri=&amp;quot;Window1.xaml&amp;quot;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;This has consequences. No window loads on start up! By added a constructor in my App class I was able to remedy this. This may have wider reaching consequences I’m not aware of, and I’m also not sure if using the OnLoad event is better practice. Anyway it’s working fine for now.&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; App : Application
{
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; App()
    {
        MainWindow w = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MainWindow();
        w.Show();
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;It was &lt;em&gt;fun&lt;/em&gt; implementing the steps in my scenario then writing the application and watching the behavior test turn green like a cucumber!&amp;#160; &lt;/p&gt;

&lt;h3&gt;Isolating scenarios in separate application domains&lt;/h3&gt;

&lt;p&gt;Even though everything looked looks like it was working, I wanted to add another scenario (which won’t surprise readers of my recent posts)&lt;/p&gt;

&lt;pre style="font-size: 120%"&gt;	
&lt;span&gt;Scenario: Can Execute Python statements&lt;br /&gt;&lt;/span&gt;
&lt;span&gt;Given I start the application&lt;/span&gt;
&lt;span&gt;When I enter “hello”.upper()&lt;/span&gt;
&lt;span&gt;And I click GO&lt;/span&gt;
&lt;span&gt;Then I should see HELLO&lt;/span&gt;&lt;/pre&gt;

&lt;pre&gt;&amp;#160;&lt;/pre&gt;

&lt;p&gt;It turns out this extra test didn’t need any additional step implementations or changes to the WPF application itself, but did show a very real deficiency in what I was doing. I was reminded of the rule enforced by InvalidOperationException:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Cannot create more than one System.Windows.Application instance in the same AppDomain. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I knew of this rule, I still &lt;em&gt;tried&lt;/em&gt; to get round it anyway. Can I close one somehow? Delete one? Delete one and de-reference its friends and family?&lt;/p&gt;

&lt;p&gt;Creating a new AppDomain seems a clever way round the rules reasoning, but the wary fear this may be some type of pandora's box, at very least additional complexities. Just thinking of MarshalByRefObject proxies makes me feel I should be spending more time enjoying life with &lt;em&gt;my&lt;/em&gt; friends and family. &lt;/p&gt;

&lt;p&gt;I got some way using DoCallBack until I realized I couldn’t make the steps parameterized as DoCallBack doesn’t have any parameters! (I also stubbornly know it throws runtime errors if one tries to use the looser lambda scoping to cheekily pass data across application domains, luckily though it’s the same stubboness that stopped me giving up this post all together).&lt;/p&gt;

&lt;p&gt;As I was thinking I &lt;em&gt;should&lt;/em&gt; use WCF for communication betweens application domains, another way I &lt;em&gt;could&lt;/em&gt; do to it clicked. I just needed to create my original steps class in a new application domain. By deriving the test class from MarshalByRefObject I could call its step methods from the control domain using it dynamic proxy. I then created a wrapper class which creates a new AppDomain, creates the previous steps in the new domain and uses the dynamic proxy to call the steps. This wrapper class now has the Step attributes for NGourd to pick up.&amp;#160;&amp;#160; &lt;/p&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;[Steps]
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; BehaviourWrapper
{
    AppDomain domain;
    Behaviour behaviourProxy;

    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Before()
    {
        domain = AppDomain.CreateDomain(&lt;span style="color: #006080"&gt;&amp;quot;TestDomain&amp;quot;&lt;/span&gt;);
        behaviourProxy = domain.CreateInstanceFromAndUnwrap
            (&lt;span style="color: #006080"&gt;&amp;quot;DLRCalculator.BehaviourTests.dll&amp;quot;&lt;/span&gt;,
             &lt;span style="color: #006080"&gt;&amp;quot;DLRCalculator.BehaviourTests.Behaviour&amp;quot;&lt;/span&gt;) 
                &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; Behaviour;
    }

    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; After()
    {
        behaviourProxy.After();
        AppDomain.Unload(domain);
    }

    [Step(&lt;span style="color: #006080"&gt;&amp;quot;start the application&amp;quot;&lt;/span&gt;)]
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; StartApplication()
    {
        behaviourProxy.StartApplication();
    }

    [Step(&lt;span style="color: #006080"&gt;@&amp;quot;enter (.*)&amp;quot;&lt;/span&gt;)]
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; EnterScript(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; script)
    {
        behaviourProxy.EnterScript(script);
        Thread.Sleep(5000);
    }

    [Step(&lt;span style="color: #006080"&gt;@&amp;quot;click GO&amp;quot;&lt;/span&gt;)]
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ClickGo()
    {
        behaviourProxy.ValidateOutput();
    }

    [Step(&lt;span style="color: #006080"&gt;@&amp;quot;should see (.*)&amp;quot;&lt;/span&gt;)]
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ValidateOutput(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; expected)
    {
        behaviourProxy.ValidateOutput(expected);
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Running some tests with NGourd&lt;/h3&gt;

&lt;p&gt;I’m impressed with NGourd and have generally had a lot of fun and success playing with it. It’s a little disappointing that no results are displayed until all the tests are complete. Perhaps it’s because my tests take ages and it would be nice to see what they’re doing (starting an AppDomain and running an Application in it isn’t a lightweight task). Mainly though, I wanted to include an action shot of it firing up windows during the test. &lt;/p&gt;

&lt;h3&gt;&lt;a href="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/DCRCodeRunnerBDDTestingWindowswithNGourd/27BBA423/image.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="268" alt="image" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/DCRCodeRunnerBDDTestingWindowswithNGourd/51DB2C3E/image_thumb.png" width="528" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/h3&gt;

&lt;h3&gt;Some thoughts and reflection&lt;/h3&gt;

&lt;p&gt;I didn’t write this to actually use it in a real project, this was a personal project deliberately devised to cover some some things I was interesting in learning about and trying out. To do automation on a real project I would look further into &lt;a href="http://white.codeplex.com/" target="_blank"&gt;White&lt;/a&gt; an open source project released by &lt;a href="http://www.thoughtworks.com/" target="_blank"&gt;ThoughtWorks&lt;/a&gt;, which I hear is really good. &lt;/p&gt;

&lt;p&gt;The concept of Cucumber is pretty cool and I was nice to have a look at the NGourd source code. In writing this post I enjoyed putting in practice what I new could be done relatively easily (creating and managing multiple AppDomains, Applications and Threads in a process) and I was happy to find I had no problems at all with NGourd itself getting the UI tests working.&lt;/p&gt;

&lt;p&gt;This is all I planned to do with NGourd, the UI steps and the Calculator, but I’d be interested to hear what you think of all this rambling. I know &lt;em&gt;I&lt;/em&gt; got a lot out of it, did you? What of the other behavior driven development tools &lt;a href="http://codebetter.com/blogs/aaron.jensen/archive/2008/05/08/introducing-machine-specifications-or-mspec-for-short.aspx" target="_blank"&gt;MSpec&lt;/a&gt;, &lt;a href="http://nspec.tigris.org/" target="_blank"&gt;NSpec&lt;/a&gt; or &lt;a href="http://nbehave.org/" target="_blank"&gt;NBehave&lt;/a&gt;? What are your experiences?&lt;/p&gt;

&lt;p&gt;I’ve upload the project from this post &lt;a href="http://static.sharpthinking.com.au/2009/ngourd-calculator/DLRCalculator.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/4rB5Eg1Ne6g" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/06/08/NGourd-BDD-for-WPF-Applications.aspx</link>
      <author>tarn</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/06/08/NGourd-BDD-for-WPF-Applications.aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=cdd46309-9973-4ac3-9e59-71a77585994c</guid>
      <pubDate>Mon, 08 Jun 2009 10:40:46 +0900</pubDate>
      <dc:publisher>tarn</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=cdd46309-9973-4ac3-9e59-71a77585994c</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=cdd46309-9973-4ac3-9e59-71a77585994c</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/06/08/NGourd-BDD-for-WPF-Applications.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=cdd46309-9973-4ac3-9e59-71a77585994c</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #31 (24th May - 1st June)</title>
      <description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://interviewpattern.com/post/Googlee28099s-cupcakes-from-Google-IOe280a6.aspx"&gt;Google’s cupcakes from Google IO…&lt;/a&gt; – Google developer lovefest – got to check out Google Waves – awesome email/messaging/collaboration application – can transmit characters as they are typed!&lt;/p&gt;  &lt;h3&gt;Developer&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://startupblog.wordpress.com/2009/05/24/act-as-if"&gt;Act as if « Start Up Blog&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://urilavi.blogspot.com/2009/05/vari-able.html"&gt;Uri Lavi Var{i-able;}&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://anarchycreek.com/2009/05/26/how-tdd-and-pairing-increase-production"&gt;How TDD and Pairing Increase Production&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/05/beyond-agile"&gt;InfoQ Presentation Beyond Agile - Cultural Patterns&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.quicksprout.com/2009/05/25/how-to-be-a-better-entrepreneur-in-the-next-30-minutes"&gt;How to Become a Better Entrepreneur in the Next 30 Minutes&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/nickmac/archive/2009/05/22/the-architecture-journal.aspx"&gt;The Architecture Journal&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx"&gt;ADO.NET team blog POCO in the Entity Framework Part 1 - The Experience&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/aaron.jensen/archive/2008/09/02/mspec-v0-2.aspx"&gt;MSpec v0.2&lt;/a&gt; – BDD .Net&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.wekeroad.com/mvc-storefront/kona-3"&gt;Kona 3 Learning Behavior Driven Development (BDD)&lt;/a&gt; – great video if interested in BDD&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.vuscode.com/malovicn/archive/2007/10/21/tdd-rhino-mocks-part-2-some-common-scenarios.aspx"&gt;TDD - Rhino Mocks - Part 2 - Some common scenarios&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://discuss.joelonsoftware.com/default.asp?joel.3.694492.26"&gt;Mocking + Unit Testing&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2009/05/30/persistence-patterns-cascading-updates.aspx"&gt;Persistence Patterns Cascading Updates &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://urilavi.blogspot.com/2009/05/separate-domain-from-presentation-part_30.html"&gt;Separate Domain from Presentation – part III&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.dervalp.com/2009/05/29/kiwi-mvcnet-why-this-why-that-i-explain-my-architecture-choices-part-5"&gt;Kiwi MVC.NET Why this, why that I explain my architecture choices Part 5&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/05/SOADead"&gt;Is SOA Still Dead&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/05/Rest"&gt;REST – The Good, the Bad and the Ugly&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Silverlight/WPF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://krishnabhargav.blogspot.com/2009/05/using-wcf-silverlight-2-prism-gotchas.html"&gt;Using WCF + Silverlight 2 + PRISM Gotchas&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/dphill/archive/2009/05/29/prism-quick-start-kit.aspx"&gt;Prism Quick Start Kit&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jaimer/archive/2009/05/27/wpf-4-and-net-framework-4-beta-1-list-of-features-totrack.aspx"&gt;List of features to track in WPF4 and the details on beta1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nikhilk.net/Silverlight-ViewModel-MVC.aspx"&gt;ViewModel with MVC Navigation in Silverlight&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/ContinuumNews/When-to-use-Prism-for-Silverlight-or-WPF-apps-podcast"&gt;When to use Prism for Silverlight or WPF apps podcast&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/KB/WPF/CalciumPart01.aspx"&gt;Calcium A modular application toolset leveraging the Composite Application Library (PRISM)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://sourceforge.net/projects/tsqlunittestgen"&gt;TSql Unit Test Generator&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;h3&gt;Books&lt;/h3&gt;   &lt;a href="http://www.amazon.com/gp/product/1605299561?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1605299561"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/think.ininfoDose3124thMay1stJune/390620E8/image.png" width="170" height="244" /&gt;&lt;/a&gt; &lt;/ul&gt;  &lt;h3&gt;Singularity Watch&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.nytimes.com/2009/05/24/weekinreview/24markoff.html?_r=1"&gt;The Future of Artificial Intelligence&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://trendwatching.com/trends/pdf/trendwatching_2009-06_FOREVERISM.pdf"&gt;FOREVERISM&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityhub.com/2009/05/28/create-an-ai-on-your-computer"&gt;Create an AI on Your Computer&lt;/a&gt; ... this should help to to get singularity v0.1 out the door &lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityhub.com/2009/05/27/ozwe-qb1-no-mouse-no-keyboard-just-gestures"&gt;The QB1 Computer No Mouse, No Keyboard. Just Gestures&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityhub.com/2009/05/29/6-in-1-solar-robot-kit-standing-on-the-shoulders-of-giant-memes"&gt;6 in 1 Solar Robot Kit Standing on the Shoulders of Giant Memes&lt;/a&gt; - i will need this&lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityhub.com/2009/05/22/the-emotiv-headset-gaming-with-thoughts-alone"&gt;The Emotiv Headset - Gaming With Thoughts Alone&lt;/a&gt; - i will definitely need this&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.transcurve.net/profiles/blogs/the-secret-to-a-really-long"&gt;The secret to a really long life. Be happy. Exercise. Eat right. And sign up now to get nanobots in 2030&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.transcurve.net/profiles/blogs/the-future-brain"&gt;The Future Brain&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.transcurve.net/profiles/blogs/will-enhancement-destroy-the"&gt;Will enhancement destroy the real you&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/mIV4K_2Yr10" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/06/01/thinkin-infoDose-31-(24th-May-1st-June).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/06/01/thinkin-infoDose-31-(24th-May-1st-June).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=f01ea1b8-3770-46c2-927b-eed6f5ebedf8</guid>
      <pubDate>Mon, 01 Jun 2009 22:41:36 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=f01ea1b8-3770-46c2-927b-eed6f5ebedf8</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=f01ea1b8-3770-46c2-927b-eed6f5ebedf8</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/06/01/thinkin-infoDose-31-(24th-May-1st-June).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=f01ea1b8-3770-46c2-927b-eed6f5ebedf8</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #30 (18th May - 22nd May)</title>
      <description>&lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Developer&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://java.dzone.com/articles/how-do-you-convince-your-boss"&gt;How Do You Convince Your Boss to TDD&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000968.html"&gt;Software Branching and Parallel Universes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa730834(VS.80).aspx"&gt;Branching and Merging Primer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/hi-in/rampup/default%28en-us%29.aspx"&gt;Ramp Up&lt;/a&gt; - MSDN training videos &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/rosherove/default.aspx?PageIndex=2"&gt;ISerializable - Roy Osherove's Blog&lt;/a&gt; = blog of the week! &lt;/li&gt;    &lt;li&gt;&lt;a href="http://martinfowler.com/articles/mocksArentStubs.html"&gt;Mocks Aren't Stubs&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/rosherove/archive/2009/03/01/what-are-you-going-to-do-about-it.aspx"&gt;What are YOU going to do about it - ISerializable - Roy Osherove's Blog&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.objectmentor.com/articles/2009/02/26/10-papers-every-programmer-should-read-at-least-twice"&gt;10 Papers Every Programmer Should Read (At Least Twice)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/articles/agile-kanban-boards"&gt;Visualizing Agile Projects using Kanban Boards&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.wekeroad.com/blog/jumping-the-20-fence"&gt;Jumping The 20 Fence&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2009/05/14/the-stripper-pattern.aspx"&gt;The Stripper Pattern&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devlicio.us/blogs/casey/archive/2009/05/14/commercial-suicide-integration-at-the-database-level.aspx"&gt;Commercial Suicide - Integration at the Database Level&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dotnet.dzone.com/videos/brain-david-ross-nbehave-and"&gt;NBehave and Behavior Driven Development&lt;/a&gt; &lt;/li&gt;   &lt;a href="http://codebetter.com/blogs/aaron.jensen/archive/2008/09/02/mspec-v0-2.aspx"&gt;&lt;/a&gt;&lt;/ul&gt;  &lt;h3&gt;WCF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/anilkumargupta/archive/2009/05/16/wcf-intermediate-service-between-client-and-server.aspx"&gt;Anil Speaks WCF Intermediate Service between client and server&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;.Net&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://interviewpattern.com/post/Stack-and-Queue-interview-questions.aspx"&gt;Stack and Queue interview questions&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms379571.aspx"&gt;Part 2 The Queue, Stack, and Hashtable&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codethinked.com/post/2009/05/14/How-Do-You-Deal-With-Exceptions.aspx"&gt;How Do You Deal With Exceptions&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://leedumond.com/blog/friends-dont-let-friends-catch-exception"&gt;Friends Don’t Let Friends catch (Exception) &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/vbertocci/archive/2009/05/15/more-details-about-the-identity-developer-training-kit.aspx"&gt;Vibro.NET More details about the Identity Developer Training Kit&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/bursteg/archive/2009/05/19/wf-4-0-building-a-hello-world-sequential-workflow.aspx"&gt;WF 4.0 Building a Hello World Sequential Workflow&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/C4AndTheDynamicKeywordWhirlwindTourAroundNET4AndVisualStudio2010Beta1.aspx"&gt;C# 4 and the dynamic keyword - Whirlwind Tour around .NET 4 (and Visual Studio 2010) Beta 1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2009/05/19/nhibernate-ndash-mapping-a-single-domain-model-to-multiple-physical.aspx"&gt;NHibernate – Mapping a single domain model to multiple physical data models&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2009/05/19/nhibernate-queries-examples.aspx"&gt;NHibernate Queries – Examples&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;Microsoft Visual Studio 2010 First Look&lt;/a&gt; &lt;a href="http://www.hanselman.com/blog/C4AndTheDynamicKeywordWhirlwindTourAroundNET4AndVisualStudio2010Beta1.aspx"&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ferventcoder.com/archive/2009/05/08/uppercut---the-insanely-easy-to-use-automated-build-framework.aspx"&gt;UppercuT - The Insanely Easy to Use Automated Build Framework&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/rosherove/archive/2009/05/19/introducing-typemock-racer-1-0-find-multithreaded-deadlocks.aspx"&gt;Introducing Typemock Racer 1.0 – Find multithreaded deadlocks&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://stevedunns.googlepages.com/codeformatterforwindowslivewriter"&gt;Code Formatter for Windows Live Writer&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Silverlight/WPF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://compositewpf.codeplex.com"&gt;patterns &amp;amp; practices Composite WPF and Silverlight&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2009/02/26/hands-on-model-view-viewmodel-mvvm-for-silverlight-and-wpf.aspx"&gt;Hands-On Model-View-ViewModel (MVVM) for Silverlight and WPF&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/KB/smart/Sonic.aspx#MVVM"&gt;Sonic A WPF (hybrid smart client) searchable media library&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://elegantcode.com/2009/05/20/3-essentials-to-quickly-leaning-blend"&gt;3 essentials to quickly learning Blend&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://timheuer.com/blog/archive/2009/05/19/14615.aspx"&gt;Silverlight Visual Studio helper files&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Book&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.manning.com/osherove/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_6E3CE98B" border="0" alt="image_6E3CE98B" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/think.ininfoDose3018thMay22ndMay/6B53684E/image_6E3CE98B.png" width="193" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/Code-Leader-Processes-Successful-Programmer/dp/0470259248"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CodeLeaderCover" border="0" alt="CodeLeaderCover" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/think.ininfoDose3018thMay22ndMay/4D25AA9A/CodeLeaderCover.jpg" width="167" height="208" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Singularity Watch&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;amp;taxonomyName=Government&amp;amp;articleId=9133040&amp;amp;taxonomyId=13"&gt;City 2.0 Using tech building blocks in tomorrow's urban centers&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.physorg.com/news161600187.html"&gt;Fujitsu develops world's fastest processor&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.inquisitr.com/24179/the-future-summit-australias-future-as-a-technological-backwater"&gt;The Future Summit Australia’s future as a technological backwater&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nanowerk.com/news/newsid=10754.php"&gt;Nanotechnology can enable the creation of 'five dimensional' discs with huge storage capacities&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nanowerk.com/news/newsid=10742.php"&gt;New memory material may hold data for one billion years&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.physorg.com/news162112945.html"&gt;Rotating Space Elevator Propels its Own Load&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.azonano.com/news.asp?newsID=11643"&gt;SANYO Breaks Solar Cell Record&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.technation.com.au/2009/05/21/top-100-aussie-web-startups-may-09"&gt;Top 100 Aussie Web Startups - May 09&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/UjclZQqX7cQ" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/06/01/thinkin-infoDose-30-(18th-May-22nd-May).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/06/01/thinkin-infoDose-30-(18th-May-22nd-May).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=a2f0a42e-a49b-4d05-8e6d-e780670c6f5d</guid>
      <pubDate>Mon, 01 Jun 2009 21:43:32 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=a2f0a42e-a49b-4d05-8e6d-e780670c6f5d</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=a2f0a42e-a49b-4d05-8e6d-e780670c6f5d</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/06/01/thinkin-infoDose-30-(18th-May-22nd-May).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=a2f0a42e-a49b-4d05-8e6d-e780670c6f5d</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #29 (11th May - 15th May)</title>
      <description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Announcements/Events&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/events/TechEd2009"&gt;Microsoft® Tech·Ed North America 2009&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://jaoo.com.au/sydney-2009/schedule/thursday.jsp"&gt;JAOO Sydney 2009 Schedule - Thursday&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://miguelmadero.blogspot.com/2009/05/first-virtual-silverlight-designer-and.html"&gt;Miguel Madero First Virtual Silverlight Designer and Developer Network Meeting&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Development&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blip.tv/file/2089545"&gt;RailsConf 09 Robert Martin, What Killed Smalltalk Could Kill Ruby, Too&lt;/a&gt; - leave the campground cleaner than you found it ! &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.loudthinking.com/posts/42-we-need-both-engineers-and-artists-in-programming"&gt;We need both engineers and artists in programming&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.noop.nl/2009/05/the-big-agile-practices-survey-report-part-3.html"&gt;The Big Agile Practices Survey Report (Part 3)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.artificialignorance.net/blog/wisc/stackoverflow-and-the-power-of-wisc"&gt;StackOverflow and the power of WISC artificial ignorance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/karlseguin/archive/2009/05/08/making-the-untestable-testable-with-anonymous-methods-and-dependency-injection.aspx"&gt;Making the untestable testable with Anonymous Methods and Dependency Injection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.lindarising.org"&gt;www.lindarising.org&lt;/a&gt; = agile &lt;/li&gt;    &lt;li&gt;&lt;a href="http://leansoftwareengineering.com/ksse/scrum-ban"&gt;Scrum-ban Lean Software Engineering&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codingcontext.com/post/A-Passion-For-Your-Craft.aspx"&gt;Coding Context A Passion For Your Craft&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/stevecla01/archive/2009/05/12/all-you-need-to-know-about-giving-a-presentation.aspx"&gt;Geek In Disguise All You Need To Know About Giving A Presentation&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Web/Silverlight&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.junnark.com/Articles/Build-a-Silverlight-Web-Chatroom-with-Multiple-Rooms-and-Private-Chat-Part-2.aspx"&gt;Build a Silverlight Web Chatroom with Multiple Rooms and Private Chat - Part 2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haacked.com/archive/2009/05/07/18616.aspx"&gt;I’m a Web Developer At Heart&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://mikevalenty.blogspot.com/2009/05/unit-of-work-with-unity.html"&gt;Unit of Work with Unity and ASP.NET MVC&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.tanguay.info/web/index.php?pg=howtos&amp;amp;id=16&amp;amp;layout=print"&gt;How to build a Silverlight application with Prism v2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://spyrestudios.com/simple-guide-how-to-get-started-with-jquery"&gt;Simple Guide How To Get Started With jQuery &lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;WPF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/The+Knowledge+Chamber/Mark-Wilson-Thomas-WPF-and-Silverlight-Development-in-Visual-Studio-2010"&gt;Mark Wilson-Thomas WPF and Silverlight Development in Visual Studio 2010 The Knowledge Chamber Channel 9&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;WCF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/youssefm/default.aspx"&gt;WCF blog - Ramblings about Serialization, Metadata, and Configuration&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/endpoint/archive/2009/05/07/the-road-to-4-wcf-changes-between-beta-1-and-ctp.aspx"&gt;The .NET Endpoint The Road to 4 – WCF Changes between Beta 1 and CTP&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/509140/wcf-self-hosted-service-client-clean-up-on-service-stop"&gt;WCF Self-hosted service, client clean-up on service stop&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/7fb25e30-fc74-4a52-9dfd-232c67c84f7a"&gt;Provide Way to Detect Client AbortDisconnect in WCF&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://naspinski.net/post/Universal-IQueryable-Search-Usable-by-Linq-to-SQL-and-Linq-to-Entities.aspx"&gt;Universal IQueryable Search Usable by Linq-to-SQL and Linq-to-Entities&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/adonet/archive/2009/05/11/sneak-preview-persistence-ignorance-and-poco-in-entity-framework-4-0.aspx"&gt;ADO.NET team blog Sneak Preview Persistence Ignorance and POCO in Entity Framework 4.0&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://entlib.codeplex.com/Wiki/View.aspx?title=EntLib5%20Developer%20Notes"&gt;patterns &amp;amp; practices – Enterprise Library 4.1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/derickbailey/archive/2009/05/13/fluentnhibernate-contrib-fnh-contrib-is-alive.aspx"&gt;FluentNHibernate Contrib (FNH.Contrib) Is Alive! &lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.sobees.com/bdule"&gt;bDule&lt;/a&gt; – nice looking twitter/facebook client &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/KB/cs/cs-script_for_cp.aspx"&gt;C# Script The Missing Puzzle Piece.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://csscript.net"&gt;CS-Script&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;h3&gt;Other&lt;/h3&gt;    &lt;li&gt;&lt;a href="http://blog.futurestreetconsulting.com"&gt;The Human Network&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://watch.usnowfilm.com"&gt;Us Now watch the film&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/kyle.baley/archive/2009/05/13/teamcity-codebetter-project-list.aspx"&gt;TeamCity.CodeBetter Project List&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.secretgeek.net/host_ironpython.asp"&gt;A 3 minute guide to embedding IronPython in a C# application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.office2010themovie.com"&gt;Office 2010&lt;/a&gt; - countdown to the beginning of awesome ;-) &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/BHYYOvmKPIQ" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/05/31/thinkin-infoDose-29-(11th-May-15th-May).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/05/31/thinkin-infoDose-29-(11th-May-15th-May).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=29b96304-caa4-4abb-9389-32850d3ee178</guid>
      <pubDate>Sun, 31 May 2009 07:44:23 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=29b96304-caa4-4abb-9389-32850d3ee178</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=29b96304-caa4-4abb-9389-32850d3ee178</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/05/31/thinkin-infoDose-29-(11th-May-15th-May).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=29b96304-caa4-4abb-9389-32850d3ee178</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #28 (29th Apr - 8th May)</title>
      <description>&lt;h3&gt;Announcements&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://events.linkedin.com/LIDNUG-ScottGu-talks-shop-developers/pub/60571"&gt;LIDNUG ScottGu talks shop with developers on LinkedIn Events&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.victoriadotnet.com.au/vic-victorianet-dev-sig-formed/vic-victorianet-dev-sig-events.aspx"&gt;Victoria .Net&lt;/a&gt; Meeting 12th MAy &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/australia/remix/agenda/schedule.aspx"&gt;What's on at Remix 09 Sydney Australia&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Development&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blog.scottbellware.com/2009/02/decade-of-agile-dawn-of-lean.html"&gt;Decade of Agile, Dawn of Lean&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/articles/backlog-not-waste"&gt;Lean and Agile Marriage Made in Heaven or Oxymoron&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/05/Agile-Contracts"&gt;Contracts for Agile Software Development&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ampgt.com"&gt;Ampersand GT - Scott Bellware - Software Product Design, Development, and Direction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/PaintFenceCutWoodPullWeedPlantTreeFindingGeekBalanceOutsideMyComfortZone.aspx"&gt;Paint Fence, Cut Wood, Pull Weed, Plant Tree - Finding Geek Balance Outside My Comfort Zone&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/karlseguin/archive/2009/05/04/2009-a-year-of-learning-so-far.aspx"&gt;2009 - A Year of Learning (so far)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.netobjectives.com/blogs/tale-of-two-communities"&gt;A Tale of Two Communities NetObjectives&lt;/a&gt; - Kaban software development &lt;/li&gt;    &lt;li&gt;&lt;a href="http://hatim.indexdev.net/2009/05/04/8-must-have-tools-when-going-to-the-clients-site"&gt;8 Must Have Tools when Going to the Client’s Site Hatim's Development Blog&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/karlseguin/archive/2009/04/27/the-7-phases-of-unit-testing.aspx"&gt;The 7 Phases of Unit Testing&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;WPF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/cordialamit/practicalwpf04062009075240AM/practicalwpf.aspx"&gt;WPF Practical Solutions&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;WCF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032383097&amp;amp;EventCategory=5&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast geekSpeak Windows Communication Foundation as the New .NET with Juval Lowy (Level 200)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://wcfloadtest.codeplex.com"&gt;WCF Load Test - Home&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wcfstorm.com/wcf/home.aspx"&gt;wcfstorm - Home&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/drnick/archive/2006/10/16/configuring-http-for-windows-vista.aspx"&gt;Nicholas Allen's Indigo Blog Configuring HTTP for Windows Vista&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/pedram/archive/2007/10/05/wcf-authentication-custom-username-and-password-validator.aspx"&gt;Pedram Rezaei's Ramblings WCF Authentication Custom Username and Password Validator&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.owasp.org/index.php/WCF_Security_Best_Practices"&gt;WCF Security Best Practices – OWASP&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://nunit.com/blogs/?p=66"&gt;It’s the Tests » Blog Archive » Ten Reasons to Try NUnit 2,5&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://west-wind.com/Weblog/posts/740022.aspx"&gt;Creating Visual Studio Templates from your Web Projects - Rick Strahl's Web Log&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://elegantcode.com/2009/05/04/implementing-teamcity-for-net-projects-part-1-just-build-it-a-simple-build-configuration"&gt;Implementing TeamCity for .NET projects, Part 1 Just Build It! (A Simple Build Configuration) Elegant Code&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms732023.aspx"&gt;Service Trace Viewer Tool (SvcTraceViewer.exe)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Web/Silverlight&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://silverzine.com/tutorials/create-a-fire-button-with-expression-design-and-blend"&gt;SilverZine - Silverlight resource for Designers&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nikhilk.net/Silverlight-Locate-Me.aspx"&gt;Nikhil Kothari's Weblog Locate Me and Virtual Earth Sample for Silverlight&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/dglover/archive/2009/04/29/perth-sddn-net-ria-services-event-follow-up.aspx"&gt;Dave Glover Down Under (Oz) Perth SDDN .NET RIA Services Event Follow up&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetguy.co.uk/post/2009/05/03/aspnet-e28093-security-10-helpful-pointers.aspx"&gt;asp.net – security. 10 helpful pointers&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2009/04/30/nhibernate-ndash-the-difference-between-get-load-and-querying-by.aspx"&gt;NHibernate – The difference between Get, Load and querying by id&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codethinked.com/post/2009/04/30/Introduction-to-Mixins-For-the-C-Developer.aspx"&gt;CodeThinked Introduction to Mixins For the C# Developer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/05/01/metadata-classes-a-force-for-good-or-evil.aspx"&gt;Mike Taulty's Blog Metadata Classes – A Force for Good or Evil -)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/sasha/archive/2009/05/02/metadata-belongs-with-the-class-not-with-another-class.aspx"&gt;Metadata Belongs With The Class, Not With Another Class - All Your Base Are Belong To Us&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.softwareishardwork.com/2009/04/marker-interfaces-are-just-metadata.html"&gt;Software Is Hardwork Marker Interfaces Are Just Metadata&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Books&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0735611319?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0735611319"&gt;Code: The Hidden Language of Computer Hardware and Software, by Charles Petzold&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Singularity Watch&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.nanowerk.com/news/newsid=10425.php"&gt;MIT teams finding many uses for graphene, the newest form of carbon&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://singularityhub.com/2009/04/29/transcendent-man-wows-at-tribeca-film-festival-premier"&gt;Transcendent Man Wows At Tribeca Film Festival Premier &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.newscientist.com/article/dn17082-five-futurist-visionaries-and-what-they-got-right.html"&gt;Five futurist visionaries and what they got right&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.newscientist.com/article/mg20227076.200"&gt;Ray Kurzweil A singular view of the future&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.news.com.au/story/0,23599,25404188-2,00.html?from=public_rss"&gt;Google named best place to work in Australia&lt;/a&gt; &lt;a href="http://www.obs.com.au/AboutUs/Pages/OBSPeopleandValues.aspx"&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dimecasts.net/Casts/CastFeedDetails/105"&gt;Dime Casts.Net -- Inform and Educate in ~10 Minutes or Less&lt;/a&gt; - Func and Action &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dimecasts.net/Casts/CastFeedDetails/104"&gt;Dime Casts.Net -- Inform and Educate in ~10 Minutes or Less&lt;/a&gt; - ReSharper 4.5 Navigation &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.markhneedham.com/blog/2009/05/02/f-stuff-i-get-confused-about"&gt;F# Stuff I get confused about at Mark Needham&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/CSDWonK2WXA" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/05/31/thinkin-infoDose-28-(29th-Apr-8th-May).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/05/31/thinkin-infoDose-28-(29th-Apr-8th-May).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=3d5b9d29-88a7-41ee-9b5d-149dd9053833</guid>
      <pubDate>Sun, 31 May 2009 07:40:48 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=3d5b9d29-88a7-41ee-9b5d-149dd9053833</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=3d5b9d29-88a7-41ee-9b5d-149dd9053833</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/05/31/thinkin-infoDose-28-(29th-Apr-8th-May).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=3d5b9d29-88a7-41ee-9b5d-149dd9053833</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #27 (20th Apr - 28th Apr)</title>
      <description>&lt;p&gt;I've changed jobs recently and my working habits have changed slightly, so bear with me as I get these link posts back on track :-) &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;h3&gt;Architecture&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/oslo/videos.aspx#dsl"&gt;Videos on Oslo&lt;/a&gt; M = DSL Domain Specific Languages &lt;/li&gt;    &lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2009/04/17/repository-is-the-new-singleton.aspx"&gt;Repository is the new Singleton&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dotnetslackers.com/articles/designpatterns/To-mock-or-not-to-mock-that-is-the-question-Part-1.aspx"&gt;To mock or not to mock, that is the question – Part 1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/articles/35638/Fluent-NHibernate-and-Linq2NHibernate-Demo-Project.aspx"&gt;Fluent NHibernate and Linq2NHibernate&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=439"&gt;.NET Rocks!&lt;/a&gt; - &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=439"&gt;Jonas Follesø on UI Framework Choices&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.voidspace.org.uk/python/weblog/arch_d7_2009_04_18.shtml#e1081"&gt;The Voidspace Techie Blog&lt;/a&gt; - Dynamic Languages and Architecture &lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/gregyoung/archive/2009/04/23/repository-is-dead-long-live-repository.aspx"&gt;Repository is Dead Long Live Repository&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.markhneedham.com/blog/2009/04/23/ddd-making-implicit-concepts-explicit"&gt;DDD Making implicit concepts explicit&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Development&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/SocialNetworkingForDevelopersConferenceTalkVideo.aspx"&gt;Social Networking for Developers - Conference Talk Video&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/gabrielschenker/archive/2009/02/05/learning-and-understanding.aspx"&gt;Learning and understanding&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?showID=177"&gt;Hanselminutes&lt;/a&gt; - IronPython with Michael Foord &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;amp;ObjectType=COL&amp;amp;ObjectId=3543"&gt;Column info Don’t Become the Quality Police&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://agilewarrior.wordpress.com/2009/04/08/yagni-vs-usability"&gt;YAGNI vs Usability « Agile Warrior Blog&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoq.com/presentations/teamwork-an-individual-skill"&gt;Teamwork Is An Individual Skill How to Build Any Team Any Time&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Web&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blog.wekeroad.com/blog/i-spose-ill-just-say-it-you-should-learn-mvc"&gt;I Spose I’ll Just Say It You Should Learn MVC « Rob Conery&lt;/a&gt; Gold! &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.linqpad.net"&gt;LINQPad&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.google.com/p/nbuilder"&gt;nbuilder - Google&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://hackingon.net/post/My-Favourite-Tools.aspx"&gt;HACKINGON.NET My Favourite Tools&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://nhprof.com"&gt;The NHibernate Profiler&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.iis.net/extensions"&gt;IIS Extensions The Official Microsoft IIS Site&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Singularity Watch&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.bornrich.org/entry/smartfaucet-by-ihouse-recognizes-faces-to-adjust-temperature-and-flow"&gt;SmartFaucet By IHouse Recognizes Faces To Adjust Temperature And Flow&lt;/a&gt; - the singularity has to start somewhere, why not a tap? &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.fastcompany.com/blog/ariel-schwartz/sustainability/worlds-first-solar-powered-waterproof-cell-phone"&gt;The World's First Solar-Powered Waterproof Cell Phone&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.deseretnews.com/article/705298649/Universities-will-be-irrelevant.html"&gt;Deseret News Universities will be 'irrelevant' by 2020, Y. professor says&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Books&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.ironpythoninaction.com"&gt;IronPython in Action Front Page&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://geekswithblogs.net/iupdateable/archive/2009/04/20/free-msdn-flash-ebook-with-13-technical-articles-spanning-dynamic.aspx"&gt;FREE MSDN Flash eBook with 13 technical articles spanning dynamic languages to game development to cloud computing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://news.cnet.com/8301-13860_3-10223089-56.html?part=rss&amp;amp;subj=news&amp;amp;tag=2547-1_3-0-20"&gt;Ballmer, IBM reportedly surprised by Oracle-Sun deal Beyond Binary - CNET News&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.thehive.org.au"&gt;The Hive - business networking for entrepreneurs in Melbourne + Brisbane&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/WCCW7v2deKw" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/05/27/thinkin-infoDose-27-(20th-Apr-28th-Apr).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/05/27/thinkin-infoDose-27-(20th-Apr-28th-Apr).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=a494e6c8-2eea-42bc-8089-3fa907fd75ef</guid>
      <pubDate>Wed, 27 May 2009 20:41:33 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=a494e6c8-2eea-42bc-8089-3fa907fd75ef</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=a494e6c8-2eea-42bc-8089-3fa907fd75ef</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/05/27/thinkin-infoDose-27-(20th-Apr-28th-Apr).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=a494e6c8-2eea-42bc-8089-3fa907fd75ef</wfw:commentRss>
    </item>
    <item>
      <title>#.think.in infoDose #26 (14th Apr - 17th Apr)</title>
      <description>&lt;h3&gt;Development&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.noop.nl/2009/01/100-interview-questions-for-software-developers.html"&gt;100 Interview Questions for Software Developers&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeodor.com/index.cfm/category/Answers%20To%20100%20Interview%20Questions/39"&gt;Answers To 100 Interview Questions&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://mikehadlow.blogspot.com/2009/04/agile-practices-are-not-just-about.html"&gt;Agile practices are not just about management.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.randsinrepose.com/archives/2009/04/15/the_pond.html"&gt;The Pond&lt;/a&gt; - overcoming difficulties with remote working &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Web&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx"&gt;Using jQuery Grid With ASP.NET MVC&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Silverlight/WPF&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/Building-a-Silverlight-Line-Of-Business-Application-Styling-Part-7.2.aspx"&gt;Building a Silverlight Line-Of-Business Application – Styling Part 7.2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://development-guides.silverbaylabs.org/Video/Model-View-View-Model---Silverlight-2"&gt;ViewModel (MVVM) in Raw Silverlight 2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://davidburela.wordpress.com/2009/04/18/slides-from-my-wpf-talk"&gt;Slides from my WPF talk&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;UI Design&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://dzineblog.com/2009/04/50-sites-that-will-help-you-to-become-a-better-designer-part-1.html"&gt;50 Sites That Will Help You To Become a Better Designer&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Utilities&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.ajaxload.info/#preview"&gt;Ajaxload - Ajax loading gif generator&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/asptest/archive/2009/04/09/lightweight-test-automation-framework-april-release.aspx"&gt;Lightweight Test Automation Framework April Release&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Books&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/1934356344?ie=UTF8&amp;amp;tag=sharpthinking-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1934356344"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="164" alt="image" src="file:///C:/Users/Brodie/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles26E5AA1/image3.png" width="111" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.pragprog.com/titles/cfcar2/the-passionate-programmer"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Other&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://money.cnn.com/2009/04/13/technology/gunther_electric.fortune/index.htm"&gt;Why Warren Buffett is investing in electric car company BYD - Apr. 13, 2009&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.canadianmanufacturing.com/designengineering/news/headlinenews/article.jsp?content=20090413_092316_10180"&gt;Researchers develop first flying micro-robot&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.markhneedham.com/blog/2009/04/13/f-a-day-of-writing-a-little-twitter-application"&gt;F# A day of writing a little twitter application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://olabini.com/blog/2009/04/languages-should-die"&gt;Languages should die&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.craigmurphy.com/blog/?p=1417"&gt;Programming Challenge!&lt;/a&gt; - got to learn python &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast158SecretsOfFogCreekWithJoelSpolsky.aspx"&gt;Hanselminutes Podcast 158 - Secrets of Fog Creek with Joel Spolsky&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Quotes&lt;/h3&gt;  &lt;p&gt;&amp;quot;People who cease to grow can't inspire others. Leadership begins with challenging oneself.&amp;quot; ~Daisaku Ikeda&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/WTwp7ir0A0c" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/05/27/thinkin-infoDose-26-(14th-Apr-17th-Apr).aspx</link>
      <author>brodie</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/05/27/thinkin-infoDose-26-(14th-Apr-17th-Apr).aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=0ca4ed7e-bace-44b2-b75e-76637b64df30</guid>
      <pubDate>Wed, 27 May 2009 20:38:58 +0900</pubDate>
      <category>Links</category>
      <dc:publisher>brodie</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=0ca4ed7e-bace-44b2-b75e-76637b64df30</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=0ca4ed7e-bace-44b2-b75e-76637b64df30</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/05/27/thinkin-infoDose-26-(14th-Apr-17th-Apr).aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=0ca4ed7e-bace-44b2-b75e-76637b64df30</wfw:commentRss>
    </item>
    <item>
      <title>IronPython In Action</title>
      <description>&lt;p&gt;
While twittering (or &lt;a href="http://www.googlefight.com/index.php?lang=en_GB&amp;amp;word1=twittering&amp;amp;word2=tweeting"&gt;tweeting&lt;/a&gt;) about an &lt;a href="http://blog.sharpthinking.com.au/post/2009/05/11/IronPython-Presentation.aspx"&gt;IronPython presentation&lt;/a&gt; I was doing, &lt;a href="http://twitter.com/voidspace"&gt;@voidspace&lt;/a&gt; messaged me asking if I might mention his book. I&amp;rsquo;d contacted Michael Foord a while back about &lt;a href="http://code.google.com/p/dynamic-script-control/"&gt;some code&lt;/a&gt; I was playing around with. I also knew of him from his &lt;a href="http://www.voidspace.org.uk/python/index.shtml"&gt;blog&lt;/a&gt;, his prolific contribution to &lt;a href="http://ironpython-urls.blogspot.com/"&gt;IronPythonURLs&lt;/a&gt; and as the co-author of the new book &lt;a href="http://www.manning.com/foord/"&gt;IronPython in Action&lt;/a&gt;. He&amp;rsquo;s so all over everything IronPython he even &lt;a href="http://ironpython-urls.blogspot.com/2009/04/executing-ironpython-in-err-ironpython.html"&gt;reads&lt;/a&gt; this blog. 
&lt;/p&gt;
  
&lt;p&gt;
&lt;a href="http://ironpython-urls.blogspot.com/"&gt;&lt;/a&gt;&lt;a href="http://www.ironpythoninaction.com/"&gt;&lt;img style="border-width: 0px; margin: 5px 15px 5px 0px; display: inline" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/IronPythonInAction/0E2EF0AD/image.png" border="0" alt="image" title="image" width="190" height="242" align="left" /&gt;&lt;/a&gt;Mainly because I was too cheap to buy myself a copy it, I hadn&amp;rsquo;t read his&amp;nbsp; book. I was wrapped when he offered to get me a copy if I&amp;rsquo;d review it on this blog. I wanted to read it as I was learning IronPython and I knew it would be a good book, I&amp;rsquo;d read chapters &lt;a href="http://www.manning.com/foord/SampleChapter1.pdf"&gt;1&lt;/a&gt; and &lt;a href="http://www.manning.com/foord/SampleChapter7.pdf"&gt;7&lt;/a&gt; which are online. I happily recommended it in my presentation, here&amp;rsquo;s what I thought about the book. 
&lt;/p&gt;
  
&lt;p&gt;
&lt;em&gt;IronPython in Action&lt;/em&gt; is a fantastic resource for anyone learning IronPython and for anyone wondering what this dynamic language IronPython is all about and whether they &lt;em&gt;should&lt;/em&gt; learn it. It feels nicely balanced for both .NET users looking to learn about IronPython, and for Python users looking to learn about IronPython on .NET. 
&lt;/p&gt;
  
&lt;p&gt;
I prefer software books that have plenty of discussion and can be read from start to finish otherwise I end up skipping through chapters I never go back too. I found this book well written and fun to read with interesting insight all the way through. There is enough about the python language and .NET to get you through the book, and rather than being a reference book it instead provides information on how to learn more. 
&lt;/p&gt;
  
&lt;p&gt;
The book is divided into four main sections. The first section &lt;em&gt;Getting Started with Iron Python&lt;/em&gt; contains a good introduction and history of IronPython on the .NET Framework. 
&lt;/p&gt;
  
&lt;p&gt;
The &lt;em&gt;Core Development Techniques&lt;/em&gt; section is a walkthrough of building a simple Windows Forms application. I think this section is fantastic as the text places high value on Agile Development philosophy, using a Model-View-Controller pattern and Test Driven Development. I think these are exciting ways to develop software on the .NET framework. There is also a really good section discussing the difficulties, pitfalls and work-arounds using IronPython and dynamic programming languages generally on the .NET framework. 
&lt;/p&gt;
  
&lt;p&gt;
The third section &lt;em&gt;IronPython and Advanced .NET&lt;/em&gt; contains chapters about using the major pillars of the .NET framework with IronPython. It has chapters on WPF, Powershell, ASP.NET, Databases, Webservices and Silverlight. It really is amazing how much of the framework can be used in IronPython. 
&lt;/p&gt;
  
&lt;p&gt;
The final section &lt;em&gt;Reaching Out with IronPython&lt;/em&gt; has fantastic chapters on extending IronPython with C#/VB and embedding an IronPython Engine in C#/VB applications to provide extensibility.
&lt;/p&gt;
  
&lt;p&gt;
I highly recommend this book, I enjoyed reading it and learned a lot from it. If you&amp;rsquo;re looking for a little more insight, the &lt;a href="http://blogs.msdn.com/hugunin/archive/2009/04/14/ironpython-in-action.aspx"&gt;forward by Jim Hugunin&lt;/a&gt; frames the language, the technology and author well.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/1DxhbsIHcAo" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/05/25/IronPython-In-Action.aspx</link>
      <author>tarn</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/05/25/IronPython-In-Action.aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=20dce10f-38d0-4939-91a9-45e84771c733</guid>
      <pubDate>Mon, 25 May 2009 10:39:00 +0900</pubDate>
      <dc:publisher>tarn</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=20dce10f-38d0-4939-91a9-45e84771c733</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=20dce10f-38d0-4939-91a9-45e84771c733</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/05/25/IronPython-In-Action.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=20dce10f-38d0-4939-91a9-45e84771c733</wfw:commentRss>
    </item>
    <item>
      <title>IronPython Presentation</title>
      <description>&lt;p&gt;I’m doing an introduction to IronPython presentation at the Victoria .Net user group tomorrow, I’ve been attending the user group for about a year and I’m pretty excited about presenting. I think python is a fantastic language and it’s great to be able to build software on the .Net framework with it.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;h2&gt;The Slides &lt;/h2&gt;  &lt;table cellspacing="0" cellpadding="2" width="100%" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="210" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/introduction.png" width="280" /&gt;&lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;Introduction&lt;/h4&gt;          &lt;p&gt;I wanted to start with the second slide and have a photo of a pub on the contact slide but decided to get through this before trying out PowerPoint jokes. &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="210" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/why-python.png" width="280" /&gt;&lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;Why Python&lt;/h4&gt; I just plan to discuss &lt;a href="http://blog.sharpthinking.com.au/post/2008/12/28/A-taste-of-Python.aspx"&gt;Why I started using Python.&lt;/a&gt; The cartoon is, of course, &lt;a href="http://xkcd.com/353/"&gt;XKCD&lt;/a&gt;. &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="210" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/python.png" width="280" /&gt;&lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;Python &lt;/h4&gt; Basic information about the language and its background. Would have liked to have added &lt;a href="http://www.python.org/doc/essays/metaclasses/"&gt;meta programming&lt;/a&gt; or at least “..” to the paradigms.           &lt;br /&gt;          &lt;br /&gt;I think it’s a fantastic language so I’ll mention it’s expressive, fun, productive or whatever adjectives I’ve got in my head at the time. &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="210" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/who-uses_it.png" width="280" /&gt;&lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;People using Python&lt;/h4&gt; I really want to demonstrate that Python is real language, being used by real people, to write real code.&amp;#160; &lt;br /&gt;          &lt;br /&gt;I probably should also have mentioned &lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt; here which I’ve been tinkering with a bit recently and think is pretty cool.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="212" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/iron-python.png" width="280" /&gt;&lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;IronPython&lt;/h4&gt;          &lt;p&gt;The Python language on .Net. Most of the demo is doing cool stuff in .Net with the Python language. I think it goes further than this and allows developers to use their own paradigms and patterns to do .NET development. &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="209" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/code-comparision.png" width="280" /&gt; &lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;C# and IronPython comparison&lt;/h4&gt; I saw this example in the awesome &lt;a href="http://www.manning.com/foord/"&gt;Iron Python in Action&lt;/a&gt; book. I included it as it’s a great introduction IronPython code, as it clearly and simply shows differences on similarities with C#. &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="209" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/dynamic-language-runtime.png" width="280" /&gt;&lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;Dynamic Language Runtime&lt;/h4&gt;          &lt;p&gt;The &lt;a href="http://dlr.codeplex.com/"&gt;Dynamic Language Runtime&lt;/a&gt; project is open source. Its quite well &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Language_Runtime"&gt;described here&lt;/a&gt; as:&amp;#160; &lt;/p&gt;          &lt;li&gt;A dynamic &lt;a href="http://en.wikipedia.org/wiki/Type_system"&gt;type system&lt;/a&gt; &lt;/li&gt;          &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Dynamic_dispatch"&gt;Dynamic method dispatch&lt;/a&gt; &lt;/li&gt;          &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Runtime_code_generation"&gt;Dynamic code generation&lt;/a&gt;             &lt;p&gt;&lt;a href="http://www.codeplex.com/IronLisp"&gt;IronLisp&lt;/a&gt; has been superseded by the &lt;a href="http://www.codeplex.com/IronScheme"&gt;IronScheme&lt;/a&gt; project.&lt;/p&gt;         &lt;/li&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="211" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/dynamic-typing.png" width="280" /&gt;&lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;Dynamic Typing &lt;/h4&gt;          &lt;p&gt;This slide is just a brief overview of what &lt;a href="http://en.wikipedia.org/wiki/Duck_typing" target="_blank"&gt;duck typing&lt;/a&gt; is. &lt;/p&gt;          &lt;p&gt;It is great for writing test objects, but I have a slide for the later. &lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img height="209" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/interactive-interpreter.png" width="280" /&gt;&lt;/td&gt;        &lt;td valign="top" width="391"&gt;         &lt;h4&gt;Interactive Interpreter &lt;/h4&gt;          &lt;p&gt;I think it’s awesomely cool, and I use it through the entire demo so I thought it might be worth warning people.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h2&gt;The Demo&lt;/h2&gt;  &lt;p&gt;The demo is a series of scripts run into the IronPython Interactive Console. I’ve uploaded the very small collection of scripts for this demo &lt;a href="http://static.sharpthinking.com.au/2009/iron_python_presentation/demo.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;IronPython and the CLR&lt;/h4&gt;  &lt;p&gt;Create a string, show how its methods can be reflected. Import the CLR and show how the .Net String methods are now available.&lt;/p&gt;  &lt;div&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;# Introduction to IronPython and the CLR&lt;/span&gt;

&lt;span style="color: #008000"&gt;# Standard first Python console command&lt;/span&gt;
2 + 2

&lt;span style="color: #008000"&gt;# Create a string&lt;/span&gt;
s = &lt;span style="color: #006080"&gt;'Hello IronPython'&lt;/span&gt;

&lt;span style="color: #008000"&gt;# Inspect its methods, note that its only Python methods.  &lt;/span&gt;
dir(s)

&lt;span style="color: #008000"&gt;# Python has a method to make the text uppercase&lt;/span&gt;
s.upper()

&lt;span style="color: #008000"&gt;# Import the CLR&lt;/span&gt;
import clr

&lt;span style="color: #008000"&gt;# Now look at the same objects methods,&lt;/span&gt;
&lt;span style="color: #008000"&gt;# We now see the .NET string methods!&lt;/span&gt;
dir(s)

&lt;span style="color: #008000"&gt;# And can use them!&lt;/span&gt;
s.ToUpper()&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static.sharpthinking.com.au/2009/iron_python_presentation/python-and-the-clr.png" target="_blank"&gt;Screen Shot&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Using a .Net Classes&lt;/h4&gt;

&lt;p&gt;Create a &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx"&gt;WebClient&lt;/a&gt; object from the .Net framework to download an RSS feed. Use an xml2py module written by &lt;a href="http://www.devhawk.net/"&gt;Harry Pierson&lt;/a&gt; to deserialise the RSS feed into an object graph. Then send the dates and titles to the &lt;a href="http://msdn.microsoft.com/en-us/library/system.speech.synthesis.speechsynthesizer.aspx"&gt;Speech Synthesizer&lt;/a&gt;. I’ve seen this done before in an IronPython presentation, and just thought it was to much fun to leave out.&amp;#160; &lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;import clr

&lt;span style="color: #008000"&gt;# Create a WebClient and download a string of XML&lt;/span&gt;
from System.Net import WebClient
w = WebClient()
xml = w.DownloadString(&lt;span style="color: #006080"&gt;'http://feeds.theage.com.au/rssheadlines/technology.xml'&lt;/span&gt;)

&lt;span style="color: #008000"&gt;# Lets have a look at first 60 characters of the xml..&lt;/span&gt;
print xml[0:60]

&lt;span style="color: #008000"&gt;# If bad stuff happens in the presentation..&lt;/span&gt;
&lt;span style="color: #008000"&gt;#xml = open('theage.rss').read()&lt;/span&gt;

&lt;span style="color: #008000"&gt;# Deserialize to objects using xml2py&lt;/span&gt;
from devhawk import xml2py
rss = xml2py.parseString(xml)

&lt;span style="color: #008000"&gt;# Print the results&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; post &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; rss.channel.item:
  print post.pubDate, post.title 

&lt;span style="color: #008000"&gt;# Import Speech  &lt;/span&gt;
clr.AddReference(&lt;span style="color: #006080"&gt;'System.Speech'&lt;/span&gt;)
from System.Speech import *
ss = Synthesis.SpeechSynthesizer()

&lt;span style="color: #008000"&gt;# Say titles and dates using the SpeechSynthesizer &lt;/span&gt;
&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; post &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; rss.channel.item:
  s = &lt;span style="color: #006080"&gt;&amp;quot;%s. %s.&amp;quot;&lt;/span&gt; % (post.pubDate[:16], post.title)
  ss.SpeakAsync(s)&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static.sharpthinking.com.au/2009/iron_python_presentation/webclient-xml2py-speech.png"&gt;Screen Shot&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;SQL &lt;/h4&gt;

&lt;p&gt;I really don’t want to do this in the presentation. I did spend a fair amount of time playing round with asynchronous SQL queries for use in a WPF application, but it seemed too complicated for the demo so I’ve left it out. I use &lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;# import a simple wrapper around System.Data.SqlClient  &lt;/span&gt;
&lt;span style="color: #008000"&gt;# the wrapper is on my blog, I just wanted to show the AdventureWorks &lt;/span&gt;
&lt;span style="color: #008000"&gt;# database, it seems a bit of .NET presentation tradition. &lt;/span&gt;
from demo import sql

&lt;span style="color: #008000"&gt;# setup a query on the AdventureWords database&lt;/span&gt;
query = &lt;span style="color: #006080"&gt;'SELECT * FROM Production.Product'&lt;/span&gt;
sql.connection = &lt;span style="color: #006080"&gt;'Data Source=localhost\SQLEXPRESS;Initial Catalog=AdventureWorks;Integrated Security=SSPI;'&lt;/span&gt;

&lt;span style="color: #008000"&gt;# execute the query&lt;/span&gt;
products = sql.SqlQuery(query)

&lt;span style="color: #008000"&gt;# print some results&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; p &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; products[:5]:
  print p.Name&lt;/pre&gt;
&lt;/div&gt;

&lt;h4&gt;&amp;#160;&lt;/h4&gt;

&lt;h4&gt;WPF, Data Binding and Exec &lt;/h4&gt;

&lt;p&gt;I think there is some pretty cool stuff in this demo. Although it takes a lot more to write real applications it does open new ways to develop and test .Net applications.&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;# More pythonic way of getting the feed.. lets hope I have internet&lt;/span&gt;
from devhawk import xml2py
rss = xml2py.parse(&lt;span style="color: #006080"&gt;'http://feeds.theage.com.au/rssheadlines/technology.xml'&lt;/span&gt;)

&lt;span style="color: #008000"&gt;# Importing avalon starts a new thread to run the WPF application&lt;/span&gt;
&lt;span style="color: #008000"&gt;# It sets up some dispatures so the console can talk to the GUI &lt;/span&gt;
from samples import avalon

&lt;span style="color: #008000"&gt;# Create a window, show it and load some XAML into it&lt;/span&gt;
w = avalon.Window()
w.Show()
xaml = avalon.LoadXaml(&lt;span style="color: #006080"&gt;'demo.xaml'&lt;/span&gt;)
w.Content = xaml

&lt;span style="color: #008000"&gt;# Loading names is really cool, it traverses the control tree &lt;/span&gt;
&lt;span style="color: #008000"&gt;# described in the XAML and creates a dictionary of names and &lt;/span&gt;
&lt;span style="color: #008000"&gt;# controls. We can add those dictionary items to the local scope,&lt;/span&gt;
&lt;span style="color: #008000"&gt;# so we get the same effect as a generated designer files in&lt;/span&gt;
&lt;span style="color: #008000"&gt;# Visual Studio. &lt;/span&gt;
avalon.LoadNames(xaml,locals())

&lt;span style="color: #008000"&gt;# We can bind a Python list of Python objects to the ListView&lt;/span&gt;
listView.ItemsSource = rss.channel.item

&lt;span style="color: #008000"&gt;# Create a button click callback that will execute the script&lt;/span&gt;
&lt;span style="color: #008000"&gt;# in the query TextBox.&lt;/span&gt;
def OnClick(*args):
  try:
    exec (query.Text)
  except:
    print &lt;span style="color: #006080"&gt;&amp;quot;Script threw an exception&amp;quot;&lt;/span&gt;
  pass  

&lt;span style="color: #008000"&gt;# Wire up the click event to our function  &lt;/span&gt;
execute.Click += OnClick
  
&lt;span style="color: #008000"&gt;# We can now execute this on the client  &lt;/span&gt;
listView.ItemsSource = [p &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; p &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; rss.channel.item &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; p.title.find(&lt;span style="color: #006080"&gt;'to'&lt;/span&gt;) &amp;gt;= 0]&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static.sharpthinking.com.au/2009/iron_python_presentation/execute-statements-databinding.png" target="_blank"&gt;Screen Shot&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;More Slides&lt;/h2&gt;

&lt;table cellspacing="0" cellpadding="2" width="100%" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="200"&gt;&lt;img height="210" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/testing-in-python.png" width="280" /&gt;&lt;/td&gt;

      &lt;td valign="top" width="423"&gt;
        &lt;h3&gt;Testing in Python&lt;/h3&gt;

        &lt;p&gt;It’s really cool you can do true test driven development in that you can write unit tests for classes and methods that haven’t yet been written. Some cool GUI testing is also possible using some the stuff in this presentation.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top" width="200"&gt;&lt;img height="211" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/tools-sdks.png" width="280" /&gt;&lt;/td&gt;

      &lt;td valign="top" width="423"&gt;
        &lt;h3&gt;Tools / SDKs&lt;/h3&gt;
I’m not expecting to mention &lt;a href="www.codeplex.com/IronPythonStudio"&gt;Python Studio&lt;/a&gt; or &lt;a href="http://github.com/devhawk/ipydbg/tree/master"&gt;IpyDbg&lt;/a&gt; as I’ll probably be running out of time. 

        &lt;br /&gt;I really should have included a link to &lt;a href="http://www.python.org/"&gt;python.org&lt;/a&gt;, I’ll make sure I mention it. 

        &lt;br /&gt;You can get &lt;a href="www.codeplex.com/IronPython" target="_blank"&gt;IronPython here&lt;/a&gt; and the &lt;a href="www.codeplex.com/sdlsdk" target="_blank"&gt;Silverlight Dynamic Languages SDK&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top" width="200"&gt;&lt;img height="209" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/resources.png" width="280" /&gt; &lt;/td&gt;

      &lt;td valign="top" width="423"&gt;
        &lt;h3&gt;Resources &lt;/h3&gt;
        &lt;a href="http://www.diveintopython.org/"&gt;Dive Into Python&lt;/a&gt; – Free online, python for programmers. 

        &lt;br /&gt;&lt;a href="www.manning.com/foord/"&gt;IronPython In Action&lt;/a&gt; – Python and everything .NET with TDD and MVC practices. 

        &lt;br /&gt;&lt;a href="http://www.ironpython.info/index.php/Main_Page"&gt;IronPython Cookbook&lt;/a&gt; – Online collection of IronPython .Net scripts. 

        &lt;br /&gt;&lt;a href="http://ironpython-urls.blogspot.com/"&gt;IronPython Urls&lt;/a&gt;, MSDN, 

        &lt;br /&gt;&lt;a href="http://www.devhawk.net/"&gt;Devhawk&lt;/a&gt; – Harry Pierson, Program Manager at Microsoft. 

        &lt;br /&gt;&lt;a href="http://www.voidspace.org.uk/ironpython/index.shtml"&gt;Voidspace&lt;/a&gt; – Michael Foord, Author IronPython in Action.&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top" width="200"&gt;
        &lt;p&gt;&lt;img height="209" src="http://static.sharpthinking.com.au.s3.amazonaws.com/2009/iron_python_presentation/thanks.png" width="280" /&gt;&lt;/p&gt;
      &lt;/td&gt;

      &lt;td valign="top" width="423"&gt;
        &lt;h3&gt;Thanks&lt;/h3&gt;

        &lt;p&gt;By this stage I’ll almost certainly be running late, and probably be really worried about some minor disaster during the presentation.&lt;/p&gt;

        &lt;p&gt;I hope it goes well and everyone takes something out of it, I look forward to hearing what you thought.&lt;/p&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/Xhut6IjGd6I" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/05/11/IronPython-Presentation.aspx</link>
      <author>tarn</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/05/11/IronPython-Presentation.aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=1abe0255-1c90-4f8f-a679-40f9ced82f44</guid>
      <pubDate>Mon, 11 May 2009 10:25:00 +0900</pubDate>
      <dc:publisher>tarn</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=1abe0255-1c90-4f8f-a679-40f9ced82f44</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=1abe0255-1c90-4f8f-a679-40f9ced82f44</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/05/11/IronPython-Presentation.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=1abe0255-1c90-4f8f-a679-40f9ced82f44</wfw:commentRss>
    </item>
    <item>
      <title>Debugging IronPython with my Excalibur</title>
      <description>&lt;p&gt;
My interest in a light-weight command-line debugger developed a while back after I watched one used in a Ruby on Rails video. I suspect there are many .Net developers with more experience than me who have used command line debuggers and never want to go back. The more &lt;em&gt;I&lt;/em&gt; code, the more I long to leave my mouse behind and communicate with my development tools using only my keyboard, &lt;a href="http://en.wikipedia.org/wiki/Excalibur"&gt;Excalibur&lt;/a&gt;.
&lt;/p&gt;
  
&lt;p&gt;
I have been following a series of blogs by the awesome &lt;a href="http://cid-0d9bc809858885a4.profile.live.com/?sa=794422412"&gt;Harry Pierson&lt;/a&gt; (aka &lt;a href="http://devhawk.net"&gt;DevHawk&lt;/a&gt;) on writing an &lt;a href="http://github.com/devhawk/ipydbg/tree/master"&gt;IronPython debugger&lt;/a&gt;. When I decided I actually wanted to play with the debugger, I found myself going back over these blogs taking notes as I went. This post is an attempt to summarize all this information and provide the links for going deeper, for myself if no one else.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/02/27/Writing+An+IronPython+Debugger+Introduction.aspx"&gt;Writing an IronPython Debugger: Introduction&lt;/a&gt;&amp;nbsp; &lt;/h4&gt;  
&lt;p&gt;
Explains why he built a debugger when there are other alternatives. The Visual Studios debugging was required to much mouse clicking, although he has posted about doing that too in &lt;a href="http://devhawk.net/2008/05/08/Debugging+IronPython+Code+In+Visual+Studio.aspx"&gt;Debugging IronPython Code in Visual Studio&lt;/a&gt;. &lt;a href="http://msdn.microsoft.com/en-us/library/ms229861.aspx"&gt;MDbg&lt;/a&gt; which is a .Net Command Line Debugger doesn&amp;rsquo;t support &lt;a href="http://blogs.msdn.com/jmstall/archive/2004/12/31/344832.aspx"&gt;Just My Code&lt;/a&gt; debugging. He also notes the reason for not using/porting &lt;a href="http://docs.python.org/library/pdb.html"&gt;pdb (The Python Debugger)&lt;/a&gt; is due to IronPython not yet implementing &lt;a href="http://docs.python.org/library/sys.html#sys.settrace"&gt;settrace&lt;/a&gt;.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/02/27/Writing+An+IronPython+Debugger+MDbg+101.aspx"&gt;Writing an IronPython Debugger: MDbg 101&lt;/a&gt;&amp;nbsp;&lt;/h4&gt;  
&lt;p&gt;
Describes the basics of &lt;a href="http://msdn.microsoft.com/en-us/library/ms229861.aspx"&gt;MDbg&lt;/a&gt;. I found it interesting there is also an &lt;a href="http://blogs.msdn.com/jmstall/archive/2005/08/31/Mdbg_Python_ext.aspx"&gt;IronPython extension for MDbg&lt;/a&gt; which isn&amp;rsquo;t for debugging IronPython code, but to interact with MDbg using IronPython. Sounds cool, I&amp;rsquo;ll have check it out some time.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/02/28/Writing+An+IronPython+Debugger+Hello+Debugger.aspx"&gt;Writing an IronPython Debugger: Hello, Debugger!&lt;/a&gt;&amp;nbsp;&lt;/h4&gt;  
&lt;p&gt;
Goes over the worlds simplest debugger, and it really is pretty straight forward. It just passes the path of ipy.exe and the python code to debug as a parameter into CorDebug (provided by MDbg). CorDebug starts the process (it can be used to debug any .Net process) and provides some events to hook into; OnCreateAppDomain and OnProcessExit. The world simplest debugger basically just prints some text when the AppDonain is starts and stops.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/02/Writing+An+IronPython+Debugger+Setting+A+Breakpoint.aspx"&gt;Writing an IronPython Debugger: Setting a Breakpoint&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Provides some background information:
&lt;/p&gt;
  
&lt;ul&gt;
	   
	&lt;li&gt;ipy.exe produces debug information when the &amp;ndash;D parameter is used. &lt;/li&gt;    
	&lt;li&gt;IL generation is dynamic and in memory so the debugger API provides the Symbols (equivalent to &lt;a href="http://msdn.microsoft.com/en-us/library/ms241903.aspx"&gt;.pdb files&lt;/a&gt;) as a Stream and has &lt;a href="http://msdn.microsoft.com/en-us/library/ms230148.aspx"&gt;a callback when the Symbols change&lt;/a&gt;. &lt;/li&gt;    
	&lt;li&gt;The .Net framework has &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.symbolstore.aspx"&gt;an API to read and write these symbols&lt;/a&gt; a files and MDbg provides a &lt;a href="http://github.com/devhawk/ipydbg/blob/5858695ff85ed4740ad06466d4f54394e7f00f9b/CorDebug/CorSymbolStore/symbinder.cs"&gt;wrapper&lt;/a&gt; to read them from a Stream. &lt;/li&gt; 
&lt;/ul&gt;
  
&lt;p&gt;
Then covers the python code to load the symbols, translate document/line into a function/offset, set a breakpoint. Does not implement user defined breakpoints in the post.&amp;nbsp; 
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/04/Writing+And+IronPython+Debugger+Adding+Interactivity.aspx"&gt;Writing and IronPython Debugger: Adding Interactivity&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Covers the basics of how the interactivity will happen, which I&amp;rsquo;ve just realized isn&amp;rsquo;t that complicated. The process being debugged just runs until a breakpoint event occurs (or the symbols change or the process completes). Once the process has stopped the the breakpoint the interactivity can occur. It would be nice to be able to set breakpoints while the process is running, but it does keep it more simple for now.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/09/Writing+An+IronPython+Debugger+Dynamic+Stack+Trace.aspx"&gt;Writing an IronPython Debugger: Dynamic Stack Trace&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Background info on MDbg:
&lt;/p&gt;
  
&lt;ul&gt;
	   
	&lt;li&gt;Two &lt;a href="http://msdn.microsoft.com/en-us/library/ms233401.aspx"&gt;stack chains&lt;/a&gt; in a typical managed app; unmanaged and managed. The debugger for managed code so only the managed chain used &lt;/li&gt;    
	&lt;li&gt;Each contains a collection of &lt;a href="http://msdn.microsoft.com/en-us/library/ms230151.aspx"&gt;stack frames&lt;/a&gt; which is the familiar call stack. There are three types of stack frame; IL, native and internal. &lt;/li&gt;    
	&lt;li&gt;Explains &lt;a href="http://msdn.microsoft.com/en-us/library/system.reflection.emit.dynamicmethod.aspx"&gt;Dynamic Methods&lt;/a&gt; are usually used created by IronPython but can&amp;rsquo;t be debugged and are implemented as non-dynamic methods when the &amp;ndash;D option is set on ipy.exe.&amp;nbsp; &lt;/li&gt; 
&lt;/ul&gt;
  
&lt;p&gt;
MDbg has a wrapper around the &lt;a href="http://devhawk.net/ct.ashx?id=48c4a70d-e243-43e5-9709-85d2119c592b&amp;amp;url=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2flibrary%2fms404384.aspx"&gt;unmanaged metadata API&lt;/a&gt; to get method information for displaying the call stack. 
&lt;/p&gt;
  
&lt;p&gt;
The command in ipydbg is used to view the trace from the interactive console is &amp;ldquo;T&amp;rdquo;. 
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/12/Writing+An+IronPython+Debugger+Refactoring.aspx"&gt;Writing an IronPython Debugger: Refactoring&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Mostly discussion about code changes and refactoring. Add code to automatically generate the MTA apartment state if the &amp;ndash;X:MTA argument is not used. Explains the effect of this on the debugger design.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/13/Writing+An+IronPython+Debugger+Stepping+Thru+Code.aspx"&gt;Writing an IronPython Debugger: Stepping Thru Code&lt;/a&gt;&lt;/h4&gt;    
&lt;p&gt;
Introduces console commands for step (S), step in (I), step out (O)
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/13/Writing+An+IronPython+Debugger+Debugging+Just+My+Code.aspx"&gt;Writing an IronPython Debugger: Debugging Just My Code&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Skipped over this one, and feel I may start skipping over a few where I&amp;rsquo;m not specially interested in the implementation. I can always refer back to them later if I really need to understand something.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/19/Writing+An+IronPython+Debugger+Showing+Source+Code.aspx"&gt;Writing an IronPython Debugger: Showing Source Code&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Describes an issue when stepping into a Python function the CLR breaks at some infrastructure code, presumably there to manage Pythons decorators and such. Hence there is no line of user code to display. To resolve this an additional automatic step is added when stepping into a function so it can be mapped to a line of user code. 
&lt;/p&gt;
  
&lt;p&gt;
To avoid multiple hits to the file system source files used to retrieve user code are cached.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/19/Writing+An+IronPython+Debugger+Colorful+Console.aspx"&gt;Writing an IronPython Debugger: Colorful Console&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Describes how he choose to implement colors in the console, while bemoaning the stateful nature of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.console.foregroundcolor.aspx"&gt;console foreground colours&lt;/a&gt; (ie when you change the foreground colour it will stay that way until you change it back). I&amp;rsquo;m sure I&amp;rsquo;ll come back to this post when I want to add colours to the console but for now I skipped through it, it doesn&amp;rsquo;t have much to do with writing or using an IronPython debugger. I guess that&amp;rsquo;s why he discusses moving it out of the ipydbg and into its &lt;a href="http://devhawk.net/2009/03/19/IronPython+ConsoleColorMgr.aspx"&gt;own module&lt;/a&gt; in his next post.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/21/Writing+An+IronPython+Debugger+A+Little+HackhelliperrhellipCleanup.aspx"&gt;Writing an IronPython Debugger: A Little Hack&amp;hellip;err&amp;hellip;Cleanup&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Discusses some issues regarding mapping to the debugger COM object instance. This didn&amp;rsquo;t sound like a whole log of fun and I hope I don&amp;rsquo;t have to come back and fully understand this one.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/25/Writing+An+IronPython+Debugger+Getting+Local+Variables.aspx"&gt;Writing an IronPython Debugger: Getting Local Variables&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Uses the &lt;a href="http://devhawk.net/ct.ashx?id=c693512a-3698-478f-a95e-20d1be919b67&amp;amp;url=http%3a%2f%2fgithub.com%2fdevhawk%2fipydbg%2fblob%2f442527b0aed3ac2f7ecf6ab8f5f7e93ad03090f2%2fCorDebug%2fCorDebug%2fThread.cs%23L448"&gt;GetLocalVariable(int index)&lt;/a&gt; and &lt;a href="http://devhawk.net/ct.ashx?id=c693512a-3698-478f-a95e-20d1be919b67&amp;amp;url=http%3a%2f%2fgithub.com%2fdevhawk%2fipydbg%2fblob%2f442527b0aed3ac2f7ecf6ab8f5f7e93ad03090f2%2fCorDebug%2fCorDebug%2fThread.cs%23L475"&gt;GetLocalVariablesCount()&lt;/a&gt; methods from the MDbg CorFame class. This post finally made me look up what lexical scoping meant, its a term I&amp;rsquo;ve heard heaps usually in discussions about compilers that I never really understood. Its fair to say that I still not confident in my understanding of it.
&lt;/p&gt;
  
&lt;p&gt;
Discusses matching up debug symbols with variable names from the user code. Doesn&amp;rsquo;t actually evaluate the variable in this post. Notes get_locals from the IronPython process emits some locals used internally, these are prefixed with a dollar sign. 
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/03/31/Writing+An+IronPython+Debugger+Displaying+Values.aspx"&gt;Writing an IronPython Debugger: Displaying Values&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
This post covers some pretty tricky interfaces for dealing with all the different types, which requires a pretty good understand of how the CLR handles variables under the cover. I didn&amp;rsquo;t read into to much detail but will consider revisiting it later as the content is quite interesting and it&amp;rsquo;s good to understand core CLR stuff.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/04/01/Writing+An+IronPython+Debugger+Command+Routing.aspx"&gt;Writing an IronPython Debugger: Command Routing&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Discusses how console commands are routed to functions. This really has nothing to do with debugging IronPython but it&amp;rsquo;s interesting the way it&amp;rsquo;s implemented. He starts by implementing a switch using a dictionary of input commands and functions (Python has no C# switch keyword equivalent). He then takes it further by making use of Python &lt;a href="http://www.python.org/dev/peps/pep-0318/"&gt;decorators&lt;/a&gt; to bind commands to functions.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/04/06/Writing+An+IronPython+Debugger+Getting+Arguments.aspx"&gt;Writing an IronPython Debugger: Getting Arguments&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Discusses getting function arguments as locals.
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/04/06/Writing+An+IronPython+Debugger+REPL+Console.aspx"&gt;Writing an IronPython Debugger: REPL Console&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Discusses implementing a &lt;a href="http://en.wikipedia.org/wiki/REPL"&gt;REPL&lt;/a&gt; console in the debugger with the IPyDebugProcess object available in the console scope. This is awesome for exploring the API using python, just by reflecting the methods of the process object I realised it would be trivial to add a command to list the source files currently being debugged as it&amp;rsquo;s just a property on the object. Explorative coding using reflection is a really powerful concept in Python.&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;
  
&lt;p&gt;
In the current implementation is a new local scope is created and used by the by the REPL console, it does not yet support executing code in the process being debugged. 
&lt;/p&gt;
  
&lt;h4&gt;&lt;a href="http://devhawk.net/2009/04/08/Writing+An+IronPython+Debugger+Breakpoint+Management.aspx"&gt;Writing an IronPython Debugger: Breakpoint Management&lt;/a&gt;&lt;/h4&gt;  
&lt;p&gt;
Implements console commands for setting Breakpoints, as the original post was about how it worked and only implemented breaking on the first line of the user code. Introduces multi-key commands for breakpoints. Adds a breakpoint function (B) with sub functions add (A), list (L), enable (E), disable (D).
&lt;/p&gt;
  
&lt;p&gt;
Here&amp;rsquo;s a screenshot of me debugging a really simple app which might help explain what I&amp;rsquo;ve been talking about for this whole post.
&lt;/p&gt;
  
&lt;p&gt;
&lt;a href="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/23d5b9f8300a/4706A6C0/image.png"&gt;&lt;img style="border-width: 0px; display: inline" src="http://blog.sharpthinking.com.au/image.axd?picture=WindowsLiveWriter/23d5b9f8300a/4411420D/image_thumb.png" border="0" alt="image" title="image" width="536" height="581" /&gt;&lt;/a&gt; 
&lt;/p&gt;
  
&lt;p&gt;
I&amp;rsquo;m pretty amazed by the productivity and brilliance of Harry Pierson, I&amp;rsquo;ve learned heaps reading &lt;a href="http://devhawk.net/"&gt;his blogs&lt;/a&gt; and I&amp;rsquo;m really impressed by the progress he&amp;rsquo;s making with IpyDbg. The debugger still has a long way to being a really useful tool, but its coming along very quickly. I think I will have to try using MDbg with the Python extensions, but I really hope to make some use of ipydbg and maybe even find something I can contribute to it. 
&lt;/p&gt;
  
&lt;p&gt;
If your interested in trying out the debugger I recommend checking &lt;a href="http://devhawk.net/"&gt;his blog&lt;/a&gt; and the &lt;a href="http://github.com/devhawk/ipydbg/tree/master"&gt;latest version&lt;/a&gt; of the project on GitHub.&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/sharpthinking/~4/EQOgTkfAv6Y" height="1" width="1"/&gt;</description>
      <link>http://blog.sharpthinking.com.au/post/2009/04/11/Debugging-IronPython-with-my-Excalibur.aspx</link>
      <author>tarn</author>
      <comments>http://blog.sharpthinking.com.au/post/2009/04/11/Debugging-IronPython-with-my-Excalibur.aspx#comment</comments>
      <guid>http://blog.sharpthinking.com.au/post.aspx?id=6453742a-069e-4787-bb07-0a8f7eda4265</guid>
      <pubDate>Sat, 11 Apr 2009 10:50:00 +0900</pubDate>
      <dc:publisher>tarn</dc:publisher>
      <pingback:server>http://blog.sharpthinking.com.au/pingback.axd</pingback:server>
      <pingback:target>http://blog.sharpthinking.com.au/post.aspx?id=6453742a-069e-4787-bb07-0a8f7eda4265</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.sharpthinking.com.au/trackback.axd?id=6453742a-069e-4787-bb07-0a8f7eda4265</trackback:ping>
      <wfw:comment>http://blog.sharpthinking.com.au/post/2009/04/11/Debugging-IronPython-with-my-Excalibur.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.sharpthinking.com.au/syndication.axd?post=6453742a-069e-4787-bb07-0a8f7eda4265</wfw:commentRss>
    </item>
  </channel>
</rss>
