This blog has, IMO, some great resources. Unfortunately, some of those resources are becoming less relevant. I'm still blogging, learning tech and helping others...please find me at my new home on http://www.jameschambers.com/.

Tuesday, February 23, 2010

How Microsoft Will Win in the Mobile Phone Space

It’s no joke. Microsoft is finally in a place where they can and will compete hard with Apple’s iPhone and Google’s Android platform. As possibly the first company to figure out what it means to compete in this space – and certainly the first with real dollars to back their game – Microsoft has a big chance to win with Series 7.

Lessons from Xbox

image Microsoft came to the table with a gaming system in 2001 with some good juice. More than anything, they wanted to focus on making the developer story better than what was out there. They faced criticism on the size of the console, on the noise, on the size of the controller (which I loved, btw), on pretty much everything…but slowly they won developers over.

imageBy the time the Xbox 360 hit the streets, developers were singing the praises of development on the platform while Sony executives were just waiting for “smarter” developers who actually understood their technology to come along. In the first months of the Xbox 360 release, it became apparent that Microsoft was going to be the console that catered to the people who made games.

Interestingly enough, it seems as though Sony’s going to abandon the technology of the PS3 on their next console because we developers just ain’ts gots the smarts.

The biggest win was differentiation with the 360, not from other players, but from themselves. They reinvented what a product could like coming out of Redmond and it paid off in droves. It was rumoured that early designs were tested against focus groups without the branding, and almost no one was able to identify the manufacturer as Microsoft.

Lessons from Windows Mobile

You can can lead a horse to water, but you can’t make him drink. Especially if the water is acid and no one in the world wants to ride the horse anyways. And even more so because if you did want anyone to ride the horse, you had to make your own saddle and figure out a way to distribute the saddle on your own. And don’t expect any revenue.

RIP, Windows Mobile.

The development story was crap. Web service (cloud) integration was turd. Some level of expectation for hardware was non-existent, and you were just short of a demi-god if you could figure out how to get your app found. And unless you were a wizard-code-ninja working at HTC, good luck at making anything look good.

While Apple was making millionaires out of fart-generator authors, there were very few success stories in the fragmented, challenged development story on the Windows Mobile platform. Too many devices. Not enough support for developers. Little to no ‘dogfooding’ of the devices and content. Limited interim builds. Late and abandoned features and release dates. Inconsistent programming libraries.

And they’re leaving it all behind. I hope.

Where the Winner Is

image

I give it two years. In two years Microsoft will be shipping as many units as Apple. I am pretty confident in that number because of the lessons Microsoft should have learned from above.

That sentiment is furthered because of how they came through with Windows 7.

The argument is strengthened even more with the working prototype they put forward at Mobile World Congress.

Hubs are the new pages and clean is the new UI. Apps will be alive and the touch will be a productivity feature and user benefit rather than a scrolling gimmick.

What most people don’t realize is how much work Microsoft has actually done in this space. Apple didn’t invent the wheel here (I’m not say MS did, by the way). Tablets, touch screens, mobile devices…Microsoft has done so much wrong in this space for over a decade that they’ve learned everything you’re not supposed to do, and the very few, straight-forward things you need to do in order to compete.

But where they will really shine is in supporting developers.

By moving to XAML and enabling millions of developers already on the .NET platform to develop media-rich, touch-rich, dynamic applications from within the world’s number one IDE, Microsoft is set to roll a new story for what mobile applications can be (hint: not just fart generators).

Oh yes, if you want to develop applications that will run on millions of phones with an incredible user experience, standardized hardware and an open development platform, there’s an app for that.

It’s called Visual Studio 2010, and it will be the Achilles heel of the iPhone development story.

Tuesday, February 16, 2010

Microsoft Just Seriously Kicked Apple in the Nads

I am not joking.

If you’ve used a Zune HD – not just mocked it because it’s from Microsoft and because you love your iPod and have never actually used a Zune HD but it must suck because it’s not from Apple (all hail Steve) – then you know that they (Microsoft’s Zune HD team) have seriously got a pulse for how things should look and feel and work.

Well, that’s what they are bringing to Series 7, the new name and face of Windows Phone. It is freeking nuts.

image

The concept is a paradigm shift for anyone…well, anyone who uses a phone. We’re talking multiple pages of any-direction scrolling that actually makes sense and gives you a complete sense of being awesome.

Plus, it’s awesome.

The user interface is arranged as a series of canvases that allow you to finger your way around them. The canvas is bigger than the screen, and you just push it around to get where you’re going.

It is elegant, modern and by all early signs it is also fast, responsive and built to compete. Hard.

Another way to think of the user interface is the Xbox Live dashboard, optimized for touch. Heck, why stop there? IT HAS XBOX LIVE BUILT THE FREEK IN.

A good review of the upcoming game-changer is here:

http://gizmodo.com/5471805/windows-phone-7-series-everything-is-different-now?skyline=true&s=i

Here’s a snip:

The result is a feat no phone has performed before: Making the iPhone's interface feel staid.

Wednesday, February 10, 2010

Routing and Abstractions Assembly References Missing in VS2010 ‘Empty’ MVC Project Template


You’ll run into this quickly if you try to do something similar to the following:

<%= Html.ActionLink("About", "About") %>


You’ll get an error message as such:




The type 'System.Web.Routing.RouteValueDictionary' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.





I am running Visual Studio 2010 and have created a new, empty ASP.NET MVC project.  Using the standard template (with some basic controllers and view in place), this problem is not present.



Mixed Messages






I have had previous installs of MVC through the betas and the LCTP in VS2010, so this error might be presenting itself because of that.  It says it’s looking for a version 3.5 when I’m working in 4.0, so there is a versioning thing going on here.



Still, the compiler in the IDE has no problem spitting out the code and launching the development web server; it’s at only at execution time…erm…compilation time on the server? when the mis-match is detected (expecting something different to be pulled from GAC, perhaps?).



The Fix






Thankfully, it’s easy to resolve.  Just tell the compiler what you really, really want.



Great, now I have Posh Spice stuck in my head…



The project template that generates the web.config file in the root of the project is missing two assemblies in the compilation configuration section.



Update your assemblies section as follows:



<assemblies>
<
add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<
add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<
add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</
assemblies>








The above should fix your troubles.


UGSS Kit Has Arrived!

And along with it, some juicy Windows 7 Ultimate copies for our user group attendees.

Next meeting, which is about Win7 development, is on February 25th with more details here.

We have some great sessions coming up, too, with Dr. Gerald Dueck sharing some of the research he’s been doing supported by the LINQ language extensions.

Friday, February 5, 2010

Facebook Fail

Not ‘epic’ by any account, but the site set to be the world’s highest traffic site by year’s end (and largest detriment to productivity) can have it’s own dose of the hiccups.

image

Shoot, and I wanted to know what everyone was doing tonight!

Guess I’ll have to use that old-fangled telephone…

---

UPDATE…TURNS OUT this was a push of their new home page.  I saw the bump as it happened…

Wednesday, February 3, 2010

No Tanks, Please

I got some input from a commenter on my suggestion that debugging skills are more important than the use of unit tests. He disagreed, suggesting that by using unit tests you can all but avoid the use of a debugger.

This is the original post.

image I gracefully accept that we might not come to agreement on this.

Writing unit tests does not mean you have to have less sense about debugging.  In fact, what if the error is in your test?

What about operations that are driven by meta-data created on-the-fly at run time that alter program flow and logic?  By third party inputs? 

What if you use composition patterns and allow several layers of dynamic composition?  Would you write a test for every mutation?  Good job security, but not practical.

What happens when a library you've been given to use isn't working per the documentation?

What about when a library is being used for something or in a way that wasn't conceived in the original design?

What if you have to maintain a code base that wasn’t developed with TDD in mind and is next-to-impossible to write unit tests for?

While I do mocking and unit tests and am a staunch supporter of behaviour-based design and TDD, you cannot predict nor test for every pre-condition that might crop up.  Even if you're really good, and your write LOTS of tests you might miss some.

And when that happens, you'd better know your head from your buttocks in your debugger!

It is these conditions that may, in the future, warrant more complex tests that provide coverage for these types of scenarios.

I would argue, however that there are times – especially in a smaller shop – when you need to pull out a Swiss Army knife and leave the combat tank at home.

Monday, February 1, 2010

Cloning a Drive and Extending a Partition

We had an old server that we use to monitor some types of network traffic.  The database was stored locally on a sole drive that was 80Gb in size.

While this box is not critical and we can’t move it to our virtualized infrastructure, the drive was at 99.8% capacity and data read/writes were starting to fail.

Our two goals were to increase drive space and add redundancy to the machine.

All this for $200

This will pretty much work on any Windows setup, and I’m sure there are parallel tools on other OS’s (a friend told me this was built into Mac OS with an external drive setup).

There are two free tools you’ll need: Clonezilla and Partition Master.

We purchased two 1Tb drives for the upgrade, each about $100.

The steps we used to complete the upgrade are as follows:

  • install the 1Tb drive, stick in the Clonezilla CD and reboot the server (make sure it boots to CD in the BIOS)
  • use Clonezilla to move an image of the 80Gb drive to the 1Tb drive
  • remove the 80Gb drive and reboot the machine
  • in drive management, confirm that the extra space is available (that the OS sees the new drive space)
  • run Partition Master in Windows and extend the partition to the entire disk
  • shut down the machine
  • install the second 1Tb drive
  • reboot, then mirror the drives in drive management

This was dead-simple, cost us about $200 and took about 20 minutes of work. The total project, counting wait times for cloning (2 hours), partition adjustments (40 mins) and mirroring (5 hours) was less than a day.

image

Downloads for this Exercise