Dreamweaver CS5.5 PhoneGap apps: performance issues on Android

This is a follow-on from my earlier post about building a simple PhoneGap app using Adobe Dreamweaver CS5.5. I built it on Windows targeting Android. I liked the development experience up to the point of trying the app: it looks great, but performance is terrible. That is, you tap a button and there is a perceptible pause before the app responds. It is worse in the emulator than on my HTC Desire, but still poor.

I had thought it was a configuration setting – though Dreamweaver makes it rather hard to access the build settings – but I am now wondering if jQuery mobile plus PhoneGap is just too demanding for most Android devices out there right now. Admittedly my Desire is a year or so old now. See this thread for example:

JQuery Mobile on Android is definitely slow. (Tested A2 and A3Pre on Samsung Galaxy S, HTC Desire, ZTE Blade (edit: 2.2 Froyo) – with PhoneGap, stock browser, Opera Mobile)

Something has to be done. The experience is low quality.

It is worth noting that PhoneGap is not yet a version 1.0 release – I was told it may be done by July. Further, you do not have to use jQuery Mobile with it in Dreamweaver; it just happens to provide a great set of user interface widgets. It may be better on Apple iOS; I have not tried that yet.

Nevertheless, this looks like a significant issue if you planning to dive in and deliver Android apps using the tools in the new Dreamweaver.

NVIDIA postpones GPU Technology Conference to Spring 2012

NVIDIA is postponing its GPU Technology Conference, which was set for October 2011 to a date yet to be announced in April or May 2012, in the San Francisco Bay Area.

What’s the reason? This is what its email newsletter says:

To better align our flagship North American GTC with our growing number of GTC regional events, as well as other events in the HPC calendar, we will establish GTC as an annual springtime event. We will use the Supercomputing Conference (SC) in the fall as a leading venue for advancing GPU computing, and firmly establish GTC as an annual fixture in the spring.

It seems that the October date was too close to that of the Supercomputing Conference 11, which is set for November 12-18 in Seattle.

The company is promising an expanded series of regional events, to support interest in its CUDA language for general-purpose programming on the GPU.

Hands on: Building a PhoneGap app with Dreamweaver CS 5.5

One interesting feature in the new Adobe Creative Suite 5.5 is that PhoneGap is integrated into Dreamweaver. What this means is that you can build a mobile app for Google Android or Apple iOS from within Dreamweaver.

I have just installed the new suite, so decided to give it a try. My project: to create a working calculator app and install it on an HTC Desire (Android 2.2).

I started by creating a new document based on the PhoneGap Mobile Starter.

image

Next, I created a new site with the name “Calc”, in a folder called Calc.

I saved the page as index.html. When I did so, Dreamweaver prompted me to copy a bunch of JQuery Mobile stuff into the folder.

Then I selected “Configure Application Framework…” from the Mobile Applications option on the Site menu.

image

This menu is pretty much all you get for PhoneGap support. The Configure option lets you select the Android SDK or install it. Mine was already installed.

image

If you want to build for iOS, you need to run Dreamweaver on a Mac, though I guess you could code on Windows and build on the Mac using PhoneGap in the normal way.

The next step was to write the application. I mostly used the code view. DreamWeaver has a handy Insert panel which you set to jQuery Mobile. Drag controls from here into your code or design view.

image

Beware: the design view is a bit hopeless for jQuery Mobile apps, unless you have Live view switched on. Here they are side by side:

image

I built probably the world’s worst calculator. Assembling the user interface was easy though. I used a jQuery Mobile Layout Grid for the buttons. I wrote some quick JavaScript with no error handling whatsoever. I used Firefox and its error console for simple debugging.

When I was done, I selected “Application Settings…” from the Mobile Applications menu. Here you can set a few properties including the version and the icon.

image

Build and Emulate from the Mobile Applications menu.

image

This installed the app in the Android emulator. I could run it successfully, though it was mighty slow. You click a button, then after a noticeable pause the app updates to show the value you clicked. However, my app worked.

image

Next, I attached my Desire phone, and copied across the calc-debug-apk package which had been built. I detached the phone and tapped the app. Again success – but the app, while faster than the emulator, is still slow.

image

That is possibly because it is a debug build. But how do you specify a release build? I cannot find a setting for it in Dreamweaver, which seems a striking omission. I am hoping it is possible to tweak the PhoneGap build properties in the generated source, but it looks like I will need to consult the PhoneGap documentation for this.

On the one hand I am impressed. The UI looks nice considering how little time I spent on it, thanks to jQuery mobile. Further, the application works, and I was able to build it entirely in Dreamweaver. The code completion in Dreamweaver’s editor is decent.

On the other hand, documentation is terrible. This article is almost all I can find – beware the dud link to abobe.com:

image

I am not complaining about the PhoneGap docs or the jQuery Mobile docs, but the Adobe docs for using this in Dreamweaver. I hope that more will come.

Update: I spent some more time on this trying to fix the performance issues. The fact of being a debug build should not affect performance as far as I can tell; it merely signs the app with a debug key. I moved the project to the standard Eclipse tools and built it there in case Dreamweaver was messing up the build in some way, but performance is just as bad. More research throws up threads like this one:

I’ve been using Phonegap & JQM on a real device and it is also very slow (HTC Hero, upgraded to 2.1), but it flies on an ipod touch 4th gen. I guess the HTC is just getting old but I’d like to try it on a more modern device.

My initial conclusion then is that a jQuery Mobile/PhoneGap app on an HTC Desire running Android 2.2 will never perform well. It sounds like it might be OK on iOS; I guess I should try that next.

See also my interview with Nitobi president André Charland about PhoneGap.

Brian Eno and Rick Holland: Drums between the bells

Brian Eno and Rick Holland are releasing Drums between the Bells on 4th July 2011. Here’s a sample song, called Glitch:

Brian Eno – glitch (taken from Drums Between The Bells) by Warp Records

“There is a glitch in the system outside the brain flow,” it begins; and while I would not like to be pressed on the meaning of this statement I like the track, which is intriguing, melodic and percussive, complete with electronically modified vocals. If you prefer the non-ambient Eno to the ambient Eno, as I guess I do, you might like this one.

You can get it from Eno Shop in a variety of formats, including an expensive book and 2CD package with bonus instrumental versions of the tracks, or as a standard CD.

Decent Microsoft results, but where is the cloud? where is mobile?

Microsoft has released its results for the quarter ending March 31 2011. The figures are pretty good; but despite much talk about the cloud there is little sign that Microsoft is reinventing its business – unless you count Xbox, which has had another excellent quarter and is delivering meaningful operating income for the company.

Quarter ending March 31 2011 vs quarter ending March 31 2010, $millions

Segment Revenue Change Profit Change
Client (Windows + Live) 4445 -205 2764 -399
Server and Tools 4104 398 1419 149
Online 648 82 -726 -17
Business (Office) 5252 911 3165 623
Entertainment and devices 1935 725 225 75

Windows is a little down in the quarter, which Microsoft says in the press release is “in line with PC trends”; a small statement which disguises what must be real concern about the market drift towards iPads and SmartPhones that are made by other companies.

Server and tools put in a decent but unspectacular performance. Office on the other hand was a powerhouse this quarter. Again, the press release statement is telling:

the integrated innovation with SharePoint, Exchange, Lync and Dynamics CRM is driving significant growth for the division

If you substitute “lock-in” for “integrated” you will not be far wrong. As an aside, I spoke to a major UK retailer last week about its move towards desktop virtualization. The exec I spoke to mentioned in passing that as they rolled out SharePoint 2010, they also realised that they would have to upgrade to Office 2010 at the same time, otherwise too much stuff just would not work properly. From Microsoft’s point of view, that is “integration” working as designed.

Online on the other hand, which I understand is mainly Bing and advertising revenue, had yet another miserable quarter. Microsoft says it is pleased that revenue increased; but the loss is bigger too, and the loss is comfortably bigger than the revenue which means it spent more than twice what it earned in this segment. Perhaps it is worth it, if Google is rattled even slightly by Bing’s growing search share, up to a claimed 13.9% in the US, but this is the longest of hauls.

So where’s the cloud? Azure is not mentioned in the release, and I am not even sure in which segment it lives; my guess is Server and Tools. Office 365, which is not yet launched, does get a mention. I think Office 365 will be big business for Microsoft, though it is going to cannibalise the server business a little.

Mobile? Somewhere lost in Entertainment and devices, where clearly the major element is Xbox. Something curious happened when Kinect launched; as a hands-free controller the device is imperfect but its genuine innovation seems to have boosted the profile and sales of the Xbox generally. A couple of years ago when we were all talking about the red ring of death I would not have expected such excellent figures.

This company remains a powerhouse, but the fact that its fortunes remain closely tied to those of the PC, and its lack of progress in mobile devices, are a concern.

Logitech’s Squeezebox app for iPhone and iPad: nice to have but a missed opportunity

Logitech has released a Squeezebox control app for iPhone and iPad, to match an existing app for Android.

I am a Squeezebox fan. The system is excellent for multi-room – just put a Squeezebox player in any room where you want music, put it on your home network (usually wifi), and it finds your music collection. You can get a player like the Touch, which I reviewed here, or an all-in-one unit like the Boom, which I reviewed here. I rip CDs to FLAC using dbPowerAmp. Squeezebox does multi-room properly, in that each player can play something different, and the sound quality is generally excellent. Internet radio is also available, and there is no need to have a separate tuner.

That said, the appeal of Squeezebox is limited by the techie nature of the product, especially the software. When Logitech acquired Slimdevices in 2006, I thought we might see a new focus on ease of use, but it has not really happened. Apple does this better, making it hard for Squeezebox to compete with iTunes and Airport Express or Apple TV, even though the Squeezebox system is more open and superior in some ways.

There are multiple ways to control a Squeezebox player. You can use a remote to navigate the display on the player, whether the simple but bold display on a Classic, or the graphical colour display on a Touch. You can use touch control on a Touch screen. You can use a web browser on a PC, Mac or any machine on the network. Or you use an app such as SqueezePlay on a PC, or third party apps like iPeng on iOS, or Squeezepad on an iPad.

All these methods work, but in general the web browser is the most feature-rich and good if you are sitting at a desk, while the apps are better if you have a suitable device like an iPhone, iPad, or Android smartphone. The remotes work, but you need to be close enough to read the display and navigation can be fiddly.

An iPhone app is ideal though, so it is great news that Logitech has now released an official app for the iPhone. It is free, and unless you already have iPeng a must-have for Squeezebox users who have an iPhone. Apps are better than a remote for all sorts of reasons:

  • No need to point at an infra-red receptor
  • No need to read a distant display
  • Album artwork on the remote
  • More features conveniently available

I downloaded the new app and ran it. The first thing you have to do is to log into Mysqueezebox.com, Logitech’s internet service. In fact, the impression you get is that you cannot use the app without logging on. I am not sure if there is any way round this, but it seems odd to me. Presuming you are using a local Squeezebox server, why require log-on to an internet service?

I already have a Mysqueezebox account though, so I logged on, whereupon the various players we have around the house appeared for selection. Once selected, I get a menu similar to that on a physical player or on SqueezePlay:

image

If I click My Music, I can navigate using the usual range of options, including Artists, Albums, Genres, New Music (which means recently added) or my favourite, Random Mix. Just selected an album is not enough to play it, but shows the tracks; tapping the first track starts it playing. Eventually you will get the Now Playing screen, which you can also access by pressing the musical note icon on the Home screen.

image

Perhaps I am fussy, but I am not happy with this screen. As you can see, the album artwork is overlaid with text and controls, and although a progress bar can be shown or hidden by tapping, the other controls seem immoveable, which means you cannot see the full artwork.

My other complaint is that the user interface, while familiar to those who already know Squeezebox, lacks the usability you expect from an iPhone app. Operating it takes too many taps. Take search, for example. You want to find a different song, so you tap Back to get the Home screen, then Search. Type something in, then click Search. The next screen then asks whether you want to search in My Music or Internet Radio. You tap My Music, and still get no results, just a list that says Artists, Albums, Songs, Playlists. You tap Songs, and now you finally get a results list. Tap a song to play.

Personally I think search is such a critical function that it should be available directly from the Now Playing screen; and that it should be smart enough to look for matches anywhere it can and present some top matches immediately.

Another annoyance is that you cannot actually play a song through the iPhone itself. This is such an obvious feature that I cannot understand why Logitech has not implemented it; it would enable your Squeezebox music collection for personal listening on a device. Perhaps Logitech imagines that it is protecting sales of its players, when in fact it is just undermining the appeal of the system.

Well, it is free, I like the Squeezebox system, and the app is useful, so perhaps I am complaining too much. It is frustrating though, because with a little investment in software Logitech could bring its excellent features to a broader group of users.

Sony PlayStation network hacked, some disclosure, questions remain

Sony has posted information about the “illegal intrusion on our systems” that has caused the PlayStation Network (PSN) to be closed temporarily. PSN is necessary for playing online games and downloading music and videos.

Sony has disclosed that:

Between April 17 and April 19 2011 an attacker gained access to “user account information”

The information includes:

name, address (city, state, zip), country, email address, birthdate, PlayStation Network/Qriocity password and login, and handle/PSN online ID. It is also possible that your profile data, including purchase history and billing address (city, state, zip), and your PlayStation Network/Qriocity password security answers may have been obtained.

The information might include:

While there is no evidence at this time that credit card data was taken, we cannot rule out the possibility. If you have provided your credit card data through PlayStation Network or Qriocity, out of an abundance of caution we are advising you that your credit card number (excluding security code) and expiration date may have been obtained

The remainder of the information is mainly generic advice on fraud prevention. Many comments to the blog post make the reasonable point: why were they not informed earlier?

How many users are on PSN? The number 75 million is widely reported. In January Sony claimed over 69 million PSN members.

It is easy to say that Sony should have operated a more secure system. Making a judgment on that is hard because there is a lot we do not know. Was this information encrypted? Sony says passwords were stolen, which may mean they were unencrypted though that is hard to believe; or that they were encrypted but likely to be easily decrypted, which is perhaps more likely. On the other hand the fact that encryption is not mentioned in the post tends to suggest that none of this information was encrypted.

The scale of the incident makes it remarkable but the fact of network intrusions and personal data being stolen is not surprising, and likely much more of this happens than is reported.

The state of internet security overall remains poor and what we see constantly is that security best practices are ignored. Convenience and the desire of marketers to grab as much personal data as possible constantly trumps security.

Here is Kim Cameron, Microsoft’s identity architect, writing in 2005:

We should build systems that employ identifying information on the basis that a breach is always possible. Such a breach represents a risk. To mitigate risk, it is best to acquire information only on a “need to know” basis, and to retain it only on a “need to retain” basis. By following these practices, we can ensure the least possible damage in the event of a breach.

The concept of “least identifying information” should be taken as meaning not only the fewest number of claims, but the information least likely to identify a given individual across multiple contexts. For example, if a scenario requires proof of being a certain age, then it is better to acquire and store the age category rather than the birth date. Date of birth is more likely, in association with other claims, to uniquely identify a subject, and so represents “more identifying information” which should be avoided if it is not needed.

Cameron’s thoughtful and excellent “laws of identity” lack take-up within Microsoft as well as elsewhere; the CardSpace system that was built to support it was scrapped.

An example of the low priority of security around the web is the prevalence of “password security answers” as Sony describes them. This is additional information that allow you to recover an account if the password is forgotten, especially if the email address associated with the account is no longer in use. Contrary to the impression given by the forms that require the information, these questions and answers reduce your security in order to ease the burden on support. They break Cameron’s laws of identity by providing the third party with information that it does not need, such as mother’s maiden name, though of course you can provide fictional answers and in fact I recommend this.

Personally I am also one of those people who never tick the “save credit card details” box. I am happy to enter them every time, rather than hand them over to a system of unknown security. Some sites do not let you make purchases without saving credit card details; as I recall, Amazon is one of them, and Apple another. This means the consequences of security breaches at these companies are greater, though I imagine they also make more sales since the friction of the purchasing process is reduced.

I am not optimistic that internet security will improve in the near future, though I guess that major breaches like this one are a force for reform.

Update: In a new post Sony says that credit card data was encrypted but personal data was not. I am surprised if this included passwords; but the IT world is full of surprises.

Developers and mobile platforms: lies, damn lies and surveys

I’ve been reading the IDC/Appcelerator developer survey about their attitudes to mobile platforms. The survey covered 2,760 Appcelerator Titanium developers between April 11-13, so it is certainly current and with a sample just about big enough to be interesting.

The survey asks developers if they are “very interested” in developing for specific platforms, with the following results, and with comparisons to 3 months ago:

  • 91% iPhone (fractionally down)
  • 86% iPad (fractionally down)
  • 85% Android phones (down from 87%)
  • 71% Android tablets (down from 74%)
  • 29% Windows Phone 7 (down from 36%)
  • 27% Blackberry phones (down from 38%)

The survey is titled:

Apple shines, Google slows, and Microsoft edges RIM in battle for mobile developer mindshare.

Is that a fair summary? It is not what I would highlight. I cannot read the exact figures from the chunky graphic, but it is clear that the iOS figures are also fractionally down, maybe by just 1%, but hardly much different from the Android figures on a sample of this size. Both are pretty much flat.

The figures for Windows Phone 7 and Blackberry are more dramatic; though we should at least note that Appcelerator Titanium is a cross-platform toolkit that does not currently support Windows Phone 7, and that its support for Blackberry is only in preview. That was true last time round as well, but I’m not sure that asking developers about their plans for a platform which the toolkit does not currently support is the best way to gauge overall interest.

Another question that interests me: is developer interest a cause or an effect of a mobile platform’s success? A bit of each, no doubt; but personally I think the “effect” model is stronger than the “cause” model. Developers pick a platform either because they have immediate customers for apps on that platform, or because they think they can make money from it.

Nurturing a strong developer community is definitely important for a platform provider; but I doubt it ranks as highly as other factors, like building a strong retail presence, delivering excellent devices at the right price, and focusing on usability and a good end-user experience.

If you are interested in Appcelerator Titanium you might like to read my interview with the CEO at Mobile World Congress; and this discussion on whether Titanium really builds native apps.

Implications of Amazon’s cloud failure

Amazon is into day three of a major failure of its Elastic Compute Cloud at its North Virginia datacenter, and at the time of writing it is still not fully recovered.

image

I am reminded of a prescient remark by Tony Lucas at Flexiant, a UK cloud provider, who told me a couple of years ago (with commendable honesty) that cloud failures will be rare, but when they occur will be on a grand scale.

It seems that it is hard to engineer around the possibility of cascading failure. I am not sure what happened in North Virginia, but Amazon says on its status page that:

A networking event early this morning triggered a large amount of re-mirroring of EBS volumes in US-EAST-1. This re-mirroring created a shortage of capacity in one of the US-EAST-1 Availability Zones, which impacted new EBS volume creation as well as the pace with which we could re-mirror and recover affected EBS volumes. Additionally, one of our internal control planes for EBS has become inundated such that it’s difficult to create new EBS volumes and EBS backed instances.

It sounds like an automated recovery system built into the compute cloud actually became the problem, as a large number of volumes tried to fix themselves at the same time.

This is not the first Amazon outage, but I believe it is the most severe; though it could have been worse and I have not heard that any data was lost. What are the implications?

Any computer system can fail. There will be a lot of companies reflecting on this though, both those directly affected and others, and realising that the cloud can be a single point of failure, despite the scale and expertise which a company like Amazon invests in high availability.

Is Amazon EC2 more or less likely to fail for an extended period than Salesforce.com? Or Microsoft Azure? Or Google App Engine, or Gmail, or IBM’s evolving SmartCloud? Clearly an excellent question; but I am not sure how we go about answering it other than by reviewing historical performance. I do not expect any of these companies to take advantage of Amazon’s problems to proclaim their own superior resiliency; they will all be worrying too much about the same thing happening on their platforms.

My guess is that the industry will get better at this, and that at some unspecified future moment the chance of one of these cloud platforms failing for three days will become exceedingly small – of course risk can never be eliminated, only reduced.

It seems that the risk is not exceedingly small on Amazon’s cloud today; and we should probably assume that the same applies to other providers.

That is something we have always known, so in one sense nothing has changed. This outage is a sharp reminder though; and planning for failure is a hidden cost of cloud computing that has now been brought into the light.

Getting started with VMWare Cloud Foundry

I have been meaning to post about VMWare’s Cloud Foundry, a new cloud platform for Spring Java, Ruby on Rails and Node.js applications. Good, incidentally, to see Node.js getting increasing attention – see my post from December when I heard Ryan Dahl present on the subject. I signed up for Cloud Foundry when it was announced, since it has free participation in the current beta.

Today my account went live and I spent just a few minutes creating a first application using the steps here. Well, my first app is indistinguishable from a static web page; but having been immersed in Windows Azure for the last few days, with its accounts and subscriptions and certificates and the portal and the ServiceConfiguration.cscfg and the ServiceDefinition.csdef and all the rest of it, I admit to having a pleasant sense of “is that it?” when deploying the Cloud Foundry app.

I typed a few lines of Ruby code, saved the file to a directory, and then typed vmc push.

image

image

Let me add that I like what Microsoft is doing with Azure, and that in combination with Visual Studio it makes an impressive cloud development platform that, from what I have seen, works very well; I think it is of major importance. I also like the fact that Microsoft has pushed down the cost of entry, with its Extra Small instances and more generous offers to MSDN subscribers, partners and others. It easier to experiment a bit with Azure than it used to be.

Nevertheless, Azure lacks the delightful simplicity of getting started that you can see in Cloud Foundry. After doing my Hello World app I look forward to trying something more advanced; and while I am sure that the delightful simplicity soon disappears as the lines of Ruby code increase, and as you try to make your application scalable and transactional and secure and all those good things, the fact that it draws you in is an advantage.