Friday, April 01, 2016

Xamarin has joined Microsoft - how I'm feeling now

A little over a month ago it was announced that Microsoft were to acquire Xamarin. Shortly after I wrote down some of my thoughts about this. Now the purchase is complete and some of the details of how this will play out have been announced.

The headline news is that Xamarin tooling will be free for all as part of Visual Studio.

Overall this is definitely a good thing. The cost (starting at $25/month) was prohibitively expensive for some developers and so hopefully this will help them. Maybe it was stopping them creating and releasing some valuable and useful apps that will now be able to bring benefits to many.

I have some fears though.

  • Many developers will still complain about needing a Mac to build for iOS and will blame Microsoft (and Xamarin) for this. It's Apple's rule though. Expect (unofficial?) cloud based alternatives for this to become heavily discussed. (but not here)
  • Many developers will complain about needing other hardware to test their apps on. I am certain there will be some people who will expect Microsoft to provide this too. They'll probably argue that they gave out Windows Phones when they wanted people to build apps for them so they should give out iPhones and Android devices if they want people to use Xamarin tools. <rollsEyesAndShakesHead />
  • There will be many developers who assume that all they needed was the tools and now they can build apps and be successful. Maybe they were once told that if they could write code they had everything they needed to create a successful app. This is not the case. The most common figure I hear from other people about how much of the effort of a successful app is related to code is 10%. The highest I've ever heard from anyone with a successful app is 40%. You need lots more than code or coding skills to create a successful app.
  • There will be many developers who assume they don't need to know the specifics of the individual platforms they're can now build for. This is not the case. If you want to build apps that feel like they belong on the OS/platform on which they are running you need to be familiar with such devices. (I'm not saying you must but there is a reason I carry and use so many different phones - I'm currently on holiday and I still have three in my pocket! I want to be sure I know this stuff inside and out.)
  • Developers will continue to have what I believe to be unrealistic expectations for Xamarin.Forms. That is, they will expect an impeccable, customized and fully integrated experience with each platform the app runs on without having (or needing) to do any device specific work. There are many reasons why you're highly unlikely to get and probably don't really want this anyway. You just don't know it yet. Sorry, I haven't got the time to go through all the details now though.
  • Developers who previously only released apps for Windows and complained about discovery in the store and the amount of competition in the stores are in for a shocking discovery/lesson.
  • Many low quality and unsuccessful apps that currently exist on Windows [Phone] are likely to get ported to Android and iOS. They'll probably have even less success there and I'm sure the developers of such apps will find a way to blame Microsoft for it.
  • There are still a lack of good resources to help developers in many parts of creating a great app that go beyond coding. (I'm currently working on one such thing--which is a contributing factor in me writing less on this blog lately--but, I believe, many developers need much more help.) 

I still want to look through all the information in detail but right now I don't think I've wasted the last 18 months or so learning about using the Xamarin tooling. In fact, this might be an extra reason to getting round to taking the certification exam. - There might be some more companies looking for help with this soon and my bank balance suggests I should be doing more paid work.


There's probably lots more I could say but I don't know enough details in all areas yet and, like I said, I'm meant to be on holiday. ;)


Thursday, February 25, 2016

Xamarin joins Microsoft - initial reaction

Because I know a little about these things and sometimes people like to know what I think, here are my initial thoughts about the announcement that Microsoft intends to buy Xamarin.*


* I have been asked to only say positive things about this announcement. As I don't work for either company and my value and experience comes from being an impartial outsider. I am ignoring this request and instead providing my honest thoughts, whether they turn out to be positive or not. This will likely be a stream of consciousness type list that I haven't planned in advance. Full disclosure: I use and pay for products from both companies. I also get some products free from both companies as a Microsoft MVP.

Details are scarce at the moment and I know nothing that isn't public.
In no particular order, here's what I think right now:


  • Lots of people have been asking/hoping for this. Perhaps it'll make them happy. (They're developers though so probably not for very long though)
  • Many developers were asking for this because they assumed that it will mean the tools become free (like other Microsoft tools). It might be nice if Microsoft's deep pockets make this possible.  We all suffer if people can't create great software because they don't have access to tools. On the downside it'll mean more developers churning out pointless/poor/low quality apps just because they now have access to the tools.
  • Hopefully Xamarin University will remain unaffected. I'd be sad to see this go, but this isn't something that could easily be scaled up (without greatly affecting qualilty) if Microsoft just made it free to all.
  • This will still not create the panacea, universal WORE app experience that many developers want Microsoft to be provide. Lots of developers seemingly want to be able to build a single package and run it on every device they can think of. (at least: Windows PC, Windows phones, Mac, iOS and Android phones and tablets.) There are two general approaches to such apps. 1. You build enough commonality into the OS of each platform/device to make this possible. or 2. You put a runtime onto each platform that makes the app work on each. Neither of which are possible on all those platforms to a way that is acceptable to most apps or developers. - Sorry, this is too big a subject to cover here. Ask me for more details if you want.
  • Hopefully this will improve the Windows experience for Xamarin.Forms apps.
  • Hopefully this will now incentivize Microsoft to make the changes/access required to get Windows devices in the Xamarin Test Cloud. This should mean improved automated testing capabilities for all!
  • Developers still shouldn't expect that this will get us any faster to a place where Xamarin.Forms apps have a greater level of per device customization and integration without the need for doing that customization yourself. There's only so much automagic detecting of how an app should be customized that's possible.
  • This still makes it incredibly unlikely that it will be possible to build iOS apps without having an actual Mac. The restriction is imposed by Apple and I don't expect a solution (workaround) like you get with PhoneGap build or NativeScript. Developers ask for this because of the cost of purchasing the hardware. They don't see it as an investment. This also ignores the situation that without Mac hardware it also makes it very slow to test running on iOS devices as there's no simulator or on device debugging available.
  • I expect Xamarin.Forms XAML and UWP XAML to continue to exist side-by-side. It might be nice if there was just one that did everything but there's precedent and good reason to have both. Plus, WPF XAML still exists and that has differences too.



It'll be business as usual for the next few months at least, but certainly interesting times for traditional Microsoft and Xamarin developers....


Wednesday, February 24, 2016

Just how old are the most popular Windows Phone models?

Last month there was some concern (example) about how the most popular Windows Phone model in use was three years old and that this was bad for the platform, even amongst the Windows Phone faithful. There was a response that showed how the most popular devices are of a similar age on Android and iOS too.

This got me wondering about the age of other devices too.
So I made this graph based on the February stats.


Taking the 40 most popular devices I plotted their age (based on the release date from gsmarena) against their popularity.

What does it show?
Not a lot actually. There is no big link between age and popularity.
It turns out that there is a very small trend indicating a decrease in popularity over time. But this is probably to be expected as people replace older devices and/or they stop working.
It does surprise me that there are so many older devices still in use and in enough numbers to make this chart. (While this only includes the top 40, the data identifies over 200 different models in use.)
The big takeaway, for me, from this charting exercise is a reminder of the importance of testing on older devices. Even very old ones are still in use.


Thursday, February 04, 2016

I think you're thinking about continuum all wrong

tl;dr; developers and press: be aware that not everyone in the world is like you and not every product is designed for you. Continuum for phones is almost certainly one such product.
Phone connected to a desktop monitor - image from https://www.microsoft.com/en-gb/windows/Continuum as they have no press shots of this setup

If you aren't aware, Continuum for Windows 10 Mobile is a way to connect your phone to a monitor and use the apps on that monitor like it was a PC. more on Microsoft's site

It takes advantages of the adaptable and responsive nature of the user interface in Universal Windows Apps that can be built for Windows 10.

The idea is appreciated as novel but has come under some criticism:

  • It's only available on expensive, "high-end" devices.
  • It requires a special dock.
  • It doesn't work with all apps.
  • "If I go anywhere where I might need to work on something where a large screen is beneficial or required I'd have my laptop with me anyway."
  • Even if you could use it with, say a monitor/TV in a hotel room, that you'd need to take a dock, keyboard, mouse and related cables with you it would be easier to just take a laptop.

Because of these arguments the concept is often dismissed as interesting but not really relevant by people who talk about such things. People who are often developers or members of the tech press who focus on [Windows] phones and devices.

Here's the thing though. What if it isn't intended for them as an audience?

Indulge me for a minute.
As a feature the functionality necessary for this is probably baked deep into the core of Windows 10.
Work on Windows 10 probably started about 18 months to 2 years ago.
Around that timeframe (I know it was a long time ago but trust me. I remember.) there was much discussion and speculation that the opportunity for Windows Phone lay in "emerging markets" and with the so called "next billion". These people would be owning a smartphone as their first phone and probably their first computing device.

Do you see where we are?
We have people considering their first computing device.
These people have no historic commitment to an existing ecosystem and will be more willing to decide among all providers/options.
Even if they only do buy a phone they will probably be aware that there are some computing functions that are easier and preferable to do on a larger screen.
Microsoft are offering a unique differentiator that appeals to and brings extra value to a new market in ways that the competition doesn't.

But it's so expensive. How could this be for emerging markets?
I suspect it's expensive because it's new. As we've seen time and time again, technological solutions get cheaper over time. Expect this in a wider range of, cheaper, phones in the not too distant future. The need for a special dock will also likely go in the future too.

But everything is in the cloud and computers are constantly getting cheaper?
Yes.
But a slightly higher priced phone may still be cheaper than a separate PC/laptop.
It should not even be necessary to buy a separate monitor as a TV could be used so then the only extra expense is a keyboard and mouse and they can be obtained very cheaply.
Even when "everything" is in the cloud there are still benefits to having some types of content stored locally. Especially if you're in a part of the world where connectivity isn't as cheap, reliable or available.
As more services are delivered to the web first, being able to use any service/site on a large monitor may be preferable. Especially if there isn't a dedicated app--yet.

If that's the case, why try and sell the feature with high end devices in mature markets?
If the high end devices are currently required due to the early stages of the technology involved, then that's the only market available.
These are also the devices that developers use. If the hope is that when cheaper devices come to these new markets they will have this functionality it will be important that apps have been built to work with it. Due to the lead times of app development and update that may mean starting to build and update such apps now.
If this is the plan, Microsoft need developers to get into the habit of considering large screen display for their mobile apps now. While the story about using devices in hotel rooms may not be a great one it might be enough to get the ball rolling. Plus, if developers are having to design their UI to work on both small and large screens it might help them think about everything in between too.

Is that all?
Well, there's another possible benefit to all this too.
Windows app developers have traditionally been much more focused on phones rather than desktops and tablets. Perhaps, now, if they have to consider a desktop style interface layout for their phone/mobile based apps the lack of extra effort that's also needed to also get the app working and available on desktop will encourage them to make it available there.
I know Windows on phones has suffered from an "app gap" but it's even worse on the desktop. Creating more apps that work on both desktop and mobile can only be a good thing for the platform, consumers and ultimately developers.


Well, that's what I think. Does this seem reasonable?
Or do you have other ideas?


**Update **
(Because twitter makes it almost impossible to get across a complex response.)

My argument is two fold.

Firstly, it's about price. Yes, YOU could buy a cheap ($99) tablet or a low price laptop. But even that can be very expensive when a person can only earn the equivalent of a few dollars a day. Prices will come down and wages will go up but I admit this is the biggest argument against my above reasoning. If this isn't a move to compete against the cost of owning multiple devices then why create this feature?

Secondly, having more devices isn't always better. This can be hard to understand when we are used to having lots of devices and using them for specialised tasks. Most consumer's computer based tasks aren't all that specialized though. If you're a developer yes, you absolutely need a high powered computer to complete your tasks and it is perfectly reasonable to not be able to imagine a scenario where a phone could be powerful enough for all your computing needs. In places where people aren't already using other computing devices this isn't the case. If a phone can meet most of your computing needs, it's much simpler to have everything in that one place and on the rare occasion you need it for something more to plug in a bigger screen to work on an office document or view content in a browser. Compare this with a secondary device that is only used for the occasional task. I can easily imagine a scenario which goes along the lines of:
  • Where is it?
  • Ok, found it, now is it charged?
  • Oh, the OS/app needs an update.
  • Oh I first need to reconnect and sync content
  • and so on.....
Compare this with just plugging in and already being set up and ready to go.

For the same amount of money (currently) you could have multiple devices that allows the same result. Only at a cost to the smoothness of the experience.
Aah, you may say, but if they had a tablet as well they would find other uses for and value from it too.
That's a fair point and I'm sure they would. But that ignores my prediction that the cost difference will become much smaller by the time devices are available to them. And again, if this does nullify my conjecture about why continuum was created and who it is ultimately for, what is the reason for its existence? (Assuming that there is a reason and Microsoft didn't do it on a whim with no end users in mind, nor market research to justify the investment in cost and development.)
Just having more devices isn't automatically a better thing if there are practical and cognitive costs to switching between them. Having more technological devices also has a cost to the environment through the resources they require.


** Update 2 **

Why does this even matter?

I assume continuum was created because within Microsoft a need or opportunity was identified and continuum for phones was seen as a way of meeting that need and benefiting from that opportunity. I also assume that much work was done to validate the need and confirm that continuum for phones would meet that need in a beneficial way.

Whether continuum is a success or not (however that is defined) doesn't really matter to me. I'm much more interested in learning about the market, how it will develop, what future needs there will be and how they might be met. Understanding the specific need may help me better meet it and what other opportunities it may point to.
I'm not convinced that the perceived need was for a world where people would be hot desking with their phones as their only computer and the best way to prepare for that was to start marketing to people who are already carrying multiple devices. I may be wrong but it'd be good to know.


Wednesday, January 27, 2016