Ocasta Studios now open

Ocasta Labs opens dedicated Mobile App Factory

In order to meet increasing demand for mobile applications we are pleased to announce the opening of Ocasta Studios, our sister company dedicated to mobile application development. Based in Brighton the team is headed by Ben Collier and Steve Liddell and includes experienced professionals working with HTML5, iOS Objective C, Android Java, PhoneGap & Titanium across a range of mobile platforms. Ocasta Studios provides a full app delivery service including the scoping of new applications, app development, App Store submission and on-going maintenance. In collaboration with Ocasta Labs complex services requiring server based platforms and 3rd party integration can also be developed & deployed.

The launch of Ocasta Studios marks an exciting moment in the development of the company, supporting our expansion of available services and the corresponding increase in team size. As projects continue to be deployed we’ll be sure to update you with more news.

To contact Ocasta Studios please visit their web site at Ocasta Studios.

“Evolution of the Smartphone” talk

Ed Moore recently gave a talk at The Register / Intel Live 2011 conference on the evolution of the smartphone, detailing the past and pointing to the future. The presentation and recording can be found on The Register TV web site:

The Register / Intel Live 2011

Facebook authentication for CouchDB

We wanted our application’s users to be able to authenticate using Facebook accounts as well as using standard CouchDB accounts so we wrote a Facebook Authentication module. Today we are releasing the source on GitHub under an Apache 2.0 License. You can find it here.

 

Some observations on MongoDB & CouchDB

We’ve been using CouchDB at Ocasta Labs on and off for well over a year and are pretty comfortable with it. Recently an requirement for a database cropped up on a project that was standard J2EE Java and it seemed that NoSQL was a good match. Instinct told us that Couch wasn’t right for this but we couldn’t explicitly define the why. I’d recently been doing some reading on MongoDB and it seemed like a better fit. We went ahead and used it. It was the right choice this time.

It turns out the reason it was the right choice was that Mongo is quite traditional. It relies on you having a middle tier where your app logic resides. Couch is more radical and it not only replaces the traditional database but also the middle tier. If, as we did on this particular project, you already have a middle tier then using Couch adds complexity to the solution. Some of the app functionality ends up in the mid-tier and some in Couch. With Mongo you keep doing what you were doing. Query result processing and Map Reduce functions are all defined within the Java, Python, etc. code. When we needed a data import script the logic was all in the script and not split between script and database.

There were times that we struggled with Mongo. One of these was using map/reduce. In Couch you can write and test the map without the reduce which helps. I couldn’t find any easy way to do this in Mongo. Neither could i find many examples of anything other than simple counting exercises and data analysis for Mongo map/reduce when what I wanted to do was some data normalisation. We have a large number of data records imported into Mongo in the form


    {
        "_id" : ObjectId("4d8096e25f234eda61070693"),
        "region" : 9,
        "package" : "M",
        "id" : "534",
        "name" : "channel 534"
    }

We needed a summary view of this data where there was one record for each region/id pair and an array of all possible packages. e.g.


    {
        "_id" : {
            "id" : "534",
            "region" : 9
        },
        "value" : {
            "packages" : [ "M", "M+", "L", "XL" ],
            "name" : "channel 534"
        }
    }

Experience with CouchDB indicated that this was an ideal problem for a map/reduce. I’ve included our solution in the hope that others may find it useful.

    mapfn = function(){
        var detail = {}
        detail.packages = []
        detail.name = this.name
        detail.packages = detail.packages.concat(this.package)
        emit({id: this.id, region: this.region}, detail)
    }

    reducefn = function (key, values) {
        var detail = {}
        detail.packages = []
        values.forEach ( function(val) {
        detail.name = val.name
        detail.packages = detail.packages.concat(val.packages)})
        return detail }

While MongoDB was the right tool for the job this time, we won’t be giving up CouchDB anytime soon. Couch is more than a database. It is at its best when you have a blank slate and then there is no need for a middle tier in your architecture. A pure Couch application is simpler to deploy, upgrade and scale. The CouchDB _changes feed is invaluable. We will be using MongoDB in the future too. Two highly useful, but distinct NoSQL databases every backend developer should be familiar with.

Ocasta App Factory

Following on from early mobile application development for Vodafone UK & Vodafone Group the discipline has now been established at Ocasta Labs with the creation of our “App Factory”.

The App Factory will make available to customers a full range of mobile application capabilities, all from a single contract. Skills include:

  • Web App development across multiple platform
  • Native Application development across multiple platforms
  • User Interface design & app branding
  • Transactional server design and deployment
  • Optimizing API gateway design
  • Marketplace Management & Reporting
  • Strategy Management & Consultancy
  • Ocasta has been developing the App Factory concept over the last six months with a large media organisation, creating all mobile applications and gateways for this company. Apps developed include a pay-per-view video service on Symbian, Android & iPhone, plus TV Guides, WiFi Network management and email systems. We are now able to offer this service for all.

    Case Study on use of CouchDb in Agora

    Ocasta Labs has over the last 18 months standardised on the use of CouchDb for new web service development. This NonSQL system has proven extremely suitable and scalable for the development of mobile web services and we continue to support the project where possible.

    CouchOne (the system developers) recently used our work with Vodafone R&D in a case study, available here:

    CouchDB-Case-Study-Agora

    For more information please contact Ocasta Labs or CouchOne.

    Hugh Neale joins the team

    We are pleased to welcome Hugh Neale to the Ocasta Labs team. Hugh joins from university after completing his degree in Computer Science and will working on both server and client software, branding development and user interface design.

    Ocasta Labs to speak at Mobile Web 2.0 conference

    Martin Higham will be speaking this week at the Mobile Web 2.0 conference in Barcelona.

    The workshop will be on ”Using CouchDB to develop mobile solutions”, an introduction to CouchDB, why it is appropriate to mobile development and lessons learnt from developing Agora for Vodafone Betavine.

    Further information on the conference can be found at their web site:

    Vodafone Agora launched!

    Ocasta Labs are pleased to support Vodafone R&D in their deployment of Agora, a new breed of social marketplace.

    Agora allows people to buy and sell goods on a much more social level than standard e-auction sites. Chatting about purchases is encouraged, bartering is allowed and the whole service is mobile optimised using location and integrated to a phone’s handset capabilities. First demonstrated at MobileMonday London, the service is now available to the general public. The initial launch of Agora is for Android handsets, the client application being available on Google’s Android market by searching for Agora.

    The Agora service was jointly developed by Vodafone R&D and Ocasta Labs. Ocasta Labs provided OcastaTrade as the service infrastructure and client engineering resources.

    More information on the project can be found at Vodafone’s Betavine web site:

    Widgets released for Vodafone 360

    Ocasta Labs have released five new widgets for Vodafone 360 phones. These were commissioned by Vodafone UK and are available for the Samsung 360 and Symbian widget platforms.

    The applications are all example of client- server integration, utilising APIs from closed and open sources:

    The WoW Armory allows users to access the popular World of Warcraft service and display all character information.
    WoW Armory widget

    PropertySearch provides location based searches on houses for sale and to rent.
    PropertySearch widget

    MyUK shows government statistics on the country.
    MyUK widget

    Areas shows government statistics on a chosen neighbourhood.
    Areas Widget

    SocialBuzz shows the most popular links on Twitter in the last hour and day.
    SocialBuzz widget