<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Keeter Blog</title><link>http://ryankeeter.com:80/</link><description>Keeter Blog</description><item><title>Building a Social Ranking, Single Page App</title><link>http://ryankeeter.com:80/building-a-social-ranking-single-page-app</link><description>&lt;p&gt;What else would I do on a Friday night than build a little app to rank articles based on social media influence? I recorded the whole thing that have published it to &lt;a href="http://www.youtube.com/watch?v=5bscTjnR-k8"&gt;youtube&lt;/a&gt;, below is the video:&lt;/p&gt;
&lt;p&gt;&lt;iframe height="480" src="http://www.youtube.com/embed/5bscTjnR-k8" frameborder="0" width="853" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I went ahead and extended the project to include a DotNetShoutout ranking scheme, and I will be putting that together in a video shortly as well.&lt;/p&gt;
&lt;p&gt;Hope you all enjoy, and if you have any questions at all, please let me know!&lt;/p&gt;</description><pubDate>Sat, 18 May 2013 19:33:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/building-a-social-ranking-single-page-app</guid></item><item><title>Last Day of Law School/Business School</title><link>http://ryankeeter.com:80/last-day-of-law-school-business-school</link><description>&lt;p&gt;It has been a grueling three years, but today is my last law school final. I took my last business final a couple days ago and found out I got a “B” in the course (I was gunning for a 4.0 until that grade; no top grade honors for me at graduation). After today I will be able to do blissful nothingness until bar prep starts at the end of May.&lt;/p&gt; &lt;p&gt;I plan on actually finishing that &lt;a href="http://ryankeeter.com/upcoming-course-i%E2%80%99m-producing-on-durandal-js-and-mobile-development"&gt;course that I had originally lined out back in April&lt;/a&gt;. Also, I plan on working on a few other projects that have been bouncing around my nugget for the last three years with my time off before the bar exam prep.&lt;/p&gt; &lt;p&gt;I will post to this blog how things worked out after I either destroy or barely survive this final.&lt;/p&gt;</description><pubDate>Fri, 10 May 2013 10:40:34 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/last-day-of-law-school-business-school</guid></item><item><title>Procrasticleaning</title><link>http://ryankeeter.com:80/procrasticleaning</link><description>&lt;p&gt;You know when you have something that you need to do, but instead you clean your house, or your office, or your car, or whatever? The act of cleaning gives the false sense of productivity when in actuality you are procrastinating and not completing the task that you are supposed to be working on.&lt;/p&gt;
&lt;p&gt;DO NOT GET CAUGHT IN THE PROCASTICLEANING FALSE SENSE OF PRODUCTIVITY!&lt;/p&gt;
&lt;p&gt;You might find that your entire office is immaculate, but your project is past deadline.&lt;/p&gt;
&lt;p&gt;Also, I am actively procrastiblogging right now, so I can&amp;rsquo;t judge anybody.&lt;/p&gt;
&lt;p&gt;Back to work I go.&lt;/p&gt;</description><pubDate>Thu, 09 May 2013 14:11:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/procrasticleaning</guid></item><item><title>Keeter Blog</title><link>http://ryankeeter.com:80/</link><description>Keeter Blog</description><pubDate>Wed, 01 May 2013 17:42:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/</guid></item><item><title>Squared and Flat UI for Twitter Bootstrap</title><link>http://ryankeeter.com:80/squared-and-flat-ui-for-twitter-bootstrap</link><description>&lt;p&gt;The world of flat design is still &lt;a href="http://ryankeeter.com/thoughts-on-flat-ui-vs.-skeumorphic-design-patterns"&gt;sorting itself out&lt;/a&gt;. You might have the square type of design ala Windows 8 App Store Design Language (previously Metro), and then you have a softer design seen via the aforementioned &lt;a href="http://ryankeeter.com/using-twitter-bootstrap-with-flat-design"&gt;Flat UI set&lt;/a&gt;. Having defined these two types of design at a basic level, lets look at the Metro language theme (free) UI kits/sets built on top of &lt;a href="http://twitter.github.io/bootstrap/"&gt;Twitter Bootstrap&lt;/a&gt; that can aid in our development efforts.&lt;/p&gt;
&lt;h2&gt;BootMetro&lt;/h2&gt;
&lt;div class="wll"&gt;
&lt;table cellspacing="0" cellpadding="2" width="701" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="699"&gt;
&lt;p align="center"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_2.png"&gt;&lt;span size="1" style="font-size: xx-small;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span size="1" style="font-size: xx-small;"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_2.png"&gt;&lt;img title="image" class="img-polaroid" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb.png" width="640" height="256" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="699"&gt;&lt;strong&gt;&lt;em&gt;&lt;span color="#494b5a" face="Thread-0004fa88-Id-0000000c" style="color: #494b5a; font-family: Thread-0004fa88-Id-0000000c;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://aozora.github.io/bootmetro/hub.html"&gt;Boot metro&lt;/a&gt; is a play on the Windows 8 design language in that it mimics some basic tenants of that design language and transforms it into a twitter bootstrap wrapper. The key points of this framework lie in its uber-flat design, clean fonts, clean icons, and a geometric feel.&lt;/p&gt;
&lt;p&gt;This kit wraps bootstrap cleanly and mimics the essential &amp;ldquo;day-to-day&amp;rdquo; elements of bootstrap. Checkout these screenshots of some of the &amp;ldquo;everyday&amp;rdquo; components:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" width="711" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="300"&gt;
&lt;table cellspacing="0" cellpadding="2" width="300" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="300"&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/components.html#dropdowns"&gt;Dropdowns&lt;/a&gt;&lt;/h1&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="300"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td valign="top" width="409"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_4.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_1.png" width="750" height="245" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table cellspacing="0" cellpadding="2" width="708" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="300"&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/components.html#navbar"&gt;Navbar&lt;/a&gt;&lt;/h1&gt;
&lt;/td&gt;
&lt;td valign="top" width="406"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_8.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_3.png" width="838" height="75" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table cellspacing="0" cellpadding="2" width="700" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="301"&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/components.html#typography"&gt;Hero Unit&lt;/a&gt;&lt;/h1&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="399"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_10.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_4.png" width="781" height="378" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table cellspacing="0" cellpadding="2" width="725" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="303"&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/components.html#thumbnails"&gt;Thumbnails and Lists&lt;/a&gt;&lt;/h1&gt;
&lt;/td&gt;
&lt;td valign="top" width="421"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_12.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_5.png" width="845" height="452" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table cellspacing="0" cellpadding="2" width="725" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="302"&gt;
&lt;h1 align="center"&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/components.html#alerts"&gt;Alerts&lt;/a&gt;&lt;/h1&gt;
&lt;/td&gt;
&lt;td valign="top" width="422"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_14.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_6.png" width="676" height="109" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_16.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_7.png" width="856" height="73" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_18.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_8.png" width="422" height="33" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_20.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_9.png" width="847" height="67" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table cellspacing="0" cellpadding="2" width="729" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="300"&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/components.html#progress"&gt;Progress Bars&lt;/a&gt;&lt;/h1&gt;
&lt;/td&gt;
&lt;td valign="top" width="427"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_22.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_10.png" width="859" height="162" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table cellspacing="0" cellpadding="2" width="729" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="299"&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/components.html#media"&gt;Media List&lt;/a&gt;&lt;/h1&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="428"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_24.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_11.png" width="675" height="430" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table cellspacing="0" cellpadding="2" width="731" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="298"&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/appbar-demo.html"&gt;Application Bar&lt;/a&gt;&lt;/h1&gt;
&lt;/td&gt;
&lt;td valign="top" width="431"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_26.png"&gt;&lt;img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_12.png" width="441" height="92" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table cellspacing="0" cellpadding="2" width="733" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="731"&gt;
&lt;h1 align="center"&gt;&lt;a href="http://aozora.github.io/bootmetro/table.html"&gt;Page with Table&lt;/a&gt;&lt;/h1&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="732"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_33.png"&gt;&lt;img title="image" style="background-image: none; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" align="right" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Two-Different-Flat-UI-Sets-for-Twitter-B_8B35/image_thumb_15.png" width="824" height="476" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As you can see, this isn&amp;rsquo;t a &amp;ldquo;fly-by-night&amp;rdquo; design set. This is a thought out, thoroughly developed, and supported design set that is clean, documented, and provides a rich overlay on top of the twitter bootstrap framework.&lt;/p&gt;
&lt;p&gt;I would love to see some of the UIs that you all will build with this flat and squared kit.&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;
&lt;script type="text/javascript"&gt;// &lt;![CDATA[
$(document).ready(function(){$(td).css('vertical-align','middle');});
// ]]&gt;&lt;/script&gt;</description><pubDate>Wed, 01 May 2013 17:42:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/squared-and-flat-ui-for-twitter-bootstrap</guid></item><item><title>AngularJS vs. DurandalJS – part 3 of N – Reputation</title><link>http://ryankeeter.com:80/angularjs-vs.-durandaljs%E2%80%93part-3-of-n%E2%80%93reputation</link><description>&lt;div class="well"&gt;
&lt;p&gt;This continues the series, where &lt;a href="http://ryankeeter.com/angularjs-vs.-durandaljs-%E2%80%93-part-1-on-n-%E2%80%93-where-do-these-technologies-fit"&gt;part 1 looked at the technologie&lt;/a&gt;s, &lt;a href="http://ryankeeter.com/angularjs-vs.-durandaljs-part-2-on-n-%E2%80%93-data-binding"&gt;part 2 looked at the data-binding features&lt;/a&gt;, and &lt;a href="http://ryankeeter.com/a-narrative-on-angularjs-vs.-durandaljs"&gt;part 1.1 was a video going into the technologies&lt;/a&gt; ( you know, trying to beat a dead horse and all)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://angularjs.org"&gt;AngularJS&lt;/a&gt; is maintained by Google.&lt;/p&gt;
&lt;p&gt;That in and of itself would cause people to switch to that side of the Single Page Application framework debate. However, the argument shouldn&amp;rsquo;t end there.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://durandaljs.com/"&gt;DurandalJS&lt;/a&gt; is curated by &lt;a href="http://bluespire.com"&gt;Blue Spire&lt;/a&gt; software consulting and principally by &lt;a href="http://twitter.com/eisenbergeffect"&gt;Rob Eisenberg&lt;/a&gt;. If you are new to the .NET space, then you might not be aware that Rob has made huge strides in taking a complex framework in Windows Presentation Foundation and breaking it down and releasing a &lt;a href="http://www.caliburnproject.org/"&gt;framework&lt;/a&gt; to manage this WPF mess in a clear, concise, and standards based way. His work in this space has garnered him MVP status as well as a slew of additional accolades. His move into Javascript represents not something new, per se, but a translation of his WPF work into a Javascript paradigm.&lt;/p&gt;
&lt;p&gt;That being said, it is still &lt;strong&gt;Rob Eisenberg vs. Google&lt;/strong&gt;. Or is it?&lt;/p&gt;
&lt;p&gt;DurandalJS is built on core technologies that are mature and have some strong backing. Specifically, DurandalJS is built with &lt;a href="http://www.knockoutjs.com"&gt;KnockoutJS&lt;/a&gt;, &lt;a href="http://www.sammyjs.org"&gt;SammyJS&lt;/a&gt;, and &lt;a href="http://www.requirejs.org"&gt;RequireJS&lt;/a&gt;, where DurandalJS is nothing more than a sugary abstraction on top of these frameworks that tie them all together. Does that persuade you? What about support?&lt;/p&gt;
&lt;p&gt;Will you get support from Google for AngularJS at your corporation? Probably not. Can you get support from Rob Eisenberg at your corp. to assist in DurandalJS development, &lt;a href="http://durandaljs.com/pages/support"&gt;Hell Yes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What about &amp;ldquo;open source&amp;rdquo; support/reputation in the form of Stack Overflow questions?&lt;/p&gt;
&lt;div class="well"&gt;
&lt;table style="margin: 0px auto;" cellspacing="0" cellpadding="2" width="400" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/DurandalJS-vs.-AngularJS_55D1/image_2.png"&gt;&lt;img title="image" class="img-polaroid" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/DurandalJS-vs.-AngularJS_55D1/image_thumb.png" width="743" height="270" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;
&lt;p align="center"&gt;&lt;strong&gt;407 search results for Durandal*&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="well"&gt;
&lt;table style="margin: 0px auto;" cellspacing="0" cellpadding="2" width="400" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/DurandalJS-vs.-AngularJS_55D1/image_4.png"&gt;&lt;img title="image" class="img-polaroid" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/DurandalJS-vs.-AngularJS_55D1/image_thumb_1.png" width="919" height="396" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;
&lt;p align="center"&gt;&lt;strong&gt;13,286 results for Angular*&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;The tale of the tape weighs heavily in favor of Angular on this one. With over 13K questions, one should be able to, theoretically, get more community support from Angular. Now, of course, there are other &lt;a href="https://groups.google.com/forum/?fromgroups#!forum/durandaljs"&gt;mediums&lt;/a&gt; where Durandal questions are asked, but the straight Stack Overflow test can be dispositive in this rudimentary calculation.&lt;/p&gt;
&lt;p&gt;One thing to keep in mind though is that the entirety of SammyJS, KnockoutJS, and RequireJS are brought to bear on a Durandal project, so when adding that scope to the equation there are an additional &lt;strong&gt;17,270&lt;/strong&gt; questions on SO. This means that the argument for community support behind Angular and Durandal are actually closer than it seems.&lt;/p&gt;
&lt;p&gt;But, many corporations will still say &amp;ldquo;Google vs. Rob Eisenberg,&amp;rdquo; and of course I understand that, as should everyone. I am not saying that everything Google touches turns to gold (*ahem* *cough* google reader *cough* *tear tear*), but it adds some significant clout to the situation.&lt;/p&gt;
&lt;p&gt;Overall, I see this conversation continuing, especially since as a developer community we have devoted significant time to KnockoutJS or any other technology used by Durandal.&lt;/p&gt;
&lt;p&gt;Me? I&amp;rsquo;m still in the Durandal camp. Though, the tides are a shifting.&lt;/p&gt;</description><pubDate>Tue, 30 Apr 2013 12:07:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/angularjs-vs.-durandaljs%E2%80%93part-3-of-n%E2%80%93reputation</guid></item><item><title>Law School Finals and App Sneak Peek</title><link>http://ryankeeter.com:80/law-school-finals-and-app-sneak-peek</link><description>&lt;p&gt;So I have been quiet on this blog recently (for the last week or so) because I am knee deep in law school finals (American law school). This, wonderfully, is my last finals week I will ever have as I will be graduating with an MBA and a Juris Doctor in about 10 days (whoa, the last three years went by fast!).&lt;/p&gt;
&lt;p&gt;Why do law school finals suck so bad? Well, for starters, it is curved and everyone is hyper competitive. Out of 100 people, if 99 perfect of them get perfect scores and 1 person only misses one question, that student fails (which is the effect of a curve). Also, the ranking of each student is published publicly so each student has a pretty good idea where they stand in relation to others (to include their friends). This type of &amp;ldquo;Gunner&amp;rdquo; culture has spawned countless books, movies, and even a series based on a movie that played out in the 70&amp;rsquo;s (&lt;a href="https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CDEQFjAA&amp;amp;url=http%3A%2F%2Fwww.imdb.com%2Ftitle%2Ftt0077058%2F&amp;amp;ei=6fx-Ub6rLoqRrAG874CQCg&amp;amp;usg=AFQjCNGsH4KpUlOorPWPsMriA_iYYbjAqw&amp;amp;sig2=MGXt8I5LSDyN6MuqPNOVaQ&amp;amp;bvm=bv.45645796,d.b2I"&gt;The Paper Chase&lt;/a&gt;). The other reason why finals are so harsh is because usually (9 times out of 10) the final represents 100% of your grade. So, you can study your face off all semester and have a shitty day in May and have nothing to show for COUNTLESS hours spent in the library. But, being able to manage this craziness is part of the educational lesson behind American law school.&lt;/p&gt;
&lt;p&gt;It might come as a surprise that I am in law school as I focus on technological subjects here on this blog, but that is because writing code and designing UIs is fun and anybody can do it, whereas only people that are lawyers can practice law. A kid with a book from Barnes and Noble can make a website in a night, but a guy that wants to represent a man that can&amp;rsquo;t afford to hire a lawyer or has the capacity to represent themselves will have to go to school for three years and then pass the bar. I love the law, but it is hard to talk about something that carries its own insurance if said incorrectly (ahem&amp;hellip;malpractice insurance).&lt;/p&gt;
&lt;p&gt;I will have a couple weeks off after these finals and graduation before studying for the Bar exam really starts, so I will be completing my aforementioned course of Durandal JS during that time. In the mean time, here are some screen shots of the UI for the app I have designed and coded for this Durandal JS course:&lt;/p&gt;
&lt;div class="well"&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Law-School-Finals_E19B/image_2.png"&gt;&lt;img title="image" class="img-polaroid" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Law-School-Finals_E19B/image_thumb.png" width="351" height="617" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Law-School-Finals_E19B/image_4.png"&gt;&lt;img title="image" class="img-polaroid" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Law-School-Finals_E19B/image_thumb_1.png" width="329" height="603" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Law-School-Finals_E19B/image_6.png"&gt;&lt;img title="image" class="img-polaroid" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/Windows-Live-Writer/Law-School-Finals_E19B/image_thumb_2.png" width="325" height="612" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description><pubDate>Mon, 29 Apr 2013 21:54:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/law-school-finals-and-app-sneak-peek</guid></item><item><title>Thoughts on Flat UI vs. Skeumorphic Design Patterns</title><link>http://ryankeeter.com:80/thoughts-on-flat-ui-vs.-skeumorphic-design-patterns</link><description>&lt;p&gt;Flat UI is a growing trend these days that stems from, what I believe, the focus on &amp;ldquo;authentically digital&amp;rdquo; design and a desire to stray away from skeumorphic design. Skeumorphic design, essentially, is the desire to replicate real-life objects with pixels. This design pattern is notorious with Apple and companies that seek to mimic Apple. Here are some samples of skeumorphic design.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="well"&gt;&lt;img class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto;" src="data:image/jpeg;base64,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" /&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto;" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRyMENP0n5U8URCZJ5QswFmSKVMu5HgrwtqvBg4UueMimvEswDY3Q" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto;" src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcT5nU0Aq0lHMoVf2sz6jKu7lgivFPxHxCQt0tu1CiZ6bwDwWDrT" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Notice in each of the above examples there is some attempt to replicate what we know in real-life into an approximation of such on the computer. The all-too-common &amp;ldquo;shelf&amp;rdquo; idea as in the first picture, or the leather texture and stitching approach in the second picture, or the legal-pad-type-design denoted in the third picture. Each of these images perpetrate the skeumorphic agenda which has led to a culture of artistic innovation that has ridden the Apple bubble. Personally, I like the skeumorphic design as it looks clean, it looks fresh, and it purports to extend the lives of individuals into their devices, and I cannot fault a design-mantra for any of that.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Patterns of Flat Design&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Flat design, in contrast to skeumorphic design relies on the &amp;ldquo;flattening&amp;rdquo; of shadows, bevels, and the UI components of web design. I will show some images of this as it will be best explained through images of a button:&lt;/p&gt;
&lt;div class="well"&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/Flat-design_2.png"&gt;&lt;img title="Flat-design" class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="Flat-design" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/Flat-design_thumb.png" width="800" height="800" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Looking at the denoted &amp;ldquo;Web 2.0 button&amp;rdquo; we see a drop shadow, a gradient on the lower portion of the button and a separation of color on the upper part. Though these web 2.0 buttons can be done a thousand different ways, the above is a rough generalization of the design approach. Notice that the button seems &amp;ldquo;clickable&amp;rdquo; in that it has features on it that make is seem as though it is &amp;ldquo;popping&amp;rdquo; off of the page. In contrast, the flat buttons go about the same scenario much differently. The first flat button is the Windows 8 Metro type of button, which can be characterized by a strong color and a Segoe UI font. The other flat button takes a different approach to flat design, as it is slightly rounded, uses a muted color (the green in this case is: #2ecc71), and the font is subtle, not flashy, but enough to get the job done (in this case it is Lato). Also, which seems to be a style of flat design is a white colored text on top of the button (though I don&amp;rsquo;t know why this is the case, it just seems prevalent).&lt;/p&gt;
&lt;h2&gt;Images of Users&lt;/h2&gt;
&lt;p&gt;Images within the Flat design trend are rounded when portraying profile images. This isn&amp;rsquo;t a hard and fast rule, but seems to be the rule more often then not, here are some examples:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="well"&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/image_2.png"&gt;&lt;img title="image" class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/image_thumb.png" width="529" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/image_4.png"&gt;&lt;img title="image" class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/image_thumb_1.png" width="645" height="473" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/image_6.png"&gt;&lt;img title="image" class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/image_thumb_2.png" width="447" height="432" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;See how the above pictures use this rounded user-image design? It looks good, it looks clean, and it makes a previously silly function (circle images--- admit it, they look weird in so many circumstances) quite anesthetically appealing.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;Colors&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The colors are generally muted in a flat design architecture, with heavy reliance on subtle contrast. Look at the below picture:&lt;/p&gt;
&lt;div class="well"&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/image_8.png"&gt;&lt;img title="image" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/ThoughtsonFlatUIDesignPatterns_B5AE/image_thumb_3.png" width="596" height="392" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The colors in this image are HEAVILY muted and are relying on extremely subtle changes in contrast to bring forth UI information. The placeholder text is so light that it is merely hinting what to do, which makes for a relatively attractive appearance. Although this can be argued for days whether it is a viable user interface approach, it cannot be argued that this design looks appealing.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have actually talked about very little in this post, but I wanted to bring forth some common UI trends as it has been so noticeable to me as of late. With that said, enjoy your developing!&lt;/p&gt;</description><pubDate>Sun, 28 Apr 2013 19:55:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/thoughts-on-flat-ui-vs.-skeumorphic-design-patterns</guid></item><item><title>Go Watch DotNetConf Today!</title><link>http://ryankeeter.com:80/go-watch-dotnetconf-today</link><description>&lt;p&gt;Today is the live streaming of the &lt;a href="http://live.dotnetconf.net"&gt;dotnetconf&lt;/a&gt; conference, an open conference, over the air, that is broadcasted live to YOU! It is sent over Google+ and can be viewed via YouTube at a live streaming address. Check out the conversation at: &lt;a href="https://jabbr.net/#/rooms/dotnetConf-Live"&gt;https://jabbr.net/#/rooms/dotnetConf-Live&lt;/a&gt;, and make sure to catch the session you are craving!&lt;/p&gt;
&lt;h2&gt;Session List&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6&gt;Day 1 - April 25th, 2013&lt;/h6&gt;
&lt;p&gt;Time&lt;br /&gt;Session&lt;/p&gt;
&lt;p&gt;9:00 AM (PDT)&lt;/p&gt;
&lt;p&gt;4:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Advanced Debugging with WinDbg and SOS&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=goldshtn"&gt;Sasha Goldshtein&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio is an incredible debugger, but problems encountered in the production environment and exceptionally tough bugs still warrant the introduction of WinDbg and SOS in all their glory. In this session we'll see how to dissect memory leaks with SOS and CLR Profiler, how to solve deadlocks with wait chain traversal and SOSEX, and how to immediately pinpoint application crashes from dump files.&lt;/p&gt;
&lt;p&gt;10:00 AM (PDT)&lt;/p&gt;
&lt;p&gt;5:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Utilize Compilation as a Service to create the next level plugin capability&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=fekberg"&gt;Filip Ekberg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We are moving towards a new era where more and more people want to offer the possibility to expand the system with widgets and plugins. By utilizing Compilation as a Service can make it easier for all parties to create plug-ins. For instance operations performed at certain events in an application.Roslyn exposes a C # and VB.NET compiler and we can use this to implement something along those lines. Listen to me give an introductory talk about what Roslyn has to offer and how we can use Compilation as a Service to enable the next level of plugins.&lt;/p&gt;
&lt;p&gt;11:00 AM (PDT)&lt;/p&gt;
&lt;p&gt;6:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Responsive Design: Designing from Mobile Up&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=shawnwildermuth"&gt;Shawn Wildermuth&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Creating web sites today requires that we focus on more screen sizes than ever. Responsive Design can help us do this in an effective way. In this talk, Shawn will show you how to achieve screen-size independence and why designing your look and feed from the mobile experience is the right way to get the best performing site.&lt;/p&gt;
&lt;p&gt;12:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;7:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Git in my TFS!&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=cromwellryan"&gt;Ryan Cromwell&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Your a gitster in a land of Team Foundation Server. You want your local branches, git-flow and rebasing, but the rest of the neighborhood isn't ready. What do you do? In this session we'll explore the new open-source Git-Tf project.&amp;nbsp; Git-Tf is a set of cross-platform, command line tools that facilitate sharing of changes between TFS and Git. We'll then look at the recently announced native Git repositories in TFS, what that might mean for your organization and how you can get started today.&lt;/p&gt;
&lt;p&gt;1:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;8:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;.NET Open Source Panel&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker="&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A conversation about open source with Andreas H&amp;aring;kansson (NancyFx), Jeremy Miller (FubuMVC), Sebastien Lambla (OpenRasta), Mark Rendle (Simple.Web), Demis Bellot (ServiceStack), and Phillip Haydon.&lt;/p&gt;
&lt;p&gt;2:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;9:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Using require.js in an ASP.NET MVC application&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=jcreamer898"&gt;Jonathan Creamer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This talk will cover the basics of using require.js as a JavaScript module system and help describe many of the reasons why such a framework is needed in JavaScript. It will dive into how to integrate require.js into an ASP.NET MVC application and how to minify the JavaScript using the r.js build tool. The talk comes from a written tutorial http://tech.pro/tutorial/1156/using-requirejs-in-an-aspnet-mvc-application.&lt;/p&gt;
&lt;p&gt;3:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;10:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Power charge your website with MongoDB&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=nurih"&gt;Nuri Halperin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We hear a lot about NoSQL and big data. The great news is that you can harness the powers of MongoDB (one of the most popular NoSQL databases) easily and fluently from within ASP.NET / MVC. Using very basic techniques we'll explore how to get a website up and running against this wonderful schema-less database, pitching to it's strengths and relieving many of the ORM and relational pains we may have been subjected to in the past. See why companies like Craigslist, FourSquare, ShutterFly and so many others choose this database for their business.&lt;/p&gt;
&lt;p&gt;4:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;11:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Angry Birds of Modern JavaScript Development&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=elijahmanor"&gt;Elijah Manor&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A diabolical herd of pigs stole all of the front-end web architecture from an innocent flock of birds and now they want it back! A team of special agent hero birds will attack these despicable pigs until they recover what is rightfully theirs, front-end architecture! Each bird represents a topic, technique, or library that is useful in JavaScript development. Some topics covered include code organization, events and messaging, MV* frameworks, prototyping and mocking, design patterns, linting, and build systems. Come join me as we watch this epic battle unfold!&lt;/p&gt;
&lt;p&gt;5:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;12:00 AM (GMT)&lt;/p&gt;
&lt;h6&gt;Why Windows 8 Applications need OData and How You can be a Data Ninja&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=cwoodruff"&gt;Chris Woodruff&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows 8 applications are the ultimate in consumer experience but what drives these applications? Data!! What you need to remember about Windows 8 applications is that they can work with data through web services. What is the easiest way to drive your new Metro applications and make your users happy? OData is the answer and Chris Woodruff will teach you the secrets of OData and how these skills will make you a Master of Data.&lt;/p&gt;
&lt;p&gt;6:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;1:00 AM (GMT)&lt;/p&gt;
&lt;h6&gt;Understanding the Task Parallel Library&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=yrodenski"&gt;Yaniv Rodenski&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of the most fascinating additions to .NET Framework 4.0 was the Task Parallel Library (TPL). In addition to the cleaner parallel APIs, TPL also provides a robust infrastructure for developing better parallel applications. In this session, we will learn how to gain real benefits from parallelizing your applications with .NET 4.0 and TPL. We'll discuss parallel programming paradigms, concepts, APIs and learn about upcoming changes in TPL 4.5.&lt;/p&gt;
&lt;hr /&gt;&lt;hr /&gt;
&lt;h6&gt;Day 2 - April 26th, 2013&lt;/h6&gt;
&lt;p&gt;Time&lt;br /&gt;Session&lt;/p&gt;
&lt;p&gt;9:00 AM (PDT)&lt;/p&gt;
&lt;p&gt;4:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Advanced Windows Phone 8 Development&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=LBugnion"&gt;Laurent Bugnion&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows Phone 8 is the next big thing, and the press is already raving about new devices. With new capabilities, new sensors and improved performance, Windows Phone users have devices which are the best on the market. In this code-packed session, we will talk about advanced features such as asynchronous programming, web connections, mapping and location, background operations (multitasking) and other exciting topics.&lt;/p&gt;
&lt;p&gt;10:00 AM (PDT)&lt;/p&gt;
&lt;p&gt;5:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Rediscover JavaScript&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=davidvujic"&gt;David Vujic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Most of us know JavaScript, right? Do you know the difference between x == y and x === y when coding JavaScript? Don't Google it! Didn't know the answer? Then this session is made for you. During this session we will rediscover the JavaScript programming language and take a look at the elegant parts, the good parts and also the ugly parts that should be avoided. I will write and talk about functions, objects and closures. The things that helps us deliver great interactive products for the Web, the Smart Phone and Windows 8.&lt;/p&gt;
&lt;p&gt;11:00 AM (PDT)&lt;/p&gt;
&lt;p&gt;6:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;HTTP the Right Way with ASP.NET Web API&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=smichelotti"&gt;Steve Michelotti&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Modern web applications have seen an explosion in Web API creation. Twitter, Facebook, Google, Azure, you name it &amp;ndash; it is becoming essential to provide a Web API so that consumers can build applications and mashups on top of your services. Web 2.0 has shown a trend away from SOAP towards a REST architecture style. With the new ASP.NET Web API, Microsoft is now providing first-class support for HTTP services including tools to apply the richness of a REST architectural style. This demo heavy presentation will show how the new ASP.NET Web API will enable you to build rich HTTP services in a REST architectural style while leveraging custom media types, custom HTTP handlers, jQuery and more! The presentation will also cover new features of MVC 4 including Razor enhancements, support for mobile apps, and single page applications.&lt;/p&gt;
&lt;p&gt;12:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;7:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Taking the Leap into the touch less future with Leap Motion&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=irisclasson"&gt;Iris Classon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The motion tracking device that even Tom Cruise in Minority Report would envy back in 2002. With the air gesture controlled apps at our door step and the Leap Motion leading the way, this is a session you don&amp;rsquo;t want to miss. I&amp;rsquo;ll demonstrate the device, go through its inner workings, the API&amp;rsquo;s and the air store. But even more important- there will be code. Let&amp;rsquo;s bring the future to life for a Minority Report 2013 inspired session.&lt;/p&gt;
&lt;p&gt;1:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;8:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Single Page Web Apps (SPA) Jump Start&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=john_papa"&gt;John Papa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Interested in learning more about building Single Page Apps? SPA's focus on delivering better user experiences with significant client-side interactions using JavaScript, HTML5 and CSS. Now you can get started with SPA using the ASP.NET SPA Template. This session explores the core pieces that help you build end-to-end SPA solutions including code structure and modularity, using data binding and MVVM, abstracted remote data calls, page navigation and routing, app life cycle, and rich data features. Along the way I'll also touch on popular libraries such as Durandal, Knockout, and Breeze.&lt;/p&gt;
&lt;p&gt;2:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;9:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Code Second?: Entity Framework Meets Legacy Database Meets PowerShell&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=eric_anderson"&gt;Eric Anderson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In an ideal world, projects begin with a stable database mapping strategy and an empty database schema. Current object-relational mapping tools often use opinionated conventions that make building the persistence layer as you build your domain model a snap. But, what do you do when starting with an existing database structure and applying a new ORM tool? That new opinionated tool can often conflict with the existing structure. In this hour, you will learn how a legacy database and Entity Framework Code First can meet in the middle. As a bonus, you will also learn more about getting the most out of the PowerShell environment that is built into Visual Studio via a tiny little project called SolutionScripts.&lt;/p&gt;
&lt;p&gt;3:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;10:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Applied NoSQL in .NET&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=mkennedy"&gt;Michael Kennedy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Perhaps you've heard about the next generation of databases roughly classified as NoSQL databases? These databases are generally much better than RDBMS at scaling, performance, and ease-of-development (e.g. in NoSQL the object-relational impedance mismatch usually disappears). Unfortunately, many talks on NoSQL are very academic and general. Not this one. This session will introduce the ideas around the so-called NoSQL movement, and we&amp;rsquo;ll learn how to leverage MongoDB (a popular open source NoSQL db) to build .NET applications using LINQ as the data access language. We&amp;rsquo;ll build out a .NET application using LINQ and MongoDB in a series of interactive demos using Visual Studio 2012 and C#.&lt;/p&gt;
&lt;p&gt;4:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;11:00 PM (GMT)&lt;/p&gt;
&lt;h6&gt;Test Driving .NET&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=keburnell"&gt;Keith Burnell&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Software development methodologies come and go like boy bands. Every week someone in the blogosphere is hyping a new methodology, or modifications to an existing one, all of which claim to be the next big thing. Test-driven development (TDD) is one of the methodologies that has outlasted its fad phase and has become a major player in the software development methodology arena. Once you have grasped the methodology there are numerous ways you can make the process easier in the .NET space. In this talk Keith will provide guidance on how to architect your code and solution structure to lend itself to unit testing. He will also dive deep into how you can, using SOLID design principles, write code optimized for testing. He will discuss more complex concepts such as Inversion of Control/Dependency Injection and mocking. Keith will also dive into automated UI testing tools such as WatiN.&lt;/p&gt;
&lt;p&gt;5:00 PM (PDT)&lt;/p&gt;
&lt;p&gt;12:00 AM (GMT)&lt;/p&gt;
&lt;h6&gt;Patterns &amp;amp; Best Practices For Moving From RDBMS to Azure Storage&lt;/h6&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://live.dotnetconf.net/speakers.cshtml?speaker=CaitieM20"&gt;Caitie McCaffrey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Moving from storing your data in an RDBMS like SQL Server to a NoSQL data store like Azure Table requires a programming paradigm shift. This talk will share the knowledge the Halo Services Team gained while making the jump from SQL to Azure Storage while working on Halo 4. I&amp;rsquo;ll start with an overview of the core differences between the two data stores. In addition I&amp;rsquo;ll discuss the importance of partitions in Azure Table, and how to perform transactions. Finally I&amp;rsquo;ll cover how to incorporate other data best practices, and explore how to achieve transaction like behavior across partitions using the Saga Pattern.&lt;/p&gt;</description><pubDate>Thu, 25 Apr 2013 14:25:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/go-watch-dotnetconf-today</guid></item><item><title>Video Walkthrough of my Home Office (with a treadmill desk!)</title><link>http://ryankeeter.com:80/video-walkthrough-of-my-home-office-with-a-treadmill-desk</link><description>&lt;p align="center"&gt;&lt;iframe height="480" src="http://www.youtube.com/embed/8hTToFAO4o8" frameborder="0" width="853" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/p&gt;</description><pubDate>Wed, 24 Apr 2013 03:17:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/video-walkthrough-of-my-home-office-with-a-treadmill-desk</guid></item><item><title>A Narrative On AngularJS vs. DurandalJS</title><link>http://ryankeeter.com:80/a-narrative-on-angularjs-vs.-durandaljs</link><description>&lt;p&gt;This video is a couple of things: 1) my first attempt at a green screen video, and 2) a narrative and view into two competing single page application frameworks.&lt;/p&gt;
&lt;p&gt;&lt;iframe height="480" src="http://www.youtube.com/embed/Y8NXP0ne8UU" frameborder="0" width="853" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/p&gt;</description><pubDate>Tue, 23 Apr 2013 00:50:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/a-narrative-on-angularjs-vs.-durandaljs</guid></item><item><title>AngularJS vs. DurandalJS - part 2 of N – Data-binding</title><link>http://ryankeeter.com:80/angularjs-vs.-durandaljs-part-2-on-n-%E2%80%93-data-binding</link><description>&lt;h2&gt;tl;dr&lt;/h2&gt;
&lt;p&gt;Both AngularJS and DurandalJS have data-binding. The methods that they employ to perform this function is arbitrary as they are both easy, logical, and are straight-forward. However, as you might have some inherent preferences, I show how each framework performs binding.&lt;/p&gt;
&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://angularjs.org"&gt;Angular&lt;/a&gt; and &lt;a href="http://durandaljs.com/"&gt;Durandal&lt;/a&gt; both have their own opinion regarding data-binding. Data-binding is, at the outset, a method to tie together the current state of a javascript variable with a UI component. For example, if a javascript variable named &lt;strong&gt;&amp;ldquo;X&amp;rdquo;&lt;/strong&gt; has a current value of &lt;strong&gt;&amp;ldquo;foo",&lt;/strong&gt; then the data-bound UI component, like a &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; tag, will have a value of &lt;strong&gt;&amp;ldquo;foo&amp;rdquo;&lt;/strong&gt; as well. As the variable changes, so does the UI component, in real-time. When going about this approach by each framework, the idiosyncrasies of each begins to show themselves.&lt;/p&gt;
&lt;h2&gt;Angular&amp;rsquo;s Binding Pattern&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Angular hearts handlebars&lt;/strong&gt;. &lt;a href="http://handlebarsjs.com"&gt;Handlebars&lt;/a&gt; is a templating library that replaces annotated variables in the markup with actual values. Usually a handlebars approach uses &lt;strong&gt;&amp;ldquo;{{&amp;ldquo;&lt;/strong&gt; and &lt;strong&gt;&amp;ldquo;}}&amp;rdquo; &lt;/strong&gt;as the annotation convention, so if a &lt;strong&gt;Customer&lt;/strong&gt; object has a property of &lt;strong&gt;Name&lt;/strong&gt;, then the handlebars expression in the template that is bound to the &lt;strong&gt;Customer&lt;/strong&gt; object would look like &lt;code&gt;{{ Name }}&lt;/code&gt;.This pattern is easy, understandable, and requires very little view markup that is superfluous. Here is some markup that has the Angular handlebar data-bind syntax:&lt;/p&gt;
&lt;p&gt;&amp;lt;div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span&amp;gt; {{ Name }} &amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span&amp;gt; {{ Address }} &amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;button ng-click=&amp;rdquo;HandleConfirmClick()&amp;rdquo;&amp;gt;Confirm&amp;lt;/button&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;Durandal&amp;rsquo;s Binding Pattern&lt;/h2&gt;
&lt;p&gt;Durandal goes about things differently because Durandal is merely an extension of a series of frameworks that already exist (namely &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt;, &lt;a href="http://knockoutjs.com"&gt;Knockout&lt;/a&gt;, &lt;a href="http://requirejs.org"&gt;RequireJS&lt;/a&gt;, and &lt;a href="http://sammyjs.org"&gt;SammyJS&lt;/a&gt;). Thus, the data-binding scenario for Durandal is merely the data-bind syntax that Knockout offers. Knockout, in contrast to Angular, uses the &lt;code&gt;data-*&lt;/code&gt; attribute to source its data-binding commands. For example, a &amp;lt;&lt;code&gt;span&amp;gt;&lt;/code&gt; element that has a &lt;code&gt;data-bind&lt;/code&gt; attribute of &lt;code&gt;text:Name&lt;/code&gt; would have a span whose value would derive from the &lt;code&gt;Name&lt;/code&gt; property value. Here is the same code as above but with the Durandal data-binding pattern.&lt;/p&gt;
&lt;p&gt;&amp;lt;div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span data-bind=&amp;rdquo;text: Name&amp;rdquo;&amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span data-bind=&amp;rdquo;text:Address&amp;rdquo;&amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;button data-bind=&amp;rdquo;click: HandleConfirmClick&amp;rdquo;&amp;gt;Confirm&amp;lt;/button&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This is all rather basic, but it quickly shows the differences between the two frameworks. Each requires client-side markup in the form of templated language annotations or HTML5 data-* attributes, so in this regard, both frameworks are similar in their abilities.&lt;/p&gt;</description><pubDate>Mon, 22 Apr 2013 19:06:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/angularjs-vs.-durandaljs-part-2-on-n-%E2%80%93-data-binding</guid></item><item><title>AngularJS vs. DurandalJS – part 1 of N – Where do these technologies fit?</title><link>http://ryankeeter.com:80/angularjs-vs.-durandaljs-%E2%80%93-part-1-on-n-%E2%80%93-where-do-these-technologies-fit</link><description>&lt;p&gt;Here&amp;rsquo;s the deal, I like DurandalJS. Though, I&amp;rsquo;m not going to lie, I really like AngularJS as well. These two technologies compete in many respects as they both seem to tackle the same problem. What problems are these frameworks trying to tackle? I have made a diagram of what I see to be the core developments in client side technologies, and after you view this, I will talk about where I see Angular and Durandal fitting in (note that there are a myriad of other useful frameworks that do storage, pub/sub eventing, animation, data-binding, AMD pattern ala requireJS, and a slew of other things, but this represents what I believe is the focus on today&amp;rsquo;s client-side development).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/AngularJSvs.DurandalJSpart1onn_B536/State-of-Javascript_2.png"&gt;&lt;img title="State-of-Javascript" style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" border="0" alt="State-of-Javascript" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/AngularJSvs.DurandalJSpart1onn_B536/State-of-Javascript_thumb.png" width="800" height="600" /&gt;&lt;/a&gt;The key elements that I focus on are DOM manipulation, routing, and MV* (model-view-controller or model-view-viewmodel, or some other variation). Although data access is very important, and many frameworks throw in an element of data access just for fullness (like Angular&amp;rsquo;s &lt;strong&gt;$http&lt;/strong&gt; object), I believe that data frameworks are more often found to be separate tools, and not wrapping into, say, routing frameworks. In the world of Javascript, and client-side development, you will see frameworks popping up all the time that try to accomplish the MV* and routing scenario; and Angular and Durandal do just that. Thus, right off the bat, you should think of Angular and Durandal to accomplish the entirety of the blue and red circles above. I will get into it more later, but essentially these frameworks allow for &lt;strong&gt;Single Page Applications.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;So what can these frameworks do exactly?&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/AngularJSvs.DurandalJSpart1onn_B536/Comparisons-of-Angular-and-Durandal_2.png"&gt;&lt;img title="Comparisons-of-Angular-and-Durandal" style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" border="0" alt="Comparisons-of-Angular-and-Durandal" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/AngularJSvs.DurandalJSpart1onn_B536/Comparisons-of-Angular-and-Durandal_thumb.png" width="800" height="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The key differences between Angular and Durandal at the outset lies in the amount of inherent knowledge a dev can bring to the party. If you know Knockout and RequireJS, then Durandal will be easy to understand. If you want to learn Google&amp;rsquo;s opinion on Knockout, RequireJS, and SammyJS, then go check out Angular. I will expand on this concept in later posts, but for now, this post shows part of the world of modern Javascript and targets the patterns that these frameworks have looked to perfect.&lt;/p&gt;</description><pubDate>Thu, 18 Apr 2013 21:02:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/angularjs-vs.-durandaljs-%E2%80%93-part-1-on-n-%E2%80%93-where-do-these-technologies-fit</guid></item><item><title>Tragedy in Boston</title><link>http://ryankeeter.com:80/tragedy-in-boston</link><description>&lt;p&gt;Two bombs went off yesterday in Boston at the finish line of the storied Boston Marathon. The blast killed three, injured 144, and left many without legs. This act of terrorism, as defined by the White House, is the first successful act of public terrorism since 9/11. Was it foreign terrorism though? Yesterday was Patriot day in Boston, Tax Day for America, and of course, the Boston Marathon; either one of these events could spark aggression. Only time will tell where this act originated from.&lt;/p&gt;
&lt;p&gt;My heart goes out to Boston.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/TragedyinBoston_8735/boston%20bombing_2.png"&gt;&lt;img title="boston bombing" class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="boston bombing" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/TragedyinBoston_8735/boston%20bombing_thumb.png" width="348" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 16 Apr 2013 14:18:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/tragedy-in-boston</guid></item><item><title>Upcoming Course I’m Producing on Durandal JS and Mobile Development</title><link>http://ryankeeter.com:80/upcoming-course-i%E2%80%99m-producing-on-durandal-js-and-mobile-development</link><description>&lt;p&gt;So I dig mobile development with HTML5. The tools given to us by such frameworks as Knockout, Durandal, Phonegap/Cordova, and a myriad of other javascript frameworks allow for beautiful HTML5 development without the knowledge of specific native coding paradigms. Because I think this is the future of mobile and the web, I will be producing a multi-part course on this subject while developing a real-life application. The basic layout of the course is as follows (this is an initial listing, nothing is final).&lt;/p&gt;
&lt;p&gt;1. Why HTM5 for native application development on a mobile device&lt;/p&gt;
&lt;p&gt;2. Why Durandal makes sense compared to similar frameworks like AngularJS&lt;/p&gt;
&lt;p&gt;3. What components makes Durandal special&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;a. Crash course on KnockoutJS (data-binding)&lt;/p&gt;
&lt;p&gt;b. Crash course on RequireJS (AMD pattern delivery)&lt;/p&gt;
&lt;p&gt;c. Crash course on SammyJS (routing)&lt;/p&gt;
&lt;p&gt;c. How Durandal seamlessly puts these libraries together into a framework&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;4. Part 1: The App Design&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Problem: Define the problem our app will solve&lt;/p&gt;
&lt;p&gt;Design: Design the characteristics that our app will need to meet the problem&lt;/p&gt;
&lt;p&gt;Solution: Start hashing out the foundation of our application&lt;/p&gt;
&lt;p&gt;a. Create a new project for Windows Phone 8&lt;/p&gt;
&lt;p&gt;b. Pull Durandal down from Nuget&lt;/p&gt;
&lt;p&gt;c. Create a main.js&lt;/p&gt;
&lt;p&gt;d. Create a shell.js and shell view&lt;/p&gt;
&lt;p&gt;e. Create initial routing and publish the app to emulator to review&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;5. Part 2: Login&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Problem: Users need to log into a system they can trust&lt;/p&gt;
&lt;p&gt;Design: Incorporate Facebook login mechanisms into the design of the application and use Facebook login as our user repository&lt;/p&gt;
&lt;p&gt;Solution: Add Facebook login into our application&lt;/p&gt;
&lt;p&gt;a. Create a Facebook Bootstrap&lt;/p&gt;
&lt;p&gt;b. Add the Facebook scripts to the page asynchronously&lt;/p&gt;
&lt;p&gt;c. Create a splash screen&lt;/p&gt;
&lt;p&gt;d. Create a login screen and routing&lt;/p&gt;
&lt;p&gt;e. Create a click event in the login viewmodel to handle the user initiating a facebook authentication&lt;/p&gt;
&lt;p&gt;f. Ask FB to login user, and after user has logged in, redirect to login handler and then to their dashboard (to view all current events added)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;6. Part 3: Create an Event&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Problem: A person that wants to add gifts to a registry will need an event to send the gifts to&lt;/p&gt;
&lt;p&gt;Design: Create an event-add screen, an event summary screen, an event-edit screen, and we will need to also be able to delete events&lt;/p&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;p&gt;a. Event-Add screen&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1. Create an event add view and viewmodel&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 2. Add a form to create an event that has validation using Knockout Validation&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 3. Add a click event to handle movement of form data to a server for insertion&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 4. Show user a successful save message (or error) via modal and send them to the event summary screen&lt;/p&gt;
&lt;p&gt;b. Event Summary screen&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1. Create an event summary view and VM&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 2. Create handler for an edit button that will enable the user to edit the details of the event (date, time, etc.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 3. Create a handler to handle the requested deletion of the event&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 4. Create a handler to add a gift to the event&lt;/p&gt;
&lt;p&gt;c. Event Edit screen&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1. Put all values back into inputs and allow for editing&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 2. Validate data&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 3. Handle data input and send back to server to update&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;7. Part 4: Add a gift to the event registry&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Problem: We have an event, which is awesome, but we don&amp;rsquo;t have a way for users to actually add gifts to the registry&lt;/p&gt;
&lt;p&gt;Design: Incorporate Phonegap to interface with the phone&amp;rsquo;s camera, and use a phonegap plugin to access barcode data and perform lookups with said data&lt;/p&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;p&gt;a. Create gift-add view and viewmodel&lt;/p&gt;
&lt;p&gt;b. Create click event to handle the phone capture request&lt;/p&gt;
&lt;p&gt;c. Handle the picture capture by the phone and publish the image back to the server and associate the picture with the event in the phone&amp;rsquo;s database&lt;/p&gt;
&lt;p&gt;d. Create click event for a barcode scan picture and utilize the barcode reader data to perform a SKU lookup against a product database the product to the user in a modal. The modal will give the user the option to accept the product or not.&lt;/p&gt;
&lt;p&gt;e. Handle a &amp;ldquo;done&amp;rdquo; click event that brings the user back to the event summary screen where he/she can view the gifts and details of the event&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;8. Part 5: Publish event data to Facebook&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Problem: The user created an event, they added gifts to the event, and now they just want other people to see what to get them off their registry&lt;/p&gt;
&lt;p&gt;Design: Publish the event to FB using the FB event publishing API&lt;/p&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;p&gt;1. Create Publish to FB button on event summary screen&lt;/p&gt;
&lt;p&gt;2. Create a handler to manage the click even of that button and display to the user a pre-publishing verification screen.&lt;/p&gt;
&lt;p&gt;3. Once the user verifies the data, they can continue and publish the data to FB using the &amp;ldquo;publish&amp;rdquo; button on the pre-publishing verification screen&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;9. Part 6: Publish App as an Android App&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Problem: We have been using the windows phone emulator to test our native app, but the requirements changed and I need to publish this to Android&lt;/p&gt;
&lt;p&gt;Design: use the Phonegap build services to create Android binaries and use the build service result on an Android phone&lt;/p&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;p&gt;1. Walk through the tests to use the Phonegap build service on the Phone gap website&lt;/p&gt;
&lt;p&gt;2. Publish results to Android phone&lt;/p&gt;
&lt;p&gt;3. Test&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;10. Conclusion&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1. Review app&lt;/p&gt;
&lt;p&gt;2. review relevance of our production mechanism (HTML5, single page application, etc.)&lt;/p&gt;
&lt;p&gt;3. Say goodbye&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Based on the above, it looks like it will be a 10 part series, and each video will most likely be an hour. These videos will be HEAVY on code and will teach through a &amp;ldquo;learn as I do&amp;rdquo; mechanism.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What do you think, is this something that you, dear reader, would be interested in?&lt;/p&gt;</description><pubDate>Sun, 14 Apr 2013 23:57:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/upcoming-course-i%E2%80%99m-producing-on-durandal-js-and-mobile-development</guid></item><item><title>Using Twitter Bootstrap with Flat Design</title><link>http://ryankeeter.com:80/using-twitter-bootstrap-with-flat-design</link><description>&lt;div class="well"&gt;
&lt;p&gt;UPDATE: Check out a much "flatter" bootstrap theme &lt;a href="http://ryankeeter.com/squared-and-flat-ui-for-twitter-bootstrap"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span size="2" face="junction" style="font-family: junction; font-size: small;"&gt;I must say, I greatly enjoy the flat design culture that is prevalent right now on the internets. I would be remiss if I did not say that Microsoft&amp;rsquo;s Metro design language (now called the Windows App Store design language or something like that) has pushed current design down this &amp;ldquo;flat&amp;rdquo; path. &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span size="2" face="jun" style="font-family: jun; font-size: small;"&gt;What is flat design?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;I think the easiest way to define flat design is to show what is not flat design:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_2.png"&gt;&lt;img title="image" style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb.png" width="381" height="56" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_4.png"&gt;&lt;img title="image" style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_1.png" width="429" height="70" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_6.png"&gt;&lt;img title="image" style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_2.png" width="396" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Notice that a) each of these components comes from the base twitter bootstrap design, and that b) each of them involve drop shadows, gradients, and &lt;strong&gt;basically conveys hierarchical function through design&lt;/strong&gt; (i.e. &amp;ldquo;I am a button, I look like I am popping up from the page, click me!&amp;rdquo;). This type of design looks fantastic, has function on top of design, and has been accepted by the community and users for years. Although this method is functional and fantastic, Windows came out and said, &amp;ldquo;look, we understand that this stuff is all 3-d like and cool, but it isn&amp;rsquo;t &amp;lsquo;authentically digital.&amp;rsquo;&amp;rdquo; The authentically digital mindset gave way to this super-flat design:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_8.png"&gt;&lt;img title="image" style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_3.png" width="450" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notice here the consistent type design (Segoe UI) and the complete lack of three-dimensional depth with their icons and live tiles? The colorful boxes are merely boxes that exist within the design, and do not show a perception of floating above the design and necessitating a drop-shadow. This looks fancy, it looks unique, and it seems functional enough, so how can we tie this super flat design style into a usable and functional web design library?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Enter Flat UI&lt;/h2&gt;
&lt;p&gt;I don&amp;rsquo;t work for &lt;a href="http://designmodo.com"&gt;designmodo&lt;/a&gt;, but I really like their stuff. They recently released a &lt;a href="http://designmodo.github.io/Flat-UI/"&gt;Flat UI&lt;/a&gt; component suite on top of twitter bootstrap that allows for default styling in a pseudo flat manner. The CSS component suite also defines a set of colors that I think rock:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_12.png"&gt;&lt;img title="image" style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_5.png" width="664" height="230" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look at some component side-by-sides (boostrap first, then flat UI second):&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Button:&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_14.png"&gt;&lt;img title="image" style="display: inline; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_6.png" width="741" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Nav Menu:&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_18.png"&gt;&lt;img title="image" style="display: inline; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_8.png" width="240" height="38" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_16.png"&gt;&lt;img title="image" style="display: inline; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_7.png" width="240" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Inputs:&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_20.png"&gt;&lt;img title="image" style="display: inline; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_9.png" width="656" height="399" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_22.png"&gt;&lt;img title="image" style="display: inline; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_10.png" width="939" height="137" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Login Form:&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_24.png"&gt;&lt;img title="image" style="display: inline; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_11.png" width="487" height="325" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_26.png"&gt;&lt;img title="image" style="display: inline; border: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/UsingTwitterBootstrapwithFlatDesign_8C33/image_thumb_12.png" width="508" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Where to get Flat UI?&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can pick up the latest revision of Flat UI from Github at this address: &lt;a href="https://github.com/designmodo/Flat-UI"&gt;https://github.com/designmodo/Flat-UI&lt;/a&gt;. I enjoy the flat design, and when it ties easily into my current web design flow (ala twitter bootstrap), it makes things even better.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;</description><pubDate>Thu, 11 Apr 2013 16:57:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/using-twitter-bootstrap-with-flat-design</guid></item><item><title>Using Knockout Validation in a Durandal JS View</title><link>http://ryankeeter.com:80/using-knockout-validation-in-a-durandal-js-view</link><description>&lt;p&gt;Why should you care about this video? If you validate forms (which you should), and you use Durandal JS (which is awesome), then Knockout Validation is the most pragmatic way to add validation to your project.&lt;/p&gt;
&lt;p&gt;&lt;iframe height="480" src="http://www.youtube.com/embed/P_fpLp5C0LI" frameborder="0" width="853" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/p&gt;</description><pubDate>Tue, 09 Apr 2013 15:50:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/using-knockout-validation-in-a-durandal-js-view</guid></item><item><title>New Blog Design Here</title><link>http://ryankeeter.com:80/new-blog-design-here</link><description>&lt;p&gt;So yeah, I was tired of the design as it was previously, I mean&amp;hellip;it was nice, but it was just SO MUCH WORK. Here was the design previously:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/NewBlogDesignHere_4839/old%20blog_2.png"&gt;&lt;img title="old blog" class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="old blog" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/NewBlogDesignHere_4839/old%20blog_thumb.png" width="583" height="413" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It was a good looking piece of work and it captured the &amp;ldquo;metro&amp;rdquo; feel that I was going for, but it was a pain in the butt to publish something that has to have three different sized images for the post (a featured size, a secondary size, and a quad size). Plus,I used Blueprint CSS to design the grid layout, and that gave me nothing in terms of responsiveness. Look at what happened when I adjusted the screen size:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/NewBlogDesignHere_4839/image_4.png"&gt;&lt;img title="image" class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="image" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/NewBlogDesignHere_4839/image_thumb_1.png" width="433" height="470" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It wasn&amp;rsquo;t pretty nor responsive, the side quad images were ravaged and nothing changed it&amp;rsquo;s viewing size (even with a viewport tag added). Thus, I felt like it was time to redesign (I do this every six months or so because I get bored apparently). The goals of the new design were to have a good and responsive look while having a simple publishing mechanism that I felt good about, as in it was easy, clean, and without trouble. Here is a screen shot of the three responsive views.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryankeeter.com/Media/Default/WindowsLiveWriter/NewBlogDesignHere_4839/responsive-view_2.jpg"&gt;&lt;img title="responsive-view" class="img-polaroid" style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" border="0" alt="responsive-view" src="http://ryankeeter.com/Media/Default/WindowsLiveWriter/NewBlogDesignHere_4839/responsive-view_thumb.jpg" width="727" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Making this responsive type of layout is SUPER trivial and only takes a little Twitter Bootstrap magic. Honestly, this took me maybe an hour to adjust using Orchard and Twitter Bootstrap. If you are looking for some quick development and easy designing&amp;hellip;look at Orchard CMS and Twitter Bootstrap.&lt;/p&gt;</description><pubDate>Mon, 08 Apr 2013 15:42:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/new-blog-design-here</guid></item><item><title>7 Single Page Application Videos I’ve Made Recently</title><link>http://ryankeeter.com:80/7-single-page-application-videos-i%E2%80%99ve-made-recently</link><description>&lt;p&gt;I haven&amp;rsquo;t been very good about posting the videos that I have publishing on YouTube regarding Durandal JS, so I will post the links and download links below:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Durandal Intro video&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Watch: &lt;a href="http://www.youtube.com/watch?v=AKdsk9uIuQU"&gt;http://www.youtube.com/watch?v=AKdsk9uIuQU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download: &lt;a href="http://r3---sn-paapovpnjxou0gt-vgqe.c.youtube.com/videoplayback?expire=1365017822&amp;amp;source=youtube&amp;amp;sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&amp;amp;ipbits=8&amp;amp;mv=m&amp;amp;key=yt1&amp;amp;cp=U0hVSlBMVV9HTENONV9IRllJOllWb25FRlJMQW5X&amp;amp;upn=k9siESf2bX0&amp;amp;ip=131.230.20.170&amp;amp;newshard=yes&amp;amp;id=00a76c93db88b905&amp;amp;sver=3&amp;amp;itag=22&amp;amp;ratebypass=yes&amp;amp;mt=1364996960&amp;amp;ms=au&amp;amp;fexp=932000%2C932004%2C906383%2C902000%2C919512%2C929903%2C931202%2C900821%2C900823%2C931203%2C931401%2C909419%2C908529%2C930807%2C919373%2C930803%2C906836%2C920201%2C929602%2C930101%2C930603%2C926403%2C900824%2C910223&amp;amp;signature=1FF03150CDB653A966E9498BAB2BD1B33D000803.7C872867880211D2EC5BD700EE4160BB14833616&amp;amp;title=Poking%20Around%20Durandal%20JS%20-%20Single%20Page%20Application%20Framework"&gt;720p MP4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Durandal and where to go after getting it from Nuget&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Watch:&lt;a href="http://www.youtube.com/watch?v=1NUZ0R16CxQ"&gt;http://www.youtube.com/watch?v=1NUZ0R16CxQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download: &lt;a href="http://r4---sn-paapovpnjxou0gt-vgqe.c.youtube.com/videoplayback?ratebypass=yes&amp;amp;sver=3&amp;amp;expire=1365019112&amp;amp;key=yt1&amp;amp;id=d4d519d11d7a0b14&amp;amp;mv=m&amp;amp;sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&amp;amp;ipbits=8&amp;amp;ip=131.230.20.170&amp;amp;itag=22&amp;amp;fexp=932000%2C932004%2C906383%2C902000%2C919512%2C929903%2C931202%2C900821%2C900823%2C931203%2C931401%2C909419%2C908529%2C930807%2C919373%2C930803%2C906836%2C920201%2C929602%2C930101%2C930603%2C926403%2C900824%2C910223&amp;amp;ms=au&amp;amp;source=youtube&amp;amp;upn=Gk2fFbqjJiU&amp;amp;cp=U0hVSlBMV19GTENONV9IRkFCOllWb25FRlJOVG1X&amp;amp;newshard=yes&amp;amp;mt=1364997143&amp;amp;signature=2C4CA9DFCF485467D6B261934504C935BF5158EA.B5ADE3DCD4F3508AA42A4AA5EDC9F327A7B36A11&amp;amp;title=Durandal%20JS%20via%20Nuget...Now%20what%3F"&gt;720p MP4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Durandal and Coffeescript&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Watch: &lt;a href="http://www.youtube.com/watch?v=wZwRSJCJtoo"&gt;http://www.youtube.com/watch?v=wZwRSJCJtoo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download: &lt;a href="http://r3---sn-paapovpnjxou0gt-vgqe.c.youtube.com/videoplayback?sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&amp;amp;expire=1365020634&amp;amp;ip=131.230.20.170&amp;amp;source=youtube&amp;amp;ipbits=8&amp;amp;newshard=yes&amp;amp;id=c19c11489089b68a&amp;amp;key=yt1&amp;amp;cp=U0hVSlBNTl9ITkNONV9IR1JHOkFWb25FRlNFWW9Z&amp;amp;upn=vyGaDRL2Wv4&amp;amp;fexp=932000%2C932004%2C906383%2C902000%2C919512%2C929903%2C931202%2C900821%2C900823%2C931203%2C931401%2C909419%2C908529%2C930807%2C919373%2C930803%2C906836%2C920201%2C929602%2C930101%2C930603%2C926403%2C900824%2C910223&amp;amp;ms=au&amp;amp;mv=m&amp;amp;mt=1364997204&amp;amp;sver=3&amp;amp;itag=22&amp;amp;ratebypass=yes&amp;amp;signature=C179606D12BC4952659AD742CB394B5696B37E61.047D63F79FA0E68532B06825CAD43EB2C0C26AF9&amp;amp;title=Using%20Coffeescript%20with%20DurandalJS"&gt;720p MP4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Durandal and how to utilize modals&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Watch: &lt;a href="http://www.youtube.com/watch?v=r_g9dNa4K88"&gt;http://www.youtube.com/watch?v=r_g9dNa4K88&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download:&lt;a href="http://r2---sn-paapovpnjxou0gt-vgqe.c.youtube.com/videoplayback?itag=22&amp;amp;ratebypass=yes&amp;amp;expire=1365019215&amp;amp;id=aff83d74d6b82bcf&amp;amp;sver=3&amp;amp;fexp=932000%2C932004%2C906383%2C902000%2C919512%2C929903%2C931202%2C900821%2C900823%2C931203%2C931401%2C909419%2C908529%2C930807%2C919373%2C930803%2C906836%2C920201%2C929602%2C930101%2C930603%2C926403%2C900824%2C910223&amp;amp;ipbits=8&amp;amp;newshard=yes&amp;amp;key=yt1&amp;amp;upn=jTfR9_KoPXw&amp;amp;source=youtube&amp;amp;sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&amp;amp;mv=m&amp;amp;mt=1364997322&amp;amp;ip=131.230.20.170&amp;amp;ms=au&amp;amp;cp=U0hVSlBMV19GT0NONV9IRkFDOkJWb25FRlJOVW1a&amp;amp;signature=CE619C216FF1B80DCEB29D21A1333F47805F2255.C96FA4C9EB01C8CD243408268F2528C3C1083D7B&amp;amp;title=DurandalJS%20and%20how%20to%20utilize%20Modals"&gt;720p MP4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Durandal and Pub-Sub with Events&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Watch:&lt;a href="http://www.youtube.com/watch?v=wuCpf-Tvff4"&gt;http://www.youtube.com/watch?v=wuCpf-Tvff4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download: &lt;a href="http://r3---sn-paapovpnjxou0gt-vgqe.c.youtube.com/videoplayback?ratebypass=yes&amp;amp;ipbits=8&amp;amp;expire=1365018163&amp;amp;newshard=yes&amp;amp;source=youtube&amp;amp;key=yt1&amp;amp;itag=22&amp;amp;mt=1364997322&amp;amp;mv=m&amp;amp;fexp=932000%2C932004%2C906383%2C902000%2C919512%2C929903%2C931202%2C900821%2C900823%2C931203%2C931401%2C909419%2C908529%2C930807%2C919373%2C930803%2C906836%2C920201%2C929602%2C930101%2C930603%2C926403%2C900824%2C910223&amp;amp;sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&amp;amp;ms=au&amp;amp;ip=131.230.20.170&amp;amp;sver=3&amp;amp;cp=U0hVSlBMVl9LTUNONV9IRlpCOlpWb25FRlJNVHJY&amp;amp;id=c2e0a97fe4ef7dfe&amp;amp;upn=aderTcERsNs&amp;amp;signature=0E918AADA254BC336CDB7C703815903247F199C1.3395F57138A2C9C42C086B19D3A04C8FD195AE73&amp;amp;title=DurandalJS%20and%20Pub-Sub%20with%20Events"&gt;720p MP4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Durandal and how to wire up jQuery and the DOM&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Watch: &lt;a href="http://www.youtube.com/watch?v=WmH5tX1o_Lg"&gt;http://www.youtube.com/watch?v=WmH5tX1o_Lg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download:&lt;a href="http://r2---sn-paapovpnjxou0gt-vgqe.c.youtube.com/videoplayback?upn=qXXKiyaEKg8&amp;amp;ratebypass=yes&amp;amp;id=5a61f9b57d68fcb8&amp;amp;sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&amp;amp;newshard=yes&amp;amp;expire=1365021398&amp;amp;ipbits=8&amp;amp;mt=1364997560&amp;amp;cp=U0hVSlBNT19OUkNONV9IR1NEOjJxZVVlSnNBZGRh&amp;amp;key=yt1&amp;amp;ip=131.230.20.170&amp;amp;sver=3&amp;amp;fexp=900714%2C904828%2C929223%2C916626%2C932000%2C932004%2C906383%2C902000%2C919512%2C929903%2C931202%2C900821%2C900823%2C931203%2C931401%2C909419%2C908529%2C904830%2C930807%2C919373%2C930803%2C906836%2C920201%2C929602%2C930101%2C930603%2C926403%2C900824%2C910223&amp;amp;itag=22&amp;amp;source=youtube&amp;amp;mv=m&amp;amp;ms=au&amp;amp;signature=B350E9F78554C060E408D9C43FC9240CBBEA156F.2455E53A0918C2D0A7BDEA21F4DC1582B83DFB1C&amp;amp;title=DurandalJS%20-%20How%20to%20wire%20up%20jQuery%20and%20the%20DOM"&gt;720p MP4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Durandal&amp;nbsp; and my #1 Gotcha after developing for a month&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Watch: &lt;a href="http://www.youtube.com/watch?v=w_XjWg6xL8I"&gt;http://www.youtube.com/watch?v=w_XjWg6xL8I&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download: &lt;a href="http://r3---sn-paapovpnjxou0gt-vgqe.c.youtube.com/videoplayback?expire=1365021020&amp;amp;newshard=yes&amp;amp;sver=3&amp;amp;mt=1364997861&amp;amp;id=c3f5e35a0eb12fc2&amp;amp;sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&amp;amp;upn=kfLkNeyoJZU&amp;amp;cp=U0hVSlBNT19HSkNONV9IR1NBOjRxZVVlSnNBYXdz&amp;amp;ipbits=8&amp;amp;ratebypass=yes&amp;amp;ms=au&amp;amp;itag=37&amp;amp;key=yt1&amp;amp;source=youtube&amp;amp;fexp=900714%2C904828%2C929223%2C916626%2C922911%2C932000%2C932004%2C906383%2C902000%2C919512%2C929903%2C931202%2C900821%2C900823%2C931203%2C931401%2C909419%2C908529%2C904830%2C930807%2C919373%2C930803%2C906836%2C920201%2C929602%2C930101%2C930603%2C926403%2C900824%2C910223&amp;amp;ip=131.230.20.170&amp;amp;mv=m&amp;amp;signature=02244FF3DEE4197EEC7302F1C77A44BF075E0036.3F2C08353F20F3D484D82EC7C266FAB0A4639C3A&amp;amp;title=Durandaljs%20-%20My%20number%20%231%20Gotcha%20tip"&gt;1080p MP4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/ol&gt;
&lt;p&gt;&lt;span color="#434343" face="Tahoma" style="color: #434343; font-family: Tahoma;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span color="#434343" face="Tahoma" style="color: #434343; font-family: Tahoma;"&gt;Hopefully with these vids and some others that I have planned in the works you will able be able to start some rockin&amp;rsquo; Durandal development.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/ol&gt;</description><pubDate>Wed, 03 Apr 2013 16:07:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/7-single-page-application-videos-i%E2%80%99ve-made-recently</guid></item><item><title>Utilizing Modals within Durandal JS</title><link>http://ryankeeter.com:80/utilizing-modals-within-durandal-js</link><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This video dives into the modal utilities of the &amp;ldquo;app&amp;rdquo; file in Durnandal JS. If you have any questions, then please leave a comment here or on Youtube!&lt;/p&gt;
&lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8c67e2ab-028c-458c-bb46-7063160cbc70" class="wlWriterEditableSmartContent" style="float: none; margin: 0px auto; display: block; width: 425px; padding: 0px;"&gt;
&lt;div id="239b999e-880b-4878-8144-f94e5cb0c65c" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;object width="425" height="636"&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/r_g9dNa4K88&amp;amp;hl=en" type="application/x-shockwave-flash" width="425" height="636" /&gt;&lt;/object&gt;&lt;/div&gt;
&lt;/div&gt;</description><pubDate>Sun, 31 Mar 2013 14:35:00 GMT</pubDate><guid isPermaLink="true">http://ryankeeter.com:80/utilizing-modals-within-durandal-js</guid></item></channel></rss>