Skip to content

Instantly share code, notes, and snippets.

@andrewn
Created July 13, 2014 15:32
Show Gist options
  • Save andrewn/c1e36a67d3883b4fff59 to your computer and use it in GitHub Desktop.
Save andrewn/c1e36a67d3883b4fff59 to your computer and use it in GitHub Desktop.
designer
<link rel="import" href="../core-icon-button/core-icon-button.html">
<link rel="import" href="../core-toolbar/core-toolbar.html">
<link rel="import" href="../core-scroll-header-panel/core-scroll-header-panel.html">
<polymer-element name="my-element">
<template>
<style>
:host {
position: absolute;
width: 100%;
height: 100%;
box-sizing: border-box;
}
#core_scroll_header_panel {
position: absolute;
width: 100%;
height: 100%;
}
#core_toolbar {
color: rgb(241, 241, 241);
fill: rgb(241, 241, 241);
height: 10em;
background-color: rgb(66, 133, 244);
}
#section {
background: linear-gradient(rgb(214, 227, 231), rgb(173, 216, 230));
}
#core_pages {
width: 400px;
height: 400px;
border: 1px solid silver;
}
</style>
<core-header-panel mode="waterfall" id="core_scroll_header_panel">
<core-toolbar id="core_toolbar" class="tall">
<h1 id="div">Andrew Nicolaou</h1>
<div id="div1" class="indent fit bottom">
<p id="p">I'm a web developer working at BBC R&D. I'm available for freelance projects too.
To get in touch, email hello at andrewnicolaou.co.uk.</p>
<p>Find me on GitHub, Flickr, Last.fm, Pinboard, Tumblr & Twitter.</p>
</div>
</core-toolbar>
<section id="section" content>
<h1>ThingMonk 2014</h1>
<p>
<a href="http://redmonk.com/thingmonk">ThingMonk</a>
</p>
<p>
<a href="http://shoreditchworks.com/shoreditch-village-hall">Shoreditch Village Hall</a>
</p>
<p>
<a href="http://www.flickr.com/photos/andrewnicolaou/sets/72157638331550273/">Full notes are here, with diagrams</a>
</p>
<p>tl;dr
node.js, MQTT and Node-RED were mentioned many times, as was Clojure, stream-based and reactive programming paradigms. There are lots of competing platforms for managing your IoTs but little interoperability. There was an excellent talk on UX for IoT talking about "interusability", the experience across devices with different capabilities.</p>
<h2>Platforms, protocols, apps</h2>
<ul>
<li>IBM IoT platform, (in development)</li>
<li>
<a href="http://bergcloud.com">BERG Cloud</a>
</li>
<li>
<a href="https://evrythng.com">EVERYTHNG</a>
</li>
<li>
<a href="http://opensensors.io">opensensors</a>
</li>
<li>
<a href="http://www.webofthings.org">Web of Things</a>
</li>
<li>MQTT-SN for sensor networks, IBM created (mqtt.org)</li>
</ul>
<p>"Standards are like toothbrushes - you know you need one but you don't want to use someone else's"</p>
<h2>Reactive programming</h2>
<p>Several talks argued that monolithic codebases make systems unreliable and unsuitable for managing fleets of devices. Several paradigms were suggested as solutions:</p>
<ul>
<li>
<a href="http://www.reactivemanifesto.org/">Reactive Programming</a>
</li>
<li>communicating sequential processes (CSP)</li>
<li>Complex Event Processing (CEP)</li>
<li>stream-based programming (SBP?)</li>
<li>Clojure's core.async was also mentioned a lot</li>
</ul>
<h2>Node-RED</h2>
<p>
<a href="http://nodered.org">"A visual tool for wiring the IoT"</a>
</p>
<h2>UX for IoT</h2>
<p>
<a href="http://twitter.com/goodmachine">Patrick Bergel</a>
</p>
<ul>
<li>"Is my kettle mining bitcoin?"</li>
<li>"Is my TV spying on me?"</li>
</ul>
<p>Products should aspire the "condition of cutlery" with a dumb core that works like a non-IoT product and a smart shell that augments it with networked capabilities.</p>
<p>
<em>great</em>
<a href="https://www.hivehome.com/">British Gase Hive</a>
</p>
<p>You need good UX to attract the "late majority" consumers. This requires:</p>
<ul>
<li>clear proposition</li>
<li>clear conceptual model: this isn't the system model</li>
<li>good interusability: the UX across different devices with different capabilities</li>
</ul>
<p>A small interusability example: the Nest thermostat physical device has an electronic clicking noise when you turn the dial. The Nest native app using the same clicking sound when you press buttons.</p>
<p>
<a href>http://lister.cms.livjm.ac.uk/homepage/staff/cmsdengl/cloud2011papers/helen-levoi.pdf</a>
</p>
<p>Products vs tools:</p>
<ul>
<li>
<a href="http://www.belkin.com/uk/Products/home-automation/c/wemo-home-automation/">Belkin Wemo smart plug</a>
</li>
<li>
<a href="https://nest.com/smoke-co-alarm/life-with-nest-protect/">Nest Protect</a>
</li>
</ul>
<p>Now that we've broken direct manipulation—where pressing a button, causes an action instantly—we must tell users where things are happening e.g. on the hub, on the internet, in the device etc.</p>
<h2>Prototyping</h2>
<p>Matt Webb (BERG) spoke about making Little Printer (they've sold 3,000) including pictures of prototypes:</p>
<ul>
<li>a netbook perched on its side connected to an arduino pretending to be a thermal printer;</li>
<li>foam models trying out case shapes, colours;</li>
<li>the first prototype they could take home based on a linux plug computer and an off-the-shelf thermal printer. This didn't look anything like the final product but let them live with it to see what it was like.</li>
</ul>
<p>
<a href="http://hci.stanford.edu/courses/cs247/2012/readings/WhatDoPrototypesPrototype.pdf">"What do prototypes prototype?"</a>
</p>
<p>He also noted "they call it hardware because it's hard" so do as much as possible on the web.</p>
<h2>Atomic startups - the boring bits</h2>
<p>
<a href="http://www.newspaperclub.com/">Newspaper Club</a>
</p>
<p>Echoed Matt Webb's advice: Use digital to your advantage when building physical products because "the physical world is hard and different".</p>
<p>Things to think about:
- what's the worst unboxing experience for your product?
- surface the underlying realities of the physical systems to help your customers understand difficulties i.e. it's a printing press, it can break and people need to fly in from Germany to fix it;
- do logistics to understand it, then outsource to scale/buy time/do it better (repeat for other things you don't know about)</p>
<p>"A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch newer works and cannot be made to work"
—John Gall, Systematics</p>
<h2>Developer experience</h2>
<p>
<a href>https://twitter.com/mortenheroku</a>
</p>
<p>Outlined emerging architectures for IoT apps including:
- getting code on the device (local discovery, auth with cloud, data exchange)
- device management in the cloud
- web/native apps providing interfaces</p>
<p>For developers, need "git push" to devices (like Heroku did for the web).</p>
</section>
</core-scroll-header-panel>
</template>
<script>
Polymer('my-element', {
});
</script>
</polymer-element>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment