Sunday, 14 November 2010

BarCamp London 8: Real time notifications

Tim Nash @tnashhttp://codingfutures.co.uk & http://timnash.co.uk

More details may be available on lanyrd

  • HTTP not designed to be real time
  • PayPal postbacks are a pain the butt
    • don’t use the recommended system
    • just return 200 and make a call to a standard fetch transaction
  • XMPP is just XML underneath
  • Favourite: XMPP PubSub
    • publish ATOM in a message
    • though doesn’t have to be ATOM, but helps if it’s XML
  • implementations: OpenFire (Java) & EJabbard (Erlang)
  • avoid BOSH & similar (XMPP over javascript) unless you have no choice
    • i.e. if you need to do the final step to an AJAX front end

BarCamp London 8: The Future of TV

Simon Maddox — @simonmaddox

Simon gave a brief intro into how he watches television shows (I missed the beginning, but part of his setup involves using plex on his iPad and on his screen at home). He then invited a discussion which centred around whether TV would move totally to online streaming in the future, or whether the broadcast model still had some life left…

  • coming soon: YouView (Project Canvas in a box)
  • how do I find out what I should watch next?
    • often it gets a series or so in before I hear about it…
  • where’s the last.fm for tv?
  • some TV is funnier with the commentary on twitter (e.g. x-factor)
    • have to watch that live to experience it properly
  • sports are also something people want to watch live
    • but there are not enough broadcast channels to cover all the matches…
  • can’t ignore those without digital…
  • olympic games will be a big test and a switchover
  • does broadcast save money over streaming?
    • possibly at the moment
    • but being solved and won’t be so much of problem in the future
    • e.g. bittorrent being modified to support streaming
  • perhaps the biggest change will be content producers
    • big players (ITV etc) may get smaller
  • would like to have pay-based or advertising
    • Disney DVDs with non-skippable adverts are taking the piss
    • also problem with DVDs that treat customers as pirates
  • older people may be afraid of giving away information
    • may be afraid of a personalised EPG
  • sidereel.com — personalised EPG
  • music industry revolution has been going for 10 years and is still not finished
    • TV industry revolution is going to take longer

Saturday, 13 November 2010

BarCamp London 8: British Sign Language

@lallyd http://www.learningbsl.com

More details may be available on lanyrd

  • learning level 2 at the moment
  • Deaf with big D is about how you would like to communicate, not about hearing
  • some words look similar but mean very different things…
    • facial expression / shitty
    • black / prostitute
  • dialects also differ across the UK
    • you can have a northern accent in BSL…
    • “live” (asin “I live in…”) in London is stroking shoulder
    • in Blackpool, the same sign means “toilet”…
  • vowels are RH pointing at fingers on LH
    • i.e. A is RH pointing at thumb; U is pointing at pinkie
  • computer: screen LH, RH typing
  • engineer: two hands together as cogs
  • please and thank you use the same sign, but different lips
  • resources:

BarCamp London 8: A Beginner's Guide To Whisky

Billy Abbot @cowfish

Billy’s Booze Blog

Slides available via lanyrd

  • Colour comes from the cask
  • Grain whisky has other grains as well as malted barley
    • also distilled in fractional towers
    • comes out much lighter
    • often used as the base for other products
  • whisky flavours change mostly due to tradition
  • campbeltown do briny salty whiskies
  • master of malt — sell 3cl sample jars so you can try before you buy a whole bottle
  • many distillers are teetotal
    • including half the staff of one distillery
    • don’t need to drink to check the whisky — can nose it
  • Richard Paterson is chief taster of Whyte & Mackay
  • Port Charlotte — bought by Bruichladdich
    • had a lot of stock which was boring
    • doing experimental things with it
    • Port Charlotte is very peaty
  • nosing:
    • stick your nose in, move it around a bit
  • taiwanese whisky comes out black as it evaporates so fast
  • watering down changes flavour
    1. partly reveals flavours amongst very strong flavour
    2. also has a chemical change
  • can get whisky barrel speakers!
    • a Japanese company will do so…
  • biggest single malt market in the world is… France!

BarCamp London 8: One year running it all on the cloud

Alistair Hann — runs Zoombu

More detail may be available on lanyrd

  • started off running a dedicated host, LAMP stack
  • started using flexiant (FlexiScale)
  • moved to AWS to have images (flexiant didn’t have them -- though it does now)
  • use ElasticFox to manage instances
  • elastic IP can be moved from machine to machine within a few minutes
    • useful for IP-restricted services
  • zoombu have four servers running continually
    • 1 front end
    • 1 Java services
    • 2 MySql servers
  • failures can be grim — make sure you have redundancy
    • backups of EBS volumes
    • backups of images

BarCamp London 8: giffgaff - getting what you want from Mobile network APIs

Heather Taylor @giffgaff & Vincent Boon @vincentboon

  • starting to open APIs
  • giffgaff is:
    • SIM only
    • 100% online
    • mutual — give & take
    • no call centres — only 16 full time staff!
  • “goodybag” data is currently completely unlimited, no fair use policy!
    • have agreed a charge with community for when they do start to charge
  • customers generally get an answer from community in under 3 minutes!
  • current plan for APIs (steps 1 & 2 pretty much done!):
    1. info services: read-only >
      • balance
      • goodybags
      • points
      • call records
    2. get services:
      • order SIM
      • top up
      • purchase goodybag
    3. non giffgaff
      • status update
      • share links
      • email/SMS
  • working with O2 Litmus and HashBlue guys to integrate their work (giffgaff is an MVNO on top of O2)

BarCamp London 8: Windows Phone 7 & app development

Jess Meats

More details may be available later on lanyrd

  • Marketplace purchases
    • can link to an existing Live ID with a credit card
    • or can register card details on the phone
  • development kit for phone
    • get templates for visual studio & expression blend
    • get an emulator (includes IE mobile)
  • visual design all done in XAML
  • can use Expression Blend for design
    • allows you to drag & drop and design animations visually too
  • when registering as a developer, have to go through XBox Live…
    • in order to sign up to terms and conditions
  • app submission:
    • testing happens overnight
    • if there are test failures, get a report in the developer dashboard
    • problems may happen with GeoTrust…
    • need a notary to sign and stamp a physical document
    • getting paid requires you talking to US Embassy in London…
  • @simonmaddox: SDK works in Fusion, but not Parallels
    • requires a VM inside a VM
  • can register a device for development
  • sync to Google only gets main calendar at the moment
  • background processes can now put things on the lock screen (recent change)
    • as before, can also change the home screen tile and put toast notifications in the status bar

BarCamp London 8: wheelmap.org

Holger Dieterich@holgerd

More details on lanyrd

  • http://wheelmap.org — find wheelchair accessible places to eat & drink
  • Made by http://sozialhelden.de — Social Heroes
    • one of the founders is in a wheelchair
    • problem is not how to get somewhere, but how to find somewhere suitable
    • is there a step? is the toilet accessible?
  • databases in Germany have 30,000 places, but they’re not so easy to use (mostly commercial)
  • had a wheelchair tag in OpenStreetMap before they started, but only about 5,000 places were tagged
  • now have about 18,000 places in germany
    • 300-400 places edited a day!
  • website finds your location by IP and offers you places to edit/add
  • also an iPhone app
    • using OpenLayers to display
  • CloudMade is good, but is read-only and not updated regularly (once a month!)
    • want to have immediate update
    • don’t yet have immediate, but 3 minutes is close
    • OpenStreetMap itself is sometimes down (for three days at one point), so had to implement caching and their own intermediate API
  • also approaching companies to share their data…
    • they’re really scared… so talking with Berlin government to convince them
  • having slight issues with OSM community as wheelmap data is added anonymously by a pseudonymous user
    • but it’s better that data gets added
    • and there’s no real chance of spam since the data is added automatically

Sunday, 31 October 2010

Droidcon London 2010 - Day Two

Whew! When I sat down and looked at the programme for the second day of Droidcon, I wasn’t sure I’d make it until the end — after I’d finished planning out my time, I saw I’d set myself up over 10 sessions I just couldn’t miss.

I’ve now had a day or so to recover so now I’m posting my notes. I hope they’re useful. Please @ me on twitter or leave a comment here if there’s something you’d like to add or correct.

Thanks once again to the organisers of this great event — Dominic Travers, and Kevin McDonagh and Carl-Gustaf Harroch of Novoda. You did a great job and I’m really impressed.

Android: User views

Ilicco Elia @ilicco — Reuters Mobile

Ilicco gave the first keynote speech, with some Reuters promotional video to wake us all up.

  • Getting journalists to use mobile as well as working out how consumers use it
  • Ilicco spends his time working out how people will use devices before they do
  • The App Store was not about the apps…
    • it’s about people
    • it’s about the edge that people believe they will get from the app
  • Great apps: * Google Talk — simply excellent * The browser: double clicking a column reflows the text as well as zooming in * Google Music — looking forward to what Google will do here * Vignette Photo app — just so many more styles that the equivalent iPhone apps * New keyboards — swype & swiftkey (great to be able to install device-wide improvements)
  • In-app purchasing is seriously lacking
  • “I want to buy an iPhone because it’s beautiful”
    • but… “I don’t want a phone that needs a new Mac to activate” !!
    • so… “I just want a normal phone” (HTC Desire)
    • Android can be just a phone — can have multiple personas
    • Great advantage, but also a flaw (not easily pigeonholed)

Growing the value of the application network

Christophe François — Vice President, Mobile Multimedia Products & Services, Orange

Christophe’s follow-up keynote just didn’t have the pizazz of Illico’s — though it was great to see Orange, Vodafone and Sony Ericsson committing so many people and so much time to Android.

  • Orange San Francisco Android phone selling for just £99 on PAYG
  • Customer survey over 5500 people in four countries (plus 300m customer interactions over 2 years):
    • relevant to their lives
    • security: privacy protected
    • straightforward pricing with no surprises
    • simple services to buidl their own experience
    • their content, when and where they want it
    • easy way to discover and pay for content
  • Orange promoting a few focussed apps:
    • Orange TV with premium events
    • Connectivity & customer care
    • News, radio, Orange Map
  • Have launched own distribution channel
    • Orange App Store
    • Don’t have to register — purchases go directly on to bill
    • Live in France, UK; out soon in Romania, Poland, Slovakia
  • Orange has a strong presence in Africa
    • will be deploying Orange App Store and Widget platform
  • Orange Partner Connect
    • register, submit, test & validate apps
    • central app inventory
    • reporting, sales administration & settlement services
    • private beta in Nov 2010 for Android developers

Create Killer Location apps

Alex Housley @ahousley — Rummble

  • Looking about the same as internet was in 1995, but going faster
  • 1.97 Billion on internet now (28.8% of world population)
  • Location is not mature — it’s still early days but will accelerate quickly
  • Location is not a feature: it’s one element of context
  • Friend finders have been done to death
  • Zinga have good huge business on top of facebook platform
    • similarly, there will be opportunities working with existing big players in location
  • If adding game mechanics into a utility app, make sure you reward important behaviour
  • “Where there’s a number there’s a game…”
  • Android SDK:
    • android.location
    • can get last known location
    • set a LocationListener (can optionally control location providers)
      • can trigger per time or per distance (better for distance)
    • there’s also proximity alerts
  • Alternatives:
    • Skyhook — commercial SDK, but open to revenue share
      • quite smart balanced A-GPS
      • have SpotRank
    • W3C Geolocation API via the browser
      • option: enableHighAccuracy: true
  • Testing:
    • Create a mock location provider with a text file containing locations
    • Check out /data/app/misc/location/agps/nmea via DDMS-View
  • Local data available:
    • crowd source
    • commercial license
    • open source
    • scrape it…
    • APIS
    • Future: open read/write service
  • Rummble use:
    • Geonames — to create boundaries for “Local Heroes”
    • GeoPlanet
    • OpenStreetMap
    • Flickr
    • Google Places — some commercial Ts&Cs
    • Facebook Places — not yet a geo API
      • ask for an additional permission
    • SimpleGeo — cloud infrastructure for location data
      • SpotRank — can see heatmaps of crowd density
  • Geocoder class in Android has minimal limits
    • need permission.INTERNET
  • Use OpenStreetMap for mapping — better than tiles
  • Notifications:
    • Android NotificationManager available since Froyo
    • Xtify
      • commercial, 3rd party API
      • have geo-fencing
      • compatible with 1.x upwards
  • Measurement
    • assign key local metrics and goals
    • Flurry, Distimo, Google Analytics
  • Rummble is based on subjective logic + other trust metrics
  • Rummble API
    • people, places, reviews, check-ins
    • tremors — tweets in locations
    • offers
    • available at http://dev.rummble.com

Excellence in the Android User Experience

Roman Nurik @romannurik — Android Developer Advocate, Google

Roman extended his Android Design Tips (slides below) with some additional info on giving great first impressions, and some new prototyping and asset generation tools that have become available.

First impressions

  • User experience starts somewhere in the Android Market or even in a blog
  • UX extends to reviews in market, recommendations, forums, support…
  • set great expectations:
    • icon, title (unique & appropriate), description (honest & useful)
    • description:
      • give the user enough info to quickly glance over it
      • don’t need to include all features
      • leave room for screenshots!
  • other first impressions:
    • provide screenshots, youtube video
  • get the user up and running as soon as possible
    • don’t require a lengthy registration process
    • sync user data and context immediately
  • home activity should be simple & straightforward
    • needs user testing on real users
    • highly aesthetic & consistent first impression of brand
  • if the UI is more complex, consider a tutorial screen
    • e.g. WinAmp first screen
    • on first open, hide main activity with an overlay PNG
  • tutorial screen also useful for introducing widgets & live wallpapers
  • if you do have an intro screen, make sure it’s also available in app settings so user can go back

Design tips

  • design process:
    • lay out information hierarchy & data model
    • primary UI navigation pattern
    • prototype UI (see later for tools)
  • good nav methods:
    • dashboard + action bar
      • big icons + recently updated
    • 3-4 top tabs
    • horizontally sliding top tabs or homogenous content
      • but not for different content — user must know what they’ll get when they swipe
  • bad nav:
    • 5+ bottom tabs
    • don’t use options menu for navigation
    • on-screen back button (all Android devices have a hardware back button)
    • tabs that alter the back stack
  • prototyping tools
  • design & dev tips
    • full slides available at http://j.mp/androiddesigntips
    • don’t have modal dialogs (make sure back button works)
    • use dp (or sp for fonts), not px for units
    • don’t port UI from other platforms
    • support D-pad & trackball nav (focusable = true)
    • manage activity stack by using right intent flags
    • handle orientation changes
    • localize
  • resources can be set up on a resolution specific mechanism
    • drawable, drawable-hdpi, drawable-mdpi, layout-port, layout-land etc
    • Kevin McDonagh had a good session yesterday on creating a great styles file
  • make sure your UI elements are selectable
    • use the selector XML properly — with different drawables for different states
    • see frameworks/base projects in Android git for core system assets examples
  • icon guidelines: http://j.mp/androidiconguidelines
    • Roman may be working on an update…

Design tools

The story of ribot from penny arcade to retail giant

Antony Ribot @ribot

Antony gave a highly personal account of how he and his brother Jerome founded and grew Ribot to the point where they are designing and building Tesco’s grocery apps.

  • started Ribot with £10k savings and two people
  • now 10 people
  • reading: “how to start and run sandwich and coffee shops”

Lessons learned from Future Platforms over the years

Tom Hume @twhume, Future Platforms

  • growing pains
    • gone from 2 to 20
    • 5-6 just about at limit of collaboration without confusion
    • 7-8 is inflection point
    • 12-15 can’t organise a night that everyone can make
    • then need someone to run the process for you
    • 50-60 walk into work and see people you don’t recognise..
  • you will have problems with staff
    • FP have introduced a much more rigorous hiring process in the last 18 months
    • interviews now includes brainstorming, estimating and other less usual tasks
    • people leave:
      • lack of career path
      • want to do their own things
  • service work
    • resented account management, but realise now that you need it
      • need someone to handle the relationship issues between companies
    • your real process is what happens when the shit hits the fan
    • it’s hard to find a service company that doesn’t have aspirations to have its own products
      • it doesn’t work to leave things until the end of the project
      • instead have 1 day in 10 for each person for experiments
      • can get R&D tax credits for this time!
  • get a peer group, advisory board (ex-customers)
  • use lightweight metrics
    • use half day estimates
    • work out totals at the end of each month and compare to originals
  • “Everybody wants to be Steve Jobs: don’t start by being an arrogant prick!”

Android and CouchDB

Aaron Miller, Developer, CouchOne

  • started porting CouchDB to Android before he started working at CouchOne
  • CouchDB is a non-relational database (NoSQL) that stores JSON documents
  • instead of queries, create “views” that allow fast lookup by keys
  • all comms over HTTP
  • db is highly durable
    • append-only file format
    • survives battery drops out, process killed etc
  • can easily transition an app that uses remote CouchDB
  • really good at replication: multi-master replication
    • can write to any server
    • can introduce conflicts, but can deal with that
    • really powerful on a phone
      • can sync with a server or with another phone
      • can have multiple DBs on net syncd to a single DB on phone
    • can have continuous integration (via long-running HTTP response)
  • on Android, ported the Erlang VM and then CouchDB on top
    • since all Android apps run in separate instances of Dalvik VM, not that expensive to run another VM
    • works with Android service model to shut it down when not needed
  • can install from Android Market right now — but still in beta
    • installs quite a few bits on the phone…
    • takes a while to download
  • can forward the CouchDB port from the device to your computer and use existing CouchDB tools
    • adb forward tcp:5985 tcp:5985
  • can store application and logic in CouchDB as well (just another document!)
    • e.g. WikiLeaks available as a CouchDB instance…
  • once you have a CouchDB app on your phone, you can access it even when you’ve got no internet access
  • can show new data instantly as it appears
  • CouchDB as an Android service — can bind to it from native apps
  • DroidCouch is a Java interface library to CouchDB
  • in production:
    • there’s not a good way of having your app depending on another app
    • at the moment Android CouchDB is pretty big
    • in the future, will have a slimmer version
  • battery life impact of continuous replication?
    • if just watching, then not much (just holding open an empty connection)
    • will stop and only try and look when your device is awake
    • probably want to use scheduled replication in the background, but turn on continuous replication when app in foreground
  • if don’t want to replicate whole server-side, can use a filter on replication
  • CouchDB has a user model with login
    • validation methods can check user and associated data

Monetize your apps in emerging markets

Chua Zi Yong, SEO MoVend; runs Android developer group in Singapore

  • movend provide: * in-app commerce in 10 minutes * DRM services, product management services
  • what devices are popular in emerging markets:
    • S40 & S60 (esp in Philippines) — all top 10 devices
    • BlackBerry, though not corporate — students, housewives
      • 1:50 BlackBerry to iPhone in Indonesia
    • lots of MTK Java/Linux devices (mediatek) — knock-off devices
      • generally low-end devices below $150
    • iPhone is not even 1% in China today
  • Android has really picked up in Asia Pacific over last 6 months
  • Loads of Android devices coming through
    • Open source and free
    • Reduced cost of the handset by having services that charge per month
  • support from low cost hardware manufacturers like MTK
    • seeing first ones in Indonesia
  • population more familiar with connecting to internet on Nokia phone than on a computer
    • first and only connectivity to internet
    • only gaming console, social network tool, …
  • “they probably know your app, but not that they are online”
  • payment if different in china, indonesia & thailand:
    • have physical kiosks — people pay in cash for someone to download the app for them
  • more than 50% of mobile app payments in Asia Pacific already
  • highly fragmented markets & user behaviour
    • sizeable markets: China, Korea, Japan, Indonesia
  • highly regulated market place
    • launching an app on China Mobile takes 6-8 months
    • they want to control everything…
    • and money takes similar time to come through…
    • and low cut of profits — at most 50%
  • localized payment methods — at least 20 different forms of credit card in China
    • PayPal doesn’t work that well in many of these markets
  • but a lot of money available if you get through…
    • hundreds of millions of users
  • localize
    • languages…
    • avoid taboo images (e.g. pointed finger is not friendly in Malaysian context)
  • casual games don’t work in China
    • more familiar with MMORG with in-game items

Android has a “dude” problem

Belinda Parmar @belindaparmar, Lady Geek TV

  • Lady Geek TV: marketing company that helps companies talk to women
  • in survey only 5% of women said Android for their next phone, 57% said an iPhone
  • BUT… more women than men bought smartphone in the last 6 months
  • and more female gamers 25-35 than men
  • Forrester did some market segmentation on women gadget owners
    • 37% self sufficient, tech savvy
    • 35% neutral, little engagement, low willingness
    • 28% opportunity
  • iPhone is marketed as what it does for your life
  • women feel overwhelmed and confused by choice of Android devices
  • women are twice as likely to have never downloaded a single app
    • don’t see most of the apps as relevant to their lives
    • want apps to solve a problem, to answer a question
  • women are interested in apps but want to be involved on their terms
  • Recommendations:
    • solve a problem
    • entertain, don’t educate
    • if you have an app and want it featured in the next season of the App Show, get in touch at http://facebook.com/ladygeektv

Android behind the scenes

Karl-Johan Dahlström and Erik Hellman

The afternoon keynote session: Sony Ericsson was very open about their process in designing, building and improving their Android phones. They’ve got some lovely devices (I bought an X10 Mini Pro for my wife) but are currently behind in Android software — their devices run 1.6 and a 2.1 update has only just been announced. However, they seem really committed to the platform going forwards (and they did make the best of a bad job on J2ME…)

  • Sony Ericsson wanting to be the Android benchmark going forward
  • have Google base, adding Sony features, then Sony Ericsson design
  • have teams going out to cities and imbuing culture to identify macro trends
  • current focus: Human Curvature, Precision by Tension
    • fits to your body, but precise interaction
  • X10 Mini inspired by the Cloud Gate in Chicago, a “pure object”:

Chicago Cloud Gate "The Bean" 2

  • hardware and software need to harmonise

  • Now introducing “(Erik) Hellman, version 2.0 of Hellboy” :-)

  • all products using same source code
  • contributing all changes back to platform
    • sony ericsson one of the main contributors to Android Open Source project
  • decouple apps — signature apps built on top of standard Android Platform
  • No point setting up an Android forum solely for Sony Ericsson
    • we should be where you are already, answering questions and providing support
  • promotions:
    • have app for the week on local facebook groups
    • Susanna working for marketing in UK — going out to stores, telling people which apps to demo
  • launching Ericsson Application Awards 2011
    • theme: connected things
    • prizes: € 60K + phones at various stages of competition
    • two categories: students or companies with less than 100 employees
    • launch —> submissions —> beta-test —> prize ceremony
    • http://ericssonapplicationawards.com

Turn good ideas in to great apps

Reto Meier @retomeier, Developer Advocate for Android, Google

See Beginner’s guide to Android for more details on deadly sins & glorious virtues

Five deadly sins

  • sloth
    • responsiveness is crucial
    • avoid modal dialogues & activities
    • always update the user on progress — and hourglass is not enough
    • render the main view and fill in data as it arrives
    • you’re not going to have the user’s full attention
    • as soon as they look away, they’re going to do something else
    • never lock people out of the app while you’re processing
    • have about 5 seconds for UI to respond until the OS pops up a warning
    • that’s a back stop to protect the user from crashing apps
    • UI should respond in 100-200ms
    • use AsyncTask
  • gluttony
    • if you’re app uses too many resources, it will get killed when it goes into the background
    • don’t overuse WakeLocks
    • think about how to do battery-draining stuff as infrequently as possible
    • let users manage updates
    • share data
    • use Receivers and Alarms, rather than Services and Threads
    • instead of WakeLocks, add flags to WindowManager (FLAG_KEEP_SCREEN_ON)
  • hostility
    • respect user expectations for navigation
    • workflow should be self-explanatory
    • don’t hijack the native experience — other people use the device in different ways than you
    • give users options to do things, especially around network connections & location
  • arrogance
    • undocumented APIs may not be supported in future releases
    • save state when app is paused so can restore nicely
    • will put off users if you restrict rotation behaviour
  • descrimination
    • APK is designed to work with devices from SE X10 Mini to Galaxy Tab to Google TV
    • include multiple graphic resources
    • ensuring hardware happiness:
      • use uses-features in manifest (and make not required if happy for alternatives)
      • then check for API existence in code to modify UX

Five glorious virtues

  • beauty
    • people perceive a beautiful app as more professional
    • e.g. tweetdeck gets installed on devices with a pre-installed twitter app
    • optimize assets
  • generosity
    • use intents to start other apps
    • e.g. Where and OpenTable
    • create widgets, live folder, live wallpapers to increase user engagement
  • utility
  • measure your success
    • user feedback
      • can’t follow instructions
      • can provide unhelpful feedback
      • users LIE :-)
      • instead use analytics (e.g. Google Analytics for Mobile Apps, Flurry)
  • be epic
    • change the paradigm

Quick tips

  • let the runtime kill your service
    • service should return START_NOT_STICKY
    • if started several times then think about making it sticky
  • kill your own service
    • use alarms & intent receivers for periodic tasks
    • use inexact repeating alarms
  • cloud to device messaging
    • works best for targeted updates
    • com.android.C2DM package is open source sending mechanism for server

Android beyond the phone; Tablets, eReaders, and more

Al Sutton, Company Director of Funky Android

  • Dell Streak uses mDPI resources but has much bigger screen
  • android.os.Build gives you device-specific data
  • use library projects to keep common core together
  • even Facebook and Twitter get it wrong (and have done on Dell Streak)…
  • there are Android dual screen displays
    • e-Ink displays behave completely differently
    • to get it to work requires a custom class…
  • custom device manufacturers are really keen to have your apps on their devices
    • they’ll expect a 20-50% markdown, but you won’t have to pay app store fees
  • ViewSonic ViewPad 7 available in the UK for £399
    • 800x400px display
    • offering £100 rebate for any old laptop or netbook
    • runs Android 2.2 and has Wi-Fi, Bluetooth, GPRS & 3G
    • it sometimes says it’s a phone

Evolving past the fingertip

Nick Hunn, Director, WiFore Consulting (http://www.nickhunn.com)

  • Lots of proprietary devices coming out that are essentially connected tablets (or could be)
    • Energy monitors (govt has mandated that we will all get two)
    • Home health hubs
    • Android can do their jobs very easily
    • But it’s much harder on embedded operating systems
  • putting sensors into everyday objects
    • blood glucose monitor in toothbrush
    • thermometer in TV remote control
  • Bluetooth low energy coming out — new name for WiBree * connectionless, mostly OFF * good at small, discrete data transfers * will appear in phones in middle of 2011 * coin cell will die of old age before bluetooth before it runs out! * costs about $1 in bulk, size of a fridge magnet * chips are 5mm square * not really Bluetooth, just been designed so it’s compatible
  • can also do broadcasting
    • can be location — great for indoor location
    • range is about 100m outdoors, 50m indoors (can cut down if you want)
  • people keep updating online tracking services (e.g. weight, running, electricity usage) for 4-6 weeks then give up
    • too much hassle
  • instead, get devices (scales, pedometers, etc) to update online services via the phone
    • changing the source of ARPU for network operators (lots of small packets of automated data)
    • information is sent automatically, without user touching phone
  • often much more compelling ways of showing data than just basic units and graphs
    • some scales are just showing difference since last measurement!
  • phones don’t include RFID as it’s not a standard frequency around the world
    • one country’s frequency is actually illegal in other countries
    • NFC is different and starting to appear in phones
    • NFC requires more power than Bluetooth Low Energy
    • starting to see different standards working together instead of fighting

The Snapdragon Mobile Development Platform

Leon Farasati, Senior Product Manager, Qualcomm - leon@qualcomm.com

http://developer.qualcomm.com

  • Qualcomm is taking on a new role of being the link in the ecosystem
    • ensuring that there are great apps for the ecosystem
    • have a huge installed base, want to make sure that apps work well
  • Snapdragon is a system on a chip
    • ARM-based CPU, GPU, rich multimedia, GPS, 3G, Camera, power management
  • offering pre-load opportunities…
  • Snapdragon MDP (mobile development platform):
    • commercial-like device (can actually use it in the field)
    • will be available through bsquare
    • full load of sensors including:
      • gyro and compass
      • proximity, temperature, pressure
  • early access to next generation hardware

Future of Android Panel

Ewan MacLeod with panel:

  • Ben Medlock — TouchType (makers of SwiftKey)
  • Volker Hirsch — ScoreLoop
    • mobile social infrastructure tools
    • virtual economy tools, good, gifting, etc
  • Aaron Johnson — Principal Product Manager for Games & Applications at Vodafone
  • Michael Smith — Head of Platforms for INQ Mobile
  • Leon Farasati — Senior Product Manager, Qualcomm

  • Anssi Vanjoki likened Android to “peeing in your pants”

    • MS: Nokia not core of mobile software any more
      • Android opens up ecosystem of competition
      • Allows delivery of applications at web speed
      • Just that speed alone is enough…
    • AJ: there will be a point when people start asking for money for Android (”What!? I’m not sure I understand his fear here. There are licenses in place…”)
    • VH: SMS & Smartphone outside of Western Europe etc, Nokia is still a big player
      • but no longer in mobile developed countries
    • BM: a platform that fosters partnership is better
      • Android has challenges with fragmentation
    • VH: iPhone developers were complaining about 3GS causing fragmentation
      • nothing compared to J2ME: multiply devices by operators by bugs…
    • LF: one challenge for Android is capturing lower end
      • but high end phones will trickle down
    • MS: fragmentation to Android is similar to building your own PC in late 80s
      • i.e. no impact
  • We’re still on the dream phase for Android: consumers “only buy one Android device”… Will consumers retreat to “something familiar”?

    • VH: is HTC sense out there because Android needs it or because HTC does?
      • Android lacks the polish at the moment
    • AJ: didn’t like the UI on various Nokias I had, but I kept getting them…
      • there’s whole range of reasons why a customer chooses a device
    • BM: the breadth of Google’s web services provides a very strong disincentive to leave
    • MS: Google is encouraging OEMs & operators to fight amongst themselves to get great user experience
    • LF: want to allow the people who actually know the end users to drive that
      • this is the OEMs & operators (”is it really?”)
      • e.g. Japanese phones are tailored to Japanese market — we would probably hate their UI over here
  • If I was your fairy godmother, what would you wish to change in Android?

    • BM: I’d love to see a decent automated testing framework on a range of devices
      • love to see something comprehensive
      • I think this should be Google
    • VH: a working billing infrastructure
    • AJ: developers making sure that their app manifests include clearly defined API access and permissions
      • so can manage lifecycle
    • MS: Google has history of encouraging competition and then eating them
      • would like Google to be a little more open about what they’re aiming at and what they’re not, to provide some reassurance
    • LF: want a better way of getting hardware acceleration support
  • What should we know about? What’s really interesting?

    • BM: the tech community
      • there’s a great community of tech blogs ready to test new software
    • VH: entering Google email in device and seeing calendar & picasa just popping up
    • AJ: paid Android submission to developer.vodafone.com
      • everyone can sign up, with charge to bill included
    • MS: cloud to device messaging
      • should destroy BlackBerry BDM very quickly
    • LF: this room right here — Java brings a huge talent pool
      • peer to peer proximity based stuff
      • device contextual awareness: walking, driving, in your purse/pocket

Thursday, 28 October 2010

Droidcon London 2010 - Day One

I’m heading home with my brain stuffed full of new knowledge from Droidcon London 2010. And this was just the first day, with unplanned, unprepared barcamp-style presentations!

Most of the presentations today were technical (tomorrow there’s a design and business thread as well) but they varied from doing continuous integration through discussing low-level TCP details to a Q&A session with some of Google’s Android team.

I’m seriously looking forward to the second day’s programme.

In the meantime, here’s my notes for the sessions I attended:

Android UI tricks from Sony Ericsson

  • limit of 200ms to respond to user interactions — don’t do long running tasks in the UI thread
  • so how do you deal with longer lasting processes? use the Handler & Service classes
  • …and use Toasts to show quick popup status
  • number of devices on 1.5 is below 10%
  • all demos will be available on the Sony Ericsson developer blog

Handler

  • don’t use inner class Runnables inside a Handler (save heap & garbage collector)
  • within XML use onClick for buttons
  • handler.sendEmptyMessageDelayed(message, delay);
  • then have a message handler that deals with loop & sends next message
    • any UI activity should be in a Runnable called with runOnUiThread(runnable)
  • don’t forget onDestroy

Service

  • used for downloading
  • pass a message from service to activity by implementing your own Application class
  • Application defines callback interface and methods to fire & receive
  • use IntentService for your service
    • deals with sequential handling automatically
  • call to the application (need to cast getApplication())
  • don’t use AIDL interfaces — unless you want to share service with other apps or between multiple processes in your app

Animation

  • create an AnimationSet and add Animations within the getAnimation call
  • second parameters for RotateAnimation are relative to view, not screen
  • can also do animations in layout.xml
  • Twitter app removed animations from their home screen…
    • the background was a live wallpaper — consumes a lot of battery
    • continuous animations can use up battery so be careful
    • shouldn’t be a problem with performance though
  • see also Zooming demo and

BootListener

  • when the phone is rebooted, the alarms are cleared
  • don’t listen for boot completed unless you really have to
    • slows down startup if you have too many
  • can have a broadcast receiver that is disabled
  • in app xml set bootlistener disabled by default
  • then in listener when intent comes through: {{{ context.getPackageManager().setComponentEnabledSetting( new(ComponentName(context, BootListener.class), PackageManger.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP) }}}

3D & OpenGL with Android views

  • combine the strengths of Android views (text, layout, etc) with OpenGL (3D but not text)
  • create a bitmap
  • use MeasureSpec method
  • draw the view onto the OpenGL texture bitmap
  • GLUtils.texImage2D(...)
  • if you do this today, suggest you use OpenGL ES 2.0

Location services

led by Nick Black, Founder & Head of Products at Cloudmade

cloudmade

  • cloudmade will support Android later this year with a Maps SDK
    • based on OpenStreetMaps
    • worked out a way to squeeze vector data onto the device
    • map data comes as you need it and is stored locally on device
    • downloadable data includes searchable street names, etc
    • early access available end of this year, early next year
  • cloudmade also has http://maps.cloudmade.com/editor to let you choose and configure your design —- your style will work on mobile too!

Impleo

  • formed from ex-Motorola & Alcatel employees
  • also adding tracking for insurance
    • includes accelerometer info so can tell how good a driver you are!

cloudmade location-based advertising

  • created a network that finds highest value ads from other networks
  • goes out to other ad networks, will also go out to more specialist networks
  • trying to deal with the fill-rate problem…
  • some android apps got backlash when adding advertising after the app release
    • put the ads in at the beginning!

map data

  • most owned by Google, Nokia or Tomtom (Navteq)
  • skobbler Android app - built on cloudmade’s navigation service
  • cloudmade see navigation services not as an app but as a feature within apps
  • Google don’t allow access to driving directions API on Android

google latitude and other services

  • Is anyone using the latitude API?
  • GPS in Android drains the battery quite heavily
  • if things are further away then turn off GPS temporarily
  • battery management isn’t good built-in
    • have to manage your own choice between coarse and fine location services
  • Motorola went to use Skyhook instead of Google location API on Android
    • that way they would get data for their customers WiFi location
    • Google forced them to switch back to Google location
    • Skyhook now suing Google…

Always in sync client & local unit testing

Carl from Novoda (@charroch)[http://twitter.com/charroch]

RESTProvider

  • available on github
    • depends on JacksonJSON etc
  • makes a RESTful API available as a Content Provider
  • couple of branches — caching_carl one stores locally in SQLite
  • can start service with loads of requests — it will handle them in a queue
  • can add params: putExtra("params", new List(...))
  • Tip: adb shell setprop log.tag.Database VERBOSE
    • slows it down a lot
    • can add your own tags too
  • ResultReceiver: a way of passing back status to app UI
  • if connectivity is lost, it stops the queue
  • need to watch out for the user setting to disable background downloading
  • extend HttpQueuedService
    • override getMarshaller
    • create a LoggableJsonRequest with a marshall method to store data using a ContentProviderOperation
  • library supports ETags too — saves a download as server data is just a HEAD response
  • also created novoda.mixml (minimal XML) which works in same way as Jackson JSON
    • integrated into RestProvider to cope with XML content as well as JSON
  • hopefully have time to build a more stable version over the new year
  • end goal: to have declarations in application XML and service definition

Unit testing of android classes without emulator

  • see also the RestProvider code on github
  • android.jar only contains stubs, so can’t even instantiate
    • major problem for your subclasses even when you only want to test your additional methods
  • PowerMock works somewhat
  • need to find a different way of doing the tests
  • Carl has copied the source of the Android classes into his test source and modified them to ensure no call to the system…
    • not too hard — just need to ensure that the constructor can work
  • have to keep your code copy up to date with the base Android source
    • but it doesn’t matter that much as you won’t be testing Android code
  • possible next step: Android will run on Intel — could run locally with unit tests
  • currently have three projects:
    1. main classes
    2. local tests using this mechanism
    3. instrumentation tests
  • changing to have a single folder with tests marked with annotations
    • want to have some tests marked as local if possible
    • android instrumentation tests should run all of tests (including local tests)
  • maven could be overkill for Android development
    • build process is quite well-defined, not that many other libs
  • SBT could be interesting (simple build tool, written in Scala)

App Analytics from Capptain

  • combining in-app analytics with CRM
  • collect/measure -> analysis -> engage
  • send messages to users and get feedback
  • SDK available in Android and iOS
  • similar services: motally (acquired by Nokia) & xtify
  • released beta two days ago
  • have REST/JSON API for data
    • not publicly available right now, but available on a case-by-case basis
  • also have a real-time API

  • pricing:

    • free during beta period
    • haven’t decided pricing structure
    • probably freemium — pay for additional functions/users

new analytics capabilities

  • how long users are spending in each screen of your app
  • really nice user path — based on screens, not events
  • real-time analytics — can monitor where people are in your app right now
  • crash logs with device, firmware, etc details
  • as per other analytics, store data locally and send later if not connected
  • Android SDK automatically picks up activities

CRM

  • announcements and polls
  • target by carrier, country
  • test before publish by sending to a single device
  • schedule for particular times

Qualcomm Alljoyn

http://developer.qualcomm.com/dev/alljoyn-p2p

  • exposes a shared communication bus based on DBus
  • automatically uses Wi-Fi and Bluetooth as device allows
  • Java and C interfaces
  • Java interface lets you just send/receive/call POJOs
  • Wi-Fi uses mDNS to find services by well known name (a URI)

Continuous Integration with Maven & Hudson

Hugo Josefson from Jayway (founded Maven Android plugin)

http://code.google.com/p/maven-android-plugin/

Slides and Hudson installation script available from http://code.google.com/p/maven-android-plugin/wiki/Presentations

Android and Maven

  • there’s also a proguard plugin — can use to trim unused classes
  • maven can handle inter-project dependencies
    • keep pure Java code in a Library (so can have local unit tests)
    • then can have app depend on library and on-device tests depend on app
    • see Samples project for MorseFlash example
  • there’s also an Eclipse plugin that helps ADT & Eclipse understand that they’re dealing with Maven
  • the process that takes the longest time is the DEXing

Android, Maven and Hudson

  • don’t see any reason to run Hudson in Tomcat — it comes with its own webserver
    • though it should work fine within Tomcat too
  • Android emulator plugin for Hudson: http://wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin
  • emulator settings: 2.2, mdpi, hvga, en_US, 64M
  • can loop through different settings for emulator
  • Hudson server needs some X libraries but will still run headless
  • currently don’t find out which tests fail when Android tests fail — have to look at logs

Google Q & A

I only noted down one question from the second Google Bootcamp Q & A session:

  • can you target apps at Android tablets?
    • can target large screen devices (currently Galaxy Tab + Dell Streak)
    • will also hit Evo 4G as that has hi resolution too, but smaller screen

Monday, 11 October 2010

MomoLondon: Demo Night

I’m catching up on blog posts slowly. This one’s the Mobile Monday London Demo Night from 13th September… Together with Ewan and Sergio (manfully representing FuturePlatforms), I was presenting my Over The Air hack from the weekend (see previous post) and I was consequently suffering from a lack of sleep. Here’s a quick run down of the other presentations:

psonar

http://www.psonar.com/

  • upload music to psonar
  • get at music on any HTML5 connected device by streaming or downloading

roulette cricket

http://www.roulettecricket.com/

  • great idea
  • impressive implementation by FuturePlatforms, as usual…
  • £2.50/month to play for prizes, or a revenue share from bets

HipSnip

http://hipsnip.com/

  • mobile notepad for the things you want
  • enhanced with smart searches & geolocation:
    • wine.com, cnet, imdb, yelp
  • mobile design a little too small for hands… need to follow Apple HIG on Android too :-)
  • user research: found that people take photos, or save a draft SMS but then forget
    • wanted to have a way to remind people

The logo is an aleph. Is that for infinity or for hebrew? The letter carved into the head of the golem…?

Toshl

http://toshl.com/

  • personal expense record
  • quite secure
  • have apps for android, iphone & maemo
  • sync to web
  • on web, can analyze, export
  • currently 45,000 users, 1/3 active
  • iPhone downloads in 3 weeks almost surpassed Android’s 6 months
  • are in negotiation with banks for auto-download
  • currently have a freemium model, looking for investment from banks for rebranding
  • some great observations:
    • RIM apps generally look ugly
    • front end and usability on mobile apps takes 50% of development time
    • cross platform development is nose bleeding expensive!

Collinson Group

http://twitter.com/mtjmelody

  • Columbus Insurance is one of their brands
  • a mobile trip planner
    • but with a surprisingly comprehensive offline database of airports, flight plans, hotels and car hire
  • had a desktop version for quite a few years, just brought across to Apple platform

Appmarks

Adrian Cuthbert

http://www.myappmarks.com

  • bookmarks in that point to specific places within apps
  • want to add Android version too
  • if app not available, offers to download it from store
  • would like apps to supply relevant info

Milestone Planner

Benjamin Ellis

http://milestoneplanner.com/

  • need a plan, but things change very fast
  • wanted a plan on a page that everyone could update
  • webapp written with HTML5 and javascript
  • server keeps a full history of all changes
    • can view as list in webapp, RSS, export to twitter
  • facilitating a discussion around the plan
  • automatically generate weekly reports in PDF
  • most planners are based on TODOs, this is based on outcomes and people instead, larger scale

Qootia

tomaz@qootia.com

  • big screens that people can interact with by making voice phone calls
  • good demo, with great timing from the presenter

Liquid Air Lab

http://twitter.com/spodtronic

  • 480 apps developed on most popular smartphone platforms
  • 7.8 million users
  • 33,000 downloads per day
  • Android users are little more techie
  • BlackBerry users especially in the US
  • Nokia user… is catching up fast… !?!?
  • Ovi store has overtaken iPhone share
    • (since they have a special category for Radio apps…)
  • iPhone is going down in share compared to the others
  • started on Symbian and moved on to iPhone, etc
  • now have 7 platforms…

Sunday, 10 October 2010

Over The Air Hack - a LEGO robot with an iPhone brain

IMG_6032

As promised, here are the details of my Over The Air hack — The Eyes Have It — which won prizes for “Best Hardware Hack” and “Best Use of Other Features” in the overnight hack-a-thon competition. I also took it along to Mobile Monday London’s Demo Night on the following Monday.

The hack was a LEGO Mindstorms robot with an iPhone brain that followed faces in front of it and steered towards them. It performed well on stage, following me as I gestured towards it, just like a small pet.

The hack was composed of two parts: an iPhone app that detected faces in the video feed from the front-facing camera; and the LEGO robot that took instructions from the iPhone and steered accordingly.

Communication

Getting the two parts to communicate was one of the trickiest areas to get right, and caused extra headaches before each presentation. Both LEGO Mindstorms and the iPhone can communicate over Bluetooth, but Apple has restricted Bluetooth communication to companies that will pay the Apple “Made For iPhone” license fee or that use particular hardware. Bluetooth comms is not available through the standard SDK and apparently needs some kind of “secret handshake” to work.

Unfortunately, Mindstorms came out a while before the iPhone and uses a different Bluetooth chip; and LEGO and Apple haven’t managed to do a deal to provide Mindstorms access from the iPhone (perhaps because LEGO has open sourced much of their software?). LEGO has now released an Android app to showcase mobile phone integration, so let's hope Apple can work with them to get some iPhone apps too.

So no Bluetooth, and Apple won’t let you talk over the dock connector either… That left feeding information to the robot through one of its five senses — a touch-sensitive button, an ultrasound distance sensor, a microphone, a light sensor or the motors themselves (which can detect rotation).

A quick search on LEGO Mindstorms iPhone brought up the iPhoneRobot which used the light sensor to pick up different greys on the screen. This was a great start, but it wasn’t quite what I was looking for. For a start, it required the LeJOS firmware on the Mindstorms brick — this is a cut-down Java VM that replaces the built-in LEGO firmware. I’ve left my Mindstorms with the default LEGO firmware as I use it with my 7 year-old son. He’s not quite ready for Java, but can easily understand the Labview-based visual programming that comes with the Mindstorms kit. Secondly, the robot itself wasn’t quite suitable — I wanted a robot that would recognise faces, so I needed the iPhone to be pointing upwards towards people’s heads rather than along the ground.

Motor skills — building the robot

Designing a new robot from scratch takes quite a while and I only had overnight. Unlike normal LEGO with bumps and holes, the Mindstorms kit uses the new-style LEGO Technic, which is mostly holes and connectors. Also, LEGO’s own sample models are pretty complex, as they are built to look like animals or people as well as interact.

Fortunately, I found a great site with designs for quick Mindstorms models that are easier to hack to do what you want. Some of the ideas are amazing — especially a Segway that actually balances! I started with the 3-Motor Chassis and added the distance sensor on the front to prevent crashes. I also added the button sensor on the side to help with starting and stopping the program, as the iPhone was in the way of the program buttons on the Mindstorms block.

Here’s some pictures of the final result, holding the iPhone pointing upwards. I’ll try and generate some build instructions later.

Computer vision — the iPhone app

Humans are exceptionally good at seeing faces. Our brains have been trained from birth to detect and analyse faces very quickly. We can tell which way people are looking from far away and even see faces in random patterns.

Computers have a harder time of it, although recent developments have massively improved what is possible. Companies such as Polar Rose have shown demonstrations of both face detection (finding out where any faces are in an image or video) and facial recognition (matching the detected faces against a database of known images) running in real-time on mobile phones. Unfortunately, their code is not available to an overnight hacker, though they’ve recently been bought by Apple so we may see interesting capabilities in future iPhones.

However, Intel launched an open source project back in 1999 called OpenCV (for Computer Vision) and not only is it still going strong, but the library is easily compatible with the iPhone and has a git repository of a ready-built library. OpenCV is all about providing well-optimised functions for real-time computer vision, so that developers do not have to reinvent the wheel. It includes face detection algorithms and a guy called Roy has posted some examples of how to get face detection working on an iPhone video feed.

Roy’s sample code was written for iOS 3, and iOS 4 provides much easier methods for accessing the video feed from the device. I updated Roy’s code to use the new AVCaptureVideoDataOutput class that provides direct access to uncompressed video frames from any iPhone camera. This bit took a little while longer than it should have done, as the video feed is provided as landscape (you’re recording a video, right?) whereas its preview feed is oriented the same way as the camera. This was not obvious, and made worse by the fact that face detection algorithms do not work when the image is rotated by 90°… There was a point in the early hours of Saturday morning when I thought there would be no face detection at all!

Anyway, following Roy’s recommendations, I scaled down the input image and adjusted the parameters of the OpenCV face detection call. At the moment I transpose the image before sending it to the detection algorithm, but I suspect it would be faster to use a rotated Haar feature set (the bits that the algorithm picks out in each image to match faces). I also didn’t use Roy’s changes to use integer arithmetic rather than floating point — it turns out that the iPhone 4G has enough grunt to cope with the standard OpenCV code.

You can get the iPhone code from my github repository and try it for yourself. Note that it’s hardwired to use the front-facing camera at the moment. If you don’t have an iPhone 4 just change the AVCaptureDevice to point to the ID of the other camera and the rest of the code should still work (though possibly a little more slowly…).

Light and dark — the LEGO program

So now I had a robot base and an iPhone app that could see faces. The next step was to connect the two together using the light sensor.

LEGO provide a drag and drop programming interface for Mindstorms that lets you build up programs using blocks such as “move motor”, “wait for sensor input” and control logic of loops and if/else switches. It’s quite capable and makes simple programs relatively easy, but using variables and arithmetic can be a little cumbersome.

The main issue in getting the robot to drive was calibrating the light sensor, especially when each demo was under different lighting. After a fair amount of tweaking (some just minutes before presenting at Mobile Monday London’s demo night), the best results turned out to be when I crammed a small piece of cardboard into the hinge that held the light sensor onto the iPhone…

You can download the “.rbtx” file from my github repository, but for those who don’t have the LEGO software, the algorithm is essentially:

  1. Calibrate the sensor when pointing at the black and white squares to either side of the control square on the iPhone screen
    • The robot prompts for each reading with its display and waits for you to press the button between each sensor reading
    • The program reads the raw values from the sensor and calculates its own scaling values, as the built-in calibration routines turn on the light on the sensor — this works for reading black lines on a white sheet of paper but isn’t so good at reading the backlit screen of the iPhone…
  2. Wait for another button press to start the robot moving — so you can step back and make sure your face is in frame
  3. Read the raw value of the light sensor, convert it into a value between -90 and +90, and then steer that amount, then repeat
    • The program checks that the light sensor value is within a reasonable range before steering, otherwise the robot tends to go round in tight circles and you have to run round it like a lunatic trying to get your face in the camera frame!
  4. When the distance sensor picks up something closer than 6 inches, stop, play a sound and show a beating heart on the display (“I’ve found you!”)
  5. Start moving again when the button is pressed

To give you an idea of what this looks like in the Mindstorms NXT software, here’s a picture of the program!

Prizes

Thanks to Monotype for the beautiful poster of Gill Sans Bold Extra Condensed. They were going to give me two, but were happy to swap one for a copy of FontExplorer Pro instead, so I can see my digital fonts presented almost as prettily. Apparently, it’s now available for Windows as well as Mac OS X.

Wednesday, 29 September 2010

Over The Air 2010

This was my third Over The Air and it more than lived up to the expectations set by the previous two. Billed as “a grass-roots mobile developer event”, Over The Air is an unmissable event on the mobile developer’s calendar — a weekend of fresh presentations from people who are at the cutting edge, mixed with an overnight hack-a-thon competition with prizes awarded in the final presentation.

This year the organisers went for a couple of keynotes (including the major coup of Tim Berners-Lee on the Sunday morning) as well as over 40 seminars on topics ranging from business oriented pitch and product workshops and DIY PR; through introductions to design & prototyping tools such as Flowella and iProcessing; all the way to detailed technical explanations and tutorials such as using Paypal’s mobile SDKs and Bryan Rieger’s excellent presentation on building mobile and desktop compatible web sites (of which more later).

I’ve put my rough notes on the presentations below, but it’s worth checking out the other presentations that were spotlighted on Slideshare and the other blog entries featured in the overtheair twitter stream.

I also entered the hack-a-thon competition and won Best Hardware Hack as well as Best use of “other features”?! for my LEGO Mindstorms robot with an iPhone brain that followed faces. I’ll be posting the code for my hack shortly…

Keynote: the art of emotional design

Aral Balkan — @aral

  • when computers made the impossible, possible, features mattered
    • …and it didn’t matter if the interface was hard
  • mobile phones are now a commodity, but we’re willing to pay extra for some things
    • “I think Apple is on to something”
  • you cannot compete on features any more:
    • when infrastructure is commoditized, the differentiating factor is User Experience
  • Le Petit Prince: “perfection is achieved … when there is nothing left to take away”
  • you need someone with the authority and responsibility to say “no” to extra features
  • “usable” = “edible”
  • we want to aim for “magical”
  • Aral tries to stay “naive” so that he can understand interfaces from the point of view of an everyday person (not a developer)
  • don’t trick the user
  • build in “delighters”
    • not required for interaction, but…
  • oslo bullet train ticket machine:
    • just a credit card slot
    • exit also has a credit card swipe
    • can get a receipt later online
    • made a difficult decision: knew that fraud rates would go up
    • but worth it for increased usage
  • dangers:
    • weakest link is what is not under your control
    • e.g. facebook pulled the plug on Feathers for Facebook (now Feathers Visage) without warning, just as the app was featured on the German and Austrian app store

DIY research workshop – informing the design process

Mark A.M. Kramer — @mamk

  • users have different issues to those in the mobile industry
  • Mark does “nomadic ethnography” — mainly based on trains :-)
  • often finds himself being a participatory observer
  • Mobile research methods
    • e.g. woman on circle line instinctively knew when network was available — put the paper down and switched to checking her mail
  • iPhone is a good ethnography tool — can take pictures secretly!
  • mobile also enables surveys in the field
  • culture is changing:
    • mobile is enabling “just in time” — e.g. “just google that”

Mark then showed us various interviews:

  • inventor of makerbot and thingiverse:
    • “share or die”
    • integrate game mechanics into whatever you’re doing
  • reactable music interface:
    • play along
    • make it fun
    • can really make instruments with accelerometer
  • feature phone user from Eastern Europe (no smart phone culture):
    • want something I can read my magazines on (comic books)
    • but want it portable
    • I’ve seen others using iPads etc.
    • social shaping of technology
  • 10 year old — what I like about my iPod touch:
    • app developers will become rich if they make something that people like
    • he likes games
    • doesn’t want to pay for things

things to think about:

  • eWaste — what about all those unused phones?
  • social isolation
  • generational differences
  • impact on children
  • designing for inclusion & accessibility

Orange Mobilise – the mobile volunteering initiative

David Simoes-Brown (Strategy Partner at 100%Open), Jogesh Limbani (Head of Open Innovation at Orange R&D UK)

  • Orange using open innovation to encourage ideas to come in to Orange
    • The Wisdom of Crowds, James Surowiecki
    • Cognitive Surplus, Clay Shirky — 100 million hours of adverts watched over one weekend in America, equivalent to the amount of time taken to create wikipedia
  • Orange want to help minutes matter
  • Tuangou (cloud clout buying) in China
    • gathering people together to negotiate a discount
  • Orange want to capture 5 minutes a day from the 3h 45m TV watching for volunteering
  • Have previously launched Orange Rock Corps — can earn a ticket to a gig by volunteering
  • 1 million people giving 5 minutes = a decade of real time
  • http://mobilevolunteering.co.uk:
    • Orange building an app (iPhone to begin with)
    • Gathering ideas
    • Promoting existing apps
  • Challenge:
    • can pick an app from suggested ideas
    • contact the author and go
    • OR submit an existing suitable app
  • Orange will launch the top three voted apps & actions in October
  • Will also launch 7 other apps & ideas as chosen by Orange rather than community
  • Voting criteria:
    • You’re on the bus with five minutes before the stop — what can you do?
    • Popular & used often
    • Has a clear social or environmental benefit
    • Practical & attractive to a sponsor charity — needs a backup
    • Looking for a balance of actions:
    • research | lookout | reach out | skill set
    • Also looking for a balance of purposes
  • suggest to look at latest & most active rather than top scoring

Rethinking the Mobile Web – a pragmatic look at creating an accessible and inclusive mobile experience

Bryan Rieger @bryanrieger

Bryan gave a fantastic presentation about how to make workable web sites for mobile and desktop use. There’s also a whole load of discussion on slideshare below the presentation about different approaches. The how-to bits of the presentation start from about slide 104, but there’s a load of stats up front to convince you that having a mobile-friendly site is worth it, and that mobile-friendly does not just mean iPhone…

  • iPhone in US only covers about 6% of the population and only 4% of 5 major EU countries
  • Huge impact but not huge penetration (at least of people, but huge percentage of traffic…)
  • nice comparison of older (desktop) Macs vs recent mobile phones
  • feature phones of today are the smartphones of yesterday
  • the old devices don’t suck
  • gs.statcounter.com stats from 02/2010
    • lots of Opera Mini in Nigeria
    • lots of BlackBerry in Australia
    • in Feb. the UC proxy browser ate Nokia’s Chinese market share
    • Nokia bought Novarra in March 2010…
  • going forward, main browsers in use are WebKit and Opera Mini
    • coming up later are Mozilla Fennec (will be Firefox Mobile), Ovi & UC proxy browsers
  • why is it ok to say “this site works best on Safari 4”, when it wasn’t ok to say “this site works best with IE 4…”?
  • design “mobile first”
    • @media queries often fail — so taking a desktop site + media queries results in a desktop site on mobile
    • mobile site + @media queries => desktop site
    • not a new idea — just progressive enhancement!
  • use screen and handheld types for first stylesheet
  • book recommendation: DOM Scripting by @adactio (if jQuery not available…)
  • http://tinysrc.net will resize and compress image for you
  • infographics may need reinterpretation for smaller screens, rather than just resizing
  • a bit of a dream: Bryan would like to extend the <img> tag to have multiple images for different screen sizes
  • Q&A: Opera has device stats available from http://www.opera.com/smw/

Viral Survival Kit: Cloud Computing for Highly Scalable Apps

Matt Wood, Amazon Web Services — mawood@amazon.com

A quick overview of Amazon’s cloud services. Useful for working out what you might need. I was kind of hoping for something more technical, but this is good too. Especially useful is the link to the Amazon Simple Calculator, so you can work out how much your requirements might cost.

  • Amazon started with two servers (1 db, 1 app server)
  • They refactored so that:
    • dev teams could request resources on demand
    • wouldn’t have to worry about scaling & reliability
  • AWS is a datacentre abstraction
  • can provision a server in about 20-25 seconds (though Windows servers take a little longer due to security certificate isses)
  • guardian open platform is delivered using AWS

S3 & CloudFront

  • all data is replicated to three different centres
  • scaled automatically as demand rises
  • can have a reduced redundancy service at lower cost (only 5 9s rather than 11…)
  • CloudFront provides CDN

other services

  • RDS: relational datastore — MySQL as a service
  • EBS: elastic block store
  • EMR: elastic map reduce — hadoop on demand
  • VPC: virtual private cloud — elastic resources in the cloud appear in your own network through a VPN
  • CloudWatch: monitoring, autoscaling
  • ELB: elastic load balancer

some detail

  • m1.small available for about 8¢/hour
  • m1.large has more CPU etc
  • t1.micro is even smaller, only 2¢/hour
    • tight RAM constraints (600Mb), but has automatic CPU scaling
  • can plan over longer term and get reduced price (0.07¢/hour if you pay $50 upfront)

designing for failure

  • can attach an elastic IP address to an instance
  • if server fails, can just repoint to another instance in the same datacentre
  • also deal with datacentre failures
    • four regions (East Coast, West Coast, Dublin, Singapore)
    • each region has multiple availability regions
  • RDS can enable master/slave with an API call

automation

  • can pull monitoring data into ganglia
  • monitoring can be connected to autoscaling
  • can set thresholds for setting up and killing servers
  • integrated with availability zones

security

  • can have multiple roles with fine grained access
  • provide mitigation against DDOS
  • default-deny firewall
  • see http://aws.amazon.com/security for details
  • data stays within regions

Q & A

What Would Picasso Do — a panel of art and technology

Another brilliant Bryan Rieger production: find six people with interesting ideas and ask them to inspire the audience by talking about what they liked. It worked…

Tom has been thinking about…

  • Joseph Beuys: “everyone is an artist”
  • Music industry history is minuscule compared to whole history of art
    • we focus on near-sighted things
  • Art doesn’t seem to scale
    • engineering efforts can take 100Ks of people
    • what would art equivalents look like
  • Constraints feed creativity

mills is enabling creativity…

  • granimator: enabling the public to create screen backgrounds
    • invite artists to contribute assets
  • making creativity accessible

matthias has been playing with plasticine…

  • dali from 1950s: gem-decorated heart with pumping action
  • we work on the surface with the gems at the moment
  • need to work deeper
  • plasticine interfaces — when they’re rough, people want to grab them and play
  • Sony has a big blue design book
    • explored wireless headsets in 80s
    • worked in the home, but in shared spaces you would get someone else’s music
    • dismissed at the time, but might now be treated as an interesting feature

Jason has been looking at apps…

  • UK is much more advanced than US in area of IPTV & set-top boxes

Filip has been thinking about art…

  • linear vs dynamic
  • goals vs accidents
  • framing / positioning
  • interactive vs reactive
  • sense of ownership

Q & A

  • Are creative apps on iPad/iPhone merely frivolous?
    • e.g. Brushes, Magic Piano
    • TH: 11-point multitouch is not frivolous
    • JF: a device to interact with while watching TV
    • TH: Jeff Minter: apps for Amiga
    • no intermediation — straight onto the screen
  • Are there any useful consequences of art-related apps? Can they be applied to productivity-related apps?
    • TH: epic win: a todo list manager that takes game mechanics and gives you experience points for completing todo items…

tweetalondoncab

This wasn’t a presentation on the main schedule, just the cabbie who started @tweetalondoncab talking about where he’s got to and where he wants to go.

  • gone from 2 drivers to 120!
  • however, can’t cope with more than 3-4 jobs at a time

process

  1. customer DMs to @tweetalondoncab
    • may have to come back to them and get further details (inc phone number)
  2. the chair account (protected account) advertises the job (removing specifics) with phone number of person in chair
  3. drivers get a text alert when tweet sent from chair account
  4. driver responds with a phone call and gets job allocated
    • receives phone number and address of pickup
  5. chair account sends out that job has been allocated
  6. chair account informs customer of their driver’s details
  7. driver contacts customer by phone when they’re ready

also have @cabup protected account that provides shared information updates on demand & traffic — added value for drivers who join in

future ideas

  • would like to include cab sharing
  • still want to advertise to all drivers as it’s their decision to take it
    • first come first served at the moment
    • but would like to add in how long the driver would take to get there
    • especially for higher value jobs (e.g. Victoria -> Gatwick)
  • want to attract people who would normally order a private minicab

constraints & ideas

  • dealing with 3-4 jobs coming in at once
    • if can see all cabs on map, would be able to tell customers that can’t help within 30 mins
    • driver claiming job is pinch point
    • have a link to a page with how many minutes to be there
    • claim the job automatically
    • could have a form to submit info, so jobs are better structured

Keynote: Sir Tim Berners-Lee

I didn’t get to take many notes during Sir Tim’s keynote as I was busy finishing my hack (of which more in the next post). He was an inspiring speaker in his own way — you could see the passion for his subject shining through.

His main points were about ensuring things are referable, and that the reference can (and should) be done with URLs.

  • if an app doesn’t have a URL then it can’t be linked
  • it doesn’t get the interestingness — people can’t use it for other things