<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D0AMQXs4eyp7ImA9WhBaEko.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013</id><updated>2013-05-22T22:23:00.533-04:00</updated><category term="Win8nl" /><category term="Contest" /><category term="Windows 8" /><category term="MVVM" /><category term="WebAPI" /><category term="Mobile Services" /><category term="Code Camp" /><category term="Review" /><category term="CodeProject" /><category term="Survey" /><category term="geeks" /><category term="Tampa Code Camp" /><category term="Talks" /><category term="Azure" /><category term="ASP.NET" /><category term="RadHubTile" /><category term="Windows Phone" /><category term="Portable Class Library" /><category term="RadCustomHubTile" /><category term="Apps" /><category term="Meetup" /><category term="Fiddler" /><category term="off time" /><category term="Icenium" /><category term="nerds" /><category term="User Group" /><category term="Routing" /><category term="Mobile" /><category term="Orlando Windows Phone User Group" /><category term="Social" /><category term="Enthusiasm" /><category term="Richmond Code Camp" /><category term="wpdev" /><category term="IoC" /><category term="REST" /><category term="Nokia" /><category term="Florida Developer" /><category term="Lumia 900" /><category term="MVP" /><category term="MVVM Light" /><category term="Kendo" /><category term="Orlando Code Camp" /><category term="Passion" /><category term="Async/Await" /><category term="Dark Sky" /><category term="WinRT" /><category term="Boot Camp" /><category term="C#" /><category term="Famous" /><category term="Regex" /><category term="Windows Phone 7" /><category term="ATT" /><category term="Nodejs" /><category term="fldev" /><category term="Telerik" /><category term="Find Amber" /><category term="WinJS" /><category term="Workshops" /><category term="Marketplace" /><category term="Paparazzi" /><category term="Windows Store Apps" /><category term="Unbox" /><category term="Microsoft Store" /><category term="hot" /><category term="JavaScript" /><category term="Nokia Dev" /><category term="WPF" /><category term="Tips and Tricks" /><category term="Silverlight" /><category term="TypeScript" /><title>TattooCoder</title><subtitle type="html">Shayne Boyer</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.tattoocoder.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Tattoocoder" /><feedburner:info uri="tattoocoder" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Tattoocoder</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;CkYBQXg6cSp7ImA9WhBXFEQ.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-3393462953139736838</id><published>2013-03-28T10:57:00.001-04:00</published><updated>2013-03-28T13:02:30.619-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-28T13:02:30.619-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Icenium" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Telerik" /><category scheme="http://www.blogger.com/atom/ns#" term="Kendo" /><title>Cross Mobile Development with Icenium, KendoUI &amp; Azure Mobile Services</title><content type="html">I have recently spent some time with &lt;a href="http://www.telerik.com/" target="_blank"&gt;Telerik&lt;/a&gt;'s new product offering for cross mobile development called Icenium and I have to say it is quite nice. &amp;nbsp;Paired with &lt;a href="http://www.kendoui.com/mobile.aspx" target="_blank"&gt;KendoUI Mobile&lt;/a&gt; you can't go wrong with a great set of tools for cross mobile platform development if you are an HTML&amp;nbsp;+ CSS&amp;nbsp;+ JavaScript developer.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In this series, I'll walk through a simple blood pressure tracking application built with Icenium, Kendo UI Mobile and Azure Mobile Services. Here is the outline for the series:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Part 1: Introduction and project setup&lt;/div&gt;
&lt;div&gt;
Part 2: Creating the UI&lt;/div&gt;
&lt;div&gt;
Part 3: Adding Azure Mobile Services&lt;/div&gt;
&lt;div&gt;
Part 4: Authentication using Azure Mobile Services&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Icenium&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.icenium.com/assets/img/icenium-logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="66" src="http://www.icenium.com/assets/img/icenium-logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Icenium is a cloud based IDE, there is also a Windows WPF Click-Once app, that allows you as a developer to leverage your existing HTML, CSS and JavaScript skills to develop hybrid cross mobile platform applications. &amp;nbsp;Assistance of publishing your applications to the Google Play and Apple Store, integrated debugging and development environment, source control integration (including Git) and much more. &amp;nbsp;See&amp;nbsp;&lt;a href="http://www.icenium.com/" target="_blank"&gt;http://www.icenium.com&lt;/a&gt; for more information.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I will mention also that the underlying bits of Icenium is PhoneGap (Apache-Cordova) which provides and API through JavaScript (cordova.js) to the device functions such as the camera other hardware capabilities. &amp;nbsp;For more information on that piece, &lt;a href="http://freshbrewedcode.com/jimcowart/" target="_blank"&gt;Jim Cowart&lt;/a&gt;&amp;nbsp;(&lt;a href="http://twitter.com/ifandelse" target="_blank"&gt;@ifandelse&lt;/a&gt;) recently did a blog entry on their blog - "&lt;a href="http://www.icenium.com/community/blog/icenium-team-blog/2013/03/26/demystifying-cordova-and-phonegap" target="_blank"&gt;Demystifying Cordova and PhoneGap&lt;/a&gt;".&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Getting Started&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Head over to &lt;a href="http://icenium.com/" target="_blank"&gt;Icenium.com&lt;/a&gt; and click the "Get Started" button. Choose either the browser (cloud) based IDE or download the Windows app.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-j649ehrKMiM/UVRAlol1iMI/AAAAAAAAAeo/tuDwJd3WrIY/s1600/icenium_options.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://1.bp.blogspot.com/-j649ehrKMiM/UVRAlol1iMI/AAAAAAAAAeo/tuDwJd3WrIY/s400/icenium_options.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Once the application is launched select New Project -&amp;gt; Cross Platform Device Application (Kendo UI Mobile). Name the project "MyBloodPressure" and click Ok.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Ro9Tf4lGBTk/UVRB4p7dhPI/AAAAAAAAAe4/AxOLUK9ue18/s1600/icenium_newproject.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="417" src="http://1.bp.blogspot.com/-Ro9Tf4lGBTk/UVRB4p7dhPI/AAAAAAAAAe4/AxOLUK9ue18/s640/icenium_newproject.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div&gt;
In doing so, Icenium presents the built in "Hello World" type template. Shows how geolocation, transitions, styling using Kendo UI Mobile etc. &amp;nbsp;If you run the application by either hitting F5 or clicking the "Run" icon atop the IDE you'll also see the awesome tools for viewing the various mobile devices currently supported as well.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
After you spend a few minutes playing with the emulators and realizing how cool that all is, we'll rip out some stuff add some sauce to this and get cooking.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Reorganizing the Project for Organization&lt;/h3&gt;
&lt;div&gt;
I'm a very big proponent of being able to look at a project and know what the heck is going without having to hunt down someone or run the code and step through it to find out how it's all composed. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In a C#/XAML world in I use the MVVM pattern with MVVM Light for my projects. I like to see the view folder, viewmodel folder etc. when developing the app. &amp;nbsp;For doing so here I will leverage &lt;a href="http://www.requirejs.org/" target="_blank"&gt;RequireJS&amp;nbsp;&lt;/a&gt;&amp;nbsp;for structuring the organization. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Removing&amp;nbsp;unnecessary&amp;nbsp;files&lt;/h4&gt;
&lt;div&gt;
Delete the &lt;i&gt;hello-world.js &lt;/i&gt;from the scripts folder as we will not be using this for the project.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Folder structure&lt;/h4&gt;
&lt;div&gt;
First, lets create a few folders. &amp;nbsp;At the root of the project create an app folder that contains &lt;b&gt;view&lt;/b&gt;, &lt;b&gt;viewmodel &lt;/b&gt;and &lt;b&gt;model&lt;/b&gt;.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-QfD3Ujx4t4w/UVRHG4Jj84I/AAAAAAAAAfE/QZZ2q0YoL3g/s1600/icenium_addfolders.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-QfD3Ujx4t4w/UVRHG4Jj84I/AAAAAAAAAfE/QZZ2q0YoL3g/s320/icenium_addfolders.PNG" width="291" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
For any scripts that are 3rd party libraries, I prefer to put those in the scripts folder and any that are related directly to the application specific functionality I organize them within the app folder appropriately. &amp;nbsp;Given that, I'll move the &lt;i&gt;kendo.mobile.min.js&lt;/i&gt;, &lt;i&gt;jquery.min.js&lt;/i&gt; and also add &lt;i&gt;require.js&lt;/i&gt; to the &lt;b&gt;scripts &lt;/b&gt;folder&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Next, add a new JavaScript file to the app folder by right clicking and selecting add new file. Name is &lt;i&gt;main.js&lt;/i&gt;; this will be the entry point to the application.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Also add a JavaScript file to the app folder named &lt;i&gt;app.js&lt;/i&gt;, this will serve as the singelton for exposing the viewmodels and could also be referred to as the view model locator.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
First item of business is to tell require.js where to find the modules we either have or will be creating in our application. Add the following to &lt;i&gt;main.js &lt;/i&gt;to configure require.js.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
require.config({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; paths: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jQuery: "../scripts/jquery.min",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kendo: "../scripts/kendo.mobile.min",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; view: "../app/view",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; viewmodel: "../app/viewmodel",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; app: "../app"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; },&lt;br /&gt;
&amp;nbsp; &amp;nbsp; shim: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jQuery: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exports: "jQuery"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kendo: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; deps: ["jQuery"],&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exports: "kendo"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
});&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
What this is doing, if you are not familiar, is telling require.js that when a module is defined like&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
define(['viewmodel/bp'], function(bp) { ... } );&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
it knows to go look for bp.js inside of the "[root]/app/viewmodel" folder and not a relative path etc. &amp;nbsp;In the &lt;b&gt;shim&lt;/b&gt;&amp;nbsp;portion of the code we are stating that kendo has a dependency on jQuery and should wait for that library to load first. &amp;nbsp;For more information on requirejs and the config method see&amp;nbsp;&lt;a href="http://requirejs.org/docs/api.html#config" target="_blank"&gt;http://requirejs.org/docs/api.html#config&lt;/a&gt;&amp;nbsp;.&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
Finally in the &lt;i&gt;main.js&lt;/i&gt;&amp;nbsp;file add the following to create the app module, put it in scope and init the application.&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
var app;&lt;br /&gt;
require(["app/app"], function (application) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; console.log('initializing');&lt;br /&gt;
&amp;nbsp; &amp;nbsp; app = application;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; app.init();&lt;br /&gt;
});&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
Last order of business is to add the code to &lt;i&gt;app.js&lt;/i&gt;&amp;nbsp;to tell kendo to initialize the mobile application. &amp;nbsp;Here is the full &lt;i&gt;app.js&lt;/i&gt;&amp;nbsp;code for now.&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
define(["jQuery", "kendo"], function ($, kendo) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; var _kendoApplication;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; init: function () {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log('app init');&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _kendoApplication = new kendo.mobile.Application(document.body,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; { transition: "slide", layout: "mobile-tabstrip" });&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
}); &amp;nbsp;&amp;nbsp;&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
The init function is called when the application first fires up setting the transitons of the app the 'slide' and telling kendo what the layout root of the app is; in this case 'mobile-tabstrip'.&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Wiring Up Index.html&lt;/h3&gt;
&lt;div class="separator" style="clear: both;"&gt;
Now that the scripts, view, viewmodel, entry points etc. are all setup; open&lt;i&gt; index.html&lt;/i&gt;.&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
In the &lt;b&gt;&amp;lt;head&amp;gt; &lt;/b&gt;tag remove everything except the references to the .css and cordova.js files and the we need to add the script reference to main and require.js for our entry point. &amp;nbsp;After that all scripts will be loaded using AMD and require.js .&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;head&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;meta charset="utf-8" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;script src="cordova.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;script data-main="app/main" src="scripts/require.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;link href="kendo/styles/kendo.mobile.all.min.css" rel="stylesheet" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;link href="styles/main.css" rel="stylesheet" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/head&amp;gt;&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
Also remove the script tag at the bottom of the file that refers to the kendo.mobile.application as we have now moved that to the app.js init function.&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
Finally, remove all &lt;b&gt;&amp;lt;div&amp;gt;&lt;/b&gt;&amp;nbsp;tag sections with a data-role of view other that the first one. &amp;nbsp;These will be separated into individual html files and stored in the views folder in Part 2 of the series. &amp;nbsp;The final html document should appear as:&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;head&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;meta charset="utf-8" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;script src="cordova.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;script data-main="app/main" src="scripts/require.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;link href="kendo/styles/kendo.mobile.all.min.css" rel="stylesheet" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;link href="styles/main.css" rel="stylesheet" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div data-role="view" id="tabstrip-home" data-title="Hello World!"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;h1&amp;gt;Welcome!&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Icenium&amp;amp;trade; enables you to build cross-platform device applications regardless of your&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; development platform by combining the convenience of a local development toolset with the&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; power and flexibility of the cloud.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div data-role="layout" data-id="mobile-tabstrip"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;header data-role="header"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div data-role="navbar"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span data-role="view-title"&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/header&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div data-role="footer"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div data-role="tabstrip"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;a href="#tabstrip-home" data-icon="home"&amp;gt;Home&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;a href="#tabstrip-uiinteraction" data-icon="share"&amp;gt;UI Interaction&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;a href="#tabstrip-geolocation" data-icon="globe"&amp;gt;Geolocation&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Conclusion&lt;/h3&gt;
&lt;div&gt;
If you run the application you can see that the application still operates as it did in the very beginning, with the exception of the additional views not appearing, but the advantage here is that the overall structure allows for&amp;nbsp;manageability&amp;nbsp;moving forward as&amp;nbsp;complexity&amp;nbsp;is added to the project through data services and additional views.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If there is something that you would like to see in the series or have a question please add a comment. &amp;nbsp;I look forward to the next entry.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both;"&gt;
Code available on GitHub -&amp;nbsp;&lt;a href="https://github.com/tattoocoder/iceniumbp.git" target="_blank"&gt;https://github.com/tattoocoder/iceniumbp.git&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/CltnROf5IWg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/3393462953139736838/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=3393462953139736838&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/3393462953139736838?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/3393462953139736838?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/CltnROf5IWg/cross-mobile-development-with-icenium.html" title="Cross Mobile Development with Icenium, KendoUI &amp; Azure Mobile Services" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-j649ehrKMiM/UVRAlol1iMI/AAAAAAAAAeo/tuDwJd3WrIY/s72-c/icenium_options.PNG" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2013/03/cross-mobile-development-with-icenium.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIFQHc7eyp7ImA9WhBUGEg.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-5935202101182774810</id><published>2013-03-25T15:37:00.000-04:00</published><updated>2013-05-06T11:18:31.903-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-06T11:18:31.903-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Routing" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="CodeProject" /><category scheme="http://www.blogger.com/atom/ns#" term="Regex" /><category scheme="http://www.blogger.com/atom/ns#" term="WebAPI" /><title>Custom Routing with IRouteConstraint for ASP.NET Web API </title><content type="html">I will admit that Regex and I do not speak anymore. &amp;nbsp;In fact, even when we did it was never a really nice conversation and sometimes ended in me cursing and/or leaving the room.&lt;br /&gt;
&lt;br /&gt;
If you have had this same experience when creating custom routes in ASP.NET MVC then you know what I'm talking about.&lt;br /&gt;
&lt;br /&gt;
IRouteConstraint&lt;br /&gt;
IRouteConstraint has been around for some time in MVC, but it is also available in Web API too because of course it is based on the same stack for routing.&lt;br /&gt;
&lt;br /&gt;
Undoubtedly, the most difficult part of routes is debugging or getting the Regex right. I recently re-lived this experience when having to create a custom API route for a project something along the lines of&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
/api/{controller}/&lt;b&gt;{model}&lt;/b&gt;/&lt;b&gt;{road}&lt;/b&gt;/&lt;b&gt;{id}&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
where &lt;b&gt;{model}&lt;/b&gt; must exist in a list of valid string values and &lt;b&gt;{road}&lt;/b&gt; is a pattern of &lt;b&gt;&lt;i&gt;XX9999&lt;/i&gt;&lt;/b&gt; and then obviously the &lt;b&gt;{id}&lt;/b&gt; must be an integer for the specific record in the list.&lt;br /&gt;
&lt;br /&gt;
So, initially you start putting the Regex together for the id, "&lt;i&gt;^\d+$&lt;/i&gt;", and then the road might be something like &amp;nbsp; "&lt;i&gt;^[a-zA-Z]{2}\d{4}$&lt;/i&gt;". &amp;nbsp;But how should I handle the in list for the &lt;b&gt;{model}&lt;/b&gt; param? &lt;br /&gt;
&lt;br /&gt;
Sure we could put together the Regex for that, but debugging all of this is a pain even in the short term. &amp;nbsp;Also if the constraint itself is something of an edge case where the value must be a filename that exists, or a guid in memory etc; IRouteConstraint is the answer.&lt;br /&gt;
&lt;br /&gt;
IRouteConstraint requires you to implement one method, Match, which returns a boolean. In the method below we are looking for one of the values being passed in the values[] parameter to a list used in the constructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;blockquote&gt;
&amp;nbsp; &amp;nbsp; public class FromValuesListConstraint : IRouteConstraint&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public FromValuesListConstraint(params string[] values)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this._values = values;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private readonly string[] _values;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public bool Match(HttpContextBase httpContext,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Route route,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string parameterName,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RouteValueDictionary values,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RouteDirection routeDirection)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Get the value called "parameterName" from the&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // RouteValueDictionary called "value"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string value = values[parameterName].ToString();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Return true is the list of allowed values contains&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // this value.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return _values.Contains(value, StringComparer.CurrentCultureIgnoreCase);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
In order to use this from the WebApiConfig.cs class, create your route like the following.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
config.Routes.MapHttpRoute(&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name: "CustomRouteNoDayOrAction",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;routeTemplate: "dcl/{controller}/{model}/{road}/{id}",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;defaults: null,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;constraints: new&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ship = new FromValuesListConstraint("ford", "chevy", "dodge", "toyota"),&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;voyage = @"^[a-zA-Z]{2}\d{4}$",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;id = @"^\d+$"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
);&lt;/blockquote&gt;
&lt;br /&gt;
When you run and test your routes, you can now put a break point on the FromValuesListConstraint Match method and debug the routing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/GA_25vRDKzU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/5935202101182774810/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=5935202101182774810&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/5935202101182774810?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/5935202101182774810?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/GA_25vRDKzU/custom-routing-with-irouteconstraint.html" title="Custom Routing with IRouteConstraint for ASP.NET Web API " /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2013/03/custom-routing-with-irouteconstraint.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cARnY9eip7ImA9WhBTEUo.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-5127576459295939557</id><published>2013-02-06T14:30:00.002-05:00</published><updated>2013-02-06T14:30:47.862-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-06T14:30:47.862-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fldev" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="WebAPI" /><category scheme="http://www.blogger.com/atom/ns#" term="TypeScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Code Camp" /><title>South Florida Code Camp</title><content type="html">&lt;div class="separator" style="clear: both; text-align: left;"&gt;
I will be giving two talks this Saturday at South Florida Code Camp,&amp;nbsp;being held at Nova University in Ft. Lauderdale, Fl.&amp;nbsp; For directions and more information visit&lt;a href="http://www.fladotnet.com/codecamp/Location.aspx" target="_blank"&gt;http://www.fladotnet.com/codecamp/&lt;/a&gt;. Schedule for other sessions&amp;nbsp;&lt;a href="http://www.fladotnet.com/codecamp/Agenda.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;h3&gt;
My Sessions&lt;/h3&gt;
&lt;br /&gt;
&lt;h4 class="modal-body"&gt;
Introduction to ASP.NET Web API - Why you should be using it.&lt;span class="label label-success"&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div class="modal-body"&gt;
This is an introduction to ASP.NET WebAPI and how easy it is to get started and use it in your application development when building RESTful services.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
TypeScript&lt;/h4&gt;
Come see how it can make you a more productive&amp;nbsp;JavaScript&amp;nbsp;developer or even a new one. I'll cover the core concepts, compare JavaScript practices and even show how to use in a Windows 8 app.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/QL8XXejV_Uk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/5127576459295939557/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=5127576459295939557&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/5127576459295939557?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/5127576459295939557?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/QL8XXejV_Uk/south-florida-code-camp.html" title="South Florida Code Camp" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>3301 College Avenue, Nova Southeastern University, Fort Lauderdale, FL 33314, USA</georss:featurename><georss:point>26.0788141 -80.24012800000003</georss:point><georss:box>0.5567795999999987 -121.54872200000003 51.6008486 -38.93153400000003</georss:box><feedburner:origLink>http://blog.tattoocoder.com/2013/02/south-florida-code-camp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMMQn4_fip7ImA9WhBUGEg.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-9086949565988042316</id><published>2013-02-01T10:55:00.001-05:00</published><updated>2013-05-06T11:18:03.046-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-06T11:18:03.046-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Nokia" /><category scheme="http://www.blogger.com/atom/ns#" term="CodeProject" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="Telerik" /><title>Develop Windows 8 &amp; Windows Phone Apps and Win Cash!</title><content type="html">&lt;a href="http://spboyer.me/appsforcash" target="_blank"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-RuEhEuOF9II/UQviniGXzGI/AAAAAAAAAeQ/PaklV1P0_w4/s1600/AppSweepstakes_150x290.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;" /&gt;&lt;/a&gt;

&lt;span style="background-color: white; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13.333333969116211px; line-height: 15.590278625488281px;"&gt;From February 1 through June 2013, publish a new Windows 8 or Windows Phone app and enter my sweepstakes page to win up to $1000 in cash prizes. &amp;nbsp;WHAT?!?! &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13.333333969116211px; line-height: 15.590278625488281px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13.333333969116211px; line-height: 15.590278625488281px;"&gt;Pretty cool right. &amp;nbsp;Get extra $$ for what you are already doing. &amp;nbsp;Publish you app in the store the go to&amp;nbsp;&lt;/span&gt;&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;a href="http://spboyer.me/appsforcash"&gt;http://spboyer.me/appsforcash&lt;/a&gt;&amp;nbsp;and submit your app.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;3 Winners each month!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;$1000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;$500&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;$250&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;Follow me on twitter&amp;nbsp;&lt;a href="http://www.twitter.com/spboyer" target="_blank"&gt;@spboyer&lt;/a&gt; and let me know when you submit it and I'll personally look at the app and give it a review and let all my friends to give it a look as well for extra exposure.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;a href="http://www.mstechaffiliate.com/docs/default-document-library/tap-sweepstakes-rules.pdf?sfvrsn=2" target="_blank"&gt;See official rules here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;BONUS POINTS AND AWARDS&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; line-height: 15.578125px;"&gt;FREE NOKIA PHONE&lt;/span&gt;&lt;/h4&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;If this is your FIRST Windows Phone App you may qualify for a Free Nokia Lumia Phone.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;TELERIK WINDOWS 8 Controls&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;I will pick 1 Winner each month from the Windows 8 Submissions to&amp;nbsp;receive&amp;nbsp;a free licensed copy of Telerik's Windows 8 Controls&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 15.578125px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/Dq40IbRcTJE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/9086949565988042316/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=9086949565988042316&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/9086949565988042316?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/9086949565988042316?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/Dq40IbRcTJE/develop-windows-8-windows-phone-apps.html" title="Develop Windows 8 &amp; Windows Phone Apps and Win Cash!" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-RuEhEuOF9II/UQviniGXzGI/AAAAAAAAAeQ/PaklV1P0_w4/s72-c/AppSweepstakes_150x290.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2013/02/develop-windows-8-windows-phone-apps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIARXk7fip7ImA9WhBUGEg.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-7151364851480921621</id><published>2013-01-29T10:42:00.002-05:00</published><updated>2013-05-06T11:19:04.706-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-06T11:19:04.706-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Passion" /><category scheme="http://www.blogger.com/atom/ns#" term="CodeProject" /><category scheme="http://www.blogger.com/atom/ns#" term="Enthusiasm" /><title>Nothing great was ever achieved without enthusiasm...</title><content type="html">Over the past month I have had the opportunity to give some thought to what I wanted to accomplish this year in my life, career, and health. And during those times of thought I have often gone back to a speech I listened or re-listened to by the late &lt;a href="http://en.wikipedia.org/wiki/Jim_Valvano"&gt;Jimmy Valvano&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Jimmy V was a great college basketball coach and was unfortunately diagnosed and later passed away from bone cancer. But shortly before his death he gave a&lt;a href="http://www.youtube.com/watch?v=HuoVM9nm42E"&gt; riveting speech at the 1993 ESPN ESPY Awards&lt;/a&gt;. There are some great things he said, but one statement lost in many outtakes that stuck with me was &lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
"Nothing great was ever achieved without enthusiasm" ...Ralph Waldo Emerson&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I think about that statement and how it relates to life, but also how I approach code, software development and teaching. Enthusiasm is the name of the game. &amp;nbsp;I'm passionate in how I present it, teach it, talk about it and code it.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The question I have always wondered is how can the few of us who think this way make that feeling contagious? Spread that disease?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I know how I feel after taking a good 5 mile run or so and beating a goal or my last time thinking, "hell yes!" and that's the same feeling I get when a project is complete or I inspire a developer to do something different or try a new path and then later they tell me "thanks, just what I needed".&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Recently, after a .NET User Group meeting I sat and had a beer with a few friends from the group and we had this very discussion and the conversation was really good. &amp;nbsp;I heard stuff like...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
"It's not their project...."&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
"...making the other guy money, why be passionate"&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
"...some companies are better at making their devs feel ownership..."&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
What are your thoughts? &amp;nbsp;What can make you more enthusiastic or pump up that 9-5'er you know at your office?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Start the conversation....&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/xHT8mODQ-EA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/7151364851480921621/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=7151364851480921621&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/7151364851480921621?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/7151364851480921621?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/xHT8mODQ-EA/nothing-great-was-ever-achieved-without.html" title="Nothing great was ever achieved without enthusiasm..." /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2013/01/nothing-great-was-ever-achieved-without.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIDQn0zfCp7ImA9WhBUGEg.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-5944452505584132713</id><published>2013-01-28T15:25:00.000-05:00</published><updated>2013-05-06T11:19:33.384-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-06T11:19:33.384-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Async/Await" /><category scheme="http://www.blogger.com/atom/ns#" term="CodeProject" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Store Apps" /><category scheme="http://www.blogger.com/atom/ns#" term="Portable Class Library" /><title>Portable MVVM Light - Move Your View Models : Part 2</title><content type="html">In the &lt;a href="http://blog.tattoocoder.com/2013/01/portable-mvvm-light-move-your-view.html" target="_blank"&gt;first part&lt;/a&gt; I covered how to get the initial project setup and share the ViewModels and ViewModelLocator between a Windows Phone 8 project and a Windows Store Application. &amp;nbsp;In this post, I'll add a DataService and a Model class that will be used to get the most recent posts from the Windows Phone Blog and display the results.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Adding DataService and Async to Portable Class Library&lt;/h3&gt;
The purpose of the DataService in the context of this project is to retrieve the RSS feed from the Windows Phone Blog (&lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/rss.aspx"&gt;http://blogs.windows.com/windows_phone/b/wpdev/rss.aspx&lt;/a&gt;) using the async methods available in the 4.5 Framework, return a collection of our Headline class object for the UI to handle and display.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Headline Class Model&lt;/h4&gt;
The Headline class is the object that will be loaded and a collection of these will be built and returned from the data service method. &amp;nbsp;Create a new folder in the Mvvm.PCL project called "Model" and add a new file called Headline.cs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; public class Headline&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string Title { get; set; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string Description { get; set; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string Url { get; set; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public DateTime Published { get; set; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
IDataService&lt;/h4&gt;
In good practice, create an interface for the DataService class. &amp;nbsp;This would allow for taking advantage of dependency injection if you chose to do so. Add a new interface file to the model folder called IDataService.cs. &amp;nbsp;Here is the interface:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
namespace Mvvm.PCL.Model&lt;br /&gt;
{&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public interface IDataService&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;void GetHeadlines(Action&amp;lt;List&amp;lt;Headline&amp;gt;, Exception&amp;gt; callback);&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;
}&lt;/blockquote&gt;
&lt;br /&gt;
The interface defines a single method that accepts a delegate with a collections or List&amp;lt;T&amp;gt; of Headline and an Exception parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
DataService&lt;/h4&gt;
Next, in the same folder, add the DataService.cs file and implement the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; public class DataService : IDataService&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void GetHeadlines(Action&amp;lt;List&amp;lt;Headline&amp;gt;, Exception&amp;gt; callback)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new NotImplementedException();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
HttpWebRequest&lt;/h4&gt;
Most simple requests for data are done with the &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webclient(v=vs.110).aspx" target="_blank"&gt;WebClient &lt;/a&gt;class, however this class is not available in Portable Class libraries and is really only an abstraction of what must be used and that is the HttpWebRequest.&lt;br /&gt;
&lt;br /&gt;
Add a new method to the class called MakeAsyncRequest accepting a url (string) as a parameter and set the method to return a Task&amp;lt;string&amp;gt;. Within the method I'll use the Task.Factory.FromAsync method to call the url&amp;nbsp;asynchronously&amp;nbsp;returning the Task&amp;lt;WebRequest&amp;gt; then use a continuation to read the WebResponse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private static Task&amp;lt;string&amp;gt; MakeAsyncRequest(string url)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HttpWebRequest request = WebRequest.CreateHttp(url);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; request.Method = "GET";&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Task&amp;lt;WebResponse&amp;gt; task = Task.Factory.FromAsync(&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; request.BeginGetResponse,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (asyncResult) =&amp;gt; request.EndGetResponse(asyncResult),&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (object)null);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return task.ContinueWith(t =&amp;gt; ReadStreamFromResponse(t.Result));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private static string ReadStreamFromResponse(WebResponse response)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (Stream responseStream = response.GetResponseStream())&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (StreamReader sr = new StreamReader(responseStream))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string strContent = sr.ReadToEnd();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return strContent;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;br /&gt;
The GetHeadlines method can now be completed. First add the static url.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp;private readonly string uri = "&lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/rss.aspx"&gt;http://blogs.windows.com/windows_phone/b/wpdev/rss.aspx&lt;/a&gt;";&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Then declare a variable to hold the results of the MakeAsyncRequest method and set the call with the await keyword so the UI thread is not blocked.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
var t = &lt;b&gt;await &lt;/b&gt;MakeAsyncRequest(uri);&lt;/blockquote&gt;
&lt;br /&gt;
You will also have to mark the method as async or the compiler will give you an error telling you to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
public &lt;b&gt;async &lt;/b&gt;void GetHeadlines(Action&amp;lt;List&amp;lt;Headline&amp;gt;, Exception&amp;gt; callback)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
}&lt;/blockquote&gt;
&lt;br /&gt;
The results returned are a string type and there are a couple of options to get it into a nice format to work with. &amp;nbsp;Your first option might be to use the Silverlight &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed(v=vs.110).aspx" target="_blank"&gt;SyndicationFeed &lt;/a&gt;class which is in the System.ServiceModel.Syndication namespace. However, it is not inherently available in the portable classes and you'll need to go searching for it on your dev machine. &lt;b&gt;Hint &lt;/b&gt;(&lt;i&gt;C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Libraries\Client\System.ServiceModel.Syndication.dll&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
I'm choosing to use LINQ and doing Linq to XML here to get what I need out of the results string and inflate my classes and return it.&lt;br /&gt;
&lt;br /&gt;
Here is the completed method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public async void GetHeadlines(Action&amp;lt;List&amp;lt;Headline&amp;gt;, Exception&amp;gt; callback)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // locally scoped exception var&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Exception err = null;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&amp;lt;Headline&amp;gt; results = null;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var t = await MakeAsyncRequest(uri);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StringReader stringReader = new StringReader(t);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var xmlReader = System.Xml.XmlReader.Create(stringReader))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var doc = System.Xml.Linq.XDocument.Load(xmlReader);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; results = (from e in doc.Element("rss").Element("channel").Elements("item")&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Headline()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Title = e.Element("title").Value,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Description = e.Element("description").Value,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Published = Convert.ToDateTime(e.Element("pubDate").Value),&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Url = e.Element("link").Value&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}).ToList();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch (Exception ex)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // should do some other&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // logging here. for now pass off&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // exception to callback on UI&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; err = ex;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; callback(results, err);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
That covers all of the code needed in the Portable Class(es) for getting the data, just need to edit the MainViewModel class constructor to create the DataService class, implement the new method and create a Headlines property.&lt;br /&gt;
&lt;br /&gt;
MainViewModel&lt;br /&gt;
Add a new property for the headlines to be bound to by the UI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private List&amp;lt;Model.Headline&amp;gt; _headlines;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public List&amp;lt;Model.Headline&amp;gt; Headlines&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get { return _headlines; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _headlines = value;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RaisePropertyChanged(() =&amp;gt; Headlines);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;br /&gt;
In the constructor, create an instance of the DataService and execute the method. &amp;nbsp;I did mention earlier that there is an IDataService for DI, but for this example an concrete DataService class is created.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public MainViewModel()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// create a new dataservice class&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var service = new DataService();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// call getHeadlines passing headlines and exception delegate vars&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.GetHeadlines((headlines, err) =&amp;gt; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (err != null)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// if there is an error should create a property and bind to it for better practices&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.Diagnostics.Debug.WriteLine(err.ToString());&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// set the property&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.Headlines = headlines;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Adding the UI Elements&lt;/h3&gt;
&lt;h4&gt;
Windows Phone&lt;/h4&gt;
Open the MainPage.xaml page and wrap the previous TextBlock from part 1 in a StackPanel then add a ListBox. &amp;nbsp;Set the ItemsSource property of the ListBox to {Binding Headlines, Mode=TwoWay}, then add a simple template with a TextBlock to show the title of the story.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;TextBlock Text="{Binding Hello, Mode=TwoWay}" Foreground="White" FontSize="18" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ListBox ItemsSource="{Binding Headlines, Mode=TwoWay}"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ListBox.ItemTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ListBoxItem&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;TextBlock Text="{Binding Title}" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/ListBoxItem&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/ListBox&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/Grid&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h4&gt;
Windows Store&lt;/h4&gt;
The store app is just as easy. &amp;nbsp;In MainPage.xaml, add a GridView controls, set the ItemsSource to {Binding Headlines, Mode=TwoWay}, but in this case I'll define an ItemTemplate outside of the control called PCLItemTemplate and display the Title and the Description.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;GridView ItemsSource="{Binding Headlines, Mode=TwoWay}" Grid.Row="1" ItemTemplate="{StaticResource PCLItemTemplate}" /&amp;gt;&lt;/blockquote&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;Page.Resources&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;DataTemplate x:Key="PCLItemTemplate"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;StackPanel Orientation="Vertical" Width="500" Height="250"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;TextBlock Foreground="White" Text="{Binding Title}" FontSize="18" HorizontalAlignment="Center" Margin="20,10,20,0" TextTrimming="WordEllipsis"/&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;TextBlock Foreground="White" Text="{Binding Description}" Style="{StaticResource ItemTextStyle}" HorizontalAlignment="Center" Margin="20,10" TextTrimming="WordEllipsis"/&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/Page.Resources&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Summary&lt;/h3&gt;
&lt;a href="http://1.bp.blogspot.com/-9yQ5miGqCYE/UQbdx9-_i9I/AAAAAAAAAdc/Vzy7H6Ki8SE/s1600/portable2_wp.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-9yQ5miGqCYE/UQbdx9-_i9I/AAAAAAAAAdc/Vzy7H6Ki8SE/s200/portable2_wp.PNG" width="110" /&gt;&lt;/a&gt;&amp;nbsp;Running either apps presents the data in a different context and there is complete control as to the presentation and design choices based on the platform. &amp;nbsp;If you are looking to create Windows Store apps and/or Windows Phone&amp;nbsp;applications&amp;nbsp; Portable Class Libraries is a great way to leverage code within your multiple platform target solution. &amp;nbsp;MvvmLight is a choice of mine and many others and fits very well too thanks to others in the community.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-nM-NatvBRIg/UQbdx4qFx5I/AAAAAAAAAdg/TwWqp7JYtcU/s1600/portable2_win.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://2.bp.blogspot.com/-nM-NatvBRIg/UQbdx4qFx5I/AAAAAAAAAdg/TwWqp7JYtcU/s320/portable2_win.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Full source code available here:&amp;nbsp;&lt;a href="http://sdrv.ms/WpBGqS"&gt;http://sdrv.ms/WpBGqS&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/T1SdgMjJiF4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/5944452505584132713/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=5944452505584132713&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/5944452505584132713?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/5944452505584132713?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/T1SdgMjJiF4/portable-mvvm-light-move-your-view_28.html" title="Portable MVVM Light - Move Your View Models : Part 2" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-9yQ5miGqCYE/UQbdx9-_i9I/AAAAAAAAAdc/Vzy7H6Ki8SE/s72-c/portable2_wp.PNG" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2013/01/portable-mvvm-light-move-your-view_28.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMGR3w4eCp7ImA9WhNaFEU.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-9008698583065922044</id><published>2013-01-24T17:14:00.000-05:00</published><updated>2013-01-29T14:40:26.230-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-29T14:40:26.230-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><category scheme="http://www.blogger.com/atom/ns#" term="Portable Class Library" /><title>Portable MVVM Light - Move Your View Models </title><content type="html">
&lt;h3&gt;
Portable Class Libraries&amp;nbsp;&lt;/h3&gt;
Portable Class Libraries were added as a project type in the interest of creating an assembly that you could use across the .NET Framework, Silverlight, Windows Phone 7, or Xbox 360 platforms without modifications. &amp;nbsp;Well, not really that easy. &amp;nbsp;There is some work to do and as you get into the development of PCLs you'll find out that there is really a sliver of what you'd hope is supported. (&lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/gg597391(v=vs.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/vstudio/gg597391(v=vs.110).aspx&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
MVVM Light&lt;/h3&gt;
Where I have found it for me is in Windows Store and Windows Phone (7.5 and 8) with &lt;a href="http://mvvmlight.codeplex.com/" target="_blank"&gt;MVVM Light&lt;/a&gt;. I have been using this MVVM framework exclusively for a few years now on Silverlight, WPF, Windows Phone and now Windows Store platforms and each release gets better.&lt;br /&gt;
&lt;br /&gt;
Most recently, another MVVM Light fan, &lt;a href="http://novotny.org/blog" target="_blank"&gt;Oren Novotny&lt;/a&gt;&amp;nbsp;(&lt;a href="http://twitter.com/onovotny" target="_blank"&gt;@onovotny&lt;/a&gt;) ported the MVVM Light project and made it possible to use it in a Portable Class Library. This is great, code reuse is the ultimate time saver. And when developing Windows Store Apps or a Windows Phone App; making a complimentary piece for the other just makes sense when the UI is really the only difference and even that is almost the same.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Example Project&lt;/h3&gt;
Open Visual Studio 2012 and create a new project. &amp;nbsp;I like to start with the "&lt;b&gt;&lt;i&gt;Other Project Types&lt;/i&gt;&lt;/b&gt;" and select the Blank Visual Studio Solution; name it &lt;b&gt;MvvmPortable &lt;/b&gt;and click save. Next add a Windows Store App (C# Blank Template) and call it &lt;b&gt;Mvvm.Store&lt;/b&gt;. Add a new Windows Phone 8 project to the solution named &lt;b&gt;Mvvm.Phone&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Now add a new project to the solution and select the "&lt;i style="font-weight: bold;"&gt;Portable Class Library&lt;/i&gt;" project type.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-vpXKM5YWcD4/UQGd_bOCU3I/AAAAAAAAAbw/pcg5DjIf6lU/s1600/pcl.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="388" src="http://4.bp.blogspot.com/-vpXKM5YWcD4/UQGd_bOCU3I/AAAAAAAAAbw/pcg5DjIf6lU/s640/pcl.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Click OK and then you'll be presented with a dialog to choose the platforms to be supported. Select all except XBox and for &lt;b&gt;Windows Phone choose 7.5 or higher&lt;/b&gt;. (&lt;i&gt;&lt;span style="color: red;"&gt;An error will occur when adding the nuget packages later if the 'Windows Phone 7.1 or higher' option is chosen&lt;/span&gt;&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-qXuhmL_78-0/UQGexJxYJKI/AAAAAAAAAb4/AILqH6mHLJ0/s1600/fworks.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="390" src="http://2.bp.blogspot.com/-qXuhmL_78-0/UQGexJxYJKI/AAAAAAAAAb4/AILqH6mHLJ0/s400/fworks.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Click OK and now the MVVM Light packages can start to be added via nuget.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Nuget&lt;/h3&gt;
If you are &amp;nbsp;not using nuget, please pause here and go to &lt;a href="http://nuget.org/"&gt;nuget.org&lt;/a&gt; and/or install via Tools-&amp;gt;Extensions And Updates.&lt;br /&gt;
&lt;br /&gt;
Mvvm.PCL Project&lt;br /&gt;
Right click the project and select the Manage Nuget Packages and in the dialog search for "&lt;b&gt;Portable.MvvmLightLibs&lt;/b&gt;" and be sure that the Include Pre-release option is on, or you can use the package manager console and use the command &lt;b&gt;&lt;i&gt;install package portable.mvvmlightlibs -prerelease&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-GEUI1mwvaOA/UQGhirjNEPI/AAAAAAAAAcM/nwSjr9MCUlg/s1600/a.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="435" src="http://4.bp.blogspot.com/-GEUI1mwvaOA/UQGhirjNEPI/AAAAAAAAAcM/nwSjr9MCUlg/s640/a.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Repeat this process for the Windows Phone and Windows Store projects.&lt;br /&gt;
&lt;br /&gt;
Next we need to add the MVVM Light specific platform assemblies to each of the respective platforms and do some setup and cleanup to make this all work.&lt;br /&gt;
&lt;br /&gt;
Right Click the Windows Store project, select Manage Nuget Packages and search for MVVM Light and click the install button. In doing so, a few folders and files will be added to the project and you may see some errors which we'll clean up and repeat the process for the Phone project.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-rerqWKclKpE/UQGi2qdiOLI/AAAAAAAAAcg/jXw9R_x9b8A/s1600/store_light.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="432" src="http://3.bp.blogspot.com/-rerqWKclKpE/UQGi2qdiOLI/AAAAAAAAAcg/jXw9R_x9b8A/s640/store_light.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
Moving ViewModelLocator,ViewModels and Wiring it Up&lt;/h3&gt;
&lt;div&gt;
Now on to the fun!&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the &lt;b&gt;Mvvm.PCL&lt;/b&gt; project create a folder call ViewModel in the root of the project. Then expand the &amp;nbsp;ViewModel folder in the &lt;b&gt;Mvvm.Store&lt;/b&gt; project and select the ViewModelLocator.cs and MainViewModel.cs file and cut and paste those to the ViewModel folder in the &lt;b&gt;Mvvm.PCL&lt;/b&gt; project.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Open each of those and change the namespace to Mvvm.PCL.ViewModel from Mvvm.Store.ViewModel.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Since the ViewModelLocator has moved, the store app needs to know where to find it and the ViewModels, so open the App.xaml file in the Mvvm.Store project and change:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp;xmlns:vm="using:Mvvm.Store.ViewModel"&amp;nbsp;&lt;/blockquote&gt;
to&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp;xmlns:vm="using:Mvvm.PCL.ViewModel"&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
and we need to modify the Resources section because the nuget installer for MvvmLight puts in some extra entries for the ViewModelLocator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;vm:ViewModelLocator p7:Key="Locator" p8:IsDataSource="True"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xmlns:p8="http://schemas.microsoft.com/expression/blend/2008"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xmlns:p7="http://schemas.microsoft.com/winfx/2006/xaml" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ResourceDictionary.MergedDictionaries&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;!--&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Styles that define common aspects of the platform look and feel&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Required by Visual Studio project and item templates&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ResourceDictionary Source="Common/StandardStyles.xaml" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/ResourceDictionary.MergedDictionaries&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/ResourceDictionary&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
Finally for the Store app we'll go to the MainPage.xaml and set the DataContext and add a TextBlock to be filled from the MainViewModel.cs in the portable class library that we'll add following that.&lt;br /&gt;
&lt;br /&gt;
In the MainView.xaml page add the DataContext property at the top of the page after the other declarations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp; xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; mc:Ignorable="d"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; DataContext="{Binding Main, Source={StaticResource Locator}}"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;gt;&lt;/blockquote&gt;
Next in the grid add the TextBlock as follows&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;TextBlock Foreground="White" FontSize="42" Text="{Binding Hello, Mode=TwoWay}" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/Grid&amp;gt;&lt;/blockquote&gt;
If you compile the store project at this point you will get some errors concerning MvvmLight confilcts. These occur because there are class duplicates in the portable and in the specific versions of the assemblies. &amp;nbsp;In order to alleviate the errors, expand the references folder in the project and select the *.Win8 assemblies and delete them.&lt;br /&gt;
&lt;br /&gt;
Adding Hello to MainViewModel&lt;br /&gt;
Now that the wiring up of the relocated ViewModelLocator and MainViewModel are completed we can add the simple "Hello" property in the MainViewModel so it can be bound to in the store project.&lt;br /&gt;
&lt;br /&gt;
Open MainViewModel.cs and add the property as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private string _hello = "Hello";&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string Hello&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return _hello;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _hello = value;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RaisePropertyChanged(() =&amp;gt; Hello);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;br /&gt;
Set the store project as the default project to run and either run in the simulator or on your local machine and you should see "Hello" appear in the top left of the application.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-VHxTb-X_ml4/UQGrGGs9d0I/AAAAAAAAAc0/tqlF2QXTmto/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://4.bp.blogspot.com/-VHxTb-X_ml4/UQGrGGs9d0I/AAAAAAAAAc0/tqlF2QXTmto/s400/Capture.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Wiring up the Phone Project&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
The process here is pretty much the same as was done for the store project. &amp;nbsp;Instead of moving the ViewModel folder in the phone project; it can be deleted.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Open the App.xaml and make the adjustments to let the application know where the ViewModelLocator and ViewModels are located. Note that making these references in the phone project are different that in the store project,&amp;nbsp;albeit subtle can trip you up.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Change &amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp;...xmlns:vm="clr-namespace:Mvvm.Phone.ViewModel" mc:Ignorable="d"&amp;gt;&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
to&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp;...xmlns:vm="clr-namespace:Mvvm.PCL.ViewModel;assembly=Mvvm.PCL"&amp;gt;&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
then make the modifications to the Application.Resources portion as follows:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;lt;Application.Resources&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;local:LocalizedStrings xmlns:local="clr-namespace:Mvvm.Phone" x:Key="LocalizedStrings" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;vm:ViewModelLocator p6:Key="Locator"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p7:IsDataSource="True" xmlns:p7="http://schemas.microsoft.com/expression/blend/2008"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xmlns:p6="http://schemas.microsoft.com/winfx/2006/xaml" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/Application.Resources&amp;gt;&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
Next, open the MainPage.xaml and add the DataContext declaration and the TextBlock as we did for the store application.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
... &lt;br /&gt;
shell:SystemTray.IsVisible="True"&lt;br /&gt;
&amp;nbsp; &amp;nbsp; DataContext="{Binding Main, Source={StaticResource Locator}}"&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
adding the TextBlock&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;TextBlock Text="{Binding Hello, Mode=TwoWay}" Foreground="White" FontSize="18" /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/Grid&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
And finally as mentioned in the store project, you will get the assembly conflicts so be sure to remove the .*WP8 references in the phone project prior to building the solution here.&lt;br /&gt;
&lt;br /&gt;
Run the application and you'll see the Hello presented in the same location on the phone app.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-QBNQ9LC7iy8/UQGw__rFDXI/AAAAAAAAAdI/u24kYizd8Mw/s1600/phone.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-QBNQ9LC7iy8/UQGw__rFDXI/AAAAAAAAAdI/u24kYizd8Mw/s400/phone.PNG" width="221" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
Wrapping Up&lt;/h3&gt;
All of the other capabilities that you may or may not be familiar with in the MVVM Light framework is still available to you within the specific projects or of you'd like extract those as well too. &amp;nbsp;I find that the navigation and switching of the views is still best served within the specific platforms.&lt;br /&gt;
&lt;br /&gt;
I have in my projects moved services negotiation for getting data into the PCL assembly using the Microsfoft.BCL.Async library via nuget too and that is also great but a little different depending on your experience with the platform and WebClient versus HttpClient requests.&lt;br /&gt;
&lt;br /&gt;
Enjoy and feel free to ask questions.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blog.tattoocoder.com/2013/01/portable-mvvm-light-move-your-view_28.html"&gt;Part 2 - Adding a Data Service&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/myPA0G890AI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/9008698583065922044/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=9008698583065922044&amp;isPopup=true" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/9008698583065922044?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/9008698583065922044?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/myPA0G890AI/portable-mvvm-light-move-your-view.html" title="Portable MVVM Light - Move Your View Models " /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-vpXKM5YWcD4/UQGd_bOCU3I/AAAAAAAAAbw/pcg5DjIf6lU/s72-c/pcl.PNG" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2013/01/portable-mvvm-light-move-your-view.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08CSXY6fyp7ImA9WhNaFE0.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-8779811174418271009</id><published>2013-01-15T10:49:00.000-05:00</published><updated>2013-01-28T16:51:08.817-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-28T16:51:08.817-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Nodejs" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><title>Picking the Right Tools for Your Project</title><content type="html">&lt;a href="http://www.codeproject.com" rel="tag" style="display:none"&gt;CodeProject&lt;/a&gt;
Over the weekend I was able to release the first of many Windows 8 applications (&lt;a href="http://apps.microsoft.com/windows/app/dzone/7a51272f-6174-4f69-9ce8-caaece769d66" target="_blank"&gt;Download and Rate here&lt;/a&gt;) into the store that I have been working on. This first one is just a RSS type application for DZone.com, but it just the first version and the next installment will add more content. &amp;nbsp;If you have ever planned a good, cross platform application before you may or may not understand that picking the right tools for job are important, and yes even what you're using for the front end language matters sometimes as it did in my case here.&lt;br /&gt;
&lt;br /&gt;
Here is a run down of the application architecture components:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Node.js REST API on Azure&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://expressjs.com/api.html" target="_blank"&gt;Express &lt;/a&gt;:&amp;nbsp;MVC type framework for Node.js for routing, rendering, HTTP Listener&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ptarjan/node-cache" target="_blank"&gt;Memory-Cache&lt;/a&gt; : memory caching on server&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MatthewMueller/cheerio" target="_blank"&gt;Cheerio&lt;/a&gt;&amp;nbsp;: JQuery on the server, lightweight simple HTML parsing&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/caolan/async" target="_blank"&gt;Async &lt;/a&gt;: parallel library for Node.js&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Windows 8&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;HTML5/WinJS&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;a href="http://www.typescriptlang.org/" target="_blank"&gt;TypeScript &lt;/a&gt;was also used&amp;nbsp;in the &lt;a href="http://nodejs.org/"&gt;Node.js&lt;/a&gt; project as well to build out some of the model objects.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I wanted my app to present more. More than just the headline and a link off to another web browser as well as offer the ability to re-use what I had done for Windows Phone or other mobile devices.&amp;nbsp;&lt;/div&gt;
&lt;h3&gt;
&lt;br /&gt;API Architecture Choices - Reuse is Key&lt;/h3&gt;
&lt;div&gt;
The RSS feeds don't change that much, so I want to create a way to have an API I could reuse for other platforms, but also leverage some caching for high availability, scale out if necessary and also make the development as fast as possible. I chose to go with &lt;a href="http://nodejs.org/" target="_blank"&gt;Node.js&lt;/a&gt; on &lt;a href="http://www.windowsazure.com/" target="_blank"&gt;Azure&lt;/a&gt;&amp;nbsp;to solve this challenge.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;Node.js&lt;/b&gt; (&lt;a href="http://en.wikipedia.org/wiki/Node.js"&gt;http://en.wikipedia.org/wiki/Node.js&lt;/a&gt;) -&amp;nbsp;&lt;i&gt;Node.js is a packaged compilation of Google's V8 JavaScript engine, the libUV platform abstraction layer, and a core library, which is itself primarily written in JavaScript.&amp;nbsp;&lt;/i&gt;&lt;i&gt;Node.js was created by Ryan Dahl starting in 2009, and its growth is sponsored by Joyent, his employer.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
Node also has Node Package Manager (npm) which I would or most would say is the equivelant to .NET's nuget package library repository for getting community contributed libraries for accomplishing common tasks such as caching, async and so forth.&lt;br /&gt;
&lt;br /&gt;
I hadn't used node before but I have plenty of JavaScript experience and it was on my list of "want to learn" this year. &amp;nbsp;I was recently asked why node instead of Web API, other just to say "I used node.js"? &amp;nbsp;Good question, and a legit one too. &amp;nbsp;So here is the answer;&lt;br /&gt;
&lt;br /&gt;
Web API is great, I love it and give a talk on "Why you should be using it" at code camps quite often. &amp;nbsp;However, I found that using C# to parse HTML to not be as flexible and lacked performance in comparison to using Cheerio (JQuery on node.js) when outside of the standard RSS or ATOM formatted feeds. JavaScript is really great at parsing strings. &amp;nbsp;Secondly, the ability for me to make routes in Express was really easy in comparison to ASP.NET. &amp;nbsp;For example, in ASP.NET if I wanted to setup a route to handle a controller / action / id route; there are changes needed in the routing configuration as well as potential changes in the controller too. &lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Routing Config&lt;/h4&gt;
&lt;br /&gt;
routes.MapHttpRoute(&lt;br /&gt;
&amp;nbsp; &amp;nbsp; name: "myNewRouteAction",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; routeTemplate: "api/{controller}/{action}/{id}",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; defaults: new { id = RouteParameter.Optional }&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Controller Code&lt;/h4&gt;
&lt;br /&gt;
public class ProductsController : ApiController
&lt;br /&gt;
{

&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;[HttpGet]

&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;public string Details(int id) &amp;nbsp;{ ... }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Or
&lt;br /&gt;
&lt;br /&gt;
public class ProductsController : ApiController&lt;br /&gt;
{
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;public string GetDetails(int id) { ... }&lt;br /&gt;
}
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This sets up the API for the action name to be in the url like &lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;http://localhost/api/products/details/1&lt;/u&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;. By contrast in node the same is accomplished with Express.js by doing the following&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
app.get('/api/products/details/:id', function(request, response) { ... });
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, in node I can take advantage of running multiple processes at once for checking for updates while also hosting a REST API for the application. &amp;nbsp;In another application there are two worker roles in Azure, basically Windows Services, doing this type of work and a single Web role for my Web API. &amp;nbsp;This allows for me to consolidate the processes into one right now and if the need arises I can break the back end architecture into multiple processes.&amp;nbsp;Flexibility&amp;nbsp;and some simplicity I like here. Here is an example where 3 processes are running at once doing tasks at different intervals all non-blocking.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
app.js&amp;nbsp;&lt;/h4&gt;
var job = function() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;console.log("working at 1 second.");&lt;br /&gt;
&amp;nbsp;};&lt;br /&gt;
var job2 = function() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;console.log("working at 3 seconds.");&lt;br /&gt;
};&lt;br /&gt;
setInterval(job, 1000);&lt;br /&gt;
setInterval(job2, 3000);


&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Ouput in Console&lt;/h4&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-BVqFOoIrozI/UPVoTFbEtPI/AAAAAAAAAbc/QQLysKh5sEM/s1600/node_multijob.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="203" src="http://2.bp.blogspot.com/-BVqFOoIrozI/UPVoTFbEtPI/AAAAAAAAAbc/QQLysKh5sEM/s400/node_multijob.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, I chose JavaScript/HTML for the UI portions which I'll cover more reasons why later and it's nice to code JavaScript everywhere.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
C#/XAML or HTML5/JavaScript/CSS3 ?&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
Now I will mention that C# is my first language of choice when diving into any new project and in fact that is what I initially started with, but I found that when getting the contents of the RSS feeds, which were non-standard formatted and in order to consume RSS nicely in C# or VB.NET you have a dependency on the SyndicationFeed assembly which is good and bad. Good if the feed is formatted in the standard RSS or ATOM formats, but bad if the provider has extended it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Once more the article content was also available in nice print formatted HTML, however when using C# in Windows 8 you must embed a browser control and the flow is not fluid in landscape mode. &amp;nbsp;At least, not the way it should intuitively should appear. However in JavaScript you can take the HTML from the print view and set the innerHTML equal to the result and sprinkle some CSS in there and you are set. No fuss. So HTML5 is the choice here.&lt;br /&gt;
&lt;br /&gt;
In making the decision there are some features that I really enjoy about the language and the ability to create Windows applications versus XAML. &lt;br /&gt;
&lt;br /&gt;
There is a clear&amp;nbsp;separation&amp;nbsp;of concerns between what is Presentation, Styling, and Logic that I think I had taken for granted in my web development projects. &amp;nbsp;When using C# and XAML I really structure my project with MVVM pattern using MVVM Light, use some naming convention on my files and folder structures to ensure that just by looking at the project I know what does what where.&lt;br /&gt;
&lt;br /&gt;
In a JavaScript Windows 8 project it's clear, just in the tooling and file types. &amp;nbsp;Now make no mistake you can embed all of the CSS and JavaScript right in the HTML and spaghetti it all up just like anything. &amp;nbsp;However, the templates and the maturity of the&amp;nbsp;tool set&amp;nbsp;and language almost keeps you from doing so.&lt;br /&gt;
&lt;br /&gt;
The HTML5 support in Blend is also great, especially when seeing what CSS styles are applied to what HTML elements, and using the tooling to create a new style from an existing style. &amp;nbsp;I encourage you to view the video on &lt;a href="http://blendinsider.com/"&gt;blendinsider.com&lt;/a&gt;&amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
Some other items I'll quickly mention that I like about JavaScript projects in Windows 8&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;multiple background layers and overall styling much easier than XAML&lt;/li&gt;
&lt;li&gt;Supporting snapping, full, landscape etc through media queries I found much more intuitive&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;JQuery Support&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Who doesn't like JQuery when it comes to getting to the DOM?&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Web Essentials! not that this has anything specific to do with WIndows 8, but if you are doing any HTML, CSS, and/or JavaScript development you MUST get this. &amp;nbsp;I have been using this for a while and it continues to get better and now has its own dedicated site as&amp;nbsp;&lt;a href="http://vswebessentials.com/"&gt;http://vswebessentials.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
I will still use C# and XAML as it is my first set of tools, but don't forget the others in the box. &amp;nbsp;There have been some fantastic tools thrown at the developers and some are very quick to poo poo the idea of a new coding language or application of an existing language in a different way. &amp;nbsp;Pick what best works towards the success of the project.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here are a few resources for HTML5 and JavaScript Development for Windows 8&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.meetmyapp.in/meetmyapp/windows_8_build.aspx"&gt;https://www.meetmyapp.in/meetmyapp/windows_8_build.aspx&lt;/a&gt; - Design Templates!!! Ready to go in XAML or HTML/JS&lt;/li&gt;
&lt;li&gt;&lt;a href="http://31daysofwindows8.com/"&gt;http://31daysofwindows8.com/&lt;/a&gt; - By &lt;a href="http://csell.net/" target="_blank"&gt;Clark Sell&lt;/a&gt;&amp;nbsp;@csell5 on twitter.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dev.windows.com/"&gt;http://dev.windows.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://generationapp.com/"&gt;http://generationapp.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/Mcl_Zlh0Grg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/8779811174418271009/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=8779811174418271009&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/8779811174418271009?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/8779811174418271009?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/Mcl_Zlh0Grg/picking-right-tools-for-your-project.html" title="Picking the Right Tools for Your Project" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-BVqFOoIrozI/UPVoTFbEtPI/AAAAAAAAAbc/QQLysKh5sEM/s72-c/node_multijob.PNG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2013/01/picking-right-tools-for-your-project.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEGRH07cSp7ImA9WhNXFUk.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-466185583796301920</id><published>2012-12-03T09:53:00.000-05:00</published><updated>2012-12-03T09:57:05.309-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-03T09:57:05.309-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Store" /><category scheme="http://www.blogger.com/atom/ns#" term="Workshops" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Store Apps" /><title>Developer Days at Microsoft Store</title><content type="html">&lt;h3&gt;
Developer Workshops&lt;/h3&gt;
Joe Healy (&lt;a href="http://twitter.com/devfish" target="_blank"&gt;@devfish&lt;/a&gt;)&amp;nbsp;and I have been hosting workshops at the &lt;a href="http://content.microsoftstore.com/store/store-lookup/zip-32809" target="_blank"&gt;Microsoft Store in Orlando&lt;/a&gt; at the Florida Mall over the past few Thursdays. The current series has been focusing on Windows Store Apps, including game application development.&amp;nbsp; Joe presented this past week on MonoGame for Windows 8 and another Florida Developer, Bill Reiss (&lt;a href="http://www.twitter.com/billreiss" target="_blank"&gt;@billreiss&lt;/a&gt;)&amp;nbsp;is doing a blog series on that &lt;a href="http://www.billreiss.com/monogame-for-windows-8-step-1-getting-started/" target="_blank"&gt;same topic here&lt;/a&gt;, and the turn out was great! Here are the next few topics on deck.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-LcQ59mV6AJI/ULy4sP9WIeI/AAAAAAAAAac/P2EYa9JXqtc/s1600/12.06.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-LcQ59mV6AJI/ULy4sP9WIeI/AAAAAAAAAac/P2EYa9JXqtc/s1600/12.06.png" style="height: 100px; width: 100px;" /&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt;XAML and C# for Windows 8 Store App&lt;/span&gt;&lt;br /&gt;
&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032532761"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032532761&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Presented by: Shayne Boyer &lt;/span&gt;&lt;a href="http://twitter.com/spboyer" target="_blank"&gt;&lt;span style="font-size: large;"&gt;(@spboyer&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Xc6vJEAnpWE/ULy4stnV_qI/AAAAAAAAAak/qJ2KXZaeiiw/s1600/12.13.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Xc6vJEAnpWE/ULy4stnV_qI/AAAAAAAAAak/qJ2KXZaeiiw/s1600/12.13.png" style="height: 100px; width: 100px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-size: large;"&gt;Using Game Salad for No-Code Game Development on 
Windows 8&lt;/span&gt;&lt;br /&gt;
&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032532922"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032532922&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Presented by: Shayne Boyer (&lt;/span&gt;&lt;a href="http://twitter.com/spboyer" target="_blank"&gt;&lt;span style="font-size: large;"&gt;@spboyer&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Future Events&lt;/h3&gt;
We are planning a two time a month workshop after the New Year with a range of topics covering Windows Store Apps, Windows Phone and much more surrounding these platforms.&amp;nbsp; If you have some subject matter that you are interested in hearing more about please contact me &lt;a href="mailto:spboyer@live.com"&gt;spboyer@live.com&lt;/a&gt; or Joe &lt;a href="mailto:jhealy@microsoft.com"&gt;jhealy@microsoft.com&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Other Resources&lt;br /&gt;
Visit Generation App at &lt;a href="http://bit.ly/30tolaunch"&gt;bit.ly/30tolaunch&lt;/a&gt;&amp;nbsp;, or Joe's site at &lt;a href="http://devfish.net/"&gt;devfish.net&lt;/a&gt;&amp;nbsp;and be sure to followus on twitter: &lt;a href="http://twitter.com/devfish" target="_blank"&gt;@devfish&lt;/a&gt; and &lt;a href="http://twitter.com/spboyer" target="_blank"&gt;@spboyer&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/nYqpt5JJoPQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/466185583796301920/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=466185583796301920&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/466185583796301920?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/466185583796301920?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/nYqpt5JJoPQ/developer-days-at-microsoft-store.html" title="Developer Days at Microsoft Store" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-LcQ59mV6AJI/ULy4sP9WIeI/AAAAAAAAAac/P2EYa9JXqtc/s72-c/12.06.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/12/developer-days-at-microsoft-store.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MASXkzcSp7ImA9WhNQEUw.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-5516895795000446917</id><published>2012-11-16T19:13:00.000-05:00</published><updated>2012-11-16T19:17:28.789-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-16T19:17:28.789-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Store" /><category scheme="http://www.blogger.com/atom/ns#" term="Famous" /><category scheme="http://www.blogger.com/atom/ns#" term="Paparazzi" /><category scheme="http://www.blogger.com/atom/ns#" term="Social" /><title>Paparazzi at the Microsoft Store! I'm Famous! </title><content type="html">&amp;nbsp;What's really "completely&amp;nbsp;embarrassing" as he so states in his post is the lack of observation. &lt;a href="http://www.ivanmladenovic.com/microsoft-store-genuis-using-apple-macbook-pro-in-the-store/" target="_blank"&gt;Original post here...&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-n7NHPeFd-0s/UKbVZiUkYDI/AAAAAAAAAZ4/xV_Bz7dz1zQ/s1600/msft_paparazzi.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="456" src="http://2.bp.blogspot.com/-n7NHPeFd-0s/UKbVZiUkYDI/AAAAAAAAAZ4/xV_Bz7dz1zQ/s640/msft_paparazzi.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://i.ebayimg.com/t/NEW-MICROSOFT-IM-A-PC-T-shirt-Unisex-M-MEDIUM-Black-/00/s/OTg2WDExNzM=/$(KGrHqVHJCcE+NLtbF64BQWKftM58w~~60_35.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="168" src="http://i.ebayimg.com/t/NEW-MICROSOFT-IM-A-PC-T-shirt-Unisex-M-MEDIUM-Black-/00/s/OTg2WDExNzM=/$(KGrHqVHJCcE+NLtbF64BQWKftM58w~~60_35.JPG" width="200" /&gt;&lt;/a&gt;First, yes I was and do in fact use a MacBook Pro and run Windows 8 on it. However the the sneaky photo fails to capture the full picture. First, I'm a very cool dude. &amp;nbsp;So next time at least do it from the XBOX section so you get my good side, and the "I'm a PC" shirt that I was wearing.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Secondly, do note in the photo that that is my desktop there on the screen, um I believe that's Windows 8 and NOT OSX. I also carry multiple phones at this point I had a Lumia 800 Windows Phone in my pocket but also own Android and iOS devices as well.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-rlQVzqLAFGs/UKbXjQE1KfI/AAAAAAAAAaA/TwGGMlqe_S8/s1600/687919376.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-rlQVzqLAFGs/UKbXjQE1KfI/AAAAAAAAAaA/TwGGMlqe_S8/s320/687919376.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
Furthmermore, if you are in fact the "social media fanatic" that the &lt;a href="http://www.ivanmladenovic.com/about-me/" target="_blank"&gt;about page states on your blog&lt;/a&gt;; please come introduce yourself! I love to chat technology, and ask what I was presenting that evening. &amp;nbsp;You'd be suprised, or not maybe, that I was talking about Windows 8 UX Design. You should have stuck around, not only would you have gain some serious knowledge from the 1 1/2 presentation &amp;nbsp;but also had gotten some dang nice swag and a fancy sandwich from Panera Bread in Microsoft.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I do not work for Microsoft, and even employees of Microsoft are welcome to carry and use iOS and OSX devices. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Next time introduce yourself, you'd be&amp;nbsp;surprised&amp;nbsp;whose on the front side of that picture.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/hj_49oSqRCc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/5516895795000446917/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=5516895795000446917&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/5516895795000446917?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/5516895795000446917?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/hj_49oSqRCc/paparazzi-at-microsoft-store-im-famous.html" title="Paparazzi at the Microsoft Store! I'm Famous! " /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-n7NHPeFd-0s/UKbVZiUkYDI/AAAAAAAAAZ4/xV_Bz7dz1zQ/s72-c/msft_paparazzi.PNG" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/11/paparazzi-at-microsoft-store-im-famous.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MEQnY-fyp7ImA9WhJaGUo.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-2494208953196236054</id><published>2012-10-11T12:03:00.000-04:00</published><updated>2012-10-11T12:03:23.857-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-11T12:03:23.857-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><category scheme="http://www.blogger.com/atom/ns#" term="WebAPI" /><category scheme="http://www.blogger.com/atom/ns#" term="Telerik" /><category scheme="http://www.blogger.com/atom/ns#" term="Code Camp" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Store Apps" /><category scheme="http://www.blogger.com/atom/ns#" term="Tampa Code Camp" /><title>Tampa Code Camp</title><content type="html">&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
I will be giving two talks this Saturday at&amp;nbsp;&lt;span style="color: #2288bb;"&gt;&lt;a href="http://www.tampacodecamp.com/" target="_blank"&gt;Tampa Code Camp&lt;/a&gt;&lt;/span&gt;, being held at the University of South Florida in Tampa, Fl.&amp;nbsp; For directions and more information visit&lt;a href="http://www.tampacodecamp.com/" target="_blank"&gt;&amp;nbsp;http://www.tampacodecamp.com&lt;/a&gt;. Schedule for other sessions&amp;nbsp;&lt;a href="http://www.tampacodecamp.com/Agenda.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;h3&gt;
&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
My Sessions&lt;/h3&gt;
&lt;br /&gt;
&lt;h4 class="modal-body"&gt;
Introduction to ASP.NET Web API - Why you should be using it.&lt;span class="label label-success"&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div class="modal-body"&gt;
&lt;span class="label label-success"&gt;9:50 AM in Room 1102&lt;/span&gt;&lt;/div&gt;
&lt;div class="modal-body"&gt;
This is an introduction to ASP.NET WebAPI and how easy it is to get started and use it in your application development when building RESTful services.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h4 id="myModalLabel"&gt;
Building Windows 8 Apps w/ MVVM Light&lt;/h4&gt;
&lt;span class="label label-success"&gt;2:20 PM in Room 1301&lt;/span&gt;&lt;br /&gt;
&lt;div class="modal-body"&gt;
&lt;a href="http://1.bp.blogspot.com/-hNoSFHwqxfU/UHbjb1YmvZI/AAAAAAAAAYY/bZ4uTZGo2sU/s1600/MVVM_Original_195x100.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-hNoSFHwqxfU/UHbjb1YmvZI/AAAAAAAAAYY/bZ4uTZGo2sU/s1600/MVVM_Original_195x100.png" /&gt;&lt;/a&gt;MVVM Light is a great toolkit for building Window Phone applications and has been updated for building Windows 8 Modern UI apps. In this session, you will learn how to get the package installed, what is different from Windows Phone development in MVVM Light and how to start your first app in Windows 8.&lt;/div&gt;
&lt;div class="modal-body"&gt;
&lt;/div&gt;
&lt;h4 class="modal-body"&gt;
&lt;/h4&gt;
&lt;h4 class="modal-body"&gt;
&lt;a href="http://www.telerik.com/products/windows-metro/overview.aspx" target="_blank"&gt;Telerik Controls for Windows 8.&lt;/a&gt;&lt;/h4&gt;
&lt;div class="modal-body" style="font-weight: normal;"&gt;
&lt;span class="label label-success"&gt;3:25 PM in Room 115&lt;/span&gt;&lt;/div&gt;
&lt;div class="modal-body" style="font-weight: normal;"&gt;
&lt;span style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-uvlRyfBwlRY/UHbimzmaKqI/AAAAAAAAAYQ/T05OmUpUqeU/s1600/image001.png" /&gt;&lt;/span&gt;&lt;a href="http://www.telerik.com/" target="_blank"&gt;Telerik &lt;/a&gt;has just released a set of &lt;a href="http://www.telerik.com/products/windows-metro/overview.aspx" target="_blank"&gt;controls for Windows 8&lt;/a&gt; development. In this session, we'll take a look at the set of controls and see how easy it is to get started using these to make your Windows 8 apps pop.&lt;/div&gt;
&lt;div class="modal-body"&gt;
&lt;br /&gt;
Hope to see you there, should be an exciting event!&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/X_dAYaL3Oq8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/2494208953196236054/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=2494208953196236054&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/2494208953196236054?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/2494208953196236054?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/X_dAYaL3Oq8/tampa-code-camp.html" title="Tampa Code Camp" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-hNoSFHwqxfU/UHbjb1YmvZI/AAAAAAAAAYY/bZ4uTZGo2sU/s72-c/MVVM_Original_195x100.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/10/tampa-code-camp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IFSXo-cCp7ImA9WhNTEEg.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-3036636105754221965</id><published>2012-10-09T14:48:00.001-04:00</published><updated>2012-10-12T11:25:18.458-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-12T11:25:18.458-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="TypeScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Store Apps" /><category scheme="http://www.blogger.com/atom/ns#" term="WinJS" /><title>TypeScript for Windows 8 Store Apps</title><content type="html">&lt;h3&gt;
What is TypeScript?&amp;nbsp;&lt;/h3&gt;
See &lt;a href="http://www.typescriptlang.org/"&gt;http://www.typescriptlang.org&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
TypeScript was recently released and has become the new hot topic. &amp;nbsp;One of the questions I have asked and heard is can we use this for developing Windows Store Applications with Javascript and have the cool features that have been shown in the videos and examples.&lt;br /&gt;
&lt;br /&gt;
One of the great features was the split window feature where you can code in TypeScript on the left and upon hitting save, it compiles to Javascript on the left. So I fired up a new Javascript Windows Store project in Visual Studio to give it a shot to see if it all works. &amp;nbsp;Before we get started make sure that you have the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Windows 8 &amp;amp; VS2012&lt;/li&gt;
&lt;li&gt;Download the plugin:&amp;nbsp;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=266563"&gt;http://go.microsoft.com/fwlink/?LinkID=266563&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;VS 2012 Web Essentials:&amp;nbsp;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6"&gt;http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3&gt;
Create a New Project&lt;/h3&gt;
&lt;div&gt;
Start by creating a new project. I just went with the "Blank App" template for purposes of this post, but any of the installed templates are certainly applicable.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/--YwdV-T0BJM/UHRXwA7xjjI/AAAAAAAAAWM/HYdnK53eEHI/s1600/createnewproject.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="253" src="http://3.bp.blogspot.com/--YwdV-T0BJM/UHRXwA7xjjI/AAAAAAAAAWM/HYdnK53eEHI/s400/createnewproject.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Click "OK" and you will see that in the Solution Explorer the following structure. &amp;nbsp;Expand the "js" folder to see the javascript files that are there by default.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-kZJEM6HBoQY/UHRYUKlse1I/AAAAAAAAAWU/Wd6dFRIgi38/s1600/solutionexplorer.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-kZJEM6HBoQY/UHRYUKlse1I/AAAAAAAAAWU/Wd6dFRIgi38/s400/solutionexplorer.PNG" width="390" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Adding the TypeScript Functionality&lt;/h3&gt;
&lt;div&gt;
There are a couple of files that are needed to making TypeScript and Windows 8 play nicely together, as well as jQuery. &amp;nbsp;The best way to describe these is that they are wrappers for the &lt;b&gt;WinJS&lt;/b&gt;, &lt;b&gt;WinRT &lt;/b&gt;and &lt;b&gt;JQuery &lt;/b&gt;or helpers. &amp;nbsp;There is also &lt;b&gt;lib.d.ts&lt;/b&gt; which is a noted in the file as "&lt;b&gt;ECMA Script APIs&lt;/b&gt;"&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Click on any of these to see the source.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#typings%2fwinjs.d.ts" target="_blank"&gt;winjs.d.ts&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#typings%2fwinrt.d.ts" target="_blank"&gt;winrt.d.ts&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#typings%2fjquery.d.ts" target="_blank"&gt;jquery.d.ts&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#typings%2flib.d.ts" target="_blank"&gt;lib.d.ts&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I downloaded all of these and now put them in a folder called &lt;b&gt;tsWin &lt;/b&gt;in the project for referencing in my other ts files.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the examples that have been shown online, by simply adding a &lt;b&gt;.ts&lt;/b&gt;&amp;nbsp;file to your project and hitting save; Visual Studio will automatically create the &lt;b&gt;.js&lt;/b&gt;&amp;nbsp;file and associate it to the TypeScript file and show the compiled javascript in the split window. &amp;nbsp;However, this is not the case in a Windows Store Application...Yet.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
But we can still make this all work, here's how.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Add a new javascript file to the js folder BUT name it with the extension &lt;b&gt;.ts&lt;/b&gt;. I named the file&lt;b&gt;&lt;i&gt; Data.ts&lt;/i&gt;&lt;/b&gt;. &amp;nbsp;Next, repeat and name the file &lt;i&gt;&lt;b&gt;Data.js&lt;/b&gt;. &lt;/i&gt;Your solution explorer should look like this now. &lt;i&gt;Note that I also added the tsWin folder and the&amp;nbsp;mentioned&amp;nbsp;files as well.&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sBsmbG_oEtU/UHRctAAfecI/AAAAAAAAAWo/hxlg24iVHew/s1600/AddNewFiles.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-sBsmbG_oEtU/UHRctAAfecI/AAAAAAAAAWo/hxlg24iVHew/s400/AddNewFiles.PNG" width="370" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Now you can open the data.ts file and get the split window that has been presented and see that the .js file that is compiled on the right.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
There is another file here that is important as well called win.ts, it adds a wrapper for &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh453394.aspx" target="_blank"&gt;setImmediate &lt;/a&gt;and references the winrt.d.ts and winjs.d.t.s files. &amp;nbsp;I reference this file in any of the TypeScript that I am using but put it within the js folder.&lt;/div&gt;
&lt;h3&gt;
A Quick Example&lt;/h3&gt;
&lt;div&gt;
So here is a quick example that will walk through the following concepts:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Creating a simple class&lt;/li&gt;
&lt;li&gt;Extending the class through inheritance&lt;/li&gt;
&lt;li&gt;Using Location Services&lt;/li&gt;
&lt;li&gt;Retrieving a static map from Google Maps API&lt;/li&gt;
&lt;li&gt;Inserting the image control onto the page.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Open the data.ts file. &amp;nbsp;We will first create the initial Location class and the MyLocation class in TypeScript &amp;nbsp;and see the output to javascript.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
TypeScript:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;pre class="brush:js"&gt;///&amp;lt;reference path='win.ts'/&amp;gt;

module Data {

&amp;nbsp; &amp;nbsp; class Location {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; longitude: any;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; latitude: any;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; url: string;
&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; class MyLocation extends Location {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retrieved: any;
&amp;nbsp; &amp;nbsp; }
};



&lt;/pre&gt;
&lt;br /&gt;
Javascript:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:js"&gt;var __extends = this.__extends || function (d, b) {
&amp;nbsp; &amp;nbsp; function __() { this.constructor = d; }
&amp;nbsp; &amp;nbsp; __.prototype = b.prototype;
&amp;nbsp; &amp;nbsp; d.prototype = new __();
}

var Data;
(function (Data) {
&amp;nbsp; &amp;nbsp; var Location = (function () {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function Location() { }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return Location;
&amp;nbsp; &amp;nbsp; })(); &amp;nbsp; 

&amp;nbsp; &amp;nbsp; var MyLocation = (function (_super) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; __extends(MyLocation, _super);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function MyLocation() {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _super.apply(this, arguments);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return MyLocation;
&amp;nbsp; &amp;nbsp; })(Location); &amp;nbsp; 
})(Data || (Data = {}));
; ;&lt;/pre&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6DkeSnx5ot0/UHRlfi8rQsI/AAAAAAAAAW8/p65dVL3KToM/s1600/data1.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="130" src="http://2.bp.blogspot.com/-6DkeSnx5ot0/UHRlfi8rQsI/AAAAAAAAAW8/p65dVL3KToM/s400/data1.PNG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screen shot just to visualize what's show in VS 2012&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Not sure about you, but I wouldn't want to write the inheritance code for Javscript, TypeScript kills it there! Ok, let's move on. Next I will add the function to get the location from the device, populate the myLoc object and then create and insert the image into the body of the page.&lt;br /&gt;
&lt;br /&gt;
Note that the TypeScript and Javacript to do this are one and the same, difference here is that we have type safe code.&lt;br /&gt;
&lt;br /&gt;
TypeScript:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:js"&gt;&amp;nbsp; var locator = new Windows.Devices.Geolocation.Geolocator();

&amp;nbsp; locator.getGeopositionAsync().then(function (pos) {
 &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; var myLoc = new MyLocation();
&amp;nbsp; &amp;nbsp; &amp;nbsp; myLoc.latitude = pos.coordinate.latitude;
&amp;nbsp; &amp;nbsp; &amp;nbsp; myLoc.longitude = pos.coordinate.longitude;

&amp;nbsp; &amp;nbsp; &amp;nbsp; myLoc.retrieved = Date.now;
&amp;nbsp; &amp;nbsp; &amp;nbsp; myLoc.url = "http://maps.googleapis.com/maps/api/staticmap?center="
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + myLoc.latitude + "," + myLoc.longitude
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + "&amp;amp;zoom=12&amp;amp;size=400x400&amp;amp;sensor=false";

      // add a new img tag to the document
      var img = document.createElement("img");
      // set the src and style
      img.setAttribute("src", myLoc.url);
      img.setAttribute("style", "height:400px;width:400px;");
        
      // get the paragraph tag we set for the location of the content
      var p = document.body.getElementsByTagName("p")[0];
      p.appendChild(img);

&lt;/pre&gt;
&lt;br /&gt;
When you hit save you'll notice that on the status bar at the bottom left of Visual Studio it will read "Compiling TypeScript..." and then the resulting Javascript will refresh/show on the right pane. &amp;nbsp;It is important to note that if you have the ,js file open you will get the prompt &lt;b&gt;"Such and such file is open would you like to reload"&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Before you run the application make sure that you enable the Location capabilities in the package manifest file as shown below or you will get a nasty message box letting you know you didn't.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-GqKnymDYqmM/UHRo8WhxrgI/AAAAAAAAAXQ/fUReUE1RHJo/s1600/packagemanifest.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://2.bp.blogspot.com/-GqKnymDYqmM/UHRo8WhxrgI/AAAAAAAAAXQ/fUReUE1RHJo/s400/packagemanifest.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ok, hit F5 and see the results.&lt;br /&gt;
&lt;br /&gt;
First you'll get the let me use location services prompt.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-HzOLQ3ekL9I/UHRptd37XTI/AAAAAAAAAXY/1O6UzAVIgZk/s1600/AllowLocation.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://1.bp.blogspot.com/-HzOLQ3ekL9I/UHRptd37XTI/AAAAAAAAAXY/1O6UzAVIgZk/s400/AllowLocation.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
And then the page is presented with the downloaded map.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-E3cilYsVCaw/UHRq872XYDI/AAAAAAAAAXg/iH3jVRXVlEg/s1600/yourlocation.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://1.bp.blogspot.com/-E3cilYsVCaw/UHRq872XYDI/AAAAAAAAAXg/iH3jVRXVlEg/s400/yourlocation.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
That's a little get started primer on TypeScript and Windows Store Apps! &amp;nbsp;Pretty awesome stuff.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Tips &amp;amp; Tricks&lt;/h3&gt;
&lt;/div&gt;
&lt;h4&gt;
Content / Package Type&lt;/h4&gt;
&lt;div&gt;
Make sure that all of the TypeScript (.ts) files are marked as None so they are not&amp;nbsp;distributed&amp;nbsp;unnecessarily&amp;nbsp;with your application.&amp;nbsp;&lt;/div&gt;
&lt;h4&gt;
Debugging&lt;/h4&gt;
&lt;div&gt;
You can put break points in the generated .js files and have access to the immediate window, watch etc.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Dependent Files&lt;/h4&gt;
&lt;div&gt;
I like to see the dependent files like I'm used to seeing in other project types (see below). &amp;nbsp;Since this is not built in to the Windows Store functionality with TypeScript yet, here is how to do it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-A6sZWc0OYe0/UHRuYz6DVRI/AAAAAAAAAX0/wTT5BHP3H8k/s1600/treeview.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-A6sZWc0OYe0/UHRuYz6DVRI/AAAAAAAAAX0/wTT5BHP3H8k/s320/treeview.PNG" width="258" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You need to edit the project file. &amp;nbsp;The best way to do this is to use the Power Commands for Visual Studio extension, or browse to it and open in notepad or some other text editor.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-SyPYCvo47uI/UHRukrMHldI/AAAAAAAAAX8/lmfi9arHPHQ/s1600/PowerCommands.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="253" src="http://4.bp.blogspot.com/-SyPYCvo47uI/UHRukrMHldI/AAAAAAAAAX8/lmfi9arHPHQ/s400/PowerCommands.PNG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;PowerCommands for Visual Studio&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
For this solution locate the data.ts reference in the file and change it to the following:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;Content Include="js\data.js"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;DependentUpon&amp;gt;data.ts&amp;lt;/DependentUpon&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/Content&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;None Include="js\data.ts" /&amp;gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Save the file and reload the project and you can now see that the .js file will be shown below the .ts file.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Conclusion&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
I have had some real fun getting into this and trying it out with the Store apps. &amp;nbsp;Coming from a C# / XAML life for the last many years, it will be interesting for me to back to some scripting. &amp;nbsp;I like the option and I see some really cool opportunities with TypeScript.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://sdrv.ms/SPLWls" target="_blank"&gt;DOWNLOAD THE CODE FOR THE EXAMPLE&lt;/a&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/VjJwEl5W82M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/3036636105754221965/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=3036636105754221965&amp;isPopup=true" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/3036636105754221965?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/3036636105754221965?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/VjJwEl5W82M/typescript-for-windows-8-store-apps.html" title="TypeScript for Windows 8 Store Apps" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/--YwdV-T0BJM/UHRXwA7xjjI/AAAAAAAAAWM/HYdnK53eEHI/s72-c/createnewproject.PNG" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/10/typescript-for-windows-8-store-apps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0INQXs_eCp7ImA9WhJaEUw.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-4857722161498702611</id><published>2012-10-01T13:13:00.000-04:00</published><updated>2012-10-01T13:13:10.540-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-01T13:13:10.540-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Talks" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><category scheme="http://www.blogger.com/atom/ns#" term="WebAPI" /><category scheme="http://www.blogger.com/atom/ns#" term="Richmond Code Camp" /><category scheme="http://www.blogger.com/atom/ns#" term="Code Camp" /><title>Richmond Code Camp</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://richmondcodecamp.org/SiteLogos2/rcclogosmall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://richmondcodecamp.org/SiteLogos2/rcclogosmall.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
I will be giving two talks this Saturday at&amp;nbsp;&lt;a href="http://richmondcodecamp.org/" target="_blank"&gt;&lt;span style="color: #2288bb;"&gt;Richmond Code Camp&lt;/span&gt;&lt;/a&gt;, being held at the University of Richmond in Richmond, Va.&amp;nbsp; For directions and more information visit &lt;a href="http://richmondcodecamp.org/"&gt;http://richmondcodecamp.org/&lt;/a&gt;
and/or follow @CodeCamp on Twitter. Schedule for other sessions &lt;a href="http://confs.com/rcc2012.1/" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;h3&gt;
&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
My Sessions&lt;/h3&gt;
&lt;br /&gt;
&lt;h4 id="myModalLabel"&gt;
Building Windows 8 Apps w/ MVVM Light&lt;/h4&gt;
&lt;span class="label label-success"&gt; 8:45 AM - 10:00 AM in Room 2&lt;/span&gt;&lt;br /&gt;
&lt;div class="modal-body"&gt;
MVVM Light is a great toolkit for building Window Phone applications and has been updated for building Windows 8 Modern UI apps.  In this session, you will learn how to get the package installed, what is different from Windows Phone development in MVVM Light and how to start your first app in Windows 8.&lt;/div&gt;
&lt;div class="modal-body"&gt;
&amp;nbsp;&lt;/div&gt;
&lt;h4 class="modal-body"&gt;
Introduction to ASP.NET WebAPI - Why you should be using it.&lt;span class="label label-success"&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;div class="modal-body"&gt;
&lt;span class="label label-success"&gt;12:30 PM - 1:45 PM in Room 1&lt;/span&gt;&lt;/div&gt;
&lt;div class="modal-body"&gt;
This is an introduction to ASP.NET WebAPI and how easy it is to get started and use it in your application development when building RESTful services.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Hope to see 
you there, should be an exciting event!&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/j0KonlH8-JM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/4857722161498702611/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=4857722161498702611&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/4857722161498702611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/4857722161498702611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/j0KonlH8-JM/richmond-code-camp.html" title="Richmond Code Camp" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/10/richmond-code-camp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08AQXo4eCp7ImA9WhJbFk8.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-9191040149290294086</id><published>2012-09-25T23:18:00.000-04:00</published><updated>2012-09-25T23:24:00.430-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-25T23:24:00.430-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVVM" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="RadHubTile" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><category scheme="http://www.blogger.com/atom/ns#" term="Telerik" /><category scheme="http://www.blogger.com/atom/ns#" term="RadCustomHubTile" /><title>RadCustomHubTile from Telerik for Windows 8 UI</title><content type="html">&lt;h3&gt;
Introduction&lt;/h3&gt;
&lt;a href="http://www.telerik.com/" target="_blank"&gt;Telerik&lt;/a&gt; recently released their &lt;a href="http://www.telerik.com/products/windows-metro/overview.aspx" target="_blank"&gt;Windows 8 UI Controls&lt;/a&gt; to RC&amp;nbsp;on September 18th (&lt;a href="http://blogs.telerik.com/blogs/posts/12-09-18/what-s-new-in-telerik-windows-8-ui-controls-release-candidate.aspx?utm_source=spboyer" target="_blank"&gt;see post here&lt;/a&gt;), and this is probably on the first in a series of posts I will put out showing them off.&lt;br /&gt;
&lt;br /&gt;
The first control here is the RadCustomHubTile.&amp;nbsp; I chose this because I am in the process of porting my &lt;a href="http://spboyer.me/AboutAmberApp" target="_blank"&gt;Find Amber app from Windows Phone&lt;/a&gt; to Windows&amp;nbsp;8 and I wanted to transition the app without drifting too far from the spirit of the original app.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OoJxg94Y9sg/UFtzIhwbmQI/AAAAAAAAAU8/_9KJDXTNF2g/s1600/promoimage.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="233" src="http://1.bp.blogspot.com/-OoJxg94Y9sg/UFtzIhwbmQI/AAAAAAAAAU8/_9KJDXTNF2g/s320/promoimage.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;RadControls from Telerik used here for&lt;br /&gt;
Current List and Search &amp;amp; Stats section&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
You can see from the screen shot&amp;nbsp;that I had already used the &lt;a href="http://www.telerik.com/products/windows-phone.aspx" target="_blank"&gt;RadControls for Windows Phone&lt;/a&gt;, so now I can bring some of the design through.&lt;br /&gt;
&lt;br /&gt;
The controls do support both HTML and XAML design, if the current version of the controls do not include either or; I assure you the version you seek is in development and on its way.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Getting Started&lt;/h3&gt;
The RadCustomHubTile allows &lt;strong&gt;any &lt;/strong&gt;user-defined content rather than predefined parts that you may find in a RadHubTile or RadSlideTile, and as in most if not all of the Telerik controls; MVVM as well as code based binding is supported.&lt;br /&gt;
&lt;br /&gt;
Prior to trying this example, please &lt;a href="http://www.telerik.com/download-trial-file.aspx?pid=981" target="_blank"&gt;download the controls from Telerik&lt;/a&gt; and note that I am using MVVM Light as the MVVM Framework.&amp;nbsp; You can see how to install MVVM Light via nuget by opening the Package Manager console and running "Install-Package mvvmlight".&amp;nbsp; If you have any trouble with that please see &lt;a href="http://mvvmlight.codeplex.com/"&gt;http://mvvmlight.codeplex.com&lt;/a&gt;&amp;nbsp;or contact me via &lt;a href="http://twitter.com/spboyer" target="_blank"&gt;twitter (@spboyer)&lt;/a&gt;&amp;nbsp;OR see my blog post on &lt;a href="http://blog.tattoocoder.com/2012/08/getting-started-w-windows-8-mvvm-light.html" target="_blank"&gt;how to get started with Windows 8 and MVVM Light&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
In the following example you will see:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;MVVM Binding&lt;/li&gt;
&lt;li&gt;Content locally bound&lt;/li&gt;
&lt;li&gt;Content bound from an internet URI&lt;/li&gt;
&lt;li&gt;Complex front and back content for the tile&lt;/li&gt;
&lt;/ul&gt;
This is a moderately simply example.&amp;nbsp; I started with a Blank Solution in Visual Studio 2012 and called it RadCustomHubTile (in retrospect probably should have stuck with App1).&lt;br /&gt;
&lt;br /&gt;
Install the MVVM Light Framework via nuget (see above), you will have to make a change to the App.xaml file.&amp;nbsp; When installing this, it adds the reference to the namespace in the old way&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;&amp;nbsp; xmlns:vm="clr-namespace:RadHubTile.ViewModel" &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
you need to change this to:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;&amp;nbsp;xmlns:vm="using:RadHubTile.ViewModel" &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;A little house keeping to make it look nice. Yes I care what it looks like even for this. Go ahead and add the following below the &amp;lt;Grid&amp;gt; tag to add the header to the initial page.&amp;nbsp; You can change the title if you like and run (F5).&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:xml"&gt;&amp;lt;Grid.RowDefinitions&amp;gt;
&amp;nbsp;&amp;lt;RowDefinition Height="140"/&amp;gt;
&amp;nbsp;&amp;lt;RowDefinition Height="*"/&amp;gt;
&amp;lt;/Grid.RowDefinitions&amp;gt;


&amp;lt;Grid&amp;gt;
&amp;nbsp;&amp;lt;Grid.ColumnDefinitions&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;ColumnDefinition Width="Auto"/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;ColumnDefinition Width="*"/&amp;gt;
&amp;nbsp;&amp;lt;/Grid.ColumnDefinitions&amp;gt;
&amp;nbsp;&amp;lt;Button x:Name="backButton"&amp;nbsp; Style="{StaticResource BackButtonStyle}"/&amp;gt;
&amp;nbsp;&amp;lt;TextBlock x:Name="pageTitle" Text="Rad Custom Hub Tile" Grid.Column="1" IsHitTestVisible="false" Style="{StaticResource PageHeaderTextStyle}" Foreground="#FFADD808"/&amp;gt;
&amp;lt;/Grid&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wNthFGNkBGg/UGJrumR5TRI/AAAAAAAAAVc/6ZFQ4gAtxoM/s1600/Title_xaml.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="246" src="http://3.bp.blogspot.com/-wNthFGNkBGg/UGJrumR5TRI/AAAAAAAAAVc/6ZFQ4gAtxoM/s400/Title_xaml.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Title and Back button&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, lets add the RadCustomHubTile Control, and the best way to do this is to simply drag it from the toolbox right into the spot within the XAML. This is something you could not do in Windows Phone which is a big step in my opinion.&lt;br /&gt;
&lt;br /&gt;
It will add the namespace and the references to the project.&lt;br /&gt;
&lt;br /&gt;
To clean it up a little and make sure that you are using within the design guidelines, wrap the RadHubControl with a Grid with the following settings.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:xml"&gt;&amp;lt;Grid Grid.Row="1" Margin="115,0,0,0"&amp;gt;



&amp;nbsp; &amp;lt;Primitives:RadCustomHubTile /&amp;gt;



&amp;lt;/Grid&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
If you are wondering why my RadCustomHubTile is prefixed, it is because I have changed or altered the declaration at the top of the page to be the following (this matches my Phone app stuff).&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
xmlns:Primitives="using:Telerik.UI.Xaml.Controls.Primitives"&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h3&gt;
Setting Front and Back Content&lt;/h3&gt;
&lt;div&gt;
The content for the front and back are defined by setting the content within the &lt;b&gt;&lt;i&gt;&amp;lt;RadCustomHubTile.FrontContent&amp;gt;&lt;/i&gt;&lt;/b&gt; and&amp;nbsp;&lt;i style="font-weight: bold;"&gt;&amp;lt;RadCustomHubTile.BackContent&amp;gt;&lt;/i&gt;&amp;nbsp;respectively. &amp;nbsp;Pretty simple, so here is an example:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="brush:xml"&gt;&amp;lt;Primitives:RadCustomHubTile Height="300" Width="300"&amp;gt;
 &amp;lt;Primitives:RadCustomHubTile.FrontContent&amp;gt;
  &amp;lt;Grid&amp;gt;
   &amp;lt;Image x:Name="imgBlogger" 
        Source="{Binding Photo, Mode=TwoWay}" 
        Height="300" Width="300" 
        Stretch="UniformToFill" Margin="0" 
        HorizontalAlignment="Left" 
        VerticalAlignment="Center" /&amp;gt;


   &amp;lt;Rectangle Height="65" Fill="#99000000" VerticalAlignment="Bottom" /&amp;gt;

   &amp;lt;StackPanel Orientation="Horizontal"&amp;gt;
    &amp;lt;TextBlock  Text="Blogger:" 
        Foreground="White" Width="126" Height="43" 
        VerticalAlignment="Bottom" 
        Margin="10,0,0,14" Style="{StaticResource SubheaderTextStyle}" 
        HorizontalAlignment="Left" /&amp;gt;

    &amp;lt;TextBlock  Text="{Binding UserName}" 
        Foreground="White" Height="43" 
        VerticalAlignment="Bottom" Margin="0,0,0,14" 
        Style="{StaticResource SubheaderTextStyle}"/&amp;gt;
   &amp;lt;/StackPanel&amp;gt;
  &amp;lt;/Grid&amp;gt;
 &amp;lt;/Primitives:RadCustomHubTile.FrontContent&amp;gt;

 &amp;lt;Primitives:RadCustomHubTile.BackContent&amp;gt;
  &amp;lt;Grid&amp;gt;
   &amp;lt;Image x:Name="img" 
         Source="{Binding Thumbnail, Mode=TwoWay}" 
         Height="300" Width="300" 
         Stretch="UniformToFill" Margin="0" 
         HorizontalAlignment="Left" 
         VerticalAlignment="Center" /&amp;gt;

   &amp;lt;Rectangle Height="65" Fill="#99000000" VerticalAlignment="Bottom" /&amp;gt;

   &amp;lt;TextBlock  Text="{Binding Title, Mode=TwoWay}" 
        Foreground="White" Width="270" Height="30" 
        VerticalAlignment="Bottom"  
        Margin="0,0,0,30" Style="{StaticResource BasicTextStyle}" /&amp;gt;

   &amp;lt;TextBlock  Text="{Binding SubTitle, Mode=TwoWay}" 
        Foreground="White" Width="270" Height="30" 
        VerticalAlignment="Bottom" Margin="0,0,0,5" 
        Style="{StaticResource BasicTextStyle}"/&amp;gt;
  &amp;lt;/Grid&amp;gt;
 &amp;lt;/Primitives:RadCustomHubTile.BackContent&amp;gt;
&amp;lt;/Primitives:RadCustomHubTile&amp;gt;



&lt;/pre&gt;
&lt;br /&gt;
Note that you will want to wrap your content with the FrontContent / BackContent tags in Grid, StackPanel etc as the designer will give you the "Content cannot be set more than once error".&lt;br /&gt;
&lt;br /&gt;
Here is the MainViewModel that is bound. Note that the Blogger image (me), is pulled from an internet source uri and the back image is pulled from the project itself. The string properties are bound simply.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;using GalaSoft.MvvmLight;
using System;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;

namespace RadHubTile.ViewModel
{
    public class MainViewModel : ViewModelBase
    {
        /// &amp;lt;summary&amp;gt;
        /// Initializes a new instance of the MainViewModel class.
        /// &amp;lt;/summary&amp;gt;
        public MainViewModel() { }

        public string Photo
        {
            get { return "http://3.bp.blogspot.com/-yBHsXXtsWWo/UCkc916wnfI/AAAAAAAAAN0/FcKOE2P-gGQ/s1600/profilepic.png"; }
        }

        public string UserName
        {
            get { return "Shayne Boyer"; }
        }

        public ImageSource Thumbnail
        {
            get { return new BitmapImage(new System.Uri(new Uri("ms-appx:"), "/Assets/RadCustomHubTile.png"));}
        }

        public string Title
        {
            get { return "Telerik Windows 8 UI Controls"; }
        }

        public string SubTitle
        {
            get { return "RadCustomHubTile"; }
        }
    }
}

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
So what does it all look like?&lt;br /&gt;
&lt;br /&gt;
Front&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-brin1EcPc7g/UGJyuzimRwI/AAAAAAAAAVw/Rze7pM6iiNI/s1600/Tile_front.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://1.bp.blogspot.com/-brin1EcPc7g/UGJyuzimRwI/AAAAAAAAAVw/Rze7pM6iiNI/s400/Tile_front.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Back&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ssj1hGoA-58/UGJy1fLAmxI/AAAAAAAAAV4/q1eqdJgwAKo/s1600/Tile_back.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://1.bp.blogspot.com/-ssj1hGoA-58/UGJy1fLAmxI/AAAAAAAAAV4/q1eqdJgwAKo/s400/Tile_back.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
One other item to note is that you can alter the duration of the flip/rotation by setting the UpdateInterval which is a TimeSpan. So setting the value to "0:0:5" would be equal to 5 seconds. &amp;nbsp;There is also FlowDirection and many other properties to customize the Tile to your liking. &amp;nbsp;I'd like to see what you can do with it. &amp;nbsp;Download the controls today and let me know what you working on and if you have any questions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/P1qtyExYAto" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/9191040149290294086/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=9191040149290294086&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/9191040149290294086?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/9191040149290294086?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/P1qtyExYAto/radcustomhubtile-from-telerik-for.html" title="RadCustomHubTile from Telerik for Windows 8 UI" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-OoJxg94Y9sg/UFtzIhwbmQI/AAAAAAAAAU8/_9KJDXTNF2g/s72-c/promoimage.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/09/radcustomhubtile-from-telerik-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYBRXg9eip7ImA9WhJbFUw.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-94438463496984500</id><published>2012-09-24T14:42:00.000-04:00</published><updated>2012-09-24T14:42:34.662-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-24T14:42:34.662-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="User Group" /><category scheme="http://www.blogger.com/atom/ns#" term="Contest" /><category scheme="http://www.blogger.com/atom/ns#" term="Social" /><category scheme="http://www.blogger.com/atom/ns#" term="Code Camp" /><category scheme="http://www.blogger.com/atom/ns#" term="Meetup" /><title>User Groups - What do you want from them?</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-EJasR9ATO54/UAQihpLJVWI/AAAAAAAAAFc/5NjEhIt1vYY/s1600/WP_000092.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/-EJasR9ATO54/UAQihpLJVWI/AAAAAAAAAFc/5NjEhIt1vYY/s200/WP_000092.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
There are many user groups, meetups, developer groups, etc depending on where you live that are available to get involved in.&amp;nbsp; This is one of many ways to meet other developers, see what they are doing, what projects and so fourth are going on in your neck of the woods that you wouldn't necessarily know about.&amp;nbsp; But, one thing that I'll say is that the format is about the same from the 3-5 groups that I participate in the Central Florida Area.&amp;nbsp; I even run a &lt;a href="http://owpug.com/" target="_blank"&gt;Windows Phone/8&lt;/a&gt; group here too, and the same could be said.&lt;br /&gt;
&lt;br /&gt;
Now, one thing that I wanted to do was sponsor contests. So I started the &lt;a href="http://blog.tattoocoder.com/search/label/Contest" target="_blank"&gt;Dark Sky App contest&lt;/a&gt; to try and put a little something different into the mix, but I wanted to throw the general question out to the world.&amp;nbsp; What do you as a developer, designer, etc. want out of these types of groups?&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-FYkt0JffdNM/UARtCIRfKGI/AAAAAAAAAGI/ayhSTIsOGTg/s1600/403966_267991929973057_869391323_n.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-FYkt0JffdNM/UARtCIRfKGI/AAAAAAAAAGI/ayhSTIsOGTg/s200/403966_267991929973057_869391323_n.jpg" width="200" /&gt;&lt;/a&gt;Typically it's a meeting where on or a few people present on a topic, there is some Q &amp;amp; A and generally some free stuff given away.&amp;nbsp; Now I'm always good for some free nerdy swag or a book, and I will never discount&amp;nbsp;the general social interaction that I get from these groups. Not to mention I have made some pretty good friends and networked with really cool people along the way.&amp;nbsp; Is that all we are looking for?&amp;nbsp; Is there something else you "need" from these presentations or gatherings?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please comment below and let me know...&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/MHtqRzXZneo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/94438463496984500/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=94438463496984500&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/94438463496984500?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/94438463496984500?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/MHtqRzXZneo/user-groups-what-do-you-want-from-them.html" title="User Groups - What do you want from them?" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-EJasR9ATO54/UAQihpLJVWI/AAAAAAAAAFc/5NjEhIt1vYY/s72-c/WP_000092.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/09/user-groups-what-do-you-want-from-them.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8BRXo4cSp7ImA9WhJbEUo.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-2002688056381077190</id><published>2012-09-20T15:54:00.000-04:00</published><updated>2012-09-20T15:54:14.439-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-20T15:54:14.439-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="WebAPI" /><category scheme="http://www.blogger.com/atom/ns#" term="Telerik" /><category scheme="http://www.blogger.com/atom/ns#" term="Find Amber" /><title>Amber Alerts for Windows Phone - Find Amber: I built it!</title><content type="html">&lt;h3 style="text-align: center;"&gt;
&lt;a href="http://www.windowsphone.com/s?appid=05aa4eda-af32-4731-b4b7-a197664a4d88" target="_blank"&gt;Find Amber Available for Windows Phone&lt;/a&gt;&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-OoJxg94Y9sg/UFtzIhwbmQI/AAAAAAAAAU8/_9KJDXTNF2g/s1600/promoimage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" src="http://1.bp.blogspot.com/-OoJxg94Y9sg/UFtzIhwbmQI/AAAAAAAAAU8/_9KJDXTNF2g/s320/promoimage.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: right;"&gt;
&lt;a href="http://www.windowsphone.com/s?appid=05aa4eda-af32-4731-b4b7-a197664a4d88" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;" target="_blank"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-CRcUXpsyEB4/UFtzdQuUhTI/AAAAAAAAAVE/fO1GOp58hys/s1600/120x600.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
Find Amber has finally been approved and is now available in the &lt;a href="http://www.windowsphone.com/s?appid=05aa4eda-af32-4731-b4b7-a197664a4d88" target="_blank"&gt;Windows Phone Store&lt;/a&gt;!  

This project is close to me, and not in a "I have lost a child" way thank God. But I do have children and if something were to happen to any of them I can't imagine what it would be like.&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
There are ways to get this information but generally it is slow to deliver.  Television, Radio, etc. but these delivery mechanisms are allow but allow for detail. In contrast, there is a text message service and/or the road signs that are available which solves the speed of delivery but the content is lacking.

My solution was to give the user both speed of delivery and content.
&lt;br /&gt;
&lt;br /&gt;
I decided to combine the latest available technology and tools from Microsoft using &lt;a href="http://www.windowsazure.com/"&gt;Windows Azure&lt;/a&gt;, &lt;a href="http://www.windowsazure.com/" target="_blank"&gt;SQL Azure&lt;/a&gt; and &lt;a href="http://www.asp.net/" target="_blank"&gt;ASP.NET Web API&lt;/a&gt; to build a robust system to get the data and deliver it to first the Windows Phone Platform but also create an API that allowed me to expand this to Windows 8 and the other mobility platforms.
&lt;br /&gt;
&lt;br /&gt;
The Windows Azure Services provide the necessary notifications to be sent to the phone when a new Amber Alert has been created. If the user has pinned the application tile to their home screen, they will be notified on the Live Tile if the Amber Alert has occurred in their state or near their location.&amp;nbsp; These notifications are sent within 1 minute of the notification being created at the National Center for Missing &amp;amp; Exploited Children® (NCMEC).&lt;br /&gt;
&lt;br /&gt;
Other features of the application include&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Most recent or open cases&lt;/li&gt;
&lt;li&gt;Cases near you&lt;/li&gt;
&lt;li&gt;Statistics&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Case Type&lt;/li&gt;
&lt;li&gt;Month of Year&lt;/li&gt;
&lt;li&gt;U.S. Region&lt;/li&gt;
&lt;li&gt;Year&lt;/li&gt;
&lt;li&gt;Top 10 States&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Cases by State&lt;/li&gt;
&lt;li&gt;Case Details&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Showing all pictures on file&lt;/li&gt;
&lt;li&gt;Includes Abductor pictures where applicable&lt;/li&gt;
&lt;li&gt;Map of last know location or missing from&lt;/li&gt;
&lt;li&gt;Links to Actual Lost Child Poster&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Social and Email Sharing integration&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br /&gt;
Screenshots of Find Amber&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mCjTxkLwkYk/UFtxYESpFzI/AAAAAAAAAUM/-m3Q5Jxq7c8/s1600/1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-mCjTxkLwkYk/UFtxYESpFzI/AAAAAAAAAUM/-m3Q5Jxq7c8/s200/1.png" width="120" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Current List&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-G8wG0c4bChY/UFtxYvtgDiI/AAAAAAAAAUU/11rFyQHVmFE/s1600/2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-G8wG0c4bChY/UFtxYvtgDiI/AAAAAAAAAUU/11rFyQHVmFE/s200/2.png" width="120" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Other Options&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pTYAYafiqx8/UFtxZ-AfoKI/AAAAAAAAAUk/QmI5bXZHyY4/s1600/details.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-pTYAYafiqx8/UFtxZ-AfoKI/AAAAAAAAAUk/QmI5bXZHyY4/s200/details.png" width="120" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Child Details&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-3mc2TpdXA3Q/UFtxa3WCxtI/AAAAAAAAAUs/iibmu-OzG80/s1600/poster.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-3mc2TpdXA3Q/UFtxa3WCxtI/AAAAAAAAAUs/iibmu-OzG80/s200/poster.png" width="120" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Poster View&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3Fuatj1hnrw/UFtxbggKinI/AAAAAAAAAU0/HSKLZTPLztY/s1600/statistics.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-3Fuatj1hnrw/UFtxbggKinI/AAAAAAAAAU0/HSKLZTPLztY/s200/statistics.png" width="120" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Statistic Graphs&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
Other credits&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://telerik.com/" target="_blank"&gt;Telerik&lt;/a&gt; - &lt;a href="http://www.telerik.com/products/windows-phone.aspx" target="_blank"&gt;RadControls for Windows Phone&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://mvvmlight.codeplex.com/" target="_blank"&gt;MVVM Light Toolkit&lt;/a&gt;&amp;nbsp;by Laurent Bugnion (&lt;a href="http://www.twitter.com/LBugnion" target="_blank"&gt;@LBugnion&lt;/a&gt;) : Great MVVM framework, supports Silverlight, WPF, Windows Phone and now Windows 8.&amp;nbsp; I blog about it and give talks a code camps and user groups.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://phoneflipmenu.codeplex.com/" target="_blank"&gt;PhoneFlipMenu&lt;/a&gt; by Scott Lovegrove (&lt;a href="http://www.twitter.com/scottisafool" target="_blank"&gt;@scottisafool&lt;/a&gt;) : this is officially being moved to &lt;a href="http://coding4fun.codeplex.com/" target="_blank"&gt;Coding4FunToolkit&lt;/a&gt;.&lt;br /&gt;
&lt;span lang="EN"&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/tGyzBSnI7_4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/2002688056381077190/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=2002688056381077190&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/2002688056381077190?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/2002688056381077190?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/tGyzBSnI7_4/amber-alerts-for-windows-phone-find.html" title="Amber Alerts for Windows Phone - Find Amber: I built it!" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-OoJxg94Y9sg/UFtzIhwbmQI/AAAAAAAAAU8/_9KJDXTNF2g/s72-c/promoimage.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/09/amber-alerts-for-windows-phone-find.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4ARXszeip7ImA9WhJUGEg.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-8168291498151403138</id><published>2012-09-16T12:16:00.000-04:00</published><updated>2012-09-16T23:02:24.582-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-16T23:02:24.582-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVVM" /><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="IoC" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone 7" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><title>SimpleIoc and the Messenger Service in MVVM Light</title><content type="html">&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2961115" target="_blank" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt;
&lt;br /&gt;
The SimpleIoc addition in the most recent version of MVVMLight is a great add and really simplified the ViewModelLocator across all of the platforms supported in this framework.  

&lt;br /&gt;
&lt;br /&gt;
If you are not familiar with MVVM Light or what you types of project platforms it supports please go to &lt;a href="http://mvvmlight.codeplex.com/"&gt;http://mvvmlight.codeplex.com&lt;/a&gt; or &lt;a href="http://www.galasoft.ch/mvvm"&gt;www.galasoft.ch/mvvm&lt;/a&gt; to learn more.&lt;br /&gt;
&lt;br /&gt;
However if you are using the Messenger Service in MVVM Light to perform a set of actions to do the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;User takes an action&lt;/li&gt;
&lt;li&gt;Application changes views&lt;/li&gt;
&lt;li&gt;Application send message to display or load data &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
then it is important to note that there are some differences in the way that the ViewModels are loaded in comparison to the previous version of MVVM Light.&lt;br /&gt;
&lt;br /&gt;
Lets look at the ViewModelLocator in the new version:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;
&amp;nbsp; &amp;nbsp; public class ViewModelLocator&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; static ViewModelLocator()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ServiceLocator.SetLocatorProvider(() =&amp;gt; SimpleIoc.Default);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (ViewModelBase.IsInDesignModeStatic)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleIoc.Default.Register&amp;lt;IDataService, Design.DesignDataService&amp;gt;();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleIoc.Default.Register&amp;lt;IDataService, DataService&amp;gt;();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleIoc.Default.Register&amp;lt;MainViewModel&amp;gt;(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleIoc.Default.Register&amp;lt;SecondViewModel&amp;gt;();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// Gets the Main property.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "CA1822:MarkMembersAsStatic",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Justification = "This non-static member is needed for data binding purposes.")]&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public MainViewModel Main&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ServiceLocator.Current.GetInstance&amp;lt;MainViewModel&amp;gt;();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notice that in comparison to what you may have seen in the past version, there is a single property to the ViewModel and a simple line in the constructor here to register the ViewModel with the Ioc Container and that is it.&lt;br /&gt;
&lt;br /&gt;
The property for the ViewModel is Lazy, meaning that it is loaded on demand and is a singleton.&amp;nbsp; You can create multiple instances by passing in a key upon creation, but for this example I'll keep it simple.&lt;br /&gt;
&lt;br /&gt;
Given the scenario above you will get the result of the secondary view not getting the message sent event though you have registered the message with the Message Service and have an action ready to handle it.&amp;nbsp; BUT the second time through it's fine and operates as it should.&amp;nbsp; What has happened?&lt;br /&gt;
&lt;br /&gt;
Very simply, the examples you have seen in the past very rarely ever cover situations in the real world nor do they ever go far enough to look at the overloads in the constructor etc.&lt;br /&gt;
&lt;br /&gt;
What has happened here is that the ViewModel &lt;b&gt;MUST &lt;/b&gt;exist first in order to take action on the message.&amp;nbsp;Moreover, the Messenger Service in MVVM Light does not operate like a Service Bus or Message Queue where the messages stay there until they are read.&amp;nbsp; It is more similar to Events, a fire and forget model.&lt;br /&gt;
&lt;br /&gt;
In order to alleviate said problem, simple pass in "true" to the Register call in the SimpleIoc to create the instance of the ViewModel immediately and go on with your coding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;&amp;nbsp; SimpleIoc.Default.Register&amp;lt;SecondViewModel&amp;gt;(true);

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous version of MVVM Light created all of the ViewModels immediately, although not too much of an issue; there are instances where a user may not go to every view in the application and the idea here is to only load what is needed and keep the View and ViewModels loaded in memory when necessary.&lt;br /&gt;
&lt;br /&gt;
If you have questions please comment and/or contact me on twitter &lt;a href="http://www.twitter.com/spboyer" target="_blank"&gt;@spboyer&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/uPgyyR6LuFQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/8168291498151403138/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=8168291498151403138&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/8168291498151403138?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/8168291498151403138?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/uPgyyR6LuFQ/simpleioc-and-messenger-service-in-mvvm.html" title="SimpleIoc and the Messenger Service in MVVM Light" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/09/simpleioc-and-messenger-service-in-mvvm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMER38zfyp7ImA9WhJUEkQ.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-4115972848861202646</id><published>2012-09-10T11:20:00.000-04:00</published><updated>2012-09-10T11:20:06.187-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-10T11:20:06.187-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Survey" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><title>What are you looking for as a Mobile Developer in a Blog Post?</title><content type="html">The mobile development industry has probably the greatest up swing in comparison to the other development paths over the last 5 years.&amp;nbsp; What I mean is that many more developers are focusing on either getting into mobile development (as in native apps), making sure their web apps are responsive and scale or adjust for a mobile viewport (html5) etc.&lt;br /&gt;
&lt;br /&gt;
So, for those developers who blog like myself I am curious what you are looking for when reading our stuff...&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.surveymonkey.com/s/YVC66KM" target="_blank"&gt;Check out this survey&lt;/a&gt; and let me know what you want to get out of article related to mobile development.&lt;br /&gt;
&lt;br /&gt;
Thanks.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/x9Zwgd6Y-F4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/4115972848861202646/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=4115972848861202646&amp;isPopup=true" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/4115972848861202646?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/4115972848861202646?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/x9Zwgd6Y-F4/what-are-you-looking-for-as-mobile.html" title="What are you looking for as a Mobile Developer in a Blog Post?" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/09/what-are-you-looking-for-as-mobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8GRXg8fCp7ImA9WhJVGUs.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-9199903756283540940</id><published>2012-09-06T16:53:00.000-04:00</published><updated>2012-09-06T16:53:44.674-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-06T16:53:44.674-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><category scheme="http://www.blogger.com/atom/ns#" term="WebAPI" /><category scheme="http://www.blogger.com/atom/ns#" term="Code Camp" /><title>Southwest Florida Code Camp</title><content type="html">&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I will be giving two talks this Saturday at &lt;a href="http://codecamp.swfldev.net/Home/Index"&gt;Southwest 
Florida Code Camp&lt;/a&gt;. If you are interested in hearing about ASP.NET WebAPI and/or MVVM Light, stop by either of my talks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;8:30 - 9:40 AM (Room 128) -&amp;nbsp;&lt;b&gt;Introduction to ASP.NET WebAPI&lt;/b&gt; - Why you should be using it!&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;9:40 - 10:40 AM
&amp;nbsp;(Room 128)&amp;nbsp;&amp;nbsp;-&amp;nbsp;&lt;b&gt;Building Windows Phone Apps w/ MVVM Light&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hope to see you there, should be an exciting event!&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/x3I6Zm1Q8Fo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/9199903756283540940/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=9199903756283540940&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/9199903756283540940?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/9199903756283540940?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/x3I6Zm1Q8Fo/southwest-florida-code-camp.html" title="Southwest Florida Code Camp" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/09/southwest-florida-code-camp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAARnkyeCp7ImA9WhJUE08.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-345935854775471194</id><published>2012-08-31T11:29:00.001-04:00</published><updated>2012-09-10T21:25:47.790-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-10T21:25:47.790-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Fiddler" /><title>Looking at Windows Azure Mobile Services with Fiddler</title><content type="html">&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2961115" target="_blank" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt;
&lt;br /&gt;
As usual throughout the day I have MetroTwit open and toast are constantly popping up here and there and I glance over to see what’s what.&amp;nbsp; Then I see. from &lt;a href="http://twitter.com/WindowsAzure" target="_blank"&gt;@WindowsAzure&lt;/a&gt; this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://lh6.ggpht.com/-LCYStjzKq5A/UEDKq31ugtI/AAAAAAAAAQI/rTHvXtb82tY/s1600-h/image%25255B3%25255D.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="image" border="0" height="140" src="http://lh5.ggpht.com/-5WR0Dd0mo_8/UEDKrC6sTuI/AAAAAAAAAQQ/GhV_E--4CrE/image_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="290" /&gt;&lt;/a&gt;&lt;/div&gt;
And all work stopped for me to check this out.&amp;nbsp; Other than Windows Phone and Windows 8; I really love the new ASP.NET WebAPI and REST Services capabilities it has made so easy (watch for my next post on that), and seeing this I was thinking – awesome but only for Windows 8???&amp;nbsp; So…I immediately responded and got a response:&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/-xfNOm8C9D4A/UEDKrn_oKxI/AAAAAAAAAQY/YHqJy_oL7YI/s1600-h/twitter_conversation%25255B3%25255D.png"&gt;&lt;img alt="twitter_conversation" border="0" height="315" src="http://lh6.ggpht.com/-R4_IrxpjRIA/UEDKsMNhR-I/AAAAAAAAAQg/T98JNPHYxhQ/twitter_conversation_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="twitter_conversation" width="288" /&gt;&lt;/a&gt;&lt;br /&gt;
Spending the last day or so checking into the walk through for Windows 8, check them out &lt;a href="https://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started/" target="_blank"&gt;here&lt;/a&gt;. I went through the initial walkthrough for a Windows 8 application, and during this I wanted to see the data that was going back and fourth so I opened my favorite tool Fiddler to see the HTTP calls, which then lead me to see that I could easily use these services for Windows Phone 7 now!&lt;br /&gt;
Here is a quick walk through a how to get setup.&lt;br /&gt;
&lt;h3&gt;
Getting Started&lt;/h3&gt;
In order to start using the preview of the Mobile Services in Azure, you need to have a Windows Azure account or you can sign up for a &lt;a href="http://www.windowsazure.com/en-us/pricing/free-trial/?WT.mc_id=A73D945CB" target="_blank"&gt;trial account&lt;/a&gt;. After you login, go to your Account Center and select the Preview Features from the top menu.&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-mi6vAyCc9mo/UEDKsYmP7SI/AAAAAAAAAQo/R2pmRjowwew/s1600-h/image%25255B8%25255D.png"&gt;&lt;img alt="image" border="0" height="418" src="http://lh6.ggpht.com/-m3TLdLwRukE/UEDKs3v2Y7I/AAAAAAAAAQw/uwiC3Pvd2sM/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="580" /&gt;&lt;/a&gt;&lt;br /&gt;
I have already signed up for the Mobile Services, so you will see a “try it now” button and go ahead click that to get started. Once you get transferred to the, unfortunately still called the “Preview” portal, you’ll notice on the left menu that there is a new &lt;strong&gt;Mobile Services &lt;/strong&gt;section.&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/-w9S2neZKOU0/UEDKtX8pjnI/AAAAAAAAAQ4/h4jWsXWGzBw/s1600-h/image%25255B12%25255D.png"&gt;&lt;img alt="image" border="0" height="367" src="http://lh4.ggpht.com/-pd8zlUYN3PY/UEDKt38IMWI/AAAAAAAAARA/zGl2O-GQBmY/image_thumb%25255B6%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="196" /&gt;&lt;/a&gt;&lt;br /&gt;
Next on the bottom portion of the management portal you will see the &lt;strong&gt;+&lt;/strong&gt;, which you simply click to add the new Mobile Service.&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-7LnC0ptxMAE/UEDKunx-M6I/AAAAAAAAARI/O0XwDziUaLI/s1600-h/image%25255B16%25255D.png"&gt;&lt;img alt="image" border="0" height="142" src="http://lh3.ggpht.com/-x1C1w9nZ0bU/UEDKu4wbDXI/AAAAAAAAARQ/bcLhjKyErMc/image_thumb%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="575" /&gt;&lt;/a&gt;&lt;br /&gt;
Choose create and the New Mobile Service dialog is presented; enter the name of your new mobile service, select or create a new SQL Server Database, and finally select the Region for your instance.&amp;nbsp; There are some other options in the “Configure advanced database settings” but we’ll not do that now for simplicity sake.&lt;br /&gt;
*** As a note, if you create a new database; remember the credentials.&amp;nbsp; You will need this information if you choose to add another database to the server later.&lt;br /&gt;
Upon completion of the wizard, the management portal will tell you its creating…, the poof its there. I named mine “testmobileservice”.&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-20zcXdKrGtM/UEDKvLuhrmI/AAAAAAAAARY/0vf4iwZOlQY/s1600-h/image%25255B20%25255D.png"&gt;&lt;img alt="image" border="0" height="98" src="http://lh5.ggpht.com/-cktK68TGW6k/UEDKvQT7omI/AAAAAAAAARg/joWwTjOqsCg/image_thumb%25255B10%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="583" /&gt;&lt;/a&gt;&lt;br /&gt;
if you click on the URL, you’ll be presented with the following page…&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-OPzv3qWXNnU/UEDKvlKPT0I/AAAAAAAAARo/BM95fWSAKKw/s1600-h/testpage%25255B3%25255D.jpg"&gt;&lt;img alt="testpage" border="0" height="337" src="http://lh6.ggpht.com/-IiGw_llVS_4/UEDKwMK15mI/AAAAAAAAARw/FO2GuJZLvNo/testpage_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="testpage" width="588" /&gt;&lt;/a&gt;&lt;br /&gt;
These are just services, or a service endpoint. The closest thing I can really relate this to is in SQL 2005 we were given the ability to expose certain objects as web service endpoints, it was a neat feature but not widely used and still available to my knowledge. Sorry I digress, let’s get back to the management portal and create a Todo table. &lt;br /&gt;
If you click on the Mobile Service name you see the following screen, and although the initial announcement was for Windows 8 support and the walkthroughs etc. show that, let’s just create a table and I can get to Fiddler and show you how the data looks to and from the REST Service.&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/-P-u6EVq8aWg/UEDKwpQVtUI/AAAAAAAAAR4/pwcPaJN77bk/s1600-h/image%25255B28%25255D.png"&gt;&lt;img alt="image" border="0" height="285" src="http://lh3.ggpht.com/-4xaueRFPDSs/UEDKwwgvYeI/AAAAAAAAASA/IT1P5Sl989E/image_thumb%25255B14%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="485" /&gt;&lt;/a&gt;&lt;br /&gt;
Click over the the DATA tab, then the &lt;strong&gt;+&lt;/strong&gt; on the bottom the add the table. Name the table &lt;strong&gt;ToDoItem&lt;/strong&gt; and click the check to create the new table.&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-pkn4SKuDTHg/UEDKxRropBI/AAAAAAAAASI/MY391RFPaPY/s1600-h/image%25255B24%25255D.png"&gt;&lt;img alt="image" border="0" height="349" src="http://lh5.ggpht.com/-tpl2yJHopbQ/UEDKxzAtg7I/AAAAAAAAASQ/dQF08u8V6xk/image_thumb%25255B12%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="398" /&gt;&lt;/a&gt;&lt;br /&gt;
Pretty simple right?&amp;nbsp; Just created a new table in a database by simply naming a table…DBA’s are freaking out around the world right now.&lt;br /&gt;
Ok, so go back to the DASHBOARD and find the MANAGE KEYS icon at the bottom, and we are going to add/create a new Application Key for the Mobile Service.&amp;nbsp; &lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-eenpeEKhU28/UEDNWUmY0QI/AAAAAAAAASo/FwYX1WG19MU/s1600-h/mananagekeyyes%25255B2%25255D.jpg"&gt;&lt;img alt="mananagekeyyes" border="0" height="80" src="http://lh5.ggpht.com/-RqpfXnxL3FM/UEDNWt8aa3I/AAAAAAAAASw/nvkv2utj2jE/mananagekeyyes_thumb.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="mananagekeyyes" width="168" /&gt;&lt;/a&gt;&lt;br /&gt;
Now there are still some things under the covers here that I am still finding the answers too, but my first guess is this is some iteration/flavor of oAuth. But, go ahead and copy down the Application Key that is generated for you.&amp;nbsp; At this point, there is only one key and if you regenerate post deployment then your app will break so be careful with that little regenerate button of power.&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-TsIDRKYIssc/UEDKyRNvQWI/AAAAAAAAASY/PlY4wR-GYAs/s1600-h/image%25255B33%25255D.png"&gt;&lt;img alt="image" border="0" height="284" src="http://lh3.ggpht.com/-RnHO6xgWzhQ/UEDKywa7I_I/AAAAAAAAASg/aeOegeY0vv0/image_thumb%25255B17%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="392" /&gt;&lt;/a&gt;&lt;br /&gt;
Click the check mark and you are ready to start.&lt;br /&gt;
&lt;h3&gt;
Interacting with the Endpoint via REST&lt;/h3&gt;
Using Fiddler to see your HTTP calls going to and from RESTful endpoint is great, BUT there is also a little tab in there that most developers don’t realize is there.&amp;nbsp; It’s the &lt;strong&gt;Composer&lt;/strong&gt; tab.&amp;nbsp; You can either originate a call in there OR drag a previous call from the left side to the composer tab and make changes to it and hit the execute button.&amp;nbsp; Great feature!&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-LuDLr1CCgiY/UEDTazLGqsI/AAAAAAAAATA/jeGGVnX5PnQ/s1600-h/image%25255B38%25255D.png"&gt;&lt;img alt="image" border="0" height="360" src="http://lh5.ggpht.com/-e2q63f_GiIg/UEDTdgDOWRI/AAAAAAAAATI/v8F_YrO6Xus/image_thumb%25255B20%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="581" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
What are my EndPoints?&lt;/h3&gt;
Interesting how this works… &lt;br /&gt;
The endpoints are formatted as &lt;a href="https://[your%20new%20service%20address/"&gt;https://[your new service address&lt;/a&gt;]/tables/[table name]. So in my case, the RESTful endpoint for the TodoItem table is: &lt;a href="https://testmobileservice.azure-mobile.net/tables/TodoItem" title="https://testmobileservice.azure-mobile.net/tables/TodoItem"&gt;https://testmobileservice.azure-mobile.net/tables/TodoItem&lt;/a&gt;. I have inserted a single record already so we can construct a GET call in Fiddler to see what is returned.&lt;br /&gt;
Do this by again, going to the composer tab and inserting the url for the endpoint in the location box and in the Request Headers you will need to add the following:&lt;br /&gt;
&lt;blockquote&gt;
User-Agent: Fiddler     &lt;br /&gt;Host: testmobileservice.azure-mobile.net      &lt;br /&gt;Accept: application/json      &lt;br /&gt;X-ZUMO-APPLICATION: &lt;span style="background-color: yellow;"&gt;[YOUR APPLICATION KEY HERE]&lt;/span&gt;&lt;/blockquote&gt;
The X-ZUMO-APPLICATION header key/value pair is the secret sauce, I am sure that when the official SDK for these services is released for Windows Phone; there will be some better way to put this all together or maybe not, cause let’s be honest REST is EASY!&lt;br /&gt;
So Click the Execute button and we get a nice JSON result returned&lt;br /&gt;
&lt;blockquote&gt;
[{"id":1,"ToDoText":"Text1","ToDoId":1}]&lt;/blockquote&gt;
But wait, can we get XML too? No, it does not appear so.&amp;nbsp; Trying to change the Accept header to “&lt;strong&gt;Accept:application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&lt;/strong&gt;” to get xml does not work. Also it is important note that if the Accept header is not sent, JSON is also returned.&amp;nbsp; &lt;br /&gt;
It is my assumption that, as you can do in ASP.NET Web API, the services are doing something like &lt;br /&gt;
&lt;blockquote&gt;
HttpConfig.Formatters.Remove(HttpConfig.Formatters.XmlFormatter);&lt;/blockquote&gt;
in order to force JSON, this is a smaller payload and is the more preferred format for REST based services.&lt;br /&gt;
&lt;h3&gt;
Inserting /&lt;strike&gt; Updating&lt;/strike&gt; Data&lt;/h3&gt;
Again remember that these are simply REST based services, so you can just do the same as above and instead of calling with a GET, do it with a&lt;strong&gt; &lt;strike&gt;PUT&lt;/strike&gt; (405 Method Not Allowed)&lt;/strong&gt; or POST and pass a payload of type ToDoItem.&amp;nbsp; Here is an example of an insert.&lt;br /&gt;
Change the dropdown in the composer tab of Fiddler from a GET to a POST (INSERT) and in the Request Body add the following text:&lt;br /&gt;
&lt;blockquote&gt;
{&amp;nbsp; "ToDoText":"Text1" , "ToDoId":2}&lt;/blockquote&gt;
Click the execute button and on the left window you should get a Result of 201 and the response sends back the newly created item in JSON.&lt;br /&gt;
&lt;blockquote&gt;
{"ToDoText":"Text1","ToDoId":2,"id":2}&lt;/blockquote&gt;
&lt;br /&gt;
&lt;strong&gt;Methods Allowed – GET, POST, DELETE&lt;/strong&gt;&lt;br /&gt;
&lt;h3&gt;
Dynamic Tables&lt;/h3&gt;
So what’s really behind this?&amp;nbsp; Is it SQL Server, a flavor of NoSQL running inside SQL? Is this table storage with some magic?&amp;nbsp; Let’s call a POST method and add some new fields and see what happens here.&lt;br /&gt;
Here is the new JSON payload:&lt;br /&gt;
&lt;blockquote&gt;
{&amp;nbsp; &lt;br /&gt;&lt;span style="background-color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ToDoText":"Text1" ,        &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ToDoId":3,&lt;/span&gt;       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ToDoWhen": "12/01/2012",      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ToDoByWho" : "Shayne Boyer"      &lt;br /&gt;}&lt;/blockquote&gt;
The highlighted rows here we already had in our table before, but I am passing in some new data fields. And it works, very cool…&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/-BFiC1Z5I6hc/UEDYBw3Pl-I/AAAAAAAAATc/hWu18CNE7yw/s1600-h/image%25255B43%25255D.png"&gt;&lt;img alt="image" border="0" height="510" src="http://lh3.ggpht.com/-ZcwtPqARAT0/UEDYCRBJajI/AAAAAAAAATk/HMcmHGIX8xU/image_thumb%25255B23%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="571" /&gt;&lt;/a&gt;&lt;br /&gt;
What does a get return now that we have the new fields in one but not in the other?&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-Y9n_eQzlrPs/UEDYCzCWENI/AAAAAAAAATs/wsS3xD3gteU/s1600-h/image%25255B48%25255D.png"&gt;&lt;img alt="image" border="0" height="320" src="http://lh5.ggpht.com/-lJluBM1rg-c/UEDYDEo02ZI/AAAAAAAAAT0/xyOld3xetAU/image_thumb%25255B26%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="570" /&gt;&lt;/a&gt;&lt;br /&gt;
I like it! Data Model changes, NoSQL style in Runtime.&amp;nbsp; You see that we now get the fields in the previous records available to us for an update later and they are automatically set to NULL.&amp;nbsp; Now one thing to note that there is no ability to remove a field. You would most like have to delete the table from Azure and start clean.&amp;nbsp; &lt;br /&gt;
So there it is, if you can hit REST with any of you coding skills you can use this.&amp;nbsp; Doesn’t necessarily have to be Windows 8.&amp;nbsp; It can be Windows Phone, iOS, Android or Raspberry Pi for that matter.&amp;nbsp; It can even be a web page.&amp;nbsp; Look forward to what more is to come from this and Azure in the future!&lt;br /&gt;
Let me know if you have any questions, please comment.&amp;nbsp; &lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/xIIWy2pO3rM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/345935854775471194/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=345935854775471194&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/345935854775471194?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/345935854775471194?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/xIIWy2pO3rM/looking-at-windows-azure-mobile.html" title="Looking at Windows Azure Mobile Services with Fiddler" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-5WR0Dd0mo_8/UEDKrC6sTuI/AAAAAAAAAQQ/GhV_E--4CrE/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/08/looking-at-windows-azure-mobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMMRn85eip7ImA9WhJVEUQ.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-6732330818317208867</id><published>2012-08-26T11:58:00.001-04:00</published><updated>2012-08-28T17:48:07.122-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-28T17:48:07.122-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVVM" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="Win8nl" /><category scheme="http://www.blogger.com/atom/ns#" term="hot" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="MVVM Light" /><title>Getting Started w/ Windows 8, MVVM Light and EventToCommand</title><content type="html">Now that Windows 8 and Visual Studio are in RTM I wanted to put together a quick entry for those Windows Phone developers making the transition to Windows 8 development with their MVVM Light skills.&lt;br /&gt;
&lt;br /&gt;
Laurent Bugnion, is the creator of the MVVM Light toolkit and I, as well as many others, have been using this for Windows Phone development for a while now. &amp;nbsp;I am porting on of my applications to Windows 8 and wanted to take the knowledge of this toolkit to the new platform hoping that there were either some new enhancements and/or not many changes so that I could just go. &amp;nbsp;Well that was the deal.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
MVVM Light Toolkit for Windows 8 RTM&lt;/h3&gt;
&lt;div&gt;
The latest installer for the toolkit,&amp;nbsp;"MVVM Light Toolkit V4 RTM",&amp;nbsp;is available from &lt;a href="http://mvvmlight.codeplex.com/releases/view/90815" target="_blank"&gt;CodePlex&lt;/a&gt;. According to Laurent's blog it is a side by side install with previous versions:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
MVVM Light for Windows 8 is a side-by-side install with the standard MVVM Light V3 or V4 beta. Simply download and run the MSI from Codeplex. As usual, the last step of the installation performs a “/setup” of Visual Studio to actualize the project template cache, and unfortunately this last step can last very long. Please be patient and don’t cancel before the end! The installation process is very similar to that described on the MVVM Light installation page (except that there is no NuGet installer for VS11 yet).&lt;/blockquote&gt;
The following &lt;a href="http://geekswithblogs.net/lbugnion/archive/2011/10/03/mvvm-light-toolkit-for-windows-8-preview-mvvmlight-win8.aspx" target="_blank"&gt;link&lt;/a&gt; states the summary of the ported components from the previous versions, but I'll paraphrase here:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;ObservableObject&lt;/b&gt; including all ways to raise PropertyChanged.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ViewModelBase&lt;/b&gt; including all ways to raise PropertyChanged.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Messenger&lt;/b&gt; including all message types except DialogMessage (see below).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RelayCommand&lt;/b&gt; with and without parameter.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SimpleIoc&lt;/b&gt; which might well be the very first IOC container working on Windows 8.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Man do I love the &lt;b&gt;SimpleIoc&lt;/b&gt;! Makes adding the new views soooo much easier than in the Windows Phone version.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There are a few missing components, one of which is &lt;b&gt;EventToCommand&lt;/b&gt;, however thanks to a new friend I have made,&amp;nbsp;Joost van Schaik (&lt;a href="http://dotnetbyexample.blogspot.com/" target="_blank"&gt;see his blog here&lt;/a&gt;),&amp;nbsp;&amp;nbsp;there is a solution to that and it's available as a nuget package with some additional behavior features I encourage you to look into but I'll at least cover the EventToCommand features he offers.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Getting Started&lt;/h3&gt;
&lt;h4&gt;
MVVM Light Project Template&lt;/h4&gt;
&lt;div&gt;
After installing the toolkit you will see that there is a new project template available in the Visual Studio 2012 New Project Dialog&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AgMUUbk2XrA/UDZicjWfVVI/AAAAAAAAAOw/0OOco6PnEmA/s1600/projectdialog.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="441" src="http://1.bp.blogspot.com/-AgMUUbk2XrA/UDZicjWfVVI/AAAAAAAAAOw/0OOco6PnEmA/s640/projectdialog.PNG" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Noted as "Windows Metro Style"&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Name the project "MvvmLight_Walkthrough" and click Ok.&lt;br /&gt;
&lt;br /&gt;
The project template is simple, but add some new features that were not in previous versions of the toolkit. In the Solution Explorer you'll notice a &lt;b&gt;Design&lt;/b&gt; folder with a class called &lt;b&gt;DesignDataService&lt;/b&gt;. This is a great feature; the default template putting in a design data class repository.&lt;br /&gt;
&lt;br /&gt;
Second, as in the past version of the toolkit there is the normal &lt;b&gt;ViewModelLocator &lt;/b&gt;class, but in this version there is new feature - &lt;b&gt;SimpleIoc&lt;/b&gt;, a container class which if you are like me had everything else in a container for DI with the exception of the ViewModels unless you rolled your own.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;public class ViewModelLocator

&amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; static ViewModelLocator()

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ServiceLocator.SetLocatorProvider(() =&amp;gt; SimpleIoc.Default);



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (ViewModelBase.IsInDesignModeStatic)

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleIoc.Default.Register&amp;lt;IDataService, Design.DesignDataService&amp;gt;();

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleIoc.Default.Register&amp;lt;IDataService, DataService&amp;gt;();

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleIoc.Default.Register&amp;lt;MainViewModel&amp;gt;();

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;summary&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// Gets the Main property.

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;/summary&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "CA1822:MarkMembersAsStatic",

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Justification = "This non-static member is needed for data binding purposes.")]

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public MainViewModel Main

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ServiceLocator.Current.GetInstance&amp;lt;MainViewModel&amp;gt;();

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;summary&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// Cleans up all the resources.

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;/summary&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static void Cleanup()

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&lt;/pre&gt;
&lt;br /&gt;
And last, in the &lt;b&gt;Model &lt;/b&gt;folder, Laurent has been kind enough to also include an &lt;b&gt;IDataService &lt;/b&gt;interface and &lt;b&gt;DataService &lt;/b&gt;class to show in the example how to use the real time and design time data models. These are all wired up in the &lt;b&gt;ViewModelLocator &lt;/b&gt;as show above.&lt;br /&gt;
&lt;br /&gt;
Now if we simply run the application you should get the following to make sure it's all good to go!&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-FPrVVzplXOI/UDZ60jEvmgI/AAAAAAAAAPA/frutKpIvPiM/s1600/test+1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="246" src="http://2.bp.blogspot.com/-FPrVVzplXOI/UDZ60jEvmgI/AAAAAAAAAPA/frutKpIvPiM/s400/test+1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Running in the Simulator&lt;br /&gt;
&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
As you may or may not notice, this is not to dis-similar from the previous project template test from the previous version.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
MainViewModel&lt;/h4&gt;
The binding of the ViewModel to the View is the same as it was in the previous model and there are no noticeable changes to the ViewModelTemplate. &amp;nbsp;On thing to note is that all options for RaisePropertyChanged are included in this release where as in the previous version you would have to get the "Pre-release" version from nuget in order to use them. For example, the built in template puts in the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;/// &amp;lt;summary&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// The &amp;lt;see cref="WelcomeTitle" /&amp;gt; property's name.

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;/summary&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public const string WelcomeTitlePropertyName = "WelcomeTitle";



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private string _welcomeTitle = string.Empty;



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;summary&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// Gets the WelcomeTitle property.

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// Changes to that property's value raise the PropertyChanged event.

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /// &amp;lt;/summary&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string WelcomeTitle

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return _welcomeTitle;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (_welcomeTitle == value)

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _welcomeTitle = value;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RaisePropertyChanged(WelcomeTitlePropertyName);

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&lt;/pre&gt;
Noticeably where &lt;b&gt;RaisePropertyChanged &lt;/b&gt;is using a string value, one of the options now available in the release is to remove the &amp;nbsp;&lt;b&gt;WelcomeTitlePropertyName &lt;/b&gt;variable and then change&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;RaisePropertyChanged(WelcomeTitlePropertyName);&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
to
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;RaisePropertyChanged(() =&amp;gt;&amp;nbsp;WelcomeTitle);&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The other nice benefit here is that the template has also put in the wiring for injecting the IDataService into the constructor for the ViewModel. &amp;nbsp;Some of these little thing we developers either take for granted that someone has gone through the trouble of putting the plumbing in there or call it the boring work that has to be done before we get the real work done. &amp;nbsp;You can easily put other dependencies in the constructor here and then just add the mappings in the constructor of the ViewModelLocator by simply registering the types with the SimpleIoc container.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;public MainViewModel(IDataService dataService)

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _dataService = dataService;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _dataService.GetData(

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (item, error) =&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (error != null)

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Report error here

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WelcomeTitle = item.Title;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Now What?.&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
A simple example here is to add some content to the MainPage and see how we navigate to a second view. &amp;nbsp;I won't bore you with the details of adding in the controls to the page but here's what the page should look like when you're done.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hrp5PMvm5nQ/UDaCqHSTddI/AAAAAAAAAPQ/1n2u7lzJEC8/s1600/post+controls.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="246" src="http://3.bp.blogspot.com/-hrp5PMvm5nQ/UDaCqHSTddI/AAAAAAAAAPQ/1n2u7lzJEC8/s400/post+controls.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Added a little MvvmLight color for fun&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;
EventToCommand&lt;/h4&gt;
&lt;div&gt;
Now lets just add a prompt to the submit button. But wait, what where's my EventToCommand??? &amp;nbsp;Sure with the button there is a Command property and you can set that to an ICommand in the ViewModel and everything is happy. &amp;nbsp;But, there are plenty of controls, both baked into WinRT and third party controls that do not have that property. So, for simplicity sake I'm using this control and will get the EventToCommand back in your toolbox, or your Joostbox I should say.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Off to Nuget!&lt;/h4&gt;
&lt;div&gt;
I had this issue where I was looking for the behaviors when porting an app I was working on and could find the dang behaviors in Blend so I went to nuget and did some searching and there wasn't anything that was shaking my fancy. Then I came across&amp;nbsp;Joost van Schaik (&lt;a href="http://dotnetbyexample.blogspot.com/" target="_blank"&gt;see his blog here&lt;/a&gt;) and his WinRTBehaviors library and just so happens I hit him in the middle of uploading the nuget package for Win8nl.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now this is a package of Behaviors that was originally a Windows Phone 7 library and It's now growing in its own direction and now contains some Windows 8 specific stuff (according to nuget). So let's get it installed real quick.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Install the package by typing the following into the Nuget Package Manager Console or searching for Win8nl in the package explorer.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;code&gt;PM&amp;gt; Install-Package Win8nl&lt;/code&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It will add the library and the necessary dependencies to the project, which include WinRTBehaviors. For more information on the other behaviors there check out&amp;nbsp;&lt;a href="http://dotnetbyexample.blogspot.com/" target="_blank"&gt;Joost's blog&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Adding EventToCommand&amp;nbsp;&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
First, lets add the references to the XAML page:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="brush: xml"&gt;xmlns:WinRtBehaviors="using:WinRtBehaviors"

xmlns:Win8nl_Behavior="using:Win8nl.Behaviors"
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Next, locate the button control and add the following inside the button XAML:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;Button x:Name="btnSubmit" Content="Submit" &amp;nbsp; &amp;nbsp;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FontFamily="{StaticResource MyFont}" FontSize="{StaticResource MyFontSize}"

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HorizontalAlignment="Center" Margin="0,20,0,0"&amp;gt;



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;WinRtBehaviors:Interaction.Behaviors&amp;gt;



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;Win8nl_Behavior:EventToCommandBehavior Event="Tapped" &amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Command="AreYouSureCommand" &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CommandParameter="{Binding MyName}"/&amp;gt;



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/WinRtBehaviors:Interaction.Behaviors&amp;gt;



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/Button&amp;gt;

&lt;/pre&gt;
&lt;br /&gt;
Now, open the MainViewModel.cs code and we can add the command for the new behavior here when the button is tapped.&lt;br /&gt;
&lt;br /&gt;
As usual the Command property is expecting an ICommand, add the following code to the MainViewModel and return a new instance of RelayCommand to execute whatever behavior you wish. &amp;nbsp;In this example, I'm just doing a little popup to show whatever the user input into the myName TextBox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;public ICommand AreYouSureCommand

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new RelayCommand&amp;lt;string&amp;gt;((p) =&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var msg = new MessageDialog(string.Format("Hi there {0}", p));

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; msg.ShowAsync();



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&lt;/pre&gt;
&lt;br /&gt;
See the result here:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-PknzlFX_PtY/UDo0Pb6wCWI/AAAAAAAAAPg/eu57Jqp1tmA/s1600/popup.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="395" src="http://1.bp.blogspot.com/-PknzlFX_PtY/UDo0Pb6wCWI/AAAAAAAAAPg/eu57Jqp1tmA/s640/popup.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
And that is EventToCommand for MVVMlight for Windows 8!&lt;br /&gt;
&lt;br /&gt;
There are many more behaviors in the WinRTBehaviors library that you should take advantage of, for me the most notable ones being&amp;nbsp;FlipViewPanoramaBehavior and NavigationService being ported to Windows 8. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/28uiBMQarkM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/6732330818317208867/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=6732330818317208867&amp;isPopup=true" title="18 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/6732330818317208867?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/6732330818317208867?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/28uiBMQarkM/getting-started-w-windows-8-mvvm-light.html" title="Getting Started w/ Windows 8, MVVM Light and EventToCommand" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-AgMUUbk2XrA/UDZicjWfVVI/AAAAAAAAAOw/0OOco6PnEmA/s72-c/projectdialog.PNG" height="72" width="72" /><thr:total>18</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/08/getting-started-w-windows-8-mvvm-light.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4HQX45fSp7ImA9WhJVEUQ.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-8779059455970660231</id><published>2012-08-23T10:07:00.001-04:00</published><updated>2012-08-28T17:55:30.025-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-28T17:55:30.025-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="nerds" /><category scheme="http://www.blogger.com/atom/ns#" term="hot" /><category scheme="http://www.blogger.com/atom/ns#" term="geeks" /><category scheme="http://www.blogger.com/atom/ns#" term="off time" /><title>I'm a nerd, but I might scare your kids</title><content type="html">&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://nukethefridge.com/wp-content/uploads/2011/01/revenge-of-the-nerds1.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto; text-align: right;"&gt;&lt;img border="0" height="127" src="http://nukethefridge.com/wp-content/uploads/2011/01/revenge-of-the-nerds1.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Revenge of the Nerds&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Remember these guys? This is what the&amp;nbsp;stereotypical&amp;nbsp;view was/is of what a "nerd" looks like. Developers today are a much different class of people for sure. &amp;nbsp;I have met some pretty cool people over the past year that certainly do not fit the bill. Fishing enthusiast, cigar afficianados, gear heads and others who love to grab a guitar and rock out.&lt;br /&gt;
&lt;br /&gt;
Of course, I do run into what I think nowadays some would say, web developers, fit into the category of "gamers". The plain has certainly changed from what your parents might consider a nerd.&lt;br /&gt;
&lt;br /&gt;
A lot of developers have the same story; grew up messing around with a Commodore 64 or something of the sort, tinkered with this or that technology, studied Computer Science in college and then moved into the professional world. And if you read my &lt;a href="http://blog.tattoocoder.com/p/about-me.html" target="_blank"&gt;About Me&lt;/a&gt; page, my story is not that different.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-ByGH9AgA88U/UCkHU9Kk1TI/AAAAAAAAAM0/t-RezSp5XDo/s1600/115ec9b1-2b7b-4540-9b7c-c8e6539891cd.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-ByGH9AgA88U/UCkHU9Kk1TI/AAAAAAAAAM0/t-RezSp5XDo/s200/115ec9b1-2b7b-4540-9b7c-c8e6539891cd.jpg" width="199" /&gt;&lt;/a&gt;It's interesting to talk to the other developers in the community and see what they do in their "off" time. Me, enjoy anytime with my wife and a glass of wine, hop on the Harley go for a ride, spend time with the kiddies at the pool, build some legos, visit the guys at the tattoo shop and get some ink, and most recently took a bunch of teenagers to the Flo-rida concert at the Microsoft Store grand opening in Orlando. Not what some would expect from a guy who spends a good portion of his life buried in code.&lt;br /&gt;
&lt;br /&gt;
I'm not what you think of when it comes to a developer. &amp;nbsp;At my first meeting for the Orlando Windows Phone User Group I was taking a picture with the guys who authored "&lt;a href="http://www.amazon.com/gp/product/0672335395/ref=as_li_ss_il?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0672335395&amp;amp;linkCode=as2&amp;amp;tag=tattoocoder-20" target="_blank"&gt;Sam's Teach Yourself Windows Phone Application Development in 24 hours&lt;/a&gt;" and &lt;a href="http://devfish.net/" target="_blank"&gt;Joe Healy&lt;/a&gt; said "&lt;b&gt;...make sure the tats show!&lt;/b&gt;"&lt;br /&gt;
&lt;br /&gt;
When people see me, they probably would never guess what I do for a living. That I love gadgets, read technical blogs, spend hours learning new technology, or stay up at night wondering what's the next Windows Phone or Windows 8 app I'm gonna try.&lt;br /&gt;
&lt;br /&gt;
The best part for me...my kids think what I do is cool! My wife supports me in everything I do and I couldn't ask for more. &amp;nbsp;I have a good thing, I love what I do and they love me.&lt;br /&gt;
&lt;br /&gt;
So yes I'm a Nerd...but I might scare your kids.&lt;br /&gt;
&lt;br /&gt;
What do you do in your off time? &amp;nbsp;I'm curious...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/Kk2-XbH6llU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/8779059455970660231/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=8779059455970660231&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/8779059455970660231?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/8779059455970660231?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/Kk2-XbH6llU/im-nerd-but-i-might-scare-your-kids.html" title="I'm a nerd, but I might scare your kids" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-ByGH9AgA88U/UCkHU9Kk1TI/AAAAAAAAAM0/t-RezSp5XDo/s72-c/115ec9b1-2b7b-4540-9b7c-c8e6539891cd.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/08/im-nerd-but-i-might-scare-your-kids.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4EQHY6eCp7ImA9WhJVEk0.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-4823487086433075230</id><published>2012-08-16T11:49:00.000-04:00</published><updated>2012-08-28T21:48:21.810-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-28T21:48:21.810-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="Boot Camp" /><title>Upgrading from Windows 7 to Windows 8 RTM - Bootcamp</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-zRVMbXe6FYY/UD10xvxRTBI/AAAAAAAAAPw/XK6qtKMeazs/s1600/windows-8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-zRVMbXe6FYY/UD10xvxRTBI/AAAAAAAAAPw/XK6qtKMeazs/s1600/windows-8.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
So I spent last night leaping into the upgrade process on my MacBook Pro from Windows 7 to Windows 8 Pro.&amp;nbsp; Now, some may call it leaping off, ridicule me for being a .NET guy and having a&amp;nbsp;Mac, but that's a whole other conversation.&amp;nbsp; I wanted&amp;nbsp;to just point&amp;nbsp;out a few tidbits about the experience.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Things to have on hand&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;BootCamp CD&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;find it, burn it whatever&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;USB Mouse&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;if you are using a wireless, Bluetooth mouse your drivers will or may get jacked up when you make the upgrade cause mine did.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Time!&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Overall upgrade , depending on what you have installed etc., could take a couple hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;h3&gt;
Upgrading in place&lt;/h3&gt;
This was a pretty standard process.&amp;nbsp; I downloaded the RTM from MSDN and burned it to DVD, made sure I wrote down the key and slipped in the DVD and hit the go button.&lt;br /&gt;
&lt;br /&gt;
Standard wizard upgrade, nothing to dis-similar from the upgrade process from Vista to Windows 7. Screens are quite nice.&lt;br /&gt;
&lt;br /&gt;
They great thing here was, I only had one or two reboots. BUT! that's when the fun starts.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Boot Camp Stuff&lt;/h3&gt;
Once you go through the who are you, what wireless / network screens and you get through the logon screen.&amp;nbsp; Please DO NOT reboot!&lt;br /&gt;
&lt;br /&gt;
I did that and lost my keyboard, ugh the pain!&amp;nbsp; If that happens here is the work around.&lt;br /&gt;
&lt;br /&gt;
In the lower left hand part of the screen there is the usability icon, click on this and enable the "On Screen Keyboard".&amp;nbsp; Please be patient as again, depending on your configuration the responsiveness may be latent. Once that appears, either use that or in my case the keyboard was enabled at least for me to login.&lt;br /&gt;
&lt;br /&gt;
Next steps.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Uninstall Boot Camp from Windows.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Do not repair. This can install additional copies of the Apple drivers and further send you into frustration. And in the end you will uninstall anyway.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Insert your Boot Camp CD and run the installer.&lt;/li&gt;
&lt;/ol&gt;
Make sure that you select the default boot OS, if that's your thing.&amp;nbsp; Also check the Apple Updates if you are using an original Boot Camp CD.&amp;nbsp; I might suggest creating a new one from the iOS side of the PC since it will download the most recent version.&lt;br /&gt;
&lt;br /&gt;
And that's it.&amp;nbsp; I would mention that these are my suggestions based on my experience and I am fully operational on a MacBook Pro 13" 8GB Ram running Windows 8 Pro and loving it. &lt;br /&gt;
&lt;br /&gt;
Biggest issue for me was getting the trackpad to work, which lead me to uninstall Boot Camp and reinstall.&amp;nbsp; This was a result of having the multiple copies of the drivers as I mentioned above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/HVIPtVY4bfI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/4823487086433075230/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=4823487086433075230&amp;isPopup=true" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/4823487086433075230?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/4823487086433075230?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/HVIPtVY4bfI/upgrading-from-windows-7-to-windows-8.html" title="Upgrading from Windows 7 to Windows 8 RTM - Bootcamp" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-zRVMbXe6FYY/UD10xvxRTBI/AAAAAAAAAPw/XK6qtKMeazs/s72-c/windows-8.jpg" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/08/upgrading-from-windows-7-to-windows-8.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUMQnY_eip7ImA9WhJVEUQ.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-2825360971005961810</id><published>2012-08-13T13:06:00.000-04:00</published><updated>2012-08-28T17:44:43.842-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-28T17:44:43.842-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone 7" /><category scheme="http://www.blogger.com/atom/ns#" term="hot" /><category scheme="http://www.blogger.com/atom/ns#" term="Nokia Dev" /><title>Develop Your First Windows Phone App - Get a Free Nokia Phone</title><content type="html">This past Friday I attended a Windows Phone Developer event put on by Rich Dunbar, who is a Nokia Developer Ambassador, here in Orlando.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I have exchanged some tweets and emails with Rich in the past and watched some feedback from some of the previous events he had put on in the past; and I'll tell you the reviews had been good.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Rich is running a great program. &amp;nbsp;Develop your first application for Windows Phone and get a free App Hub token ($99 value) and once your application is available in the marketplace, he'll send you a Windows Phone 7 device. &amp;nbsp;Not too bad right? &amp;nbsp;Well, I'll tell you it's a legit deal.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.windowsphone.com/en-US/apps/15055946-fea6-4b03-ae97-20ac4ee3798e" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;" target="_blank"&gt;&lt;img alt="" border="0" src="http://1.bp.blogspot.com/-fC8GfwuoA2E/UCkyEVRFC4I/AAAAAAAAAOE/YiWuUDlmIrk/s1600/502931aab260013448769701029348327.jpg" title="Baseball Pro '12" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
The event was a starter for sure, but he has some good advice on marketing your application. For instance, the Nokia Developer site has a deep link there for generating a &lt;a href="http://snac.nokia.com/2/pages/marketplacehome" target="_blank"&gt;cool little banner ad&lt;/a&gt; like this one I did for &lt;a href="http://www.windowsphone.com/en-US/apps/15055946-fea6-4b03-ae97-20ac4ee3798e" target="_blank"&gt;Baseball Pro 12&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
So here is the program.&lt;br /&gt;
&lt;br /&gt;
1. Go to&amp;nbsp;&lt;a href="http://richarddunbar.blogspot.com/"&gt;http://richarddunbar.blogspot.com&lt;/a&gt;&amp;nbsp;- See the steps and rules.&lt;br /&gt;
2. Follow &lt;a href="http://www.twitter.com/RichDunbar" target="_blank"&gt;@RichDunbar&lt;/a&gt; and &lt;a href="http://www.twitter.com/spboyer" target="_blank"&gt;@spboyer&lt;/a&gt; (that's me)&lt;br /&gt;
3. Get the tools - see Rich's blog&lt;br /&gt;
4. Develop! Ask Questions!&lt;br /&gt;
5. Follow #wpdev on twitter&lt;br /&gt;
6. Reap the benefits&lt;br /&gt;
&lt;br /&gt;
Rich is a great guy, he'll respond to you faster on Twitter than in email, so do that. &amp;nbsp;Feel free to ask me questions as well. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/V_XKXjXtLDo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/2825360971005961810/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=2825360971005961810&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/2825360971005961810?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/2825360971005961810?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/V_XKXjXtLDo/FirstAppFreePhone.html" title="Develop Your First Windows Phone App - Get a Free Nokia Phone" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-fC8GfwuoA2E/UCkyEVRFC4I/AAAAAAAAAOE/YiWuUDlmIrk/s72-c/502931aab260013448769701029348327.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/08/FirstAppFreePhone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUHRHs4eyp7ImA9WhJVEUQ.&quot;"><id>tag:blogger.com,1999:blog-2130182109211708013.post-1331757661484986780</id><published>2012-08-02T17:53:00.000-04:00</published><updated>2012-08-28T17:43:55.533-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-28T17:43:55.533-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Orlando Windows Phone User Group" /><category scheme="http://www.blogger.com/atom/ns#" term="Contest" /><category scheme="http://www.blogger.com/atom/ns#" term="Florida Developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone 7" /><category scheme="http://www.blogger.com/atom/ns#" term="hot" /><category scheme="http://www.blogger.com/atom/ns#" term="Dark Sky" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><title>DarkSky Developer Contest - Dates &amp; Prize Pool</title><content type="html">So here we are, the good stuff. When do we have to be done and what the heck do we get if we win?&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Dates&lt;/h3&gt;
&lt;div&gt;
Start NOW, if you have not signed up please do so &lt;a href="http://eepurl.com/nZXnH" target="_blank"&gt;here&lt;/a&gt;. This is important, I need your valid email address so that I can get you the API developer key for Dark Sky.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Next, apps must be submitted in completion no later than &lt;b&gt;10/1/2012&lt;/b&gt;. &amp;nbsp;This give us time to review them, get them loaded on or devices etc. &amp;nbsp;If you publish them to the Marketplace please send me the links so that we can get them downloaded. &amp;nbsp;If they are paid applications, please send us the .xap or provide a download link so we may side load the applications.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So, prizes. &amp;nbsp;One grand prize for the best Windows 7 Phone and best Windows 8 Metro application. Each winning team or person will receive the following:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://spboyer.me/OJJO2d" target="_blank"&gt;NetAdvantage Ultimate &amp;nbsp;from Infragistics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-T9zYEhshm6Q/UBr1cVvB8XI/AAAAAAAAAL0/gRn7iKFeQqI/s1600/umbrellas.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-T9zYEhshm6Q/UBr1cVvB8XI/AAAAAAAAAL0/gRn7iKFeQqI/s200/umbrellas.jpg" width="150" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Dark Sky Umbrella&lt;br /&gt;
Click for larger image&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;DarkSky &amp;nbsp;Custom-printed senz˚ umbrellas — capable of withstanding 80 km/h winds&lt;/li&gt;
&lt;li&gt;$49.99 XBOX Live Point Card&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Also each completed application submitted will also receive a free copy of NetAdvantage for Windows Phone from Infragistics.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Other submissions will be awarded various prizes so get to coding! &amp;nbsp;We are excited to see what's in store.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Any questions please contact &lt;a href="http://twitter.com/spboyer" target="_blank"&gt;@spboyer&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tattoocoder/~4/GG_QbXmaLrM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.tattoocoder.com/feeds/1331757661484986780/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2130182109211708013&amp;postID=1331757661484986780&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/1331757661484986780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2130182109211708013/posts/default/1331757661484986780?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tattoocoder/~3/GG_QbXmaLrM/darksky-developer-contest-dates-prize.html" title="DarkSky Developer Contest - Dates &amp; Prize Pool" /><author><name>Shayne Boyer</name><uri>https://plus.google.com/111491100912880165844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-0opul96jSTY/AAAAAAAAAAI/AAAAAAAAAbI/BYn7PbG-6GM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-T9zYEhshm6Q/UBr1cVvB8XI/AAAAAAAAAL0/gRn7iKFeQqI/s72-c/umbrellas.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.tattoocoder.com/2012/08/darksky-developer-contest-dates-prize.html</feedburner:origLink></entry></feed>
