Microsoft has been having a bad time in the consumer face for the last few years — they’ve failed to jump on the mobile train in any significant way and have tried to modernize Windows but face a lot of resistance from users and pundits. Personally, I like Windows 8; the changes in 8 were bold and necessary to bring Windows into the current day, though it does still feel a bit stodgy. Windows 8’s next update (Blue) is, however, a step in the wrong direction.
Sure the (relevant) changes in Blue are relatively small — bringing back the start button and allowing boot to desktop — but these changes show the core problem with Windows ever being a successful consumer brand — the enterprise market. Microsoft makes a ton of money in the enterprise space and (naturally) they do not want to upset some of their best customers. Though those changes might sound small, they are made with the sole purpose of placating enterprise customers who fear having to “train” their users; as an aside, I have personally seen enterprise office workers pretend to not how to do something in Office to avoid doing a task or delay other work functions and, in general, it has been my experience that many IT departments provide far too much “training” when a simple video course would suffice.
Even if the changes, somehow magically avoid the mythical training IT departments keep crying about, this move sense the wrong message to the consumer market and any developers who might have supported Windows 8 in that space; if Microsoft made these concessions will they make any more? given the sales numbers of WinRT it seems like a matter of time?
Unfortunately, in this age of iDevices the bar for a consumer product is significantly higher and users seem to want something a bit flashier to use on their off time. Meaning that developers need the platform to shed the legacy and be something new something flashy something other than Windows. Put a bit more simply, Microsoft has to learn how to say “no” to the enterprise. Unfortunately, Microsoft has shown its priorities and maybe it is time for it to just become the IBM knock-off that we all know it will.
Questions? Comments? Dogmatic rage? Find me on Twitter and Google+. This post was brought to you by Code Journal and Fingertip Tech, INC.
I’ve been doing a good deal of C# WinRT development recently and for the most part it hasn’t been bad. This week, however, I found a pitfall that is not only so simple it’s silly but also managed to waste an hour or so of my time. WinRT has a class called MediaElement that allows you to play different types of media using Window’s built in media engine.
As you might expect, instances of MediaElement take Uri’s for their source media. So, let’s say you want to play a video from your app’s bundle — perhaps an introductory video or something like that. You might try:
// I am assuming you created a MediaElement called "player" in your XAML
player.Source = new Uri("/Appname/Assets/Media/Video.wmv" UriKind.Absolute);
Sadly, that will crash every-time. The good news is that your logic is fine, but the bad news is that you are missing a silly implementation detail of how Microsoft has decided to refer to in bundle URL’s. To make that code work, you simply need to make one small change:
// I am assuming you created a MediaElement called "player" in your XAML
player.Source = new Uri("ms-appx:/Appname/Assets/Media/Video.wmv" UriKind.Absolute);
That’s it. Clearly, there is a little bit of magic here… hence the need for the prefix, but it works and is the prescribed way to do this according to MSDN. Hope that helps someone. Questions? Comments? Find me on Twitter and Google+. This post was brought to you by Code Journal and Fingertip Tech, INC.
Coder Radio listeners will know that I recently got a new tablet to add to my growing collection of devices: Asus’ Vivo Tab RT. Android fans will take a look at this and be reminded of the Transformer Prime and for good reason — the Vivo Tab and Prime share some common components, most notably the case and they are both designed to be used with their (depending on your retailer) bundled keyboard dock. Overall, my experience has been pretty good.
The Good: Like its Android cousin the Vivo RT holds a charge for a little over a day under normal usage, so power management isn’t something you are going to need to worry about much. The keyboard dock is phenomenal and I find myself replying to fast e-mails, coding small scripts, taking notes, and editing blog posts on the Vivo all of the time. In almost every case, it has become the device I grab to do some quick typing. The app selection is weak — there is simply no debating that point. However, the Windows RT ecosystem is still new and there are some standout apps on the platform: Tweetro+ and Notepad RT have become two of my most commonly used RT apps. On the games side there is, as on iOS and Android, a lot of junk, but the good games are simply incredible. The killer feature for game developers targeting the Vivo and Windows RT as a whole? Xbox Live achievements. Rocket Riot 3D is a great example of one such game and has fast become a favorite of mine.
The Bad: Despite the hours I have put into Rocket Riot and a few other games, the Vivo is in many ways a work device at its heart. Reading any sort of longform content is awkward due to the width of the device. Additionally, though the screen is adequate, it does leave something to be desired for long form reading when compared to the “retina” iPad. The app ecosystem, though it has its gem, is weak and is likely to stay that way for a while. The trend seems to be that developers who are interested in the platform are just re-releasing titles from other platforms (iOS mostly). I did run into one hardware issue during my usage of the device; if I detach the keyboard while apps are in the foreground the device seems to kernel panic (for lack of a more accurate term) and I have to manually restart it via the power button. Finally, Office works well but feels a bit awkward as does the entire desktop side of the device. I find myself wishing that the Office team had done a scaled down port to “Modern UI” (the UI formerly known as “Metro”) and kept the user experience pure.
Overall, Asus has done an admirable job and most of the issues I’ve experienced are with Windows RT and caused by how new the platform is not by any defect in the device. If you are interested in a Windows RT tablet, I recommend you look at this one before blindly purchasing a Surface. Questions? Comments? Find me on Twitter and Google+. This post was brought to you by Code Journal and Fingertip Tech, INC.
If you listen to Coder Radio, then you know that I like Windows 8 “metro” apps and that I am also a frequent Twitter user. Naturally, I wanted to find a Windows 8 Twitter app and recently I discovered Tweetro. I took a look at the website and like many users was overjoyed by the elegant design and attention to detail I saw. However, I failed to purchase the app immediately and now cannot.
Tweetro was a huge success and reached Twitter’s 100k token limit in an almost unbelievably short period of time. Unfortunately, Twitter has decided that it is no longer a messaging service and would rather be a media outlet for “brands” and is enforcing some rather developer unfriendly API policies. Basically, once an app reaches that 100k token limit, the app developer is cut off from the service and needs to “work with” Twitter. Tweetro contacted Twitter and got a response including the following:
…It does not appear that your service addresses an area that our current or future products do not already serve. As such, it does not qualify for an exemption.
For those of you who don’t speak the corporate dialect of political correctness this translates into: “sorry, you’re stuck.”
I’ve been hammering this point pretty hard for the last month or so on Coder Radio, but there is no way to overstate it: it is incredibly risky to develop an app on a third parties service and you should think twice before you do so. That’s not to say that you should never build a product on a third party’s API; Code Journal afterall is written using Github’s API.