Top ten reasons you might prefer a native app

iPhone 4S
  1. I only ever want to support one platform (Android/iPhone/Blackberry)
  2. I have graphics/visualisation requirements that can only be met natively (e.g. games animations)
  3. I need a feature that is not supported by HTML5/Hybrid Apps (e.g. not in the Phonegap library)
  4. I only know how to program the Native SDK
  5. I hate JavaScript
  6. I work for Apple/BlackBerry/Microsoft
  7. I have an “according to Hoyle” commitment to native look and feel
  8. My app renders 3D graphics natively
  9. My app platform doesn’t support HTML5
  10. I don’t trust HMTL5


See the top ten reasons you might prefer a HTML5 app

Posted in Blog, HTML5, Native | Tagged , , , , , | Leave a comment

Top ten reasons you might prefer a HTML5 App

 

  1. I want to support lots of platforms
  2. I just need to paint pages that are easily rendered in HTML5
  3. My hybrid platform supports all the features I need on all the platforms I am targeting
  4. I already know HTML/CSS/JavaScript (aka HTML5)
  5. I want the same look and feel for my App, Mobile Web, Tablet and desktop application
  6. I work for Google/Yahoo/Oracle
  7. I have an “according to Hoyle” commitment to HTML5
  8. My app needs to modify the underlying platform
  9. My app platform doesn’t support the iOS SDK
  10. I don’t trust Apple

See the top ten reasons you might prefer a native app.

 

Posted in Blog, HTML5 | Tagged , , | Leave a comment

Using packages for themes in the FeedHenry Studio

By Evan Shortiss, Intern, FeedHenry Ltd

Recently Google has released it’s new Android Design Guidelines. Apple also provides similar guidelines for iOS developers. These updated guidelines from Google show a strong move to emulate Apple’s success with User Interface (UI) design. It also places a new constraint on developers to ensure their app can appear as native as possible to the device it is running on. Achieving a native UI appearance is important to ensure a positive user experience and ensure that using all apps feels natural and familiar.

Developing an App that is cross platform whilst bearing these design principles in mind can be very time consuming for the developer. It can be time consuming due to differences in both the code base for the different platforms and the challenge of adhering to differing design guidelines. As well as enabling developers to overcome the challenge of differing code bases between mobile devices, the FeedHenry platform also simplifies the task of styling apps for their target platform through the use of packages. Packages are an extremely powerful and simple feature of the FeedHenry Studio and require very little time to understand and more importantly, implement.

So what are packages? Simply put a package is a folder within which a developer can store files to override default functionality or styles. As an intern of less than two weeks here at FeedHenry I’ve had the opportunity to help develop our template that demonstrates the use of packages. Getting a handle on the use of packages is made simple by exploring the Template App, “App Anatomy” in the FeedHenry Studio. By simply changing a single line of text within the Configuration section of the FeedHenry Studio it is possible to totally change the appearance of your app. The screenshot below shows the App Anatomy side by side with different packages applied to determine what style is used.

iOS vs Android Package

For more information on using app Anatomy take a look at the tutorial, or to get started, clone this template on GitHub.

 

Posted in Blog | Leave a comment

FeedHenry implements Node.js and deploys to a range of different cloud configurations.

By Damian Beresford, Senior Software Engineer, FeedHenry Ltd.

Node.js is an exciting technology that is showing rapid growth and adoption amongst developers since it’s launch in 2009. As the first JavaScript environment specifically designed for server-side execution, Node offers FeedHenry a high degree of efficiency and performance on the AppCloud server-side environment of our Mobile Application Platform. Possibly the most obvious benefit is the design of asynchronous input/output, where code can process other tasks whilst waiting for an operation to complete, rather than being blocked awaiting completion.  This creates a highly efficient and responsive server-side when it comes to building sophisticated mobile apps that require integration with backend systems. For a company like FeedHenry that targets enterprise clients with a complete mobile application solution, Node is the right fit in achieving the level of flexibility and scalability required by enterprise apps.

Equally important is the active Node.js developer community looking to integrate Node to all forms of external environments Node offers a great open source framework for any form of web-based application development and, as such, appeals to sophisticated developers looking for better tools to create real-time high-performance apps.

FeedHenry has had client-side and server-side scripting since it launched its cloud-based Mobile Application Platform in 2008.  The client-side is a HTML5, JavaScript, CSS development environment supporting cross-platform deployment by means of wrapping native mobile device functionality while we use Node.js to support integrated mobile apps for our corporate customer base.

So, what about the cloud and hosting? As part of our Node.js strategy FeedHenry supports a range of Node.js hosting environments, one of which being Cloud Foundry.   We have tested the deployment of server-side Node.js code directly to the public CloudFoundry.com service, managed by VMware, and also to private installations of Cloud Foundry. Additionally we deployed to the Micro Cloud Foundry instance, a freely distributed virtual machine (VM) designed for development and testing purposes. FeedHenry contributed a Node.js library version of the CloudFoundry VMC gem (https://github.com/feedhenry/vmcjs) to make this type of integration task easier for others also using Node.js.  Cloud Foundry is positioning itself as one of the most comprehensive server-side hosting environments available, with a wide range of programming paradigms supported, including Java Spring, Node.js, Ruby both Rails and Sinatra, and other JVM languages/frameworks including Groovy, Grails and Scala. Cloud Foundry also offers MySQL, Redis, and MongoDB data services, as well as RabbitMQ messaging service.

Tapping into the recent trends in flexible virtualization, FeedHenry will also allow Enterprise customers to export their server side application as a Virtual Appliance using the industry standard OVF format (http://www.dmtf.org/standards/ovf). This allows customers to quickly deploy their server side code in any private/hybrid cloud that supports the OVF format, e.g. VMWare, Oracle VM, RedHat, VirtualBox. This should ease the administrative overhead for deployment of a private/public hybrid cloud, with the private part being a OVF image hosted inside an enterprise’s own firewall.  Choosing the open standard for virtualization enables maximum compatibility with enterprise VM environments.

Developing scalable and high performance integrated apps is not trivial but these are qualities increasingly sought after as enterprise apps become more sophisticated and integrate on a number of different levels. While Node.js may not be the solution for everyone, it is pivotal for a platform provider like FeedHenry, where we can vastly improve the efficiency, performance, and scalability of backend or server-side application integration. FeedHenry will soon launch the Node.js environment for all our customers in the three primary public cloud clusters – the North American enterprise cluster; the European enterprise cluster; and the European freemium developer cluster, where developers can sign up for a free account.

 

 

 

Posted in Blog | Leave a comment

Why HTML5 should be the cornerstone of your Mobile Strategy

However beautiful the strategy, you should occasionally look at the results.

Winston Churchill

What is a mobile strategy and do I need one? With more mobile devices being shipped than any other type of computing platform, combined with the ubiquitous “anytime, anywhere” nature of mobile devices, mobile is fast becoming the biggest channel to market . But typically a company’s first shot at a mobile strategy begins and ends with “lets build an app”.  Would you equate an advertising strategy with just “making an advert”?

A sound mobile strategy must integrate with the company’s overall business strategy – sales, marketing, technology, HR, etc. How many mobile apps have no links to a company’s website? How many websites have no mention of the ability to download an app? How many apps are built without understanding the underlying app objectives and measuring results? Mobile is big but it’s still a sub-component of an overarching company strategy to enthuse and delight both your existing customers and your new prospects.

Within the mobile context you must understand the most compelling vectors for your customers and how to maximise your reach and impact. Your starting point should be the leading mobile smartphone vendors:

- Apple and iOS
- Google and Android
- RIM and BlackBerry OS

The Neilsen numbers speak for themselves:

Within these segments there are two device form factors to consider:

- Phone: Small screen. Touch input (primarily), ability to make phone calls, screen dimensions limited to a device that can be comfortably held in one hand.
- Tablet: Touch input, Larger screen size, no phone calls, typically held in two hands may often come with a hard keyboard.

The final facet of Mobile is the distribution mechanism:

- App Stores : Build and package services in an App for distribution via stores
- Mobile Web : Deliver services via the browser and a web connection

The Mobile web is the bridge linking your mobile strategy to your web strategy (and ultimately your overarching marketing strategy). Forrester tells us that app users are just as likely to use the mobile web as an app and that its not an either/or choice.  Apps should be viewed as a tactic or a tool to facilitate the overall strategy. A mix of weapons is required to win the war.

If we look at HTML5 as the substrate that weaves our strategy together then we can see that an App is just a small piece of that mix.

 

 

There is a mobile maturity hierarchy that companies must move through.

 

Each step up through the maturity curve  must support the levels below in order to succeed fully and on this progressive curve the only game in town for every step is HTML5. Apps are undoubtedly a key element of the strategy but they are only an element. The “best” solution is always a subjective choice. So while the native app purists bemoan the supposedly poor user experience and wax lyrical about “native look and feel” the rest of the world is racing towards a HTML5 user experience that can play both in the app and the browser world.

It’s impossible to ignore the growing adoption and acceptance of HTML5-based app development. Yankee Group just released their 2012 Mobility Predictions where they forecast “HTML5 will cross the Enterprise Tipping Point”, recognizing that “the rise of HTML5 in the enterprise spells the beginning of the end”.

FeedHenry embraced HTML5 in 2008 as the only way to support a comprehensive mobile strategy. While some customers needed convincing to accept HTML5 versus native app development we agree with Yankee that these days are passing. The more enterprises move along the app maturity curve, the more they will reap the rewards of employing HTML5 technologies. App development will be easier, faster, cheaper and more future-proof while maintaining the same user-experience as native apps. Also, we concur with Forrester that Apps + Mobile Web are two sides of the same coin and you need both to confidently deliver a compelling mobile strategy.

Our enterprise customers Aer Lingus, Diageo, O2, Independent News & Media, Health New England and many more support the HTML5 approach. Linkedin and the Financial Times have also embraced HTML5 and many more will follow suit as we prepare to ring in the New Year 2012.

 

Posted in Blog | 2 Comments

Styling Mobile Apps With Sencha Touch & SASS

Some boilerplate code for this video is hosted on github.

@cianclarke leads frontend development of mobile apps using Sencha technologies at Feedhenry. This blogpost was originally featured on Cian’s personal site at http://cianclarke.com/blog/?p=79

Posted in Blog | Leave a comment

Sencha Touches the FeedHenry Cloud

Building cloud connected cross-platform apps for the enterprise with Sencha Touch and the Feedhenry Cloud

According to Gartner’s recent review of the top technology trends for businesses in 2012, “The user interface (IU) paradigm in place for more than 20 years is changing. UIs with windows, icons, menus, and pointers will be replaced by mobile-centric interfaces emphasizing touch, gesture, search, voice and video.” The disruption created by smartphones, tablets, mobile apps and the resulting consumerization of the enterprise poses new challenges for enterprises as they develop and deploy mobile apps. Traditionally, enterprise solutions have been more focused on complex backend systems integration and less so on frontend graphical interfaces. Complexity and performance became the overriding goals, often at the expense of simplicity and usability. Cool, simple and user-friendly apps in the consumer space now set the scene for enterprise apps. The challenge for enterprise app developers is to create polished apps, integrate these apps with backend systems and other services and deliver apps that are simple and usable while also secure and effective.

Feedhenry has always placed great importance on achieving a native look and feel to cross-platform applications built on our AppStudio. The overhead of developing application UI from scratch in standard web technologies has always proved time consuming, and a great overhead to the development cycle of a project. We’ve experimented with mobile UI frameworks, with mixed results – until we discovered Sencha Touch.

Why Sencha?

Immediately, all our requirements for native performance in a UI had been satisfied. The framework provides a huge range of UI components, and the extensible nature of the framework means that any missing or nice-to-have component is either already available in the community, or can be easily developed as a user extension. The API documentation is comprehensive and the source code reads like a book.

Build-Once, Deploy Anywhere?

The Sencha framework is remarkably well aligned to Feedhenry’s build-once, deploy-anywhere strategy. Combining Sencha code with the Feedhenry AppStudio support for packages, means we can use a clever system of overrides on a per-platform basis. This allows users to develop stylesheets specific to Android or Blackberry, which only get bundled for builds of that particular platform.

Ongoing development & instant testing is also facilitated by AppStudio . You can kick off a build for iOS, Android or Blackberry and deploy to your device in the space of minutes. Users can even build an embed tag for hosting as a mobile website.

Using Sencha with the Feedhenry Cloud

At Feedhenry, we are focused on enterprise mobility and as such have to deliver a deeper and broader set of services to developers building on out platform. For this reason, we have always employed cloud technology so that apps built for enterprises benefit from caching, access management, scalability and more. We encourage our clients to either build their data in the cloud or broker their data through our cloud, reducing load on the user’s backend service. This enables developers to spend more time writing code, and less time spinning up new infrastructure.

The Feedhenry cloud fits perfectly with the Sencha model of building a user interface. Sencha provides a whole range of useful data proxies for loading data through the web, and we felt that a Feedhenry proxy would be very useful – hence, our FHActProxy.

The Feedhenry action proxy allows users to hit Feedhenry cloud endpoints in their code, and bring the data back into a list. We pass the filters and sorters to the cloud, so heavy data bashing can take place cloud-side. It’s available today to clone in Github.

Another interesting possibility which a cloud-connected Sencha app can bring is the ability to serve the definition of a User Interface from the cloud. This is particularly useful to apps published in an app store or marketplace, where conventionally the user interface is rigid, and any changes require shipping an update to the store.

With the Feedhenry Cloud, you can determine dynamically the user interface required in the cloud, and return it to the client. Simply return an array of objects from a cloud function, and add them to a Sencha panel or container using it’s add() function.

When combined with our cloud connected localisation, this makes a huge portion of the UI of an app highly customizable via the cloud.

Powerful Enterprise Features

In addition to cloud connectivity and cross-platform build, the Feedhenry platform brings a whole host of other enterprise grade features to the table. Enterprise customers are able to view detailed analytics of their live app, and have access to a powerful suite of Access Rights Management as part of the FeedHenry AppManager.

Customers can also distribute applications in-house on iOS, Android and Blacbkerry. This enables companies to build Sencha apps for an internal sales team unsuited to distribution in the App Store. It’s even possible to build an entire App Installer Catalog of Sencha applications for distribution inside a company.

Feedhenry has made Sencha our UI framework of choice for hybrid apps, and we hope this blog post helps others to realize the power of combining Sencha Touch with the Feedhenry Cloud!

Feedhenry at Senchacon

I recently represented Feedhenry at the annual Sencha developer conference, SenchaCon, in Austin Texas. There, Ilearned about their powerful new Model View Controller driven Sencha Touch 2 framework, and participated in the Hackathon. After joining forces with a team of developers from the US, Holland and the UK, we went on to win the mobile category at the hackathon! Watch out for our project, ‘Presencha’ on github.

By Cian Clarke, Software Engineer, FeedHenry

@cianclarke leads FeedHenry’s development of complex mobile frontends in web technologies, connecting these to the cloud. Passionate about developing performant polished apps and an avid Sencha developer, Cian brings the best to mobile and cloud.

Posted in Blog | Tagged , , , , , | Leave a comment

Tips For Improving App Start-up Performance

We have recently been researching how to improve App start-up performance and wanted to share some of our findings with you. We hope you find the tips useful.

Avoid loading JavaScript or CSS files over the network during start-up

Although Apps are not strictly websites, many of the same rules often apply. For example, you should, wherever possible, try to make the JavaScript and CSS files external and minify them. Another important tip is to try to make as few HTTP requests as possible during the App startup.

As an example; in one App we discovered that the App was loading Mixpanel and Google Analytics code from the web during the start-up. We removed the code and found the start up time have been reduced by around 1 – 1.5 seconds. So unless it’s absolute necessary, the App should not load JS/CSS over the network during start-up. Instead they can be loaded dynamically using JavaScript after the App is ready. For many other helpful hints and tips you can check out some of the rules in the Yahoo!’s web performance guide here.

Reduce the number of external JavaScript and CSS files

For a typical App, most the files that it needs to load should be on the device already, so it is quicker to load than using the network. However, as good practice, you still should try to reduce the number of external JavaScript and CSS files that are required by the App.

In addition, if it’s possible, the JavaScript files and CSS files should be merged and minified. Taking our sample App again for example; originally the App loaded 14 CSS files during  startup and it took about 55ms to load on an iPhone 4. We then merged those files together and only loaded one CSS file and the loading time was reduced to 5ms. Among all the JavaScript files the App loaded, there were 4 of them (JQuery, json, date format and JQuery UI) loaded separately. It was taking 738ms to load them on our sample iPhone 4. We then merged them together and loaded them as one JS file and the time was reduced to 418ms. See the chart below.

 

Use desktop browsers’ developer tools to discover potential performance issues

A good way to find the potential performance issue is to load the App’s index.html in Google’s Chrome desktop browser and use the developer tool to see what has been loaded and how long it takes to load. In most the cases the App will not load completely (due to some JS errors), but you will see the performance of the components that have been loaded.

Anything that takes longer than 100ms in a desktop browser to load will take much longer on the device to load, and that could be a potential performance issue.

If you have any questions at all, pop them in the comments and don’t forget, our Docs Site is being updated continuously with tips like these.

Posted in Blog | Tagged , , , | Leave a comment

Creating a Multi-Lingual Cloud Connected App

Hello
Traditionally, when creating a multilingual application, language files are bundled within the release of a mobile app. Often, the meaning and context of phrases can become lost in translation, leading to inaccurate information localised apps. To update the language definitions in a traditional app requires a whole new update release of the application to app stores.

Feedhenry resolves this problem. In our Multilingual App tutorial we show how through clever manipulation of the /cloud, /client and /shared directories a cloud connected multilingual app is now possible.

Through use of Feedhenry API functions such as on-device storage, we can have a store of language data on both the phone or tablet device and the cloud. The device polls the cloud for the latest language bundles, and loads these back to the device. It also updates the local storage with the most recent version from the cloud.

In the event that the device is offline, a local copy of the language data is used – always the most recent version from the cloud.

This is a refreshing break from the traditional approach to localization, and introduces a whole host of new options. Developers can stagger the localisation of their application, improve language coverage as adoption increases, and inaccuracies can be amended instantly. All this, without the need for a new release!

There’s plenty of room to expand this – pull the language data from elsewhere on the web, hash and cache the data – for inspiration, take a look at the API Documentation.

Try using the Feedhenry platform to build a multilingual app – fork the template app on github, or read the tutorial.

 

Posted in Blog | Leave a comment

FeedHenry offers App Developers GitHub Features

The FeedHenry platform now offers developers the ability to host their app source files on GitHub. We’re pretty excited that the latest release of the FeedHenry platform supports Git so that our developers can take advantage of its great collaboration features – hosted code sharing, version control and collaborative development.

Creating a FeedHenry app with files hosted on GitHub

Apps are built on the FeedHenry platform by writing code files using HTML5, CSS, and Javascript. APIs can be called from the Javascript code, providing access to device features like GPS and Camera and also server-side features such as caching. These code files now can be stored and shared using an external source-code repository.

Using GitHub features, you can use your preferred code editor and work collaboratively on the same project with other developers. Once your code is ready to be deployed, management options in FeedHenry Studio will pull the latest changes from GitHub or a Post-Receive URL trigger can be setup on GitHub. When changes are pushed to GitHub, it will automatically call the FeedHenry platform so that the latest files can be retrieved.

Now check out how to create an app availing of GitHub.

The easiest way to get started with an App hosted on GitHub is to fork one of the FeedHenry Tutorial repositories. Once the GitHub repository is forked, and the FeedHenry App is created, the developer can then modify the Tutorial App files to get a feeling for how GitHub integration works.

 

Posted in Blog | Leave a comment