<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Blog</title><link>http://www.rodrigueh.com:80/</link><description>Blog</description><item><title>Tools and tips.</title><link>http://www.rodrigueh.com:80/tools-and-tips</link><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;We’re 2 developers working on kwixer; while focusing on the main stuff like building the mobile app, server side api, presentations, documents and administrative stuff; we haven’t got much time to take care of important yet essential things like:&lt;/p&gt; &lt;p&gt;-&amp;gt; business cards&lt;/p&gt; &lt;p&gt;-&amp;gt; setting up emails @kwixer.com&lt;/p&gt; &lt;p&gt;-&amp;gt; sign up page&lt;/p&gt; &lt;p&gt;-&amp;gt; small buzz website&lt;/p&gt; &lt;p&gt;&lt;span style="text-decoration: underline"&gt;Business cards&lt;/span&gt;: &lt;a href="http://us.moo.com/" target="_blank"&gt;Moo cards !&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="text-decoration: underline"&gt;Setting up our email service:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;So we’ve gone for Microsoft Office 365 it was really easy to set up Lync, Exchange and Sharepoint.&lt;/p&gt; &lt;p&gt;Why O365 and not Google apps? we’re simply both familiar with the Microsoft stack, plus we’re used to Lync. Exchange and we work a lot with office.&lt;/p&gt; &lt;p&gt;Plus at the current company I’m leaving we’re using Google apps, I feel like it doesn’t add much value to what you can have for free (I might be wrong though!).&lt;/p&gt; &lt;p&gt;We started a P1 trial, you can compare plans over here: &lt;a href="http://www.microsoft.com/en-us/office365/compare-plans.aspx#fbid=nimq69qQVMq"&gt;http://www.microsoft.com/en-us/office365/compare-plans.aspx#fbid=nimq69qQVMq&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="text-decoration: underline"&gt;Sign up page:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;We’re using &lt;a href="http://launchrock.com/" target="_blank"&gt;launchrock&lt;/a&gt; ; even though you might feel things are missing and the product isn’t finished, it’s enough for our current needs and it’s for free.&lt;/p&gt; &lt;p&gt;Changing your launch page is easy and you have cool insights like: Pageviews, conversion rate, the emails that signed in, the generated clicks from each user etc..&lt;/p&gt; &lt;p&gt;If you need something a lot more complete I’d definitely recommend: &lt;a href="http://www.kickofflabs.com/"&gt;http://www.kickofflabs.com/&lt;/a&gt; (its not free but definitely worth the money)&lt;/p&gt; &lt;p&gt;&lt;span style="text-decoration: underline"&gt;Small buzz website:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;A lot of awesome JS libraries are out there enabling beautiful things to be done quickly, &lt;a href="http://bartaz.github.com/impress.js/#/bored" target="_blank"&gt;impress.js&lt;/a&gt; is one of them, it took less then an hour to have our &lt;a title="kwixer" href="http://kwixer.com" target="_blank"&gt;nice buzz site&lt;/a&gt; up and running.&lt;/p&gt; &lt;p&gt;&lt;span style="text-decoration: underline"&gt;Code hosting:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;We use &lt;a href="https://bitbucket.org/" target="_blank"&gt;bitbucket&lt;/a&gt;, it’s free until you’re more then 5 users on the same project, supports mercurial and git. And you don’t have to make the project public after a certain time if you’re using it for free.&lt;/p&gt; &lt;p&gt;&lt;span style="text-decoration: underline"&gt;Additional hot tip:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Finally we use &lt;a href="http://trello.com"&gt;http://trello.com&lt;/a&gt; to manage all our tasks and share interesting stuff, I’ve used Sharepoint/ Podio/ asana/redmine and other collaborative tools before but I’m really bluffed by trello’s simplicity and usefulness, the way it presents boards .. + their website adapts to mobile; Trello's example board &lt;a title="trello" href="https://trello.com/board/trello-development/4d5ea62fd76aa1136000000c" target="_blank"&gt;here.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;--&lt;/p&gt; &lt;p&gt;Our kwixer service for the mobile app is running on Azure.&lt;/p&gt; &lt;p&gt;So you might of noticed we have no servers and it costs us a lot less to not have servers (but that's the subject of another post).&lt;/p&gt; &lt;p&gt;We're open to suggestions and other tips ;)&lt;/p&gt;</description><pubDate>Tue, 01 May 2012 09:11:04 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/tools-and-tips</guid></item><item><title>Startup time: kwixer</title><link>http://www.rodrigueh.com:80/startup-time-kwixer</link><description>&lt;p&gt;For the first time in my life; I&amp;rsquo;m taking a huge risk career wise, a risk that I&amp;rsquo;m barely feeling because of the adrenaline numbness!&lt;/p&gt;
&lt;p&gt;A month from now I&amp;rsquo;ll be launching a startup with my friend and co-founder Jeremy Pekmez which means I&amp;rsquo;m quitting my current company where I also interned.&lt;/p&gt;
&lt;p&gt;What I&amp;rsquo;ll be working on you ask? &lt;a href="http://kwixer.com"&gt;http://kwixer.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Stay tuned!&lt;/p&gt;</description><pubDate>Mon, 19 Mar 2012 21:23:33 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/startup-time-kwixer</guid></item><item><title>async, await and bit of windows phone.</title><link>http://www.rodrigueh.com:80/async-await-and-bit-of-windows-phone</link><description>&lt;p&gt;First off let me start by saying the &lt;strong&gt;async framework&lt;/strong&gt; isn&amp;rsquo;t destined to make you not want to use Reactive Extensions or a bunch of your own helpers &amp;hellip; async framework was written with the purpose of simplifying your code when it comes to asynchronous tasks.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;async framework&lt;/strong&gt; comes with a few extensions to existing classes and the extra &lt;strong&gt;TaskEx (which is only a temporary class &amp;ndash; everything will be moved later on to the usual Task class)&lt;/strong&gt; class which we&amp;rsquo;ll also talk about in this article.&lt;/p&gt;
&lt;p&gt;The sample project is available &lt;a href="https://skydrive.live.com/redir.aspx?cid=340953c0de5480c2&amp;amp;resid=340953C0DE5480C2!329"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;1st simple example:&lt;/p&gt;
&lt;p&gt;For demo purposes I&amp;rsquo;m using the &lt;strong&gt;WebClient &lt;/strong&gt;class although I&amp;rsquo;d recommend using &lt;strong&gt;HttpWebRequest&lt;/strong&gt; (though WebClient should be enough for simple requests and the response will come back on the Background thread if you have created it on the Background thread &lt;strong&gt;ONLY&lt;/strong&gt; &lt;strong&gt;WITH MANGO&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;This is how an asynchronous task with a callback looks usually:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Call(Action&amp;lt;IEnumerable&amp;lt;SubscriptionItem&amp;gt;&amp;gt; callback, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; uri)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    WebClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WebClient();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    client.DownloadStringCompleted += (s, e) =&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            callback(SubscriptionItem.ParseList(e.Result));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            callback(&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    client.DownloadStringAsync(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(YAHOO_BASE + uri, UriKind.Absolute));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SubscriptionItem is a class with a static method called ParseList which is only used to get an Enumerable of SubscriptionItem from the XML returned from Yahoo&amp;rsquo;s RSS (none relevant to our subject at hand!)&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s say we want to make our code a bit more fail proof, we&amp;rsquo;ll be adding in the callback an Exception.&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Call(Action&amp;lt;IEnumerable&amp;lt;SubscriptionItem&amp;gt;,Exception&amp;gt; callback, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; uri)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    WebClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WebClient();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    client.DownloadStringCompleted += (s, e) =&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            callback(SubscriptionItem.ParseList(e.Result),&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            callback(&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;,e.Error);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    client.DownloadStringAsync(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(YAHOO_BASE + uri, UriKind.Absolute));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Then running the method and getting the callback would look like this:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;RandomServiceExample.Call((lstItems, error) =&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;span style="color: #008000;"&gt;//do something with our list&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }, &lt;span style="color: #006080;"&gt;"business"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Now let&amp;rsquo;s complicate things a bit and say we wanted to retrieve the HTML from each link returned in the list of items:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;RandomServiceExample.Call((lstItems, error) =&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (var item &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; lstItems)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                WebClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WebClient();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                client.DownloadStringCompleted += (s, args) =&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                        &lt;span style="color: #008000;"&gt;//do something with the html returned&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                    };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                client.DownloadStringAsync(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(item.Link, UriKind.Absolute));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }, &lt;span style="color: #006080;"&gt;"business"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Now I&amp;rsquo;ve used again the &lt;strong&gt;WebClient&lt;/strong&gt; with another callback here as the simplest / fastest solution (of course not advisable solution) to prove 3 points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you wanted to track / know when the html for all your items were all retrieved you&amp;rsquo;d be in a pickle with very ugly extra code (unless you&amp;rsquo;re using Rx, but that&amp;rsquo;ll be for another post). &lt;/li&gt;
&lt;li&gt;The code you&amp;rsquo;re reading gets uglier on the eyes! &lt;/li&gt;
&lt;li&gt;If in the callback of the WebClient you wanted to retrieve the item in lstItems on which you called upon, well you don&amp;rsquo;t have it/it changed&amp;hellip;which would complicate things a little bit (you&amp;rsquo;d need to retrieve it someway through your callback):&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In order to prove what I&amp;rsquo;m talking about add a Debug.WriteLine of the item.Link (the link we supposedly called) in the callback of the WebClient you&amp;rsquo;ll notice it&amp;rsquo;s the last item and not the item on which the client has supposedly finished to call.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So &amp;hellip;.. how will the async framework help us with this dilemma ? Ask no more !&lt;br /&gt;Get the bits &lt;a href="http://msdn.microsoft.com/en-us/vstudio/gg316360"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After the installation a bunch of the samples and documentation are available in your &amp;ldquo;Documents&amp;rdquo; folder, the folder is called: &lt;strong&gt;Microsoft Visual Studio Async CTP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Add the reference to the async dll for the windows phone which is found in the Samples folder: C:\Users\[YOURUSER]\Documents\Microsoft Visual Studio Async CTP\Samples\AsyncCtpLibrary_Phone.dll&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s make our code more readable shall we:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; async Task&amp;lt;IEnumerable&amp;lt;SubscriptionItem&amp;gt;&amp;gt; CallAsync(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; uri)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{ &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    WebClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WebClient(); &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; response = await client.DownloadStringTaskAsync(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(YAHOO_BASE + uri, UriKind.Absolute)); &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; SubscriptionItem.ParseList(response); &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;BAM!&lt;/p&gt;
&lt;p&gt;Chocker ha ? do you find it a lot more readable ? yes me too..&lt;/p&gt;
&lt;p&gt;So this is the same asyc method &amp;ldquo;Call&amp;rdquo; I&amp;rsquo;ve written above but instead of writing the callbacks ourselves, well you&amp;rsquo;ve guessed using the &amp;ldquo;&lt;strong&gt;async&lt;/strong&gt;&amp;rdquo; and &amp;ldquo;&lt;strong&gt;await&lt;/strong&gt;&amp;rdquo; keywords its done kind of for us &lt;img src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/8b8c1b07c74c_F3AD/wlEmoticon-winkingsmile_2.png" alt="Winking smile" class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" /&gt;..(the compiler gets its hands dirty for us..)&lt;/p&gt;
&lt;p&gt;Now let me explain, why &amp;ldquo;Task&amp;rdquo; ? did you notice instead of returning just an &amp;ldquo;Enumerable&amp;lt;SubscriptionItem&amp;gt;&amp;rdquo; result I&amp;rsquo;m returning a generic &amp;ldquo;Task&amp;rdquo; of that type.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;Task&amp;rdquo; generic class will help us determine whether the task was completed and even cooler whether an error occurred !&lt;/p&gt;
&lt;p&gt;So instead of having the usual callback you have a representation of the &amp;ldquo;ongoing&amp;rdquo; work.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the msdn documentation of the &amp;ldquo;Task&amp;rdquo; class: &lt;a href="http://msdn.microsoft.com/fr-fr/library/system.threading.tasks.task.aspx"&gt;http://msdn.microsoft.com/fr-fr/library/system.threading.tasks.task.aspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t be surprised by seeing: .NET Framework 4 under the title, the Task class does exist already ! (and you don&amp;rsquo;t need the &lt;strong&gt;async framework &lt;/strong&gt;to use it on other stuff).&lt;/p&gt;
&lt;p&gt;Back to our code, now you might notice &amp;ldquo;&lt;strong&gt;DownloadStringTaskAsync&lt;/strong&gt;&amp;rdquo; instead of calling &lt;strong&gt;DownloadStringAsync&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is the Task based method that comes with the &lt;strong&gt;async framework &lt;/strong&gt;which returns an object of type &lt;strong&gt;Task&amp;lt;string&amp;gt; &lt;/strong&gt;which itself also contains an exception in case one happened.&lt;/p&gt;
&lt;p&gt;With the &amp;ldquo;&lt;strong&gt;await&lt;/strong&gt;&amp;rdquo; keyword behind the method call we&amp;rsquo;re actually waiting for the call to finish before passing in it the response and going to that second line.&lt;/p&gt;
&lt;p&gt;Now wait before you go all &amp;ldquo;say whaaaat??&amp;rdquo; on me..the current thread isn&amp;rsquo;t blocked here, what happens is the rest is &lt;strong&gt;assigned&lt;/strong&gt; as a &lt;strong&gt;callback to the completed event&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Now to make our code a little bit more fail proof in case you wanted to test whether the WebClient itself has failed to Download the String:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; async Task&amp;lt;IEnumerable&amp;lt;SubscriptionItem&amp;gt;&amp;gt; CallAsync(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; uri)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    WebClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WebClient();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    var task = client.DownloadStringTaskAsync(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(YAHOO_BASE + uri, UriKind.Absolute));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    await TaskEx.WhenAny(task);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (task.Exception == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; SubscriptionItem.ParseList(task.Result);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT INFO:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When using the &amp;ldquo;await&amp;rdquo; keyword, it&amp;rsquo;s mandatory to have the &amp;ldquo;async&amp;rdquo; keyword behind the method from which your &amp;ldquo;await&amp;rdquo; is invoked.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;As an example here&amp;rsquo;s how the MainPage Load event would look like with the call. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;strong&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;async &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; MainPage_Loaded(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    var items = await RandomServiceExample.CallAsync(&lt;span style="color: #006080;"&gt;"business"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/strong&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s complicate a bit our items just like what we did with our Action callbacks earlier on:&lt;/p&gt;
&lt;p&gt;Nothing new here, you&amp;rsquo;ll notice in the output console the item link show upon each task completion one by one.&lt;/p&gt;
&lt;p&gt;How do we &lt;strong&gt;parallelize&lt;/strong&gt; all of this just like it was with our usual action/callbacks?&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;var items = await RandomServiceExample.CallAsync(&lt;span style="color: #006080;"&gt;"business"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (items != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    List&amp;lt;Task&amp;gt; tasks = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Task&amp;gt;();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (var it &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; items)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        WebClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WebClient();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        tasks.Add(client.DownloadStringTaskAsync(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(it.Link, UriKind.Absolute)).ContinueWith(handleError));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    TaskEx.WhenAll(tasks.ToArray());&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="csharpcode"&gt;We&amp;rsquo;ll add the tasks to a list of &amp;ldquo;Task&amp;rdquo; and upon launching the &amp;ldquo;WhenAll&amp;rdquo; static method, all our tasks are launched.&lt;/div&gt;
&lt;p&gt;Now to return to one of the points invoked earlier.. how &lt;strong&gt;DO I KNOW&lt;/strong&gt; when all my clients have finished downloading? (yes RX is a solution I saw your grim &lt;img src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/8b8c1b07c74c_F3AD/wlEmoticon-winkingsmile_2.png" alt="Winking smile" class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" /&gt; )&lt;/p&gt;
&lt;p&gt;Yes you&amp;rsquo;ve guessed and you&amp;rsquo;re a pro by now: &amp;ldquo;&lt;strong&gt;await&lt;/strong&gt;&amp;rdquo; keyword is also an answer.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;var items = await RandomServiceExample.CallAsync(&lt;span style="color: #006080;"&gt;"business"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (items != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    List&amp;lt;Task&amp;gt; tasks = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Task&amp;gt;();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (var it &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; items)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        WebClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WebClient();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        tasks.Add(client.DownloadStringTaskAsync(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(it.Link, UriKind.Absolute)));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    await TaskEx.WhenAll(tasks.ToArray());&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    Debug.WriteLine(&lt;span style="color: #006080;"&gt;"finished everything ! wohoo!"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Bonus Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I really like the &amp;ldquo;&lt;strong&gt;ContinueWith&lt;/strong&gt;&amp;rdquo; method of a task, so let&amp;rsquo;s say your task is done and you wanted to check for exceptions and add these exceptions or track stuff, this is a cool way to do it.&lt;/p&gt;
&lt;p&gt;Quick Example:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;List&amp;lt;Exception&amp;gt; lstExceptions = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Exception&amp;gt;();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;Action&amp;lt;Task&amp;lt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&amp;gt;&amp;gt; handleError = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Action&amp;lt;Task&amp;lt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;((task) =&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (task.Exception != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        lstExceptions.Add(task.Exception);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;});&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;         &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;var items = await RandomServiceExample.CallAsync(&lt;span style="color: #006080;"&gt;"business"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (items != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    List&amp;lt;Task&amp;gt; tasks = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Task&amp;gt;();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (var it &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; items)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        WebClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WebClient();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        tasks.Add(client.DownloadStringTaskAsync(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(it.Link, UriKind.Absolute)).ContinueWith(handleError));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    await TaskEx.WhenAll(tasks.ToArray());&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    Debug.WriteLine(&lt;span style="color: #006080;"&gt;"finished everything ! wohoo!"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Upon completing a task, handleError is called in which there&amp;rsquo;s a small exception test which would lead to adding the exception to a list of exceptions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A few other tips:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In order to use the &amp;ldquo;await&amp;rdquo; keyword, the task at hand should be &amp;ldquo;&lt;strong&gt;awaitable&lt;/strong&gt;&amp;rdquo; &amp;ndash; we&amp;rsquo;ll leave this to another article! &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HttpWebRequest&lt;/strong&gt; also comes with async task helpers through methods like: &lt;strong&gt;GetResponseAsync &lt;/strong&gt;&amp;amp;&lt;strong&gt; GetRequestStreamAsync .&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;If you want to create your own async task, its duable with TaskEx.Run &amp;ndash; also for another article!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So that&amp;rsquo;s it..&lt;/p&gt;
&lt;p&gt;Hope you liked it, any feedback / additions which would help improve this article are welcome!&lt;/p&gt;</description><pubDate>Sat, 19 Nov 2011 10:56:17 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/async-await-and-bit-of-windows-phone</guid></item><item><title>HP Touchpad: the future of webOS ?</title><link>http://www.rodrigueh.com:80/hp-touchpad-future-of-webos</link><description>&lt;p&gt;It&amp;rsquo;s remarkable, no one expected for the HP Touchpads to sell that fast after the annoucement and the price cut(not even HP &lt;img src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/e0f0286c50ae_140D4/wlEmoticon-winkingsmile_2.png" alt="Winking smile" class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" /&gt;).&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s be honest, the hardware sucked on the touchpad; but webOS&amp;hellip;is very interesting; some say it&amp;rsquo;s not mature enough, I think it&amp;rsquo;s pretty mature; all it needed was the community.&lt;/p&gt;
&lt;p&gt;And now that between 500 000 and 1 000 000 touchpads were sold in 3 days; not talking about the Pre phones; the community is definitely there!&lt;/p&gt;
&lt;p&gt;So will HP kill webOS ? No, at least they better not !!&lt;/p&gt;
&lt;p&gt;Will it sell it? First don&amp;rsquo;t think there&amp;rsquo;d be any buyers, second I&amp;rsquo;m sure HP won&amp;rsquo;t sell it &amp;ndash;&amp;gt; because again they better not.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;What would I want for webOS ?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: medium;" size="4"&gt;Open source it, would push a little bit Android out of it&amp;rsquo;s comfort zone.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;P.S: I&amp;rsquo;m still a student; I&amp;rsquo;ve done no analysis studies whatsoever and have no experience regarding that matter; so what has been said here can be total crap; do not hold me accountable for your stocks decisions!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 9px;"&gt;And if you want my personal opinion, I think webOS &amp;gt; Android&amp;nbsp;&lt;img src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/e0f0286c50ae_140D4/wlEmoticon-eyerollingsmile_2.png" alt="Eye rolling smile" class="wlEmoticon wlEmoticon-eyerollingsmile" style="border-style: none;" /&gt;&amp;nbsp; &amp;hellip;..&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="font-size: 9px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Wed, 24 Aug 2011 21:18:21 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/hp-touchpad-future-of-webos</guid></item><item><title>Deed Day : Follow up</title><link>http://www.rodrigueh.com:80/deed-day-follow-up</link><description>&lt;p&gt;I started Deed Day last year, for the &amp;ldquo;Pitch your app&amp;rdquo; competition, and then continued with it for the Imagine Cup 2011 Windows Phone 7 challenge.&lt;/p&gt;
&lt;p&gt;Sadly since the imagine cup finals the team hasn&amp;rsquo;t had the time or resources to continue the project. (the windows phone application itself is ready/ but we&amp;rsquo;re missing server resources and the ability to port it to other mobile platforms)&lt;/p&gt;
&lt;p&gt;I really want this project to be finished one day !&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m currently working on something new; I can&amp;rsquo;t talk much about it right now but hopefully it will help give the resources needed for Deed Day to be finished &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Deed-Day--Follow-up_11052/wlEmoticon-winkingsmile_2.png" /&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the video we submitted for the Imagine Cup back in April:&lt;/p&gt;
&lt;div style="margin: 0px; display: inline; float: none; padding: 0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:0fa01eb1-1dcf-44e1-ab81-b83041865e53" class="wlWriterEditableSmartContent"&gt;
&lt;div id="d06b8a05-2291-4bdf-b313-c6d0ca646488" style="margin: 0px; padding: 0px; display: inline;"&gt;
&lt;div&gt;
&lt;object width="448" height="252"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/hC9UC5mUDb8?hl=en&amp;amp;hd=1" /&gt;&lt;embed src="http://www.youtube.com/v/hC9UC5mUDb8?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="width: 448px; clear: both; font-size: .8em;"&gt;Deed Day on windows phone 7&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;here&amp;rsquo;s how it looked like before windows phone 7 real devices even came out!&lt;/p&gt;
&lt;div style="margin: 0px; display: inline; float: none; padding: 0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:6ad04c04-8793-460d-a06b-c343f5da5f3d" class="wlWriterEditableSmartContent"&gt;
&lt;div id="51c4a4cb-f20b-4ae7-85eb-451324b5a20e" style="margin: 0px; padding: 0px; display: inline;"&gt;
&lt;div&gt;
&lt;object width="448" height="252"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/Z38WP3JBrx4?hl=en&amp;amp;hd=1" /&gt;&lt;embed src="http://www.youtube.com/v/Z38WP3JBrx4?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="width: 448px; clear: both; font-size: .8em;"&gt;Deed Day on windows phone 7&amp;ndash;old&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Links you might be interested in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://rodrigueh.com/Deed-Day-made-it-to-the-finals!"&gt;http://rodrigueh.com/Deed-Day-made-it-to-the-finals!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rodrigueh.com/Best-of-Pitch-Your-App"&gt;http://rodrigueh.com/Best-of-Pitch-Your-App&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 22 Aug 2011 17:50:03 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/deed-day-follow-up</guid></item><item><title>University project codenamed 'MindDrone'</title><link>http://www.rodrigueh.com:80/university-project-minddrone</link><description>&lt;p&gt;As part of a lab project in university; I had the pleasure to work on the Kinect, Mindset and AR Drone.&lt;/p&gt;
&lt;p&gt;The goal was to build an application that uses all 3 together.&lt;/p&gt;
&lt;p&gt;Using the Mindset headset; we have this &lt;a target="_blank" href="http://store.neurosky.com/products/mindset"&gt;one&lt;/a&gt; we&amp;rsquo;d get the concentration level through bluetooth on our application and elevate the AR Drone.&lt;/p&gt;
&lt;p&gt;And through Kinect hand movements we&amp;rsquo;d control more the drone.&lt;/p&gt;
&lt;p&gt;Unfortunately the headset stopped working a bit after starting the project (thank you Neurosky for an unstable product, it never really worked well; even right after buying it we always had to restart it a few times to get it working)&lt;/p&gt;
&lt;p&gt;So we continued with just the Kinect.&lt;/p&gt;
&lt;p&gt;And this is what we got &lt;img src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/3269f1783909_FA34/wlEmoticon-winkingsmile_2.png" alt="Winking smile" class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" /&gt; :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:511e62c4-0d03-4855-a246-971c0cef1065" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;
&lt;div id="49d4dbe2-bde5-43ac-892f-17e71156e460" style="margin: 0px; padding: 0px; display: inline;"&gt;
&lt;div&gt;
&lt;object height="252" width="448"&gt;
&lt;param value="http://www.youtube.com/v/HM8G35-rMqo?hl=en&amp;amp;hd=1" name="movie" /&gt;&lt;embed src="http://www.youtube.com/v/HM8G35-rMqo?hl=en&amp;amp;hd=1" width="448" type="application/x-shockwave-flash" height="252"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="width: 448px; clear: both; font-size: .8em;"&gt;Controlling the AR Drone&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b1c2cd8b-f6f2-4740-8c6b-b7dfff64e4c3" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;
&lt;div id="c21b0e35-5748-412d-a804-2433b94115b4" style="margin: 0px; padding: 0px; display: inline;"&gt;
&lt;div&gt;
&lt;object height="252" width="448"&gt;
&lt;param value="http://www.youtube.com/v/PhGlavscVPs?hl=en&amp;amp;hd=1" name="movie" /&gt;&lt;embed src="http://www.youtube.com/v/PhGlavscVPs?hl=en&amp;amp;hd=1" width="448" type="application/x-shockwave-flash" height="252"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="width: 448px; clear: both; font-size: .8em;"&gt;Controlling the AR Drone&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-decoration: line-through;"&gt;The code will be public on codeplex very soon (just cleaning it up).&lt;/p&gt;
&lt;p&gt;The code is available on codeplex: &lt;a href="http://minddrone.codeplex.com/"&gt;http://minddrone.codeplex.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re fluent in French I&amp;rsquo;ve written a couple of articles and will write more on the lab blog explaining more in depth this project:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://galicom.ieid.eu/2011/05/projet-controle-de-l%E2%80%99ar-drone-par-la-pensee/"&gt;http://galicom.ieid.eu/2011/05/projet-controle-de-l%E2%80%99ar-drone-par-la-pensee/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://galicom.ieid.eu/2011/06/neurosky-mindset-et-c-2/"&gt;http://galicom.ieid.eu/2011/06/neurosky-mindset-et-c-2/&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 07 Aug 2011 10:54:47 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/university-project-minddrone</guid></item><item><title>Failing is learning</title><link>http://www.rodrigueh.com:80/failing-is-learning</link><description>&lt;p&gt;Being 22, involves less responsibilities and risks; though what you do while being in your twenties will mostly affect the rest of your life.&lt;/p&gt;
&lt;p&gt;Around a year and a half ago I started Mobholic, was pretty exited about it.&lt;/p&gt;
&lt;p&gt;It was a BlackBerry application, which measured almost everything you did on your phone and gave you a nationwide and international ranking.&lt;/p&gt;
&lt;p&gt;People would be able to view these statistics on an interactive chart.&lt;/p&gt;
&lt;p&gt;I found myself spending too much time working on different versions for different phones, and making the updates.&lt;/p&gt;
&lt;p&gt;At that time (don&amp;rsquo;t know if it changed); with a BlackBerry App World account you were allowed 10 credits.&lt;/p&gt;
&lt;p&gt;These credits are also forfeited if you update the application through app world! (which I think is completely useless)&lt;/p&gt;
&lt;p&gt;So I decided to do updates through OTA (the users would be able to update manually when opening the application) but given the sensitivity of the application, because I was sending what the users did in time (but no text or personal info was sent ) I measured how many emails the users got / sent / deleted , the distance the user did in one day; [&amp;hellip;] to how many minutes the user used the phone for!&lt;/p&gt;
&lt;p&gt;I slowly lost users, because the data was too sensitive and app world didn&amp;rsquo;t control anymore my app (and the users are right; its hard to trust someone you don&amp;rsquo;t know !)&lt;/p&gt;
&lt;p&gt;I was waiting for Apple to announce some kind of APIs that would let me tap into that kind of information so I can port Mobholic; but it never happened.&lt;/p&gt;
&lt;p&gt;A couple of months ago I took off Mobholic from app world; So I failed with Mobholic; and moved to other things !&lt;/p&gt;
&lt;p&gt;Learned from that experience; this is certainly not a bad thing, even if it was a small project ; I learned a lot ! I forced myself wit deadlines (even though I also work as a .NET developer and have real life deadlines, having them on a personal note makes you advance a lot faster! )&lt;/p&gt;
&lt;p&gt;I met people, got their feedback, learned how to listen..and learned how to convince..&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m pretty sure I failed on a small level, a lot of people lose a lot of money; and I&amp;rsquo;ve read about people bouncing right up and making big.&lt;/p&gt;
&lt;p&gt;Since then I&amp;rsquo;ve done the &lt;a href="http://rodrigueh.com/imagine-cup-2011" target="_blank"&gt;Imagine Cup&lt;/a&gt; (we won third place in the French Finals for the category Software Design), and a couple of other interesting projects like &lt;a href="http://rodrigueh.com/university-project-minddrone" target="_blank"&gt;MindDrone&lt;/a&gt; and &lt;a href="http://rodrigueh.com/Best-of-Pitch-Your-App" target="_blank"&gt;DeedDay&lt;/a&gt; (which I pitched in front of Steve Ballmer) .&lt;/p&gt;
&lt;p&gt;I feel this is just the beginning ..Stay tuned ..and fail as much as you can &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/b5875b463d2d_13356/wlEmoticon-winkingsmile_2.png" /&gt; (while learning !)&lt;/p&gt;
&lt;p&gt;Quoting Dennis Crowley (CEO and Co-founder of Foursquare): &amp;nbsp;&lt;span style="color: #444444; font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; line-height: 19px;"&gt;&lt;a style="color: #990000; text-decoration: none; white-space: nowrap; padding: 0px; margin: 0px;" rel="nofollow" class="  twitter-hashtag" title="#Foursquare" href="https://twitter.com/#!/search?q=%23Foursquare"&gt;&lt;span style="padding: 0px; margin: 0px;" class="hash-text"&gt;Foursquare&lt;/span&gt;&lt;/a&gt;'s success is built from 10 years of failure ..&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Sat, 09 Jul 2011 08:59:19 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/failing-is-learning</guid></item><item><title>Imagine cup 2011: Behind the scenes of the MyHealth team</title><link>http://www.rodrigueh.com:80/imagine-cup-2011</link><description>&lt;p&gt;The fifth of May wasn&amp;rsquo;t like any normal day; we had to wake up at 4 am, of course having slept at 1:30 because of stress mixed with excitement.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;As soon as the alarm rang, I got up with the feeling I only slept a minute, made sure the team is awake by calling them and we were off to the airport as soon as we were ready.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;At 11:30; after 2 good hours of practicing with the team, it was time for our first presentation in front of the first jury.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The jury tested our stress by making us wait inside with the doors closed, we had no idea if we should let them know we&amp;rsquo;re ready or just wait or if it was a test and if they already started the 20 minutes timer or not.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;So we launched the first presentation; I must say I think I was more stressed then the PitchYourApp contest (which was the contest with Steve Ballmer as a Jury). The only good explanation I have for being more stressed was the fact that it&amp;rsquo;s been 4 months we&amp;rsquo;ve been working on this project &lt;strong&gt;none stop&lt;/strong&gt; and it &lt;strong&gt;all comes down to THESE 20 minutes&lt;/strong&gt;!&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;We finished the presentation earlier then we should we were 2 minutes and a half behind (apparently it&amp;rsquo;s no big deal)- and then the questions started. These weren&amp;rsquo;t the same type of questions we had at the Bootcamp these were questions to make you uncomfortable,test you and see if you considered everything...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;We basically got out of the first presentation &lt;strong&gt;feeling down&lt;/strong&gt;, the questions made us realize our project had too much ambition and risks (we already knew it but we thought this was a point with relative importance because the competition is called &lt;strong&gt;&amp;ldquo;THE IMAGINE&amp;rdquo;&lt;/strong&gt; cup.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;A friend came by later on after lunch to support us, without knowing we started talking about things outside of the tournament which helped us not stress. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;At 15:30, we went to the second presentation feeling confident and finished with an applaud from the jury! The questions of the second jury were okay, we had already prepared for these types of questions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;We got out feeling &amp;ldquo;&lt;strong&gt;okay&lt;/strong&gt;&amp;rdquo; and very much &lt;strong&gt;relieved&lt;/strong&gt;. It didn&amp;rsquo;t matter if we had &lt;strong&gt;won &lt;/strong&gt;or &lt;strong&gt;lost&lt;/strong&gt;, we were glad we had done our best.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Soon came the ceremony and the results, we won &lt;strong&gt;third place&lt;/strong&gt;.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img src="http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash4/222908_10150176857507679_248917717678_6574323_1620813_n.jpg" alt="MyHealth stand" width="471" height="313" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img src="http://a6.sphotos.ak.fbcdn.net/hphotos-ak-snc6/231058_10150176865277679_248917717678_6574510_167151_n.jpg" width="471" height="302" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img src="http://a1.sphotos.ak.fbcdn.net/hphotos-ak-snc6/230498_10150176873017679_248917717678_6574692_3225196_n.jpg" alt="Think.Connect team" width="471" height="313" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;We weren&amp;rsquo;t sad in fact when we saw what the first place team did, they had worked on their project for a while now, had a special coach, came with guns loaded and a finished product; they &lt;strong&gt;deserved &lt;/strong&gt;to &lt;strong&gt;win&lt;/strong&gt;!&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I was asked&lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt; If had the chance to re-do it would I re-do it ?&lt;/strong&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Yes of course.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;Would I participate next year?&lt;/strong&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;If there&amp;rsquo;s an idea and a motivated team just like the one I was with this year, YES.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;What have I learned from this year?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starting early with the project is important&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;presentation &lt;/strong&gt;and &lt;strong&gt;pitch &lt;/strong&gt;matters a lot more than you think!&lt;/li&gt;
&lt;li&gt;A good &lt;strong&gt;idea &lt;/strong&gt;doesn&amp;rsquo;t make you &lt;strong&gt;win&lt;/strong&gt;; an idea should be balanced between: &lt;strong&gt;CAN BE DONE NOW&lt;/strong&gt; / &lt;strong&gt;CAN BE PUT INTO PRODUCTION NOW&lt;/strong&gt; / &lt;strong&gt;INNOVATIVE IDEA&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal"&gt;Usually in an imagine cup final tournament, most ideas are &lt;strong&gt;INNOVATIVE&lt;/strong&gt;, the &lt;strong&gt;KEY element&lt;/strong&gt;&amp;nbsp;that would differentiate you from the others are these 2 questions: Can it be &lt;strong&gt;done now &lt;/strong&gt;? Can it be put into &lt;strong&gt;production now&lt;/strong&gt;?&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent: -.25in; mso-list: l0 level1 lfo1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;So after analyzing what we learned this year and all the feedback from the jury at the party, what were our strong points and what were our weaknesses?&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;Strong points:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Our &lt;strong&gt;presentation&lt;/strong&gt; was good&lt;/li&gt;
&lt;li&gt;Our &lt;strong&gt;pitch &lt;/strong&gt;was awesome&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;idea &lt;/strong&gt;was good&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;demo &lt;/strong&gt;was awesome&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business model &lt;/strong&gt;was &lt;strong&gt;coherent&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent: -.25in; mso-list: l0 level1 lfo1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;Weaknesses:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It wasn&amp;rsquo;t ready to be &lt;strong&gt;deployed now&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;A lot of &lt;strong&gt;constraints &lt;/strong&gt;depending on&lt;strong&gt; third party&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High risk &lt;/strong&gt;involved&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent: -.25in; mso-list: l0 level1 lfo1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;So having won third place doesn&amp;rsquo;t make us advance into the &lt;strong&gt;international finals &lt;/strong&gt;in &lt;strong&gt;Software Design&lt;/strong&gt;, though there&amp;rsquo;s still a small chance in the &lt;strong&gt;Windows Phone category&lt;/strong&gt; as the &amp;ldquo;Deed day&amp;rdquo; project passed Round 1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;Congratulations &lt;/strong&gt;for the winners and even all the French finalists in Software Design.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Big thanks to&lt;strong&gt; Vanessa Arnauld &lt;/strong&gt;and her crew for having well &lt;strong&gt;organized &lt;/strong&gt;and &lt;strong&gt;helped &lt;/strong&gt;us all the way. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Thank you for the &lt;strong&gt;exceptional jury.&lt;/strong&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Couple of links about the event :&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://etudiants.frogz.fr/post/2011/05/06/IMAGINE-CUP-2011-Our-French-Champions.aspx"&gt;http://etudiants.frogz.fr/post/2011/05/06/IMAGINE-CUP-2011-Our-French-Champions.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://www.flickr.com/photos/mtoo/sets/72157626531617407/"&gt;http://www.flickr.com/photos/mtoo/sets/72157626531617407/&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://www.pcinpact.com/dossiers/imagine-cup-resultats-concours-microsoft-finale-fr/190-1.htm"&gt;http://www.pcinpact.com/dossiers/imagine-cup-resultats-concours-microsoft-finale-fr/190-1.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Mon, 06 Jun 2011 19:32:03 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/imagine-cup-2011</guid></item><item><title>WP7: Live tiles with Background agents.</title><link>http://www.rodrigueh.com:80/wp7-live-tiles-with-background-agents</link><description>&lt;p&gt;The goal of this post is to show an example of how we could mix Background agents and Live tiles. (I&amp;rsquo;ll talk about &lt;strong&gt;ShellTileScheduler&lt;/strong&gt; limitations later on and why it would be interesting to use a background agent to update our live tiles).&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #ff0000;" color="#ff0000"&gt;Keep in mind this post was created for the first version of the Mango SDK beta. Some properties / methods / limitations might change in the mean time.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Download the solution source &lt;a target="_blank" href="http://cid-340953c0de5480c2.office.live.com/self.aspx/Posts%20Resources/DemoTileAgentScheduler.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start off by creating a new Windows Phone Application.&lt;/p&gt;
&lt;p&gt;After installing the Mango beta sdk. New templates of Windows Phone projects are there:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows Phone 3D Graphics. &lt;/li&gt;
&lt;li&gt;Windows Audio Playback Agent. &lt;/li&gt;
&lt;li&gt;Windows Phone Audio Streaming Agent. &lt;/li&gt;
&lt;li&gt;Windows Audio Streaming Agent. &lt;/li&gt;
&lt;li&gt;Windows Phone Task Scheduler Agent.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re going to create a standard WP application right now, and we&amp;rsquo;ll be using later on the Windows Phone Background Agent.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/newproject_2.png"&gt;&lt;img height="353" width="512" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/newproject_thumb.png" alt="newproject" border="0" title="newproject" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While creating the project, Visual Studio 2010 asks us which Windows Phone we&amp;rsquo;re targeting:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_4.png"&gt;&lt;img height="189" width="391" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_thumb_1.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s first start off by adding the code to add a live tile.&lt;/p&gt;
&lt;p&gt;Important information about &lt;strong&gt;Live Tiles&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Tiles related to your application are accessed through &lt;strong&gt;ShellTile.ActiveTiles&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first &lt;strong&gt;Tile&lt;/strong&gt; would is the default one where you &lt;strong&gt;can&lt;/strong&gt; &lt;strong&gt;update&lt;/strong&gt;, but can&amp;rsquo;t &lt;strong&gt;remove&lt;/strong&gt; or &lt;strong&gt;PIN &lt;/strong&gt;to the &lt;strong&gt;home screen &lt;/strong&gt;and it&amp;rsquo;s Id is by default the name of your project. (the&lt;strong&gt; tile &lt;/strong&gt;would still be in the &lt;strong&gt;ActiveTiles&lt;/strong&gt; collection even if the user hasn&amp;rsquo;t pinned the Tile yet)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_6.png"&gt;&lt;img height="148" width="738" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_thumb_2.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;\&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Adding a live tile:&lt;/p&gt;
&lt;p&gt;The back content will show with the &lt;strong&gt;Tile &lt;/strong&gt;flipping sides automatically. If the &lt;strong&gt;Back specific properties &lt;/strong&gt;aren&amp;rsquo;t set, the Tile won&amp;rsquo;t flip.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/IC505365_2.jpg"&gt;&lt;img height="144" width="330" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/IC505365_thumb.jpg" alt="IC505365" border="0" title="IC505365" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/IC505427_2.jpg"&gt;&lt;img height="117" width="330" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/IC505427_thumb.jpg" alt="IC505427" border="0" title="IC505427" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(images from &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/hh202948(v=VS.92).aspx"&gt;msdn overview&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;For more information about Tiles check out the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/hh202948(v=VS.92).aspx"&gt;Tiles Overview For Windows Phone.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So I added a button on the view and on the click event I add the tile.&lt;/p&gt;
&lt;p&gt;So here&amp;rsquo;s a quick snippet in order to add a Shell Tile. (Almost the same code that you can find in the code samples project for &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ff431744(v=VS.92).aspx"&gt;live tiles&lt;/a&gt;)&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x =&amp;gt; x.NavigationUri.ToString().Contains(&lt;span style="color: #006080;"&gt;"TileID=2"&lt;/span&gt;));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;span style="color: #008000;"&gt;//test if Tile was created&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (TileToFind == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                StandardTileData NewTileData = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                    BackgroundImage = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Red.jpg"&lt;/span&gt;, UriKind.Relative),&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                    Title = &lt;span style="color: #006080;"&gt;"First"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                    Count = 1,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                    BackTitle = &lt;span style="color: #006080;"&gt;"Second"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                    BackContent = &lt;span style="color: #006080;"&gt;"Second content"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                    BackBackgroundImage = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Blue.jpg"&lt;/span&gt;, UriKind.Relative)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                ShellTile.Create(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"/MainPage.xaml?TileID=2"&lt;/span&gt;, UriKind.Relative), NewTileData); &lt;span style="color: #008000;"&gt;//exits application&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Before adding a &lt;strong&gt;Live Tile &lt;/strong&gt;we try finding it and test if it already exists.&lt;/p&gt;
&lt;p&gt;If not created we create it.&lt;/p&gt;
&lt;p&gt;Also in the project I have 2 images set as Content (Red.jpg and Blue.jpg)&lt;/p&gt;
&lt;p&gt;Run the project :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/first_2.png"&gt;&lt;img height="244" width="135" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/first_thumb.png" alt="first" border="0" title="first" style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/second_2.png"&gt;&lt;img height="244" width="134" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/second_thumb.png" alt="second" border="0" title="second" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You might of noticed the application isn&amp;rsquo;t on the foreground anymore after this line of code:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: #2b91af;"&gt;ShellTile&lt;/span&gt;.Create(&lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Uri&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"/MainPage.xaml?TileID=2"&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;UriKind&lt;/span&gt;.Relative), NewTileData);
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So in a usual case where we just need to update the tiles through a remote server we&amp;rsquo;d use &lt;strong&gt;PUSH notifications&lt;/strong&gt;, or even the &lt;strong&gt;ShellTileScheduler&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Couple of limitations of the &lt;strong&gt;ShellTileScheduler:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The smallest interval is every hour. &lt;/li&gt;
&lt;li&gt;You have to have a server that changes the image you&amp;rsquo;ll be updating (so no direct control over the scheduler through your application).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So if we want to have control over the shell tiles in background without passing through push notifications, a nice solution would be through &lt;strong&gt;Background agents.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s add our background agent:&lt;/p&gt;
&lt;p&gt;Add a new project to the solution of type &amp;ldquo;Windows Phone Task Scheduler Agent&amp;rdquo;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_10.png"&gt;&lt;img height="304" width="432" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_thumb.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the project is created, you can notice there was a class called &lt;strong&gt;TaskScheduler&lt;/strong&gt; that inherits from &lt;strong&gt;ScheduledTaskAgent &lt;/strong&gt;with two methods overridden: &lt;strong&gt;OnInvoke&lt;/strong&gt; and &lt;strong&gt;OnCancel&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Important information about the &lt;strong&gt;Background Agent&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;2 types of agents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PeriodicAgents&lt;/strong&gt;: for small tasks and can run for 15 seconds. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ResourceIntensiveTask&lt;/strong&gt;: for resource intensive tasks, can run up to 10 minutes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Scheduled Interval is 30 minutes and cannot be changed for now (hope this changes &lt;img src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/wlEmoticon-confusedsmile_2.png" alt="Confused smile" class="wlEmoticon wlEmoticon-confusedsmile" style="border-style: none;" /&gt;)&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a limit on the number of total Background agents on the phone that differ (can be as low as 6) and each application doesn&amp;rsquo;t have the right to use more then one Background agent!&lt;/p&gt;
&lt;p&gt;Low battery can stop your background agent from running.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Periodic&lt;/strong&gt; or &lt;strong&gt;ResourceIntensive&lt;/strong&gt; &lt;strong&gt;Tasks&lt;/strong&gt; can&amp;rsquo;t use more then 5 MB of memory.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a set of APIs that can&amp;rsquo;t be used by a &lt;strong&gt;Scheduled Task&lt;/strong&gt; like the &lt;strong&gt;Camera&lt;/strong&gt;, &lt;strong&gt;WebBrowser&lt;/strong&gt; etc.. (for the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/hh202962(v=VS.92).aspx"&gt;full list&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;This might prove a problem for a number of things, like a Scheduled Task can&amp;rsquo;t reschedule itself (I wanted to reschedule the Task so I can run it for a shorter interval then 30 minutes while starting it at a later time).- If added an Exception is launched once the background agent is running or the application won&amp;rsquo;t pass the market place validation.&lt;/p&gt;
&lt;p&gt;For more information on Scheduled Tasks check out: &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/hh202942(v=VS.92).aspx"&gt;Scheduled Tasks Overview for Windows Phone.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s add the new project as a reference to the windows phone application we created earlier on.&lt;/p&gt;
&lt;p&gt;Once added the &lt;strong&gt;WMAppManifest.xml&lt;/strong&gt; is modified with a new node &amp;ldquo;&lt;strong&gt;ExtendedTask&lt;/strong&gt;&amp;rdquo; that references the background agent project we just added.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_8.png"&gt;&lt;img height="219" width="521" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_thumb_3.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now we need to create a task, for this example I&amp;rsquo;m going to create a Periodic Task:&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a simple snippet also can be found in the code samples project (I added this in the click event before creating the new shell tile &amp;ndash; because the background agent can&amp;rsquo;t be created when the application is already in background):&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 93.75%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 268px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;PeriodicTask periodicTask = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; PeriodicTask(&lt;span style="color: #006080;"&gt;"PeriodicAgent"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;periodicTask.Description = &lt;span style="color: #006080;"&gt;"My live tile periodic task"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;periodicTask.ExpirationTime = System.DateTime.Now.AddDays(1);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;// If the agent is already registered with the system,&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (ScheduledActionService.Find(periodicTask.Name) != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    ScheduledActionService.Remove(&lt;span style="color: #006080;"&gt;"PeriodicAgent"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;//not supported in current version&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;//periodicTask.BeginTime = DateTime.Now.AddSeconds(10);&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;//only can be called when application is running in foreground&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;ScheduledActionService.Add(periodicTask);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Now while discovering the &lt;strong&gt;Periodic Task&lt;/strong&gt; I wanted to change the BeginTime of the task, but while running the application an exception is thrown, this property isn&amp;rsquo;t yet supported / implemented in this first beta version of Mango.&lt;/p&gt;
&lt;p&gt;And in the background agent, in the OnInvoke method let&amp;rsquo;s update the shell tile:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;//TODO: Add code to perform your task in background&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;// If application uses both PeriodicTask and ResourceIntensiveTask&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (task &lt;span style="color: #0000ff;"&gt;is&lt;/span&gt; PeriodicTask)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #008000;"&gt;// Execute periodic task actions here.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x =&amp;gt; x.NavigationUri.ToString().Contains(&lt;span style="color: #006080;"&gt;"TileID=2"&lt;/span&gt;));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (TileToFind != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        StandardTileData NewTileData = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            Title= &lt;span style="color: #006080;"&gt;"updated by scheduled task"&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            Count = System.DateTime.Now.Minute&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        TileToFind.Update(NewTileData);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #008000;"&gt;// Execute resource-intensive task actions here.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;NotifyComplete();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Upon completing a task the agent should always call &lt;strong&gt;NotifyComplete()&lt;/strong&gt; or &lt;strong&gt;Abort().&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Run the application and you might notice the background agent runs once the click event is launched once, and then the next time in 30 minutes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_12.png"&gt;&lt;img height="291" width="156" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/undecided-title_14632/image_thumb_4.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hope you enjoyed this article !&lt;/p&gt;
&lt;p&gt;Download the solution source &lt;a target="_blank" href="http://cid-340953c0de5480c2.office.live.com/self.aspx/Posts%20Resources/DemoTileAgentScheduler.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 31 May 2011 15:29:06 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/wp7-live-tiles-with-background-agents</guid></item><item><title>Migrating your DotNetBlogEngine blog to Orchard</title><link>http://www.rodrigueh.com:80/dotnetblogengine-to-orchard</link><description>&lt;p&gt;This post is designed for people that don&amp;rsquo;t want to modify the core or create plugins.&lt;/p&gt;
&lt;p&gt;I decided to move my blog after having read about John Papa&amp;rsquo;s &lt;a target="_blank" href="http://johnpapa.net/orchardpart1"&gt;blog migration&lt;/a&gt;. &lt;strong&gt;Orchard&lt;/strong&gt; looks great and has been gaining a lot of popularity.&lt;/p&gt;
&lt;p&gt;This will simply show how to export your current &lt;strong&gt;DotnetBlogEngine&lt;/strong&gt; to &lt;strong&gt;Orchard&lt;/strong&gt;. (Though this might help even if you have another &lt;strong&gt;blog engine&lt;/strong&gt; &lt;img src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/wlEmoticon-smile_2.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-style: none;" /&gt; )&lt;/p&gt;
&lt;p&gt;Two easy ways to set up the orchard site without having to download the source code from &lt;strong&gt;codeplex&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using&lt;strong&gt; Microsoft WebMatrix&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Using&lt;strong&gt; Microsoft Web Platform Installer&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So after the installation is complete.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Let&amp;rsquo;s start by installing necessary modules (inspired from John Papa&amp;rsquo;s list of modules):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The uncovered modules are covered on &lt;a target="_blank" href="http://johnpapa.net/orchardpart1"&gt;John Papa&amp;rsquo;s post.&lt;/a&gt;&lt;/p&gt;
&lt;table width="400" cellpadding="2" cellspacing="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;BlogML&lt;/td&gt;
&lt;td width="200" valign="top"&gt;In order to import BlogML files (covered here)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td width="200" valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Google Analytics&lt;/td&gt;
&lt;td width="200" valign="top"&gt;Covered here&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Messaging&lt;/td&gt;
&lt;td width="200" valign="top"&gt;Not covered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Email messaging&lt;/td&gt;
&lt;td width="200" valign="top"&gt;Not covered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Indexing&lt;/td&gt;
&lt;td width="200" valign="top"&gt;Not covered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Lucene&lt;/td&gt;
&lt;td width="200" valign="top"&gt;Not covered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;FollowMe&lt;/td&gt;
&lt;td width="200" valign="top"&gt;Not covered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Vandalay Favicon (current version 1.1)&lt;/td&gt;
&lt;td width="200" valign="top"&gt;covered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;AddThis (Chat Scharf)&lt;/td&gt;
&lt;td width="200" valign="top"&gt;covered&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The easiest way to install a module is to do it directly from Orchard&amp;rsquo;s gallery:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/modules_2.png"&gt;&lt;img height="294" width="498" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/modules_thumb.png" alt="orchard modules gallery" border="0" title="modules" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note : While installing your first module you might have an error because orchard couldn&amp;rsquo;t write in the /Modules or /Themes folder.&lt;/p&gt;
&lt;p&gt;So the way to resolve this is to set the right permissions on the ~/Modules and ~/Themes folder.&lt;/p&gt;
&lt;p&gt;In order to export your current posts / comments; we&amp;rsquo;ll be exporting them to a BlogML file (it&amp;rsquo;s a simple xml file) . A good thing about &lt;strong&gt;DotNetBlogEngine&lt;/strong&gt; is you don&amp;rsquo;t need an extra plugin, just login to the admin panel of your current blog &amp;ndash;&amp;gt;Settings , at the bottom there&amp;rsquo;s an export button. Just click it and save the file somewhere on your computer.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/BlogMLExport_2.png"&gt;&lt;img height="78" width="460" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/BlogMLExport_thumb.png" alt="BlogMLExport" border="0" title="BlogMLExport" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DotnetBlogEngine&lt;/strong&gt; refers to images through a handler which has this extension: .axd , so we&amp;rsquo;re going to need to change that manually in the BlogML file before importing on Orchard.&lt;/p&gt;
&lt;p&gt;I created a new post that contains an image on Orchard to determine where the images are stored so I can manually copy all my previous images.&lt;/p&gt;
&lt;p&gt;Turns out they&amp;rsquo;re stored in /Media/Default + personalized folder name (unless you personally change it); so mine is : /Media/Default/Images&lt;/p&gt;
&lt;p&gt;So went through the BlogML generated export file to replace all the image paths that looked like &amp;ldquo;[myurl].axd=[imagename]&amp;rdquo; to &amp;ldquo;/Media/Default/Images/[imagename]&amp;rdquo;&lt;/p&gt;
&lt;p&gt;And before importing I manually copied all the images from the old blog to the /Media/Default/Images folder.&lt;/p&gt;
&lt;p&gt;So to put the import to the test, log in to your Orchard admin panel =&amp;gt; Blog (left menu ) =&amp;gt; Import the file you downloaded&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/import_2.png"&gt;&lt;img height="448" width="457" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/import_thumb.png" alt="orchard blogml import" border="0" title="import" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I got a &lt;strong&gt;NullReferenceException&lt;/strong&gt; error from the &lt;strong&gt;BlogML&lt;/strong&gt; module which is weird thought there&amp;rsquo;d be a post /comment missing but everything was there.&lt;/p&gt;
&lt;p&gt;In case you get an error with a yellow page, telling you to turn CustomErrors Off if you want to see the error, all you have to do is go to the web.config at the root of the solution and set CustomErrors to Off (that&amp;rsquo;s if you want to see the error, if not just put it back on &lt;img src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/wlEmoticon-winkingsmile_2.png" alt="Winking smile" class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" /&gt; )&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Spam ? No thanks !&lt;/span&gt;&lt;br /&gt;In the admin panel, under &amp;ldquo;Settings&amp;rdquo;&amp;nbsp; there&amp;rsquo;s a &amp;ldquo;Comments&amp;rdquo; tab, click on &amp;ldquo;Enable Spam protection&amp;rdquo; this will allow you to put your Akismet Key and blog URL.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Analytics ? Yes please!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You might of noticed anyway the orange/ yellowish notification on the top of the admin panel saying the Google analytics module needs to be configured.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/warning-configuration_2.png"&gt;&lt;img height="77" width="567" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/warning-configuration_thumb.png" alt="orchard warning-configuration" border="0" title="warning-configuration" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So you need to add your tracking key in Settings &amp;ndash; in the Google analytics zone which is at the bottom.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Last touches you might like/ consider:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Favicon: After having installed the &lt;a target="_blank" href="http://orchardproject.net/Gallery/List/Modules/Orchard.Module.Vandelay.Favicon/1.1"&gt;Vandelay Favicon module&lt;/a&gt;, upload your ico into the media folder and configure directly from Settings.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/favicon_2.png"&gt;&lt;img height="276" width="430" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/favicon_thumb.png" alt="orchard favicon" border="0" title="favicon" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Robots: &lt;a target="_blank" href="http://orchardproject.net/Gallery/List/Modules/Orchard.Module.SH.Robots/1.0.0"&gt;Robots module&lt;/a&gt; by Chat Scharf is configured from the tab : Configuration ; what&amp;rsquo;s cool is you don&amp;rsquo;t have to manually create and upload the txt file unto your server.&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s my configuration (might change):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/robot_2.png"&gt;&lt;img height="323" width="341" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/robot_thumb.png" alt="orchard robot" border="0" title="robot" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Adding the Share buttons on blog posts:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;After having installed the &lt;a target="_blank" href="http://orchardproject.net/Gallery/List/Modules/Orchard.Module.Szmyd.Orchard.Modules.Sharing/1.0.0"&gt;AddThis&lt;/a&gt; module; We have to enable the ContentTypes module:&lt;/p&gt;
&lt;p&gt;Admin panel&amp;ndash;&amp;gt; Modules &amp;ndash;&amp;gt; Enable the ContentType module.&lt;/p&gt;
&lt;p&gt;Now to add AddThis module to every post: Admin panel&amp;ndash;&amp;gt; Content &amp;ndash;&amp;gt; ContentTypes &amp;ndash;&amp;gt; Edit Blog post &amp;ndash;&amp;gt; add part &amp;ndash;&amp;gt; Share Bar&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/contentblogpost_2.png"&gt;&lt;img height="163" width="448" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/contentblogpost_thumb.png" alt="contentblogpost" border="0" title="contentblogpost" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After having added the Share bar as a part.&lt;/p&gt;
&lt;p&gt;it&amp;rsquo;s configurable and has different styles; mine is ToolboxFacebookLike.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/sharebar_2.png"&gt;&lt;img height="126" width="437" src="http://rodrigueh.com/Media/Default/Windows-Live-Writer/Migrating-from_126BE/sharebar_thumb.png" alt="sharebar" border="0" title="sharebar" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So this concludes our installation post for today, hope you found it useful!&lt;/p&gt;</description><pubDate>Sun, 22 May 2011 19:49:07 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/dotnetblogengine-to-orchard</guid></item><item><title>Taking up a challenge</title><link>http://www.rodrigueh.com:80/Taking-up-a-challenge</link><description>&lt;p&gt;&lt;span&gt;I recently had an interesting challenge at work; without going into the details the main problem was a complex application deployment on the web server.&lt;br /&gt;There was an easy and quick way to deploy it by installing something that would make the web server slower and probably more vulnerable, and then there was the best way to do it.&lt;br /&gt;&lt;br /&gt;I decided not to take the the easy way out, but to do it the best way. I tried for two days without looking back.&lt;span&gt;&amp;nbsp;&lt;/span&gt;At the end the whole thing took 5 minutes, but the result was 10 times better and faster.&lt;br /&gt;I never gave up searching and I didn't quit the challenge.&lt;br /&gt;Once you start quitting and saying no to challenges, you start giving in to obstacles you might face during your climb.&lt;br /&gt;After that you're not climbing anymore...&lt;/span&gt;&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:46 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Taking-up-a-challenge</guid></item><item><title>Best feedback or what?..</title><link>http://www.rodrigueh.com:80/Best-feedback-or-what</link><description>&lt;p&gt;I've been getting a lot of good feedback on the blog, options are going to be added and the design might change (but not anytime soon). I thank you all for your ratings/ comments / feedback and support. Keep tuning in.&lt;br /&gt;&lt;br /&gt;One feedback that marked me and caught my eye came from a really close, childhood friend of mine. He came to Nice to visit me last April. Although we hadn't seen each other in 6 years, we always stayed in contact and he's someone I can always count on.&lt;br /&gt;&lt;br /&gt;I believe that one's social environment changes who you are, depending on who you have grown up with. It affects how you turn out. That dear friend of mine is one of those people that had a great impact on my life.&lt;br /&gt;&lt;br /&gt;Anyway here's his feedback, I felt like sharing with everyone :&lt;br /&gt;"&lt;em&gt;Hey Rod, I'm really glad that you have made this blog, this goes to show that you are serious about your development whether it comes to your career or any other area in your life.&lt;br /&gt;&lt;br /&gt;You have the desire, you have the dedication, you have the persistence and you have the discipline to reach your purpose. You are officially 90% above the majority of people.&lt;br /&gt;&lt;br /&gt;Some useful advice that has worked for me and that has been done by ALL successful people: surround yourself with people who have the same purpose, people who are better than you and people that are 4-5 + years ahead of you and can offer you some insight.&lt;br /&gt;&lt;br /&gt;And the number one most insightful advice: give value to people, whether it be by sharing this blog or just giving them positive energy. It is by giving to people that you will get.&lt;br /&gt;&lt;br /&gt;The more you are going to advance on top of that pyramid, the lonelier it gets. It becomes harder and harder to find similar minded people.&lt;br /&gt;&lt;br /&gt;I wish you the best of luck and I hope your job has been working out!&lt;br /&gt;&lt;br /&gt;"&lt;strong&gt;The source of all abundance is not outside of you. It is part of who you are. Abundance comes only to those who already have it. &amp;ldquo;Outer Success&amp;rdquo; is simply a by-product of the abundance felt within."&lt;/strong&gt; - Eckhart Tolle&lt;br /&gt;&lt;br /&gt;Cheers&lt;/em&gt; '&lt;br /&gt;- Khalil "&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:46 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Best-feedback-or-what</guid></item><item><title>Nothing happens overnight</title><link>http://www.rodrigueh.com:80/Nothing-happens-overnight</link><description>&lt;p&gt;I was always an average student in school, never had enough motivation to finish a homework, theory was just not my thing.&lt;br /&gt;&lt;br /&gt;The day after passing my baccalaureate, woke up&amp;nbsp;asking my self : "Ok..What's next? ". I remember having a conversation with a group of close friends where each one of us talked about what he wanted to do this summer and all i heard was "Party all summer" or "do nothing just relax".&lt;br /&gt;&lt;br /&gt;I didn't want that! School was over and I wanted to take control of my future , no teachers to guide me anymore and tell me what I should do, parents have a lot less authority on me. I found myself facing the real world. This was the best time to build the foundation of what I wanted to be.&lt;br /&gt;&lt;br /&gt;That same summer I learned C++ on my own ( an important computer programming language) and I got an internship at A.B.K (A leading bank in Kuwait). Although it was only a 2 month investment of time and energy, that investment directly started paying off as soon as I started university and still is paying off.&lt;br /&gt;&lt;br /&gt;On one's route to success, self investment and sacrifices are always necessary; it doesn't happen overnight.&amp;nbsp;&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:46 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Nothing-happens-overnight</guid></item><item><title>Introduction</title><link>http://www.rodrigueh.com:80/Intro</link><description>&lt;p&gt;Dear Readers,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;My first post is simply about why I want to blog. It is surely not to brag nor to set myself as an example, but more of a wanting-to-share-my-motivation blog. Throughout this blog you are going to read posts about goals I already achieved, goals I set everyday, stories that happened and some daily thoughts.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My direction of motivation focuses mainly on my career. There is a saying that the company I work for has: "&lt;em&gt;The man at the top of the mountain did not fall there&lt;/em&gt;" - naseba.&lt;/p&gt;
&lt;p&gt;Being&amp;nbsp;at the&amp;nbsp;top of the mountain is one of my goals...&lt;br /&gt;&lt;br /&gt;So happy reading and I hope to get some feedback.&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:46 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Intro</guid></item><item><title>Throwing everything on the table.</title><link>http://www.rodrigueh.com:80/Throwing-everything-on-the-table</link><description>&lt;p&gt;&lt;span&gt;I recently knew a couple that broke up and i was friends with both of them. So one friend asked me for help and advice, all I thought of was helping her take back control. What I wanted to do is make that person stronger and more independent to be ready to get back at the other person, basically by playing games.&lt;br /&gt;&lt;br /&gt;However, this friend didn't listen to my advice although i was pretty convinced that my way would work. She dealt with the problem by being sad and in pain and eventually she worked up the courage to go out and get what she wanted without any games. She threw everything she had on the table by being honest. In the end it all worked out and they got back together.&lt;br /&gt;&lt;br /&gt;You probably guessed what I want to say, sometimes you have it in your head to play games to get what you want. With games you can act wisely and think about every angle thereby protecting yourself. However, sometimes it's simpler to throw everything you have on the table and be completely honest and open.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:45 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Throwing-everything-on-the-table</guid></item><item><title>Taking my Christmas vacation!</title><link>http://www.rodrigueh.com:80/Taking-my-Christmas-vacation!</link><description>&lt;p&gt;I've recently had a lot of flashbacks, memories of when I first moved to Lebanon for my first year in university, memories of when I moved to France last year. All these big changes in my life were for one purpose : "Making my opportunity window wider"&lt;br /&gt;&lt;br /&gt;I recently had a presentation for an English class and in that presentation we had to talk about our summer vacation.&lt;br /&gt;After hearing the whole class talk about their vacation, my turn came. I had a small paper with a basic structure and key ideas of the things I wanted to talk about written on a small paper.&lt;br /&gt;As I was standing in front of the class, all worked up, I started the speech with this phrase : "First thing's first I had no summer vacation.."&lt;br /&gt;During that speech I got a bit carried away with what I did this summer and at the end I talked about my goals.&lt;br /&gt;&lt;br /&gt;After that I realized that it's been 2 years since I spent Christmas with my family. I haven't taken a real vacation. I always worked to "widen my opportunity window". I recently achieved my biggest goal for this year which is being completely independent from my parents.&lt;br /&gt;Now that that's done, I am taking my Christmas vacation this year and seeing my family and friends.&lt;br /&gt;&lt;br /&gt;(too bad I am not going to be able to see a person I was really counting on seeing and someone who was real support in rough times, but I'll manage to make it up, that's another goal!)&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:45 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Taking-my-Christmas-vacation!</guid></item><item><title>Glimmer of hope.</title><link>http://www.rodrigueh.com:80/Glimmer-of-hope</link><description>&lt;p&gt;Not too long ago, I was coming back home from work and there was a bunch of teenagers (probably 3 years younger) in front of the entry to my building.&lt;br /&gt;One of them was sitting on the stoop, so excused myself politely to go in, he pardoned himself and moved out of the way.&lt;br /&gt;&lt;br /&gt;That time I was coming back home from my internship, meaning I was wearing a suit, which probably drove him to ask me this question.&lt;br /&gt;The teen asked me "I am sorry to bother you but what do you do in life? You don't have to answer but I'd say your a lawyer, but yet you look so young."&lt;br /&gt;I chuckled and told him : "No no, I am just a computer science student and I'm doing an internship".&lt;br /&gt;I sensed in two seconds two really opposite emotions on that person's face, one was a smile because he totally wouldn't of guessed I was still a student and the other was disappointment and sadness. This made me curious so I asked him : "what are you thinking of doing?"&lt;br /&gt;He replied with an even sadder tone : "I wanted to be an engineer but it's to late for me."&lt;br /&gt;I was completely chocked, hearing something like "it's to late for me " from an 11th grade kid!&lt;br /&gt;I refused to hear that from him and told him it's never to late, there is his whole future in front of him and now is just the beginning.&lt;br /&gt;And whoever put this into the kid's head whether its the school system or his parents , demotivating is seriously not the way to go.&lt;br /&gt;&lt;br /&gt;When I told that kid that Einstein, Bill Gates etc.. were all average students (the same argument I used for years after giving my school report card to dad !) . School isn't always right, if they told you you can't do something , keep trying. If one university rejects you, try another one. Until you get what you want don't quit.&lt;br /&gt;I didn't say a lot of words until i saw a smile back on his face, he said he will do that and keep me updated every time he sees me again coming home.&lt;br /&gt;&lt;br /&gt;A hint of hope can sometimes turn around a whole life. People might say it's not good to give false hope, but there's no such thing as false hope; everyone can change.&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:45 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Glimmer-of-hope</guid></item><item><title>Trendy scarfs.</title><link>http://www.rodrigueh.com:80/Trendy-scarfs</link><description>&lt;p&gt;I recently heard news of a close friend of mine starting her own small business. She's in her second year of university doing marketing and most surprisingly she's in Lebanon.&lt;br /&gt;&lt;br /&gt;I tried once to get something of my own done in Lebanon but gave up as soon as the team I was trying to assemble discouraged me and told me that it wouldn't work in Lebanon. They were probably right; I had chosen the wrong time and I wasn't persuasive enough.&lt;br /&gt;I am sure this friend of mine probably received the same type of discouragement at the beginning, and heard a lot of phrases like : "it would never work", "you're to young" , "focus on university, it's not the time for these kind of things", but it didn't affect her, she still went for it.&lt;br /&gt;Even if her plan didn't work out the way she intended she thought it would still be a great experience and guess what? It turned out better then everyone ever thought it would and it's just the beginning.&lt;br /&gt;&lt;br /&gt;She was convinced this would work and it's a trend everyone would be into.&lt;br /&gt;Her idea revolves around designing unique personalized scarfs. This might sound simple, but believe me keeping it up while studying in university at the same time is a real hard task.&lt;br /&gt;&lt;br /&gt;She might not have it in mind to keep this as a full time job after university, but she is making this happen to save enough money to be able to do something productive later on and permitting herself to be more independent of her parents.&lt;br /&gt;&lt;br /&gt;These days, people who think like that come around a lot less often.&lt;/p&gt;
&lt;p&gt;If you want to check out her work :&lt;br /&gt;&lt;a href="http://www.facebook.com/group.php?gid=27294274546"&gt;http://www.facebook.com/group.php?gid=27294274546&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now there's someone who's choosing her future and not just going with the wind.&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:45 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Trendy-scarfs</guid></item><item><title>What type are you?</title><link>http://www.rodrigueh.com:80/What-type-are-you</link><description>&lt;p&gt;Not too long ago, I had a really interesting conversation with a former colleague of mine.&lt;br /&gt;In that conversation he made it clear that there were 3 types of people in the corporate world :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Type A : the ones that work their ass off.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Type B : The ones that sit and do nothing and are happy about it. The type of people that get into their position by kissing ass, pretending to be someone they're not, or by having connections and getting where they want without really deserving it.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Type C : The ones that destroy other people's work. The type of people that have a degree in criticizing everyone else's work without bringing any of their own ideas to the table.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;As a student you can already see in these 3 types of people in class; they are already being formed. You can tell this, not by looking at the grades or at their previous school achievements, but by their behavior: the way they talk, the way they consider people around them etc.&lt;/p&gt;
&lt;p&gt;A small example I encountered of Type B : " This summer was great , I didn't do anything during my internship, I slept all the time."&lt;/p&gt;
&lt;p&gt;I'm not going to cite any examples of Type C, but i think they're a lot more frequent then Type B's.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Changing to an different type is always possible.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Why Type A is the best :&lt;br /&gt;Working all the time doesn't bother him or her. They love working and love being productive; work is an important priority.&lt;br /&gt;At the end of the day, he or she likes to feel like something was accomplished, even though he or she might feel tired. There's this amazing feeling of accomplishment that surrounds that person.&lt;br /&gt;All that feeling of accomplishment urges him or her to spread it, and at the same time brings on more challenges.&lt;br /&gt;This amazing feeling of accomplishment is the adrenaline rush he or she will want to have systematically.&lt;br /&gt;As a result great things are achieved.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Type A rocks!&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:45 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/What-type-are-you</guid></item><item><title>Life changing experience.</title><link>http://www.rodrigueh.com:80/Life-changing-experience</link><description>&lt;p&gt;Today was my last day at naseba, Monday I start classes again.&lt;br /&gt;&lt;br /&gt;I kept on working until the last minute and after that we all had a drink to say goodbye.&lt;br /&gt;I came to the company with goals to achieve:&lt;br /&gt;Earn everyone's respect and not be treated as an trainee but like an employee. Done.&lt;br /&gt;Make the most out of the experience. Done.&lt;br /&gt;Prove to everyone that I was able to handle the hard work. Done.&lt;br /&gt;Take up challenges. Done.&lt;br /&gt;Climb higher on my mountain. Done.&lt;br /&gt;&lt;br /&gt;I came to the company with 0 experience in web applications, 0 experience on the Microsoft developing platform.&lt;br /&gt;I remember when I first got the chance to be interviewed. I started&amp;nbsp;learning/researching by myself so I wouldn't feel like a fool during the interview.&lt;br /&gt;The first day I started, I got simple tasks compared to what I can do now, but at that time I didn't know how to do them. I set every day goals&lt;br /&gt;to learn more and ask for more work.&lt;br /&gt;I became an 18/24H learning machine. I would come home from work and instead of resting I was researching. I didn't rest until I felt I was at ease with what I was doing.&lt;br /&gt;My task was to develop one project and I had until mid October, which meant just more than 3 months. The project finished in a month and a half.&lt;br /&gt;In the four months, I assisted on 3 projects and developed 2 big projects when I was only supposed to develop one.&lt;br /&gt;I don't remember at any point telling myself " it's ok you're ahead of time, you can rest now". I always wanted to go even faster.&lt;br /&gt;And&amp;nbsp;I&amp;nbsp;admit there's still&amp;nbsp;a lot more to learn.&lt;br /&gt;&lt;br /&gt;I wouldn't say these 4 months were a turning point in my life because I already knew what I wanted before I started at naseba, but I'd say it was surely a life changing experience and for that I thank my colleagues and naseba.&lt;br /&gt;&lt;br /&gt;Although, me starting classes again might slow my climbing, I already managed to get something to do after my studying hours, which will allow me to get more experience and still climb at almost the same pace. (more information might be available later on)&lt;br /&gt;&lt;br /&gt;People ask me:" So what are you going to do to celebrate the fact that your internship is over?", I reply: " like what I do every weekend, go out, see my friends, clean my studio and reflect on what I want to do next".&lt;br /&gt;&lt;br /&gt;Thank you naseba for the great experience you have brought me.&lt;/p&gt;</description><pubDate>Sun, 15 May 2011 08:53:45 GMT</pubDate><guid isPermaLink="true">http://www.rodrigueh.com:80/Life-changing-experience</guid></item></channel></rss>
