Windows Phone vs. iPhone. The decision.

I have two phones. An iPhone 4 & 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 & corporate email.

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…

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 & pumping calendar through Google with Google Calendar Sync – long story short, it was painful & 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:

Zune Pass vs. iTunes Cloud

Zune’s service is just awesome. $10 for all you can eat music streaming, on PC, Xbox, web & phone. I listen to music at least half of the day, either at work, in the car or at home. It’s a must.

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.

Live Tiles

Live tiles are, simply, brilliant. A tile with some info that can update itself with more 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.

People Hub

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 & 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 –> post message –> goes to all or some networks at once.

SkyDrive vs. iCloud

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.

Metro

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:

Consistent User Experience

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 & 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 baked into the phone. What happens when the OS provides these capabilities? The user experience is seamless. 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 & use social networks.

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.

Moving

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.

I had Small Business Server at home. It was a nice setup, Exchange, SharePoint & 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 really need when I’m away? Streaming movies? Listening to music?

Music

My music library is replicated between home/work/phone via Zune, iTunes Cloud & Google Music. I mean, that’s the trifecta – and it should be. Music is important. Having easily accessible ways to access music is really important.

  • 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.
  • 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.
  • Google Music: the long-term storage. Upload anything you like, up to 20,000 songs. Listen in the browser. F*n FREE.
  • Movies/TV

    Netflix. Nothing more to say here.

    Documents

    Google Docs. Office 365. Skydrive. Dropbox. Why do we even have local storage any more?

    Mail

    This one is easy. Exchange ActiveSync is simply the best way to sync devices to mail. IMAP sucks & POP really 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.

    Web Presence/Apps/Development

    I’ve included my own personifications of old style web hosting:

  • The ‘back in my day:’ Buy a server, get it racked in a colo somewhere and spend our national debt, conveniently divided up into twelve monthly payments.
  • The ‘anything goes:’ 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:
  • The ‘my startup is going to change the world:’ Virtual private servers. A step forward, but pricey, particularly for those lacking the skillset to setup IIS/Apache/your web server of choice.
  • The ‘How the f*k do I turn this on?!’: Sites templated & 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.
  • Now. Enough of that silliness.

    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:

  • 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?’
  • Microsoft: Azure is, well, Azure. It’s just like any other Microsoft product. Powerful in the right hands. If you can get past configuration & 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…
  • …which is my point. Amazon AWS & Azure are different. One is IaaS, the other PaaS, and now they’re both getting into the other side. Progress.

Application Delivery

Think back, say, five years ago, to how you got software. Typically a CD, which went into a computer & ran some installer – that was that. Ready to go. Broke your CD? Sorry.

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.

Steam did it wonderfully with their service. Front-runners. Innovative.

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 < 10% marketshare doesn’t implicate the kind of massive shift that an App Store for Windows does).

Windows 8 & Windows Phone 8 will share the same core. Know what that means? Truly cross-device application deployment. Code once, re-deploy – desktop/laptop, tablet & phone. It’s what the web told us it would be years ago.

Office 365

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.

Anyway. Back to the point.

Point is, embrace the cloud. Hone your skills. Get familiar & 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 & a soft phone. Employees all over, happy, productive, and lower cost for you.

Communication of the future.

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.

Kinect + Windows 8 + Metro–Part 2: The First Iteration

This is part two of a series (part one); 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 & the Kinect for Windows community as a whole has helped me.

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 KinectNUI & the Kinect Toolbox. KinectNUI has a lot of legwork done in gesture detection, smoothing & 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).

Windows 7 + WPF + Kinect Public SDK

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.

MainWindow

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.

Tiles/Canvas

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.

Hover-to-Activate

This proved interesting – and simply came down to mapping the coordinates of the ‘tiles’ on the screen & 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.

Gestures

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.

Some Thoughts

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 & a Metro app.

Kinect + Windows 8 + Metro–Part 1: The Backstory

This is part one of a series (part two); 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 & the Kinect for Windows community has helped me.

I started writing this and realized it’ll be long. So I’m going to break it up into sections. Section one, the backstory.

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?

Starting out: Touchscreen

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:

  • Environment: construction site. I think this says it all:
    • ‘Oh, see, just look right here – oops.’ Drill through screen.
  • Cost: Touchscreens the size we were looking at (42”+) are expensive. I mean expensive. Especially with a shortened service life due to environment. Like $3k. $3k + 6-8 month service life? No thanks.
  • 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.

Touchscreen Alternatives: Kinect

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.

Here’s what makes the Kinect a great tool for this application:

  • Environment: construction site. I think this says it all:
    • Enclosed plexiglass box. No unsolicited poking. No accidental impalement.
  • Cost: a 42” 1080p TV can be scooped up cheap now. I think the one we found was around $600 for an LG LCD.
    • 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)
    • $600 TV + $150 Kinect = $750 - AND the service life expectancy is greater. Fewer replacement cycles at lower cost.
  • 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.
Bonus! Voice.

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.

So that’s the deal. Next up, the first iteration.

SharePoint Conference 2011–Day 1

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.

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 ballsy. 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.

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 & books out there about increasing user content into 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.

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.

I couldn’t really find a third session that looked useful today. As I said earlier, there is a lot of focus on O365 & 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.

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.

I’m floating around – normal looking guy with a beard in jesus sandals. Say hello.

who 'dis?!

I'm a developer with a history in financial applications (boring) and business intelligence (sweet). Right now I'm focused on cool things, like Amazon's AWS cloud, Kinect for Windows & all things Metro. jQuery, AJAX, MVC & the web are the future of development, so if you're not on that train, I'd suggest you find a way on - quickly. I've spent a lot of time working in SharePoint as well - have a look around & make yourself at home. Questions/comments, you can find me on fb & twitter, or use the 'contact' button at the top.

Questions?