Phone Screen Streaming

demoFone.gifmobileways.de are looking for beta testers for their new service that allows you to control a S60 phone from anywhere on the Web and share the screen with an audience on the Web.

The screen of the mobile phone is streamed to a central server in real-time by using Remote Professional’s high performance screen compressing algorithms. The streaming server then re-encodes the screencast and serves a pure Flash FLV stream.

Older Devices

7610.gifOne thing that constantly surprises me is how many companies want to develop for older phones. Take Nokia S60 for example. Despite the fact that S60 3rd devices have been available for over a year now, some network operators, especially those in developing countries, are still selling many S60 2nd Edition phones.

This translates to companies specifying current new development for both S60 2nd and S60 3rd. It’s the same in the Windows Mobile World with the older ‘Windows Mobile 2003’ only just now reaching ‘end of development life’ despite Windows Mobile 5.0 and 6.0 devices shipping.

I don’t know why S60 2nd is still popular – probably price. Whatever the reason, this is a message to not just Nokia but all phone OEMs and tools vendors to consider backward tools support for old devices. When creating new versions of tools it’s very easy (and tempting) to drop tools support for older phones. For example it happened in Carbide.c++ 1.3 which doesn’t (officially at least) support S60 2nd. As an aside, it can be hacked to support S60 2nd with varying success.

Carbide.c++ 1.2 disappeared from the Nokia site and, due to developer pressure, recently reappeared as an unsupported download without a full installer. Microsoft and Sun tend to be better at backward tools support. It remains to be seen how the newcommers (Apple, LiMo and Android) do.

Application Provisioning

OpenContentDeliveryServer.gifOne area I find companies often leave until late is provisioning of their application via their web server. It can be as simple as adding the application to your web server and adding the appropriate mime types. Some companies also set up simple SMS and WAP push mechanisms.

However, if you have more than one application, application variants or need to sell an application then things get more complex. In these cases it’s sometimes possible to leverage something that’s already been written.

Sun has just launched version 5.1 of the Sun Java System Content Delivery Server (CDS). CDS provides a free, open source, single content catalog that can support multiple storefronts on phones and PCs, as well as content pricing, promotion, preview, payment and delivery services. It’s built on Java EE and supports Java ME, Symbian and Microsoft Windows Mobile applications. It also supports monophonic, polyphonic and real ring tones, audio video clips and streaming.

The latest version (5.1) adds support for rich media and provides a more compelling and personalised subscriber experience.

OpenCDS, the open source version of Sun CDS, can be found at the OpenCDS community project on Java.net.

Remote Desktop and VNC

One of the challenges of developing for multiple mobile platforms is that each development platform usually requires a specific development machine setup. Some tools need to run on XP, some can be cajoled into working on Vista and obviously iPhone development needs a Mac. The requirement to have multiple build environments becomes even more troublesome when supporting legacy mobile applications that rely on older PC environments.

My strategy up to now has been to do most of my current development on one XP machine and use Microsoft Remote Desktop to develop under less frequently used development environments. This allows me to have continual access to common things like email, rss, calendar etc. as well as do development all through only one machine.

It works well and I even have a separate (remote desktop) machine that just acts as a file server, print server and has Backup4All on it that automatically archives, encrypts and backs up my work every night to a remote ftp server.

However, up until now I have had a separate desk, monitor and keyboard for iPhone development as it obviously doesn’t support Microsoft Remote Desktop. Today, I had some spare time and discovered that the Mac has VNC server built in.

To configure the Mac, go to System Preferences…Sharing. Click on Remote Management and select all the options…

macvnc.gif

Click on Computer Settings and enable VNC…

macvnc2.gif

Installing TightVNC has also allowed me to develop on the Mac through my PC. As a bonus, developing this way gives me a much larger screen size than if I had developed on the screen attached to the Mac. One tip though – stay with a plain Mac desktop background otherwise screen updating will be much slower.

 

Windows Mobile Gaining Ground?

windowsMobile_masthead_ltr.gifI am seeing more and more people coming to me with requirements for Windows Mobile applications. I actually started programming for mobile under Windows CE (‘Pegasus’) when it first came out in 1996. Since then, in Europe at least, fewer companies have been looking for Windows Mobile development and more have wanted Java ME and Symbian. The work I have done has followed this trend. However, I am starting to see this trend reverse for some reason. Why?

The only reason I can think is that Windows Mobile has only more recently had more exciting phones (mainly manufactured by HTC), has only recently started supporting 3G and these devices are now being taken up by network operators. Even Sony Ericsson is trying to get a slice of this action.

Consequently, I have been doing side by side S60 and Windows Mobile development over the last few months. Windows Mobile development is so much easier. Why? This has always been the case and in the past the main reasons were tools and documentation. In the past, the Microsoft Visual Studio IDE was so much better than Codewarrior and Borland. Using Visual Studio to program for Symbian was possible but troublesome. Documentation for Symbian, S60 and UIQ was poor compared to Microsoft’s SDK help, samples and 3rd party examples.

Today, things have changed. The Carbide.c++ has improved matters greatly for Symbian developers. The Symbian,  Nokia and UIQ Wikis have sufficient examples to help developers. So why is Windows Mobile still so much easier?

I think the main reason now is debugging. The latest Microsoft SDKs no longer emulate the phone using WINS emulators. Instead, you debug against a real ARM emulator running on top of Windows – much like you also do with Android. You can easily switch from debugging on the ARM emulator to debugging a  real device by just changing a drop-down setting. Everything works the same because the IDE/debugger is just seeing another ARM device.

In contrast, Symbian, S60 and UIQ still use WINS emulators that are very slow to start up, don’t run ARM code (so are a less faithful reproduction of the real thing) and on-target debugging that still hasn’t been perfected. In fact, many Symbian developers working at the application level still use log files to solve problems.

One Button Cross Platform Development Framework

One of the guys from navxs.com has emailed me about their new Cross Platform Development Framework for Mobile Applications…

 onebutton.gif

They can deploy to Android, Java ME, Windows Mobile and Blackberry. They started on a Symbian port but later decided to put their (limited) time on the other ports. Their first reference implementation is a Location Based Social Network called NavXS. There’s a short movie on YouTube explaining the framework.

Previously, I was of the opinion that there’s no money in writing tools – especially mobile tools. Just look at Borland and AppForge. However, with the new trend of higher level cross-development tools I think there are now opportunities in this space.

Netsize Guide

netsize.gifNetsize have just published their (free to download) Netsize guide

"The Netsize Guide is a comprehensive annual industry report, documenting the state of the global mobile content and services market. Drawing on in-depth research and exclusive interviews with industry executives and opinion-makers, it provides professionals an essential snapshot of the developments that have taken place and the trends that matter."

netsize1.gif 

netsize2.gif 

netsize3.gif 

The Guide is huge and contains so much information that it’s certain to be useful for anyone working or anticipating working in mobile. I was particularly interested in Rich Miner’s (VP Wireless Technology at Google) views on mobile advertising and his comments on the possibility of carriers having phones open to 3rd party extension. The Guide also includes sections on mobile enterprise and machine to machine – areas of opportunity that are often overlooked. The Guide also includes detailed statistics on a country-by-country basis.
 

Web Runtimes

vodafone.jpgThe final MoMo London presentation I am going  to post about is that by David Pollington of Vodafone R&D on web runtimes. David explained how a Javascript based runtime can be used to host mobile applications and services. The advantages are lower barriers to entry, reduced development time, decoupled application development and dynamic update.

David described the concept of an enhanced runtime that would allow access to phone features such as files, PIM, messaging, call handling, system data and the camera. Vodafone call this MobileScript.

vfwebruntimems.gif 

The presentation continued with a comparison of web runtimes with other development methods…

vfwebruntime.gif 

The slide shows web page widgets having a greater reach than Java ME and native APIs. I found this a bit misleading. Very few phones are currently able to run (Javascript) widgets. Maybe the it shows the potential for widgets in the future? Then again, in an ideal or future world Java and Symbian might have a greater reach.

Vodafone are championing the idea of a standards based web runtime extension to allow access to phone features. In fact, just after MoMo, the there was a post on the W3C Mobile Web Initiative Team Blog about this. Let’s hope this happens. However, I am slightly sceptical that all the necessary parties can get together to solve this problem. I am also sceptical that this will be done (as opposed to ‘can be done’) in such a way that resulting applications and services don’t have to be re-written for specific devices. For example, the existing Nokia S60 widget support is currently a proprietary solution involving a S60 specific application install.