<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>4MK Mobile Dev Blog</title>
	
	<link>http://4mkmobile.com</link>
	<description>Adventures in Mobile (and Startup) Development</description>
	<lastBuildDate>Thu, 07 Jun 2012 14:59:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/4mkmobileblog" /><feedburner:info uri="4mkmobileblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Creating certificates on Azure</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/VYrwHqc7Zes/</link>
		<comments>http://4mkmobile.com/2012/06/creating-certificates-on-azure/#comments</comments>
		<pubDate>Thu, 07 Jun 2012 14:26:39 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/?p=180</guid>
		<description><![CDATA[For a recent project project we were working on (Open Data Installer), there was the requirement to connect to the Azure Management API on behalf of the user in order to actually deploy the selected projects for them.&#160; In order to do this, you need to have the user add a certificate to the management [...]]]></description>
			<content:encoded><![CDATA[<p>For a recent project project we were working on (<a href="http://www.opendatainstaller.com/" target="_blank">Open Data Installer</a>), there was the requirement to connect to the Azure Management API on behalf of the user in order to actually deploy the selected projects for them.&#160; In order to do this, you need to have the user add a certificate to the management certificates for their account (Why this functionality can’t be done with OAuth and their Live account is something that I will never understand).</p>
<p>The decision to create the certificates on the server came up when we were discussing security around the application.&#160; It all came down to the fact that we wanted the user to be able to use the certificate once and then throw it away knowing that we there was no way we could access their account after the install process (done by them removing it from their Management Certificates).&#160; I guess we could have just used one certificate that they all could use, but having individual certificates used just gives that added piece of mind.</p>
<p>Enough of the use case, here comes the code:</p>
<p>From the command line, certificates are easy enough to generate, simply issue the command:</p>
<blockquote><pre class="csharpcode">makecert.exe -r -pe -a sha1 -n \&quot;CN=ODI Certificate\&quot; </span></span>
<span class="alt"><span class="str">-ss My -len 2048 -sp \&quot;Microsoft Enhanced RSA and AES Cryptographic Provider\&quot; </span></span>
<span class="alt"><span class="str">-sy 24 {0}\\oidcertificate.cer&quot;</span>; </pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Creating the same certificate on the server can be done using the ProcessStartInfo class.</p>
<p>Once you’ve copied makecert.exe to your instance (look for exactly how to do this in a future blog post), simply use the following code:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">string</span> command = <span class="str">&quot;-r -pe -a sha1 -n \&quot;CN=ODI Certificate\&quot; </span></span>
<span class="alt"><span class="str">-ss My -len 2048 -sp \&quot;Microsoft Enhanced RSA and AES Cryptographic Provider\&quot; </span></span>
<span class="alt"><span class="str">-sy 24 {0}\\oidcertificate.cer&quot;</span>; </pre>
<pre><span class="lnum">   2:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">   3:  </span>ProcessStartInfo start = <span class="kwrd">new</span> ProcessStartInfo(); </pre>
<pre><span class="lnum">   4:  </span>start.FileName = [Location of makecert] + <span class="str">&quot;\\makecert.exe&quot;</span>; </pre>
<pre class="alt"><span class="lnum">   5:  </span>start.Arguments = <span class="kwrd">string</span>.Format(command, [Output dir] ); </pre>
<pre><span class="lnum">   6:  </span>start.WorkingDirectory = [Output dir]; </pre>
<pre class="alt"><span class="lnum">   7:  </span>start.UseShellExecute = <span class="kwrd">false</span>; </pre>
<pre><span class="lnum">   8:  </span>start.RedirectStandardOutput = <span class="kwrd">true</span>; </pre>
<pre class="alt"><span class="lnum">   9:  </span>start.RedirectStandardError = <span class="kwrd">true</span>; </pre>
<pre><span class="lnum">  10:  </span><span class="rem">// Start the process with the info we specified. </span></pre>
<pre class="alt"><span class="lnum">  11:  </span><span class="rem">// Call WaitForExit and then the using statement will close. </span></pre>
<pre><span class="lnum">  12:  </span><span class="kwrd">using</span> (Process process = Process.Start(start)) </pre>
<pre class="alt"><span class="lnum">  13:  </span>{ </pre>
<pre><span class="lnum">  14:  </span>    process.WaitForExit();</pre>
<pre class="alt"><span class="lnum">  15:  </span>&#160;</pre>
<pre><span class="lnum">  16:  </span>     var output = process.StandardOutput.ReadToEnd(); </pre>
<pre class="alt"><span class="lnum">  17:  </span>     var error = process.StandardError.ReadToEnd(); </pre>
<pre><span class="lnum">  18:  </span>}</pre>
<pre class="alt"><span class="lnum">  19:  </span>&#160;</pre>
</p></div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>At this point you should deal with both the output and error variables to make sure that everything went well.</p>
</blockquote>
<p>And that’s it, the beauty of Azure compute instances is that for the most part there is very little in terms of coding that you could do on a dedicated server, that you can’t do on Azure&quot;.</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/VYrwHqc7Zes" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2012/06/creating-certificates-on-azure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2012/06/creating-certificates-on-azure/</feedburner:origLink></item>
		<item>
		<title>Getting started with WP7Dev</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/0dnukPm60sE/</link>
		<comments>http://4mkmobile.com/2012/01/getting-started-with-wp7dev/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 14:56:36 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[WP7 Development]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/?p=168</guid>
		<description><![CDATA[Earlier this week, I had the pleasure and privileged of being asked to be  a guest on Microsoft Canada’s Developers, Developers, Developers show talking about my experiences developing for the platform (the video of the show should be available soon).  Those who know me well can attest to the fact that I absolutely love the [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this week, I had the pleasure and privileged of being asked to be  a guest on Microsoft Canada’s <a href="http://devs3.ms/d3guests" target="_blank">Developers, Developers, Developers</a> show talking about my experiences developing for the platform (the video of the show should be available soon).  Those who know me well can attest to the fact that I absolutely love the platform and how easy it is to develop for (Market share not withstanding), so when they asked, I jumped at the opportunity.</p>
<p>The topic of the conversation was around how to start developing for the platform, so I thought I’d take a quick minute to jot down my thoughts on the matter.  Without further ado, here’s my list of three steps to getting started:</p>
<h3>1. Pick an app</h3>
<p>This one isn’t platform specific, but rather what you should do no matter what platform your developing for.  Far too often I see people getting into mobile development with aspirations they are going to retire on the income from their first app. Inevitably they fail and stop building anything.</p>
<p>Start small.  Pick something that will help you out in your everyday life.  The hardest thing to do in mobile development is figuring out what exactly your users are going to want, if your the client, this part becomes much, much easier.</p>
<p>Personally, I drink about 6 liters of Tim Horton’s a day (just over a gallon and a half of Coffee for our American readers) and often found myself asking random strangers: “<a href="https://www.windowsphone.com/en-US/apps/14989419-c0e4-df11-a844-00237de2db9e/ValidatePurchase/0ad0e2e1-4355-43da-b5a8-d7580c30b3ef?appType=Regular&amp;purchaseFlowStart=App" target="_blank">Where’s Timmy</a>”. [Note: how this app got me a career building WP7 apps is a story for another day]</p>
<h3>2. Read/Watch tutorials specific to what your trying to build.</h3>
<p>While many people will shudder at this suggestion, your goal is to get your first app up and running as soon as possible.  Forget reducing how much code is in your code behind, using IoC or any of the “cool” new technologies/methodologies, figure out what you need next and build just it.  Once you’ve built the first version of your app and have that great feeling of using an app you’ve built on your own phone, you can go back and refactor that code you’d be embarrassed if anyone else saw.</p>
<p>In terms of where to look for tutorials, it really depends on how you learn best. For some people, video is king, and those people should check <a href="http://channel9.msdn.com/Browse/Series" target="_blank">Channel 9</a> for your needs.  Others learn better the written, you should check the <a href="http://create.msdn.com/en-US/education/catalog/" target="_blank">official developer site</a> as well as Jeff Blankenburg’s fantastic series <a href="http://jeffblankenburg.com/31daysofmango/" target="_blank">31 Days of Mango</a></p>
<p>Above all else, just remember to get your app working and have some fun doing it!</p>
<h3>3. Iterate</h3>
<p>When initially looking at what features you are going to add to your application, cut out anything and everything that isn’t absolutely vital to solving your problem.</p>
<p>Once you’ve gotten the bare minimum version of your app up and running, you’ll often find that features that you thought you would need are no longer relevant. There will however be some new features that you hadn&#8217;t even thought of that you now realize is absolutely imperative. That is how it goes with the iteration process.</p>
<p>Another great help when iterating on your app is to try and find users to help beta test it with you. Twitter is a great place to find people (make sure to use the <a href="https://twitter.com/#!/search/WP7Dev" target="_blank">#WP7Dev</a> hash tag), as is the <a href="http://linkd.in/CanadianDeveloperConnection" target="_blank">Canadian Developer Connection LinkedIn group</a>, or you can send me a message (either through <a href="http://4mkmobile.com/contact/" target="_blank">this site</a> or on <a href="https://twitter.com/#!/4MKMobile" target="_blank">Twitter</a>) and I&#8217;ll see if I can help</p>
<p>Once again I&#8217;d like to thank the fine folks at Microsoft Canada!! Now get out there and build your apps.</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/0dnukPm60sE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2012/01/getting-started-with-wp7dev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2012/01/getting-started-with-wp7dev/</feedburner:origLink></item>
		<item>
		<title>Why Nokia coming to Windows phone is a huge deal</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/ZWejt5fgbxk/</link>
		<comments>http://4mkmobile.com/2011/08/why-nokia-coming-to-windows-phone-is-a-huge-deal/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 06:12:13 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/2011/08/why-nokia-coming-to-windows-phone-is-a-huge-deal/</guid>
		<description><![CDATA[&#160; Shots taken with the X7 (left), Samsung Focus (center) and the N8 (right) A little while ago Nokia was kind enough to invite about a dozen of us out to Canmore, Alberta for an event called #NokiaUnfenced; a weekend of fun while showing off a couple of their current phones. Being a big fan [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p align="center"><a href="http://4mkmobile.com/wp-content/uploads/2011/08/Canmore_Comparisson.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Canmore_Comparisson" border="0" alt="Canmore_Comparisson" src="http://4mkmobile.com/wp-content/uploads/2011/08/Canmore_Comparisson_thumb.png" width="420" height="231" /><em>Shots taken with the X7 (left), Samsung Focus (center) and the N8 (right)</em></a></p>
<p>A little while ago Nokia was kind enough to invite about a dozen of us out to Canmore, Alberta for an event called #NokiaUnfenced; a weekend of fun while showing off a couple of their current phones. Being a big fan of the Windows Phone platform (both as a Developer and a Consumer) I was thrilled to get the chance to see what all the excitement was around the recent decision of Nokia’s to go with the new platform.&#160; As such this won’t be so much of a review of the software currently running on their phones, but rather a review of the hardware . Unfortunately, I wasn’t able to get my hands on a device running WP (code named Sea Ray) what I did see paints an extremely attractive picture of what’s on the horizon. If you’d like a review of the software and hardware together, a few of the other fantastic people who were on the trip have you covered <a href="http://www.myorganizedchaos.net/2011/08/nokia-x7-smartphone-a-review-from-an-iphone-owner">here</a>, <a href="http://www.photojunkie.ca/archive/2011/07/nokia-unfenced/">here</a>, and <a href="http://rolandtanglao.com/archives/2011/08/03/x7-review-its-hard-use-another-cameraphone-after-you-have-used-n8-0">here</a>.</p>
<h4>History of the decision</h4>
<p>In early February of this year, Stephen Elop, the newly appointed CEO of Nokia, send his now famous memo to employees where he likens Nokia’s then strategy to a burning platform (the full text of the memo can be seen <a href="http://blogs.wsj.com/tech-europe/2011/02/09/full-text-nokia-ceo-stephen-elops-burning-platform-memo/">here.</a>).&#160; Not long after that, Nokia announced that they would be phasing out Symbian as their OS of choice for smartphones and replacing it with Microsoft’s Windows Phone Offering.&#160; In the landmark deal between the two behemoths, Nokia would bring an expanded range of phones, the Ovi maps technology, and their Carrier billing agreements, while MS would be bringing the OS as well as the various Bing technologies. </p>
<p><strong>So without further ado, here’s why I’m excited…</strong></p>
<h4>Great Camera</h4>
<p>If you’re like me then a lot of your discussions around any smartphone tend to focus on apps. What’s the latest and greatest app for a platform, how many tens of thousands of apps are available, or which twitter client is currently my favourite are popular topics to argue at length about. But if you are like me, a very large portion of your actual usage is taking and showing off pictures.</p>
<p>For the most part, even though I’ve had a smartphone for the last 3-4 years and I’ve never been more than about 10 feet from it. Having said this, whenever I’m going to an event, be it my son’s hockey game or out to the park with my daughter, I’ll also bring a separate camera. While testing around with the X7 (or the N8) I’ve left the standalone camera at home. Almost all smartphone cameras these days are good enough for those spur of the moment, wow nobody’s going to believe this, shots, Nokia’s camera takes it from good enough to perfect for the job. </p>
<p>Going from the 5 megapixels on my Samsung Focus to the 8 megapixel in the X7 (or a ridiculous 12 megapixel for the N8) doesn’t quite tell you the whole story. What seems to be the biggest improvement is the lens they are using. The Carl Ziess really delivers a crisp picture with fantastic colours that will make even the shots from sub amateur photographers (the category I find myself in) looking great.</p>
<p>One other quick thing to note is that the time difference between when you press the button and when the picture is actually taken (I’m sure there is a technical term for this) is much better on the X7 than on the Focus. While for landscape shots this isn’t going to mean much, for action shots it’s nice to be able to actually catch the action rather than a half second afterwards.</p>
<h4>Mapping Features</h4>
<p>Up until that weekend, when I thought of mobile mapping solutions, I really only thought of two different offerings, Bing maps and Google maps. While I’m not entirely sure that I’m sold on the overall visual aspects, there are quite a few things that have me extremely excited about the possibilities of Ovi Maps coming to Windows Phone. The first thing I noticed was that there were a couple of places that Bing Maps couldn’t find that Ovi could (I’m wondering if the ranch was selected based on this, j/k ). The best feature Ovi has though is the ability to download the tiles for a given region, not having to download the tiles certainly helped in regions with spotty reception.</p>
<h4>General Hardware feel</h4>
<p>One of the biggest features that phone manufactures like to pull out is how light they have made their phones. While greatly reducing the weight of phones more than 10 years ago (think <a href="http://t1.gstatic.com/images?q=tbn:ANd9GcTeleip-fTpYnD1WeSur3CDvnbfnXI_tQpog7uNpTICNTJBgLL_">Zach Morris era</a> ) was a great thing, it’s my belief that it’s gotten to the point that phones have gotten too light (apply ridiculous size of cell phones in <a href="http://t1.gstatic.com/images?q=tbn:ANd9GcQEx6d4cAxsKlDmechxPIEpcRjQUz8kPMCVoa0wB0wycFU1kl5g">Zoolander</a>, to the weight of phones now). By reducing the weight as far as they have and by replacing parts of the case with flimsy plastic, many manufacturers have gone too far. The Nokia phones don’t have this problem. This isn’t to say that they are heavy bricks, but rather they have a weight that just feels right. One of the other guests at #NokiaUnfenced (who will remain nameless to protect them from the enevitable PETA backlash) summed it up with the line “A phone should have enough weight so that you could kill a small animal with it). While I certainly don’t agree with killing small animals, I completely agree with the statement.</p>
<h4>No more “This is how it should have been at launch”</h4>
<p>Another thing that Nokia will have going for it when they finally do release their Window Phone offerings, is that they have bypassed the, at times, incomplete initial release of the WP operating system. While I understand that Microsoft had to start from scratch when building WP, I can’t help but agree to a point with the crowd of people who are vocal about saying that the upcoming Mango release has the feature set that should have launched with the phone. Nokia won’t ever have to hear these complaints as they’ll be launching with the fully featured Mango OS.</p>
<h4>Final thoughts</h4>
<p>All in all, I’ve got to say that going in to the weekend I really didn’t know why everyone in the Windows Phone community was so excited about the Nokia deal.&#160; After the weekend I completely understand it.&#160; Now don’t get me wrong, I don’t think that when Sea Ray is release your going to start seeing landfills full of iPhones and Android devices, but it’s certainly a large step in the right direction for the platform that could sorely use it.&#160; Personally I’ll be picking one of them up as soon as I can get my hands on one.</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/ZWejt5fgbxk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2011/08/why-nokia-coming-to-windows-phone-is-a-huge-deal/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2011/08/why-nokia-coming-to-windows-phone-is-a-huge-deal/</feedburner:origLink></item>
		<item>
		<title>Quick tip: Getting your JSON out of a WebException</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/63HFv5vEwxY/</link>
		<comments>http://4mkmobile.com/2011/05/quick-tip-getting-your-json-out-of-a-webexception/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 04:28:45 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Quick tip]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/?p=150</guid>
		<description><![CDATA[When prototyping out a recent project, I ran into a new issue that I hadn’t seen before, a web service that sent back both a non 200 error code, but also returned relevant JSON data. The problem happens when trying to get the JSON data about the error.&#160; Since a non-200 Response has been returned [...]]]></description>
			<content:encoded><![CDATA[<p>When prototyping out a recent project, I ran into a new issue that I hadn’t seen before, a web service that sent back both a non 200 error code, but also returned relevant JSON data.</p>
<p>The problem happens when trying to get the JSON data about the error.&#160; Since a non-200 Response has been returned you can no longer use the following code:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">void</span> wc_DownloadStringCompleted(<span class="kwrd">object</span> sender, </pre>
<pre><span class="lnum">   2:  </span>    DownloadStringCompletedEventArgs e)</pre>
<pre class="alt"><span class="lnum">   3:  </span>{</pre>
<pre><span class="lnum">   4:  </span>     var jsonContent = e.Result;</pre>
<pre class="alt"><span class="lnum">   5:  </span>     <span class="rem">//Do Stuff Here</span></pre>
<pre><span class="lnum">   6:  </span>}</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>So the first thing you have to do is check for the Error property and deal with it appropriately.&#160; Luckily for us the Error property has a reference to the actual Response which we can use to get the information we want like so:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">void</span> wc_DownloadStringCompleted(<span class="kwrd">object</span> sender, </pre>
<pre><span class="lnum">   2:  </span>    DownloadStringCompletedEventArgs e)</pre>
<pre class="alt"><span class="lnum">   3:  </span>{</pre>
<pre><span class="lnum">   4:  </span>    <span class="kwrd">string</span> content = <span class="kwrd">string</span>.Empty;</pre>
<pre class="alt"><span class="lnum">   5:  </span>&#160;</pre>
<pre><span class="lnum">   6:  </span>    <span class="kwrd">if</span> (e.Error != <span class="kwrd">null</span>)</pre>
<pre class="alt"><span class="lnum">   7:  </span>    {</pre>
<pre><span class="lnum">   8:  </span>        var we = e.Error <span class="kwrd">as</span> WebException;</pre>
<pre class="alt"><span class="lnum">   9:  </span>        var stream = we.Response.GetResponseStream();</pre>
<pre><span class="lnum">  10:  </span>        content = <span class="kwrd">new</span> StreamReader(stream).ReadToEnd();</pre>
<pre class="alt"><span class="lnum">  11:  </span>    }</pre>
<pre><span class="lnum">  12:  </span>    <span class="kwrd">else</span></pre>
<pre class="alt"><span class="lnum">  13:  </span>        content = e.Result;</pre>
<pre><span class="lnum">  14:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  15:  </span>    <span class="rem">//Do Stuff Here</span></pre>
<pre><span class="lnum">  16:  </span>}</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Of course you’ll need to do more error checking that this and make sure that the response code that you want is actually the one you are receiving, but this shows the just of what our solution was.</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/63HFv5vEwxY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2011/05/quick-tip-getting-your-json-out-of-a-webexception/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2011/05/quick-tip-getting-your-json-out-of-a-webexception/</feedburner:origLink></item>
		<item>
		<title>SysTray + Panorama: mostly still a no-go in Mango</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/ZmV4fKe1M8A/</link>
		<comments>http://4mkmobile.com/2011/05/systray-panorama-mostly-still-a-no-go-in-mango/#comments</comments>
		<pubDate>Sun, 29 May 2011 19:00:27 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Mango]]></category>
		<category><![CDATA[Panorama]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/?p=146</guid>
		<description><![CDATA[One of the most prevalent comments that I’ve gotten whenever we’ve built a WP7 application using a Panorama, is “What happened to the time thingie?”&#160; For those who don’t know, the time thingie is called the System Tray as shown here: As a developer, the last thing I want to do is take functionality away [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most prevalent comments that I’ve gotten whenever we’ve built a WP7 application using a Panorama, is “What happened to the time thingie?”&#160; For those who don’t know, the time thingie is called the <a href="http://www.microsoft.com/windowsphone/en-us/howto/wp7/start/what-do-the-icons-on-my-phone-mean.aspx">System Tray</a> as shown here:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://4mkmobile.com/wp-content/uploads/2011/05/image.png" width="358" height="28" /></p>
<p>As a developer, the last thing I want to do is take functionality away from users, but in this case, if you’re using a Panorama background image, you have to.&#160; The reason I say you have to is that the System Tray won’t overlay over any of your controls, but rather it will take up the top small amount of space at the top of your page pushing everything else down.&#160; So here’s the XAML and what it will look like using the sample panorama project installed by default when you install the <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=77586864-ab15-40e1-bc38-713a95a56a05&amp;displaylang=en">Windows Phone Developer Tools</a>:</p>
<div align="center">
<pre class="csharpcode">shell:SystemTray.IsVisible=&quot;True&quot;</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p align="center"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://4mkmobile.com/wp-content/uploads/2011/05/image1.png" width="358" height="102" /></p>
<p>Not exactly the most appealing look of all time now is it?</p>
<p>When first reading through the <a href="http://msdn.microsoft.com/en-us/library/microsoft.phone.shell.systemtray(v=VS.92).aspx">help files online</a> for the beta of the Mango release, I noticed that you could now set both the background and foreground colors, problem solved right?</p>
<p>Well… not really.&#160; </p>
<p>The first issue is that pops up is that the pattern on the background that the starter project uses has some designs that run off of the screen (not sure I like this fact since for the rest of the phone when something runs off screen it means you can scroll to it), since we can’t set a background image for the system tray, it looks kind of funny.</p>
<div align="center">
<pre class="csharpcode">shell:SystemTray.BackgroundColor=<span class="str">&quot;#01499d&quot;</span></pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p align="center"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://4mkmobile.com/wp-content/uploads/2011/05/image2.png" width="358" height="125" /></p>
<p>That’s alright for me though, as I rarely use background image that has funky circles in it anyways.&#160; However, scrolling over one panorama item shows the next issue: tall letters in your panorama title:</p>
<p align="center"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://4mkmobile.com/wp-content/uploads/2011/05/image3.png" width="358" height="130" /></p>
<p>That’s right, it’s not just the design that gets clipped by the new System Tray, but also taller letters also have this problem as well.</p>
<p>So if the new System Tray has all these issues with design, what good is it then?&#160; For some of the applications we’ve built, we use a panorama that uses the logo of the company for the panorama title.&#160; </p>
<p>In that small use case, then we can finally get what our users are asking for.&#160; So as the title says: </p>
<p align="center"><strong>SysTray + Panorama: mostly still a no-go in Mango</strong></p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/ZmV4fKe1M8A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2011/05/systray-panorama-mostly-still-a-no-go-in-mango/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2011/05/systray-panorama-mostly-still-a-no-go-in-mango/</feedburner:origLink></item>
		<item>
		<title>Setting up your UV instance with WP7UserVoice</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/pbBHdia0M2g/</link>
		<comments>http://4mkmobile.com/2011/04/setting-up-your-uv-instance-with-wp7uservoice/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 01:22:05 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/2011/04/setting-up-your-uv-instance-with-wp7uservoice/</guid>
		<description><![CDATA[Not too long ago, we at RedBit Development started working on making it easier for developers to get real feedback from their users.&#160; Knowing that a three star review with no comment, and no way to respond to the user, can be one of the most frustrating things about the Marketplace, we started out to [...]]]></description>
			<content:encoded><![CDATA[<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 4px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="download" border="0" alt="download" align="left" src="http://4mkmobile.com/wp-content/uploads/2011/04/download.png" width="146" height="48" />Not too long ago, we at <a href="http://www.redbitdev.com" target="_blank">RedBit Development</a> started working on making it easier for developers to get real feedback from their users.&#160; Knowing that a three star review with no comment, and no way to respond to the user, can be one of the most frustrating things about the Marketplace, we started out to build a library that wraps the API provided by the Fantastic <a href="http://www.uservoice.com" target="_blank">UserVoice.com</a>.</p>
<p>For those of you that don’t know, UserVoice.com provide “…tools that empower businesses to understand and delight their customers”.&#160; UV Gives your users a great looking and functioning web site to send Suggestions about your product or service or vote on any existing suggestions that your community has made.</p>
<p>Not only that, but they also provide a free version of their product.</p>
<p>Now that our open source library has been announced, and the <a href="http://wp7uservoice.codeplex.com" target="_blank">Codeplex</a> site is live, this is the first of a series of blog posts/tutorials in order to get as many people using the library as possible, since it’s my belief that WP7UserVoice could raise the quality and satisfaction of almost any app.</p>
<p>Here’s the steps you’ll need to do in order to set up the sample application included in the source library of the project:</p>
<ol>
<li>Sign up with <a href="http://uservoice.com/plans" target="_blank">UserVoice</a>.&#160; </li>
<li>Go to your admin dashboard ( https://&lt;yourdomain&gt;.uservoice.com/admin/dashboard ) and then click Settings </li>
<li>Click on the Channels tab </li>
<li>At the bottom of the page you’ll see the Add API Channel button click it and fill in the ensuing dialog </li>
<li>Make note of the key and secret values as we’ll need them soon </li>
<li>Download the source of the WP7UserVoice project from <a href="http://wp7uservoice.codeplex.com/SourceControl/list/changesets">here</a> </li>
<li>Set the three properties in the App_Launching method of App.xaml.cs to the values from UserVoice. </li>
<li>Run the Application and test it out.&#160; (Note that since you’ve just set up UserVoice, the first screen will correctly be blank) </li>
</ol>
<p>Expect quite a few more of these tutorials in the coming days/weeks, so if there is anything particular that you’d like to see, please let me know.</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/pbBHdia0M2g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2011/04/setting-up-your-uv-instance-with-wp7uservoice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2011/04/setting-up-your-uv-instance-with-wp7uservoice/</feedburner:origLink></item>
		<item>
		<title>WP7 Devs: Stop adding search buttons! [UPDATED]</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/56_HgHX0iQ4/</link>
		<comments>http://4mkmobile.com/2011/02/wp7-devs-stop-adding-search-buttons/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 04:29:55 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/?p=130</guid>
		<description><![CDATA[UPDATE: During some investigation by Shawn Wildermuth, he figured out that in order to show both the white “Enter” button as well as the typing suggestions, we should use the “ApplicationEnd” Input scope and not “Search”.&#160; Hopefully this get’s fixed in a future update. When Microsoft first showed off its new Metro design style with [...]]]></description>
			<content:encoded><![CDATA[<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NoSearchButtons" border="0" alt="NoSearchButtons" align="right" src="http://4mkmobile.com/wp-content/uploads/2011/02/NoSearchButtons.png" width="155" height="162" /><strong>UPDATE: </strong><em>During some investigation by <a href="http://bit.ly/h4dqVN">Shawn Wildermuth</a>, he figured out that in order to show both the white “Enter” button as well as the typing suggestions, we should use the “ApplicationEnd” Input scope and not “Search”.&#160; Hopefully this get’s fixed in a future update.</em></p>
<p>When Microsoft first showed off its new Metro design style with the Windows Phone 7, most people agreed that it was slick, clean, and perhaps most importantly, distinctive.&#160; With Blend and the stock controls and styles, developers are able to easily create distinct looking apps that match your company’s style, while still keeping it within the Metro guidelines.&#160; If you ever get stuck wondering how something should act or look, a quick trip through the OS and bundled apps should be enough to set you in the right direction.</p>
<p><strong>So why do so many applications get their search boxes wrong?</strong></p>
<p>As I mentioned above, a quick tour through the OS will give you all the inspiration you need, unlock your phone right now and hit the search button.&#160; Do you notice something missing?</p>
<p align="center"><a href="http://4mkmobile.com/wp-content/uploads/2011/02/image.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://4mkmobile.com/wp-content/uploads/2011/02/image_thumb.png" width="244" height="66" /></a></p>
<p>Search boxes within the Metro design are not supposed to have a button that says “OK”, “Search”, “Go” or anything else of the sort, there should be no button at all.&#160; Instead of the button, you should be using the <strike>“Search”</strike> “ApplicationEnd” Input Scope on your textboxes instead, like so:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">&lt;</span><span class="html">TextBox</span> <span class="attr">Name</span><span class="kwrd">=&quot;tbSearch&quot;</span> <span class="attr">InputScope</span><span class="kwrd">=&quot;ApplicationEnd&quot;</span><span class="kwrd">/&gt;</span></pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>What that will do for you is bring up the soft keyboard designed specifically for searching that looks like this:</p>
<p><a href="http://4mkmobile.com/wp-content/uploads/2011/02/image1.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://4mkmobile.com/wp-content/uploads/2011/02/image_thumb1.png" width="240" height="170" /></a></p>
<p>The biggest thing to note about this is the white key on the bottom right.&#160; That key is the only thing that should launch the search action.</p>
<p>Unfortunately, to the best of my knowledge, Microsoft didn’t add in a specific event for search, so you’ll need to add in some code to handle this.</p>
<p>First, wire up the KeyUp event of your TextBox so that it looks like so:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">&lt;</span><span class="html">TextBox</span> <span class="attr">Name</span><span class="kwrd">=&quot;tbSearch&quot;</span> </pre>
<pre><span class="lnum">   2:  </span>         <span class="attr">InputScope</span><span class="kwrd">=&quot;ApplicationEnd&quot;</span> </pre>
<pre class="alt"><span class="lnum">   3:  </span>         <span class="attr">KeyUp</span><span class="kwrd">=&quot;tbSearch_KeyUp&quot;</span><span class="kwrd">/&gt;</span></pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Then code your event handler to look for Key.Enter and call whatever functionality you are using to perform your search like so:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">private</span> <span class="kwrd">void</span> tbSearch_KeyUp(<span class="kwrd">object</span> sender, KeyEventArgs e)</pre>
<pre><span class="lnum">   2:  </span>{</pre>
<pre class="alt"><span class="lnum">   3:  </span>    <span class="kwrd">if</span> (e.Key == Key.Enter)</pre>
<pre><span class="lnum">   4:  </span>    {</pre>
<pre class="alt"><span class="lnum">   5:  </span>        PerformSearch(tbSearch.Text);</pre>
<pre><span class="lnum">   6:  </span>    }</pre>
<pre class="alt"><span class="lnum">   7:  </span>}</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Think I’m off my rocker and people should be able to put buttons where ever they want and it won’t detract at all from the user experience?&#160; Feel free to leave a comment below.</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/56_HgHX0iQ4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2011/02/wp7-devs-stop-adding-search-buttons/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2011/02/wp7-devs-stop-adding-search-buttons/</feedburner:origLink></item>
		<item>
		<title>Developer review of the LG Quantum 7Q (aka a great first step)</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/PxkY14dTqJ4/</link>
		<comments>http://4mkmobile.com/2011/01/developer-review-of-the-lg-quantum-7q-aka-a-great-first-step/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 07:58:47 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/2011/01/developer-review-of-the-lg-quantum-7q-aka-a-great-first-step/</guid>
		<description><![CDATA[Through my work with RedBit Development, I’ve been asked to put together a review of the LG Quantum 7Q from a developer’s perspective.&#160; Not being one to shy away from offering (some would say injecting) my opinion, I jumped at the chance.&#160; So read on for my thoughts on the LG Quantum 7Q in general, [...]]]></description>
			<content:encoded><![CDATA[<p>Through my work with RedBit Development, I’ve been asked to put together a review of the LG Quantum 7Q from a developer’s perspective.&#160; Not being one to shy away from offering (some would say injecting) my opinion, I jumped at the chance.&#160; So read on for my thoughts on the LG Quantum 7Q in general, as well as what it means for developers.</p>
<h4>First some history…</h4>
<p>Before making the jump to Windows Phone 7, I spent a few years building Windows Mobile applications for the Utility Industry all over North America.&#160; Working with WM full time gave me a good feel for what the Mobile OS had to offer, and while it certainly had its share of warts, I was a huge fan.&#160; Working and living in Canada meant that unless I felt like importing a phone, my options were severely limited.&#160; The phone that I really wanted, the HTC TyTN II, I don’t think ever made it north of the boarder.&#160; With that in mind, when I first looked through the list of launch devices, the Quantum being the only phone available in Canada that had a hardware keyboard certainly caught my eye.</p>
<h4>General overview of the phone…</h4>
<p>I should say at this point that the phone that I use for day to day use is the Samsung Focus, so be warned that a lot of these comparisons will be to it. Having said that, the first thing that I noticed between the two were the size and brightness of the screen.&#160; The LG in this case really doesn’t stack up, so if you select you phones based solely on the display; keep moving along, this isn’t the phone for you.</p>
<p>Obviously, the other big thing from a hardware standpoint is the keyboard.&#160; While the on-screen keyboard for WP7 is great, it still is an approximation of typing on keys.&#160; Having tactile feedback to button presses, as well as not having to constantly wipe finger prints of the screen really does remind me of how much I missed hardware keyboards on a phone.</p>
<p>On the software side, its Windows Phone in all it’s milky goodness with no noticeable difference in animations or app loading times.&#160; Where things do change however is in the Manufactures marketplace sections.&#160; Not only having quite a few good LG specific apps, but also sponsoring a few 3rd party apps to be free for the phone, LG has quite obviously done what Samsung has not, take this section seriously.&#160; </p>
<h4>The LG Marketplace</h4>
<p>I’m not going to go through each of the apps one by one because Mark has already done so better than I ever could that you can check out <a href="http://blog.markarteaga.com/ReviewLGQuantum7QMarketplace.aspx" target="_blank">here</a>.&#160; </p>
<p>What I will say however is that these applications are a bit of a tease.&#160; As a Developer who’s champing at the bit to get my grubby paws on access to both the compass and the camera control, seeing these apps are certainly bittersweet. Why LG hasn’t released an SDK to access the camera on their own (assuming MS would let them) makes me shake my head.</p>
<h4>What the keyboard means</h4>
<p>While most peoples initial thoughts on what a hardware keyboard means for a device is a bonus for those who prefer the feel of hardware buttons, there’s something that it brings that is far more important…screen real estate.&#160; Now this may not be as much of a problem for you, but with my fat thumbs, any game that using the screen to display a virtual joystick automatically puts me off.&#160; When an application has both a virtual joystick and buttons on the screen, they are basically killing off a third of the already limited screen just for user input.&#160; While I have yet to be able to find a game that actually uses the keyboard for input, I’m sure they can’t be far away.</p>
<p>The other thing that puts a damper on the keyboard is that many developers (me unfortunately included) have gotten lazy and skimped out on landscape support in their apps (I won’t be making this mistake again).</p>
<h4>Summary</h4>
<p>I’ll say this again, if the display is your only consideration, this is not the phone for you.&#160; If however you’re looking for a hardware keyboard and a real effort by the Manufacturer on the software front, LG has made a great first step to wining your choice.&#160; As to whether I’ll be dumping my Focus for the Quantum, the jury is still out.&#160; If LG can continue its strong start and take the next step on a couple of features, then I could certainly see Samsung’s device hitting the test bench.&#160; This takes me to …</p>
<h4>3 Action Items for LG</h4>
<p>Before listing these off, let me state that I’m not even 100% sure that these items are even feasible given the working relationship LG has with Microsoft and the restrictions that it entails.&#160; Also, since any hardware fixes would require me buying a new phone to benefit from, I’ve left them out and stuck to items that could theoretically be pushed via update to existing phones.</p>
<p>1) <strong>Get version 2 of the LG specific apps out the door.</strong>&#160; While nice, each of them has nagging problems that prevent them from truly being device sellers.</p>
<p>2)&#160; <strong>Show peoples the way. </strong>Take some of the marketing budget and pay a couple independent game developers to add keyboard input support to their apps.&#160; I think the first person they should talk to is Farseer Games about adding it to Krashlander (since this is one of the games LG has sponsored, I’m pretty sure they have the number)</p>
<p>3) <strong>Release a SDK.</strong> As I said, I’m not sure this is even possible, but if it is they really need to release a set of controls to support the camera and compass.</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/PxkY14dTqJ4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2011/01/developer-review-of-the-lg-quantum-7q-aka-a-great-first-step/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2011/01/developer-review-of-the-lg-quantum-7q-aka-a-great-first-step/</feedburner:origLink></item>
		<item>
		<title>Adventures in WP7 Ad Publishers–Part 1</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/sZOnUb1mSco/</link>
		<comments>http://4mkmobile.com/2010/12/adventures-in-wp7-ad-publisherspart-1/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 21:41:06 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Advertising]]></category>
		<category><![CDATA[AdMob]]></category>
		<category><![CDATA[Ads]]></category>
		<category><![CDATA[Smaato]]></category>
		<category><![CDATA[WP7]]></category>
		<category><![CDATA[wp7dev]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/?p=116</guid>
		<description><![CDATA[This is the first in a series of blog posts about my adventures in trying to set up advertising within some of our WP7 applications.&#160; While the first few posts may come across as b#$#ing sessions, hopefully my trials can save a few of you some aggravation when it comes time to monetizing your free [...]]]></description>
			<content:encoded><![CDATA[<p>This is the first in a series of blog posts about my adventures in trying to set up advertising within some of our WP7 applications.&#160; While the first few posts may come across as b#$#ing sessions, hopefully my trials can save a few of you some aggravation when it comes time to monetizing your free apps. </p>
<p>This post will deal with the first three Ad Solutions I’ve tried to use, with more to follow, so without further ado…</p>
<h2></h2>
<h3>Microsoft Advertising SDK for Windows Phone 7</h3>
<p>In case you can’t tell, I’m a developer of WP7 apps who lives in Canada.&#160; This means that because I’m not in the States, I cannot use <a href="http://msdn.microsoft.com/en-us/library/ff973757(MSADS.10).aspx" target="_blank">Microsoft’s Ad Control for Windows Phone 7.</a>&#160; While they have said that they are looking to expand the service to allow non-US usage, they haven’t said anything about when that might happen.</p>
<h3>AdMob</h3>
<p>While <a href="http://admob.com" target="_blank">AdMob</a> doesn’t support WP7 out of the box, they do provide an SDK for use with mobile web applications that could be wrapped in a browser control that could be a solution.&#160; That is the premise behind two different open source projects on Codeplex: <a href="http://admobwp7.codeplex.com/" target="_blank">admob for Windows Phone 7</a> and <a href="http://moads.codeplex.com/" target="_blank">MoAds</a>.&#160; Looking through them I decided to go with MoAds as it purports to support multiple different Ad Publishers.&#160; Getting it up and running was a breeze.&#160; In about 10 minutes I had the control working and displaying the occasional ad (the fill rate of the first 200 or so requests was 4%).&#160; I started searching around for ways to increase the fill rate, and came across <a href="https://groups.google.com/forum/?fromgroups#!topic/admob-publisher-discuss/zXjGmMTRdNc" target="_blank">this thread</a> in the official Google group.&#160; Basically what’s happening is that AdMob is happy to serve as many ads as they can to your WP7 device however they will also mark any click that you might get as invalid.&#160; What this means is that there is no way to actually get paid for the ads that they serve to your app.&#160; </p>
<p>Dirty pool Google, dirty pool.</p>
<p>The one good peace of info I received from that thread though was that the WP7 developer in question moved on to Smaato</p>
<h3>Smaato</h3>
<p>At first glance, <a href="http://www.smaato.com/" target="_blank">Smaato</a> looked like it could be a perfect fit, promises of high fill rates, multiple ad networks supported and even a Windows Phone 7 SDK!&#160; I quickly filled my info in and downloaded the SDK.&#160; Here’s where I first realized that there might be a problem, to get the WP7 SDK you download the Windows Mobile SDK.&#160; Using the name of the old mobile OS from MS certainly isn’t a showstopper so I kept going.</p>
<p>Downloading the samples and running them was mostly pain free.&#160; The test app was ugly as sin, but worked exactly as you’d expect. I then moved on to adding it to our application and fired up the emulator. </p>
<p>It worked first time out.</p>
<p>Rerunning it however is when it started going south quickly.&#160; I noticed that when I reran the application, it was asking me to allow the app to use my current location (this is part of the application I was testing with, however it should only ever ask you the first time and caches the result).&#160; Every time I restarted the application, it completely forgot that I had already given permission for GPS access.&#160; It wasn’t long before realizing what was happening:</p>
<p>The Smaato SDK will delete everything you’ve stored in Isolated Storage without warning.</p>
<p>That’s right, it doesn’t just clear it’s own cache, it deletes everything!&#160; Checking around to make sure I wasn’t just being stupid, I found others that have come to the same conclusion and fired off a support request to see if there is a fix coming anytime soon.</p>
<p>&#160;</p>
<p>Until next time, if any of you know of any ad providers that actually work on WP7 please let me know.</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/sZOnUb1mSco" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2010/12/adventures-in-wp7-ad-publisherspart-1/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2010/12/adventures-in-wp7-ad-publisherspart-1/</feedburner:origLink></item>
		<item>
		<title>OGDI, bring joy to developers everywhere.</title>
		<link>http://feedproxy.google.com/~r/4mkmobileblog/~3/QalFtJjNyjg/</link>
		<comments>http://4mkmobile.com/2010/11/ogdi-bring-joy-to-developers-everywhere/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 21:10:05 +0000</pubDate>
		<dc:creator>barranger</dc:creator>
				<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://4mkmobile.com/?p=112</guid>
		<description><![CDATA[Recently I had the pleasure of working on the project Emitter.ca that ties two things very important to me together: open government data, and the environment.  It was the way in which we interacted with the data that I truly loved&#8230; As a developer, you know you’ve had this experience: Some government agency announces that they are [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I had the pleasure of working on the project <a href="http://www.emitter.ca/">Emitter.ca</a> that ties two things very important to me together: open government data, and the environment.  It was the way in which we interacted with the data that I truly loved&#8230;</p>
<p>As a developer, you know you’ve had this experience:</p>
<p>Some government agency announces that they are finally embracing open data.  The wheels upstairs start to turn dreaming up all the cool apps you’re going to build with this new found bounty. But then it happens, you get to the part of the announcement that describes the format, and all the wind comes out of your sales…flat file.  Your dreams of building apps that would make you the envy of your peers, would get you written up on TechCrunch, and discussed at length on YCombinator are now being replaced by thoughts of the hours it’s going to take to set up the database and worries about scheduling the update process to ensure your data is even close to up to date.  Your fast lane to fame and fortune just became the traffic jam heading to cottage country on the Friday of a long weekend.</p>
<p><a href="http://ogdisdk.cloudapp.net/">OGDI </a>goes a long way to solving this problem.</p>
<p>The fine developers of the <a href="http://ogdisdk.cloudapp.net/">Open Government Data Initiative</a> have obviously been through this headache enough times that they decided to do something about it.  The open source project (<a href="http://ogdi.codeplex.com/">hosted on codeplex</a>) allows any government agency the ability to not just publish their data, but actually provide developers of all types real tools to access it.  Exposing a RESTful service, producing many different output formats including XML, KML, Json and Jsonp, the Azure backed framework saves developers countless hours and dollars by, in many cases, providing everything that the client developer needs from the server tier.  Not willing to leave good enough alone, the OGDI framework provides an interactive SDK that allows you to set up any of the queries that you need while seeing the results of said queries, while also providing example code for multiple different programming languages.  Given all this, I certainly expect OGDI to quickly become the defacto standard for the public sector to engage the development community.</p>
<p>Once the correct decision was made to move most of the data to OGDI (<a href="http://datadotgc.cloudapp.net/DataCatalog/DataSetList">using DataDOTgc’s instance</a>), I was tasked with migrating the data.  Most of the hard work had already been done by the rest of the team (especially <a href="http://twitter.com/mattdance">Matthew Dance</a>) in shaping the data into the normalized format that we required.  Armed with a SQL Server database full of data and the many tools that are available for moving data into the cloud, all it took was a couple of hours to successfully upload all of the data.  Once it was up, all the features provided by OGDI worked like a charm.</p>
<p>To show you exactly what I mean about how easy OGDI makes app development, in the very near future I’ll be blogging throughout the entire process of porting the emitter.ca project to Windows Phone 7, Stay tuned…</p>
<img src="http://feeds.feedburner.com/~r/4mkmobileblog/~4/QalFtJjNyjg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://4mkmobile.com/2010/11/ogdi-bring-joy-to-developers-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://4mkmobile.com/2010/11/ogdi-bring-joy-to-developers-everywhere/</feedburner:origLink></item>
	</channel>
</rss>
