Intelli-J makes Android Easy

On paper Android should have been a good fit for my previous experience in java and C#. I’m quite used to using the Eclipse development environment and, despite some of its more quirky configuration aspects, it has generally proven relatively painless. However, for much of the last couple of years, any involvement in Android has proven to be a bit of a heart-sink moment. Write the code…wait for the emulator…wait for the debugging to commence…wait…wait…wait. 

There is much to like about Android, as a developer, but somehow, compared to the slickness and immediacy of the iPhone emulator and debugging experience in Xcode, and the depth and sophistication of Microsoft’s Visual Studio, Eclipse has been the source of much heartache, cursing and premature ageing. Recently, however, I have moved from Eclipse to Intelli-J (IDEA 12 CE) - a free IDE from JetBrains that can be used for Android. This has revolutionised my Android experience – now I feel  like I can focus on the job at hand, and on the well-thought-out Android Framework – in short, I feel like a developer rather than a software trouble-shooter. Moreover, with sophisticated code-completion and all the other whistles and bells you’d expect from JetBrains, coding productivity shoots up.

Now we have the three major platforms with very pleasant and capable development environments, I am more convinced than ever that the advantages of quick-adoption offered by PhoneGap and other HTML-based cross-over frameworks are more than outweighed by the power of having direct access to the underlying frameworks and better performance. Indeed, my current experience of porting over a complex application framework from iOS to Android suggests to me that whilst code might not be shared directly, the platforms have enough in common to make the translation reasonably painless.

As the mobile development market matures further, we will no doubt continue to see steady advances in the ease and productivity of native code development – something no developer is going to be sorry about.

With XCode 4, Apple Start to Love Their Developers!

As I mentioned on a previous blog, compared with Microsoft’s Visual Studio and the vast array of good quality reference material and samples available, the Apple development experience could easily be found wanting. With the latest version of their Development Environment – XCode, Apple is beginning to show the kind of love that developers, and in particular new developers, need.

For developers from a non-Apple development background, with a lot of experience in Java and .Net, one of the most awkward things about the older version of XCode and Apple’s Objective-C programming language, was the need to basically tell the computer when it should remember or forget things. In other languages, this is usually taken care of automatically, although sometimes you would choose to interfere in order to keep system resource usage down. The upshot was that a whole extra pointless layer of testing was added for something that provided no benefit to the end user.

Now Apple have introduced something called Automatic Reference Counting (ARC), which does the job of working out when to remember and when to forget about things. This does not sound revolutionary, but it has gotten rid of one of the more dangerous and common pitfalls of developing for iOS. Now, instead of worrying about the internals of the platform infrastructure, developers can just focus on giving the end user a great experience.

Having used XCode 4 for a while now, I can say this is probably the biggest single time saver, but Apple have put other things in too – including a helper that will suggest fixes for small problems on the fly. There is also a storyboard that allows developers to layout transitions between views visually. Overall, the improvements make the whole development experience more slick and less painful.

Why does this matter for people who aren’t developers? I think one of the upshots of this is that it makes native app development faster, easier and hence more cost-effective. Despite having spent time going down the PhoneGap route, these new development enhancements have persuaded me, at least, that native iPhone development is now actually faster and more convenient than HTML5 based frameworks. Indeed, even if you want to combine web content with your app, it is still, I would suggest, easier to hybridise properly by going native.

Whilst XCode is still not up to the level of Microsoft’s Visual Studio, it is getting very much better, which can only be to the advantage of developers and end-users alike. I look forward to more of the love in their next release!

Mobile Apps for the Uninitiated

Last week I gave a presentation at the Web Managers group in London, giving a general overview of what is involved in getting into mobile apps, and some of the key considerations involved. I was a little surprised that of those who were not agency-side, none had yet created an app. Whilst this might be interpreted as a lack of appreciation of the importance of mobile, talking to the web managers it was also clear that this could be seen as a sensible caution over getting into a new platform just for the sake of it.

You can get the content of my presentation from here.

How mobile fits into a broader content strategy is a difficult question to answer – it depends on  the nature of the content that an organisation is providing. In order to have any kind of ongoing usefulness, a mobile app needs to be focussed on making commonly undertaken tasks more convenient to complete or on providing rich and entertaining interaction that has some possibility for progression. Given the propensity of users to offer feedback freely, creating an app with a contrived need runs the risk of negative reviews and damage to the corporate brand.

  • If your audience have a frequent engagement with your services, such as maintaining an account, ordering, obtaining guidelines or updated materials, or engaging in communication, then there is probably a case for creating an app.
  • If you provide regular content updates to your audience, but only in small volumes, then an RSS feed, or a mobile friendly site is more likely to be a good means of engaging your mobile users.
  • If you do not have regularly updated content, or news about your services or events, then a mobile friendly site is probably the answer.

Depending on the precise needs of your audience and your business, there are a whole range of options available for reaching out into the mobile space:

  • RSS feed
    not mobile specific, but can be consumed easily by smart phone users
  • Mobile friendly site
    a good starting place, but remember, just creating a mobile-skin for your site is not enough – your content and navigation must reflect the specific needs of mobile consumption – your content must be bite-sized and succinct
  • Site in an app
    brochure ware for the mobile – effectively a website wrapped up as an app – quick to produce, you can say it’s an app, but if you don’t do it well, your audience will be disappointed
  • Cross-platform HTML5 hybrid app
    implemented using a cross-mobile framework such as PhoneGap, AppCelerator, RhoMobile, AppMobi (and many more) – good for multi-platform, provides access to some of the phone’s underlying functionality, allows reuse of code – these frameworks keep getting better, but they are still not as slick as a native app
  • Native app
    created separately in the native language for each platform – provides the slickest experience, but at a price

There is no one-size fits all approach to success in mobile. The mobile space is fast changing, and there are lots of options for getting involved – mobile apps being only one form of engagement. The important thing is to be clear about your aims and your audience – reach out to them early, get user groups involved in appraising prototypes and get plenty of feedback before launching.

 

Divining the Future of Mobile Development – PhoneGap v. Native App Development

As with operating in any quickly changing fields, developing apps in the mobile space presents both opportunities and significant challenges for agencies and clients alike. Though clear trends are emerging that point towards an expansion of cross-platform frameworks, the decision is by no means clear and obvious – there are pro’s and con’s to each approach.

Native App Development

The first clear decision to make is whether to develop apps separately for each individual mobile operating system, or whether to use a cross-platform framework aimed at permitting the reuse of code across different mobile operating systems. There are quite a few frameworks out there, which operating in different ways – a good overview is available from  http://www.toolsjournal.com/tools-world/item/157-10-of-best-cross-platform-mobile-development-tools.

Regardless of the framework in question, there is a tradeoff to be made. By developing native apps, you get:

  • Access to everything in the Operating System (OS)
  • An interface that is more likely to match the expectations of the OS users (Android Users, for instance, don’t want their apps to look like iPhone apps)
  • Performance can be optimised for the environment

So far so good, if you have an app that is guaranteed only for iOS and / or Android, and if you have time for the native development process. What if your app needs to be available at the same time on iOS / Android / Windows / Blackberry / Web OS and you need to release it in the next week to beat the competition to market? What if you don’t have the money to support internal teams or suppliers with an expert capacity to deliver natively in each of the platforms required?

PhoneGap

What your cross platform framework will deliver depends on the platform itself. Following evaluation of the specific needs of our clients, and in consideration of how to best compliment the skills of our team, we have chosen PhoneGap (http://www.phonegap.com/), for the following reasons:

  • HTML5 based – can reuse web skills whilst also hooking into the undelrying OS
  • Lots of momentum behind it – for instance, Adobe include native support for PhoneGap in DreamWeaver CS 5.5
  • Clear signals from Apple that they won’t be outlawing the use of this particular platform later on down the line
  • Easy to use with a big user community to ask, and lots of excellent documentation

By developing PhoneGap apps, you get:

  • Ability to create your app for up to 6 mobile operating systems
  • Rapid prototyping – build your prototype as an HTML5 web site, continually previewable within your target mobile platforms
  • Reuse of code and design assets – don’t have to rewrite everything from scratch for each platform
  • Reuse of existing skills – web skills are easier to find and less costly than native app development skills
  • Easy deployment – you can use PhoneGaps submission service to allow you to build and distribute apps without having any of the mobile OS development software on your machine

Because PhoneGap apps run as standalone HTML5 apps within an invisible browser window, they do run the risk of feeling more like web sites and less like mobile apps unless implemented with sufficient care and attention. Perhaps the biggest question marks are over:

  • Lack of interface “flow” – the directness of coupling between gesture and response that makes good smartphones such a joy to use – without careful attention, HTML5 based apps run the risk of feeling jerky
  • User interface could easily feel inappropriate for the specific target platform, with insufficient use made of expected elements, such as tab bars
  • Poor performance – particularly where functionality that makes lots of calls to the OS is used – such as geo location
  • Patchy support for changing phone orientation, from portrait to landscape and back again
  • CSS – potential compatibility issues on some devices
  • Lack of access to some native functionality
Though requiring careful attention, these are not show stoppers. For instance, where there is lack of support for particular native functionality, it is possible to create plugins – sets of platform specific functionality wrapped up in a way that makes it accessible to the framework. However, the emphasis is always likely to be on solving the genreral problem for all platforms rather than the specific problem for a particular platform.
Which is Best – Native or PhoneGap?
As with any commercial decision, there is no absolute right or wrong answers – just strategies that are better suited to some situations rather than others. As an agency, we will be using a mix of approaches – native, PhoneGap, and other frameworks as well (such as Corona for Game App development). However, broadly speaking the advantages split out as:
PhoneGap (Cross Platform)
  • More cost effective for cross platform development
  • Faster to market
  • Easier to repurpose (e.g. for co-branding or white-labelling)
  • Relies on less-costly less-specialist skills for implementation
  • Better suited to existing work flows in design / technology agencies
Native Development
  • If you have the right budget, you get exactly what you want (if the OS permits it)
  • Users will naturally see the kind of interface they expect
  • Performance is likely to be better
Future Trends
Although I don’t have a personal crystal ball, I think it is clear that the mobile OS wars are not over yet by any means. If Gartner and other pundits are to be believed, over the next few years we will continue to see Android and iOS dominating, but with Microsoft/Nokia becoming a major smartphone player, and Blackberry retaining a significant market share. It is hard to say yet whether Web OS will really take off, despite the best efforts of HP.
Most likely then we will be looking at a market with four or five major mobile OS platforms. With so many platforms in existence, I would say for any business or initiative that doesn’t have access to major budgets, but which requires reach across diverse audiences, cross-platform frameworks such as PhoneGap will prove an attractive development strategy.

What should you expect from your CMS?

Content is key to raising your profile on the web, and having good quality, relevant, accessible content is essential to attract good search ratings. Good quality content is time consuming to author and approve – so being able to reuse it is important for increasing the returns, in terms of visits, revenue and long term interaction, that it can help to generate.

Implementing a web site using a Content Management System (CMS) is a major undertaking. The end result should be a platform that will facilitate the growth of relevant services and channels of communication for your key target audiences. A good CMS should make it both quick & easy to author content and to reuse it.

Adapting to new online behaviour

In the digital age, users expect content to be up-to-date and relevant to their needs. What is relevant at one point in time may not be relevant at another. Patterns of engaging with content are also changing rapidly with the explosion of mobile internet. The market for smartphones and tablets has already surpassed the sales of PCs[1]. Already 90% of mobile phone subscribers have phones that can browse the web[2] – but the actual use of mobile internet will eclipse that of the fixed internet within the next couple of years[3].

With mobile internet rapidly becoming the primary means of accessing the web, users will naturally expect content to be provided in a form that is appropriate for mobile devices. More and more users will be accessing your content directly from search, or from links in recommendations in social media.

In order to maximize the returns from your online presence, your strategy will need to adapt to accommodate these changing patterns of usage. Your online strategy will need to support these changes in patterns of usage and your CMS platform should enable you to easily adapt your existing content, with little modification, to use in these new channels.

The end result of a successful CMS implementation is a platform that enables you to keep up with your users by providing these key benefits:

  • Easy to author and maintain content
  • Easy to reuse and repackage content across different site areas and web browsing platforms
  • Easy to re-theme content where required, keeping content but changing its appearance
  • Easy to make content searchable and findable
  • Easy to set up new data captures and communication channels with your users
  • Clear APIs extending CMS and storing data within CMS structures
  • Easy to upgrade your platform and take advantage of new features

There are no doubt many CMS systems that can offer these benefits – but the best ones are those created by a development team that are focussed on their clients with a clear roadmap and vision for the future. Fortunately for my agency, these are things that have been abundantly provided by our chosen CMS supplier – Kentico.

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: