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