<?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: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/" version="2.0">

<channel>
	<title>Lazycoder</title>
	
	<link>http://www.lazycoder.com/weblog</link>
	<description />
	<lastBuildDate>Thu, 16 May 2013 20:13:49 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Lazycoder" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="lazycoder" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Herding Code 166: Tomasz Janczuk on Edge.js</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/8kbQZSnnTv8/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/8kbQZSnnTv8/#comments</comments>
		<pubDate>Thu, 16 May 2013 20:13:49 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[interview]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=544</guid>
		<description><![CDATA[This week on Herding Code, the guys talk to Tomasz Janczuk about running .NET code in Node.js using Edge.js. Download / Listen: Herding Code 166: Tomasz Janczuk on Edge.js Show Notes: Intro and background on Edge.js (00:40) Tomasz has been focusing on Node.js at Microsoft for the past 3 years. He&#8217;s been working on making [...]]]></description>
				<content:encoded><![CDATA[<p>This week on Herding Code, the guys talk to Tomasz Janczuk about running .NET code in Node.js using Edge.js.</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0166-EdgeJS.mp3">Herding Code 166: Tomasz Janczuk on Edge.js</a>
<p>Show Notes:</p>
<ul>
<li>Intro and background on Edge.js</li>
<ul>
<li>(00:40) Tomasz has been focusing on Node.js at Microsoft for the past 3 years. He&#8217;s been working on making Node.js run well on Windows. He&#8217;s also worked on hosting Node.js on Windows Azure with IISNode. </li>
<li>(02:08) Jon asks about Edge.js&#8217;s original name, Owin. Tomasz explains how that made sense with the original scope &#8211; connect middleware and express handlers &#8211; but it&#8217;s grown since then so it needed a more generic name. </li>
<li>(02:45) Edge.js lets you run Node.js and .NET code in one process and provides interop mechanisms between the two. </li>
<li>(03:05) Jon asks why that&#8217;s useful. Tomasz says you can do pretty much anything in either Node.js or .NET, but some things work a lot better on one platform. He gives examples like using ADO.NET to connect to SQL Server and running CPU bound computations as multi-threaded .NET code from the single-threaded Node.js event loop. There are two classes of scenarios: things that work better on one platform, or writing native extensions to Node.js without having to drop all the way down to raw C and native OS mechanisms. </li>
<li>(06:11) Jon brings up two questions from Twitter about Mono support (Jason Denizac @_jden &quot;when&#8217;s mono support coming?&quot; and Kevin Swiber &quot;Mono support? Can we do legit Node modules in C#? Are grilled hotdogs really better than boiled?&quot; Tomasz says not yet, but it&#8217;s high on the list. There are some complications to implement that support since Edge.js uses C++ CLI, which isn&#8217;t available on Mono. </li>
</ul>
<li>Getting started and samples</li>
<ul>
<li>(07:57) Jon asks what&#8217;s involved in setting it up. He says he ran npm install edge, then npm install edge-cs. Tomasz explains why he didn&#8217;t need to install edge-cs &#8211; C# support is built in, other language support plugs in. </li>
<li>(08:43) Jon asks about the samples. Tomasz explains the different ways of integrating CLR code into Node.js and talks about how the samples show these approaches. </li>
<li>(10:36) Jon says he liked how the samples progressed from very basic to pretty complex. Tomasz says you can do just about anything in Edge.js, but there&#8217;s a specific interface you need to follow in order to work smoothly between the Node.js async model and many synchronous operations in .NET. Every function in Edge.js uses an async function delegate, so you end up using small wrapper functions in some cases. </li>
</ul>
<li>Marshalling and interop</li>
<ul>
<li>(13:08) Kevin says this reminds him of COM / .NET interop and issues with object lifetime, garbage collection, etc. Tomasz says that that the async function delegate solves the threading models. Object lifetimes are controlled because everything is marshalled by value. </li>
<li>(16:22) Kevin asks if the marshal by value prevents working directly with the CLR object. Tomasz says that you can handle this using function proxies to create closures over CLR states. </li>
<li>(17:45) Scott K. asks if structs eliminate the serialiazation issues. Tomasz clarifies that the marshalling process is reflecting over the objects in .NET and recreating a synonymous JavaScript. Scott says this sounds like thunking from days of old. </li>
<li>(19:27) Jon says that he saw one sample that allows for debugging inline .NET code in a JavaScript file. Tomasz explains that this is done using the codedom compiler to create an in-memory assembly with debugging information, which can be attached to from Visual Studio. </li>
<li>(21:25) Jon says he thinks this sounds useful for using a NuGet package in a Node.js application and asks if there&#8217;s support for pulling in a NuGet package. Tomasz says that at this point it&#8217;s up to you how you&#8217;d get the assembly downloaded and set up, but that there&#8217;s an open issue to get script-cs integration going and that would handle this. </li>
</ul>
<li>Overhead and performance</li>
<ul>
<li>(23:06) Jon asks about the overhead of running two virtual machines and marshalling. Tomasz says there is some overhead, but it&#8217;s better than running two different processes. Edge.js is built for solving some specific scenarios, and it&#8217;s fast in those </li>
<li>(24:55) Kevin asks if there&#8217;s a delay when Edge.js spins up. Tomasz says that happens when you require Edge, but it&#8217;s not really noticeable. </li>
</ul>
<li>Misc questions</li>
<ul>
<li>(25:55) Jon asks what was the hardest part of implementing Edge.js. Tomasz says the function proxies to handle lifetimes and reconciling threading models. </li>
<li>(27:45) Scott says this sounds useful for authentication or using a legacy .NET library. Tomasz lists several more. </li>
<li>(29:20) Kevin asks how exceptions are handled. Tomasz explains how the exceptions are marshalled and thrown across VM boundaries. </li>
<li>(30:15) Kevin asks if it&#8217;s tied to specific Node.js versions. Tomasz says it works on all current stable versions. </li>
<li>(31:30) Question from Twitter: @jeremydmiller &quot;I&#8217;ve seen a lot of samples of hosting . Net in node, but how about running node in a .net process?&quot; Tomasz talks about an open issue, Mission Double Edge which would handle that. He explains that the challenge is that Node.js doesn&#8217;t have a hosting model. </li>
<li>(33:20) Jon says he saw several of the samples had the C# script named with .CSX extension and asks about that. Tomasz says that this is partly done to follow Roslyn conventions, including specifying assemblies as references in code using #r. </li>
</ul>
<li>Future plans and next steps for listeners</li>
<ul>
<li>(34:25) Jon asks what&#8217;s planned going forward. Tomasz talks about Mono support and adding support for additional languages, including F# (note: this has been added <a title="http://tjanczuk.github.io/edge/#/3" href="http://tjanczuk.github.io/edge/#/3">http://tjanczuk.github.io/edge/#/3</a>) . Jon asks what&#8217;s involved in adding language support. </li>
<li>(36:30) Jon asks about the relationship with OWIN. Tomasz says there&#8217;s a separate module which allows you to plug any OWIN compatible .NET application and plug it into an Express.js pipeline. Jon says this reminds him of the Edge name and Tomasz explains that the idea is that mathematically an edge connects two nodes, so Edge.js connects differe. </li>
<li>(38:25) Jon asks about next steps for people to get started. </li>
<li>(38:55) Jon asks if this is a Microsoft project. Tomasz says it&#8217;s his own separate open source project that&#8217;s inspired by his day job, and this allows him some more flexibility to work with the community. He lists some of the community contributions they&#8217;ve seen so far. </li>
</ul>
</ul>
<p>Show Links:</p>
<ul>
<li>Tomasz Janczuk (<a href="https://twitter.com/tjanczuk">@tjanczuk</a>, <a href="http://tomasz.janczuk.org/">blog</a>) </li>
<li>Official Edge.js site: <a title="http://tjanczuk.github.io/edge/#/" href="http://tjanczuk.github.io/edge/#/">http://tjanczuk.github.io/edge/#/</a> </li>
<li>Edge.js on GitHub: <a title="https://github.com/tjanczuk/edge" href="https://github.com/tjanczuk/edge">https://github.com/tjanczuk/edge</a> </li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/8kbQZSnnTv8" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=rdhqPHRB6xY:VDgeMKddNbg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=rdhqPHRB6xY:VDgeMKddNbg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=rdhqPHRB6xY:VDgeMKddNbg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=rdhqPHRB6xY:VDgeMKddNbg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=rdhqPHRB6xY:VDgeMKddNbg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=rdhqPHRB6xY:VDgeMKddNbg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=rdhqPHRB6xY:VDgeMKddNbg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=rdhqPHRB6xY:VDgeMKddNbg:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-166-tomasz-janczuk-on-edge-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/2X4lc15kGCY/HerdingCode-0166-EdgeJS.mp3?#" length="12833296" type="audio/mpeg" />
		</item>
		<item>
		<title>Herding Code 165: Mark Seemann on AutoFixture and Unit Testing</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/--46jNYPceE/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/--46jNYPceE/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 18:52:30 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=539</guid>
		<description><![CDATA[While at the Danish Developer Conference in Copenhagen, Jon sat down with Mark Seemann to talk about AutoFixture and Unit Testing. Download / Listen: Herding Code 165: Mark Seemann on AutoFixture and Unit Testing Show Notes: AutoFixture (00:44) AutoFixture is an open source library that simplifies the "Arrange" part of the standard Arrange / Act [...]]]></description>
				<content:encoded><![CDATA[<p>While at the Danish Developer Conference in Copenhagen, Jon sat down with Mark Seemann to talk about AutoFixture and Unit Testing.</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0165-Mark-Seemann-on-AutoFixture-and-Unit-Testing.mp3">Herding Code 165: Mark Seemann on AutoFixture and Unit Testing</a>
<p>Show Notes:</p>
<ul>
<li>AutoFixture</li>
<ul>
<li>(00:44) AutoFixture is an open source library that simplifies the &quot;Arrange&quot; part of the standard Arrange / Act / Assert steps in unit tests.</li>
<li>(01:20) Jon asks about anonymous variables. Mark says he got that terminology from Gerard Meszaros&#8217; book, xUnit Test Patterns. Anonymous methods and variables are necessary for a test, but their implementation doesn&#8217;t matter. </li>
<li>(02:23) Mark describes the test data builder pattern, from the book Growing Object-Oriented Software. The pattern works well, but it gets to be repetitive and mechanical to write and maintain, so he wanted to automate it. AutoFixture uses reflection to create the needed instances.</li>
<li>(04:00) Jon asks about the usage pattern for AutoFixture.(04:16) Jon asks about the different values returned for strings, ints, etc. Mark explains how that&#8217;s changed over time &#8211; numbers no longer just return sequential values, they now return random small numbers.</li>
<li>(05:20) Mark explains equivalence classes. Jon says &quot;Okay&quot; a lot. You can use AutoFixture in cases where you don&#8217;t care about the value; in cases where you do, you can configure what you want to. Mark explains some of the different ways you can use the AutoFixture API to set specific values when needed.</li>
<li>(09:15) Jon asks how AutoFixture works with mocking. Mark says there are NuGet packages which will interface with Moq, Rhino Mocks, FakeItEasy and NSubstitute.</li>
<li>(10:25) Jon asks Mark what his talk said about equivalence. Mark explains identity and value objects with an example with overriding the equals operator on a money value object. The more you can model your domain as value objects, the easier your tests become. Jon asks if this is an example of TDD driving a good design. Mark says that he tried letting tests completely drive his design a few years ago, but he found that it alone didn&#8217;t drive a very good overall design.</li>
</ul>
<li>Testing philosophy, Testing Trivial Methods</li>
<ul>
<li>(15:56) Jon asks Mark about his recent post advocating testing trivial methods. Mark says that his post was in response to Robert C. Martin&#8217;s post, The Pragmatics of TDD. Mark makes a case for testing getters and setters &#8211; if you decide to use a property rather than a field, that decision probably warrants a test to verify the property is maintaining the behavior that drove the original decision.</li>
<li>(20:38) Jon asks how this applies to the example of testing ASP.NET MVC controller code. Mark says he&#8217;s in the habit of testing everything, and has written a lot of tools to make writing the tests easy enough that it&#8217;s not a concern. The question is, how much does it cost you if a unit of code doesn&#8217;t function as designed? Mark explains how a controller action models the data flow in an MVC application, and decomposing the flow allows you to write smaller, simpler, more targeted tests.</li>
<li>(25:03) Jon asks how this relates to outside-in testing using tools like Selenium. Mark says that testing at the external boundary is fine if you can, but most applications become complex enough that boundary testing would require an impractical number of test cases.</li>
</ul>
<li>Wrap up</li>
<ul>
<li>(26:04) Mark says that many of these concepts are covered in more detail in Mark&#8217;s Pluralsight course.</li>
</ul>
</ul>
<p>Show Links:</p>
<ul>
<li>Mark Seeman (<a href="https://twitter.com/ploeh">@ploeh</a>, <a href="http://blog.ploeh.dk/">blog</a>) </li>
<li><a href="https://github.com/AutoFixture/AutoFixture">AutoFixture</a></li>
<li>Book: <a href="http://amazon.com/gp/product/B004X1D36K?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B004X1D36K&amp;linkCode=shr&amp;tag=jongall-20&amp;qid=1367272060&amp;sr=1-1">xUnit Test Patterns: Refactoring Test Code</a></li>
<li>Book: <a href="http://www.amazon.com/gp/product/B002TIOYVW?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B002TIOYVW&amp;linkCode=shr&amp;tag=jongall-20&amp;qid=1367277246&amp;sr=8-1">Growing Object-Oriented Software, Guided by Tests</a></li>
<li>Blog post: <a href="http://blog.ploeh.dk/2013/03/08/test-trivial-code">Test trivial code</a></li>
<li>Blog post by Uncle Bob Martin: <a title="http://blog.8thlight.com/uncle-bob/2013/03/06/ThePragmaticsOfTDD.html" href="http://blog.8thlight.com/uncle-bob/2013/03/06/ThePragmaticsOfTDD.html">The Pragmatics of TDD</a></li>
<li>Pluralsight announcement: <a href="http://blog.pluralsight.com/2013/04/15/new-course-advanced-unit-testing/">New course: Advanced Unit Testing</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/--46jNYPceE" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=bS6XkPQpQTo:WLjls55AGKE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=bS6XkPQpQTo:WLjls55AGKE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=bS6XkPQpQTo:WLjls55AGKE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=bS6XkPQpQTo:WLjls55AGKE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=bS6XkPQpQTo:WLjls55AGKE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=bS6XkPQpQTo:WLjls55AGKE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=bS6XkPQpQTo:WLjls55AGKE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=bS6XkPQpQTo:WLjls55AGKE:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-165-mark-seemann-on-autofixture-and-unit-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/p0Hc0OBaDqY/HerdingCode-0165-Mark-Seemann-on-AutoFixture-and-Unit-Testing.mp3?#" length="13870225" type="audio/mpeg" />
		</item>
		<item>
		<title>Herding Code 164: OWIN and Katana with Louis DeJardin</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/GjNwkszdFgc/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/GjNwkszdFgc/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 19:35:36 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[interview]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=536</guid>
		<description><![CDATA[This week on Herding Code, the guys talk to Louis DeJardin about OWIN &#8211; the Open Web Interface for .NET &#8211; and Katana, an open source OWIN implementation for ASP.NET and IIS. Download / Listen: Herding Code 164: OWIN and Katana with Louis DeJardin Show Notes: Intro (00:44) Scott and Louis explain what OWIN is. [...]]]></description>
				<content:encoded><![CDATA[<p>This week on Herding Code, the guys talk to Louis DeJardin about OWIN &#8211; the Open Web Interface for .NET &#8211; and Katana, an open source OWIN implementation for ASP.NET and IIS.</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0164-OWIN.mp3">Herding Code 164: OWIN and Katana with Louis DeJardin</a>
<p>Show Notes:</p>
<ul>
<li>Intro </li>
<ul>
<li>(00:44) Scott and Louis explain what OWIN is. </li>
<li>(01:33) Louis explains the difference between OWIN (the community standard) and Katana (actual bits &#8211; an implementation of the OWIN standard for ASP.NET). </li>
<li>(03:18) Jon asks if this is similar to the distinction between HTTP / HTML standards and browser implementations. Louis explains what&#8217;s required for an implementer to participate in a request. Each request calls a simple func with an IDictionary&lt;string&gt; which returns a task. </li>
</ul>
<li>The killer app: middleware</li>
<ul>
<li>(04:54) Scott talks about how the pipeline might not sound like much, but it can support a lot of really useful middleware scenarios like static caching and domain splitting &#8211; especially in a way that&#8217;s common across frameworks. </li>
<li>(06:05) Louis talks about the challenge they&#8217;ve had in describing the benefit of OWIN in non-academic terms, and that it&#8217;s not until you want to apply cross-framework concerns like authentication that OWIN really shines. </li>
<li>(07:52) Scott says that previously these kinds of concerns &#8211; logging, etc. &#8211; were wrapped up in System.Web, and they had performance implications regardless of whether you used them. The pipeline model lets you avoid those hits unless you explicitly want the features. </li>
<li>(10:03) Scott mentions some of the frameworks which have implemented OWIN, including NancyFx, Fubu, ServiceStack.</li>
<li>(10:50) Kevin says that the current implementation examples are full web frameworks rather than middleware. Louis says that probably because ASP.NET and IIS already had pipeline implementations so there&#8217;s less of a forcing function than there was with Node and Ruby. Scott says that since the current implementations already have full stacks, there&#8217;s less need to plug in modular solutions. Jon says he thinks that the late arrival of NuGet and other open modular systems like this mean it&#8217;ll take a while to get traction. </li>
<li>(14:40) Louis says we&#8217;ll need a killer app, and HttpListener hosting alone isn&#8217;t that. Jon asks if you&#8217;d host Katana under IIS to manage the process. Louis says yes, and until there are other hosts than IIS he doesn&#8217;t see the hosting as a big draw &#8211; he thinks auth is probably it.</li>
<li>1640 Scott says he could see auth frameworks and scaling middleware. Louis says that David Fowler updated JabbR to run on OWIN, and was able to move some of the scale pieces into OWIN middleware.</li>
<li>(18:25) Jon asks if he can take an existing ASP.NET application to start taking advantage of middleware without rewriting the application. Louis says that if you add the Microsoft.Owin.Host.SystemWeb NuGet package, you can put an OWIN pipeline on the route table. You can also use an IHttpHandler to plug in middleware. They&#8217;re looking at third option &#8211; an integrated pipeline module which will delegate to the application if an OWIN handler doesn&#8217;t pick it up.</li>
<li>(22:22) Jon asks Louis has some other ideas for middleware, and Louis lists several (static file handlers, authentication, etc.) and points to Rack and Node as examples. He lists another example &#8211; anti-bot&#160; protection that returns an HTTP 200 for a URL pattern. </li>
</ul>
<ul>
<li>(23:50) Jon asks if it&#8217;s possible to plug things in at runtime. Louis talks about the Startup class &#8211; it&#8217;s a POCO class so you can easily work with it via IoC, plug things in whenever &#8211; it&#8217;s just code. </li>
<li>(25:05) Scott says he looked at implementing URL rewriting in middleware. Louis explains how this works perfectly with the pipeline and describes how you could also use this to monitor 404s. </li>
<li>(26:45) Scott says hosters could implement middleware to set ETAGS, enforce things, etc. </li>
<li>(27:40) Louis explains why it&#8217;s really powerful to have middleware that&#8217;s not coupled to a specific implementation like ASP.NET MVC. </li>
<li>(28:35) Jon asks if it&#8217;s possible that some of this middleware could run on hardware. Louis says it is, and gives an example with a reverse proxy. </li>
<li>(29:57) Scott talks about breaking middleware into application and networking uses and talks of some optimizations that could be done in middleware.</li>
</ul>
<li>Next </li>
<ul>
<li>(31:48) Scott asks where we go from here &#8211; are done? What&#8217;s the next goal? Louis says the current 1.0 version of Katana has IIS hosting; the 1.1 version will add production grade HttpListener and self host story, and after that it&#8217;s about supporting emerging standards and looking for synergies. Louis says documentation would be nice, but Scott says that the model is so simple that there&#8217;s not a lot to document.</li>
<li>(34:50) Scott and Louis talk about how this will affect the ecosystem in general, with an example of how smoothly the SignalR implementation worked. </li>
<li>(35:25) Jon asks about the future for hosters like Azure, AppHarbor, etc. Louis talks about an example for&#160; supporting zip file based deployment, Mono hosting. </li>
</ul>
<li>Getting involved </li>
<ul>
<li>(37:05) Louis talks about what&#8217;s available in the Katana Project, including sample code and pre-release packages. The Google Group &#8211; net-http-abstractions &#8211; is the best place to discus OWIN. </li>
<li>(38:15) Jon asks if the Katana project takes pull requests. Louis says it&#8217;s run under the MS Open Tech organization and is clear to take pull requests from developers who have signed a contributor license agreement. Jon asks for areas where they&#8217;d like help. Scott says he&#8217;d like to see lots of middleware; Louis he&#8217;d love to see an OWIN Contrib project emerge. </li>
</ul>
<li>Questions from Twitter
<ul>
<li>(41:05) Sean Massa (@endangeredmassa): Is it possible to use the DLR? </li>
<li>(41:45) Eric Hexter (@ehexter): what do MVC and Web Forms look like on OWIN. Louis says there are two exciting things there &#8211; you can have an Owin pipeline running in front of your application, or you can use self hosting to put an application inside of your own process (not supported but fun!). </li>
</ul>
</li>
</ul>
<p>Show Links:</p>
<ul>
<li>Louis DeJardin (<a href="https://twitter.com/loudej">@loudej</a>, <a href="http://whereslou.com/">blog</a>) </li>
<li><a href="http://owin.org/">OWIN &#8211; Open Web Interface for .NET</a> </li>
<li><a href="http://katanaproject.codeplex.com/">Katana Project on CodePlex</a> </li>
<li>Google Group: <a href="http://groups.google.com/group/net-http-abstractions">.NET HTTP Abstractions</a></li>
<li>NuGet package: <a href="https://nuget.org/packages/Microsoft.Owin.Host.SystemWeb">Microsoft.Owin.Host.SystemWeb</a></li>
<li>GitHub: <a title="https://github.com/ServiceStack/ServiceStack.Owin" href="https://github.com/ServiceStack/ServiceStack.Owin">ServiceStack.Owin</a></li>
<li>NuGet: <a title="https://nuget.org/packages/Nancy.Hosting.Owin/" href="https://nuget.org/packages/Nancy.Hosting.Owin/">Nancy.Hosting.Owin</a></li>
<li>NuGet: <a title="https://nuget.org/packages/FubuMVC.Katana/" href="https://nuget.org/packages/FubuMVC.Katana/">FubuMVC.Katana</a></li>
<li><a href="http://herdingcode.com/?p=216">Herding Code 60: Spark View Engine with Louis DeJardin</a> </li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/GjNwkszdFgc" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=UfnamoqSMjk:5MOCQIswGxk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=UfnamoqSMjk:5MOCQIswGxk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=UfnamoqSMjk:5MOCQIswGxk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=UfnamoqSMjk:5MOCQIswGxk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=UfnamoqSMjk:5MOCQIswGxk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=UfnamoqSMjk:5MOCQIswGxk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=UfnamoqSMjk:5MOCQIswGxk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=UfnamoqSMjk:5MOCQIswGxk:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-164-owin-and-katana-with-louis-dejardin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/AXHllPiUIKg/HerdingCode-0164-OWIN.mp3?#" length="23948656" type="audio/mpeg" />
		</item>
		<item>
		<title>Herding Code 163: Sticker Tales and Building Windows Store apps with Damien Guard and Robert Sweeney</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/Pl5fGyqqxW0/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/Pl5fGyqqxW0/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 19:53:59 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=531</guid>
		<description><![CDATA[This week on Herding Code, the guys talk to Damien Guard and Robert Sweeney about Sticker Tales (a Windows Store application for kids), some challenges in building touch applications for kids, their CSharpAnalytics open source library, and a companion app they built for Western Digital. Download / Listen: Herding Code 163: Sticker Tales and Building [...]]]></description>
				<content:encoded><![CDATA[<p>This week on Herding Code, the guys talk to Damien Guard and Robert Sweeney about Sticker Tales (a Windows Store application for kids), some challenges in building touch applications for kids, their CSharpAnalytics open source library, and a companion app they built for Western Digital.</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0163-Sticker-Tales-and-Building-Windows-Store-apps.mp3">Herding Code 163: Sticker Tales and Building Windows Store apps</a>
<p>Show Notes:</p>
<ul>
<li>Introductions </li>
<ul>
<li>(00:39) Damien describes what he&#8217;s been up to since we last talked to him. </li>
<li>(01:25) Robert worked on the Windows user interface, then XBox.com, then several apps for NetFlix. </li>
<li>(02:57) Jon asked about the experience of building high scale customer facing applications at XBox and NetFlix. Damian tells about how they ran the XBox store on two servers. </li>
</ul>
<li>Building Sticker Tales</li>
<ul>
<li>(03:38) Jon asks how they decided to build a sticker book app. Robert explains how they got started. </li>
<li>(04:45) Robert describes how they decided to spend some money on professional illustration. </li>
<li>(05:40) Jon describes how Sticker Tales works and how he loves watching what his five year old daughter comes up with, especially how she plays with scale. Robert says he sees the same as his daughter </li>
<li>(6:57) Damien describes some of the surprises they saw in user testing. </li>
<li>(8:30) Scott K asks if their experiences in watching how kids interact with touch gestures will influence their design in general. </li>
<li>(9:18) Damien talks about some of the changes the kids inspired, especially using direction of motion to flip things. Jon says he wants this flip gesture everywhere, and Scott K says he thinks kids should be interaction testing all touch interfaces. </li>
<li>(10:44) Damien gives another example with how pinch / zoom didn&#8217;t work well for kids, and they added a handle instead. </li>
<li>(11:26) Jon asks about how they were interacting with the illustrators. Robert describes the interaction and how they handled different image sizes, exporting, etc. </li>
</ul>
<li>In-app purchases</li>
<ul>
<li>(13:37) Jon asks about the &quot;free app + in app purchase&quot; model. Robert explains why they chose that model.</li>
<li>(14:48) Jon asks if the in-app purchases were difficult to set up. Damien says yes and explains how it was set up. Robert says the purchasing is easy, but the delivery is up to you as the developer. </li>
</ul>
<li>Google Analytics and the CSharpAnalytics library</li>
<ul>
<li>(17:00) K Scott asks about what kind of analytics they were using. Damien explains how they used Google Analytics and explains they published that library as CSharpAnalytics on GitHub. Damien likes tracking usage patterns, Robert says he loves the real-time and geographic views. </li>
<li>(18:19) Robert says they track initiated vs. completed purchases, and they see it&#8217;s only about 10%. Jon speculates that&#8217;s because kids start the purchase and the parents veto it. </li>
<li>(19:08) K Scott asks if it&#8217;s only available for Windows 8. Damien says that&#8217;s all that&#8217;s documented, but he&#8217;s set it up to work with Windows Phone as well. </li>
<li>(19:30) Jon asks about how auto-analytics work. </li>
</ul>
<li>Platform targeting &#8211; iPad future, Windows 8 implementation</li>
<ul>
<li>(20:40) Kevin asks if they&#8217;re looking at porting this to iPad. Robert says they&#8217;re looking at using Xamarin for that. </li>
<li>(21:24) Jon asks about what Windows 8 integration points they&#8217;re using. Robert discusses live tiles, sharing, search, and background download API support. </li>
<li>(22:58) Jon asks if they used C# / XAML or HTML. Damien says they went with C# / XAML partly because the touch API support seemed better early on. </li>
</ul>
<li>SharpDX and performance</li>
<ul>
<li>(23:30) Damien explains that they&#8217;re using SharpDX to be able to take screenshots for live tiles, sharing, etc. Jon gets confused and thinks they&#8217;re using SharpDX everywhere, but Robert explains it&#8217;s only for saving screenshots &#8211; everything else is using image controls. </li>
<li>(26:54) Jon asks if they ran into any performance issues. Robert explains some of the guidelines they&#8217;d learned at NetFlix and says that everything&#8217;s worked really well in StickerTales. Damien says they&#8217;ve seen great performance on Surface / ARM as well. Jon says he&#8217;s seen Audacity recompiled for ARM and it worked great on Surface, too. </li>
</ul>
<li>Data storage and MVVM perspective</li>
<ul>
<li>(28:34) Jon asks what they&#8217;re using for data storage; Damien says using XML.</li>
<li>(28:46) Robert says they&#8217;re not using MVVM because it just doesn&#8217;t work with the Microsoft tools and isn&#8217;t worth it for the kinds of thin clients they&#8217;ve been building, even at NetFlix.</li>
</ul>
<li>Western Digital companion application</li>
<ul>
<li>(30:07) Jon asks how about their next project, a companion application for Western Digital. Damien describes how Western Digital wanted an application that would present an all-up aggregate view of media on external media.</li>
<li>(30:42) Damien says they using SQLite for that project and explains the challenges they ran into with hierarchical data storage in a relational database engine.</li>
</ul>
<li>Unit Testing Windows Store application code</li>
<ul>
<li>(32:52) Kevin asks about the testing story. Damien says they used MSTest and it all worked fine, with the exception of determining code coverage. Jon asks some questions about testing frameworks and test focus for Windows Store applications.</li>
<li>(35:20) Robert says the WinRT platform wasn&#8217;t written in a very testable manner &#8211; there are lots of static classes and a generally test resistant API.</li>
</ul>
<li>Business Challenges and Opportunity for Windows Store Developers</li>
<ul>
<li>(36:38) Jon asks about the challenges of building and running a company that&#8217;s building Windows 8 applications. Robert describes some of the perception and education issues they face in selling the potential to customers.</li>
<li>(38:20) Scott K compares the current Windows Store opportunity to the pre-iOS Mac development market &#8211; a nice place to create a niche product and make a good living. Damien says it is nice to be featured in the store, and that&#8217;s difficult on other platforms. Robert says that ease of developing Windows Store applications means that you still need to market your applications.</li>
</ul>
</ul>
<p>Show Links:</p>
<ul>
<li>Damien Guard (<a href="https://twitter.com/damienguard">@damienguard</a>, <a href="http://damieng.com/">blog</a>)</li>
<li>Robert Sweeney (<a href="http://www.linkedin.com/in/rsweeney21">LinkedIn</a>)</li>
<li><a href="http://stickertales.com/">Sticker Tales</a></li>
<li><a title="http://attackpattern.com/" href="http://attackpattern.com/">Attack Pattern</a></li>
<li><a href="https://github.com/AttackPattern/CSharpAnalytics">CSharpAnalytics</a></li>
<li><a href="http://sharpdx.org/">SharpDX</a> </li>
<li><a href="http://attackpattern.com/portfolio/wd-companion-app/">WD Companion App</a> </li>
<li><a href="http://herdingcode.com/?p=187">Herding Code 50: Damien Guard on LINQ to SQL, Entity Framework, and Fontography</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/Pl5fGyqqxW0" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=v7WL2Ss_USU:YGnpP821eoM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=v7WL2Ss_USU:YGnpP821eoM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=v7WL2Ss_USU:YGnpP821eoM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=v7WL2Ss_USU:YGnpP821eoM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=v7WL2Ss_USU:YGnpP821eoM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=v7WL2Ss_USU:YGnpP821eoM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=v7WL2Ss_USU:YGnpP821eoM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=v7WL2Ss_USU:YGnpP821eoM:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-163-sticker-tales-and-building-windows-store-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/OgoVK0KxARU/HerdingCode-0163-Sticker-Tales-and-Building-Windows-Store-apps.mp3?#" length="13855190" type="audio/mpeg" />
		</item>
		<item>
		<title>Herding Code 162: Whacha doin, Goodbye Google Reader, scriptcs and Lightning Round!</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/TFdalTyyQJs/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/TFdalTyyQJs/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 18:01:55 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=527</guid>
		<description><![CDATA[This week on Herding Code, the guys talk about what they&#8217;ve been up to lately (including Kevin&#8217;s new Greater Than Parts site), lament the passing of Google Reader, talk about scriptcs, and even fit in a lightning round! Download / Listen: Herding Code 162: Whacha doin, Goodbye Google Reader, scriptcs and Lightning Round! Show Notes: [...]]]></description>
				<content:encoded><![CDATA[<p>This week on Herding Code, the guys talk about what they&#8217;ve been up to lately (including Kevin&#8217;s new Greater Than Parts site), lament the passing of Google Reader, talk about scriptcs, and even fit in a lightning round!</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0162-Discussion.mp3">Herding Code 162: Whacha doin, Goodbye Google Reader, scriptcs and Lightning Round!</a>
<p>Show Notes:</p>
<ul>
<li>What are you up to?
<ul>
<li>(00:29) Scott K is doing MVC with a lot of JavaScript.
<ul>
<li>He laments the quality of the code he&#8217;s working with. </li>
<li>There&#8217;s a discussion of how bad code happens and how to clean it up. </li>
</ul>
</li>
<li>(07:58) Kevin&#8217;s been working on his GreaterThanParts site.
<ul>
<li>He soft launched it on twitter and got more response than he expected, but it&#8217;s been holding up. </li>
<li>It&#8217;s a full JavaScript stack &#8211; Node, Backbone, Mongo. </li>
<li>Kevin was surprised how resistant developers were to trying out the site via Google / Facebook login, so he set up an anonymous (cookie based) login. </li>
<li>Scott K has some specific feature requests. </li>
<li>Jon asks if the design feedback was coherent or contradictory. Kevin says some was really good, a lot wasn&#8217;t </li>
</ul>
</li>
<li>(15:40) Jon talks about the ASP.NET Jump Start event he did in February and some upcoming Web Camp he&#8217;s doing &#8211; Denmark, Istanbul, Sunnyvale, San Diego. In his spare time he&#8217;s working on a book about programming Windows 8.
<ul>
<li>Scott K mentions a blog post he read about a developer who was frustrated he couldn&#8217;t store password protected zip files or preview office docs. Jon says it&#8217;s an app model and it&#8217;s different than building desktop apps. Kevin wonders about how the updates will work for Windows Store apps. </li>
<li>Scott K says he read about limitations in displaying help files. Jon says that some things are easier to do using the HTML dev model, and he&#8217;s seeing some people writing business logic in C# and using it in an HTML app. </li>
<li>K Scott talks about the current campaign to pay developers for apps. Jon says he thinks that may be driven by the fact that all the tech columnists just write about the number of apps in the store, but he agrees that fewer quality apps is better. The Windows Store has a try / buy model, which effectively halves the number of apps required compared to Android and iOS. Jon talks about how he&#8217;s been using the Surface RT. </li>
</ul>
</li>
<li>(25:49) Google Reader
<ul>
<li>K Scott asks if anyone&#8217;s upset. Kevin is. </li>
<li>Scott K hasn&#8217;t used it in a while because he just uses Twitter and an RSS reader he likes. </li>
<li>Jon says he used to read tons of feed, but he now gets most of his info off Twitter, Hacker News, and TheCadmus.com </li>
<li>Scott K says he&#8217;s going to need to replace Reader because he follows some feeds he cares about that will never make their way onto Hacker News. </li>
<li>Jon says he used to use Reader more when it had Google Gears support. He talks about how he tried to write his own RSS reader which never materialized, but he learned a lot along the way. </li>
<li>Kevin says the bigger problem is that so many apps use Google Reader as an RSS sync backend. </li>
<li>Jon says he&#8217;s happy that the whole RSS system isn&#8217;t dependent on Google Reader, and that it&#8217;s a good thing that major parts of the web stayed open. </li>
</ul>
</li>
<li>(34:45) scriptcs
<ul>
<li>K Scott overviews the idea. </li>
<li>Scott K says he thinks it&#8217;s interesting &#8211; a natural use of Roslyn. He&#8217;s been wanting something that would output assemblies so it could create projects. </li>
<li>Jon talks about some of the samples they&#8217;ve got, including WPF, Mono, etc. He says he&#8217;d prefer it to PowerShell since it could be more portable and the syntax is better. </li>
<li>Kevin says many of these ideas came from the Node community. He&#8217;s really enjoying the low overhead of working in vim. Scott agrees. Jon says he doesn&#8217;t see Visual Studio delays, maybe because he&#8217;s not using heavy add-ins. A border skirmish erupts. Kevin says that he thinks that .NET programming kind of requires Visual Studio. Jon like the new web tools stuff. </li>
</ul>
</li>
<li>(44:27) Lightning Round!
<ul>
<li>K Scott asks if anyone cares about the S4 release. Nobody does. We&#8217;re all kind of tired of smartphone releases. </li>
<li>K Scott asks what we&#8217;d recommend for teaching someone to program. Scott K, Kevin, and Jon all agree that they&#8217;d start with the web and JavaScript and talk about some of their favorite tools. </li>
<li>K Scott asks what everyone thinks about the new Rearden.js library with the Rearden Metal templating system. </li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="http://www.greaterthanparts.com/">Greater Than Parts</a> &#8211; Kevin&#8217;s new &quot;simple shopping for complex projects&quot; site</li>
<li><a href="http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start">ASP.NET Jump Start</a> </li>
<li><a href="http://weblogs.asp.net/jgalloway/archive/2013/03/15/announcing-web-camps-spring-tour-2013.aspx">Web Camps tour</a> &#8211; Jon&#8217;s post announcing the Spring 2013 tour<!--EndFragment--></li>
<li><a title="http://blog.kulman.sk/why-are-there-no-great-windows-8-apps-because-of-winrt-a-developers-view/" href="http://blog.kulman.sk/why-are-there-no-great-windows-8-apps-because-of-winrt-a-developers-view/">Blog post: Why are there no great Windows 8 apps? Because of WinRT. A developer&#8217;s view</a> </li>
<li><a title="http://en.wikipedia.org/wiki/Gears_(software)" href="http://en.wikipedia.org/wiki/Gears_(software)">Google Gears</a> </li>
<li><a title="http://treesurgeon.codeplex.com/" href="http://treesurgeon.codeplex.com/">Tree Surgeon</a> </li>
<li><a href="http://googlereader.blogspot.com/2013/03/powering-down-google-reader.html">Powering Down Google Reader</a> </li>
<li><a href="http://thecadmus.com/">TheCadmus</a> </li>
<li><a href="http://codebetter.com/glennblock/2013/02/28/scriptcs-living-on-the-edge-in-c-without-a-project-on-the-wings-of-roslyn-and-nuget/">scriptcs &#8211; Living on the edge in C# without a project on the wings of Roslyn and Nuget</a> </li>
<li><a title="http://scriptcs.net/" href="http://scriptcs.net/">http://scriptcs.net/</a> </li>
<li><a href="http://livereload.com/">LiveReload</a> </li>
<li><a title="http://www.codecademy.com/#!/exercises/0" href="http://www.codecademy.com/">Codecademy</a> </li>
<li><a href="http://jsbin.com/">JS Bin</a> </li>
<li><a href="http://repl.it/">repl.it</a> </li>
<li><a href="https://github.com/reardenjs/reardenjs">ReardenJS</a> </li>
<li><a href="https://github.com/madrobby/vapor.js">Vapor.js</a> </li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/TFdalTyyQJs" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zF9GvQ-TWgE:l5hoomOteho:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zF9GvQ-TWgE:l5hoomOteho:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=zF9GvQ-TWgE:l5hoomOteho:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zF9GvQ-TWgE:l5hoomOteho:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=zF9GvQ-TWgE:l5hoomOteho:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zF9GvQ-TWgE:l5hoomOteho:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=zF9GvQ-TWgE:l5hoomOteho:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=zF9GvQ-TWgE:l5hoomOteho:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-162-whacha-doin-goodbye-google-reader-scriptcs-and-lightning-round/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/cOw51HIKe64/HerdingCode-0162-Discussion.mp3?#" length="17240198" type="audio/mpeg" />
		</item>
		<item>
		<title>Herding Code 161: Single Page Applications with John Papa and Ward Bell</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/2wmLEXfnKCs/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/2wmLEXfnKCs/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 22:56:10 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=523</guid>
		<description><![CDATA[While at MVP Summit, Jon and the Scotts talk to John Papa and Ward Bell about Single Page Applications, the new ASP.NET and Web Tools 2012.2 SPA templates, and John and Ward&#8217;s new Hot Towel SPA template (you need a hot towel at a spa, get it?). Download / Listen: Herding Code 161: Single Page [...]]]></description>
				<content:encoded><![CDATA[<p>While at MVP Summit, Jon and the Scotts talk to John Papa and Ward Bell about Single Page Applications, the new ASP.NET and Web Tools 2012.2 SPA templates, and John and Ward&#8217;s new Hot Towel SPA template (you need a hot towel at a spa, get it?).</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0161-Single-Page-Applications.mp3">Herding Code 161: Single Page Applications with John Papa and Ward Bell</a>
<p>Show Notes:</p>
<ul>
<li><strong>Intro</strong>
<ul>
<li>(01:10) K Scott asks John Papa about to overview what&#8217;s just been released. </li>
<li>(01:24) Jon explains how he remembers the ASP.NET and Web Tools 2012 release, comparing it to a video game &quot;map pack&quot;. </li>
<li>(02:04) John says that one of the new features in this release is that you can create new File / New / Project templates for ASP.NET MVC using VSIX. </li>
<li>(03:18) Scott K says you can find all the new goodies at <a href="http://asp.net/vnext">http://asp.net/vnext</a>. </li>
</ul>
</li>
<li><strong>Hot Towel overview</strong>
<ul>
<li>(03:37) K Scott asks what happens when you create a new Hot Towel project. </li>
<li>(04:30) K Scott asks what&#8217;s included:
<ul>
<li>Durandal </li>
<li>Knockout </li>
<li>Breeze </li>
<li>Some other nice things: jQuery, Bootstrap, Moment </li>
<li>The useful parts of the ASP.NET stack </li>
</ul>
</li>
</ul>
</li>
<li><strong>Durandal and getting the various libraries to play well together</strong>
<ul>
<li>(06:00) Jon asks if everything in the Hot Towel parts fit together well, and if it was hard to get them to play well together. </li>
<li>(07:14) Durandal uses Require.js for AMD for script dependency resolution. Hot Towel is still using ASP.NET Bundling and Minification system, although when you deploy you can use Durandal&#8217;s compilation system. </li>
<li>(09:03) Ward talks about what he likes about Durandal.
<ul>
<li>You can bring any thing you know from Caliburn.Micro in, including convention based view composition. </li>
<li>It includes a lot of useful debugging and tracing information in the console. That includes intercepting problems with Sammy.js (which would otherwise just report &quot;Error&quot; without any context), binding failures, etc. </li>
</ul>
</li>
<li>(10:24) Hot Towel also includes Toaster, which is really useful for debugging. </li>
<li>(11:15) Hot Towel has really been carefully assembled and and configured so it all really works well together. </li>
<li>(12:06) John says Hot Towel solves a common problem people experience when getting started with SPA development &#8211; it&#8217;s hard to figure out which libraries to use and how to hook them together. </li>
</ul>
</li>
<li><strong>What&#8217;s the sweet spot? Line of business apps? Websites?</strong>
<ul>
<li>(13:20) K Scott asks if the sweet spot for Hot Towel is for for line of business applications. John says that&#8217;s what it&#8217;s been used for. It&#8217;s great for data intensive applications, but he says it&#8217;s not a good fit if you&#8217;re just building a website. </li>
<li>(13:53) Jon asks about the SEO story. John says there really isn&#8217;t a great solution for it, but says that for most SPA stories &#8211; e.g. line of business CRUD apps &#8211; you probably don&#8217;t need or want search engines to be able to read it. For some cases, like a store scenario, you might want a hybrid solution. The store would be a standard website that&#8217;s SEO friendly, but when you shift to buying something you enter a SPA experience. </li>
</ul>
</li>
<li><strong>Organize all the scripts!</strong>
<ul>
<li>(15:45) K Scott asks how John organizes code for a SPA. John says he likes to put all the application specific scripts into a separate /scripts/app folder. Jon says he noticed that in the RTM version of the SPA template, and Ward and John confess to having been the driving forces behind that change. </li>
<li>(17:37) John talks about the two crowds who are using these scripts &#8211; there are people who have been using JavaScript for a while, and developers who are used to C# and are starting to do more JavaScript development. Simple things like pascal casing vs. camel casing make a big difference in how experienced JavaScript developers perceive and enjoy the shipped JavaScript code. </li>
</ul>
</li>
<li><strong>Bringing grownup architecture into client side coding</strong>
<ul>
<li>(18:19) Ward talks about other problems in earlier versions, like lumping the viewmodel and data access, etc. He says he understands the effort to make things easy for beginners to figure out, and Scott talks about some of the sloppy, oversimplified JavaScript in some other Microsoft releases. John says that the new script organization in the release turned out both better and easier to understand. </li>
<li>(20:48) Scott talks about his thoughts on client-side MVC: HTML is the model, CSS is the view, JavaScript is the controller. </li>
<li>(22:04) John says we&#8217;ve been figuring out of the past few years that it&#8217;s not okay to just throw JavaScript code up there until it works. He says he often surveys developers and asks how many of them have read a book on JavaScript with dismaying results. Scott says it&#8217;s not just a problem with disorganized code, you end up with resource management issues. Scott, John and Ward commiserate on the problems they&#8217;ve seen with sloppy code in long running JavaScript applications. </li>
<li>(24:31) Ward talks about the importance of good coding principles, especially the single responsibility principle. John says SRP is incredibly useful just about everywhere. Scott says he sees the same thing with testable JavaScript code. </li>
</ul>
</li>
<li><strong>Hello World and Hello World scenarios</strong>
<ul>
<li>(26:37) K Scott asks if there&#8217;s a hello world style application when you create a new Hot Towel application. John says there is, but it&#8217;s absolutely minimal so that it&#8217;s actually useable as a starting point for an application. There&#8217;s no database. Ward says Hot Towel has two simple pages with just enough code to get you started; use the other SPA templates to learn about the frameworks, then build your real app with Hot Towel &#8211; if you&#8217;re going with a Knockout-based UI. </li>
<li>(28:37) Scott K says he sees Knockout and Angular cluttering your HTML in ways that violate some of the principles discussed earlier. Ward that you can do both without declarative HTML binding if you want. There&#8217;s a discussion of convention based bindings; K Scott asks if the Caliburn.Micro convention based bindings are used in Hot Towel, Ward explains why it&#8217;s not done. </li>
<li>(31:40) John talks about some poor practices he sees in Knockout demos which just throw in some JavaScript code after the bindings rather than just using a click binding or using delegation. </li>
<li>(33:32) Scott asks if we&#8217;d have imagined 10 years ago that we&#8217;d be writing JavaScript code. </li>
<li>(33:54) Ward says the thing that blows his mind is that we&#8217;re talking about a ToDo list like it&#8217;s rocket science. There&#8217;s a description of the canonical sample scenarios. Jon proposes the Contoso SPA, Scott talks about how everyone was writing blog samples a few years ago. </li>
<li>(35:43) John explains that he wrote Hot Towel so that you could use it without having to rip out a bunch of demo code; Ward says it also completes the stack, providing IoC, screen management, etc. The price tag of restructuring around composed JavaScript libraries is a lot of small files, figuring out AMD, etc. John and Ward praise Durandal some more. </li>
<li>(38:52) Scott K says there&#8217;s still a tooling problem with lots of injected JavaScript files. Ward and John say they don&#8217;t see that as long as they keep things organized. </li>
</ul>
</li>
<li><strong>Getting started with SPA development</strong>
<ul>
<li>(40:27) K Scott asks for two things developers should do before getting started with SPAs. John says the first thing is to remember that you can apply your current good coding practices, the second is that you should treat the code as a real language and take advantage of patterns, especially the module pattern. Ward says use your intuition &#8211; if something smells bad, stop doing it and ask for help. </li>
<li>(43:03) John says don&#8217;t worry too much about which framework is the best, just pick one that feels natural. There&#8217;s a discussion of how the different frameworks have different feels, and you can just pick one and get started. </li>
</ul>
</li>
<li><strong>Did Silverlight development experience help?</strong>
<ul>
<li>(45:15) Jon says he first encountered a lot of these issues in Silverlight development. John says yes, and explains how his skills applied. Ward says he can&#8217;t comment on how it&#8217;d have been for him if he hadn&#8217;t used Silverlight, but that if you do have Silverlight experiences they&#8217;ll definitely apply. John talks about his experiences with Code Camper. </li>
</ul>
</li>
<li><strong>Can mere mortals create VSIX MVC templates?</strong>
<ul>
<li>(50:18) K Scott asks how difficult it was to create a VSIX based MVC template and if listeners could start with it. John says he waited for Ward to figure it and he copied Ward&#8217;s work, which wasn&#8217;t too bad. Ward explains what was difficult &#8211; mostly it comes down to poor documentation and duplicate references to files. He says he also hit issues with pulling in NuGet packages from multiple sources. Hot Towel is available as a NuGet package as well. </li>
</ul>
</li>
<li>Randomness
<ul>
<li>(58:11) The customary discussion of Ward&#8217;s wardrobe occurs. </li>
<li>(1:00:00) John talks about his upcoming PluralSight courses. Ward says he&#8217;s excited that BreezeJS was selected as part of the SPA story for ASP.NET and that he and IdeaBlade are focused on helping people as they&#8217;re getting started with Single Page Application development.&#160; </li>
</ul>
</li>
</ul>
<p>Show Links:</p>
<ul>
<li>Ward Bell (<a href="http://www.neverindoubtnet.blogspot.com/">blog</a>, <a href="https://twitter.com/wardbell">@wardbell</a>, <a href="http://twitter.com/wardbellsoutfit">@wardbellsoutfit</a>) </li>
<li>John Papa (<a href="http://johnpapa.net/">blog</a>, <a href="http://twitter.com/john_papa">@john_papa</a>) </li>
<li><a title="http://www.asp.net/single-page-application/overview/templates/hottowel-template" href="http://www.asp.net/single-page-application/overview/templates/hottowel-template">Hot Towel template</a> documentation on the ASP.NET site </li>
<li><a href="http://jpapa.me/spajsps">John Papa&#8217;s new Single Page Apps JumpStart course</a> on Pluralsight </li>
<li><a href="http://www.breezejs.com/">Breeze</a> &#8211; Build rich web apps in JavaScript with techniques you know </li>
<li><a href="http://herdingcode.com/?p=318">Herding Code 111 &#8211; John Papa on the Open Source Fest at MIX11</a> </li>
<li><a href="http://herdingcode.com/?p=499">Herding Code 155 &#8211; Ward Bell on Single Page Applications and Breeze</a> </li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/2wmLEXfnKCs" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=oavRs0HcniI:XV1GwrOrO68:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=oavRs0HcniI:XV1GwrOrO68:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=oavRs0HcniI:XV1GwrOrO68:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=oavRs0HcniI:XV1GwrOrO68:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=oavRs0HcniI:XV1GwrOrO68:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=oavRs0HcniI:XV1GwrOrO68:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=oavRs0HcniI:XV1GwrOrO68:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=oavRs0HcniI:XV1GwrOrO68:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-161-single-page-applications-with-john-papa-and-ward-bell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/lfkhf61w4Ss/HerdingCode-0161-Single-Page-Applications.mp3?#" length="34216314" type="audio/mpeg" />
		</item>
		<item>
		<title>Herding Code 160: Glimpse 1.0 release and Semantic Release Notes with Nik Molnar and Anthony vander Hoorn</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/cY0jzK7blRY/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/cY0jzK7blRY/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 21:34:39 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=519</guid>
		<description><![CDATA[While at MVP Summit, Jon and the Scotts talk to Nik and Anthony about the Glimpse 1.0 release, Semantic Release Notes and NuGet versioning. Download / Listen: Herding Code 160: Glimpse 1.0 release and Semantic Release Notes with Nik Molnar and Anthony vander Hoorn Show Notes: Intro (00:38) Nik and Anthony remind us of what [...]]]></description>
				<content:encoded><![CDATA[<p>While at MVP Summit, Jon and the Scotts talk to Nik and Anthony about the Glimpse 1.0 release, Semantic Release Notes and NuGet versioning.</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0160-Glimpse.mp3">Herding Code 160: Glimpse 1.0 release and Semantic Release Notes with Nik Molnar and Anthony vander Hoorn</a>
<p>Show Notes:</p>
<ul>
<li><strong>Intro</strong></li>
<ul>
<li>(00:38) Nik and Anthony remind us of what Glimpse does. </li>
</ul>
<li><strong>High level: What have they been up to? </strong>
<ul>
<li>(01:27) Nik explains how they&#8217;re now sponsored by RedGate software, but it Glimpse continues to be an open source project under Apache 2 license. The end result is that they&#8217;re both able to work 40 hours a week on it. </li>
<li>Anthony talks about the change to remove the dependency on System.Web.dll, allowing for compatibility with ASP.NET Web API and OWIN. </li>
</ul>
</li>
<li><strong>New features in Glimpse 1.0 </strong>
<ul>
<li>(03:24) Jon asks about new features. Nik says they&#8217;re mostly at feature parity with the previous release, with a lot of key refactoring. Some new features include:
<ul>
<li>Support for SignalR </li>
<li>Routes are available in Web Forms </li>
<li>They can determine and surface route constraints </li>
</ul>
</li>
<li>They&#8217;re working on MVC 4 support, System.Web.Optimizations, and Web API. </li>
<li>Anthony says the big goal of refactoring is to allow for fortnightly releases, which meant they needed to rework the core into something they could build on quickly. </li>
<li>(05:42) Jon asks about MVC 4 support. Nik says that everything in the MVC 3 package works, with the exception of Task based async support and newly added features like System.Web.Optimizations and Web API. Synchronous controllers and AsyncControllers work. </li>
</ul>
</li>
<li><strong>Notifications, Semantic Release Notes </strong>
<ul>
<li>(06:25) Anthony talks about support they&#8217;ve added to work better with more frequent updates, including update notifications. </li>
<li>That got them thinking &#8211; can they also show more information about what&#8217;s in the update? What about plugin updates? </li>
<li>Nik talks about what they&#8217;re doing to pull information from NuGet about installed packages. </li>
<li>(11:08) Nik explains how the extensibility model uses an attribute which indicates that the plugin came from a NuGet package and indicates which version of the package it came from. </li>
<li>(12:12) They want to give you information about what&#8217;s changed between releases, which led them to Semantic Release Notes. </li>
<li>Semantic Release Notes are written in Markdown format, but include typed information (inspired by Todo.txt) which allows them to determine what&#8217;s changed between any two releases. </li>
<li>(15:45) Jon and Scott K ask about why they picked Markdown as opposed to some other formats. Nik explains a lot of reasons, including compatibility with any text based release notes system. </li>
<li>(17:20) This allows them to present &quot;The Sports Center of Release Notes&quot; which showcases the relevant highlights. </li>
<li>(17:40) Anthony says NuGet release notes are virtually unused because they don&#8217;t offer any value. They&#8217;ve been talking to developers who say they&#8217;d be happy to include release notes if they were actually useful. </li>
<li>(19:33) Nik says that another benefit of a text-based format is that it could be extracted from commit messages. </li>
<li>(20:20) Nik says that NuGet has raised the water level the experience of installing release notes, understanding what an update does, configuration, overall experience. </li>
<li>(21:28) Nik says that Semantic Release Notes could also inform developers of Semantic Versioning problems &#8211; e.g. if you&#8217;ve got a breaking change, you should be bumping the major version number. </li>
</ul>
</li>
<li><strong>Problems with NuGet packages targeting product versions </strong>
<ul>
<li>(22:15) Anthony says they&#8217;ve run into some issues they&#8217;ve run into with NuGet. One issue they&#8217;ve run into is that developers often unwittingly install the Glimpse core package rather than the Glimpse.MVC package, which pulls in the core. They&#8217;re thinking about instead they could look at packages already installed in the project, determine that it&#8217;s an MVC project (for instance), and recommend installing the correct package (Glimpse.MVC in this case). </li>
<li>(26:00) There&#8217;s a discussion about problems to be considered with dependency scanning, notifying users, etc. </li>
<li>(27:55) Scott K asks about how this would work with locally hosted NuGet servers, MyGet, etc. Nik says they&#8217;ve seen a lot of cases of custom Glimpse plugins for things like e-commerce and internal information. </li>
<li>(28:55) There&#8217;s a MyGet feed with the nightly release, as well as a community feed for plugins. </li>
<li>(29:38) Scott K asks about how it works with local packages specifically. </li>
<li>(30:10) Nik talks about the problem with package explosion. NuGet allows you to target a specific .NET framework version, but not product versions. Jon asks why not just install Glimpse.MVC2, Glimpse.MVC3, etc. Anthony says this is a problem for any project that tries to factor things into a core with version specific dependant packages. </li>
<li>(34:28) Jon says they&#8217;re working hard to solve this problem, but would like to not have to. Anthony agrees: this is something he&#8217;d like see handled by NuGet itself. </li>
<li>(25:28) Nik says this is a growing problem, with examples from Windows 8 development. Jon talks about how he sees this problem in MVC 4. Anthony says he sees things moving in a good direction and that these are growing pains. </li>
<li>(37:25) Scott K asks if this is a problem that they&#8217;re seeing just because they have an ecosystem. </li>
<li>(38:40) Jon says he sees some people using VSIX instead of NuGet in cases where NuGet is limited. Nik says he&#8217;s frustrated that you can&#8217;t package up tooling &#8211; you can create a custom Web Platform Installer package at the high level, you can create a package.config at the project level, but there&#8217;s no solution for the installed tooling. </li>
</ul>
</li>
<li><strong>Miscellaneous jibber jabber and future possible features </strong>
<ul>
<li>(40:55) Anthony talks about the problems they&#8217;ve run into with XML documents and Sandcastle. </li>
<li>(42:48) Jon asks about possible future features. Scott K he&#8217;d like to see a plugin for Fiddler. Anthony talks about how they&#8217;re in a unique position with insight into the entire request pipeline, from browser through server and back to the browser. </li>
<li>(45:30) Scott K talks about how OWIN support allows access to a lot of other web stacks, too. </li>
<li>(45:55) Nik says that they include the Glimpse request ID as a header now, so you can trace the request in Fiddler or other network tools. </li>
<li>(47:00) Anthony says they&#8217;re realizing that they can do a lot more than just surface troubleshooting information for people who are learning, talking about the potential for an extensible mini-dashboard which can show really intelligent information &#8211; e.g. inform me if a request makes more than three database calls. </li>
<li>(50:14) Jon asks if there are any plugins which analyze security. There&#8217;s a discussion about automated OWASP analysis. </li>
<li>(52:10) Anthony says they&#8217;re talking to Brendan Forster about displaying decision trees visually. </li>
<li>(54:54) Jon asks what they&#8217;re looking at doing long term. Nik says they&#8217;re looking at doing some monthly conversations for developers. </li>
<li>(56:14) Jon asks how people can get involved. Answer: go to GetGlimpse.com. </li>
</ul>
</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="http://getglimpse.com/">GetGlimpse.com</a> </li>
<li><a href="http://www.semanticreleasenotes.org/">Semantic Release Notes</a> proposal</li>
<li><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0124-Anthony-van-der-Hoorn-and-Nik-Molnar-on-Glimpse.mp3">Herding Code 124: Anthony van der Hoorn and Nik Molnar on Glimpse</a> </li>
<li><a href="http://www.blog.anthonyvanderhoorn.com/">Anthony van der Hoorn</a> (<a href="http://twitter.com/anthony_vdh">@anthony_vdh</a>) </li>
<li>Nik Molnar (<a href="http://twitter.com/#!/nikmd23">@nikmd23</a>) </li>
<li><a href="http://shfb.codeplex.com/">Sandcastle Help File Builder</a> </li>
<li><a href="http://owin.org/">OWIN: Open Web Interface for .NET</a> </li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/cY0jzK7blRY" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=MpL8Gq2bGRM:-F9MJU0uEiw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=MpL8Gq2bGRM:-F9MJU0uEiw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=MpL8Gq2bGRM:-F9MJU0uEiw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=MpL8Gq2bGRM:-F9MJU0uEiw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=MpL8Gq2bGRM:-F9MJU0uEiw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=MpL8Gq2bGRM:-F9MJU0uEiw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=MpL8Gq2bGRM:-F9MJU0uEiw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=MpL8Gq2bGRM:-F9MJU0uEiw:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-160-glimpse-1-0-release-and-semantic-release-notes-with-nik-molnar-and-anthony-vander-hoorn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://herdingcode.com/wp-content/uploads/HerdingCode-0160-Glimpse.mp3?#" length="32140019" type="audio/mpeg" />
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/KZHMwxi3b70/HerdingCode-0124-Anthony-van-der-Hoorn-and-Nik-Molnar-on-Glimpse.mp3?#" length="47267831" type="audio/mpeg" />
		</item>
		<item>
		<title>MVC for the client side web is very simple</title>
		<link>http://www.lazycoder.com/weblog/2013/03/06/mvc-for-the-client-side-web-is-very-simple/</link>
		<comments>http://www.lazycoder.com/weblog/2013/03/06/mvc-for-the-client-side-web-is-very-simple/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 22:01:32 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=2696</guid>
		<description><![CDATA[Model: &#60;body&#62; &#60;h2&#62;Food List&#60;/h2&#62; &#60;div id=&#34;food&#34;&#62;Apple&#60;/div&#62; &#60;input type=&#34;text&#34; id=&#34;foodToAdd&#34; /&#62;&#60;button id=&#34;AddFood&#34; text=&#34;add&#34;/&#62; &#60;/body&#62; View: body { background-color:#000;font-family:serif;color:#ff00ff; font-size:1em } #food { border: 1 solid black; } Controller: &#60;script&#62; $(function() { $(&#34;#AddFood&#34;).click(onAddFoodClicked); }); function onAddFoodClicked(ev) { var currentlist = $(&#34;#food&#34;).text(); var foodToAdd = $(&#34;#foodToAdd&#34;).val(); $(&#34;#food&#34;).text(currentlist + &#34;,&#34; + foodToAdd); $(&#34;#foodToAdd&#34;).val(&#34;&#34;); } &#60;/script&#62; See? JS Bin]]></description>
				<content:encoded><![CDATA[<p>Model:</p>
<pre>
&lt;body&gt;
    &lt;h2&gt;Food List&lt;/h2&gt;
    &lt;div id=&quot;food&quot;&gt;Apple&lt;/div&gt;
    &lt;input type=&quot;text&quot; id=&quot;foodToAdd&quot; /&gt;&lt;button id=&quot;AddFood&quot; text=&quot;add&quot;/&gt;
&lt;/body&gt;
</pre>
<p>View:</p>
<pre>
body { background-color:#000;font-family:serif;color:#ff00ff; font-size:1em  }
#food { border: 1 solid black; }
</pre>
<p>Controller:</p>
<pre>
&lt;script&gt;
$(function() { $(&quot;#AddFood&quot;).click(onAddFoodClicked);
             });

function onAddFoodClicked(ev) {
 var currentlist = $(&quot;#food&quot;).text();
 var foodToAdd = $(&quot;#foodToAdd&quot;).val();
  $(&quot;#food&quot;).text(currentlist + &quot;,&quot; + foodToAdd);
  $(&quot;#foodToAdd&quot;).val(&quot;&quot;);
  
}
&lt;/script&gt;
</pre>
<p>See?</p>
<p><a class="jsbin-embed" href="http://jsbin.com/ukipiw/1/embed?live">JS Bin</a><script src="http://static.jsbin.com/js/embed.js"></script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=0FHDRLKCDQY:sUIw-ugzFVo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=0FHDRLKCDQY:sUIw-ugzFVo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=0FHDRLKCDQY:sUIw-ugzFVo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=0FHDRLKCDQY:sUIw-ugzFVo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=0FHDRLKCDQY:sUIw-ugzFVo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=0FHDRLKCDQY:sUIw-ugzFVo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=0FHDRLKCDQY:sUIw-ugzFVo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=0FHDRLKCDQY:sUIw-ugzFVo:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2013/03/06/mvc-for-the-client-side-web-is-very-simple/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Herding Code 159: Catching up with Oren Eini on RavenDB</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/8YS3Y1LAAw4/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/8YS3Y1LAAw4/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 08:45:56 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[interview]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=514</guid>
		<description><![CDATA[This week on Herding Code, the guys talk with Oren Eini (a.k.a. Ayende Rahien) about what&#8217;s new with RavenDB. Download / Listen: Herding Code 159: Catching up with Oren Eini on RavenDB Show Notes: (00:47) Introduction and review of document databases and RavenDB Oren gives us a quick overview of document databases and RavenDB Relational [...]]]></description>
				<content:encoded><![CDATA[<p>This week on Herding Code, the guys talk with Oren Eini (a.k.a. Ayende Rahien) about what&#8217;s new with RavenDB.</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0159-RavenDB.mp3">Herding Code 159: Catching up with Oren Eini on RavenDB</a>
<p>Show Notes:</p>
<ul>
<li>(00:47) Introduction and review of document databases and RavenDB
<ul>
<li>Oren gives us a quick overview of document databases and RavenDB </li>
<li>Relational databases work for the kind of applications we were building in the early &#8217;90&#8242;s. We can kind of make them work in our current applications but it takes too much work. </li>
<li>RavenDB is a document database which stores JSON documents. </li>
<li>JSON documents can store arbitrarily complex data very easily. </li>
</ul>
</li>
<li>(04:35) Comparing accuracy and data consistency between document databases and relational databases
<ul>
<li>Jon asks about Oren&#8217;s comments on a recent .NET Rocks podcast in which he said that document databases allow us to be more correct than relational databases. </li>
<li>Oren gives a real life example of how an update to a customer&#8217;s financial information caused a change to her historical record, which caused some real problems. </li>
<li>Jon talks about some of the hoops we jump through in an attempt to maintain historical data in a relational database, e.g. soft deletes. </li>
</ul>
</li>
<li>(08:42) Disk space concerns
<ul>
<li>Scott K says he hears DBA&#8217;s worry about disk space due to data repetition between documents and asks what other concerns people bring up. </li>
<li>Oren says there can be more computation and indexing, but on the other hand temporal data is orders of magnitude easier. </li>
<li>Data design principles were established back when space was expensive, that&#8217;s all changed now. </li>
<li>Oren says he hears people say that space isn&#8217;t cheap in the enterprise, but runs some numbers and concludes they&#8217;re either very inefficient or someone&#8217;s got their hand in the till. Scott K says that enterprises data storage is often expensive because they&#8217;re not tiering their data correctly to put low priority data on cheaper storage. </li>
<li>Oren says enterprises drive up storage costs by due to foolish backup strategies. </li>
</ul>
</li>
<li>(14:42) Query and performance benefits
<ul>
<li>Scott K says that people often view document databases as a giant blob of text rather than structured data which can be searched, indexed, etc. </li>
<li>Oren says that you get full text search for free in RavenDB. </li>
</ul>
<ul>
<li>In relational databases, you&#8217;re always working with the very latest data, so you have locks, readers waiting for writers, etc. </li>
<li>RavenDB does a lot of precomputation in the background, so it can give you aggregate information immediately. </li>
</ul>
</li>
<li>(17:27) RavenDB 2.0 release overview
<ul>
<li>Big improvements to performance on some key codepaths, in some cases over 1000%. </li>
<li>Support for JavaScript scripts on the server, which allows for scenarios like mass migrations and batching support on the server. </li>
<li>Management UI improvement, better management API coverage, performance counters, etc. </li>
<li>Dev improvements &#8211; sharding support, full support for async. </li>
</ul>
</li>
<li>(19:40) 2.01 release overview
<ul>
<li>Files some rough spots in the 2.0 release &#8211; things that beta testers didn&#8217;t mind, but can be a little smoother. </li>
<li>They added a new feature &#8211; improves support for replicating to a relational database. </li>
</ul>
</li>
<li>(22:05) Sharding improvements and migrations
<ul>
<li>Sharding&#8217;s been around since the beginning, but required you to specify a lot of things &#8211; lots of options, too much complexity, too many important decisions early in the development process. </li>
<li>Sharding support has been revamped &#8211; provide the endpoints, defaults take care of the rest. </li>
<li>Oren gives an example with sharding customer data. By default, documents are sharded together based on transaction id. You can specify a shard when you save based on a user specified id. </li>
<li>Some people have problems with the default approach because the document id includes the shard id. That&#8217;s necessary to prevent having to query all shards. </li>
<li>Jon asks how this works over time if you need to add shards, migrate data, etc. Oren says you can rebalance by biasing new data towards a newly added shard. </li>
<li>If you need to move data to a new server &#8211; for instance, a customer becomes large enough that you want to put all of their documents on a new shard, you&#8217;ve got two options for handling the id&#8217;s. Oren says some users migrate data, rewriting id&#8217;s during the process, but he doesn&#8217;t recommend that. Instead, he recommends using a sharding function which allows remapping document id&#8217;s to a new shard without changing id&#8217;s. </li>
<li>Jon obviously doesn&#8217;t get it and asks the same question again, also asking how you handle data modifications over time. Oren explains that you can just write a JavaScript function to update your existing documents if needed. </li>
<li>Kevin asks how long data a data migration takes. Oren types one up on the fly and explains the parsing and execution time. </li>
</ul>
</li>
<li>(34:43) Time for some random questions!
<ul>
<li>Scott K notes that there&#8217;s a client that runs on Mono and asks if there are plans to get the server running on Mono. Oren talks about the general plan to handle that, but says it&#8217;s not high on the priority list. </li>
<li>(35:48) Scott K asks about compact scenarios, including clients that run on mobile and embedded instances that run locally. Oren notes that&#160; clients are easy, because anything that can make a REST call can be a client. They had an embedded version that had very little interest. </li>
<li>(38:03) In disconnect scenarios, it&#8217;s usually simpler to cache JSON documents locally. </li>
<li>(39:10) Jon asks about merge support for occasionally connected scenarios. Oren says that&#8217;s intentionally not included. </li>
<li>(41:25) Jeremy Miller (@jeremydmiller) asks when Oren is going to fix Lucene.net&#8217;s flow control via exception madness. Oren says it&#8217;s not planned, and that Jeremy should ignore those exceptions. </li>
<li>(42:25) Philip (@autosnak) asks why RavenDB doesn&#8217;t do more for startups and small biz pricing-wise. Oren explains the offers they make available &#8211; open source is free, RavenDB basic edition is $5 / month, they donate a lot of license for a lot of other cases, and even the full versions are incredibly cheap compared with any other database. Shoot him an e-mail. </li>
<li>(44:44) Chris Whellams (@chriswillems) asks how to sell NoSQL and RavenDB to IT management and bosses that are addicted to SQL Sever. Oren outlines a strategy &#8211; start with a persistent viewmodel cache on a slow page to get a quick win, then use it for simple storage of ancillary application data (e.g. preferences), then use it in a spike on a new project. This is exactly what the MSNBC team did &#8211; they started with a non-operating RavenDB node in production, then slowly moved some things in without taking on any unnecessary risk. </li>
<li>(42:50) Jon asks for any closing thoughts. Oren says they&#8217;re starting on some weekly webinars for RavenDB users &#8211; or just if you&#8217;re curious about it. There&#8217;s a RavenDB course in the US in May. </li>
<li>FIN! </li>
</ul>
</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="http://herdingcode.com/?p=255">Herding Code 83: Ayende Rahien on RavenDB</a> </li>
<li><a href="http://ayende.com/blog/">Ayende&#8217;s Blog</a> </li>
<li><a href="http://ravendb.net/">RavenDB</a>&#160; </li>
<li>.NET Rocks 819 &#8211; <a href="http://www.dotnetrocks.com/default.aspx?showNum=819">Oren Eini Does NoSQL First</a> </li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/8YS3Y1LAAw4" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=kwahMygJ1lc:sQJfaYEB9E0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=kwahMygJ1lc:sQJfaYEB9E0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=kwahMygJ1lc:sQJfaYEB9E0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=kwahMygJ1lc:sQJfaYEB9E0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=kwahMygJ1lc:sQJfaYEB9E0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=kwahMygJ1lc:sQJfaYEB9E0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=kwahMygJ1lc:sQJfaYEB9E0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=kwahMygJ1lc:sQJfaYEB9E0:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-159-catching-up-with-oren-eini-on-ravendb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/jQsfM2mX3Fo/HerdingCode-0159-RavenDB.mp3?#" length="14900867" type="audio/mpeg" />
		</item>
		<item>
		<title>Herding Code 158: Nat Friedman and Joseph Hill announce Xamarin 2.0</title>
		<link>http://feedproxy.google.com/~r/HerdingCode/~3/p7UWNpXdVr4/</link>
		<comments>http://feedproxy.google.com/~r/HerdingCode/~3/p7UWNpXdVr4/#comments</comments>
		<pubDate>Tue, 26 Feb 2013 22:18:32 +0000</pubDate>
		<dc:creator>Scott Koon</dc:creator>
				<category><![CDATA[podcast]]></category>
		<category><![CDATA[herdingcode]]></category>

		<guid isPermaLink="false">http://herdingcode.com/?p=512</guid>
		<description><![CDATA[Nat Friedman and Joseph Hill from Xamarin join us for several big announcements: Xamarin Studio, Xamarin Component Store, iOS development in Visual Studio, and a new free Starter edition. Download / Listen: Herding Code 158: Nat Friedman and Joseph Hill announce Xamarin 2.0 Show Notes: (00:45) Nat begins by catching us up on Xamarin&#8217;s first [...]]]></description>
				<content:encoded><![CDATA[<p>Nat Friedman and Joseph Hill from Xamarin join us for several big announcements: Xamarin Studio, Xamarin Component Store, iOS development in Visual Studio, and a new free Starter edition.</p>
<p>Download / Listen:</p>
<p><a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0158-Xamarin-2.mp3">Herding Code 158: Nat Friedman and Joseph Hill announce Xamarin 2.0</a>
<p>Show Notes:</p>
<ul>
<li>(00:45) Nat begins by catching us up on Xamarin&#8217;s first eighteen months.
<ul>
<li>Xamarin&#8217;s focus is on helping developers build mobile apps across multiple platforms. </li>
<li>They have 230,000 developers in their community, adding 700-800 per day, with over 12,000 paying customers. </li>
<li>They&#8217;ve had top iPad (Bastion), music apps (Rdio) and some large mission critical line of business apps. </li>
<li>What&#8217;s special about their platform is that you can target iOS, Android, and Windows Phone, share C# code across&#160; all those platforms, and still deliver a native experience. </li>
<li>Nat say&#8217;s they&#8217;re the overnight success that took ten years to prepare, referencing the ten years they took to build Mono. </li>
</ul>
</li>
<li>(03:20) Xamarin&#8217;s value proposition and customer base
<ul>
<li>Kevin asks which of their value propositions (.NET based development, cross-platform development) resonates more with users. </li>
<li>Nat says that many developers are initially attracted by C# development, although that&#8217;s not always the case (referencing an internal app at GitHub written by Objective-C developers who just liked sharing code between platforms). </li>
<li>Nat says there&#8217;s no real way to be a mobile developer now without having a cross-platform strategy &#8211; iOS might have looked like the only platform that mattered a few years ago, but now Android is more popular and Windows Phone is growing in popularity. </li>
</ul>
</li>
<li>(04:47) Code reuse strategy
<ul>
<li>Kevin asks how the code reuse happens, since these are true native applications. </li>
<li>Nat talks about different cross-platform strategies and says that they don&#8217;t believe in write once, run anywhere. </li>
<li>With Xamarin, you separate the backend and UI code and write specific UI code for each platform, although you still write it in C#. </li>
<li>Rdio has over 150,000 lines of code which are shared between iOS, Android and Windows which covers networking, caching, authentication, etc. </li>
</ul>
</li>
<li>(07:55) First big announcement: Joseph Hill announces support for building for iOS applications in Visual Studio.
<ul>
<li>Nat says that you can have one Visual Studio solution targeting iOS, Android and Windows Phone, and step through the code with the full debugging support you&#8217;re used to. </li>
<li>How does the Mac support work?
<ul>
<li>Scott K asks if this means that you have to run Visual Studio on a Mac. Nat says that&#8217;s not necessary, you just need to pair your Visual Studio instance with a Mac &#8211; it just needs to be on the network somewhere. That&#8217;s required both to be able to sign releases and to meet Apple&#8217;s license terms. </li>
<li>Jon asks if this would work with a Mac Mini, and Nat says that&#8217;s a popular option. </li>
<li>Scott K asks about a &quot;Mac in the cloud&quot; option; Nat says they&#8217;re not planning that. </li>
<li>Kevin asks if several developers could share one Mac. Nat says that Apple&#8217;s requirement is that each developer is supposed to have a license, and Joseph says that the Apple toolchain is build for single user rather than server support. </li>
<li>Jon ask if he can start playing with iOS support without having a Mac, Joseph explains that you can install and look around a bit, but you can&#8217;t build or deploy. </li>
<li>Kevin asks about the Interface Builder interaction. </li>
<li>Kevin asks if it was incredibly painful to set up this support for Visual Studio. </li>
</ul>
</li>
</ul>
</li>
<li>(16:14) Second big announcement: Nat announces the release of Xamarin Studio.
<ul>
<li>Xamarin Studio runs on OSX, Windows, and Linux. </li>
<li>It&#8217;s based on Mono Develop, but it&#8217;s a completely new user interface with a lot of great new features. </li>
<li>Visual Studio Express users can&#8217;t install extensions so Xamarin Studio allows them to do Xamarin development, also it&#8217;s what all Mac users will be using. </li>
<li>Kevin asks if it&#8217;s a fork of Mono Develop. </li>
<li>Kevin asks if Xamarin Studio is open source. </li>
<li>Jon asks how it was developed. Joseph says it&#8217;s still C# Mono code using GTK. Developers write Xamarin Studio in Xamarin Studio. </li>
<li>K. Scott asks if you can target non-mobile scenarios. Joseph says you can still target ASP.NET, console, class libraries, etc. </li>
<li>Kevin asks what happens to Mono Develop. Nat says it continues as an open source project, and they&#8217;ll contribute back to it as they develop Xamarin Studio. </li>
</ul>
</li>
<li>(22:35) Xamarin as a Mono producer and consumer
<ul>
<li>Jon says it&#8217;s interesting watching the evolution of the Mono / Xamarin efforts as they&#8217;ve moved from supplying the Mono framework to being both building Mono and building a business on Mono. </li>
<li>Nat says it&#8217;s great working for a customer base rather than an opinionated crowd. &quot;A really good signal that we&#8217;re doing good work is that people give us money for it.&quot; </li>
<li>Joseph talks about their model, explaining how their Xamarin business works well with their role as stewards of the Mono project. </li>
</ul>
</li>
<li>(25:28) Third big announcement: Nat announces the Xamarin Component Store
<ul>
<li>Nat says they see developers solving the same problems over and over again, giving an example of a common requirement for a signature capture control. </li>
<li>The Xamarin Component Store is a library of pre-built components. Nat gives an example of an Azure Mobile Service component. </li>
<li>It works in both Visual Studio and Xamarin Studio. </li>
<li>Components include documentation, screenshots, and sample projects. Nat says it&#8217;s conceptually similar to NuGet, but gives you a lot better experience and makes it easier to get started. </li>
<li>There are a lot of component vendors who are contributing both free and paid components, and Xamarin has also contributed several based on their experience in supporting Xamarin developers. </li>
<li>Jon asks how they handle cross platform, native user interface with components. </li>
<li>Kevin asks how people can submit components to the store. </li>
<li>Nat says he thinks this will really be a compelling feature of their platform, since developers won&#8217;t have to build everything from scratch. </li>
<li>Kevin asks they handle purchases and vender payments. </li>
<li>Kevin asks if the components are curated. </li>
<li>Jon asks about component support for Android and Windows Phone. </li>
<li>Kevin asks if it&#8217;s possible to create Xamarin components using native Objective-C components. Nat says they support both Objective-C and Java code reuse. </li>
<li>Jon says the design on the Xamarin Component store website looks great and asks about Xamarin&#8217;s approach to design. Nat says that they&#8217;re selling a good design experience and design is an important part of that. </li>
<li>Kevin says he like hover screenshots, Nat says he really likes the hover menu control. </li>
</ul>
</li>
<li>(39:35) Fourth big announcement: Nat announces the free Xamarin Studio Starter Edition
<ul>
<li>You can use Starter Edition to get started, build, and deploy applications. </li>
<li>Starter Edition is limited to 32KB of IL code. </li>
<li>Jon loves the idea of limiting the free edition based on compiled code size. </li>
<li>Kevin asks what kind of app will fit in 32KB. Nat says that using a lot of DLL&#8217;s will put you over the limit quickly, but images aren&#8217;t content. About 20% of the apps in the store would fit under the limit. </li>
<li>Joseph says they didn&#8217;t want to limit based on features. Jon talks about the frustration people see in Visual Studio version based feature limitations. Nat says pricing is hard; ultimately they want to get a lot of people using Xamarin and they think this is a good way to do that. </li>
</ul>
</li>
<li>(44:53) Jon asks about support for languages other than C#.
<ul>
<li>Nat says they see people using F# and Java (using IKVM). </li>
<li>Joseph says that C# is their main focus &#8211; all the documentation is in C# &#8211; but they&#8217;re happy to see people using other languages. </li>
<li>Kevin asks for JavaScript support. Nat says they think it&#8217;s hard to build large scale apps in JavaScript. </li>
</ul>
</li>
<li>(47:35) Nat talks about their upcoming developer conference.
<ul>
<li>The first two days are focused completely on training. </li>
<li>The second two days feature some great talks by community leaders, user interface designers, and more. The entire team will be on hand to answer questions. </li>
</ul>
</li>
</ul>
<p>Show Links:</p>
<ul>
<li>Nat Friedman (<a href="http://nat.org/">site</a>, <a href="https://twitter.com/natfriedman">@NatFriedman</a>) </li>
<li>Joseph Hill (<a href="http://beyondfocus.com/">blog</a>, <a href="https://twitter.com/JosephHill">@JosephHill</a>) </li>
<li><a title="http://amirrajan.github.com/Oak/" href="http://xamarin.com/">Xamarin</a> </li>
<li><a href="http://blog.xamarin.com/announcing-xamarin-2.0/">Announcing Xamarin 2.0 </a>(Xamarin blog)</li>
<li><a href="http://xamarin.com/evolve">Xamarin Evolve</a> &#8211; April 14-17, Austin, TX</li>
</ul>
<img src="http://feeds.feedburner.com/~r/HerdingCode/~4/p7UWNpXdVr4" height="1" width="1"/><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Lazycoder?a=eMvsuv0pOk4:5byvKIv_aYI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=eMvsuv0pOk4:5byvKIv_aYI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=eMvsuv0pOk4:5byvKIv_aYI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=eMvsuv0pOk4:5byvKIv_aYI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=eMvsuv0pOk4:5byvKIv_aYI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=eMvsuv0pOk4:5byvKIv_aYI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Lazycoder?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Lazycoder?a=eMvsuv0pOk4:5byvKIv_aYI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Lazycoder?i=eMvsuv0pOk4:5byvKIv_aYI:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://herdingcode.com/herding-code-158-nat-friedman-and-joseph-hill-announce-xamarin-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://feedproxy.google.com/~r/HerdingCode/~5/IIoEJq1IebE/HerdingCode-0158-Xamarin-2.mp3?#" length="16371987" type="audio/mpeg" />
		</item>
	</channel>
</rss>
