<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Jay Kimble</title>
        <link>http://theruntime.com/blogs/jaykimble/Default.aspx</link>
        <description>The Dev Theologian</description>
        <language>en-US</language>
        <copyright>Jay Kimble</copyright>
        <managingEditor>jkimble@gmail.com</managingEditor>
        <generator>Subtext Version 1.9.5.0</generator>
        <image>
            <title>Jay Kimble</title>
            <url>http://theruntime.com/blogs/images/RSS2Image.gif</url>
            <link>http://theruntime.com/blogs/jaykimble/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>&amp;quot;Subsonic&amp;quot; for Services found: Subsonic 3 + ADO.NET Data Services (Astoria)</title>
            <category>Architecture</category>
            <category>ASP.Net</category>
            <category>C#</category>
            <category>Components and tools</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/11/18/quotsubsonicquot-for-services-found-subsonic-3--ado.net-data-services.aspx</link>
            <description>&lt;p&gt;About a month ago if you asked me what was big in my dev world (in other words what are you looking for).  I would have promptly told you that I was looking for the "Subsonic" of services. In other words I wanted to create a database and hook a connection string and have everything generated for me... I want drop dead simple. &lt;/p&gt;  &lt;p&gt;Astoria was as close as I could get, but it didn’t quite achieve what I was looking for. Don’t get me wrong, it’s easy enough. I’m just not sure what I think of EF yet which is not to say that I don’t like it... just that I sometimes want something simple. &lt;a href="http://theruntime.com/blogs/devprime/archive/2008/10/31/linq-to-sql-takes-a-back-seat-to-ef.aspx"&gt;Rob Teixeira has noted&lt;/a&gt; that for some there are "too many knobs." I’d have to say I’m somewhat in that camp (although I’m not very informed either and I’m not a huge lover of Linq to SQL either).&lt;/p&gt;  &lt;p&gt;I love the simplicity of Subsonic. I really do, and I really want to leverage something that simple for building a Data Service. &lt;a href="http://blog.wekeroad.com/"&gt;Rob Conery&lt;/a&gt; (I love Rob... You can have ScottHa or Haacked... I’ll take Conery... He’s my hero!) recently released a &lt;a href="http://blog.wekeroad.com/blog/subsonic-3-0-preview-1-linq-has-landed/"&gt;preview&lt;/a&gt; of &lt;a href="http://blog.wekeroad.com/blog/subsonic-3-0-preview-2/"&gt;Subsonic&lt;/a&gt; &lt;a href="http://blog.wekeroad.com/blog/subsonic-3-0-repository-template-update/"&gt;3.0&lt;/a&gt; which is fully Linq-Queryable and also has the normal Subsonic Query engine... it’s the best of all worlds (except it’s not backwards compatible).&lt;/p&gt;  &lt;p&gt;Since my readings from John Papa’s book taught me that Astoria doesn’t need an EF model that regular classes could work, and I have a personal project that could use an easier more service friendly manner of editing/viewing data, I decided to try this out. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.wekeroad.com/blog/subsonic-3-0-preview-1-linq-has-landed/"&gt;Preview 1&lt;/a&gt; was an abysmal failure. Well, to be fair I quit because &lt;a href="http://blog.wekeroad.com/blog/subsonic-3-0-preview-2/"&gt;Preview 2&lt;/a&gt; came out. I stuck with Preview 2 and earlier today I got it all working.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Here’s how to do it. #1 follow Rob’s instructions (on any of the links I’ve provided and get Subsonic stuff working). I did all this in a separate DLL project. &lt;/li&gt;    &lt;li&gt;Create a regular web site (or web project)      &lt;ol&gt;       &lt;li&gt;make sure there is a connection string in the web.config that has the same name as the "ProviderName" variable in the _Settings.tt file &lt;/li&gt;        &lt;li&gt;Add an ADO.NET Data Service to your web site/project. &lt;/li&gt;        &lt;li&gt;Add this attribute to your service class          &lt;br /&gt;          &lt;div&gt;           &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)] &lt;/pre&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/li&gt;

      &lt;li&gt;Next set the DataService T type to the "DB" class of your Subsonic generated class. It will look something like this: 
        &lt;br /&gt;

        &lt;div&gt;
          &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; NorthwindService : DataService&amp;lt;Northwind.DB&amp;gt;&lt;/pre&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Tada! You are done... 
    &lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;A couple notes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both Preview 1 and 2 build a class model that exposes an object/class called "DB." Think of this class as "Context" (even though EF and Linq2SQL context classes do a lot more). For the sake of Astoria, you just need a class that exposes all your entities in an IQueryable manner (which "DB" will do). &lt;/p&gt;

&lt;p&gt;I ran into one error that was messing me up. If you make name of your Primary Key IDs "ID" then everything in the above worked fine. If it didn’t I am going to provide an alternate set of templates (TT files) for you to use. What’s missing is that Astoria expects an "ID" property. You can get around this by tagging each entity class with &lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;[System.Data.Services.Common.DataServiceKey(&lt;span style="color: #006080"&gt;"{tablename_id}"&lt;/span&gt;)]  &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This also means that you have to include the System.Data.Services.Client.DLL in your Subsonic project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My TT files (based on Preview 2)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I added a new variable in _Settings.tt that let’s you turn off the attribute used for setting the PK in your entity classes. It’s called "EnableForUseWIthAstoria." Here they are : &lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:790b3f88-9cba-4ebf-970f-77ac9dffcc17" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;p&gt; &lt;a href="http://theruntime.com/blogs/images/theruntime_com/blogs/jaykimble/WindowsLiveWriter/SubsonicforServic.NETDataServicesAstoria_BFCF/Subsonic3%20preview%202%20Astoria%20Ready%20TT.zip" target="_blank"&gt;Subsonic3 preview 2 Astoria Ready Templates&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;Closing thoughts&lt;/p&gt;

&lt;p&gt;With all this in hand you should be able to create Astoria Services with any DB that Subsonic supports (which I believe is a larger number than what EF currently supports.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Additionally, like Rob Conery, I want to stress this is all experimental. This code might run off with your wife, children, it might decide to use your PC late at night to play video games thereby increasing your electricity, etc. (in other words this is all experimental right now... have fun with it, and be careful ... you probably don’t want to use it for live/mission critical code).&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2718.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/11/18/quotsubsonicquot-for-services-found-subsonic-3--ado.net-data-services.aspx</guid>
            <pubDate>Tue, 18 Nov 2008 19:02:26 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2718.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/11/18/quotsubsonicquot-for-services-found-subsonic-3--ado.net-data-services.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2718.aspx</wfw:commentRss>
        </item>
        <item>
            <title>TUX: Update...</title>
            <category>TUX</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/11/13/tux-update.aspx</link>
            <description>&lt;p&gt;Last night we had a fabulous night at TUX. I really think we are starting to hit stride now. Shawn Cady (our resident Dev-signer) did a fantastic presentation on using heatmaps for UX analysis. Before launching into this demo he decided to do a fabulous overview of UX. His thoughts echoed my own as I was planning on having an open discussion on this very topic. &lt;/p&gt;  &lt;p&gt;I would be remiss if I missed mentioning that Marc Aniol followed up with a demonstration of Astoria (ADO.NET Data Services) being used with MS Ajax Templates (and Virtual Earth, and a little jQuery). It was very natural for Marc to frame his very practical demo in light of UX.&lt;/p&gt;  &lt;p&gt;Don’t worry if you missed Shawn’s talk, we’re planning on revisiting this topic in January (that’s right &lt;em&gt;&lt;strong&gt;we are taking the month of December off&lt;/strong&gt;&lt;/em&gt;). If you came the first week and haven’t come back, you need to come back. Why? Last night was the first night that I felt like we addressed some of the issues with the first night (like "what was I/Jay thinking doing a hardcore JS discussion for the first meeting?") Seriously, I am very excited about TUX and not just as a I guy helping to run it.&lt;/p&gt;  &lt;p&gt;Our plan is to record the follow up "What is UX?" session and make it available on our &lt;a href="http://www.tampaux.org"&gt;TUX user group site&lt;/a&gt;. After that we will require all speakers to review this video and to put their talk into context of this discussion (of course, this isn’t a hard rule... we’ll always help the speaker frame their talk).&lt;/p&gt;  &lt;p&gt;What we are about at TUX is exploring this topic of User Experience, and trying to learn together how we can all do a better job of making our apps friendlier to our users and provide a decent experience to them. &lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2713.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/11/13/tux-update.aspx</guid>
            <pubDate>Thu, 13 Nov 2008 17:28:31 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2713.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/11/13/tux-update.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2713.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Multiple threads to improve UX (User Experience)</title>
            <category>.NET</category>
            <category>AJAX</category>
            <category>Architecture</category>
            <category>Technology</category>
            <category>TUX</category>
            <category>Weird Ideas</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/11/11/multiple-threads-to-improve-ux-user-experience.aspx</link>
            <description>&lt;p&gt;Shawn (of &lt;a href="http://www.tampaux.org"&gt;TUX&lt;/a&gt; -- BTW, we have a TUX meeting coming up tomorrow night) pointed me to a pretty cool article yesterday. It’s the End Bracket in this months MSDN Magazine. You can read it online &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc872850.aspx"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Perry (my boss and also of &lt;a href="http://www.tampaux.org"&gt;TUX&lt;/a&gt;) and I have been talking about some things related to our ASP.NET app’s reporting module (among other things) that additionally got me thinking.&lt;/p&gt;  &lt;p&gt;This is pure theory (and potentially a really strange idea)... I admit this up front, but I’m going to throw it out for all to see (and potentially make fun of or to improve on). &lt;/p&gt;  &lt;p&gt;The idea (in case you are skipping the MSDN article) is this: if we could predict what the user will do next we could fire up a thread and attempt to pre-load the result into a cache before it is even requested, so that when it is requested we could immediately respond to the user with a result. If the user doesn’t request the item, we can simply throw away the result. &lt;/p&gt;  &lt;p&gt;What this does for the UX is that our UIs seems very fast because they are predicting exactly what the user will do. BTW, that Windows OS that no one likes (and is lampooned by the Mac commercials) does this; from what I understand it does things to try to predict what you will do next (and acts accordingly). For Windows/Desktop apps this stuff is easily accessible and used... for web apps not so much (read on).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Caveats of Background Threads with Web Server processes&lt;/strong&gt;    &lt;br /&gt;[WARNING: Before I continue, by no means am I threading guru. I understand enough to actually talk about the topic. Beyond playing with PLINQ at a very minimal level, I have never written an app that triggered background threads, so understand that like many things I am NOT an expert... just a mad scientist playing with forces he doesn’t fully understand &amp;lt;wink /&amp;gt;]&lt;/p&gt;  &lt;p&gt;Here’s the problem (as I understand it... you are welcome to correct me and I will be more than happy to correct this section). If you attempt (and I’m not sure that you can without much effort) to spin off a thread from an ASP.NET server process that thread will die the moment that the web request is complete, so you either have to wait for your thread to complete before ending the web request (not really a viable option when the idea is to pre-load something and get it later) or you have to figure out how to spawn that thread into its own process which will live until it completes (my brain starts swirling at this point... something about App Domains and other stuff... bottom line is that it doesn’t work directly from an ASP.NET process).&lt;/p&gt;  &lt;p&gt;This is a problem I have found interesting, but have never really devoted a lot of brain cycles to because I haven’t had a use/need for it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Jay’s Crazy Background Loader Service Idea (very early in my thought processes)&lt;/strong&gt;    &lt;br /&gt;What we need is a Windows Service whose entire job is to execute background tasks for the ASP.NET. It would share our data model or any other library that our web server would use except that it would only be used for loading data into the cache and would be thrown away after a specified period of time (or if the user chose a different path your web app could clean up the cache). What would really help this thing out would be to use MS Velocity or memcached so that the ASP.NET app and the Windows Service shared the same cache area (and distribute it over several machines.. if you have them) [BTW, if you haven’t researched distributed memory cache mechanism you would be wise to do so sooner than later... I’m really impressed with the idea, and the effect they have on apps --at least what I’ve read about them-- is truly impressive]. &lt;a href="http://theruntime.com/blogs/images/theruntime_com/blogs/jaykimble/WindowsLiveWriter/MultiplethreadstoimproveUXUserExperience_B13D/ASP.Net%20ThreadService_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="340" alt="ASP.Net ThreadService [Wow! a diagram!]" src="http://theruntime.com/blogs/images/theruntime_com/blogs/jaykimble/WindowsLiveWriter/MultiplethreadstoimproveUXUserExperience_B13D/ASP.Net%20ThreadService_thumb.png" width="660" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Anyway, you have the diagram now of what’s in my head&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Alternatives -- Ajax mechanisms&lt;/strong&gt;    &lt;br /&gt;Since Ajax does async processing we could also do something like this with pure JS code. Simply by calling services we could predict the user’s actions and load the data in memory and simply use it when the user requested it. The only problem with this that I see is that while modern day JS still sometimes seems fraught with memory leaks and memory heavy clientscript apps sound a little scary to me. I think it’s doable, but you are definitely going to want to minimize the amount of data you would want to load. This really brings us to a bigger question...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How liberal do you get with "pre-loading"?&lt;/strong&gt;    &lt;br /&gt;The more I think about all this the more I start to ponder how often would one do this. Should it be done only with the long running processes (those database queries that take more than a few seconds)? Is it OK to use it with smaller datasets (faster running database selects). Obviously we don’t pre-run database updates as that would be really bad IMO, but long running updates could be tossed into the same threading mechanism (and return quickly as long as the app didn’t need an ID back from the process. Should you load up every GB of memory your machine has? What if your web site gets popular and you are encountering hundreds of hits a minute? It’s a good problem to have, but maybe it creates bigger problems. Maybe creating a farm of machines whose purpose is to run background threads and have a central controller to direct the web app to the next machine to run a process on. It’s something to ponder. Not sure if its quite viable for ASP.NET (but I sure would like to try it... at least in a simple scenario where pre-loading the data will always net a result that is needed later).&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2711.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/11/11/multiple-threads-to-improve-ux-user-experience.aspx</guid>
            <pubDate>Tue, 11 Nov 2008 21:02:00 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2711.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/11/11/multiple-threads-to-improve-ux-user-experience.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2711.aspx</wfw:commentRss>
        </item>
        <item>
            <title>PDC2008: Reactions to ASP.NET 4.0 upcoming features presentation</title>
            <category>AJAX</category>
            <category>ASP.Net</category>
            <category>MS Ajax</category>
            <category>MS ASP.NET Ajax Extensions</category>
            <category>Technology</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/10/30/pdc2008-reactions-to-asp.net-4.0-upcoming-features-presentation.aspx</link>
            <description>&lt;p&gt;I’m listening/watching this &lt;a href="http://channel9.msdn.com/pdc2008/PC20/"&gt;video&lt;/a&gt; on Channel9 which is on the ASP.NET 4.0 preview. Scott Hunter is the main presenter (at least at the beginning). This will probably be a little different of a post by me...&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Web Forms&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Did he say "HTML Standards Compliant?" (cool!)&lt;/li&gt;      &lt;li&gt;ClientIDs will be controlled by us (no more mangling... Hurray!)&lt;/li&gt;      &lt;li&gt;Moving away from table-based controls and using CSS2 adapters (sort of... invisibly)&lt;/li&gt;      &lt;li&gt;URL Routing (yawn... We have this in SP1... It’ll probably be easier to use)&lt;/li&gt;      &lt;li&gt;Supposedly better View-state controls (I’m dubious about this)&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;More granular control&lt;/li&gt;        &lt;li&gt;Ability to turn off Viewstate on Gridview/Listview without issues&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt;    &lt;li&gt;Client Script&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;jQuery intellisense (did he go to a Google site?)&lt;/li&gt;      &lt;li&gt;Ajax Control Toolkit will be adopted by MS (it will be a part of ASP.NET in 4.0)&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;MS will support it.&lt;/li&gt;        &lt;li&gt;MS will enhance it&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Rich Client-side templating controls (I’m already embedded in this stuff)&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;[Wow.. Bertrand is up..]&lt;/li&gt;        &lt;li&gt;[I wish I could see the source code... I hope they give that away]&lt;/li&gt;        &lt;li&gt;The big thing is that JS it’s pretty easy to do and it minimizes the amount code you need to write on the client&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Phil’s demo (mentioned below) reiterates that MS Ajax and jQuery work well together&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;ASP.NET MVC [not something I’m extremely excited about, but I am interested in it]&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Hint at a auto build of pages when you point at an object... (Dynamic Data??)&lt;/li&gt;      &lt;li&gt;Ajax in MVC with MVC &lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;[It’s Phil Haaack...]&lt;/li&gt;        &lt;li&gt;Phil demos Partial rendering &lt;/li&gt;        &lt;ul&gt;         &lt;li&gt;returning a couple items in a JSON string &lt;/li&gt;          &lt;li&gt;[Actually in some respects Ajax can be easier in an MVC app... in any MVC app not just MS' ASP.NET MVC]&lt;/li&gt;          &lt;li&gt;[Phil blew up his text... I can actually read it]&lt;/li&gt;          &lt;li&gt;Next demo is sort of an UpdatePanel-like demo [simple To Do list updated without a page render by the browser]&lt;/li&gt;          &lt;ul&gt;           &lt;li&gt;Uses "using Ajax.BeginForm" to define the scope of the form tag [very cool IMO]&lt;/li&gt;            &lt;li&gt;BeginForm has some options that let you define what you want to happen when the form is submitted and returns and then what you can execute something after the submit is done [in this case a background call is made and a specified DOMElement is updated and then jQuery effect is called]&lt;/li&gt;         &lt;/ul&gt;       &lt;/ul&gt;     &lt;/ul&gt;   &lt;/ul&gt;    &lt;li&gt;ASP.NET Dynamic Data&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;More than Scaffolding [Not to self I need to check this out some more]&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;[Scott Hunter is demoing this]&lt;/li&gt;        &lt;li&gt;Demo is a blog app [same as one of the initial Rails tutorials]&lt;/li&gt;        &lt;li&gt;It builds a set of templates for your data model&lt;/li&gt;        &lt;li&gt;It uses these templates for the data display/edit/etc.&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Enhancing (surprise, surprise) MVC [for those who don’t know this makes ASP.NET MVC a real competitor to Rails]&lt;/li&gt;      &lt;li&gt;Supports custom Data Layer aka Business Logic Data Source&lt;/li&gt;      &lt;li&gt;Better filtering&lt;/li&gt;      &lt;li&gt;Better control over column order, and columns that are shown&lt;/li&gt;      &lt;li&gt;Dynamic Data to ADO.NET Data Services [Pronounced "Astoria"]&lt;/li&gt;      &lt;li&gt;[Another demo to show the last 3]&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Search screen [a lot of which is automated if not all... he doesn’t show how we get here... just the code that is here]&lt;/li&gt;        &lt;li&gt;Created via LinqDataSource with a where child tag that has additional child tags defining fields to search on&lt;/li&gt;        &lt;li&gt;Same LinqDataSource can control the visibility of fields&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Dynamic Data works against IQueryable Data source : LinqDataSource (EF, LINQ to SQL, etc.),  AstoriaDataSource, Business Logic DataSource (sort of like the Object DataSource except that the class is IQueryable aka usable from a LINQ query [Cool!])&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Astoria DataSource which allows an Astoria service as the source of data in a server-side app [Yay!]&lt;/li&gt;    &lt;li&gt;ASP.NET Core changes&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Swap out the Cache mechanism via a provider mechanism [Yay!]&lt;/li&gt;      &lt;li&gt;Fixes to pain points&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;[I skipped the questions] &lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2705.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/10/30/pdc2008-reactions-to-asp.net-4.0-upcoming-features-presentation.aspx</guid>
            <pubDate>Thu, 30 Oct 2008 16:05:13 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2705.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/10/30/pdc2008-reactions-to-asp.net-4.0-upcoming-features-presentation.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2705.aspx</wfw:commentRss>
        </item>
        <item>
            <title>The worst thing about Azure...</title>
            <category>Technology</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/10/28/the-worst-thing-about-azure.aspx</link>
            <description>&lt;p&gt;Ok, I’m digging into Azure (and this will be a really quick post) and seeing what all it is. Thus far I am intrigued (although I have seen some of this coming).  In case you aren’t following the PDC happenings, Azure is the MS OS in the clouds? More like a server in the clouds, but still. Basically they have spun a number of their server products into the clouds, so now there will (for instance) a SQL Server that is available from the cloud. I read some mentioning of SharePoint as well.&lt;/p&gt;  &lt;p&gt;But there is one thing that I don’t like (can you feel the sarcasm)... Azure is a really cool name. The release name (after marketing screws it up) will be Microsoft Windows .Net Live Data and Internet Operating System Services Professional Version 10 (or some such nonsense).. it will be a ghastly name... &lt;/p&gt;  &lt;p&gt;I think I will take a page out of Sam Gentile book. He says that WCF is pronounced "indigo" and I think I agree. So if you here me refer to Astoria know that I’m talking about the MS product spelled Ado.NET Data Services. And "Azure" will be the pronunciation for MS OS in the cloud offering.&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2703.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/10/28/the-worst-thing-about-azure.aspx</guid>
            <pubDate>Tue, 28 Oct 2008 15:15:47 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2703.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/10/28/the-worst-thing-about-azure.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2703.aspx</wfw:commentRss>
        </item>
        <item>
            <title>TUX Meeting 3 - Nov. 12th</title>
            <category>TUX</category>
            <category>User Group</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/10/22/tux-meeting-3---nov.-12th.aspx</link>
            <description>&lt;p&gt;Our next meeting will be on Wed. Nov. 12th. The responses that we got for changing the meeting was inconclusive (so we’ll talk about it next meeting feel free to email me if you can’t make it).&lt;/p&gt;  &lt;p&gt;We’re trying a small experiment for the next meeting. We are doing an "Implementation meeting" which is to say "Show us your UI and why you think it provides a good UX! (or maybe it doesn’t and you need advice)" Shawn will also do a short designer-friendly topic (not sure what he’s doing, but the big block of time is for your stuff). So that means, email me if you want to show something. Don’t worry if you think you won’t be that good of a speaker or if you think it achieves some technical excellence (none of us do). Don’t worry about showing us the inner workings that your company would rather it was kept secret (cause we don’t want to know). So join us! It will be fun.&lt;/p&gt;  &lt;p&gt;Also, if you’d like to present on a topic, let us know. We more than open to let local folks (and first timers) come in and talk. Remember though, topics need to try to be DevSigner-friendly (So no talks on "how to build an ASMX web service using nothing but a socket control")&lt;/p&gt;  &lt;p&gt;Also if you have an idea for something you would like to see... let us know. We have a set of resources who could research your topic (or maybe just build it from their own knowledge) and will present it.&lt;/p&gt;  &lt;p&gt;At some point when INETA finally contacts us back (since their web site is thoroughly broken for signing up) we’ll be bringing in the occasional INETA speaker.&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2700.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/10/22/tux-meeting-3---nov.-12th.aspx</guid>
            <pubDate>Wed, 22 Oct 2008 17:05:34 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2700.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/10/22/tux-meeting-3---nov.-12th.aspx#feedback</comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2700.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Data and Services With Silverlight 2 review...</title>
            <category>Reviews</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/10/21/data-and-services-with-silverlight-2-review.aspx</link>
            <description>&lt;p&gt;[First of all THIS is my 500th post... nothing more to say there... except that it took me a lot longer than many of my blogging heroes, but this is the pace I have to take and not have lousy content... and yes, sometimes I’ve blogged too often and proved that too often for me == lousy content]&lt;/p&gt;  &lt;p&gt;So last night I finished "Data and Services With Silverlight 2" by John Papa. You may be wondering how I could have finished this book since it hasn’t been published. Well, I’m a tech reviewer for the book. I had a lot of the ancillary skills necessary to tech review this book (rudimentary Silverlight 2, REST experience, Web Services experience, and Linq to SQL experience... my Ajax knowledge also came in handy)... the cool part was that while I had enough experience to bring to the table as far as tech reviewing the book, but there was a wealth of information that I knew nothing about. I mean I had wired up a SL2 app to a REST service which was cool, but I knew nothing about XAML Data Binding (which makes the wiring simple... not much effort at all); the WCF stack was something I had limited knowledge of (and now I fell fairly confident having an intelligent discussion about it)&lt;/p&gt;  &lt;p&gt;So, needless to say, I learned a lot... I mean a LOT! This book is excellent! It is the one Silverlight2 book that you as an app developer MUST have on your shelf. It will teach you all the business development stuff you need to not only build Silverlight apps today, but will also empower you to make good services/data decisions that will help you build Silverlight apps tomorrow (if you are -- like me -- delaying to build that app).&lt;/p&gt;  &lt;p&gt;I know I’m partial as I was a tech reviewer, but it’s the book I’ll be telling all my friends to get. As a business developer you must get it.&lt;/p&gt;  &lt;p&gt;Now, that I’ve talked it up, let me tell you what it is NOT. It is not a complete intro of Silverlight 2. It’s a focused book that is about the convergence of the MS Data Frameworks, the MS Services stack (WCF, Web Services, ADO.NET Data Services, etc.), and Silverlight 2 and how they all inter-operate together. It’s practical... if you are trying to say use WCF with Silverlight 2, it will walk you through what you need to do... Wanna ship Entities across the wire to your SL2 app? It’s got that too. You’ll probably need to read the first couple chapters (to learn about XAML Binding and basic services)  and then you can skip around to read up on stuff that is more toward your interests/needs (or you can do like me and read the entire thing and grow in knowledge)&lt;/p&gt;  &lt;p&gt;-------------------&lt;/p&gt;  &lt;p&gt;If you want a fuller intro to Silverlight 2, I would recommend that you check out "Hello Silverlight2" by Bill Reiss and Dave Campbell. I honestly haven’t read it, but from what Bill has told me it sounds like an easy book to read/learn from... (Besides I know Bill and I know where his Silverlight2 knowledge is... )&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2699.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/10/21/data-and-services-with-silverlight-2-review.aspx</guid>
            <pubDate>Tue, 21 Oct 2008 20:55:12 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2699.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/10/21/data-and-services-with-silverlight-2-review.aspx#feedback</comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2699.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Dear Google/Live Search/Yahoo Search/And anyone else</title>
            <category>Dev Philosophy</category>
            <category>google</category>
            <category>Microsoft</category>
            <category>opinion</category>
            <category>Technology</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/10/21/dear-googlelive-searchyahoo-searchand-anyone-else.aspx</link>
            <description>&lt;p&gt;I have been a big fan of your services for a long time and have used each of you off and on. Google right now you have my business and that ad revenue you currently get from me using your search may be in jeopardy.&lt;/p&gt;  &lt;p&gt;The first one of you to ban (yes, ban!) people like Experts-exchange or SqlServerCentral from all searches where I am looking for a tech answer will get my business... Seriously, they are a bane to your business as they pollute the search results.&lt;/p&gt;  &lt;p&gt;Whenever I click on a link that implies that there is an answer waiting for me and I find a page describing what could be my problem and then an invitation to join or sign up for a trial, absolutely ticks me off! These folks are a blight IMO... &lt;/p&gt;  &lt;p&gt;[Maybe I should create a little SL2 app with Live Search and auto remove these sites from the results... Seriously it ticks me off...]&lt;/p&gt;  &lt;p&gt;You have been forewarned. I will move on to the next decent search engine that eliminates crap like this when I need an IT/Dev answer (because I don’t want to join and be spammed or to pay to get info).&lt;/p&gt;  &lt;p&gt;Signed your friend,&lt;/p&gt;  &lt;p&gt;Jay&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2698.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/10/21/dear-googlelive-searchyahoo-searchand-anyone-else.aspx</guid>
            <pubDate>Tue, 21 Oct 2008 15:48:03 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2698.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/10/21/dear-googlelive-searchyahoo-searchand-anyone-else.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2698.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Tampa User eXperience (TUX) - 10-8-2008 - Agenda</title>
            <category>TUX</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/10/06/tampa-user-experience-tux---10-8-2008---agenda.aspx</link>
            <description>&lt;p&gt;This Wednesday, we are having our second TUX meeting! Bill Reiss will be doing a talk on Silverlight2 (with a little more design emphasis than my JavaScript talk last month). We are addressing some of the things raised in the survey (and haven’t addressed them all yet). In light of this new format we will also be introducing some smaller talks along with the main speaker. &lt;/p&gt;  &lt;p&gt;So here’s the agenda:&lt;/p&gt;  &lt;p&gt;- Arrive between 6:30 and 7:00pm, for a social time and with food (thank you, TekSystems)&lt;/p&gt;  &lt;p&gt;- Welcome by me and introduction of TekSystems (who is buying our food) - 5 minutes&lt;/p&gt;  &lt;p&gt;- Group Business (I know this is only the 2nd meeting but we do have some business that needs to be taken care of) - 5 minutes&lt;/p&gt;  &lt;p&gt;- First of our "short" talks: &lt;a href="http://theruntime.com/blogs/danastevens/Default.aspx"&gt;Dana Stevens&lt;/a&gt; (yep, the same guy who blogs with me at &lt;a href="http://www.theruntime.com/blogs/"&gt;TheRuntime.com&lt;/a&gt;) will be doing a short jQuery talk - 15 minutes&lt;/p&gt;  &lt;p&gt;- Shawn was supposed to do the other short talk, but he had to go out of town, so I’ll be filling in with a couple quick demos of some stuff I’ve found recently that I think are pretty cool (and are UX-related)... - in less than 10 minutes&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://silverlightrocks.com/community/blogs/silverlight_games_101/default.aspx"&gt;Bill&lt;/a&gt; &lt;a href="http://www.bluerosegames.com/SilverlightBrassTacks/"&gt;Reiss&lt;/a&gt; (Silverlight guru/MVP and good guy) will be giving us an Intro to Silverlight2 (using both Visual Studio and Blend, so it’ll be designer-friendly as well as developer-friendly) - 1 hour &lt;/p&gt;  &lt;p&gt;BTW, afterwards we’ll have some kind of after the group meet and greet. I missed that some of you went to Starbucks last time, and instead I went with the group that went to BW3 (across the street).&lt;/p&gt;  &lt;p&gt;If you need info on how to get to where we meet (or additional info) check out the web site : &lt;a href="http://www.tampaux.org"&gt;http://www.tampaux.org&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2692.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/10/06/tampa-user-experience-tux---10-8-2008---agenda.aspx</guid>
            <pubDate>Mon, 06 Oct 2008 19:07:15 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2692.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/10/06/tampa-user-experience-tux---10-8-2008---agenda.aspx#feedback</comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2692.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Getting the &amp;quot;unwashed&amp;quot; (aka &amp;quot;blue collar coders&amp;quot;) to unit test</title>
            <category>Dev Philosophy</category>
            <link>http://theruntime.com/blogs/jaykimble/archive/2008/09/23/getting-the-quotunwashedquot-aka-quotblue-collar-codersquot-to-unit-test.aspx</link>
            <description>&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Roy Osherove has a great post on &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/09/20/goodbye-mocks-farewell-stubs.aspx"&gt;making TDD more accessible&lt;/a&gt; (which I would be remiss to mention that I am not really a part of the TDD movement except as a outsider/skeptic). There are a bunch of additional comments/posts in this regard which I won’t bore you with. You either got here because my post got linked to Roy’s thread or you are a regular reader here. &lt;/p&gt;  &lt;p&gt;I was actually encouraged by Roy’s thoughts(again). He really gets it (I mean the reason why blue collar developers don’t do TDD). It’s all reminiscent of something I heard from within the security culture: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;If it isn’t secure by default then... it isn’t really secure. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For instance, MVC was a web framework talked about by a bunch of people but no one REALLY used it until RAILS did it and made it easy to do (at least that’s my guess). In the ASP.NET space there have been alternative web frameworks (mostly MVC), but until MS did an MVC framework that was easy to use everyone used any web forms (you could have used an alternative ASP.NET Web Framework you know). &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Improvements??&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When I was at CodeBetter, I remember a lot of people complaining about how MS made it easy to develop crappy code using all kinds of ugly evil drag and drop mechanisms (DataSets and DataGrids come to mind). &lt;/p&gt;  &lt;p&gt;As I look back on it, if that crew had decided let’s make it easier to build testable code by releasing a bunch of templates and making improvements to the testing frameworks (an add-in for VS that auto-creates class methods/properties while I’m writing test code would have been awesome). It could have even used mocking frameworks to determine what calls should be made in those properties/methods and add comments to that effect... This would make testing easier and would encourage test first. &lt;/p&gt;  &lt;p&gt;You see there’s a way to get better code written, but it involves creating tools that make it easier to write good code (so "why would I want to write bad code... it’s easy to write good code"). I know for some of this won’t resonate. I fear that some love being "l33t" and so as long as coding is hard they feel like they are at the top of the food chain. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;A Personal Experience &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Chad Myers and I chatted a few weeks ago (or was it last week) in email about the testing I was doing. He really wanted me to post about my experience here. So, while I was being called out on my post where I was talking about SpDD, I was writing MbUnit code that looked like this: &lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; [RowTest(&lt;span style="color: #006080"&gt;"'A' Must Be False When Settings Object DisAllows 'A' For Customer"&lt;/span&gt;)]&lt;/pre&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; [Row(&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;, 1, 2, 3, 4)]&lt;/pre&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; A_Must_Be_False_When_Settings_Object_DisAllows_A_For_Customer(&lt;/pre&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; expected, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; parm1, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; parm2, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; parm3, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; parm4)&lt;/pre&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; {&lt;/pre&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// Set up conditions&lt;/span&gt;&lt;/pre&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;     Assert.AreEqual(expected, SomeObj.SomeMethod(someSignature[]), &lt;span style="color: #006080"&gt;""&lt;/span&gt;);&lt;/pre&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, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I did this for something in my day job that absolutely had to be correct. Quality had to be 100%. The class under test had a bunch of rules (specs) that had to be tested. It had to be right... no questions asked, and having a regression suite of tests was an added benefit (it would never be wrong). &lt;/p&gt;

&lt;p&gt;While I didn’t use classic DI, I was pretty close (so I could have mocked every dependency if I wanted to with minimal effort). Anyway, the net result was great. I have a set of regression tests and confidence that my understanding of the spec is covered with tests (so the end result should be a quality class that does what I would expect it to do).&lt;/p&gt;

&lt;p&gt;Anyway, I’m really ashamed of one thing though. I’m afraid to admit that it took entirely too long IMNHO (Shawn C. don’t freak... it was a critical need): 1.5 days roughly. &lt;/p&gt;

&lt;p&gt;Things like PEX may have helped a little, but the truth is I didn’t have time to learn a new tool (so I have no idea how quickly I could have done it with PEX)... I know, we never have the time. There are also tools out there for auto-gen’ing tests, but those aren’t that great either. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Change &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Something needs to change in this space for adoption to take off. Believe it or not I hope something does. The idea of a suite of regression tests sounds awesome to me... the idea that I have to write that test code isn’t quite so appealing... it either has to be easier to write tests or writing tests needs to help write code for me. At least that’s a suggestion. &lt;/p&gt;

&lt;p&gt;As previously mentioned, I am not a TDDer. I’m a guy who gets some of these Alpha Geek ideas, but I’m more a "Beta Geek." I have one foot in the blue collar developer corner and one foot slightly over the line toward cutting edge developer... I try to walk the line and find better ways of doing things which is why TDD has me somewhat hung up (I like tests and the net result... but I don’t like the effort involved). I know TDD is about something else as well... but for me the benefit is the regression suite... all other things are simply window dressing appealing to an unknown "best practices" authority.&lt;/p&gt;

&lt;p&gt;[That’s another rant in and of itself... the whole "best practices" thing.... who’s defining this? You guys sometimes need to do a better job with that... quoting "best practices" is like saying "it’s better because I said so." At least that’s what most of us hear... if you are going to use it then quote your authority.... at least if you say "Fowler said" then I can determine if "Fowler" is an authority I respect, and whether he carries weight with me].&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2687.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jay Kimble</dc:creator>
            <guid>http://theruntime.com/blogs/jaykimble/archive/2008/09/23/getting-the-quotunwashedquot-aka-quotblue-collar-codersquot-to-unit-test.aspx</guid>
            <pubDate>Tue, 23 Sep 2008 20:05:06 GMT</pubDate>
            <wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2687.aspx</wfw:comment>
            <comments>http://theruntime.com/blogs/jaykimble/archive/2008/09/23/getting-the-quotunwashedquot-aka-quotblue-collar-codersquot-to-unit-test.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2687.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>