Showing posts with label arduino. Show all posts
Showing posts with label arduino. Show all posts

Thursday, 28 November 2013

Handheld Conference 2013: port80 fringe event

Last year’s Handheld Conference was a great event, with several of the sessions winning awards as the best talks of the year.

This year, it’s got bigger and even comes with a fringe event the night before, in collaboration with Port80 events.

I’ll be blogging the main event sessions later, but here’s my notes from the Handheld mini/port80 event.

The ethics of making software

Graham Lee @secboffin

  • XML is like violence: if it doesn’t get you what you want, you’re not using enough of it
  • EULA: “we make no warranty that on this software” => this sh*t doesn’t work — and we’re not going to tell you until after you’ve bought it
  • we’re in an industry that wants to be grown-up — we get to choose the moral direction as well as the technical direction
  • we do have responsibility — raising awareness is the first step

Modifying Treasure Island

Alyson Fielding @alysonf

  • what happens if you put technology into a physical book (without a screen)?
  • making an enchanted object
  • lilypad arduino works well with books: it uses needle & conductive thread rather than wire & solder so it’s gentler on the book
  • “the library of lost books”
    • each rescued book is being sent to a different artist to be given a new lease of life
  • wanted to hide the technology so it feels like magic
  • triggering audio in a gesture controlled physical book
  • what happens if you get a book talking to a phone
    • hide arduino in the spine
    • zigbee to talk to phone (via Redpark cable)
    • battery to power it (mainly zigbee…)
    • accelerometer to detect position
  • initial story: book speaks what position it’s in
    • can also tweet…
  • further stories: recognising more complex 3D gestures, e.g. a hug
  • connected with a story engine
    • telling a story based on user interaction
    • crucially: also respond when the user does something different

Why don’t things just work any more?

Barry Scott @bazscott

  • fixing things:
    • easy bug reporting — value the people who report bugs
    • prioritise fixes
  • crippled behaviour:
    • flash, linkjacking, doorslams
    • watch user behaviour — and listen to them
  • bastards:
    • sample newspaper website: “the only way I can monetise the site is by getting people to download the app, so I don’t care about showing the content”…
    • shortsighted, brand will wither, people won’t come back
    • advertising cigarettes & gambling to kids (or any kind of advertising to 3 year olds…)
  • times higher education survey on link rot
    • 99% of web pages change in a year
    • 70% of links from 12 years of Harvard Legal are broken

Nodecopter

Andrew Nesbitt @teabass

  • invented by Felix Geisendörfer in 2012
  • Parrot AR Drone 2.0
  • runs busybox linux
  • node.js module: npm install ar-drone
  • watch out for going out of range
    • the drone will just continue going…
  • andrew created a node module to pick up serial input from xbox controller — used to control AR drone
  • then picked up front-facing camera and displayed on a web page
  • running both scripts at the same time allows you a first-person control of the drone
  • make it dance to dubstep:
    • using dance.js to pick up drops in an mp3 from the HTML5 audio API
  • face detection from front-facing video
    • using OpenCV on video from the video in the browser
  • lots of other examples on nodecopter.com
  • substack contributes a lot of stuff
    • including virus-copter
    • scans wifi for other drones — ssh’s to them
  • if you attach a phone you can theoretically control the drone from anywhere in the world
    • but you come under the same laws as cruise missiles…
  • voxel-drone is a simulated drone inside voxel, a minecraft clone in javascript & webgl
    • but it doesn’t have momentum…
    • voxel-drone stops instantly
    • the real drone takes about 2 metres to stop from full speed
  • why?
    • teaching programming via engaging javascript
    • did a coderdojo for 12-15 year old kids
    • chasing parents around, ballet moves
    • making controllers from tin foil and makeymakeys
  • upcoming events: probably one every month in the UK in the new year

Saturday, 28 September 2013

Over The Air 2013

Building an Internet of Things for Everyone

Alexandra Deschamps-Sonsino https://twitter.com/iotwatch

  • get the work you want
  • if you get work just for money, you’ll get more of it
  • won’t get you the work you want…

good night lamp

  • originally in 2007 people were unsure about it
    • it uses Wi-Fi: isn’t that a health risk?
  • restarted in 2010 — no longer a problem

IoT is now accessible

  • hardware & software is easily available, documented + supported with lots of forums
  • lots of hackspaces around to make thing
  • idea to making something that looks pretty and works: “I give you 2 weeks — and 1 of those is waiting for things to be delivered”
  • still hard to get something to production scaling, but getting support for that:
    • Fritzing, DesignSpark, etc

IoT vs big business

  • wanting to bridge concerns of small business and large corporations
  • both want the same reach of
  • standards & security
  • british gas https://twitter.com/connectinghomes & #connectinghomes 26/09/13
    • 25 startups in energy sector
    • bobo the polar bear: changes colour depending on how you manage your home energy
  • need to get corporates who are interested to actually meet the people who are doing stuff

Telling the right story

  • journalists will make stuff up…
  • make sure you tell a good story
  • e.g. onesie for a child with sensors
    • great for children with health conditions
    • but could be creepy for parents
  • you have to be completely clear about why a customer would want to buy what you’ve made
    • create a press release and a dropbox full of well-lit, decent pictures

Investment

  • investors < 60 years old will probably have never invested in anything other than the web…
  • they need to see more hardware things
  • new https://twitter.com/bg_ventures incubator

Retail is interested…

Building Complex Web Apps with Dart & Web Components

Chris Buckett https://twitter.com/chrisbuckett

  • V8 is as fast as they can get for javascript
  • dart is faster for some benchmarks already

dart language

  • optionally typed
    • when Dart runs, it pays no attention to the type information
    • use types for annotations
    • used for communication and validation
  • classes are also interfaces…
    • like duck typing
  • has privacy: just prefix with underscore
    • also has package shared equivalent
  • concurrency & async support
    • works with web workers in the browser
  • supports libraries by default
    • a single repository of libraries
  • built-in support for DOM
  • DartDoc is markdown based :-)
  • Dart VM not in any browser other than Dartium (special Chrome build)
    • but has been designed to compile to javascript
  • the language is still a beta, some restrictions
    • e.g. can’t modify variables on the fly

web components

  • Polymer is Google’s implementation of web components
  • polymer.dart is the dart version
  • polymer elements consist of a template & a script
  • elements get created and added to the shadow DOM
  • polymer elements have double-barrelled names
    • first part is namespace
    • hyphen is mandatory

Designing for diversity

or How to stop worrying and deal with Android fragmentation

Stephanie Rieger

a bit of history

  • port of leith, edinburgh: cruise ships stop
    • crew come out and use the internet
    • mostly filipino (25% of crew are filipino)
  • massive change in devices in a short time:
    • 2010: massive laptops
    • 2011: netbooks
    • 2012/13: tablets/phablets
  • and this is a change for people who send most of their income home
  • mobile phones were getting smaller, but needed large teams
  • started to change in 2005:
    • mediatek started offering reference design chipsets
  • went from giant companies to tiny ones
  • lots competed on price, but others went with regional specializations
  • by 2007, these had captured c.10% of global device sales
  • started experimenting wildly
    • e.g. 4 SIM phone with a project
    • could try out with tiny production runs
  • then Android changed things again in 2008
  • these companies could now switch from low-end feature phones to mid & high range
    • e.g. Lumia lookalike, running skinned Android, sells for £56!
  • other chipset vendors have emulated MediaTek reference designs
    • e.g. Rockchip, even Qualcomm
  • all the components are now tuned to work with Android by default

hardware diversity

  • variations at different levels
  • low-end: all off-the-shelf — around £56
  • slightly more customized: nice case, slightly customised Android, off-the-shelf chip
    • e.g. Xiaomi Hongmi
    • dual SIM, gorilla glass, highly customised Android (MIUI)
    • just £83
    • sold out first batch of 100,000 in 90 seconds…
  • we’re used to having customisation all the way down
  • but even larger companies are experimenting
  • Japan - KDDI Infobar: highly customised design & Android
    • fashion product
  • Oppo: Bluetooth LE camera trigger, touch panel on rear of phone
  • Yota e-paper rear display: can retain image for weeks without power
    • also has a capacitative touch strip
  • India: Aakash 2 is now c.£30
    • govt aiming to subsidise & distribute to 20 million students
  • it’s increasingly likely that devices will be made by “other manufacturers”

platform diversity

  • Android lets you change the keyboard
  • as a developer you can’t rely on the user having a standard keyboard
  • also lets you change the default app for intents
  • Paranoid Android lets you change the resolution of the device at the app level
    • as apps adjust to resolution & screen size, this lets you choose the way the app behaves on your device
  • MIUI is particular popular as it’s actively crowd-sourced
    • also because there are thousands of community build themes
    • including metaphor-based themes with virtual navigation
  • Oppo now lets you choose your ROM when you order your phone: Oppo’s Color or CyanogenMod
  • Cyanogen aiming to create a one-click installer
  • manufacturers are supposed to include the default Holo theme
    • but some small manufacturers don’t
  • manufacturers will also select OS versions and not update for a while
    • we will always see multiple versions live at any time
  • also multiple app stores especially in different countries
  • unofficial app store booths (e.g. in a Bangkok mall)
    • owner will recommend and install apps for you

how do we design for this?

  • design strategies will apply to Android IoT devices as well
  • basic principles:
    1. be flexible
    2. provide assets for all
    3. optimize layouts
    4. enable diverse experiences
  • can use weighting to scale cleverly
  • use asset grouping to enable variation
  • google publish screen density stats every 2-4 weeks
  • as screen gets bigger, letting the UI stretch doesn’t work so well
  • very similar to responsive design
  • set breakpoints in your layout where you change layout
  • want to avoid have three versions that you swap
  • instead aim for a continuum where content adjusts itself
  • Evernote is a good example
    • list view switches to grid view on larger screens
  • see also Google IO & Wordpress apps
    • Wordpress portrait tablet has list and detail side by side
  • lots of qualifiers
    • touch screen type: capacitative/trackball/finger
    • UI mode: car/desk/television/appliance!
  • not necessary to account for all combinations!
  • enabling intents allows future-friendly behaviour
    • don’t have to worry about new social networks in different countries
  • official android devices reached 1 billion last week
    • doesn’t include non-Google devices
    • probably doesn’t include cars, etc
    • doesn’t include experimental Android IoT devices

“diversity is not a bug, it’s a feature”

Arduino: Robots, WiFi and extreme hacks

David Cuartielles https://twitter.com/dcuartielles

  • based in Malmö Uni
  • all got into Arduino because wanted something for students
  • “as technology grows in our hearts, it gets smaller in size”
  • David’s background: worked at Infineon designing chips, then went to teach technology to arts students in Sweden
  • had six months to teach people to program
    • had to relearn how to learn
  • arduino not just boards:
    • boards
    • dev tools
    • documentation & community
  • not teaching about transistors: teaching how to make a light blink
  • arduino ide doesn’t have lots of features
    • but gives you feeling that you’re in a slimmed down version of Eclipse
  • short run manufacturing (c.10K) so can always change the design
  • hacked a full-sized car to be remote controlled
    • will see self-driving car on youtube soon…
  • in mexico city only room for 30% of students in university
  • instead they have arts centres for students who don’t get it
  • David taught electronics there:
    • sorted out electronics sourced from mexico as components not available
    • vimeo: ohoh robochock
    • vimeo: ohoh competition
      • trying to remote control their robotos
      • all interfering with same channel, but they don’t know!
  • arduino robot
    • designed with help from kids from mexico
    • 4 times winners of robocup
    • invested a lot of time in the AC/DC converter
    • so that performance is consistent across battery
  • educational experiment in Spain
    • 24 schools, over 500 kids (15 year-olds)
    • every week had three sessions: introduction, hacking, sharing
    • each week was thematic: e.g. sports
    • 25 kids, 5 projects: olympic games on Friday
    • 24 different experiments, but kids didn’t do everything
    • instead saw what other kids were doing
    • all details http://cuartielles.com/verkstad/en
  • hacked Sony SmartWatch to run Arduino
    • all published on github: underverg?
    • only thing couldn’t get hold of was bluetooth chip
  • natural fuse
    • plant lives or dies based on your carbon footprint
    • if it dies your electricity stops
    • can switch between selfish (grab from neighbours) and selfless (offer spare to neighbours) modes
  • fukushima
    • pachube/cosm was used for people to map the radiation themselves
    • using arduinos with geiger counters
  • open source white goods controller
    • modular: only need four abilities
    • mosfet, relay, pwr, ??
    • added UI module to provide output
  • everything is open source
    • pay me to make it: once it’s made, the work is done
    • you can pay me to maintain it

Whitespace Networks: Connect All The Things

Ben Ward https://twitter.com/crouchingbadger - http://love-hz.com

  • TV whitespace becoming available as moves from analogue to digital
  • however, will still be used for analogue radio mics etc
    • if we cock up they’ve got lots of famous people to complain!
  • weightless protocol)
    • 10 yr battery life
    • 5-10km range
    • unhelpfully called “super-wifi” in america (802.11AF)
  • needs a whitespace database…
    • being worked on right now
    • need to check every 15 minutes
    • check OFCOM for list of approved DBs
    • then check with your licensed DB
    • but you’re not reserving space, just agreeing to share
    • see also http://uk-whitespaces.spectrumbridge.com
  • neul now making a 4.5cm2 board
    • expected price $17 (at scale)
    • range: 1-8km
  • new phrase: “the fog” — like the cloud but on the ground :-)
  • open source boards
    • using software defined radio chip (lime something)
    • myriad RF
    • nuand bladeRF
    • also hackRF?
  • has some location capabilities based on triangulation
  • ideas?
    • bike theft detector using the frame as the antenna
    • oxford guerilla sensor network for flood detection

Appium: Mobile Automation Made Awesome

Jonathan Lipps https://twitter.com/jlipps

  • cross-platform solution for native & hybrid mobile automation
  • other options for ios:
    • calabash-ios
    • Frank
    • ios-driver
    • UIAutomation
    • KeepItFunctional
  • other options for android:
    • calabash-android
    • MonkeyTalk
    • Robotium
    • UiAutomator
    • selendroid
  • wanted to set some ground rules:
    • test the same app you submit to the store
      • don’t want to add additional code into the app
    • write your tests in any language & framework
    • use a standard automation API & spec
    • make it open source and foster a large community
  • appium supports:
    • ios, android & firefox os
    • real devices, simulators
    • native apps, hybrids, mobile web
  • can write one set of tests that work across multiple platforms
    • if you’re careful in how you structure your app
  • appium exposes an HTTP server than allows selenium to run
  • selenium webdriver has clients in many languages
  • and is a W3C working draft, so nearly a standard :-)
  • appium also extends webdriver protocol with additional mobile-specific behaviours
    • talking to selenium to get those changes into
  • under the hood:
    • iOS: Apple Instruments & UIAutomation
    • Android 4.2.1 and up: Google UiAutomator
    • older Android + hybrid: Selendroid
    • Firefox OS: marionette
  • written in node.js, so npm install appium and write tests in node
  • or else have a GUI runner to set flags
  • GUI also comes with an inspector
    • so you can see what’s going on at each step
    • (don’t need to be the app developer to write a test)
    • will create some initial code for you from your actions
  • find things by:
    • accessibility
    • element type
    • hiearchy xpath
    • android id
  • you can use a config dictionary for IDs/xpaths to help cope with platform/device differences
  • instruments can only run a single test at once per host machine
  • Sauce Labs have lots of devices available across the net

    • provides scaling and device selection
    • can switch to Sauce just by changing appium end point + adding credentials
    • also need to provide app: pre-upload using Sauce API, or host on a server somewhere
    • http://saucelabs.com/mobile
  • Q: can you switch between apps?

    • we could use a second app to turn on/off wifi
    • A: doesn’t work on iOS — when you jump to another app then UIAutomation loses its context and quits
  • Q: can you fake location?

Programming is terrible

Lessons from a life wasted

Tef https://twitter.com/tef

  • Watch out for The Group Project: getting together to work on a project that individuals have not made time for themselves…
  • make your code easy to replace more than easy to extend
  • people often learn more from maintenance than from building from new
  • people tend to teach in the way that they learned best
  • C, Java, C# are not a great starting point for new programmers
    • they require concepts to figure out even before you can make things happen
  • learning programming should be a side effect of doing something exciting
  • girl at MIT struggling with English grammar
    • Seymour Papert asked her to write a sentence or poetry generating programme
    • after a few hours, she exclaimed “I know what nouns are!”
  • view source
    • one of the best features of Scratch online
    • learn by seeing something you want to copy
  • computer anonymous
    • support group for everyone
  • for a starter, introduce constraints if they’re not already there

Sunday, 28 October 2012

Droidcon London 2012, Day Two

The second day of Droidcon London — and they kept us going from 9am until 7pm with a full programme! As with the previous day, the keynotes were focussed on how Android is being used in non-phone devices — extending the rule of configurable software over fixed hardware.

I’d really like to add the slides to these notes — the Flurry presentation especially has loads of useful information that I didn’t catch. If any of the authors read this — please get in touch via twitter or leave a comment and I’ll add a link!

Future of Android - Vendscreen

Paresh Patel

http://www.vendscreen.com/

  • touchscreen device that fits as an extension on any vending machine
  • accepts credit cards via swipe + tap to pay
    • chip & pin coming later
  • network connected — makes the machine smarter
  • can cluster machines
    • e.g. lots of machines in a hotel
    • customers can get inventory from their phone
    • energy management — can turn off some
  • example: sold small artwork pieces in a vending machine
    • people weren’t surprised
    • prices didn’t have to be low
    • people paid up to $99 by swiping their card
  • right now running Android 2.3.4
  • minor modifications:
    • got rid of desktop
    • added a recovery screen

Future of Android - Parrot Asteroid

Frederic Albinet

http://www.parrot.com/uk/products/hands-free-car-kits/parrot-asteroid

  • parrot asteroid Android car radio
  • classic & mini using Android 1.5(!!?!)
  • tablet and smart devices using Android 2.3 (still old…)
  • does voice recognition search for contacts and music
    • music searches across connected device and also the internet radio stations and other sources
  • parrot app market
    • will be live from november
    • can browse from PC or from device
  • looking to extend to dynamic network between vehicles
    • though this would depend on other cars having devices with the same protocol…

ADzero phone launch

http://www.justadzero.com/

  • world’s first bamboo smartphone
  • quad core device
  • full HD screen
  • bamboo feels really good to hold
  • flash innovation: circle around the camera — works much better for macro

building songkick

Akshay Dashrath and Jamie McDonald, Novoda

  • took 2 devs 3 months to build initial version
  • agile process, two week iterations
  • tools used:
    • pivotal tracker
    • github
    • maven
  • third party libs:
    • ActionBarSherlock
    • ViewPagerIndicator
    • Novoda ImageLoader & Novocation
    • NovodaTime — dealing with Joda Time problems

user experience design

  • spent a lot of time finding pain points in initial install process using paper prototypes
  • found out that putting buttons in the action bar were not found by users
    • mocked up on an actual device to see how it felt
  • can set a custom notification light colour (works well with branding!)
  • styled login web view to look like rest of app
  • first launch experience:
    • had a scan screen with an OpenGL animation to keep the user entertained while the initial artist information is found
  • used external apps that expose content providers
    • google music — got artist names using a projection and flexjson to push it to songkick server
    • last.fm

caching & location

  • used novoda’s novocation location library
  • used Jackson mixture of streaming & tree model to avoid memory issues
  • data from web calls loaded into database, then database loaded into views with cursor loaders
  • detachable result receiver — google IO 2011 app
    • lets you deal with rotating views and re-attaching the new activity to the old cursor loader
  • all visited content cached using Reto Meier’s Big Cookie approach (see Making Good Apps Great)
    • “Just Added” concerts sync in the background
  • if offline, then shows a transparent banner at the bottom of the page
    • send out a sticky broadcast if an online query fails
    • broadcast cleared if the app gets a good response
  • Big Cookie caching can build up too much data
    • data removed on a daily basis by removing old data — e.g. past concerts, etc

testing

  • manual QA for most stuff
  • automated tests were more for stress testing
  • also did observational user testing (one-way mirror room)
  • put UI options in a debug menu so could easily do A/B testing
  • build machine runs instrumentation tests on however many devices are plugged into it
  • used Eclipse Memory Analysis Tool to check memory allocation
    • used to fix large back stack activity
    • enabled StrictMode to deal with issues with Google Analytics & Joda Time
    • Joda Time used the UI thread for DST settings (can be fixed — see Stack Overflow)
  • got featured in Play
    • installs went 400 / day -> 20,000 / day!

soundcloud audio in Android

Jan Berkel and Jon Schmidt, SoundCloud

playback

  • Java MediaPlayer talks to C layer MediaPlayerService
    • check out the C source code to see what’s going on
  • underneath this uses PacketVideo OpenCore up to 2.2, then Google Stagefright
    • shouldn’t have to care about underlying implementation but if you’re doing something complicated you do…
    • OpenCore
      • mature, stable but limited
      • seekTo doesn’t work in streams
    • Stagefright (default from 2.2 and beyond)
      • fixes seeking
      • but not available in all devices…
  • when launched shortly after 2.3 released decided to support 2.1+ so that could cover 75-80% of devices
  • to find out which mediaplayer, tried to read /system/build.prop
  • however, some phones had both frameworks!
    • one for streaming and one for encoding…
    • playing locally would behave differently than streaming from a server
  • so to actually find out, connect the MediaPlayer to a local socket and read the user agent on the other end…
  • built a StreamProxy local server
    • could cache and fetch chunks from CDN
    • MediaPlayer then talks to proxy
    • inspired by NPR android app
    • but still no control over buffering (may want to alter it depending on network conditions)
    • different versions of Android behave differently
      • ICS has a huge buffer so takes ages before it starts playing…
  • bundled Android HttpClient is broken (it’s an old snapshot, not a proper release)
    • have to catch NPE from execute!
    • recommended to use standard Java URLConnection
    • bundled HttpClient has now been deprecated

recording

  • live encoding options on earlier Android versions — just AMR AB
    • only good for voice
    • narrow range, low quality — sounds like a phone call
  • instead recorded in PCM and used 3rd party lib to encode it before uploading
  • chose ogg vorbis
    • good for licenses
    • java port is slow (and incomplete)
    • would take 4x length of audio to encode!!
  • from 2.3.3 Android introduced AAC encoding
  • new requirements involved getting at the actual audio data — simple editing, resuming record
  • had to write own native layer for codecs and audio processing (Java too slow)
    • used C-based Vorbis Encoder & Decoder with a thin wrapper
    • also added a native amplitude analyzer
  • tried to avoid sending data back and forth too often
  • but… now had to deal with CPU flavours
    • armv5 on older devices has no floating point support
    • have to build native pieces for various architectures (armv7, mips, x86)
    • older devices fall back to old-style encode later style
  • Jelly Bean has new media encoding APIs
    • will be useful in the future…
  • some sony devices have a patched media framework that behaves differently…

bug detection

  • robolectric
  • bugsense crash reports
  • get a load of devices and get people to use them

The fly-in app menu for designer and developer

Cyril Mottier @cyrilmottier

  • watch out for activity back stack
    • recommended to only use fly-in menu at root level
    • but still want the back button to exit the app without going via the fly-in menu
  • libraries (all on github)
    • android-undergarment
    • slidingmenu
    • android-menudrawer
  • don’t slide the actionbar
    • you’d need a custom actionbar…
  • or create your own: need a custom view group & view
  • see “making of prixing”
  • make the slid out activity inactive
    • click on it to make it visible again
  • may need to think about right-to-left languages having right-sliding menus

Who needs thumbs? Android Instrumentation and Reverse Engineering

David Teitelbaum http://blog.apkudo.com/

I only caught the very end of this, but it looked like it could be a really useful talk — worth chasing down the slides

Android and Arduino

Fei Manheche, Robobo

  • 3 steps:
    1. build basic circuit & test it from PC (use serial monitor via direct connection or Bluetooth)
    2. build basic arduino software to set it up to be controlled from Android
    3. build Android app to talk to Arduino
  • bluetooth modules available for £6-10
  • use amarino library to simplify bluetooth between android and arduino
    • can also use amarino app to test basic bluetooth connection
  • don’t send too much data to the arduino at once (unless you write buffering serial code on the arduino…)

Memory Analyzer: avoiding memory leaks

Felipe Ferraz, CESAR

  • each process on Android has its own Dalvik VM
  • the Zygote process is forked for each app
    • it already has common libraries mapped into it, so they’re shared as read-only between all apps
  • use adb to make a heap dump (kill -10 <pid>)
    • or use Eclipse…
  • useful to create multiple heap snapshots to tell story of memory leak
  • http://www.eclipse.org/mat/
  • make sure to null Callables inside Images

Using Ubuntu to develop cloud-connected android apps

Victor Palau, Ubuntu

  • juju: https://juju.ubuntu.com/
  • orchestrates groups of servers deployed to cloud systems
  • can deploy a local instance or to Amazon ECS (or any other OpenStack compatible service)
  • local deployment uses zookeeper to set up containers on a single machine

Mobile Analytics - taking your Android app to the next level

Simon Podd, Director of Sales, Flurry EMEA

  • according to EMF there are 2Bn “affluent adults” in the world
  • 17% of time spent in Android apps is in Europe
  • time spent in apps is increasing month by month (94mins/day in Dec 2011)
  • social networking category is growing fast (equal to games in Q1 2012)
  • Flurry tracking 220K apps across 660m devices
  • iPad makes up 88% of top 3 tablet sessions
  • of the top 20 Android devices by worldwide sessions (May 2012), the top 3 are:
    1. Galaxy SII
    2. Galaxy Ace
    3. Moto Defy
  • worldwide 2011 app revenue (iOS & Android):
    • 52% in-app purchases
    • 24% mobile advertising
    • 25% app sales
  • advertising revenue (from Flurry’s ad slots):
    • iOS $6-10 eCPM
    • Android $20-30 eCPM

gaming category stats

  • ages 13-34 spend most time in apps
    • 18-24 & 25-34 about even
    • fairly even gender split
  • more money spent by 25-34yo men (29%)
  • average transaction sizes fairly constant across ages, and higher than you might think:
    • M: $15.60
    • F: $11.90
  • customers download on average 50-85 apps during a device lifetime
  • but they only use 5-10 apps a day
  • there’s an app discovery issue on the device

flurry tracking

  • can use ranges for event parameters…

Applying lean principles to enterprise mobile development

Dave Slocombe @daveslocombe — Head of Mobile Channel, lastminute.com

  • product scorecards
    • 5 or 6 key goals for the year
    • see Marty Cagan, SVG
  • keep time to release short
    • don’t miss the opportunity to innovate
  • avoid big bang releases
  • essentials: co-location & cross-functional

generating and managing ideas

  • ideas should come from all sides of the business
  • need to have a massive bucket of ideas
  • make them visible so you can choose amongst them
    • great for managing HiPPos (highest paid persons)
    • they can see that their idea is on the board
  • doesn’t mean that you have to work on them!
  • prioritise ideas
    • use the product scorecard

selecting ideas for development

  • UX team does customer insights
    • qualitative: what problems are we solving? is there a market?
    • quantitative: talking to data analysts
    • looking for strong signals
  • product owner reviews customer insights
  • UX team create designs in iterations, increasing fidelity as they go
    • want to be able to ditch bad ideas before spending too much time on them
    • try guerilla testing: take it to someone in a coffee shop and ask them what they think
    • get marketing and devs involved as well
  • get UX ideas out without using developer time
    • use axure or similar
  • have an internal site of proposed designs
    • available to exec team
  • play back early stage designs to other teams, like finance and supply
    • surface problems and feedback early
  • if ideas are generated, they can go back onto the ideas board (don’t deal with them right now)

development processes

  • retrospectives
    • done every two weeks
    • if you leave it longer, the issues get bigger and harder to solve
    • more frequent = smaller, easier to fix issues
    • e.g. found that they needed a “design issues” wall
      • edge cases found missing by the designer, not captured
      • introduced “creative coding” — designer + developer pairing, making a first pass of the UI
      • brings designers into what’s possible on mobile
      • helps devs understand value of brand & aims of user experience
  • Dave was originally a skeptic of pairing, but converted:
    • sharing knowledge
    • repeatability, consistency
    • drives out “hero developer” mentality

testing & releasing

  • “release process is the metronome that drives progress”
  • continuous deployment
    • every check-in should be deployable
    • repeatable consistent environments
    • currently 12mins to deploy to production
  • devices are tiered for testing:
    1. automated tests, max experience, manual test
    2. automated tests, optimum, limited manual
    3. observe trending, monthly testing, graceful fallback
  • just pushed iOS 3 down a level
  • looking at webdriver to generate PDFs for visual check

tying it together

  • showcase every two weeks
    • include other departments
    • no roadmap items, just value added in the last two weeks
  • focus on what your customers say, not what the industry says is cool
    • apps vs web — choose from your own analytics
    • e.g. for travel, 3x more likely to book on web
  • stats:
    • seen 10% month on month growth in Android, compared to iOS
  • ensure product always gives tech team 20% tech debt time

Replacing the Android emulator

Daniel Fages, Genymobile

http://androvm.org/

  • built on top of android-x86
  • has an emulated WiredSSID wi-fi connection
  • can use OpenGL 2.0 using hardware
    • works really well - can emulate Angry Birds
  • just added injecting sensors from attached Android device (accelerometer, etc)
  • currently working on management tool and other features
  • looking for feedback on next features
    • network
  • also can install VM on other people’s machines without having to worry about SDK
  • will be working to integrate with Jenkins
    • could be great for creating a snapshot when something goes wrong
  • not working:
    • multitouch
    • NFC, Bluetooth
    • GSM pieces: SMS & voice

Developing accessible apps for Android

Gary Readfern-Grey, RNIB

  • many people are relying on apps as the only way to do crucial things in life
  • talkback comes with Jelly Bean
  • problem:
    • icon-based buttons don’t have proper audio labels (“icon 39”, “icon 19”) so can’t find what is on the screen
    • watch out for “jump back button button
  • accessibility came in on Donut 1.6
    • relied on physical keyboard and trackball
    • touching the screen behaved as normal and gave no feedback
  • Talkback and Eyes-free-keyboard added more recently
    • eyes-free added in Gingerbread
  • ICS brought in explore-by-touch
  • Jelly Bean brings in gestures:
    • moving focus
    • back, home, recent apps
    • notification shade
  • WebView is harder
    • Jelly Bean & ICS have an additional “allow web accessibility” checkbox

testing your app

  • download talkback from google play
    • Jelly Bean has it installed (at least on Nexus 7)
    • settings / accessibility / turn on Talkback
  • check that views are focusable and have content descriptions
  • custom views need hover events

documentation

  • Google I/O 2012 making android apps accessible on youtube
  • developer.android.com: making applications accessible
  • android 4.1 accessibility APIs

top things to do:

  • add content descriptions to your widget
    • can do in XML layout using android:contentDescription attribute
    • or use setContentDescription
    • latest linter should check for this
  • make sure you can get to all elements of the app through a keyboard
    • will also help for Google TV
  • don’t depend on colour alone…
    • e.g. “correct the field that’s coloured red”
  • test it! try out Talkback
  • RNIB Innovation can help you
    • RNIB offer paid consultancy
    • if they’re doing something that RNIB really want and aren’t in a position to pay, then they could offer free help too
    • innovation@rnib.org.uk

Monday, 17 September 2012

Over The Air 2012

Only just noticed (in September) that I hadn’t posted my notes from Over The Air 2012 in June!

I had a fantastic time — and so did my dad and my son! We had three generations at the same tech conference :-)

I need to write a separate blog post about the LEGO hacks that people put together during and following my LEGO Mindstorms workshop, but in the meantime, here's my notes from the other sessions:

Hacking Science and Space

Ariel Waldman @arielwaldman

invisibility

  • dark energy pushing us apart
  • dark matter keeping us together…
  • invisible superpowers:
    • belt that vibrates when you face north
    • synaesthesia for those that don’t have it…
    • syneseizure — feel vision through a gimp mask!
    • particle windchime
    • what would particle collisions sound like?
    • being used as an augmentation interface in collision labs

cyborgs

  • your phone has loads of sensors, available all the time
  • quake canary
    • monitor on your phone

interstellar

  • humans are really good at pattern recognition
    • galaxy zoo
    • planet hunters
    • the work you do actually gets credited to you!
    • grean peas galaxies
    • discovered as galaxy zoo lets you drill down into data behind images
  • NASA makes stuff available, but not necessarily accessible
    • spacelog.org
    • takes PDFs of transcripts and makes them come to life

science hack day

  • weekend hack day
    • isodrag: a typeface where all the letters have the same wind drag
    • DNAckery: cocktail of extracted Strawberry DNA…
    • arm alarm: won’t shut off until your pulse is angry
    • near death lamp: lights up when an asteroid gets close to the Earth

Open Web Device

Francisco Jordan @mepartoconmigo, O2 Labs

Slides available

  • still lots more people with feature phones than smart phones
    • 4 billion feature phones will be sold between 2011 & 2015
  • mainly because they can’t afford a smart phone
  • especially in Latin America, where Telefonica is trying to grow
  • want to provide a phone for $60-70!
  • Open Web Device - based on Boot 2 Gecko
  • plan to launch in Brazil at beginning of next year
  • Also partnering with Qualcomm to provide the chipset
  • still haven’t decided the OEM(s) who will be manufacturing
  • all open source: http://wiki.mozilla.org/B2G
  • can build your own ROM based on Android 3.0 or 4.0 kernel/driver backends
  • can also build B2G for desktop
  • Gaia is Mozilla’s front-end for B2G (also open source)
  • don’t have to use Gaia — B2G doesn’t even have to look like a phone
  • the keyboard itself is an application
    • you can replace the keyboard with another web app!
  • most new APIs in B2G are also finding their way into Firefox for desktop
    • just download Firefox nightly to see what’s available
  • apps are just webapps in a directory with a manifest.webapp JSON file
    • can use appcache to store stuff locally as well
  • using Sumon as a demo webapp
    • runs about 3x faster on B2G than on iOS!
  • Marketplace: http://marketplace.mozilla.org
    • open for developers, but not yet for users
  • or install from web: navigator.mozApps.install(manifesturl);
    • install an app from directly a web page

Anyone Can Code an Embedded Controller

Nicholas Herriot @nicholasherriot

Example device: connected printer — text questions to it and it will print them out!

  • Vodafone trying to bring connectivity to embedded controllers
  • Arduino and other microcontrollers exploding since 2005
  • mbed (http://mbed.org/) similar to Arduino, but started by ARM
    • 96MHz
    • ARM Cortex M3
    • can run USB host and I2C slave
  • online compiler & tool chain - works cross platform
  • easy to install & run code:
    • runs as a USB mass storage device
    • just copy code across and press restart button
  • can export from mbed online IDE to other toolchains:
    • CodeRed: eclipse & gcc based
    • others
  • wanted to set up a platform for microcontrollers
  • online IDE has a built-in SVN repository per project
  • built-in libraries has lots of common stuff
  • can extend with downloadable libraries (search available through online IDE)
  • Vodafone has an M2M network - GDSB
    • used by Kindle, TomTom
    • SIMs don’t expire, don’t need to top up
  • trying to open GDSB to developers…

You do know it is a phone, don’t you? (Adding voice to your mobile apps)

Tim Panton @Steely_Glint, Tropo

Tropo API

  • SaaS for server-side phone handling
    • Voice (PSTN, VoIP/SIP, Skype, iNum)
    • SMS
    • Other services via HTTP or XMPP
    • Multi-lingual (with multiple voices in each language)
  • SaaS provided by Voxeo
  • Web API is JSON/javascript based
  • also scripting APIs for Python, Ruby, etc
  • example uses:
    • making calls without sharing phone numbers (e.g. speaking to taxi driver)
  • scripting vs web api
    • scripting runs on Tropo servers and has no access to external data
    • web api runs on your servers - can access your data
  • also a REST API to start outgoing calls and other control & management services

Phono

  • jQuery plugin to make phone calls from the browser
  • open source client
  • picks up microphone from computer
  • can use server-side voice recognition…
  • can also pick up messaging from the tropo service
  • requires a back-end (but same API for all)
    • Flash
    • Java applet - takes much longer to load
    • Panda (Flash with echo cancellation)
    • WebRTC - native in Chrome Canary
    • PhoneGap/Cordova plugin
    • iPad/iPhone actually works better than most laptops
    • pot luck on Android < 3.2
    • much better on Android >= 3.2
    • early version of native iOS (available in github/phono/phonosdk)
  • can run both Tropo & Phono from a car battery
    • has been done at Burning Man

Development costs

  • in the US can make free calls
  • outside the US, need to ping Tropo for permission
  • they will often let you run a demo server with small number of minutes for no money

Mobile Websites Can Have Nice Fonts Too…

Laura Kalbag @laurakalbag, front-end designer

slides available here

  • typefaces can evoke emotional responses
    • not just in typographers!
  • iOS app: Fonts by AppEngines — shows you all the fonts available on your device
  • embed them on mobile using @font-face in CSS, just like on desktop browsers
    • works on opera mobile, android mobile >4
    • doesn’t work on IE Mobile, Opera Mini
  • sources of fonts:
    • fontsquirrel - all free
    • fontspring - one off license per domain
    • myfonts - one off license per domain
  • but can have a high impact on performance
    • and can flicker when load, etc
  • tips for better performance:
  • hosted fonts:
    • google web fonts - loads of free ones, but not so good quality
    • typekit, fonts.com, fontdeck are better - but pay subscription costs
    • but loaded using javascript… can be laggy
  • watch out for missing fonts on mobile (e.g. no Arial on Android)
  • and fonts can render differently on different devices

choosing a good font

  • heineman: designed for people with dyslexia
  • want to make something that’s really inviting to read, but then just sit back and actually read it easily
  • what makes a typeface relevant?
    • context of content & features of typeface
  • old style or humanist serif: based on early printing presses
  • transitional serif: high contrast, sharp
  • modern serif: modern classic, magazines, high class sophistication
  • egyptian/slab serif: marketing, shouting, very bold
  • humanist sans: clean & easy to read
  • transitional sans: utilitarian, clinical, swiss
  • geometric sans: clean, slick, structural, slightly childlike
  • script: lots of variety, generally not good for body text, better for logos or headers
  • novelty or themed: lack any subtlety, cheesy, decoration on a poster
  • watch out for free fonts — they’ll most likely be overused
  • choose the weight carefully:
    • too heavy is hard to read
    • too light may disappear on smaller screens

laura’s taste

  • easy to read
  • attention to detail
  • subtle
  • well-balanced, consistent & uniform
    • nothing jumps out too much

ePatient 101

Mark A M Kramer @mamk

  • a lot of healthcare is based on communication between the doctor and the patient
  • often doctor communication is not very effective
    • slow responses to email
    • constrained mobile devices due to privacy & security issues
  • big issues just scheduling appointments
  • quantified self — capturing and logging health information:
    • especially body monitoring
    • apps that take photos of food, confirm the food, then estimate the calories
  • Dan Appelquist: most mHealth is focused on the hospital & medical enterprise

Wednesday, 7 September 2011

iOSDev UK: Programming iOS Sensors

Alasdair Allan, Babilim Light Industries

http://programmingiphonesensors.com/

Magnetometer (it’s not a digital compass!)

  • 4th gen iPod Touch doesn’t have magnetometer
    • so no outside AR apps without markers
  • UIAccelerometer API newly deprecated for CoreMotion in iOS5
  • if you want compass heading but not location, then just start up [locationManager startUpdatingHeading]
    • you won’t get location updates warning
  • however, magnetic north varies across the world
    • there’s a big lookup table in the iPhone that can translate the magnetic heading into true north
    • so you need actual location to work this out
  • watch out for device orientation: magnetometer always reports heading pointing out of top of device
    • need to rotate according to device orientation…
  • local magnetic anomalies cause a fluctuating magnetic field — which is when it tells you to wave your device around
  • Earth’s magnetic pole is a quadrapole, not a bipole — it swaps over every now and then and the north pole goes south

Gyroscope & Accelerometer (CoreMotion)

  • iPhone 4 has more bits in its accelerometer sampler
  • combining gyroscope and accelerometer provides very accurate device attitude
  • if there’s no natural timer in your app, then you may have to use the push API
    • otherwise much easier to use pull API
  • CMMotionManager should be treated as a singleton (but API allows you to create multiples…)
  • monitoring does take a lot of CPU, so remember to stop it when you’re finished
    • device motion at 100 samples/sec uses 65% of iPhone 4 CPU
    • see “Pushing Device Motion” slide
  • you can fetch a frame of reference and then work out attitude relative to that

AR Toolkits

External accessories

Saturday, 24 October 2009

BarCampLondon7: Energy Efficiency & Usage Monitoring

Nigel Crawley

  • digital meter — LED flashes fast or slow depending on how much electricity you use
  • can pick that up with an arduino with wifi and then make available as EEML
  • EEML (eeml.org) — XML for electricity cost
    • can humm output eeml?
  • can then input into Pachube
  • can then do visualization like this: BBC spiral viz of podcast #bcl7 on Twitpic
  • lilypad arduino — can sew into clothes
    • can include a vibra-ball
  • can recognise individual devices by whole home electricity usage
    • fridge, kettle, toaster, electric oven
  • Tom Raftery — greenmonk.net
    • devices using too much electricity — an organisation will offer to replace it and tell you the savings
    • Camden, New Jersey: government offers subsidies on lower energy appliances
  • visualisations:
    • one for schools that showed a polar bear running out of iceberg
    • DisplayLink have done a blog post on energy visualisation

Gbenga Kogbe

  • the UK will run out of energy by 2014… we must save
  • comparing with your neighbours
  • mancini project — plug by plug usage
  • there was some effort in the Zigbee standard — all appliances would publish their usage to a standard hub
  • energyhive provided reduced price meters
    • research that came out showed that by the end of the trial, loads of meters were in the drawer and not used
    • several 1000 homes included in trial
  • putting information online and sharing it is much more effective than a little meter in the corner
  • in some places, there are dynamic tariffs
    • would like to tell dishwasher to wash when it’s cheap
    • not in the UK…
    • energy providers buy at realtime, but sell at flat rate
  • Dale Lane: energy costs vary between 2p and £3 a unit!!
    • it’s in their interest to get us to use it at the right times
  • base electricity is provided by nuclear power
  • peak is provided by hydro
  • DynamicDemand.co.uk: figure out national supply by checking frequency
    • brownouts caused by frequency going too low
    • looking at making fridges turn themselves off when the frequency is lower
    • if all fridges did this, then peaks would be made less
    • see also caniturniton.com
  • in California they have battery farms (since the 80s)
  • solar panels are less efficient in the heat…
    • they get powered by light, not heat
  • bike generators:
    • bikes available for free — have generators
    • when they are parked, they provide their power for the local buses