layoutElementContent.uuid: ff80808122654e6f0122c1661c3009da
layoutElementContent.uuid: ff80808122654e6f0122c1661c3009dc Document Name BV_RESOURCE_WIDGET_DEVINT_MAIN Document UUID ff80808122654e6f0122c1661c3009db

Developer interview 'James Heggs'

Introduction

dev image

I am currently the lead developer at a small software development firm in Manchester called AxonBirch. After graduating in Bsc Software Engineering in 2007 I have been with AxonBirch. We develop bespoke software (usually Rich Internet Applications) for companies that could not otherwise purchase an off the shelf product.

Mainly a web developer developing rich internet applications. My expertise is within a Java J2EE area for client server applications. For client side technologies I am skilled in Ajax and the various Javascript frameworks such as jQuery.

However for Wots4Dina I used Google Web Toolkit (GWT) which is a Java to Javascript compiler. This is a framework I particularly like.

I also have outside skills in Objective C which have been used to develop OS X / iPhone applications.

Why mobile widgets?

First of all I enjoy developing software and particularly rich internet applications. The development of a mobile widget gave me my first chance to develop a mobile application using a well understood framework.

As web widgets follow the current understood web standards such as CSS styling and Ajax calls it made developing the widget easier than it would to make a Mobile OS compatible application.

It is also very fulfilling to see people use the widget and see it running successfully on a mobile phone.

What inspired you to write the Widget?

At first I had simply decided that I wanted to make a mobile widget as I enjoy development and had heard about the Betavine portal from the Carsonified blog. Finding a subject was somewhat harder.

I wanted to make a widget that people could (and would) use whilst on the move. Whilst they are mobile. The widget needed to also be something that people could keep on using. After surveying a few people I decided on the Wots4Dina widget. The widget could be used on the move:- whilst in the supermarket to check ingredients and also whilst at home to make the recipe.

People who enjoy cooking will also (hopefully) re-use the widget for further recipes.

How have you developed the Widget?

Although the widget is what I would normally term the client end of the application I have also developed the server side of the application that stores the business logic such as searching for recipes etc. All the database access and persistence is also managed by myself. No data is sourced externally bar recipes I have taken from various online websites and added to my database.

After coming up with the original concept, I took to designing the widget by use cases deciding what the users would actually want to do. Upon use case creation I designed a relational database to store the various data the widget would need, such as ingredients, ingredient amount etc.

The application uses Hibernate Annotations Persistence mapping for the server side database. It also uses Hibernate search which utilises Lucene for easy relational database searching. This allows the users to search for recipes by ingredient or recipe name.

In terms of the widget itself I decided against using any current Javascript frameworks such as jQuery simply because of the maintenance of the code. Instead I developed the mobile widget using Google Web Toolkit (GWT) which is a Java to Javascript compiler. Meaning it makes the code easier to maintain and make updates.

As I had to develop the server side of the application as well as the widget itself the application did seem to start slowly. Although after making a few prototype searching applications, making the widget itself was very quick. The process was only slightly lengthened because I employed various visual javascript effects such as search page scrolling.

I made the widget with a friend I have known for over 20 years who is a professional designer. I am a terrible designer and really needed someone to help me with this. Basically I gave him the dimensions and rough specifications of what different fields/buttons etc I needed and he would give a Photoshop file that I could chop up and essentially make a small website.

Have you any advice for other developers?

When starting out if possible try to use a web service that currently exists, something like Twitter, that means you can concentrate on making your widget rather than the back end to an application.

Always keep in mind good web standards and keep your code abiding by those.

Also code to a framework you are used to. If you have previous use of jQuery and are very comfortable with it use that, if Mootools use that. In my experience each of the frameworks have similar capabilities so choosing one over another shouldn't hinder you unless you are not comfortable with the framework.

What’s good and what needs improving?

One of the resources that really helped me was the Opera Widget tutorials: http://dev.opera.com/articles/widgets/

It gives you various useful tutorials on making widgets.

The Opera browser is an invaluable tool for testing your widgets. It contains an emulator that allows you to try your widget in the various screen dimensions.

However nothing goes as far as testing the widget on an actual device. There is no real test environment for this - If there is please someone let me know :) - After making the widgets I had to make a few corrections to make to ensure it displayed and ran correctly on a mobile device.

Editor: For developers wanting to test on real handsets Betavine and Perfecto Mobile have teamed up to offer a free low-usage remote testing service. Find out more by looking at our Testing section.

How did the BV website help you?

There a lot of links on the Betavine website for example tutorials. I generally learn how to do something by looking at code examples. If you are the same I would recommend the various code tutorials such as the Fortune tutorial.

It may be useful to include development videos on the Betavine website that could feature good practices and framework advice when making widgets.

Do you have a demo/video clip?

Unfortunately not at the moment but one is in the works....

What is your favourite app/Widget on Betavine and why?

twiggy icon

I'm a sucker for a smooth and slick user interface which emplys nice design. For this I really like the Carsonified Twiggy application. It was of course this widget that originally got me interested in widget development.

What feature would you like to see brought to the Betavine platform/community?

Could we somehow make a tool that emulated the widget on a phone and emulated performance like for like?! Menus etc...

How did you hear about the Vodafone-Betavine Widget competition?

The Carsonified blog website.