<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>.Netitude</title>
	<atom:link href="http://netitude.bc3tech.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://netitude.bc3tech.net</link>
	<description>.Net development with an edge</description>
	<lastBuildDate>Sun, 26 May 2013 03:35:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Keepin&#8217; up with the Joneses</title>
		<link>http://netitude.bc3tech.net/2013/05/25/keepin-up-with-the-joneses/</link>
		<comments>http://netitude.bc3tech.net/2013/05/25/keepin-up-with-the-joneses/#comments</comments>
		<pubDate>Sun, 26 May 2013 03:13:48 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[lumia928]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=837</guid>
		<description><![CDATA[This is hard work. New shit comes out and to keep myself current in my skills and knowledge I’ve got to get it. Well, that’s what I tell my wife anyway Today I became the proud owner of a Nokia Lumia 928. Unlike my last razzle-dazzle for an off-contract phone, this time it was quite [...]]]></description>
				<content:encoded><![CDATA[<p align="justify">This is hard work. New shit comes out and to keep myself current in my skills and knowledge I’ve got to get it. Well, that’s what I tell my wife anyway <img src='http://netitude.bc3tech.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p align="justify">Today I became the proud owner of a <a href="http://www.nokia.com/us-en/phones/phone/lumia928/" target="_blank">Nokia Lumia 928</a>. Unlike <a href="http://netitude.bc3tech.net/2012/12/28/price-matching-like-a-boss/" target="_blank">my last razzle-dazzle for an off-contract phone</a>, this time it was quite straightforward. Verizon has had this phone at the cheapest of any place off-contract. Only recently did prices fall at Amazon to match them. Since there’s a Verizon store just down the road from me, the choice was easy.</p>
<p align="justify">The struggle I had in getting this phone was that it seemed that Nokia (or Verizon) are really pushing the white model over the black one. So much so that I was told by a VZW rep that when the Nokia rep came to their store, she didn’t even know if VZW was going to sell anything other than the white version. Sure enough, try and get your eyes on a black one and you’ll see what I mean. They seem to only be available online, and rarely for “in store pickup” or anything of the like.</p>
<p align="justify">So I went to my local VZW with intentions of just seeing &amp; handling a 928, knowing it’d be a white one. When I saw it I definitely knew I’d be getting one. The more I thought about it, it occurred that while I’d prefer to have black, white might just be the conversation starter that Windows Phone needs. So I opted for the white as 1) I could get it right there and then and walk home with it in my hand, 2) I think this might afford me more opportunities to show off Windows Phone to the masses, and 3) the ever-sly salesman provided me with a $20 black gel case.</p>
<p align="justify">Let’s get on to the first impressions, shall we?</p>
<h2 align="justify">Hardware</h2>
<p align="justify">The outer casing is nice, buttons are pronounced enough to easily find and manipulate. After having the HTC Trophy I certainly appreciate this. The button layout on the 928 matches that of the 822 with all 4 buttons (volume up/down, power, camera) running along the right-hand side (as you look at the screen upright). The one thing I can’t for the life of me understand is what on earth made them put the micro USB port on the <strong>top</strong> of it. In some instances I can see where this might make sense, but overall it seems quite awkward. Especially when you put it in your car’s dash mount and try and plug in a charger – I’m working around this by just having the phone sit horizontal in the mount all the time now instead of vertical. If Microsoft eventually makes the Windows Phone start screen workable in landscape mode (I suggested this before WP7 Mango) this will pose much less of an issue.</p>
<p align="justify">The battery is freaking huge. I don’t think you really realize how much time you get out of a 2000mAh (or how long it takes to charge one) until you have it. This thing has been on the charger for seriously the past 8 hours and still isn’t full. Granted, I have been using it off and on but still – my 822 would’ve been fully charged by now I’m sure of it. I can’t wait to see just how much time I get out of a full charge!</p>
<p align="justify">Putting the SIM card in is no easy task. It was harrowing to watch the VZW rep do it – and I’m glad it was him doing it and not me. He was practically forcing the SIM tray back in to the top of the phone. I haven’t had the balls to open it back up and see if he actually did it right or not – just going to let it work.</p>
<h2 align="justify">Size</h2>
<p align="justify">Big. Like, Galaxy S4 big. Keep in mind the frames of reference for me are the HTC Trophy, then the Lumia 822. Those are the only other smartphones I’ve ever owned. My wife has had the Motorola Droid, HTC Incredible, and now the iPhone 4S. All of those are also “small” by today’s standards. This thing is substantial. The upshot is that it’s not heavy.</p>
<h2 align="justify">Storage</h2>
<p align="justify">Definitely adequate for my purposes. I am happy that they opted for 32gb of on-board memory – if it had been 16 and not expandable I probably wouldn’t have bought it. I have a 64gb Micro XDHC card in my 822 on top of its 16gb of internal storage, so I know that 16gb w/o anything external just isn’t going to cut it for me.</p>
<h2 align="justify"></h2>
<h2 align="justify"></h2>
<h2 align="justify"></h2>
<h2 align="justify">Camera</h2>
<p align="justify">When I got home the first thing I did was tell my wife to take a picture of one of the boys (late afternoon, inside, cloudy day, shades drawn) without using the flash. Of course as you know I’m setting her up to see just how good the PureView camera is. The picture it took was awesome. She was impressed.</p>
<p align="justify"><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/WP_20130525_001-1.jpg"><img title="WP_20130525_001 (1)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="WP_20130525_001 (1)" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/WP_20130525_001-1_thumb.jpg" width="139" height="244"></a></p>
<p align="justify">Of course my endgame here is to eventually get her off that God-awful iPhone!</p>
<p align="justify">About the only thing I could wish more for in this area is the stabilization that the 920 offers; the 928 doesn’t appear to bring this to the table. Or if it does maybe I have early-onset Parkinson’s.</p>
<h2>Goodies</h2>
<p>One thing the 928 has that my 822 doesn’t are a couple of add on apps. Or, if the 822 could get them I didn’t know and it never installed them</p>
<h3>Storage Check</h3>
<p>Allows me to see how my storage is being used, and clear the “Other Storage” area that annoys all us OCD WP8 owners out there. Here are a couple of screenshots of what it looks like:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0001.png"><img title="wp_ss_20130525_0001" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wp_ss_20130525_0001" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0001_thumb.png" width="267" height="443"></a><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0002.png"><img title="wp_ss_20130525_0002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wp_ss_20130525_0002" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0002_thumb.png" width="267" height="443"></a></p>
<h3></h3>
<h3>network+</h3>
<p>Looks like I can use this to turn on Call waiting and Call forwarding right from my phone. Pretty slick:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0005.png"><img title="wp_ss_20130525_0005" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wp_ss_20130525_0005" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0005_thumb.png" width="267" height="443"></a></p>
<h3>find my phone</h3>
<p>The bug I reported to Windows Phone Support and Nokia appears to be fixed in the firmware/core OS of the 928; ‘find my phone’ shows the correct status and expected options:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0003.png"><img title="wp_ss_20130525_0003" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wp_ss_20130525_0003" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0003_thumb.png" width="261" height="432"></a><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0004.png"><img title="wp_ss_20130525_0004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wp_ss_20130525_0004" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/wp_ss_20130525_0004_thumb.png" width="260" height="431"></a></p>
<p>&nbsp;</p>
<p>As I said above, I did end up adding a black carbon fiber-ish gel case to my phone to help cover up the white and it doesn’t look half bad. Here’s what I’m carrying around now! (Photos taken by my 822)</p>
<div id="scid:66721397-FF69-4ca6-AEC4-17E6B3208830:98359652-ec4e-4019-a6e1-4275895fedf3" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">
<table border=0 cellspacing=0 cellpadding=0 style='outline:none;border-style:none;margin:0px;padding:0px;width:400px;border-collapse:collapse;' >
<tr>
<td colspan=2 style='outline:none;border-style:none;margin:0px;padding:5px 0px 5px 5px;width:157px;vertical-align:bottom;' >                            <a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172224&amp;parid=3044403FCE28816B!172223&amp;type=1&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" target="_blank" border="0" style="outline:none;border-style:none;margin:0px;padding:0px;">                                <img style="outline:none;border-style:none;padding:0px;margin:0px;border:0px;background:none;background-image:none;vertical-align:bottom;" border="0" alt="View album" title="View album" width="157" height="157" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/21114088363A5D422A.png" /></a>                        </td>
<td colspan=3 style='vertical-align:middle;margin:0px;padding:5px 5px 5px 0px;outline:none;border-style:none;width:223px' >
<div style="margin-left:10px;top:-3%;" >
<div style='width:223px;overflow:visible;'><a style="text-decoration:none;" href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=browse&amp;resid=3044403FCE28816B!172223&amp;parid=3044403FCE28816B!132&amp;type=5&amp;authkey=!AEtpHCTLFseioE4&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos" target="_blank"><span  style="line-height:1.26em;padding:0px;width:223px;font-size:26pt;font-family:'Segoe UI', helvetica, arial, sans-serif;"  defaultText="Enter album name here">Lumia 928</span></a></div>
<div style="padding:10px 0px 0px 0px;margin:0px;">
<table border=0 cellspacing=0 cellpadding=0 style="margin:0px;padding:0px;outline:none;border-style:none;border-collapse:collapse;width:auto;">
<tr>
<td style="vertical-align:top;outline:none;border-style:none;margin:0px;padding:10px 15px 6px 0px;"><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172223&amp;parid=3044403FCE28816B!132&amp;type=5&amp;authkey=!AEtpHCTLFseioE4&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;">VIEW SLIDE SHOW</a></td>
<td style="vertical-align:top;outline:none;border-style:none;margin:0px;padding:10px 0px 6px 0px;"><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=downloadphotos&amp;resid=3044403FCE28816B!172223&amp;parid=3044403FCE28816B!132&amp;type=5&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;">DOWNLOAD ALL</a></td>
</tr>
</table></div>
</p></div>
</td>
</tr>
<tr>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 5px;margin:0px;width:76px;height:76px;' ><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172225&amp;parid=3044403FCE28816B!172223&amp;type=1&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;"><img style="outline:none;border-style:none;padding:0px;margin:0px;border:0px;background:none;background-image:none;vertical-align:bottom;" border="0" width="76" alt="View album" title="View album" height="76" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/21070834606CC115A9.png" /></a></td>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 0px;margin:0px;width:76px;height:76px;' ><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172226&amp;parid=3044403FCE28816B!172223&amp;type=1&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;"><img style="outline:none;border-style:none;padding:0px;margin:0px;border:0px;background:none;background-image:none;vertical-align:bottom;" border="0" width="76" alt="View album" title="View album" height="76" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/2109246148489BBB1A.png" /></a></td>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 0px;margin:0px;width:76px;height:76px;' ><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172227&amp;parid=3044403FCE28816B!172223&amp;type=1&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;"><img style="outline:none;border-style:none;padding:0px;margin:0px;border:0px;background:none;background-image:none;vertical-align:bottom;" border="0" width="76" alt="View album" title="View album" height="76" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/211953530061978B5F.png" /></a></td>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 0px;margin:0px;width:76px;height:76px;' ><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172228&amp;parid=3044403FCE28816B!172223&amp;type=1&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;"><img style="outline:none;border-style:none;padding:0px;margin:0px;border:0px;background:none;background-image:none;vertical-align:bottom;" border="0" width="76" alt="View album" title="View album" height="76" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/21049207727A935BA4.png" /></a></td>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 0px;margin:0px;width:76px;height:76px;' ><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172229&amp;parid=3044403FCE28816B!172223&amp;type=1&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;"><img style="outline:none;border-style:none;padding:0px;margin:0px;border:0px;background:none;background-image:none;vertical-align:bottom;" border="0" width="76" alt="View album" title="View album" height="76" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/21022335712880AE5D.png" /></a></td>
</tr>
<tr>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 5px;margin:0px;width:76px;height:76px;' ><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172230&amp;parid=3044403FCE28816B!172223&amp;type=1&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;"><img style="outline:none;border-style:none;padding:0px;margin:0px;border:0px;background:none;background-image:none;vertical-align:bottom;" border="0" width="76" alt="View album" title="View album" height="76" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/2087619043417C7EA2.png" /></a></td>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 0px;margin:0px;width:76px;height:76px;' ><a href="https://skydrive.live.com/redir.aspx?cid=3044403fce28816b&amp;page=play&amp;resid=3044403FCE28816B!172231&amp;parid=3044403FCE28816B!172223&amp;type=1&amp;Bsrc=Photomail&amp;Bpub=SDX.Photos&amp;authkey=!AEtpHCTLFseioE4" border="0" target="_blank" style="font-family:'Segoe UI', helvetica, arial, sans-serif;font-size:8pt;outline:none;border-style:none;text-decoration: none;padding:0px;margin:0px;"><img style="outline:none;border-style:none;padding:0px;margin:0px;border:0px;background:none;background-image:none;vertical-align:bottom;" border="0" width="76" alt="View album" title="View album" height="76" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/20979081955A784EE7.png" /></a></td>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 0px;margin:0px;width:76px;height:76px;' >&nbsp;</td>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 0px;margin:0px;width:76px;height:76px;' >&nbsp;</td>
<td style='vertical-align:bottom;outline:none;border-style:none;padding:0px 5px 5px 0px;margin:0px;width:76px;height:76px;' >&nbsp;</td>
</tr>
</table>
</div>
<h1>&nbsp;</h1>
<h1>Don’t forget!</h1>
<p>If you’re as badass as yours truly and pick up a 928 between now and June 23rd, <a href="http://aka.ms/appcredit" target="_blank">claim your $25 Windows Phone Store credit</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/05/25/keepin-up-with-the-joneses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFS in the Cloud&#8211;Delete a Team Project</title>
		<link>http://netitude.bc3tech.net/2013/05/07/tfs-in-the-clouddelete-a-team-project/</link>
		<comments>http://netitude.bc3tech.net/2013/05/07/tfs-in-the-clouddelete-a-team-project/#comments</comments>
		<pubDate>Tue, 07 May 2013 15:21:37 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[tfs]]></category>
		<category><![CDATA[visualstudio]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=770</guid>
		<description><![CDATA[I’ve been using TFS “preview” for a while now for my personal projects. Naturally as a dev starts using a new service we pretty much just go hog wild clicking stuff, turning things on, naming stuff, and adding things to it – well, I do anyway. This tends to, however, leave a pretty good mess [...]]]></description>
				<content:encoded><![CDATA[<p>I’ve been using TFS “preview” for a while now for my personal projects. Naturally as a dev starts using a new service we pretty much just go hog wild clicking stuff, turning things on, naming stuff, and adding things to it – well, I do anyway.</p>
<p>This tends to, however, leave a pretty good mess by the time you’re done. So… after poking around the TFS website I couldn’t find anywhere to delete projects that I had created. On the home screen there are “X”s beside each project, but that just removes them from the “quick list” that shows up there – it doesn’t delete them from the service. So… what to do next?</p>
<p>Did some sleuthing and discovered the easiest way to do this is via the command line. As a preface, I have logged in to my TFS account on the web, and have already attached to it in VS (though did not have VS running at the time) so I think one or both of those nails down the authentication that makes the following possible.</p>
<p>Fire up the VS Command Prompt from your start screen:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/image2.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/image_thumb2.png" width="233" height="87"></a></p>
<p>at the prompt that follows, simply type:</p>
<p>
<blockquote>
<pre>tfsdeleteproject /collection:https://[youraccount].visualstudio.com/DefaultCollection “[TFS Project Name]”</pre>
</blockquote>
<p>eg:</p>
<p>
<blockquote>
<pre>tfsdeleteproject /collection:https://contoso.visualstudio.com/DefaultCollection “Awesome Windows8 Project”</pre>
</blockquote>
<p>and voila, it’ll roll through removing it from your TFS Cloud account. The interesting thing to note is that the project you delete will NOT remove itself from that quick list that opens on your home page, though – so you’ll have to take care of that manually.</p>
<p>Enjoy a clean TFS account again, now that you’ve got it all figured out.</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/05/07/tfs-in-the-clouddelete-a-team-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mo&#8217; toys, Mo&#8217; problems</title>
		<link>http://netitude.bc3tech.net/2013/05/02/mo-toys-mo-problems/</link>
		<comments>http://netitude.bc3tech.net/2013/05/02/mo-toys-mo-problems/#comments</comments>
		<pubDate>Fri, 03 May 2013 03:49:13 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ideapad]]></category>
		<category><![CDATA[lenovo]]></category>
		<category><![CDATA[yoga]]></category>
		<category><![CDATA[yoga13]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=767</guid>
		<description><![CDATA[I am the proud new owner of a new Lenovo IdeaPad Yoga 13. And I couldn’t be happier. However, as I get this bad boy all set up and in ship shape, I’m encountering some things that require investigation to figure out how to get them to act the way I want. Plugged in, not [...]]]></description>
				<content:encoded><![CDATA[<p>I am the proud new owner of a new Lenovo IdeaPad Yoga 13. And I couldn’t be happier. However, as I get this bad boy all set up and in ship shape, I’m encountering some things that require investigation to figure out how to get them to act the way I want.</p>
<h2>Plugged in, not charging? what?</h2>
<p>I was sitting here working and had it plugged in. Every time I looked down, I saw the battery not filled up. I thought “dang this is taking a while to charge, must have a lot of capacity” so I checked the % it was at so I could keep track of if it was charging. It was sitting at 60% – and it sat there.</p>
<p>Turns out this is a “side effect” of a setting w/in Lenovo’s “Energy Management” utility.</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/image.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/image_thumb.png" width="217" height="382"></a></p>
<p>If set to “Optimized Battery Health”, charging will never go past 60%. If you set it to Max Life, you’ll get it to charge fully. I’m sure this has something to do w/ battery chemistry but hey, I added a 2yr extended warranty on this thing, if the battery flakes out, I’ll get it taken care of.</p>
<h2>Airplane mode… I can has my WiFi back?</h2>
<p>I was playing w/ the Fn keys across the top of the keyboard and hit the one w/ the picture of the airplane on it. As expected, this turned airplane mode on. As NOT expected, when I hit the button again (and airplane mode was shut off) I didn’t get my WiFi back! Wtf? I clicked the network icon in the tray and saw simply “WiFi (Off)” w/ no option to change it. How in the…</p>
<p>Pretty simple fix, but definitely not intuitive. After you shut OFF Airplane mode, you have to go to PC Settings and turn WiFi back on <em>manually:</em></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/05/image1.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/05/image_thumb1.png" width="652" height="444"></a></p>
<p>If you decide to pick up one of these gorgeous devices, or perhaps one of the other great new ultrabooks Lenovo’s kicking out (Carbon X1, yummy), hopefully this saves you some time/headaches!</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/05/02/mo-toys-mo-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrate your website with your Windows 8 app</title>
		<link>http://netitude.bc3tech.net/2013/04/16/integrate-your-website-with-your-windows-8-app/</link>
		<comments>http://netitude.bc3tech.net/2013/04/16/integrate-your-website-with-your-windows-8-app/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 16:41:46 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[win8dev]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=733</guid>
		<description><![CDATA[Yeah yeah, I know. This is already out there. But here’s the thing: in all the sites and documents I read while trying to figure this out, nobody TOLD ME where to FIND the information that goes in to the META tags! [facepalm] So let me save you a ton of time. When you want [...]]]></description>
				<content:encoded><![CDATA[<p>Yeah yeah, I know. This is <a href="http://msdn.microsoft.com/en-us/library/ie/hh781489%28v=vs.85%29.aspx" target="_blank">already out there</a>. But here’s the thing: in all the sites and documents I read while trying to figure this out, nobody TOLD ME where to FIND the information that goes in to the META tags! [facepalm]</p>
<p>So let me save you a ton of time.</p>
<p>When you want to do this, you are basically adding META tags to your web site/pages that IE10 reads, recognizes, and links to the Store/OS accordingly (Store if you don’t have the app installed OS launch if you do).</p>
<p>Easy peasy, let’s have a look at what exactly we add to the pages:</p>
<pre class="brush: xml; title: ; notranslate">&lt;meta name=&quot;msApplication-ID&quot; content=&quot;microsoft.build.App&quot;/&gt;
&lt;meta name=&quot;msApplication-PackageFamilyName&quot; content=&quot;microsoft.build_8wekyb3d8bbwe&quot;/&gt;</pre>
<p>Easy enough, let’s find these pieces in our app. Fire up the manifest viewer in Visual Studio 2012 and you’re met with something like this:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image7.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb7.png" width="750" height="330" border="0" /></a></p>
<p>Head on over to the ‘Packaging’ area:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image8.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb8.png" width="753" height="260" border="0" /></a></p>
<p>Well that was easy enough. Package Family Name is staring you right in the face (last field on that page).</p>
<p>But… which one is the Application ID???</p>
<p>Note that if you get the package family name right and the application ID wrong, the behavior you’ll see on your site is that it will ALWAYS show “Get app in store” instead of “Switch to app” after you’ve installed it. So it’s quite easy to think you’ve got it done right when you’ve only got it done <em>half</em> right.</p>
<p>I used the Package name, Display Name, and a host of other things and never found the right one. Then I thought, “let’s see what <em>inside</em> the manifest looks like”. That’s when it revealed itself. To do this, right click the manifest file in the Solution Explorer and click “view code”:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image9.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb9.png" width="464" height="249" border="0" /></a></p>
<p>And blamo:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image10.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb10.png" width="730" height="107" border="0" /></a></p>
<p>It’s kind of frustrating that this isn’t easily editable anywhere as ‘App’ is kinda stupid, but hey it only shows up here and in a META tag on my site so who cares. Slap ‘App’ in the Application-ID meta tag shown above and voila!</p>
<p>Hope that saved you some time!</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/04/16/integrate-your-website-with-your-windows-8-app/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Now available in the Windows Store</title>
		<link>http://netitude.bc3tech.net/2013/04/15/now-available-in-the-windows-store/</link>
		<comments>http://netitude.bc3tech.net/2013/04/15/now-available-in-the-windows-store/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 21:06:19 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[win8dev]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=721</guid>
		<description><![CDATA[Thanks to the awesome folks over at IdeaNotion and their EXCELLENT tool, IdeaPress, you can now read .Netitude from the comfort of your sexy Modern environment with the .Netitude Blog Windows 8 app. Head over to the Windows Store and install it now, or if you’re reading this from w/in the IE10 Modern application on your [...]]]></description>
				<content:encoded><![CDATA[<p>Thanks to the awesome folks over at <a href="http://ideanotion.net/" target="_blank">IdeaNotion</a> and their EXCELLENT tool, <a href="http://ideapress.me/" target="_blank">IdeaPress</a>, you can now read .Netitude from the comfort of your sexy Modern environment with the <a href="http://apps.microsoft.com/windows/app/netitude-blog/53ea7f95-4b7a-4b53-b56c-1177346d1279" target="_blank">.Netitude Blog Windows 8 app</a>.</p>
<p>Head over to the <a href="http://apps.microsoft.com/windows/app/netitude-blog/53ea7f95-4b7a-4b53-b56c-1177346d1279" target="_blank">Windows Store</a> and install it now, or if you’re reading this from w/in the IE10 Modern application on your Windows 8 device, click the “wrench+” icon to install it right from here!</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image5.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb5.png" width="231" height="226" border="0" /></a></p>
<p>But if you’ve already installed it (YOU’RE AWESOME), you can just as easily switch to the app using the same icon!</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image6.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb6.png" width="231" height="223" border="0" /></a></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/04/15/now-available-in-the-windows-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 8&#8242;s GridView &#8211; Not meant for data entry!</title>
		<link>http://netitude.bc3tech.net/2013/04/12/windows-8s-gridviewnot-meant-for-data-entry/</link>
		<comments>http://netitude.bc3tech.net/2013/04/12/windows-8s-gridviewnot-meant-for-data-entry/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 20:00:10 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[win8dev]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=706</guid>
		<description><![CDATA[Here’s an interesting experiment. Slap this in to a blank Windows Store app’s MainPage.xaml: Now run it in the simulator and flip to Touch-mode. Click the bottom-most textbox in the first column. See what happens? You can’t see the textbox you’re typing in to! The OS doesn’t handle the “auto-scrolling” of the page’s frame when you [...]]]></description>
				<content:encoded><![CDATA[<p>Here’s an interesting experiment. Slap this in to a blank Windows Store app’s MainPage.xaml:</p>
<pre class="brush: xml; title: ; notranslate">&lt;Grid&gt;
	&lt;Grid.RowDefinitions&gt;
		&lt;RowDefinition Height=&quot;Auto&quot; /&gt;
	&lt;/Grid.RowDefinitions&gt;
	&lt;Grid.ColumnDefinitions&gt;
		&lt;ColumnDefinition Width=&quot;Auto&quot; /&gt;
		&lt;ColumnDefinition Width=&quot;Auto&quot; /&gt;
	&lt;/Grid.ColumnDefinitions&gt;

	&lt;GridView Grid.Column=&quot;0&quot;&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
		&lt;TextBox /&gt;
	&lt;/GridView&gt;

	&lt;StackPanel Orientation=&quot;Vertical&quot;
                        Grid.Column=&quot;1&quot;&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
		&lt;TextBox Margin=&quot;10&quot; /&gt;
	&lt;/StackPanel&gt;
&lt;/Grid&gt;
</pre>
<p>Now run it in the simulator and flip to Touch-mode.</p>
<p>Click the bottom-most textbox in the first column.</p>
<p>See what happens?</p>
<div class="wp-caption alignnone" style="width: 515px"><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image3.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb3.png" width="505" height="286" border="0" /></a><p class="wp-caption-text">Textbox within GridView chosen, keyboard obstructs input</p></div>
<div class="wp-caption alignnone" style="width: 515px"><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image4.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb4.png" width="505" height="286" border="0" /></a><p class="wp-caption-text">Textbox within StackPanel chosen, screen automatically slides up so keyboard doesn&#8217;t obstruct input</p></div>
<p>You can’t see the textbox you’re typing in to! The OS doesn’t handle the “auto-scrolling” of the page’s frame when you are within a GridView. This happens no matter WHAT other control your textbox might be within. If any ancestor of the textbox is a GridView, sayonara Keyboard Obstruction Handling.</p>
<p>So… why?</p>
<p>My thought process goes back to why the GridView exists. I feel as though it exists solely to support the Semantic Zoom capability, which you wouldn’t really be doing on an input form.</p>
<p>So, what can we do instead?</p>
<p>Well, we can do what’s shown here and replace it with a simple StackPanel, for one.</p>
<p>But what if you need DataBinding to a list of items? The solution there is fairly simple: Use an ItemsControl. Voila.</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/04/12/windows-8s-gridviewnot-meant-for-data-entry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 8&#8242;s ComboBox and the CarouselPanel</title>
		<link>http://netitude.bc3tech.net/2013/04/12/windows-8s-combobox-and-the-carouselpanel/</link>
		<comments>http://netitude.bc3tech.net/2013/04/12/windows-8s-combobox-and-the-carouselpanel/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 16:49:49 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[win8dev]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=694</guid>
		<description><![CDATA[Something you may or may not have noticed in your Windows 8 development is that the ComboBox uses a pretty interesting control new to Windows 8, the CarouselPanel. What the CarouselPanel brings to us is the ability to, as the name suggests, roll continuously through the list of items, looping back to the beginning or [...]]]></description>
				<content:encoded><![CDATA[<p>Something you may or may not have noticed in your Windows 8 development is that the ComboBox uses a pretty interesting control new to Windows 8, the CarouselPanel.</p>
<p>What the CarouselPanel brings to us is the ability to, as the name suggests, roll continuously through the list of items, looping back to the beginning or end as you go forward or backward (respectively). It’s a pretty neat trick with one little annoyance (in my opinion): it doesn’t behave this way everywhere. In addition, I had a client recently to actually wrote it up as a bug and made me come up with a way to get rid of it. I’m sure I’m not alone here, and finding the solution involved a lot of Binging, but in the end it was me poking around and figuring it all out on my own as nobody had a really straightforward solution.</p>
<p>Here is the problem, illustrated. Using the following snippet of code in page:</p>
<pre class="brush: xml; title: ; notranslate">            &lt;ComboBox Height=&quot;32&quot;
                      Margin=&quot;100&quot;&gt;
                &lt;TextBlock Text=&quot;one&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;two&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;three&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;four&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;five&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;six&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;seven&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;eight&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;nine&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;ten&quot;
                           Margin=&quot;10&quot; /&gt;
                &lt;TextBlock Text=&quot;eleven&quot;
                           Margin=&quot;10&quot; /&gt;
            &lt;/ComboBox&gt;
</pre>
<p>You can pop open the simulator and hit the ‘Basic touch mode’ button on the toolbar to see:</p>
<div class="wp-caption alignnone" style="width: 901px"><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb.png" width="891" height="503"></a><p class="wp-caption-text">Touch-mode: Combobox listing wraps due to CarouselPanel</p></div>
<p>then tap out of the combobox and switch to ‘Mouse mode’, click the Combobox and you’ll be met with:</p>
<div class="wp-caption alignnone" style="width: 898px"><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image1.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb1.png" width="888" height="501"></a><p class="wp-caption-text">Mouse-mode (non-touch-enabled): Combobox has &#8220;normal&#8221; behavior due to CarouselPanel</p></div>
<p>Rather than attempt to convince the client that this is for ease of use of a touch interface – since they weren’t even familiar with Windows 8 to begin with – I took it upon myself to make scenario #2 happen outright, all the time.</p>
<p>Let’s have a look at the relevant part of the <a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj709912.aspx">ComboBox default template as defined by MSDN</a>: </p>
<pre class="brush: xml; title: ; notranslate">    &lt;Setter Property=&quot;ItemsPanel&quot;&gt;
        &lt;Setter.Value&gt;
            &lt;ItemsPanelTemplate&gt;
                &lt;CarouselPanel /&gt;
            &lt;/ItemsPanelTemplate&gt;
        &lt;/Setter.Value&gt;
    &lt;/Setter&gt;</pre>
<p>Herein lies the culprit. The ItemsPanelTemplate explicitly says that it should use a CarouselPanel to do its job. We need to get that outta there.</p>
<p>If you know about XAML and Control styling, then you probably already know where I’m going with this. But for those of you that don’t, here’s how I went about it:</p>
<pre class="brush: xml; title: ; notranslate">            &lt;ComboBox Height=&quot;32&quot;
                      Margin=&quot;100&quot;&gt;
                &lt;ComboBox.ItemsPanel&gt;
                    &lt;ItemsPanelTemplate&gt;
                        &lt;StackPanel Orientation=&quot;Vertical&quot; /&gt;
                    &lt;/ItemsPanelTemplate&gt;
                &lt;/ComboBox.ItemsPanel&gt;
            &lt;/ComboBox&gt;</pre>
<p>As you can see what this does is replaces the ItemsPanel’s CarouselPanel with a normal, everyday, StackPanel. Resulting in the following display <em>in touch mode</em>:</p>
<div class="wp-caption alignnone" style="width: 902px"><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image2.png"><img title="Touch-enabled with StackPanel as template - no wrapping" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/04/image_thumb2.png" width="892" height="503"></a><p class="wp-caption-text">Touch-mode: CarouselPanel removed from ComboBox, replaced with StackPanel, no longer wraps</p></div>
<p>And voila! You’ve got the same experience on touch devices as you do on non-touch ones. For better or worse.</p>
<p>It is worth noting that one caveat I’ve found to this implementation is that you lose inertia within the scroll area. This means there’s no “flicking” to get to the first or last element as there is in the standard ComboBox implementation (using a CarouselPanel) on a touch-enabled device.</p>
<p>If you are able to get inertia built in to this (i.e.: smarter than me) then please pass on your solution!</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/04/12/windows-8s-combobox-and-the-carouselpanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t get Scroogled. Migrate to Outlook.com calendar today</title>
		<link>http://netitude.bc3tech.net/2013/03/26/dont-get-scroogled-migrate-to-outlook-com-calendar-today/</link>
		<comments>http://netitude.bc3tech.net/2013/03/26/dont-get-scroogled-migrate-to-outlook-com-calendar-today/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 14:50:43 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[scroogled]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=684</guid>
		<description><![CDATA[Ok so this feud between Microsoft and Google has gone far enough. Yesterday the core apps for Windows 8 were updated (People, Mail, Calendar, Messaging) and the capability to integrate with Google Calendars has gone away. You now only get Google Mail, via IMAP – and even that is flakey (I still can’t get sub-folders [...]]]></description>
				<content:encoded><![CDATA[<p>Ok so this feud between Microsoft and Google has gone far enough. Yesterday the core apps for Windows 8 were updated (People, Mail, Calendar, Messaging) and the capability to integrate with Google Calendars has gone away. You now only get Google Mail, via IMAP – and even that is flakey (I still can’t get sub-folders of Inbox to sync).</p>
<p>With this in mind, it’s time for me to ditch Google Calendars as much as I can, so that I can still have some semblance of sanity in my life – and by that I mean know what the hell’s going on. Without a calendar always on me to provide reminders, I would forget to eat lunch. Literally.</p>
<p>“Why are you even using Google Calendars, dude?”<br />Yeah, yeah, a legit question. Suffice it to say my wife was the first one to own a smartphone in our house, and at the time it was an Android. So… there we were, like so many others, stuck in the ecosystem. We’ve since both moved on (I moved up [wp8], she didn’t [iPhone]) and so now it’s time to break out of our chains.</p>
<p>So how do we do this?</p>
<p>First I had a look at the Hotmail calendars to make sure they would serve our needs. Mainly there is only one – the ability to share with people and give them read and/or write access to the calendar.</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image_thumb.png" width="853" height="397"></a></p>
<p>Check and mate. Sayonara Google. Let’s do this.</p>
<p>In your Google calendar, head to the Settings area:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image1.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image_thumb1.png" width="468" height="335"></a></p>
<p>Hit the <strong>private</strong> iCal button:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image2.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image_thumb2.png" width="460" height="70"></a></p>
<p>Click the link shown, save to a spot on your computer (Desktop is fine, it’s temporary after all)</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image3.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image_thumb3.png" width="783" height="429"></a></p>
<p>Now what you have is a copy of all your calendar data; enough to replicate it elsewhere. Now where could that be…</p>
<p>Head over to your Microsoft Account – <a href="http://calendar.live.com" target="_blank">most namely the Calendar area</a></p>
<p>Here you have two choices, you can either take the data from the ICS file and import it into a calendar you already have on Live.com, or you can create a new calendar with this data. For my purposes, I wasn’t ever using the ‘My Calendar’ that is the default calendar on Live, so I am importing the ICS in to that. The other method is trivial to accomplish once you see how this is done.</p>
<p>At the top of the calendar screen, click Subscribe.</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image4.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image_thumb4.png" width="549" height="81"></a></p>
<p>Choose Import from an ICS file and pick the file you downloaded from Google. Here is where you pick whether or not you want to put the data in to a new or existing calendar:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image5.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/03/image_thumb5.png" width="525" height="499"></a></p>
<p>I left everything else as defaulted. It imported all my data, recurrences and all, and now I get to drop Google for my personal calendar.</p>
<p>Another bonus that Hotmail gives you is the ability to subscribe to other calendars. This even works to subscribe to Google calendars. The downside here is you will only get Read access to these, even if you’ve been granted Write access by the Owner of the Google calendar to which you’re subscribing. To do this, read on.</p>
<p>Go to the Google Calendar you want to subscribe to, click Calendar Settings again. This time, <strong>copy the link</strong> of the Private iCal and instead of Import an ICS in Hotmail, you’ll Subscribe to a public calendar and paste this link in there. You get to give it your own name, and it’ll show up on your Windows 8, Phone, and other devices as well. Awesome.</p>
<h2>Caveats</h2>
<ul>
<li>Private URLs in Google Calendar are only available if you’re given full access to the calendar. That is, you share “admin/owner” privileges with somebody else, or you own the calendar yourself. The former is my case – I share privileges with my wife. The downside is that in Hotmail you’ll only get read access, not read/write.</li>
<li>If you’re viewing a calendar in Google Calendars that you’ve only been given read access to, you won’t get the ability to expose a Private Calendar URL. Only the owner can do that. You can expose the public one, but will only see whatever the owner has exposed to public view. It doesn&#8217;t appear as though you can get a URL that gives you the equivalent privileges on a different platform. Bummer.</li>
<li>Google Apps users (businesss) may or may not be able to expose Private calendar URLs. I am not my job, but it might be a function of permissions set up by the account manager – I’m not sure.</li>
</ul>
<p>That’s about as good as it gets, folks. I’d suggest family meetings and/or pre-configuration of your loved ones’ devices to ease the transition.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/03/26/dont-get-scroogled-migrate-to-outlook-com-calendar-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-(Modern)-platform Federated Authentication</title>
		<link>http://netitude.bc3tech.net/2013/02/23/cross-modern-platform-federated-authentication/</link>
		<comments>http://netitude.bc3tech.net/2013/02/23/cross-modern-platform-federated-authentication/#comments</comments>
		<pubDate>Sun, 24 Feb 2013 05:18:52 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[pcl]]></category>
		<category><![CDATA[portable class library]]></category>
		<category><![CDATA[windows8]]></category>
		<category><![CDATA[windowsphone]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=661</guid>
		<description><![CDATA[So in my previous post we discovered the joys of federated authentication using the sexy tools provided by the Windows Azure team. Now, let’s make the most of them. Something that is troubling developers more and more as Windows Phone 8 and Windows 8 really stretch their legs in both the consumer and enterprise spaces [...]]]></description>
				<content:encoded><![CDATA[<p>So in <a href="http://netitude.bc3tech.net/2013/02/22/multi-service-authentication-the-easy-way/" title="Multi-service Authentication the easy way" target="_blank">my previous post </a>we discovered the joys of federated authentication using the sexy tools provided by the Windows Azure team. Now, let’s make the most of them.</p>
<p>Something that is troubling developers more and more as Windows Phone 8 and Windows 8 really stretch their legs in both the consumer and enterprise spaces is how to make the most of their codebases. This rises to the forefront of development very quickly when you see just how similar developing for these two platforms is, from the dev environment, code structure, and available API hooks all the way up to the design and flow of the applications themselves.</p>
<p>Enter Visual Studio 2012’s awesomesauce – the Portable Class Library project type. If you haven’t played with this yet, it really is pretty cool and I highly recommend considering it FIRST when you&#8217;re writing a library you intend to reuse. I think most people avoid it because it does what is necessary when it comes to writing code that’s cross-platform: restrict to the lowest common denominator across the platforms you’re targeting. Unfortunately this often takes away things that you wanted to use, but fortunately it assures you that your code &#8211; in one library &#8211; WILL run on all the platforms you’re targeting. And if you can make it work, it&#8217;s a pretty good tool in your back pocket.</p>
<p>To be honest it&#8217;s kind of a bummer that I even have to write this post; the Azure team doesn&#8217;t appear to know about PCLs. Instead, what they&#8217;ve done is created two separate SDKs for Windows Phone 8 and Windows 8 – they are not using a common one to span them both. What this forces us to do is avoid exposing or using those Azure SDKs at the “common” layer of our app. This means we have to abstract it. And in this case it basically means we duplicate/map each of the Windows Phone and Windows 8 versions to a common one in our codebase. If there’s one thing that I hope can come out of this blog post, it’s that Microsoft really needs to start dogfooding their PCL stuff if they want WP and Win8 to start taking over in tandem.</p>
<p>So let’s see how this would apply to Federated login through Azure, and how you can create a quickly-reusable Federated Login library across both Windows Phone 8 and Windows 8.</p>
<p>First step, create a PCL project that targets both Windows Store and Windows Phone 8:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image40.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb39.png" width="711" height="399" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image41.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb40.png" width="375" height="458" border="0" /></a></p>
<p>Note the tidbit at the bottom. Pretty clever, “Yo, we know that you just want these two, but the common parts match up with .Net 4.5 so we’re just going to add that as part of the project settings too” – thanks Microsoft!</p>
<p>Now comes some of the ugly business. This Common library is what we’re going to have our client code reference, so that means we can’t be calling out any of the Azure SDK stuff because those are either specific to Windows Phone, or to Windows 8. So here’s where we roll our own versions of the commonality we want out of each of those. In reality, we’re creating the portable subset of the AMS Authentication portion of the Azure SDKs!</p>
<p>Here’s what my code ended up looking like:</p>
<pre class="brush: csharp; title: ; notranslate">	public enum FederatedLoginProvider
	{
		MicrosoftAccount = 0,
		Google = 1,
		Twitter = 2,
		Facebook = 3,
	}

	public interface IFederatedLogin
	{
		Task&lt;FederatedLoginUser&gt; DoLoginAsync (FederatedLoginProvider provider);
		Task&lt;FederatedLoginUser&gt; DoLoginAsync (FederatedLoginProvider provider, string jsonToken);
		Task&lt;FederatedLoginUser&gt; DoLoginAsync (string authenticationToken);
	}
</pre>
<pre class="brush: csharp; title: ; notranslate">	public class FederatedLoginUser
	{
		public string UserId { get; set; }
	}
</pre>
<p>Now then, it’s time to wire in the actual AMS Auth to what we’ve got.</p>
<p>Create a new Windows 8 Class Library to put your Win8 Federated login in to:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image42.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb41.png" width="649" height="367" border="0" /></a></p>
<p>Add the appropriate references:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image43.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb42.png" width="646" height="304" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image44.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb43.png" width="652" height="306" border="0" /></a></p>
<p>Here’s where it gets a bit dicey. Remember we want to share as much as possible to reduce the amount of code we’re writing and maintaining. With that in mind, let’s create a shared file that we’ll <em>Add as Link</em> to both our Win8 and Windows Phone projects. Here’s what that file looks like:</p>
<pre class="brush: csharp; title: ; notranslate">	public partial class FederatedLogin : IFederatedLogin
	{
		MobileServiceClient _mobileClient;

		#region Constructors
		public FederatedLogin (string azureAppUrl) : this (new Uri (azureAppUrl)) { }
		public FederatedLogin (string azureAppUrl, string applicationKey) : this (new Uri (azureAppUrl), applicationKey) { }
		public FederatedLogin (Uri azureAppUrl)
		{
			_mobileClient = new MobileServiceClient (azureAppUrl);
		}
		public FederatedLogin (Uri azureAppUrl, string applicationKey)
		{
			_mobileClient = new MobileServiceClient (azureAppUrl, applicationKey);
		}
		#endregion

		async public Task&lt;FederatedLoginUser&gt; DoLoginAsync (FederatedLoginProvider provider)
		{
			MobileServiceAuthenticationProvider azureProvider = (MobileServiceAuthenticationProvider)(int)provider;
			var azureUser = await _mobileClient.LoginAsync (azureProvider);
			return new FederatedLoginUser
			{
				UserId = azureUser.UserId,
			};
		}

		async public Task&lt;FederatedLoginUser&gt; DoLoginAsync (FederatedLoginProvider provider, string jsonToken)
		{
			MobileServiceAuthenticationProvider azureProvider = (MobileServiceAuthenticationProvider)(int)provider;
			var azureUser = await _mobileClient.LoginAsync (azureProvider, CreateJsonObject(jsonToken));
			return new FederatedLoginUser
			{
				UserId = azureUser.UserId,
			};
		}

		async public Task&lt;FederatedLoginUser&gt; DoLoginAsync (string authenticationToken)
		{
			var azureUser = await _mobileClient.LoginAsync (authenticationToken);
			return new FederatedLoginUser
			{
				UserId = azureUser.UserId,
			};
		}
	}</pre>
<p>A couple of points to note here:</p>
<ol>
<li>Not all the possible ways of doing Login are supported – there is one that Win8 allows that Windows Phone doesn’t. So we have to scrap it.</li>
<li>The FederatedLoginProvider enumeration maps 1-to-1 to the MobileServiceAuthenticationProvider enumeration exposed by the Azure SDK, but remember we can’t expose it because that would bind us to either Windows Phone or Windows 8.</li>
<li>Our FederatedLoginUser doesn’t have the AuthenticationToken property. This is because the Windows Phone Azure User doesn’t have that property.</li>
<li>Note the ‘public <em>partial</em>’ at the top of this class and the CreateJsonObject() calls within it. This will be important in the next step.</li>
</ol>
<p>In each SDK, the Json Objects used are different. In Windows Phone they are using Json.Net, while in Windows 8 they are using the Win8 data stack. So that means that instead of passing those Json Objects as parameters as the Azure SDK does in its formal methods, we have to abstract that to a string which we’ll convert to the respective Json object for the platform. Here’s how we do that.</p>
<p>The ‘shared’ file above should be put in a place that isn’t necessarily specific to either platform. I’ve placed it in the same <em>folder</em> as the ‘Common’ library, but it’s not included in the Common library itself.</p>
<p>So before we move on let’s create the Windows Phone 8 class library as well:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image45.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb44.png" width="694" height="364" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image46.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb45.png" width="694" height="323" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image47.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb46.png" width="698" height="322" border="0" /></a></p>
<p>Now for both the Win8 and WP8 class libraries, add the shared file as a link:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image48.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb47.png" width="483" height="436" border="0" /></a></p>
<p>The last step is to implement those Json mappers. In the Windows 8 project, create this:</p>
<pre class="brush: csharp; title: ; notranslate">	public partial class FederatedLogin
	{
		private JsonObject CreateJsonObject (string fromString)
		{
			return JsonObject.Parse (fromString);
		}
	}
</pre>
<p>and in the Windows Phone one:</p>
<pre class="brush: csharp; title: ; notranslate">	public partial class FederatedLogin
	{
		private JObject CreateJsonObject (string fromString)
		{
			return JObject.Parse (fromString);
		}
	}</pre>
<p>therein lies the beauty of partial classes. We just extended one shared class to do two different things in two different projects.</p>
<p>Now the whole solution should build. What you now have is a way to have your common business logic layer perform the necessary login operations required by your application layer by going after our custom-created Interface (IFederatedLogin). In other words, your View (Windows 8 or Windows Phone 8) should register <strong>its</strong> version of FederatedLogin to a spot in the ViewModel layer that is referencing &amp; using only IFederatedLogin. Now your ViewModel on down is cross-platform between Windows 8 and Windows Phone 8, all thanks to the fancy-dancy PCL. This same pattern is one you can follow throughout your Windows 8 and Windows Phone 8 development.</p>
<p>If you’d like to see the usage at the View layer for these feel free to post a comment and I’ll make that next on the list of .Netitude awesomeness.</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/02/23/cross-modern-platform-federated-authentication/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Multi-service Authentication the easy way</title>
		<link>http://netitude.bc3tech.net/2013/02/22/multi-service-authentication-the-easy-way/</link>
		<comments>http://netitude.bc3tech.net/2013/02/22/multi-service-authentication-the-easy-way/#comments</comments>
		<pubDate>Fri, 22 Feb 2013 06:06:15 +0000</pubDate>
		<dc:creator>Brandon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[azuremobileservices]]></category>
		<category><![CDATA[windows8]]></category>
		<category><![CDATA[windowsphone]]></category>

		<guid isPermaLink="false">http://netitude.bc3tech.net/?p=639</guid>
		<description><![CDATA[I’m working on a new project that’ll be targeting both Windows Phone 8 and Windows 8. My hope is that this baby will end up being quite a big deal so I am actually giving Azure a good, hard, look. My first use case is that I’d like to have users log in to my [...]]]></description>
				<content:encoded><![CDATA[<p>I’m working on a new project that’ll be targeting both Windows Phone 8 and Windows 8. My hope is that this baby will end up being quite a big deal so I am actually giving Azure a good, hard, look. My first use case is that I’d like to have users log in to my app with accounts they already have – not have to create a new username/password for my app that they have to remember and store somewhere.</p>
<p>Enter Azure’s new Mobile Services offering. Along with a database for your app to store stuff, AMS provides another sweet little tool: Authentication.</p>
<p>AMS’ authentication allows you to tie Microsoft Account, Google, Facebook, AND Twitter authentication in to your app. Now, a couple of those will limit your app and make you pay past a certain point (ahem: Google (1mil/day), Twitter (100k all-time)), but the other two are pretty sweet.</p>
<p>For the most part, setting these things up is pretty simple, but there are enough nuances that I thought a blog post might help some folks out.</p>
<p>Let’s get started. Microsoft is really pushing Azure as of late and the coolest thing is that you an actually get a FREE Azure account at the “pay-as-you-go” price level just to play with these kinds of things and see how they’ll work out for you and/or how far you want to take your Azure backend.</p>
<p><span style="font-size: xx-small;"><em>My opinion? I think that Azure doesn’t have much to stand on when it comes to indie developers like myself due to the lack of a steady, affordable, cost. If I create a free app using the backend and it takes off like nobody’s business, I could very well end up with a $1000 bill for month X that I could never afford. That would suck. But, things like Federated Authentication might just be “light,” powerful, and useful enough that hobbyists might pick it up more readily once they see what it can do.</em></span></p>
<p>First, sign up for a <strong>free</strong> Azure 90-day trial by starting at the signup page.</p>
<p><a href="http://www.windowsazure.com/en-us/pricing/free-trial/" target="_blank"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image.png" width="227" height="89" border="0" /></a></p>
<p>You’ll need a phone and credit card – they swear it’s only for identity verification. A quick text message and input of a verification code and:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image1.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb.png" width="468" height="309" border="0" /></a></p>
<p>Now head to your portal by clicking</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image2.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb1.png" width="156" height="87" border="0" /></a></p>
<p>in the upper-right hand corner of the screen.</p>
<p>Feel free to read through the tutorial to get the full gravity of what you’re about to play with <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/wlEmoticon-smile.png" /></p>
<p>Now behold the wonder of the beautiful, fluid, web experience the Azure team has created. Seriously, it’s gotta be one of the more impressive parts of using Azure. It’s just damn sexy.</p>
<p>Start by just following the suggestion:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image3.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb2.png" width="571" height="89" border="0" /></a></p>
<p>Go ahead and ‘Create an Item’</p>
<p>Choose ‘Compute’ | ‘Mobile Service’ | ‘Create’</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image4.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb3.png" width="593" height="222" border="0" /></a></p>
<p>Pick a subdomain name you’re proud of and a region closest to where you’re at, just for sanity’s sake:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image5.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb4.png" width="386" height="230" border="0" /></a></p>
<p>When creating a new SQL instance, pick that you want a new SQL server and a user/pass you’re comfortable with as well. For Authentication services you won’t need to be using the SQL server that Azure sets up by doing these steps, but it’s part of the setup so we’ve gotta go thru it. If you pick a different reason than what you chose for your Mobile Services, you’ll get a warning. Don’t bother with the Advanced Settings for now.</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image6.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb5.png" width="289" height="336" border="0" /></a></p>
<p>You’ll now see this awesomesauce at the bottom of your Azure Portal screen:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image7.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb6.png" width="467" height="100" border="0" /></a></p>
<p>Hey what can I say, I’m not a web developer so these kinds of tidbits impress me.</p>
<p>Once that finishes up, you’ll have your service staring you in the face, begging to be messed with:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image8.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb7.png" width="730" height="71" border="0" /></a></p>
<p>Time to start playing. Click the name of the service, which will launch in to its configuration pages. The cool part here is that not only has Azure set you up with your mobile service, their Quick Start page actually GIVES you a FULL SOLUTION for Windows 8, Windows Phone, or *bah* iOs that is pre-configured with your service’s URL and Authentication Key. Pretty sweet as far as getting up and running goes.<br />
You don’t need to bother downloading that just yet, though.</p>
<p>The part of our new AMS we want to set up is the Identity part. So click that:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image9.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb8.png" width="531" height="399" border="0" /></a></p>
<p>Once you’re there you’ll see what information we require to set up the Authentication points from Microsoft, Facebook, Google, and Twitter. This is the part that hung me up for a while. It was easy to find these pieces from those sources, but not the most intuitive to set up my AMS instance to work with them. That is, it’s easy to know how to plug them in to AMS, but not easy to know how to plug AMS in to them. So lets walk through each of the services now.</p>
<p>For Microsoft Account, your developer portal is located at <a href="http://dev.live.com" target="_blank">dev.live.com</a>. Once there, log in with a Microsoft Account that you’d like to associate w/ this (only used to manage applications that utilize the Live SDK) and head to the “My Apps” page. If this is your first app, you’ll be taken directly to the ‘<a href="https://manage.dev.live.com/Applications/Create" target="_blank">Create</a>’ page.</p>
<p>On the Create page, pay attention to the instructions. Some of the fields you’re filling out will be displayed to your end users (i.e.: “Application X wants to access your data, are you cool with that?”).</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image10.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb9.png" width="476" height="130" border="0" /></a></p>
<p>After creation, you’re taken directly to the API Settings page for your new application, where you’re given all the information you need to wire this up to your new AMS instance.</p>
<p>Take the Client ID and Client secret and punch those in to the right spots in the Identity area of your AMS instance that’s staring you in the face on your other browser tab:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image11.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb10.png" width="828" height="210" border="0" /></a></p>
<p>Now at first glance you think you’d be done, but you’d be wrong. In your Live API settings, <strong>leave ‘Mobile client app’ set to ‘No’ and place your AMS Instance’s URL in the Redirect URL box</strong></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image12.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb11.png" width="831" height="331" border="0" /></a></p>
<p>Click ‘Save’ in your Live app’s API settings.<br />
That’s it. Microsoft Account integration is now wired up – which we’ll see in a bit.</p>
<p>Next, let’s tackle Facebook. In much the same fashion, we’ll repeat what we did for the Microsoft Account integration but put the Client ID and Secret from Facebook in to the relevant fields of our AMS’ Identity area, and give Facebook the correct Redirect URL so that the auth flow works as desired.<br />
Disclaimer: I don’t have a Facebook account so the setup and screenshots are from me being logged in to my wife’s so forgive the lack of showing everything on the page <img class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/wlEmoticon-winkingsmile.png" /></p>
<p>Head to <a href="http://developers.facebook.com" target="_blank">developers.facebook.com</a>, log in, click Apps. Create a New App, fill it out much like we just did for our Live API application.</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image13.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb12.png" width="510" height="168" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image14.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb13.png" width="786" height="154" border="0" /></a></p>
<p>For Facebook, you put the AMS’ URL in to another spot, the “Website with Facebook Login” area:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image15.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb14.png" width="791" height="86" border="0" /></a></p>
<p>And that’s it. Facebook done.</p>
<p>NEXT, Google. Head to the <a href="https://code.google.com/apis/console/?pli=1" target="_blank">Google API Console</a>, log in, and Create a new Project.</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image16.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb15.png" width="244" height="230" border="0" /></a></p>
<p>Google by creates an “API Project” which is fine for our purposes. On the left side, choose “API Access” and then Create an OAuth 2.0 Client ID:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image17.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb16.png" width="456" height="222" border="0" /></a></p>
<p>Here’s where we, again, put in our Application information that users will end up seeing when they attempt to log in. But with Google there is one important difference so observe these screens closely:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image18.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb17.png" width="474" height="345" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image19.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb18.png" width="469" height="368" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image20.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb19.png" width="460" height="405" border="0" /></a></p>
<p>Notice the little bit on the end of our AMS instance’s base URL – <strong>without that the Google API won’t work properly</strong>. Go ahead and create the Client ID then, and you’ll get your, now familiar, Client ID and Client Secret which we put in the usual places of our AMS’ Identity area.</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image21.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb20.png" width="868" height="332" border="0" /></a></p>
<p>And last but not least, Twitter. Head to their <a href="https://dev.twitter.com//" target="_blank">developer portal</a>’s <a href="https://dev.twitter.com/apps" target="_blank">app management area</a> and log in. Then Create a new Application. You know what you’re doing by now, right?</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image22.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb21.png" width="858" height="299" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image23.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb22.png" width="853" height="368" border="0" /></a></p>
<p>There we go, pre-setup complete! Now let’s head back to have a look at that slick little Windows 8 Visual Studio Solution that our Azure AMS Instance pre-fabbed for us.</p>
<p>To get back to that handy Quick Start screen, click this little dude:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image24.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb23.png" width="244" height="79" border="0" /></a></p>
<p>Now go ahead and download the pre-fabbed Windows 8 solution:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image25.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb24.png" width="244" height="65" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image26.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb25.png" width="587" height="300" border="0" /></a></p>
<p>The pre-fabbed solution will give you the ability to read, insert, and update records in the “TodoItems” table that is created by that first green button there. No matter, we’re going to write completely new code to exercise our authentication flows. We won’t worry about securing the data in this blog post – I just wanted to show how to get this wired up since some of it is a bit unintuitive.</p>
<p>So, once you have the solution downloaded, extracted, and building, we’ll make some code changes. When you initially get the app, it looks something like this:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image27.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb26.png" width="728" height="125" border="0" /></a></p>
<p>We’re going to change it to this:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image28.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb27.png" width="719" height="132" border="0" /></a></p>
<p>So to do that, add the following code to the XAML:</p>
<pre class="brush: xml; title: ; notranslate">            &lt;Grid Grid.Row=&quot;1&quot;
                  Grid.Column=&quot;0&quot;
                  Grid.ColumnSpan=&quot;2&quot;
                  HorizontalAlignment=&quot;Center&quot;
                  Margin=&quot;0,0,0,30&quot;&gt;
                &lt;StackPanel Orientation=&quot;Horizontal&quot;&gt;
                    &lt;Button Name=&quot;MSLoginButton&quot;
                            Click=&quot;MSLoginButton_Click&quot;
                            Content=&quot;Microsoft Login&quot; /&gt;
                    &lt;Button Name=&quot;TwitterLoginButton&quot;
                            Click=&quot;TwitterLoginButton_Click&quot;
                            Content=&quot;Twitter Login&quot; /&gt;
                    &lt;Button Name=&quot;GoogleLoginButton&quot;
                            Click=&quot;GoogleLoginButton_Click&quot;
                            Content=&quot;Google Login&quot; /&gt;
                    &lt;Button Name=&quot;FBLoginButton&quot;
                            Click=&quot;FBLoginButton_Click&quot;
                            Content=&quot;Facebook Login&quot; /&gt;
                &lt;/StackPanel&gt;
            &lt;/Grid&gt;
</pre>
<p>And adjust the other Grid.Row properties of the other items accordingly, of course.</p>
<p>Now wire up the code behind:</p>
<pre class="brush: csharp; title: ; notranslate">		async private void MSLoginButton_Click (object sender, RoutedEventArgs e)
		{
			await Authorize (MobileServiceAuthenticationProvider.MicrosoftAccount);
		}

		async private void TwitterLoginButton_Click (object sender, RoutedEventArgs e)
		{
			await Authorize (MobileServiceAuthenticationProvider.Twitter);
		}

		async private void GoogleLoginButton_Click (object sender, RoutedEventArgs e)
		{
			await Authorize (MobileServiceAuthenticationProvider.Google);
		}

		async private void FBLoginButton_Click (object sender, RoutedEventArgs e)
		{
			await Authorize (MobileServiceAuthenticationProvider.Facebook);
		}

		async private System.Threading.Tasks.Task Authorize (MobileServiceAuthenticationProvider mobileServiceAuthenticationProvider)
		{
			try {
				var user = await App.MobileService.LoginAsync (mobileServiceAuthenticationProvider);
				if (user != null) {
					var d = new Windows.UI.Popups.MessageDialog (user.UserId);
					await d.ShowAsync ();
				}
			} catch { }
		}
</pre>
<p>Boom that should do it!</p>
<p>Microsoft Account:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image29.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb28.png" width="479" height="289" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image30.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb29.png" width="478" height="415" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image31.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb30.png" width="471" height="95" border="0" /></a></p>
<p>Twitter:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image32.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb31.png" width="469" height="308" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image33.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb32.png" width="475" height="92" border="0" /></a></p>
<p>Google:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image34.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb33.png" width="476" height="319" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image35.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb34.png" width="467" height="369" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image36.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb35.png" width="469" height="93" border="0" /></a></p>
<p>and finally Facebook:</p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image37.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb36.png" width="472" height="306" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image38.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb37.png" width="435" height="401" border="0" /></a></p>
<p><a href="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image39.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://netitude.bc3tech.net/wp-content/uploads/2013/02/image_thumb38.png" width="522" height="101" border="0" /></a></p>
<p>And that’s it, folks! Hope this helps out aspiring Windows 8 &amp; Windows Phone developers looking to wet their chops with Azure and AMS!</p>
]]></content:encoded>
			<wfw:commentRss>http://netitude.bc3tech.net/2013/02/22/multi-service-authentication-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
