<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Scott&#039;s Blog</title>
	<atom:link href="http://knot.org/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://knot.org/scottlaw/blog</link>
	<description>Just me, thinking out loud</description>
	<lastBuildDate>Fri, 18 May 2012 15:50:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>The Perils of Renaming in TFS</title>
		<link>http://knot.org/scottlaw/blog/?p=767</link>
		<comments>http://knot.org/scottlaw/blog/?p=767#comments</comments>
		<pubDate>Fri, 18 May 2012 15:50:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[versioncontrol]]></category>

		<guid isPermaLink="false">http://knot.org/scottlaw/blog/?p=767</guid>
		<description><![CDATA[Apparently, renaming an assembly is a bad idea when TFS is your version control system. Earlier this week, one of my co-workers renamed an assembly to consolidate some functionality in our application yesterday, and even though TFS said the changes &#8230; <a href="http://knot.org/scottlaw/blog/?p=767">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Apparently, renaming an assembly is a bad idea when TFS is your version control system.</p>
<p>Earlier this week, one of my co-workers renamed an assembly to consolidate some functionality in our application yesterday, and even though TFS said the changes were checked in, they weren&#8217;t.</p>
<p>I got the latest code the morning after the change, and got nothing but build failures. We&#8217;re using the latest version of TFS and it&#8217;s very frustrating that something like this still doesn&#8217;t work properly.</p>
<p>Ultimately, the solution was found at the bottom of <a href="http://social.msdn.microsoft.com/Forums/en-HK/vssetup/thread/3f13063d-3aec-4200-b9c1-4b125eca7277">this thread</a>.</p>
<p>The only way I&#8217;ve found to avoid this kind of hassle is to create a new assembly, copy your code from the old assembly to the new one, change any references to the old assembly to use the new assembly, then delete the old assembly once you&#8217;ve verified the new one is working.</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=767</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Please Learn to Code (Continued)</title>
		<link>http://knot.org/scottlaw/blog/?p=770</link>
		<comments>http://knot.org/scottlaw/blog/?p=770#comments</comments>
		<pubDate>Thu, 17 May 2012 16:55:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://knot.org/scottlaw/blog/?p=770</guid>
		<description><![CDATA[A couple days ago, I wrote a post on why Coding Horror is wrong to suggest people shouldn&#8217;t learn to code. Here&#8217;s a much better post on the same subject by Jon Galloway (hat tip Scott Hanselman, and his e-mail &#8230; <a href="http://knot.org/scottlaw/blog/?p=770">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A couple days ago, I wrote a post on why <a href="http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html" target="_blank">Coding Horror</a> is wrong to suggest people shouldn&#8217;t learn to code.</p>
<p><a href="http://weblogs.asp.net/jgalloway/archive/2012/05/16/why-i-taught-my-daughter-to-code-a-little.aspx" target="_blank">Here&#8217;s a much better post</a> on the same subject by Jon Galloway (hat tip <a href="http://www.hanselman.com/blog/" target="_blank">Scott Hanselman</a>, and his e-mail <a href="http://tinyletter.com/hanselman" target="_blank">Newsletter of Wonderful Things</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=770</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Please Learn to Code</title>
		<link>http://knot.org/scottlaw/blog/?p=760</link>
		<comments>http://knot.org/scottlaw/blog/?p=760#comments</comments>
		<pubDate>Wed, 16 May 2012 02:28:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://knot.org/scottlaw/blog/?p=760</guid>
		<description><![CDATA[I came across this post from Jeff Atwood in my Twitter feed this morning. It even sparked a conversation (as much of one as you can have 140 characters at a time) between me and my old co-worker Jon who &#8230; <a href="http://knot.org/scottlaw/blog/?p=760">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I came across <a href="http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html" target="_blank">this post</a> from Jeff Atwood in my Twitter feed this morning.  It even sparked a conversation (as much of one as you can have 140 characters at a time) between me and my old co-worker Jon who agreed with Jeff Atwood in far blunter terms: &#8220;we need to cleanse the dev pool, not expand and muddy the water&#8221;.</p>
<p>While I understand Jon&#8217;s sentiment, &#8220;cleansing&#8221; vs. &#8220;expanding&#8221; just isn&#8217;t going to happen.      Computer science as an academic discipline didn&#8217;t even exist until the 1950s, so it&#8217;s a very long way from having the sort of regulations and licensure of a field like engineering (a term that dates back to the 14th century). Combine that with the decreasing number of computer science graduates our colleges and universities graduate each year (much less the <a href="http://news.yahoo.com/university-florida-cuts-computer-science-department-students-fight-161100232--finance.html" target="_blank">elimination of a computer science department</a>), and it&#8217;s no surprise that people without formal education in computer science are getting paid to develop software.</p>
<p>While it does sound crazy that Mayor Bloomberg made learning to code his 2012 new year&#8217;s resolution, I&#8217;m glad someone as high-profile as the mayor of New York is talking about programming. When I was deciding what to study in college (way back in 1992), computer science as a discipline didn&#8217;t have a very high profile.  While I knew programming was how video-games and other software was made, I had to find out about computer science from Bureau of Labor Statistics reports. </p>
<p>Jeff&#8217;s &#8220;please don&#8217;t learn to code&#8221; is counterproductive&#8211;the exact opposite of what we should be saying.  Given a choice between having more people going into investment banking and more people going into software development, I suspect a large majority of us would favor the latter.  </p>
<p>I also don&#8217;t believe that the objective of learning to code has to be making a living as a software developer in order to be useful. The folks at <a href="http://software-carpentry.org/">Software Carpentry</a> are teaching programming to scientists to help them in their research.  People who test software should know enough about programming to at least automate the repetitive tasks. If you use a computer with any regularity at all, even a little bit of programming knowledge will enable you to extend the capabilities of the software you use.</p>
<p>We need only look at some of the laws that exist in this country to see the results of a lack of understanding of programming by our judges and legislators.  I think that lack of understanding led to software patents (and a ton of time wasted in court instead of spent innovating). The Stop Online Piracy Act and the Protect IP Act are other examples of dangerous laws proposed by legislators that don&#8217;t have even the most basic understanding of programming. </p>
<p>As someone who writes software for a living, I prefer customers who understand at least a bit about programming to those who don&#8217;t, because that makes it easier to talk about requirements (and get them right).  They tend to understand the capabilities of off-the-shelf software a bit better and understand the tradeoffs between it and a custom system.  In my career, there have been any number of times where an understanding of programming has helped me find an existing framework or solution that met most of a customer&#8217;s requirements, so I and my team were able to focus our work just on what was missing.</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=760</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thanks Again StackOverflow!</title>
		<link>http://knot.org/scottlaw/blog/?p=764</link>
		<comments>http://knot.org/scottlaw/blog/?p=764#comments</comments>
		<pubDate>Fri, 27 Apr 2012 13:24:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[stackoverflow]]></category>

		<guid isPermaLink="false">http://knot.org/scottlaw/blog/?p=764</guid>
		<description><![CDATA[About a month ago, I wrote a brief post about starting a new job.  In it, I tipped my hat to StackOverflow Careers, for connecting me with my new employer.  Yesterday, I received a package from FedEx.  I was puzzled, &#8230; <a href="http://knot.org/scottlaw/blog/?p=764">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>About a month ago, I wrote <a href="http://knot.org/scottlaw/blog/?p=752">a brief post</a> about starting a new job.  In it, I tipped my hat to StackOverflow Careers, for connecting me with my new employer.  Yesterday, I received a package from FedEx.  I was puzzled, since I didn&#8217;t recall ordering anything recently.  But upon opening it, I discovered a nice StackOverflow-branded portfolio, pen and card with <a href="http://www.joelonsoftware.com/articles/fog0000000043.html" target="_blank">The Joel Test</a> on it.  In the pocket was a version of my profile printed on high-quality paper.</p>
<p>I appreciate the gesture, and thank <a href="http://careers.stackoverflow.com/" target="_blank">StackOverflow Careers</a> and the <a href="http://stackexchange.com" target="_blank">StackExchange</a> team not only for the portfolio (which I&#8217;ve already replaced my previous portfolio with), or for creating a great site for connecting developers with employers that value developers, but for the whole collection of Q &amp; A sites that make software development (and many other fields of endeavor) easier to learn.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=764</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>From Web Forms to MVC</title>
		<link>http://knot.org/scottlaw/blog/?p=759</link>
		<comments>http://knot.org/scottlaw/blog/?p=759#comments</comments>
		<pubDate>Tue, 24 Apr 2012 02:59:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://knot.org/scottlaw/blog/?p=759</guid>
		<description><![CDATA[In the weeks since my last post, I&#8217;ve been thrown into the deep end of the pool learning ASP.NET MVC 3 and a number of other associated technologies for a healthcare information management application currently scheduled to deploy this July. &#8230; <a href="http://knot.org/scottlaw/blog/?p=759">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the weeks since my last post, I&#8217;ve been thrown into the deep end of the pool learning ASP.NET MVC 3 and a number of other associated technologies for a healthcare information management application currently scheduled to deploy this July.  Having developed web applications using webforms since 2003, I&#8217;ve found it to be a pretty significant mental shift in a number of ways.</p>
<p><strong>No Controls</strong></p>
<p>There are none of the controls I&#8217;ve become accustomed to using over the years.  So in addition to learning the ins-and-outs of MVC 3, I&#8217;ve been learning some <a href="http://jquery.com/" target="_blank">jQuery</a> as well.</p>
<p><strong>No ViewState</strong></p>
<p>Because there&#8217;s no viewstate in MVC, any information you need in more than one view should be available either in the url&#8217;s query string, the viewmodel, or be retrievable via some mechanism in your view&#8217;s controller.  In the application I&#8217;m working on, we use <a href="http://davybrion.github.com/Agatha/" target="_blank">Agatha</a>.</p>
<p><strong>More &#8220;Pages&#8221;</strong></p>
<p>Each CRUD operation gets its own view (and its own viewmodel, depending on the circumstance).  This actively encourages separation of concerns in a way that webforms definitely does not.</p>
<p><strong>A Controller is a Lot Like Code-Behind</strong></p>
<p>I&#8217;ve been reading <a href="http://shop.oreilly.com/product/0790145336064.do" target="_blank">Dino Esposito&#8217;s book on MVC 3</a>, and he suggests thinking of controllers this way fairly early in the book.  I&#8217;ve found that advice helpful in a couple of ways:</p>
<ol>
<li>This makes it quicker to understand where to put some of the code that does the key work of the application.</li>
<li>It&#8217;s a warning that you can put far too much logic in your controllers the same way it was possible to put far too much into your code-behind.</li>
</ol>
<p>Using Agatha has helped to keep the controllers I&#8217;ve written so far from being too heavy.</p>
<p><strong>More to Come</strong></p>
<p>This barely scratches the surface of my experience with MVC so far.  None of the views I&#8217;ve implemented has been been complex enough yet to benefit from the use of <a href="http://knockoutjs.com/" target="_blank">Knockout JS</a>, but future assignments will almost certainly change this.  We&#8217;re also using <a href="http://automapper.org/" target="_blank">AutoMapper</a> to ease data transfer between our domain objects and DTOs.  In addition to using <a href="http://docs.structuremap.net/" target="_blank">StructureMap</a> for dependency injection, we&#8217;re using <a href="http://www.sharpcrafters.com/" target="_blank">PostSharp</a> to deal with some cross-cutting concerns.  Finally, we&#8217;re using <a href="http://ravendb.net/" target="_blank">RavenDB</a> for persistence, so doing things the object database way instead of using SQL Server has required some fundamental changes as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=759</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Gig</title>
		<link>http://knot.org/scottlaw/blog/?p=752</link>
		<comments>http://knot.org/scottlaw/blog/?p=752#comments</comments>
		<pubDate>Tue, 27 Mar 2012 03:50:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://knot.org/scottlaw/blog/?p=752</guid>
		<description><![CDATA[Tomorrow will be my first day with FEi Systems.  They design, build and maintain healthcare IT systems, including health information exchanges and electronic health record (EHR) systems.  I&#8217;ll be helping their efforts in those areas as a senior developer.  I&#8217;m &#8230; <a href="http://knot.org/scottlaw/blog/?p=752">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tomorrow will be my first day with <a href="http://www.feinfo.com/" target="_blank">FEi Systems</a>.  They design, build and maintain healthcare IT systems, including health information exchanges and electronic health record (EHR) systems.  I&#8217;ll be helping their efforts in those areas as a senior developer.  I&#8217;m looking forward to being back in the healthcare sector (I worked for another healthcare IT company earlier in my career).  I think it can benefit a great deal from the deployment and usage of well-designed IT systems.</p>
<p>I wouldn&#8217;t have been aware of this company, or this opportunity without <a href="http://careers.stackoverflow.com/" target="_blank">Stack Overflow Careers</a>.  I was a beta tester on the original site (<a href="http://stackoverflow.com/" target="_blank">Stack Overflow</a>), and since it launched it&#8217;s been a big help to me in solving a number challenging technical problems on a variety of projects.  Both the career site and Q&amp;A site are worth your while if you write code for a living.</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=752</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Retraction</title>
		<link>http://knot.org/scottlaw/blog/?p=742</link>
		<comments>http://knot.org/scottlaw/blog/?p=742#comments</comments>
		<pubDate>Fri, 16 Mar 2012 21:55:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Daisey]]></category>
		<category><![CDATA[factory]]></category>

		<guid isPermaLink="false">http://knot.org/scottlaw/blog/?p=742</guid>
		<description><![CDATA[Just came across this story relating to my January 25th blog post on Mike Daisey&#8217;s story of his visits to factories in Shenzhen. As it turns out they were indeed stories&#8211;large portions of his monologue have been revealed as complete &#8230; <a href="http://knot.org/scottlaw/blog/?p=742">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Just came across <a href="http://idealab.talkingpointsmemo.com/2012/03/this-american-life-on-apple-episode-retracted-due-to-significant-fabrications.php?m=1">this story</a> relating to my January 25th blog post on Mike Daisey&#8217;s story of his visits to factories in Shenzhen. As it turns out they were indeed stories&#8211;large portions of his monologue have been revealed as complete fabrications. </p>
<p>This American Life has fully retracted the story, so I thought I would do the same since I linked to it when it first aired.</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=742</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inserting stored procedure results into a table</title>
		<link>http://knot.org/scottlaw/blog/?p=735</link>
		<comments>http://knot.org/scottlaw/blog/?p=735#comments</comments>
		<pubDate>Wed, 15 Feb 2012 17:35:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlserver]]></category>
		<category><![CDATA[t-sql]]></category>

		<guid isPermaLink="false">http://scottlaw.knot.org/blog/?p=735</guid>
		<description><![CDATA[Working with one of my colleagues earlier today, we found that we needed a way to store the results of a stored procedure execution in a table. He found this helpful blog post that shows exactly how. One thing we &#8230; <a href="http://knot.org/scottlaw/blog/?p=735">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Working with one of my colleagues earlier today, we found that we needed a way to store the results of a stored procedure execution in a table. He found <a href="http://blog.coryfoy.com/2005/07/inserting-the-results-of-a-stored-procedure-to-a-temp-table/">this helpful blog post</a> that shows exactly how.</p>
<p>One thing we found that the original blog post didn&#8217;t mention is that this approach works with table variables as well.  Here&#8217;s the original example revised to use a table variable:</p>
<p><code>CREATE PROC test_proc<br />
AS<br />
SET NOCOUNT ON<br />
SELECT TOP 10 id, name FROM employee</code></p>
<p>declare @sometable as table([id] int, name varchar(64))</p>
<p>INSERT INTO @sometable<br />
exec test_proc</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=735</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saving Changes is Not Permitted (SQL Server 2008 R2)</title>
		<link>http://knot.org/scottlaw/blog/?p=728</link>
		<comments>http://knot.org/scottlaw/blog/?p=728#comments</comments>
		<pubDate>Fri, 03 Feb 2012 19:28:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlserver]]></category>

		<guid isPermaLink="false">http://scottlaw.knot.org/blog/?p=728</guid>
		<description><![CDATA[We just upgraded our development VMs at work, and I got bitten by one of the more annoying default settings in SQL Server Management Studio again. I imported some data for use in some queries and needed to change one &#8230; <a href="http://knot.org/scottlaw/blog/?p=728">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We just upgraded our development VMs at work, and I got bitten by one of the more annoying default settings in SQL Server Management Studio again. I imported some data for use in some queries and needed to change one of the column types. But when I tried to save the change, I got the dreaded &#8220;Saving changes is not permitted.&#8221; error.</p>
<p>Fortunately, <a href="http://www.henrycordes.nl/post/2008/11/Saving-changes-is-not-permitted-%28SQL-Server-2008%29.aspx" target="_blank">this blog post</a> directed me to the setting I needed to change in order for SSMS to do what I wanted.</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=728</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Brief Introduction to LINQPad</title>
		<link>http://knot.org/scottlaw/blog/?p=725</link>
		<comments>http://knot.org/scottlaw/blog/?p=725#comments</comments>
		<pubDate>Sun, 29 Jan 2012 20:39:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://scottlaw.knot.org/blog/?p=725</guid>
		<description><![CDATA[I presented a brief talk on LINQPad at RockNUG a couple of weeks ago.  This post will elaborate on that presentation a bit, since the 30 minutes I had wasn&#8217;t nearly enough to do justice to a tool I only &#8230; <a href="http://knot.org/scottlaw/blog/?p=725">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I presented <a href="http://rocknug.org/archive/release5_7.htm">a brief talk on LINQPad</a> at RockNUG a couple of weeks ago.  This post will elaborate on that presentation a bit, since the 30 minutes I had wasn&#8217;t nearly enough to do justice to a tool I only half-joking called the Swiss Army knife of .NET development.</p>
<p>In addition to enabling developers to write and execute LINQ queries, <a href="http://www.linqpad.net/" target="_blank">LINQPad</a> can be used to execute SQL queries as well as compose and run code snippets in C#, VB.NET, and F#.  LINQ can query a wide variety of collections and data, including SQL databases and XML.  The ability to query XML with LINQ becomes quite powerful when the XML comes from <a href="http://msdn.microsoft.com/en-us/data/bb931106" target="_blank">WCF Data Services</a> (an implementation of the <a href="http://www.odata.org/developers/protocols/atom-format" target="_blank">OData</a> protocol).</p>
<p>During my presentation, I queried a local version of the Northwind database, as well as the <a href="http://odata.netflix.com/Catalog/" target="_blank">OData endpoint of Netflix</a>.  <a href="http://data.stackexchange.com/stackoverflow/atom" target="_blank">StackOverflow</a> publishes their data via an OData endpoint as well. Additional producers of OData services can be found <a href="http://www.odata.org/producers" target="_blank">here</a>, or in the <a href="https://datamarket.azure.com/browse/Data" target="_blank">Windows Azure Marketplace</a>.</p>
<p>One of the nice features of LINQPad is the number of export options it provides for your query results.  The results of any SQL or LINQ query written in LINQPad can be exported to Excel, Word, or HTML.  The Excel and Word export capabilities give you the option of preserving the formatting LINQPad provides, or leaving it out.  Once you&#8217;ve queried a database with LINQ, the results display allows you to toggle between the equivalent fluent LINQ, SQL and MSIL syntax.  I demonstrated this feature by executing a SQL query against the Northwind sample database, then cutting and pasting the equivalent syntax to new query windows and running them to show that the query results were the same.</p>
<p>The LINQPad website pitches the tool as a replacement for SQL Server Management Studio.  To test this proposition, I demonstrated LINQPad&#8217;s ability to execute stored procedures.  I used the TenMostExpensiveProducts stored procedure in the Northwind database, and <a href="https://github.com/scottlaw1/snippets/blob/master/LINQPad%20Queries/Northwind%20Sales%20by%20Year%20as%20Function.linq" target="_blank">this script</a> to show one way to use LINQPad to run stored procedures that take parameters.</p>
<p>LINQPad&#8217;s capabilities as a code snippet runner are further supported by its ability to reference custom assemblies and namespaces.  So instead of dealing with all the overhead of Visual Studio just to write a console application, you could simply write them in LINQPad and reference any custom assemblies you needed.</p>
<p>The latest version of LINQPad also has an <a href="http://www.linqpad.net/extensibility.aspx" target="_blank">extensibility model</a>, if you wanted to query databases other than SQL Server (or different querying sources).</p>
<p>One feature I wished I&#8217;d had time to delve into further was LINQPad&#8217;s ability to query Entity Framework models defined in Visual Studio.  There&#8217;s a brief description of that capability <a href="http://www.linqpad.net/EntityFramework.aspx" target="_blank">here</a>.</p>
<p>All of the query files from my presentation are available on <a href="https://github.com/scottlaw1/snippets/tree/master/LINQPad%20Queries" target="_blank">Github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://knot.org/scottlaw/blog/?feed=rss2&#038;p=725</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

