Category Archives: mobile

Windows Phone 7 development hits the big screen

I spent yesterday in the dim light of a Manchester cinema, attending the Windows Phone 7 developer day.

The event was organised by DeveloperDeveloperDeveloper, which is a .NET community group run, as far as I can tell, by a group of Microsoft MVPs. The sponsors were Microsoft, Appa Mundi, and NxtGenUG. Towards the end of the day, Andy Wigley (from Appa Mundi) made a statement that this was a community event and not an official Microsoft event. It was true up to a point, though as far as I can tell Microsoft paid for most of it -“Microsoft UK very kindly provided the venue and logistic support.” says the event description. Microsoft was present showing real Windows Phone 7 devices, and the presenters included Andy Wigley (from Appa Mundi) and Rob Miles, who have also presented the official Jump Start training for Windows Phone 7, and regular TechEd speaker Maarten Struys who is a Windows embedded and Windows Phone evangelist working for Alten PTS in the Netherlands. Community, or Microsoft PR?

Regardless, they were excellent speakers and well informed on all things Windows Phone 7. The community aspect did come to the fore when it came to the catering – there was none – and the venue itself which felt as you would expect a cinema out of hours to feel. I’m guessing Microsoft the community was disappointed with the attendance, around 100 in a venue that seats 330.

image

There is one significant benefit to presenting in a cinema. The screen and projection was first-rate.

image

The sessions themselves were introductory but struck me as useful for anyone getting started with Windows Phone 7 development – which given the devices are not yet available, is probably most of us. Andrej Radinger’s session on creating apps that work offline was particularly interesting to me. I had previously seen the Jump Start course so some of the material was already familiar, though the refresher did no harm.

Much of the challenge of Windows Phone 7 development is coping with the fact that your app will frequently get killed and have to resume later as if nothing happened. We got a lot of input on this topic.

Another challenge is coping with Expression Blend. Designer Tricky Bassett gave a short but insightful view of the design process for a Windows Phone 7 app, with some intriguing asides along the way. He is a design professional, and said that his team had been excited about SketchFlow, the prototyping tool in Blend, but in practice found it little use because they only need sketches, rather then the working controls which SketchFlow gives you. He also commented on Blend, saying that Blend with Windows Phone 7 projects was more stable than it had been before, in his experience with other projects. In previous work with Blend, solutions that did not load have been a recurring problem – I take it that either they loaded in Visual Studio but not in Blend, or vice versa.

Bassett also said that Blend takes some effort to learn, and this was confirmed by the way some of the presenters struggled to do basic operations with the tool. The Blend UI is perplexing and at events like this one I’d suggest that a Blend Basics piece would go down well.

The Silverlight and XNA platforms strike me as pretty good, though I think that lack of native code development will be a problem among the best developers – there are interesting rumours about certain developers getting special privileges.

image

My overriding impression though is that the phone is good, the tools are good, but the demand is lacking. One developer told me that he has been trying to sell an idea for a custom Windows Mobile application to a small business client with 12 employees. They are keen but their employees want either Apple iPhone or Google Android phones. Windows Phone 7 may help by being a better and more attractive device, but getting past the perception that Windows phones are not much good is going to be a problem.

But what can Microsoft do? It is going to take devices that deliver on the promise, a stunning marketing campaign, and aggressive pricing, for this thing to flourish.

Rethinking Developers Developers Developers

I’m waiting for Microsoft CEO Steve Ballmer to speak at the London School of Economics, which seems a good moment to reflect on his well-known war cry “Developers Developers Developers”.

Behind the phrase is a theory about how to make your platform succeed. The logic is something like this. Successful platforms have lots of applications, and applications are created by developers. If you make your platform appealing to developers, they will build applications which users will want to run, therefore your platform will win in the market.

Today though we have an interesting case study – Apple’s iPhone. The iPhone has lots of apps and is winning in the market, but not because Apple made it appealing to developers. In fact, Apple put down some roadblocks for developers. The official SDK has one programming language, Objective C, which is not particularly easy to use, and unlikely to be known other than by existing Apple platform developers. Apps can only be distributed through Apple’s store, and you have to pay a fee as well as submit to an uncertain approval process to get your apps out there. Some aspects of iPhone (and iPad) development have improved since its first launch. A clause in the developer agreement forbidding use of languages other than Objective C was introduced and then removed, and the criteria for approval have been clearly stated. Nevertheless, the platform was already successful. It is hard to argue that the iPhone has prospered thanks to Apple’s developer-friendly policies.

Rather, the iPhone succeeded because its design made it appealing to users and customers. Developers went there because Apple created a ready market for their applications. If Apple CEO Steve Jobs were prone to shouting words in triplicate, they might be “Design Design Design” or “Usability usability usability”. And as for developers, what they want is “Customers customers customers.”

Well, there are vicious and virtuous circles here. Clearly it pays, in general, to make it easy for developers to target your platform. Equally, it is not enough.

Microsoft’s own behaviour shows a shift in focus towards winning customers through usability, thanks no doubt to Apple’s influence and competition. Windows 7 and Windows Phone 7 demonstrate that. Windows Phone 7 is relatively developer-friendly, particularly for .NET developers, since applications are built on Silverlight, XNA and the .NET Framework. If it succeeds though, it will be more because of its appeal to users than to developers.

What do developers want? Customers customers customers.

Google’s web app vision: use our store

I’m at the Future of Web Applications conference in London, a crazy mixture of tips for web start-ups and general discussion about application development in a web context. The first session was from Google’s Michael Mahemoff who enthused about HTML5 and open web standards, while refusing to be pinned down on what HTML5 is, which standards are in and which may in the end be out.

Microsoft is here showing off IE9; but one of my reflections is that while the HTML5 support in IE9 is impressive in itself, there are going to be important parts of what, say, Google considers to be part of HTML5 that will not be in IE9, and given the pace of Microsoft’s browser development, probably will not turn up for some time. In other words, the pressure to switch to Chrome, Firefox or some other browser will likely continue.

I digress. Mahemoff identified four key features of web apps – by which he means something different than just an application on the web. These are:

  • Local storage – encompassing local storage API and also local SQL, though the latter is not yet well advanced
  • Application cache – Cache Manifest in HTML 5 that lets your app run offline
  • Local installation – interesting as this is something which is not yet widely used, but clearly part of Google’s vision for Chrome, and also in IE9 to some extent.
  • Payments

The last of these is interesting, and I sensed Mahemoff showing some discomfort as he steered his way between open web standards on the one hand, and Google-specific features on the other. He presented the forthcoming Chrome Web Store as the solution for taking payments for your web app, whether one-time or subscription.

I asked how this would work with regard to the payment provider – could you freely use PayPal, direct debits or other systems? He said that you could do if you wanted, but he anticipated that most users would use the system built into Chrome Web Store which I presume is Google Checkout. After all, he said, users will already be logged in, and this will offer the smoothest payment experience for them.

The side effect is that if Chrome Web Store takes off, Google gets to make a ton of money from being the web’s banker.

Outside in the exhibition area Vodafone is promoting its 360 app store, with payments going through the mobile operator, ie in this case Vodafone. Vodafone’s apps are for mobile not for web, but it is relevant because it is trying to draw users away from Google’s Android Marketplace and onto its own store. PayPal is here too, showing its developer API.

The app store and payment provider wars will be interesting to watch.

RIM’s new BlackBerry tablet, WebWorks developer platform – but who wants small tablets?

Blackberry has announced its pitch for the emerging tablet market, the 7” screen PlayBook. It has a new OS base on QNX Neutrino, a webkit-based web browser, Adobe Flash and AIR – offline Flash applications – front and rear cameras for video conferencing as well as taking snaps, and includes a USB port and HDMI out. There is wi-fi and Bluetooth but no 3G in the first release; you can connect to the Internet via your Blackberry. Storage is not yet specified as far as I can tell. There is no physical keyboard, which is surprising in some ways as the keyboard is the reason I hear most often for users choosing a BlackBerry smartphone over Apple’s iPhone.

image

Alongside the PlayBook RIM has announced a new developer platform. WebWorks is an HTML5 platform extended with access to local APIs, and targets both the Tablet OS and BlackBerry smartphones:

BlackBerry WebWorks applications can tap into the always-on, notification-based, push-enabled, contextual and social attributes of the BlackBerry smartphone. These applications can also access hardware features and integrate with other apps, and are powerful Super Apps that are fully integrated into the BlackBerry Application Platform.

In order to access local resources you need to package your app as a Blackberry application. Java and native C applications are also supported.

A winner? Well, there is a widespread industry presumption that we all want tablets; for example NVIDIA CEO Jen-Hsun Huang is planning on this basis, judging by what he said to the press last week. It is certainly a market in which every vendor wants a presence. There are a number of open questions though. The new tablet market is really defined by Apple’s iPad, and success for other operating systems and form factors is yet to be demonstrated. Personally I am not sure about the 7-inch screen, which is perhaps too large for a pocket and too small for the desktop-like web browsing you can do on an iPad. Here are the dimensions:

  • BlackBerry PlayBook:  7-inch 1024×600 screen,130mm x 193mm x 10mm
  • Apple iPad: 9.7-inch 1024×768 screen, 189.7mm x 242.8mm x 13.4mm

I doubt there will be much enthusiasm for carting around a phone, a small tablet, and a laptop, so in order to be viable as a portable device for work it has to be a laptop replacement. I do see this happening already with the iPad, though for me personally a netbook is both cheaper and more practical.

Apps are another key factor. It is smart of RIM to support Flash and AIR, which along with HTML 5 web applications are likely the best bet for supporting something like the PlayBook without a lot of device-specific work.

NVIDIA CEO on the spot: explains Fermi delays, CUDA vs OpenCL, rise of the tablet

NVIDIA CEO Jen-Hsung Huang spoke to the press at the GPU Technology Conference and I took the opportunity to ask some questions.

image

I asked for his views on the cloud as a supercomputer and whether that would impact the need for local supercomputers of the kind GPU computing enables.

Although we expect more and more to happen in the cloud, in the meantime we’re going to keep buying devices with more and more solid state memory. The way to think about it is, storage is simply a surrogate for bandwidth. If we had infinite bandwidth none of us would need storage. As bandwidth improves the requirement for storage should reduce. But there’s another trend which is that the amount of data we collect is growing incredibly fast … It’s going to be quite a long time before our need for storage will reduce.

But what about local computing power, Gigaflops as opposed to storage?

Wherever there is storage, there’s GigaFlops. Local storage, local computing.

Next, I brought up a subject which has been puzzling me here at GTC. You can do GPU programming with NVIDIA’s CUDA C, which only works on NVIDIA GPUs, or with OpenCL which works with other vendor’s GPUs as well. Why is there more focus here on CUDA, when on the face of it developers would be better off with the cross-GPU approach? (Of course I know part of the answer, that NVIDIA does not mind locking developers to its own products).

The reason we focus all our evangelism and energy on CUDA is because CUDA requires us to, OpenCL does not. OpenCL has the benefit of IBM, AMD, Intel, and ourselves. Now CUDA is a little difference in that its programming approach is different. Instead of an API it’s a language extension. You program in C, it’s a different model.

The reason why CUDA is more adopted than OpenCL is because it is simply more advanced. We’ve invested in CUDA much longer. The quality of the compiler is much better. The robustness of the programming environment is better. The tools around it are better, and there are more people programming it. The ecosystem is richer.

People ask me how do we feel about the fact that it is proprietary. There’s two ways to think about it. There’s CUDA and there’s Tesla. Tesla’s not proprietary at all, Tesla supports OpenCL and CUDA. If you bought a server with Tesla in it, you’re not getting anything less, you’re getting CUDA more. That’s the reason Tesla has been adopted by all the OEMs. If you want a GPU cluster, would you want one that only does OpenCL? Or does OpenCL and CUDA? 80% of GPU computing today is CUDA, 20% is OpenCL. If you want to reach 100% of it, you’re better off using Tesla. Over time, if more people use OpenCL that’s fine with us. The most important thing is GPU computing, the next most important thing to us is NVIDIA’s GPUs, and the next is CUDA. It’s way down the list.

Next, a hot topic. Jen-Hsun Huang explained why he announced a roadmap for future graphics chip architectures – Kepler in 2011, Maxwell in 2013 – so that software developers engaged in GPU programming can plan their projects. I asked him why Fermi, the current chip architecture, had been so delayed, and whether there was good reason to have confidence in the newly announced dates.

He answered by explaining the Fermi delay in both technical and management terms.

The technical answer is that there’s a piece of functionality that is between the shared symmetric multiprocessors (SMs), 236 processors, that need to communicate with each other, and with memory of all different types. So there’s SMs up here, and underneath the memories. In between there is a very complicated inter-connecting system that is very fast. It’s nearly all wires, dense metal with very little logic … we call that the fabric.

When you have wires that are next to each other that closely they couple, they interfere … it’s a solid mesh of metal. We found a major breakdown between the models, the tools, and reality. We got the first Fermi back. That piece of fabric – imagine we are all processors. All of us seem to be working. But we can’t talk to each other. We found out it’s because the connection between us is completely broken. We re-engineered the whole thing and made it work.

Your question was deeper than that. Your question wasn’t just what broke with Fermi – it was the fabric – but the question is how would you not let it happen again? It won’t be fabric next time, it will be something else.

The reason why the fabric failed isn’t because it was hard, but because it sat between the responsibility of two groups. The fabric is complicated because there’s an architectural component, a logic design component, and there’s a physics component. My engineers who know physics and my engineers who know architecture are in two different organisations. We let it sit right in the middle. So the management lesson learned – there should always be a pilot in charge.

Huang spent some time discussing changes in the industry. He identifies mobile computing “superphones” and tablets as the focus of a major shift happening now. Someone asked “What does that mean for your Geforce business?”

I don’t think like that. The way I think is, “what is my personal computer business”. The personal computer business is Geforce plus Tegra. If you start a business, don’t think about the product you make. Think about the customer you’re making it for. I want to give them the best possible personal computing experience.

Tegra is NVIDIA’s complete system on a chip, including ARM processor and of course NVIDIA graphics, aimed at mobile devices. NVIDIA’s challenge is that its success with Geforce does not guarantee success with Tegra, for which it is early days.

The further implication is that the immediate future may not be easy, as traditional PC and laptop sales decline.

The mainstream business for the personal computer industry will be rocky for some time. The reason is not because of the economy but because of mobile computing. The PC … will be under disruption from tablets. The difference between a tablet and a PC is going to become very small. Over the next few years we’re going to see that more and more people use their mobile device as their primary computer.

[Holds up Blackberry] There’s no question right now that this is my primary computer.

The rise of mobile devices is a topic Huang has returned to on several occasions here. “ARM is the most important CPU architecture, instruction set architecture, of the future” he told the keynote audience.

Clearly NVIDIA’s business plans are not without risk; but you cannot fault Huang for enthusiasm or awareness of coming changes. It is clear to me that NVIDIA has the attention of the scientific and academic community for GPU computing, and workstation OEMs are scrambling to built Tesla GPU computing cards into their systems, but transitions in the market for its mass-market graphics cards will be tricky for the company.

Update: Huang’s comments about the reasons for Fermi’s delay raised considerable interest as apparently he had not spoken about this on record before. Journalist Nico Ernst captured the moment on video:

Latest job stats on technology adoption – Flash, Silverlight, iPhone, Android, C#, Java

It is all very well expressing opinions on which technologies are hot and which are struggling, but what is happening in the real world? It is hard to get an accurate picture – surveys tend to have sampling biases of one kind or another, and vendors rarely release sales figures. I’ve never been happy with the TIOBE approach, counting mentions on the Internet; it is a measure of what is discussed, not what is used.

Another approach is to look at job vacancies. This is not ideal either; the number of vacancies might not be proportionate to the numbers in work, keyword searches are arbitrary and can include false positives and omit relevant ads that happen not to mention the keywords. Still, it is a real-world metric and worth inspecting along with the others. The following table shows figures as of today at indeed.com (for the US) and itjobswatch (for the UK), both of which make it easy to get stats.

Update – for the UK I’ve added both permanent and contract jobs from itjobswatch. I’ve also added C, C++, Python and F#, (which hardly registers). For C I searched Indeed.com for “C programming”.

  Indeed.com (US) itjobswatch (UK permanent) itjobswatch (UK contract)
Java 97,890 17,844 6,919
Flash 52,616 2,288 723
C++ 48,816 8,440 2470
C# 46,708 18,345 5.674
Visual Basic 35,412 3,332 1,061
C 27,195 7,225 3,137
ASP.NET 25,613 10,353 2,628
Python 17,256 1,970 520
Ruby 9,757 968 157
iPhone 7,067 783 335
Silverlight 5,026 2,162 524
Android 4,755 585 164
WPF 4,441 3,088 857
Adobe Flex 2,920 1,143 579
Azure 892 76 5
F# 36 66 1

A few quick comments. First, don’t take the figures too seriously – it’s a quick snapshot of a couple of job sites and there could be all sorts of reasons why the figures are skewed.

Second, there are some surprising differences between the two sites in some cases, particularly for Flash – this may be because indeed.com covers design jobs but itjobswatch not really. The difference for Ruby surprises me, but it is a common word and may be over-stated at Indeed.com.

Third, I noticed that of 892 Azure jobs at Indeed.com, 442 of the vacancies are in Redmond.

Fourth, I struggled to search for Flex at Indeed.com. A search for Flex on its own pulls in plenty of jobs that have nothing to do with Adobe, while narrowing with a second word understates the figure.

The language stats probably mean more than the technology stats. There are plenty of ads that mention C# but don’t regard it as necessary to state “ASP.NET” or “WPF” – but that C# code must be running somewhere.

Conclusions? Well, Java is not dead. Silverlight is not unseating Flash, though it is on the map. iPhone and Android have come from nowhere to become significant platforms, especially in the USA. Beyond that I’m not sure, though I’ll aim to repeat the exercise in six months and see how it changes.

If you have better stats, let me know or comment below.

Apple lifts restrictions on app development tools, publishes review guidelines

Apple has lifted its restrictions on the development tools used to create iOS (iPhone and iPad) apps, in a statement published today:

We have listened to our developers and taken much of their feedback to heart. Based on their input, today we are making some important changes to our iOS Developer Program license in sections 3.3.1, 3.3.2 and 3.3.9 to relax some restrictions we put in place earlier this year. In particular, we are relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code. This should give developers the flexibility they want, while preserving the security we need.

In addition, Apple says it is publishing the App Store Review Guidelines in the hope that this will make the approval process more transparent.

Good news I guess; but why? Maybe in part because the restrictions made little sense and were possibly unenforceable; and in part because Android’s popularity is putting pressure on Apple to be more developer-friendly. In practice, some apps that you would have thought breached the requirements apparently made it through the approval process; and those publishers of cross-platform tools which kept their nerve have their patience rewarded.

But what about Adobe? Apple’s development restrictions seems to trigger a significant change of direction, with work on the Packager for iPhone stopped, Android devices issued to employees, and evangelism for Android in Adobe blogs and tweets.

Since Apple is not changing its mind about runtimes, but only about development tools, this change of mind does not enable Flash on the iPhone; but I guess Adobe could now revive its cross-compilation work. On the other hand, Apple’s pronouncements have caused disruption for Adobe and perhaps served more as a wake-up call: this is a closed platform with one owner and therefore a risky target for investment.

Ten ways the Android HTC Desire beats Apple’s iPhone

I’m just getting started with Android development, for which I got hold of an HTC Desire. And I’ve been using Apple’s iPhone 4 since its release in the UK. So which is better? There’s no satisfactory quick answer to that, though the two phones are certainly comparable; perhaps too much so, judging by Apple’s lawsuit. I thought it would be fun though to do a quick couple of posts on how they compare, of which this is the first. Reasons to prefer iPhone coming next. The following points are based on the Desire running Android 2.2 “Froyo”.

1. You can plug in a micro SD card to expand the storage. Apple does not support this with the iPhone; it may be because it wants to control what goes on the device, or because it uses storage space as means of selling more expensive versions of its devices.

2. Related to (1), you can copy a file to the phone by attaching it to a PC and using the filesystem. To do this with the iPhone you need additional software, or a solution like Dropbox which copies your document up to the Internet then down onto the iPhone.

3. You don’t need to install iTunes to get full use of the device. Some like iTunes, some do not; it is better on the Mac than on Windows, but it is great to avoid that dependency.

4. You can share your internet connection without fuss, either by creating a portable wi-fi hotspot, or through a USB connection.

image

5. Adobe Flash works on Desire. Coming soon is Adobe AIR, which will enable developers to create Flash applications as well as Flash-driven web content.

6. The platform is more open. Developer registration is only $25.00 (vs $99 for iPhone) and there are fewer restrictions concerning how you develop your application, what sort of app you create, or what language you use. The standard language is Java, which is easier to learn and more widely used than Apple’s Objective C.

7. The Desire has instant screen switching. Press home when already on the home screen, and you get thumbnails of all seven screens; touch a thumbnail to bring it to the front. Widget support means you can put those screens to good use too – not just for storing app shortcuts.

8. The battery is removable. The obvious advantage is that you can carry a spare with you.

9. It uses a standard USB cable. A small point perhaps; but it is easy to lose your cable or not have it with you, and being able to use a standard cable is convenient.

10. There’s no issue with the antenna when using the Desire without a case.

Getting started with Android – a few hassles

I’m setting myself up for Android development, and my HTC Desire arrived today. It is a lot of fun, though I have had a few hassles, partly because my device is locked to Orange and of course I wanted to upgrade to Android 2.2 “Froyo” right away. There are also a few issues with the Orange branding on a Desire, including the absence of Google Talk and applications like Orange Maps that you probably will not use. I went through a series of steps to unbrand the phone and install Android 2.2.

It is an odd situation, where mobile operators work hard at adding their branding and applications to the device, only for canny users to work out how to remove them. Branding also delays updates. If Android is updated, the operator has to receive the updated operating system image from the phone manufacturer, HTC in this case, add its customizations, and then apparently sent it back to HTC for packaging.

My guess is that if an operator decided to ship the standard Android image it would be a selling point and attract more customers. I even have a catchy name to offer: “Naked Desire”. How about it?

Still, all went well with my hacks; and eventually I was up and running with Android 2.2 and of course Flash 10.0:

image

That said, I had an annoying issue with Android Market. I selected an application, it would appear to start installing, but stuck on “Starting download” or “Downloading” with no actual progress.

It turns out this is a common problem – see here for one of many discussions. A popular fix is to change your account from someone@gmail.com to someone@googlemail.com, but this did not apply to me. I discovered the reason, which is that my wifi is behind Microsoft’s ISA Server. Android Market requires TCP outbound connections on port 5228. I configured ISA accordingly, and after cancelling and restarting the downloads they succeeded.

Finally, I wanted a screen grab or two to decorate this post. I used the method described here, fine for developers but not ideal for casual users.

image

I’ll report more impressions shortly, including no doubt the inevitable iPhone comparison.