Friday, 18 December 2009

Final Progress Post

Title of Primary Project Output

CloudBank: Mobile Knowledge Sharing for Advanced Language Learners

Screenshots or diagram of prototype
--- click images to enlarge ---

Description of Prototype


"Imagine you are an international student in the UK. Your English is quite good, but every now and then you hear a word or phrase that was missing in your vocabulary. Normally you would take a mental note ... and then forget about it. With CloudBank you can hack it into your mobile phone, add an image or audio recording, and share it instantly with other language learners."

CloudBank enables international students in the UK to collect, annotate and tag interesting or intriguing language- and culture-related content found in everyday life, including text, images, audio recordings and web links. These content items are saved to an online repository, from where they can be syndicated via RSS feeds for inclusion in almost any website, including blogs and profile pages. In addition to syndication, the repository offers a web interface for adding, editing and discussing content in an online community.

End User of Prototype

According to HESA there were more than 340.000 international students enrolled in UK HEI in 2007/2008. Although these students typically have a high level of competence in English language and may not feel the need to enrol on formal language courses, they are still concerned with improving their facility in the language and with the native culture. The goal of CloudBank is to provide an informal and engaging way for students in this situation to share and build their collective knowledge.

User scenario:
Khalil is Jordanian student in the Brighton. He is in the Student Union watching a football game with some English friends. A goal is scored and there is much hilarity over the goalkeeper being nutmegged. Khalil cannot make sense of this: there’s not much connection with the nutmegs of his experience, which are used in cooking. He asks his UK friends what it means to be nutmegged. They explain that it means the striker played the ball through the keeper's legs. Khalil thinks other non-native speakers may be interested in this new nugget of knowledge. He gets out his Android G1 phone, starts the CloudBank app and keys in “to nutmeg: in football: to play through an opponent's legs”, tagging the entry with “nutmeg” and “football”. For good measure he also records an English friend pronouncing the word, and adds the recording to the entry, before sending it to the CloudBank cloud.

This same evening, Keichi, a Japanese student, learns about the term to nutmeg through the CloudBank RSS feed on his profile page. By chance he’s just been watching a video clip of the goal from tonight’s match. He logs onto the CloudBank community portal, searches for the nutmeg entry, and adds a reference to the video clip, so that others can get a better understanding of what it means to be nutmegged.

Link to working prototype

Alternatively, scan the QR Code with yor Android phone:
QR Code

Link to end user documentation

CloudBank Poster

CloudBank Video

CloudBank Presentation

CloudBank Mobile User Guide

Link to code repository or API

CloudBank REST Server Public API

CloudBank Android Client Code Repository

Link to technical documentation

CloudBank REST Server Public API

Cloudbank Android Client

Date prototype was launched

Prototype v.1 - 21 October 2009
Prototype v.2 - 17 December 2009

Project Team Names, Emails and Organisations

Lyn Pemberton, lp22 [at] brighton [dot] ac [dot] uk, University of Brighton, Project Leader

Marcus Winter, mw159 [at] brighton [dot] ac [dot] uk, University of Brighton, Design & Development

Sanaz Fallahkhair, sf61 [at] brighton [dot] ac [dot] uk, University of Brighton, User Engagement

Project Websites

Homepage (provisional)

Project Blog (this)

Code Repository

PIMS entry

Project evaluation

End-of-project SWOT analysis

Table of Content for Project Posts

User engagement & co-design
User interface
Users, systems and their models
Co-design session 1

Tools & Development
Mobile Alert Alert
CloudBank on the phone
First prototype
Android XML parsing
Balsamiq trial experience

Information & Integration
Mobile User Guide
REST API Specification
RSS Feed now available
Project video on CloudBank channel
Google Code project page
Website now online

Admin & Management
End-of-project SWOT analysis
Nearly there
Android Haiku
Catching up...
A suitable license for CloudBank

Conferences & Talks
CloudBank Poster
Research Seminar
CloudBank at mLearn 2009
CloudBank in the City
CloudBank in Florida
CloudBank off to Handheld Learning conference


Pemberton, L., Winter, M. & Fallahkhair, S. 2009. A User Created Content Approach to Mobile Knowledge Sharing for Advanced Language learners. Proceedings of mLearn 2009, Orlando, Florida.

Pemberton, L., Winter, M. & Fallahkhair, S. 2009. Collaborative Mobile Knowledge Sharing for Language Learners. Presented at HandHeld Learning 2009, London.

Pemberton, L., Winter, M. & Fallahkhair, S. 2010. Development of Collaborative Mobile Knowledge Sharing for Language Learners. Accepted for WMUTE 2010, Taiwan.

Pemberton, L., Winter, M. & Fallahkhair, S. 2010. Evaluation of a Collaborative Mobile Knowledge Sharing Application for Language Learners. Submitted to EdMedia 2010, Toronto, Canada.

Thursday, 17 December 2009

CloudBank Poster

CloudBank Poster
The short-listed CloudBank poster for the the University's recent Research Showcase event. Click to download as print-quality PDF.

Monday, 14 December 2009

End-of-project SWOT analysis

Complementing our SWOT analysis at the beginning of the project, we carried out a second SWOT analysis this afternoon to see what has changed over the past six months and to get a clearer picture in which direction we'd like to develop the project further.

- Implemented system, functional, ready to download
- Evaluated with target users (usability)
- Lightweight, clear, understandable
- Developer experience
- (content agnostic system)

- Some aspects not implemented, e.g. user identities, user groups
- Not polished, missing wide scale evaluation/implementation
- Only on Android
- Theory side underdeveloped

- Integrate with other systems and online communities
- Develop theory via evaluation (maybe ESRC/LLP project?)
- Different subject areas, e.g. design, geology, architecture
- Different language applications, e.g. jargon busting, vets in Africa
- Different character sets

- Open Source, could be copied, etc.
- Someone else develops similar concept
- Funding dries up
- Android does not flourish

Based on the analysis we identified a number of key aspects that need further development in order to realise potential benefits. These include technical features necessary for large-sacle deployment (user identities, user groups), better web integration (website, widget), integration with other systems (online learning environments, language learning communities) and evaluation (learning, attitudes, wider impact).

Friday, 11 December 2009

Nearly there

The picture of our Agile Wall clearly shows we are getting close to completion (of this phase at least :) Despite constantly adding new requirements based on feedback from our user sessions, all but two tickets have been completed. Not implemented are mobile alerts and content editing in the web interface, both of which are low-priority and will have to wait until the release version.

Monday, 7 December 2009

Wednesday, 18 November 2009

Research Seminar

Today we had a research seminar at the University of Brighton about CloudBank. As always when talking about the project, we had very positive feedback, offers for collaborations, and interesting new application ideas. It's a shame the project is nearly over with no follow-up funding agreed to develop it further. The project receives local, national and international attention, and a well-researched public version would be just a few months away.

Wednesday, 11 November 2009

Mobile Alert Alert

One of the planned distribution channels for CloudBank content was mobile alerts, which would be pushed out to users signing up to the service and could be used with any mobile phone. This looked feasible at the start of the project based on 3rd party services available at that time, but now it seems we cannot provide this service without additional development.

Just 6 months ago the hugely popular WidSets was up an running. The service allowed users to create and customise their own RSS alert widget. It minimised network traffic by providing server-side polling of RSS feeds, and notified subscribers when new content was posted. Oficially, WidSets has since been rolled into Nokia's OVI app store, however, WidSets or an equivalent application is not available there. Looks like it just has been killed off. Why?

Plusmo offers a similar service, but unfortunately SMS alert functionality is currently only available in the US. Their standard RSS reader, without alert functionality, had an Out-Of-Memory error on out test phones (Nokia SuperNova). Another alternative, Google SMS Channels, is currently only available in India.

Faced with these facts we have to adjust our project plans. We won't offer a mobile alert service in the current beta, but we'll develop our own mobile alert service for the release version. While this will be limited in v.1 to Android phones, it can be extended in future versions to cover other platforms as well.

Tuesday, 3 November 2009

CloudBank at mLearn 2009

Last week I attended the mLearn 2009 conference to present CloudBank to an international crowd of mobile learning researchers. The event took place in Orlando, Florida, where streets have no sidewalks, windows no handles, and all food is served with mayonnaise. As the only system based on user-generated content, CloudBank attracted much attention from delegates and there were many requests for the source code of the Android app. Apparently a research group at Tokushima University now wants to develop a similar system.

Website online

While we are still waiting for our designer to come up with a Cloudbank logo and style sheet for the website, we have set up a holding page with content for the CloudBank website. If you are able to ignore the current design and instead focus on the content, you might want to have a look at the website and view the latest language items, subscribe to the RSS feed, inspect the REST API specification, or simply download the CloudBank app to your Android phone.

REST API specification

We now have published the CloudBank REST API to enable public access to our online repository of language and culture related user generated content. To protect the system from vandalism you need to apply for a developer key first, but beyond that everything is up to your imagination. The API enables anyone to develop CloudBank clients on any platform, be it mobile clients for the iPhone, Symbian and the like, desktop clients for Mac, PC and Linux, web-based clients, or even your fridge as long as it has an IP address and network connection. The API specification 0.1 is available here.

RSS Feed now available

Syndication of user generated content is one of the most important aspects of the CloudBank system, as it helps to keep international students up to date on the language and culture related discoveries of their peers. Spotting new entries through RSS widgets on their home or profile page prompts students to look up, engage with, and possibly edit the content, leading to knowledge acquisition and consolidation. Well, that's what we hope for anyway. The CloudBank RSS feed is available here.

Wednesday, 7 October 2009

CloudBank in the City

Today I took the current version of the app up to the Handheld Learning conference, held in what used to be the Whitbread Brewery, in the heart of the City of London. This was a very salubrious setting, with a very genial bowler hatted meeter and greeter chap. Very civilised.

The presentation session was civilised too: organised as two small round table talks, it gave the opportunity to discuss the project in some depth with 10 - 12 experts in very different aspects of mobile learning. Some interesting ideas - on implementation, the meaning negotiation process, recommendations and favourites, extensions to other languages amongst others. Thanks to all who joined in the discussion and to Mark van't Hooft who organised the research strand of the conference.

Friday, 2 October 2009

CloudBank on the phone

This week was all about getting CloudBank to run on actual phones. Pushing apps from the development environment onto the phone is a fairly straightforward process described in detail in the Android developer documentation.

Almost inevitably hitherto unnoticed bugs will appear once an app runs on a real device. Among the many possible causes for unexpected behaviour is forgetting to change localhost references to the real server on the web! To automatically deal with this one needs to find out if running on a device or emulator, which seems essential in many ways but strangely is nowhere documented.

import android.os.Build;

public static final boolean isEmulator(){
return Build.MODEL.equals("sdk");

The android.os.Build class holds all kinds of information about the platform we're running on. I picked the MODEL field, which gives me "sdk" on the emulator and "HTC Magic" on the phone, but you might replace that with whatever you see fit.

Thursday, 24 September 2009

CloudBank in Florida

Yes, we've had a paper on CloudBank accepted for the prestigious mLearn 2009 conference in Orlando. The reviewers liked the idea behind CloudBank and unanimously waved the paper through. There will be plenty of opportunities to discuss the concept with a focused and knowledgeable audience. Looking forward to sunny Florida :-)

First prototype

Based on the user interface described in the previous post, our first prototype has four primary screens for start-up, browsing, viewing and editing content.

The Android client runs on the emulator, communicating with a REST server on localhost.

Users' calls for a quick application start-up and a personal dictionary led us to maintain a local cache of items that were added or edited by the respective user. Content in the first screen is retrieved from a local SQLite database on the handset for quick start-up. Content in the Browse and Detail screens is retrieved from a MySQL database on the server. A database abstraction layer keeps the code clean and takes care of all caching, synchronisation and server communication issues.

User Interface

As Lyn described in a previous post, our users' ideas about CloudBank are in many ways different from our original idea. While the initial design focused primarily on collecting and sharing content, users emphasised browsing and filtering content already in the system. Other high priority requirements were a quick application start-up, support for links to online content and a personal dictionary mode.

The Balsamiq mockups below show how we translated these requirements into four application screens in the CloudBank app:

Clockwise from top left: 1) Welcome screen with 'personal' list of content items contributed or edited by this user. 2) Edit screen to enter and edit content, with sub-activities to take a picture, record audio, add link to online content. 3) Detail screen for list items selected in (1) or (4), with direct option to edit the content. 4) Browse screen with all content items and options for full-text search and tag based filtering.

Catching up...

The blogging paradox: meant to keep others informed, blogs usually go quiet in busy times. So here's a burst of blog entries trying to catch up on recent developments, starting with our latest user interface design.

Friday, 11 September 2009

CloudBank off to Handheld Learning conference

Good news - we've had our short paper on CloudBank accepted for the Handheld Learning exhibition/conference at the Barbican, London on Oct 5-7. This will be a good chance to get a wider perspective than we usually find at academic conferences. Many top speakers are expected, e.g. visionary thinker James Kurzweil, James Paul Gee, whose work on games we've admired for a long time and, er, Malcolm McClaren, wearing his artist's hat, so that's all right then.

The reviewers seemed to like the CloudBank concept, but pointed to the potential problem of what to do with inappropriate content. We have some ideas on that for the revised version.

Thursday, 27 August 2009

Android Haiku

Our phones have arrived.
We ordered them two months back.
So what? A miracle.

Monday, 24 August 2009

Android XML parsing

CloudBank communicates with a REST server to read/write application data from/to the cloud. As our server speaks XML, we need to parse XML on the Android client. However, a quick look at the documentation reveals that Android has no less than three different XML parsers: the traditional DOM and SAX parsers plus the recently added XML Pull Parser, which promises to deliver high performance at a small memory footprint.

Great, this is exactly what we want: higher performance with less memory!

But does the promise hold up? Too lazy to set up my own performance test and confident that others have done that already, I dug up a recent article on Android XML parsing by Shane Conder. It describes a performance test for all three parsers with different data volumes, which surprisingly found the SAX parser to perform best on all three data sets.

Monday, 17 August 2009

Users, systems and their models

We're still digesting the feedback from our second user meeting, this time with our larger focus group consisting of eleven pre-sessional English students, from a range of countries including China, Japan, Thailand, Vietnam and Russia. Because of the large number of participants, this was run as a general focus group to gather opinions on the proposed system and its functions, rather than as a practical design session. And very interesting it was too.

Like the participants in the co-design session, the students were clearly used to using their mobile phones to retrieve information and were much more comfortable seeing CloudBank as a kind of hand-made dictionary for them to consult, rather than as a resource to contribute to. This led to an emphasis in the discussion on trust, authority and the quality of the information in the CloudBank repository.

This gives us some food for thought. Do we place more emphasis on the quality of the language data, maybe with trusted authors, even teachers, involved, turning the system into a resource to be consulted individually rather than contributed to? This would be risky, because it's not hard to predict that our database of words won't be as full or reliable as a plain old online dictionary, the obvious model.

Or do we follow the original concept of a self regulating collaborative community of language learners contributing what seems of use or interest to their peers, with no teacher involvement? Or some hybrid? If we stick with our original concept, it's clear we have a lot of thinking to do about the model of the system that we project to the potential users (through interface design, brand name, termininology, publicity material), to avoid misconceptions and disappointment.


Wednesday, 5 August 2009

Co-design session 1

Time is flying! End of last week we had our first co-design session with users, and I didn't even find time to blog about it. So here's a brief summary. The meeting took place on 30th of July for 2½ hours. As one would expect for this time of year, only 3 of the 6 invited 'super-users' were available. The schedule included:
  • 15 minute questionnaire to establish participants' background and views
  • 15 minute introduction to CloudBank (included below)
  • 5 minute questions & answers
  • 15 minute viewing a very English film (A Private Function)
  • 50 minute discussion: what was difficult to understand, why, similar situations in other contexts, measures to improve, etc.
  • 50 minute co-design: feedback and ideas based on initial interaction designs
The whole meeting was video-taped (with participants' consent) and two researchers took notes during the session.

And what did we learn? A lot! The session brought up many aspects we did not think of before. It helped to further develop our initial interaction designs and in the process led to a more rounded, complete service: Whereas we initially thought of the CloudBank Android client as an application to collect, annotate and tag language related content, with distribution handled through RSS feeds and mobile alerts, our users placed equal emphasis on querying and editing the data on their handsets. Yippee, this makes it a much more useful service! Ouch, we just added several layers of complexity!

Many other ideas were thrown in, ranging from the extremely useful and powerful, like filtering based on social networking concepts, to the more adventurous, like voice recognition and synthesis. Sadly though we only can note them down at this point as the project must end in November. However, the most promising ideas might well inform a follow-up project :-)

Monday, 27 July 2009

Balsamiq trial experience

Taking a break from coding Android sandbox experiments, this afternoon I tried out the UI prototyping tool Balsamiq to develop some initial ideas for the CloudBank client user interface. Usually I use pen and paper for this kind of task: low-tech tools that are difficult to beat in terms of flexibility and speed. If only there was copy/paste and undo/redo in the analog world...

Balsamiq runs online in a browser window or on the desktop, with free trials for both versions. I tried the online version, which is fully functional but displays a nag screen every few minutes. (Just hit dismiss to continue).

Having watched their video tutorial, I knew roughly how the software works and had no problems finding my way around. This is a very focussed UI design tool. No feature creep. It's amazing how quick you get acceptable results, I put together three mobile screens for CloudBank in less than two hours. This includes time to experiment, annotate and export the screens.

The trial version allows you to export and import designs. Export either as XML to the clipboard, or as a PNG image to download, import as XML. One thing to keep in mind is that imports are cumulative, i.e. to restore a previously saved design it is advisable to clear the current mockup before import.

Some difficulties I had:
  • Could not change the background color of controls or the provided iPhone screen
  • Could not create a simple multi-line button. There is a multi-line button provided, but that is pre-configured with fixed fonts for the first (large) and second line (small).
  • In some cases I found the grid-based positioning of controls too coarse; an option to turn it off would be useful.
  • Cannot import custom graphics. I know this is difficult to implement for web-based tools as they have no direct access to the client computer's hard disk, however, unfortunately the desktop version has the same limitation.
Despite some problems I think this is a wonderful tool for UI prototyping: focused, very speedy, and with a useful arsenal of controls and icons. While in my experience pen and paper are still quicker when sketching initial designs, Balsamiq definitely is a strong competitor. And in addition to speedy sketching, it supports copy/paste, undo/redo and sharing of designs! Definitely worth a try.

Friday, 3 July 2009

Project video on CloudBank Channel

Today we shot and edited our introductory project video in record time. With script and cut-outs prepared yesterday, we managed to film and edit the whole thing in less than 2 hours!

Despite our best efforts to keep to a 30 seconds limit, the video turned out 1:01 mins. It's now hosted on our new CloudBank Channel on YouTube.

Wednesday, 1 July 2009

Google Code project page

OK, we now have a Google Code project page at

Thinking about a suitable license for CloudBank

We plan to release the mobile client part of the application as open source software (the server part is boilerplate code not deemed interesting to other developers). We don't want anyone to use the code for closed-source commercial purposes, or at least not without asking us. Which license to choose?

The initial plan was to use the Free Software Foundation's General Public License (GPLv2) which is a 'copyleft' license requiring any code using our code to be released under the same licence terms, effectively preventing closed-source commercial use of our code. However, what about compatibility between other open source licenses? E.g. we want to use the HTTP Commons client, which is released under the Apache 2.0 (ASLv2) license. Are there any problems?

Ed Burnette gives a fairly useful overview of open source licenses, but this is not enough to make a decision. With respect to our specific circumstances, this ars technica article explaining why Google chose the ASLv2 over GPLv2 for Android is much more helpful:

a) Although the underlying Linux kernel is licensed under GPLv2, much of the user-space software infrastructure that will make up the Open Handset Alliance's platform will be distributed under the ASLv2. Code that is distributed under the ASL can be integrated into closed-source proprietary products and redistributed under a broad variety of other terms.

b) By contrast, 'copyleft' licenses (such as the GPL) generally impose restrictions on redistribution of code in order to ensure that modifications and derivatives are kept open and distributed under similar terms.

c) It is important to note that the ASL is only being applied to the assortment of user-space platform components that make up Android. The kernel itself is still licensed under the GPLv2, and third-party software that runs on top of the platform can be distributed under pretty much any license, including commercial and copyleft licenses. It is also important to note that, although the ASL was not compatible with previous versions of the GPL, it is entirely compatible with the GPLv3. This means that code distributed under the ASL can be incorporated into GPLv3 software.

It looks like choosing the GPLv3 for CloudBank means we can use other GPLv3 and ASLv2 code while our own code would remain strictly open source, i.e. without commercial exploitation in closed-source software products.

Tuesday, 16 June 2009


Hurrah, our grant application has been accepted by JISC, and we finally can get to work on the CloudBank project!

Here's a brief description of the project:

The CloudBank project aims to build a lightweight mobile- and web-based crowd-sourced information system to help international students to pool and negotiate their knowledge and understanding of the local language and culture. The system allows students to collect, annotate and tag interesting or intriguing language- and culture-related content found in everyday life, including text, images and other media, and to upload these content items to a repository. From the repository, the information can be syndicated, e.g. via RSS feeds or as alerts. In addition, the repository offers a web interface to allow adding, editing, annotating, tagging and discussion of content items. In time we hope this can develop into a a central point around which a community of practice can crystallise.

Stay tuned - subscribe to our RSS feed!