<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>johndandison.com</title>
    <description>strategery, scaled.</description>
    <link>http://johndandison.com/blog/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.5.0.6</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://johndandison.com/blog/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://johndandison.com/blog/syndication.axd</blogChannel:blink>
    <dc:creator>John Dandison</dc:creator>
    <dc:title>johndandison.com</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/johndandison" /><feedburner:info uri="johndandison" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>35.286967</geo:lat><geo:long>-80.879031</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>johndandison</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title>Windows Phone vs. iPhone. The decision.</title>
      <description>&lt;p&gt;I have two phones. An iPhone 4 &amp;amp; a Samsung Focus (the first one, without the front camera). Both have come from my job; paid for, I can’t complain. I got my Focus at launch; my company was just piloting iPhones so ActiveSync was open for anyone. Once the iPhone project moved from pilot to ‘real project,’ ActiveSync got stuffed behind the barrier of a mobile device management gateway – a gateway that would only work for iPhone (so I guess I should say an ‘iPhone management gateway,’ but I digress), leaving me out in the cold with my Windows Phone &amp;amp; corporate email.&lt;/p&gt;  &lt;p&gt;I understood, took my new iPhone and started using it. Mail + calendar were top priority (and the whole reason the company was paying for my phone service), so I had to switch. About a month went by. I kept my Windows Phone as a sort of ‘Zune that doesn’t suck:’ WiFi only. But that got old…&lt;/p&gt;  &lt;p&gt;So I switched back. The microSIM in the iPhone doesn’t fit the normal SIM slot in the Focus, but some creative Xacto-ing brought it back to life. I didn’t have corporate email, but I did have Outlook Web Access through the browser, so, in a way, it was ok. Eventually I’d wire up a convoluted scheme of transferring mail to my own Exchange environment &amp;amp; pumping calendar through Google with Google Calendar Sync – long story short, it was painful &amp;amp; gave me read-only access to my mail. But nonetheless, I was ok with that. I’ve tried switching back to iPhone a couple of times; unfortunately, I’ve only lasted at most 11 hours. Here’s why:&lt;/p&gt;  &lt;h2&gt;Zune Pass vs. iTunes Cloud&lt;/h2&gt;  &lt;p&gt;Zune’s service is just awesome. $10 for all you can eat music streaming, on PC, Xbox, web &amp;amp; phone. I listen to music at least half of the day, either at work, in the car or at home. It’s a must.&lt;/p&gt;  &lt;p&gt;iTunes Cloud is great and all, but it’s still only music you’ve already purchased/pirated/downloaded. At $1.29 a song, that gets me about eight new tracks for the same price as Zune Pass.&lt;/p&gt;  &lt;h2&gt;Live Tiles&lt;/h2&gt;  &lt;p&gt;Live tiles are, simply, brilliant. A tile with some info that can update itself with &lt;em&gt;more &lt;/em&gt;info. No longer is one required to dredge through multiple apps (with multiple experiences) to get info. It’s all on a home screen, no interaction required.&lt;/p&gt;  &lt;h2&gt;People Hub&lt;/h2&gt;  &lt;p&gt;The People hub is a tile/app of your people. Opening the people hub gives you a list of all updates from Twitter, Facebook, LinkedIn &amp;amp; Windows Live (not that anyone uses the last two, but that’s beside the point). I can’t find an alternative to that anywhere. Updating status is the same way – people hub –&amp;gt; post message –&amp;gt; goes to all or some networks at once.&lt;/p&gt;  &lt;h2&gt;SkyDrive vs. iCloud&lt;/h2&gt;  &lt;p&gt;This is really only about auto photo syncing (I know they both do more, I just don’t use it). They both do it and do it well. Tie.&lt;/p&gt;  &lt;h2&gt;Metro&lt;/h2&gt;  &lt;p&gt;Metro is beautiful. Bright, contrasting colors without being obnoxious and clear, simple text. It’s clean and efficient, and I’ve fallen madly for it. It brings me to the next point, which is really what makes the Windows Phone so irresistible for me:&lt;/p&gt;  &lt;h2&gt;Consistent User Experience&lt;/h2&gt;  &lt;p&gt;I hear a lot of bitching about WP as not having any apps. True, there are very few apps compared to the other behemoth App Stores of Apple &amp;amp; Google – but that’s ok. I have a few apps – Woot, Bank of America, Reddit, Foursquare – but almost everything I do with my phone on a daily basis is &lt;em&gt;baked into the phone.&lt;/em&gt; What happens when the OS provides these capabilities?&lt;strong&gt; The user experience is seamless.&lt;/strong&gt; I don’t need a bunch of disparate apps with their own interfaces and user experiences, because the phone does about 95% of what I need it to do on a daily basis – read mail, browse the web, listen to music &amp;amp; use social networks.&lt;/p&gt;  &lt;p&gt;The user experience is consistent across the board. Metro enforces that. Metro is not a coding language or framework, it is a design principle. It is a design principle so simple that we should have had it years ago – but in the insanely fast mobile development world, Metro is king for user interaction.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=jXb49RoPHN0:3xtqCqdo9cM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=jXb49RoPHN0:3xtqCqdo9cM:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=jXb49RoPHN0:3xtqCqdo9cM:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=jXb49RoPHN0:3xtqCqdo9cM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=jXb49RoPHN0:3xtqCqdo9cM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=jXb49RoPHN0:3xtqCqdo9cM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=jXb49RoPHN0:3xtqCqdo9cM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/jXb49RoPHN0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/jXb49RoPHN0/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2012/02/12/Windows-Phone-vs-iPhone-The-decision.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=581fe39d-8784-4737-8c7e-cf4abbd549e5</guid>
      <pubDate>Sun, 12 Feb 2012 22:30:18 -0500</pubDate>
      <category>Personal</category>
      <category>Windows Phone 7</category>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=581fe39d-8784-4737-8c7e-cf4abbd549e5</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=581fe39d-8784-4737-8c7e-cf4abbd549e5</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2012/02/12/Windows-Phone-vs-iPhone-The-decision.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=581fe39d-8784-4737-8c7e-cf4abbd549e5</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=581fe39d-8784-4737-8c7e-cf4abbd549e5</feedburner:origLink></item>
    <item>
      <title>Moving</title>
      <description>&lt;p&gt;I’m moving. Not physically (we just did that a few months ago), but I’m coming to realize that the all-you-can-eat hosting model just isn’t where it’s at any more – hosting stuff at home just isn’t feasible either, what with residential IP blocks getting blacklisted for SMTP traffic and the like. This is the pivot that the cloud marketers would give their souls for to convert you on. Seems I finally have.&lt;/p&gt;  &lt;p&gt;I had Small Business Server at home. It was a nice setup, Exchange, SharePoint &amp;amp; a DC, all with a nice front-end for remote file access. But why access files at home? I realized that the amount of times I actually accessed anything at home was drawing smaller every moment. Dropbox rules the roost for cloud storage and what do I &lt;em&gt;really&lt;/em&gt; need when I’m away? Streaming movies? Listening to music? &lt;/p&gt;  &lt;h2&gt;Music&lt;/h2&gt;  &lt;p&gt;My music library is replicated between home/work/phone via Zune, iTunes Cloud &amp;amp; Google Music. I mean, that’s the trifecta – and it should be. Music is important. Having easily accessible ways to access music is &lt;em&gt;really &lt;/em&gt;important.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Zune: absolutely fantastic. ‘Sync downloads’ is possibly the best feature in the service itself. Anything I download on any device can be synced to other devices seamlessly – plus all-you-can listen to downloads for $10/mo.&lt;/li&gt;    &lt;li&gt;iTunes Cloud: $25 for piracy amnesty? Who can argue that? While not the same service as Zune (no streaming of music you don’t own), it’s great since my company forces iPhones on us to keep from carrying music on the phone.&lt;/li&gt;    &lt;li&gt;Google Music: the long-term storage. Upload anything you like, up to 20,000 songs. Listen in the browser. F*n FREE.&lt;/li&gt;    &lt;h2&gt;Movies/TV&lt;/h2&gt;    &lt;p&gt;Netflix. Nothing more to say here.&lt;/p&gt;    &lt;h2&gt;Documents&lt;/h2&gt;    &lt;p&gt;Google Docs. Office 365. Skydrive. Dropbox. Why do we even have local storage any more?&lt;/p&gt;    &lt;h2&gt;Mail&lt;/h2&gt;    &lt;p&gt;This one is easy. Exchange ActiveSync is simply the best way to sync devices to mail. IMAP sucks &amp;amp; POP &lt;em&gt;really &lt;/em&gt;sucks. Exchange ActiveSync was the first taste of the cloud, way back when. Lose your phone? Drop it and watch it shatter into millions of little pieces? No problem. Exchange syncs contacts, calendars and mail. I’ve been doing this for about 7 years. I’m still stunned when someone says ‘can you transfer my numbers to my new phone?!’ or ‘LOST MY PHONE, SEND NUMBERS PLZ.’ Staggering.&lt;/p&gt;    &lt;h2&gt;Web Presence/Apps/Development&lt;/h2&gt;    &lt;p&gt;I’ve included my own personifications of old style web hosting:&lt;/p&gt;    &lt;li&gt;The ‘&lt;strong&gt;back in my day&lt;/strong&gt;:’ Buy a server, get it racked in a colo somewhere and spend our national debt, conveniently divided up into twelve monthly payments. &lt;/li&gt;    &lt;li&gt;The ‘&lt;strong&gt;anything goes&lt;/strong&gt;:’ Shared hosting. Share your IIS/Apache instance with thousands of other sites. It’s like the dirty ‘back room’ of a club, complete with requisite skeezy types – and also where you might meet:&lt;/li&gt;    &lt;li&gt;The ‘&lt;strong&gt;my startup is going to change the world&lt;/strong&gt;:’ Virtual private servers. A step forward, but pricey, particularly for those lacking the skillset to setup IIS/Apache/your web server of choice.&lt;/li&gt;    &lt;li&gt;The ‘&lt;strong&gt;How the f*k do I turn this on?!&lt;/strong&gt;’: Sites templated &amp;amp; resold through the freakin’ wazoo. Sites like Homestead or Intuit, which will give you the same set of boring templates they gave to every other business owner too busy, lazy or ignorant to invest the time in building a proper web presence. This is 2012 people – what’s the first thing you do when you meet someone new? Google. If I find your site and it’s the same thing I saw on every other person-in-your-field’s page, I’m going to move elsewhere.&lt;/li&gt;    &lt;h3&gt;Now. Enough of that silliness.&lt;/h3&gt;    &lt;p&gt;See how painful that was? The only reasonably priced way for anyone to get online was to share the same IP with hotsheeponsheepaction.com. Now we have options:&lt;/p&gt;    &lt;li&gt;Amazon. Amazon’s Infrastructure-as-a-Service (IaaS) offering (EC2) is killer. Cheap, pay as you go and rock solid. As a good friend always says, ‘who actually uses their cloud infrastructure to run their own business? Amazon or Microsoft?’&lt;/li&gt;    &lt;li&gt;Microsoft: Azure is, well, Azure. It’s just like any other Microsoft product. Powerful in the right hands. If you can get past configuration &amp;amp; set up, it’s got some really strong qualities. SQL Azure is SQL server for $10/mo. Scalable, tolerant, reliable. Azure is Platform-as-a-Service (PaaS) for now, but some of the newer offerings are starting to blur the lines…&lt;/li&gt;    &lt;li&gt;…which is my point. Amazon AWS &amp;amp; Azure are different. One is IaaS, the other PaaS, and now they’re both getting into the other side. Progress.&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Application Delivery&lt;/h2&gt;  &lt;p&gt;Think back, say, five years ago, to how you got software. Typically a CD, which went into a computer &amp;amp; ran some installer – that was that. Ready to go. Broke your CD? Sorry. &lt;/p&gt;  &lt;p&gt;Digital downloads came later when we had better bandwidth than a 28.8k modem (the bits would fight with each other, it was just a mess). This was the first step to the ‘app store’ phenomena. &lt;/p&gt;  &lt;p&gt;Steam did it wonderfully with their service. Front-runners. Innovative.&lt;/p&gt;  &lt;p&gt;And really, it’s perfect. I’ve purchased some software. Associate the software to my account, rather than the device. New device = software’s back. It’s like ActiveSync for Apps. It’s truly perfect. Everyone does it – Apple (wildly successful), Google/Android (wildly successful), Xbox (wildly successful) and now, it’s finally headed to the desktop with the advent of Windows 8 (yes, I know that OS X Lion has an App Store, but using an OS with &amp;lt; 10% marketshare doesn’t implicate the kind of massive shift that an App Store for Windows does).&lt;/p&gt;  &lt;p&gt;Windows 8 &amp;amp; Windows Phone 8 will share the same core. Know what that means? &lt;em&gt;Truly &lt;/em&gt;cross-device application deployment. Code once, re-deploy – desktop/laptop, tablet &amp;amp; phone. It’s what the web told us it would be years ago.&lt;/p&gt;  &lt;h2&gt;Office 365&lt;/h2&gt;  &lt;p&gt;I moved to Office 365 today. No more local Exchange, WSUS, SharePoint. The guts of SBS lay strewn about the virtual floor; most of it’s major components uninstalled. No longer a DC, it’s just a member server on an otherwise vanilla domain network – but I’m keeping it around for Remote Desktop Gateway. AD Federation Services makes it all feel seamless – SSO to the cloud. More about that in a later post.&lt;/p&gt;  &lt;h2&gt;Anyway. Back to the point.&lt;/h2&gt;  &lt;p&gt;Point is, embrace the cloud. Hone your skills. Get familiar &amp;amp; comfortable. It’s not going away; in fact, it will only become a larger part of what we become. On-premises deployments will go the way of physical software media. A fat internet pipe and a couple of local domain controllers is all you need to be an enterprise anywhere –no rent, no office, no desks. No phone beyond a cell phone &amp;amp; a soft phone. Employees all over, happy, productive, and lower cost for you.&lt;/p&gt;  &lt;h2&gt;Communication of the future.&lt;/h2&gt;  &lt;p&gt;We do business in the cloud – we get mail in the cloud, socialize in the cloud, even take calls in the cloud. So why do we still chain ourselves to different text-based communication protocols? If I want to find you, I have to know your email, SMS, which IM networks you’re on, all that. It’s ridiculous. Marinate on that. More on that later too.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=fe_FD6gm81U:sdosGBC7zfA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=fe_FD6gm81U:sdosGBC7zfA:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=fe_FD6gm81U:sdosGBC7zfA:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=fe_FD6gm81U:sdosGBC7zfA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=fe_FD6gm81U:sdosGBC7zfA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=fe_FD6gm81U:sdosGBC7zfA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=fe_FD6gm81U:sdosGBC7zfA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/fe_FD6gm81U" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/fe_FD6gm81U/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2012/02/12/Moving.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=4a06b0be-ea4b-4c2a-ac56-6df185d4ae72</guid>
      <pubDate>Sun, 12 Feb 2012 21:56:13 -0500</pubDate>
      <category>Personal</category>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=4a06b0be-ea4b-4c2a-ac56-6df185d4ae72</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=4a06b0be-ea4b-4c2a-ac56-6df185d4ae72</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2012/02/12/Moving.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=4a06b0be-ea4b-4c2a-ac56-6df185d4ae72</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=4a06b0be-ea4b-4c2a-ac56-6df185d4ae72</feedburner:origLink></item>
    <item>
      <title>Kinect + Windows 8 + Metro–Part 2: The First Iteration</title>
      <description>&lt;p&gt;&lt;em&gt;&lt;span style="font-size: x-small"&gt;&lt;font size="2"&gt;This is part two of a series (&lt;/font&gt;&lt;a href="http://johndandison.com/blog/post/2012/01/12/Kinect-Windows-8-Metro%E2%80%93Part-1-The-Backstory.aspx"&gt;&lt;font size="2"&gt;part one&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;); most of the technical detail will be in the last post. Between NDAs and work disclosure, I can’t release any code, but I can discuss concepts, caveats and successes in the hopes that it helps someone else as much as the open source Kinect projects &amp;amp; the Kinect for Windows community as a whole has helped me.&lt;/font&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I had gotten the green light, so now this was exploratory. I decided the best place to start would be with some of the toolkits and samples that the community had created. I grabbed &lt;a href="http://kinectnui.codeplex.com" target="_blank"&gt;KinectNUI&lt;/a&gt; &amp;amp; the &lt;a href="http://kinecttoolbox.codeplex.com/" target="_blank"&gt;Kinect Toolbox&lt;/a&gt;. KinectNUI has a lot of legwork done in gesture detection, smoothing &amp;amp; interop with traditional devices (mouse/keyboard). The Kinect Toolbox has a really sweet templated gesture detection engine, as well as a playback/record system that lets you debug without jumping out of your seat (ah, laziness IS the mother of invention).&lt;/p&gt;  &lt;h3&gt;Windows 7 + WPF + Kinect Public SDK&lt;/h3&gt;  &lt;p&gt;I started out extending the KinectNUI – my experience with WPF has been limited, so it was a good opportunity to sharpen that skillset. I wiped most of the KinectNUI out, leaving me with the old ‘MainWindow,’ which was now a ‘diagnostics’ window. In fact, it was now a user control, as well as all of my other content pages – so I could get some animations between controls to give a more ‘Xbox Dashboard’ effect.&lt;/p&gt;  &lt;h4&gt;MainWindow&lt;/h4&gt;  &lt;p&gt;It started simple enough – I made my XAML window the same size as the screens our prototype would be running on – 1080p HDTVs. The camera was pumped to a live-view canvas in the bottom corner (a la Dance Central), our logo was in the top left corner, and our main content viewport was a canvas in the middle with some animations for swapping user controls. The ‘MainWindow’ root canvas had the Kinect hands painted on top of that whenever a Skeleton frame was ready.&lt;/p&gt;  &lt;h4&gt;Tiles/Canvas&lt;/h4&gt;  &lt;p&gt;So our main content viewport is the good stuff – all the content goes here. Tiles with actions across the screen; hovering on a tile (or clicking) executes the action associated with that tile. Quite simple really – I wrote a base class - we’ll call it ‘ASweetKinectTile' – which inherits from UIElement. My tiles inherit from ASweetKinectTile, with some override-able methods (say, SwipeLeft, SwipeRight, Click, etc), making virtually any element Kinect-enabled.&lt;/p&gt;  &lt;h4&gt;Hover-to-Activate&lt;/h4&gt;  &lt;p&gt;This proved interesting – and simply came down to mapping the coordinates of the ‘tiles’ on the screen &amp;amp; counting skeleton frames while a specific joint (or combination of joints) was inside the bounds of that element. I’m sure some WPF wizard could make it happen in some ‘proper’ way, but this was rapid prototyping – working with temporary hax is a lot better than ‘not working, but no hax’ – anyway, it worked quite swimmingly for a while.&lt;/p&gt;  &lt;h4&gt;Gestures&lt;/h4&gt;  &lt;p&gt;While the gesture detection in the KinectNUI worked fairly well, I read some good things about the TemplatedGestureDetector in the Kinect Toolbox, so I decided to give it a shot. I will say this now and probably later. Gesture detection is a pain. Not the detecting gestures part, but the ignoring inadvertent movement part. I’ve been noodling a couple of ways to avoid this (particularly with left/right swipes – the tendency is to swipe over, then move your hand back to swipe again, essentially swiping back in the other direction) – namely, a delay between detections.&lt;/p&gt;  &lt;h4&gt;Some Thoughts&lt;/h4&gt;  &lt;p&gt;While the solution was good, we liked it, the business people liked it, the UI was still far from polished – it was a prototype, after all (and only the first sprint). So I got to thinking: Tiles = metro. Full screen = metro. How about porting over the prototype into Windows 8? It seemed a natural fit. Next post – Windows 8 &amp;amp; a Metro app.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=nEfhejwr4SY:T3zILP3JSdA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=nEfhejwr4SY:T3zILP3JSdA:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=nEfhejwr4SY:T3zILP3JSdA:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=nEfhejwr4SY:T3zILP3JSdA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=nEfhejwr4SY:T3zILP3JSdA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=nEfhejwr4SY:T3zILP3JSdA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=nEfhejwr4SY:T3zILP3JSdA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/nEfhejwr4SY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/nEfhejwr4SY/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2012/01/12/Kinect-Windows-8-Metro–Part-2-The-First-Iteration.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=e6803267-e424-4468-9b13-2538dc1e1e05</guid>
      <pubDate>Thu, 12 Jan 2012 23:06:00 -0500</pubDate>
      <category>Kinect</category>
      <category>Work</category>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=e6803267-e424-4468-9b13-2538dc1e1e05</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=e6803267-e424-4468-9b13-2538dc1e1e05</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2012/01/12/Kinect-Windows-8-Metro–Part-2-The-First-Iteration.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=e6803267-e424-4468-9b13-2538dc1e1e05</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=e6803267-e424-4468-9b13-2538dc1e1e05</feedburner:origLink></item>
    <item>
      <title>Kinect + Windows 8 + Metro–Part 1: The Backstory</title>
      <description>&lt;p&gt;&lt;em&gt;&lt;font size="2"&gt;This is part one of a series (&lt;a href="http://johndandison.com/blog/post/2012/01/12/Kinect-Windows-8-Metro&amp;ndash;Part-2-The-First-Iteration.aspx"&gt;part two&lt;/a&gt;); most of the technical detail will be in the last post. Between NDAs and work disclosure, I can’t release any code, but I can discuss concepts, caveats and successes in the hopes that it helps someone else as much as the open source Kinect projects &amp;amp; the Kinect for Windows community has helped me.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I started writing this and realized it’ll be long. So I’m going to break it up into sections. Section one, the backstory.&lt;/p&gt;  &lt;p&gt;My current project at work is pretty sweet. I’m to build an interactive system, accessible and easily usable to guys in gloves – i.e., no touchscreens – to manipulate project data, project images and project plans. Sounds easy enough, huh?&lt;/p&gt;  &lt;h3&gt;Starting out: Touchscreen&lt;/h3&gt;  &lt;p&gt;When I initially heard about this project, there was a lot of chatter around using a touchscreen. Let’s review why that’s a bad idea:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Environment: construction site. I think this says it all:      &lt;ul&gt;       &lt;li&gt;‘Oh, see, just look right here – oops.’ Drill through screen. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Cost: Touchscreens the size we were looking at (42”+) are expensive. I mean &lt;em&gt;expensive.&lt;/em&gt; Especially with a shortened service life due to environment. Like $3k. $3k + 6-8 month service life? No thanks. &lt;/li&gt;    &lt;li&gt;User experience: the majority of our users are going to be construction workers. What do construction workers do? They build things. They also wear gloves. Gloves + touchscreen = no worky. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Touchscreen Alternatives: Kinect&lt;/h3&gt;  &lt;p&gt;Kinect popped into my head, what with the dev community doing the cool things they’ve been doing – I expected to be looked at like I was crazy. After the initial questions, business people started throwing around the words ‘Minority Report’ – tip: that’s an exciting time. That’s when business need meets holy-f*n-hell-this-is-sweet dev work – it’s win-win career gold. Champagne falls from the heavens, velvet ropes part – the works.&lt;/p&gt;  &lt;p&gt;Here’s what makes the Kinect a great tool for this application:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Environment: construction site. I think this says it all:      &lt;ul&gt;       &lt;li&gt;Enclosed plexiglass box. No unsolicited poking. No accidental impalement. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Cost: a 42” 1080p TV can be scooped up cheap now. I think the one we found was around $600 for an LG LCD.      &lt;ul&gt;       &lt;li&gt;Kinect Sensor: $150. $99 over the holidays (although with the Kinect for Windows announcement, that looks to be going up to $249, but $100 is cheap for a commercial license – so stop whining about the cost differential) &lt;/li&gt;        &lt;li&gt;$600 TV + $150 Kinect = $750 - AND the service life expectancy is greater. Fewer replacement cycles at lower cost. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;User experience: besides the fact that it’s sweet as hell, it’s natural and easy to pick up, from the project exec in the trailer to the guy welding massive steel beams together. &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Bonus! Voice.&lt;/h5&gt;  &lt;p&gt;There’s something else we get for free with Kinect – voice. The Kinect microphone array is killer, so while we haven’t done any field testing, it’s expected to be able to compete at some level with a lapel mic.&lt;/p&gt;  &lt;h4&gt;So that’s the deal. Next up, &lt;a href="http://johndandison.com/blog/post/2012/01/12/Kinect-Windows-8-Metro&amp;ndash;Part-2-The-First-Iteration.aspx"&gt;the first iteration&lt;/a&gt;.&lt;/h4&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=Ug9yyIKEkvM:nuSocps-gv8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=Ug9yyIKEkvM:nuSocps-gv8:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=Ug9yyIKEkvM:nuSocps-gv8:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=Ug9yyIKEkvM:nuSocps-gv8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=Ug9yyIKEkvM:nuSocps-gv8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=Ug9yyIKEkvM:nuSocps-gv8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=Ug9yyIKEkvM:nuSocps-gv8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/Ug9yyIKEkvM" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/Ug9yyIKEkvM/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2012/01/12/Kinect-Windows-8-Metro–Part-1-The-Backstory.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=0f1196b7-8205-4942-ac94-5730244d5fae</guid>
      <pubDate>Thu, 12 Jan 2012 00:13:00 -0500</pubDate>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=0f1196b7-8205-4942-ac94-5730244d5fae</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=0f1196b7-8205-4942-ac94-5730244d5fae</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2012/01/12/Kinect-Windows-8-Metro–Part-1-The-Backstory.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=0f1196b7-8205-4942-ac94-5730244d5fae</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=0f1196b7-8205-4942-ac94-5730244d5fae</feedburner:origLink></item>
    <item>
      <title>SharePoint Conference 2011–Day 1</title>
      <description>&lt;p&gt;I’m at the SharePoint Conference in sunny Anaheim CA this week. First day of sessions is in the books. Keynote and most sessions are heavy on cloud services (particularly Office 365) and end-user empowerment. Not seeing a whole lot of developer-specific sessions this time around. Attendance is similar to the last trip through, around 7500.&lt;/p&gt;  &lt;p&gt;This morning, 20 minutes before the keynote, a company called huddle showed up with a marching band. And cheerleaders. And signs and flyers featuring ‘SharePoint’ with a line through it (a la no-smoking signs). I can’t speak to their product’s legitimacy as a true SharePoint competitor, but I can say that their marketing department is &lt;em&gt;ballsy&lt;/em&gt;. I mean, showing up with that kind of fanfare at one of the biggest conferences of the year? That takes some fortitude. To that end – watching people in black shirts descend upon them (complete with SharePoint logos and talking into their collars) was definitely a new level of entertainment. &lt;/p&gt;  &lt;p&gt;I attended three sessions today – the first, past the keynote, was focused on Knowledge Management and creating knowledge communities. The session was definitely business oriented, but shed some light on what other businesses are struggling with to generate user adoption of knowledge systems. There are a lot of sessions, blogs &amp;amp; books out there about increasing user content &lt;em&gt;into&lt;/em&gt; SharePoint, but no one really focuses on innovative ways to get that data back out. That’s a void that I imagine the community will fill soon, but it’s a big opportunity, and one of SharePoint’s biggest ‘out-of-the-box’ weaknesses.&lt;/p&gt;  &lt;p&gt;After lunch I went to a session that had ‘iPad’ ‘Android tablet’ and ‘Windows Devices’ in the title. I was expecting something sweet. I was disappointed. It was basically OCT (Office Customization Toolkit) 101 – and how to tell your users ‘NO.’ Had to bail early on that.&lt;/p&gt;  &lt;p&gt;I couldn’t really find a third session that looked useful today. As I said earlier, there is a lot of focus on O365 &amp;amp; end user experience. Ultimately, I started out in document management, but bailed and had a few phone calls and conversations that were far more encouraging.&lt;/p&gt;  &lt;p&gt;So day one wasn’t bad. Here’s hoping day two has some more dev-central things, but that’s ok if it doesn’t. End user adoption is important, and something we should all embrace, developer, administrator or business user.&lt;/p&gt;  &lt;p&gt;I’m floating around – normal looking guy with a beard in jesus sandals. Say hello.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=kFf5rm0Te-I:t7iRvOsLK-E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=kFf5rm0Te-I:t7iRvOsLK-E:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=kFf5rm0Te-I:t7iRvOsLK-E:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=kFf5rm0Te-I:t7iRvOsLK-E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=kFf5rm0Te-I:t7iRvOsLK-E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=kFf5rm0Te-I:t7iRvOsLK-E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=kFf5rm0Te-I:t7iRvOsLK-E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/kFf5rm0Te-I" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/kFf5rm0Te-I/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2011/10/03/SharePoint-Conference-2011–Day-1.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=65ead4b7-aeed-4b83-9608-29b35a4b294a</guid>
      <pubDate>Mon, 03 Oct 2011 19:31:32 -0500</pubDate>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=65ead4b7-aeed-4b83-9608-29b35a4b294a</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=65ead4b7-aeed-4b83-9608-29b35a4b294a</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2011/10/03/SharePoint-Conference-2011–Day-1.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=65ead4b7-aeed-4b83-9608-29b35a4b294a</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=65ead4b7-aeed-4b83-9608-29b35a4b294a</feedburner:origLink></item>
    <item>
      <title>Mango for Developers has Arrived</title>
      <description>&lt;p&gt;In case that rock you’ve been living under is particularly dense, the Windows Phone Mango beta 2 update has arrived for registered developers, along with the 2nd beta of the Windows Phone Developer Tools.&lt;/p&gt;  &lt;p&gt;You can get the dev tools here: &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26648"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26648&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And if you’re a registered developer, you should have gotten a Connect invitation sometime around mid-day. My update process went fine, and took about an hour.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://johndandison.com/blog/image.axd?picture=mangoawwyeah.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="mangoawwyeah" border="0" alt="mangoawwyeah" src="http://johndandison.com/blog/image.axd?picture=mangoawwyeah_thumb.png" width="296" height="233" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=uf7juO6Q07A:WHEo9ZDzUHs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=uf7juO6Q07A:WHEo9ZDzUHs:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=uf7juO6Q07A:WHEo9ZDzUHs:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=uf7juO6Q07A:WHEo9ZDzUHs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=uf7juO6Q07A:WHEo9ZDzUHs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=uf7juO6Q07A:WHEo9ZDzUHs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=uf7juO6Q07A:WHEo9ZDzUHs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/uf7juO6Q07A" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/uf7juO6Q07A/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2011/06/29/Mango-for-Developers-has-Arrived.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=fedc0462-73fb-4cc0-8b91-0d21a0c31141</guid>
      <pubDate>Wed, 29 Jun 2011 16:58:21 -0500</pubDate>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=fedc0462-73fb-4cc0-8b91-0d21a0c31141</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=fedc0462-73fb-4cc0-8b91-0d21a0c31141</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2011/06/29/Mango-for-Developers-has-Arrived.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=fedc0462-73fb-4cc0-8b91-0d21a0c31141</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=fedc0462-73fb-4cc0-8b91-0d21a0c31141</feedburner:origLink></item>
    <item>
      <title>Network Drives on SBS 2011 Remote Web Folders</title>
      <description>&lt;p&gt;I installed Small Business Server last weekend here at the house in an attempt to consolidate some boxes and clear some clutter in preparation for the impending move. A really sweet part of SBS is the Remote Web Workspace, which gives you links to all of the internal resources SBS publishes &amp;ndash; you get links to OWA, SharePoint, Shared Folders &amp;amp; Remote Desktops. Plus, it&amp;rsquo;s all extensible, so you can write your own providers to publish whatever data and widgets you want up to your users.&lt;/p&gt;
&lt;p&gt;Since I don&amp;rsquo;t really have &amp;lsquo;users&amp;rsquo; per se, just me and my wife, I don&amp;rsquo;t really care about UI customization. It looks fresh and modern, like the Windows Live redesign. Functionally, I love it &amp;ndash; it takes all available resources here at my house and packages them up in an easy to use interface.&lt;/p&gt;
&lt;p&gt;One part you&amp;rsquo;ve got are the shared folders. The interface is spartan, but usable &amp;ndash; you get a tree view &amp;amp; a search, and you can download whole folders with two-clicks &amp;ndash; it will auto-zip them and fire them over the wire.&lt;/p&gt;
&lt;p&gt;Great, you say &amp;ndash; until you realize that it&amp;rsquo;s only good for shares &lt;em&gt;on the local machine&lt;/em&gt; (i.e., the Small Business Server box). I have two servers &amp;ndash; one running SBS, the other running Server 2008 R2, with Hyper-V and lots of cheap storage. Since almost all of my storage is on the other box, this presented a problem. The SBS Console refuses to add anything but locally-attached drives. I tried all kinds of stuff, from Linux-esque symbolic links to NTFS junctions, none of which worked.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://johndandison.com/blog/image.axd?picture=image_19.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://johndandison.com/blog/image.axd?picture=image_thumb_19.png" border="0" alt="image" width="485" height="276" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The more I thought about it, though, the more I realized there &lt;em&gt;had &lt;/em&gt;to be a way to get the shares from my other server exposed this way as well&amp;hellip;I mean, why have the server as the top-level of the tree view if it&amp;rsquo;s always the only root?&lt;/p&gt;
&lt;p&gt;There is no documentation on this, so I got out reflector. I could go on for an entire post about how RedGate is an awful company for charging now for reflector, but instead I&amp;rsquo;ll just say this &amp;ndash; go get ILSpy.&lt;/p&gt;
&lt;p&gt;Before you get into any of this, remember, if you are in a production environment, &lt;em&gt;please&lt;/em&gt; test much more thoroughly than I have. I&amp;rsquo;m only using this with &amp;lt;5 users and it is certainly not a &amp;lsquo;production&amp;rsquo; environment. If you&amp;rsquo;re doing real work, by all means, be careful. This is horribly unsupported and chances are high it would break if service packs or anything broke the underlying implementation. There&amp;rsquo;s a reason most of these classes are private and internal.&lt;/p&gt;
&lt;h4&gt;Method A: Keeping it Simple&lt;/h4&gt;
&lt;p&gt;Find the web.config &amp;ndash; it is here: Program Files\Windows Small Business Server\Bin\WebApp\RemoteAccess&lt;/p&gt;
&lt;p&gt;Further down, you&amp;rsquo;ll find the storage provider (among a host of other providers):&lt;/p&gt;
&lt;div style="margin-left: 40px; margin-right: 40px;"&gt;
&lt;pre style="line-height: normal; background: white;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;&lt;span style="font-size: 9.8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.8pt;"&gt;&lt;span&gt;&lt;span style="color: #a31515;"&gt;wssg.storageProvider&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;Microsoft.WindowsServerSolutions.Web.Storage.SBSStorageProvider,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height: normal; background: white;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-size: 9.8pt;"&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;	 Wssg.Web.StorageProvider&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Which is the standard implementation in SBS 2011. Some investigating yielded that it inherited from &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;IStorageInformationProvider&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Some more digging showed that there were some other implementations of &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;IStorageInformationProvider&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, one of which used a configuration key called 'shares.&amp;rsquo;&lt;/p&gt;
&lt;p&gt;That one would be the &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;FileSystemBasedStorageInformationProvider&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, (in Web.Internal) which pulled a list of shares from semicolon delimited list in the config file, from a configuration key called &amp;lsquo;shares.&amp;rsquo; It does this in the Initialization method &amp;ndash; choosing to use the configuration key if it is not null. This sounds well and good, BUT it is an exclusive or. You&amp;rsquo;ll get config entries OR file shares&amp;hellip;meaning the standard pull from WMI won&amp;rsquo;t work any longer. With this method, you&amp;rsquo;ll have to explicitly define each and every share on any machine you want to appear in RWA.&lt;/p&gt;
&lt;p&gt;Switching to the &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;FileSystemBasedStorageInformationProvider &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;is simple enough &amp;ndash; remove (or comment out) the original line, and add this one right beneath it:&lt;/p&gt;
&lt;div style="margin-left: 40px; margin-right: 40px;"&gt;
&lt;pre style="line-height: normal; background: white;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt;"&gt;&lt;span&gt;&lt;span style="color: #a31515;"&gt;wssg.storageProvider&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;Microsoft.WindowsServerSolutions.Web.Storage.FileSystemBasedStorageInformationProvider,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height: normal; background: white;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt; Wssg.Web.Internal&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;" &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;span&gt;&lt;span style="color: #ff0000;"&gt;shares&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;"\\servername\sharename;\\servername2\sharename;\\servername3\sharename"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Editing the web.config will fire off a re-JIT, so you&amp;rsquo;ll have to re-sign in. If you did it correctly, you should now see your shares &amp;ndash; but &lt;em&gt;only&lt;/em&gt; the ones you &lt;em&gt;explicitly &lt;/em&gt;added to the config file.&lt;/p&gt;
&lt;h4&gt;Method B: Combining the Best of Both &amp;ndash; Building a new StorageProvider&lt;/h4&gt;
&lt;p&gt;Since I had reflector out and I was already digging through Internal classes anyway, I decided to try and combine the output from both the configuration class and the &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;SBSStorageProvider&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Needless to say, collecting dependencies is always the worst part. First, install the Windows Server SDK (you can get that &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=105694e5-76bc-4820-b42c-6f4250b4f5be" target="_blank"&gt;here&lt;/a&gt;). That will give you some of them. The rest you&amp;rsquo;ll have to grab out of the Program Files\Windows Small Business Server\Bin\WebApp\RemoteAccess\Bin folder. Here are the ones you&amp;rsquo;ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wssg.Web (SDK) &lt;/li&gt;
&lt;li&gt;Wssg.Web.Internal (from the bin) &lt;/li&gt;
&lt;li&gt;Wssg.Web.StorageProvider (from the bin) &lt;/li&gt;
&lt;li&gt;StorageCommon (from the Small Business Server bin - Program Files\Windows Small Business Server\Bin) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unfortunately, the constructors for these are internal. There is probably a very good reason for this, but whatever &amp;ndash; this meant I had to basically copy\paste the disassembled code into my project to get constructors (gross). It is gross, and should have been yet another red flag that this was a bad idea. It was not.&lt;/p&gt;
&lt;p&gt;Getting the config file reader to work was pretty much a cake walk. It is a simple implementation and didn't take much to get into my project. The next one, however, was a bit more of a pain. The basic architecture is this: &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;IStorageInformationProvider &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;returns a generic &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;List&amp;lt;IShareInfo&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, which contains all of the information for the shares. The &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;IShareInfo &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;interface is pretty simple too. The concrete class &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;StorageAPIBasedShareInfo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, however, is not. It has dependencies all the way into the StorageCommon assembly, which is why it is referenced. Anyway, what these things do is pretty simple &amp;ndash; get some shares, check some permissions, and, ultimately, return a generic &lt;span style="font-family: Consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: 9.8pt;"&gt;List&amp;lt;IShareInfo&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, which then gets returned out to whatever requesting consumer.&lt;/p&gt;
&lt;p&gt;I created my assembly, which you can download below. It basically calls the shamelessly copy\pasted\tweaked methods from the two StorageInformationProviders and combines them before sending them back out. All of the caching and permissions mechanisms are still in tow, but again &amp;ndash; please test before using this in any kind of production environment. I doubt it&amp;rsquo;s terribly kosher with the SBS peeps either.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://johndandison.com/blog/image.axd?picture=image_20.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://johndandison.com/blog/image.axd?picture=image_thumb_20.png" border="0" alt="image" width="469" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Method B-2: Installing My Provider&lt;/h4&gt;
&lt;p&gt;Download this assembly: &lt;a href="http://johndandison.com/stuff/sbs/johndandison.SBS.StorageProvider.dll"&gt;http://johndandison.com/stuff/sbs/johndandison.SBS.StorageProvider.dll&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or get the C# source here: &lt;a href="http://johndandison.com/stuff/sbs/SBSAndConfigBasedStorageInformationProvider.cs.txt"&gt;http://johndandison.com/stuff/sbs/SBSAndConfigBasedStorageInformationProvider.cs.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Start in this folder on your SBS machine: Program Files\Windows Small Business Server\Bin\WebApp\RemoteAccess\&lt;/p&gt;
&lt;p&gt;Copy the assembly to the bin folder.&lt;/p&gt;
&lt;p&gt;Drop this line into your web.config:&lt;/p&gt;
&lt;div style="margin-left: 40px; margin-right: 40px;"&gt;
&lt;pre style="line-height: normal; background: white;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt;"&gt;&lt;span&gt;&lt;span style="color: #a31515;"&gt;wssg.storageProvider&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;johndandison.SBSAndConfigBasedStorageInformationProvider, johndandison.WSS.StorageProvider&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height: normal; background: white;"&gt;&lt;span style="font-family: Consolas;"&gt;	&lt;span style="font-size: 8pt;"&gt; &lt;span&gt;&lt;span style="color: #ff0000;"&gt;shares&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt;\\server\share;\\server\share&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;That should be about it. Your box will need to re-JIT, but it shouldn&amp;rsquo;t take but a few seconds.&lt;/p&gt;
&lt;h4&gt;Addendum: Search&lt;/h4&gt;
&lt;p&gt;Search doesn&amp;rsquo;t work. When I have some time to rip the search assembly apart, I&amp;rsquo;ll attempt to write a search provider that uses all the shares, not just the standard SBS ones. Right now, it won&amp;rsquo;t search beyond the shares on your SBS machine.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=bFsqa837qX4:6eGz4KyW5rg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=bFsqa837qX4:6eGz4KyW5rg:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=bFsqa837qX4:6eGz4KyW5rg:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=bFsqa837qX4:6eGz4KyW5rg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=bFsqa837qX4:6eGz4KyW5rg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=bFsqa837qX4:6eGz4KyW5rg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=bFsqa837qX4:6eGz4KyW5rg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/bFsqa837qX4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/bFsqa837qX4/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2011/04/16/Network-Drives-on-SBS-2011-Remote-Web-Folders.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=bb3c9cb9-d72a-42bc-89ca-18268f90fad1</guid>
      <pubDate>Sat, 16 Apr 2011 01:31:00 -0500</pubDate>
      <category>Personal</category>
      <category>Small Business Server</category>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=bb3c9cb9-d72a-42bc-89ca-18268f90fad1</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=bb3c9cb9-d72a-42bc-89ca-18268f90fad1</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2011/04/16/Network-Drives-on-SBS-2011-Remote-Web-Folders.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=bb3c9cb9-d72a-42bc-89ca-18268f90fad1</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=bb3c9cb9-d72a-42bc-89ca-18268f90fad1</feedburner:origLink></item>
    <item>
      <title>Office Communicator Events</title>
      <description>&lt;p&gt;I needed a breather Friday, so I started playing with the Office Communicator Automation API. Basically, you can sign in, get contacts, modify contact lists, etc. It is an automation API, so the client needs to be installed (or so I saw).&lt;/p&gt;  &lt;p&gt;Instantiation and usage is really easy too:&lt;/p&gt;  &lt;div style="margin-left: 40px; margin-right: 40px"&gt;   &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public void &lt;/span&gt;SignIn()
{
    &lt;span style="color: blue"&gt;if &lt;/span&gt;(connected) &lt;span style="color: blue"&gt;return&lt;/span&gt;;
    &lt;span style="color: blue"&gt;if &lt;/span&gt;(communicator == &lt;span style="color: blue"&gt;null&lt;/span&gt;)
    {
        communicator = &lt;span style="color: blue"&gt;new &lt;/span&gt;CommunicatorAPI.&lt;span style="color: #2b91af"&gt;Messenger&lt;/span&gt;();
        communicator.OnSignin += 
            &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DMessengerEvents_OnSigninEventHandler
                &lt;/span&gt;(communicator_OnSignin);
        communicator.OnMyStatusChange += 
            &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DMessengerEvents_OnMyStatusChangeEventHandler
                &lt;/span&gt;(communicator_OnMyStatusChange);
    }
    communicator.AutoSignin();
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Basically, I want to do some stuff when I change my status. I’d really like to set my softphone up for forwarding, but that’s a different story for a different day. Wiring up the event is easy enough:&lt;/p&gt;

&lt;div style="margin-left: 40px; margin-right: 40px"&gt;
  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;void &lt;/span&gt;communicator_OnMyStatusChange(&lt;span style="color: blue"&gt;int &lt;/span&gt;hr, &lt;span style="color: #2b91af"&gt;MISTATUS &lt;/span&gt;mMyStatus)
{
    &lt;span style="color: green"&gt;//do some stuff
&lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Anyway, there’s a pretty glaring bug – events don’t fire whenever you reach ‘Inactive’ status. &lt;/p&gt;

&lt;p&gt;For instance, I have my settings to set to Inactive after five minutes – but as soon as that happens, my events quit firing. Nothing in the documentation, nothing in the event logs, they just stop firing. I’ve been able to replicate this over and over. &lt;/p&gt;

&lt;p&gt;I tried quite a few things – setting the auto-away &amp;amp; auto-inactives to 0 (didn’t work), setting them to ridiculously large numbers (still didn’t work – it looks like the max upper bounds is 60 minutes), still nothing.&lt;/p&gt;

&lt;p&gt;Ultimately, I ended up using a little utility that fakes out mouse movement every seconds (one of those ‘never go to sleep’ type apps)…and that seemed to finally work. Only time will tell.&lt;/p&gt;

&lt;p&gt;So – the tl;dr version: Communicator events don’t fire when you’re in the ‘Inactive’ state.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=pDMNuExnqrg:ttqfdYVpM1M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=pDMNuExnqrg:ttqfdYVpM1M:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=pDMNuExnqrg:ttqfdYVpM1M:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=pDMNuExnqrg:ttqfdYVpM1M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=pDMNuExnqrg:ttqfdYVpM1M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=pDMNuExnqrg:ttqfdYVpM1M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=pDMNuExnqrg:ttqfdYVpM1M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/pDMNuExnqrg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/pDMNuExnqrg/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2011/04/12/Office-Communicator-Events.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=b8171656-c1e8-4022-8d9f-3497099a7372</guid>
      <pubDate>Tue, 12 Apr 2011 00:04:04 -0500</pubDate>
      <category>Office</category>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=b8171656-c1e8-4022-8d9f-3497099a7372</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=b8171656-c1e8-4022-8d9f-3497099a7372</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2011/04/12/Office-Communicator-Events.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=b8171656-c1e8-4022-8d9f-3497099a7372</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=b8171656-c1e8-4022-8d9f-3497099a7372</feedburner:origLink></item>
    <item>
      <title>Force NoDo on your Samsung Focus redux</title>
      <description>&lt;p&gt;Per the norm, ATT is bringing up the rear in consumer appreciation, leaving us waiting indefinitely for the March WP7 update. I got my wife an HD7 for Valentine’s Day and T-Mobile is already sending out the update to those…&lt;/p&gt;  &lt;p&gt;So I got a little impatient. There are lots of tutorials on how to force an update, so I’ll hit the high points. Basically – it’s a pain in the ass.&lt;/p&gt;  &lt;p&gt;I have two pieces of advice:&lt;/p&gt;  &lt;p&gt;1: If you are planning to become a registered developer, DON’T use the ChevronWP7 unlocker. ChevronWP7 requires that you install a certificate (ChevronWP7.cer, usually), via email or through a website. &lt;/p&gt;  &lt;p&gt;Unfortunately, when you developer uinlock a phone, it also wants to install a certificate – and it appears that if your phone already has developerservices.windowsphone.com certificate (the bogus one installed for Chevron), it skips right over the actual dev unlocking process and tells you it’s ok…a quick check on the website, however, shows your device truly isn’t a registered development device…so, what to do, you ask?&lt;/p&gt;  &lt;p&gt;The only way to get rid of certificates (that I have found) is to wipe the phone…so yeah, it’s a bit of a pain. Luckily, wiping the phone does not wipe the updates – those seem to be fully merged into the firmware, so there is no differencing going on. After I wiped &lt;/p&gt;  &lt;p&gt;2: Break out a stopwatch. I used the Hungarian PPTP VPN Proxy method outlined by the wizards at the xda-developers forum (outlined in shoddy detail &lt;a href="http://johndandison.com/blog/post/2011/03/30/Force-NoDo-on-your-Samsung-Focus.aspx" target="_blank"&gt;here&lt;/a&gt;). &lt;/p&gt;  &lt;p&gt;The first 15 times I tried this, I kept on getting the ‘update server could not be reached’ timeout message. It was incredibly annoying.&lt;/p&gt;  &lt;p&gt;Then I got the February 2011 ‘pre-update’ update. Filled with renewed spirits, I trudged forward, convinced that the ‘next’ time I tried this I’d get the update.&lt;/p&gt;  &lt;p&gt;Fast forward another fifteen or so iterations, and I started losing faith. One forum post suggested timing it by seeing how long it takes to timeout, then subtracting a second or so from that – and that’s the time you turn off the data connection…here’s my experience with that:&lt;/p&gt;  &lt;p&gt;The first time I tried that, I followed the steps (turned off data connection while the Zune software was looking for updates)…that took a full 64 seconds before timing out. The next iteration, however, I kept the phone’s data connection on, and it timed out after only about 32 seconds. The next time through, I turned off my data connection on the phone right at 30 seconds – and it worked. But don’t ask me to do it again.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=be1s-Q9r5yg:7QTfBzKArUM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=be1s-Q9r5yg:7QTfBzKArUM:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=be1s-Q9r5yg:7QTfBzKArUM:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=be1s-Q9r5yg:7QTfBzKArUM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=be1s-Q9r5yg:7QTfBzKArUM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=be1s-Q9r5yg:7QTfBzKArUM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=be1s-Q9r5yg:7QTfBzKArUM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/be1s-Q9r5yg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/be1s-Q9r5yg/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2011/03/31/Force-NoDo-on-your-Samsung-Focus-redux.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=d9a20ffb-8864-44bf-a9ba-cabeb987263f</guid>
      <pubDate>Thu, 31 Mar 2011 00:00:58 -0500</pubDate>
      <category>Windows Phone</category>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=d9a20ffb-8864-44bf-a9ba-cabeb987263f</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=d9a20ffb-8864-44bf-a9ba-cabeb987263f</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2011/03/31/Force-NoDo-on-your-Samsung-Focus-redux.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=d9a20ffb-8864-44bf-a9ba-cabeb987263f</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=d9a20ffb-8864-44bf-a9ba-cabeb987263f</feedburner:origLink></item>
    <item>
      <title>Force NoDo on your Samsung Focus</title>
      <description>&lt;p&gt;This is more of an obligatory blog post, as I’m more interested in sharing my experience rather than the specifics of the hack.&lt;/p&gt;  &lt;p&gt;I grabbed all of this from those wizards at xda-developers here: &lt;a href="http://forum.xda-developers.com/showthread.php?t=1012189"&gt;http://forum.xda-developers.com/showthread.php?t=1012189&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Basically, dev unlock your device (either via a paid developer account or through ChevronWP7).&lt;/p&gt;  &lt;p&gt;Make a registry change to your Samsung Device, changing the Carrier ID string to 000-88. Rivera has released a packaged called SamsungRegistry.xap that you can sideload which changes that key specifically.&lt;/p&gt;  &lt;p&gt;On your PC, download the USAIP.pbk file mentioned on the board. It’s a list of PPTP VPN connections you can use for free – they are demo accounts, so they disconnect after a few minutes. &lt;/p&gt;  &lt;p&gt;The next step gets a little strange. Open the carrier portion of the settings pane, but don’t press anything yet – you’ll do that in a sec.&lt;/p&gt;  &lt;p&gt;Connect to one of the PBK connections. I connected to the one suggested, EuroIP PPTP Hungary.&lt;/p&gt;  &lt;p&gt;Plug your phone in via USB.&lt;/p&gt;  &lt;p&gt;Open the Zune software, and navigate over to the manual update section (Phone –&amp;gt; Sync Settings –&amp;gt; Update).&lt;/p&gt;  &lt;p&gt;This is where it gets odd – on your phone, you should still have the carrier settings screen open. After a few seconds, turn your data connection off. If you timed it properly, it will tell you an update is available for your phone. Otherwise, it will tell you there were some problems connecting to the update server. Do this &lt;em&gt;ad nauseum&lt;/em&gt; until you get it right.&lt;/p&gt;  &lt;p&gt;There are a couple of things that I did that may make your experience better; I’ll detail those in my next post.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=REn3KICKmI4:JVWyNhw5t_w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=REn3KICKmI4:JVWyNhw5t_w:I77OK7gstj8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=REn3KICKmI4:JVWyNhw5t_w:I77OK7gstj8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=REn3KICKmI4:JVWyNhw5t_w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=REn3KICKmI4:JVWyNhw5t_w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?i=REn3KICKmI4:JVWyNhw5t_w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/johndandison?a=REn3KICKmI4:JVWyNhw5t_w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/johndandison?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/johndandison/~4/REn3KICKmI4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/johndandison/~3/REn3KICKmI4/post.aspx</link>
      <author>john@johndandison.com</author>
      <comments>http://johndandison.com/blog/post/2011/03/30/Force-NoDo-on-your-Samsung-Focus.aspx#disqus_thread</comments>
      <guid isPermaLink="false">http://johndandison.com/blog/post.aspx?id=b3dba5ff-18d8-43ac-b832-e7bf0c3cc11e</guid>
      <pubDate>Wed, 30 Mar 2011 23:42:16 -0500</pubDate>
      <category>Windows Phone 7</category>
      <dc:publisher>jdandison</dc:publisher>
      <pingback:server>http://johndandison.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://johndandison.com/blog/post.aspx?id=b3dba5ff-18d8-43ac-b832-e7bf0c3cc11e</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://johndandison.com/blog/trackback.axd?id=b3dba5ff-18d8-43ac-b832-e7bf0c3cc11e</trackback:ping>
      <wfw:comment>http://johndandison.com/blog/post/2011/03/30/Force-NoDo-on-your-Samsung-Focus.aspx#disqus_thread</wfw:comment>
      <wfw:commentRss>http://johndandison.com/blog/syndication.axd?post=b3dba5ff-18d8-43ac-b832-e7bf0c3cc11e</wfw:commentRss>
    <feedburner:origLink>http://johndandison.com/blog/post.aspx?id=b3dba5ff-18d8-43ac-b832-e7bf0c3cc11e</feedburner:origLink></item>
  </channel>
</rss>

