SlideShare a Scribd company logo
Have some Erlang
on your RaspberryPi
(Using Erlang in embedded linux systems)
Friday, June 21, 13
But first, some context
(i.e. Why running Erlang on the
RaspberryPi might be interesting...)
Friday, June 21, 13
nowyears agodecades agoa long time ago
(in a galaxy far, far away...)
The progression
mainframe
desktop
laptop
smart
phone
tablet
?
We all are aware of the inevitable progression towards more diverse, smaller, and
powerful software enabled devices. It is pretty obvious. In addition to this, it’s clear that
devices are designed around certain modes of interactions and interaction duration.
However, there is a new space in consumer devices which allows for entirely different
ways of interaction (and in some cases no interaction at all).
Friday, June 21, 13
The quantified self/
internet of things?
FitBit/Fuel Band
WiThings BodyScale
ScoutAlarm
SmartThings
Pebble Watch
Philips Hue/ Blink(1)
NinjaBlocks
Belkin WeMo
Switch
This new space is based on
the idea that devices can be
passive observers of human
behavior, the environment,
or other sources of data.
This is the central idea of
the quantified self/internet
of things. Initially devices are
focused around health and
activity.There will be an
increasing growth in other
areas.
Friday, June 21, 13
Games
Information
Environment
Security
Health
The quantified self is part of
the “Internet of Things”
There are more and more devices
entering the market every month.
To date, a large number have been
focused on health (e.g. FitBit,
Nike Fuel) and security (e.g.
ScoutAlarm). Over time these
devices will enter other aspects of
human activity. Some sense and
control the home environment
(e.g. Nest), others provide
information from internet
services (e.g. Philips Hue), and
some might be purely for
entertainment and a platform for
games.
Friday, June 21, 13
In addition to lots of interesting consumer products.
There are lots of new and interesting hardware
platforms. Almost all run embedded linux.
Friday, June 21, 13
What are people doing with
these boards?
Friday, June 21, 13
Friday, June 21, 13
Friday, June 21, 13
Build your own Google Glass perhaps?...
Friday, June 21, 13
Ok, but what does this have to
do with Erlang?
Friday, June 21, 13
Small, cheap hardware
Linux
=
Lots of internet
connected, linux
powered, small, cheap,
embedded devices
+
Expensive, big hardware
Erlang
=
A massively scaleable,
fault tolerant system
which runs on embedded
systems
+
The Internet
+
The phone network
+
Well, there are some parallels between
these “internet of” devices and Erlang
Friday, June 21, 13
What is Erlang?
(hint: It’s pronounced “Air-lang” not “Errr-lang”)
Friday, June 21, 13
• Creating and destroying processes is very fast
• Sending messages between processes is very fast
• Processes behave the same way on all operating systems
• We can have very large numbers of processes (1,000’s to 100,000’s)
• Processes share no memory and are completely independent
• The ONLY way for processes to interact is through message passing
Like some languages are object oriented,
Erlang is “process oriented”. For example,
in Erlang:
Erlang is a general purpose concurrent programming
language and runtime system. It is a functional
language which has strict evaluation, single
assignment, and dynamic typing. Originally designed
by Ericsson to support distributed, fault-tolerant,
soft-real time, non-stop applications. [from wikipedia]
Friday, June 21, 13
This is a sample of code from the demo portion of this presentation. It defines a module
called “net_led” which controls an LED over the local network. Erlang code is composed
into modules which expose certain functions via the “export” directive. In this module, I
export methods to spawn the LED light process on one machine.Then have a switch
function which controls the light via a different process running on a separate machine. In
the sample below there are two functions defined,“decouple” and “switch.” These take
parameters about the LED light process and then send messages to that process.The “!” is
the message send operator.
Full source can be found here: https://gist.github.com/breakpointer/5799847
Friday, June 21, 13
What does Erlang look like?
Friday, June 21, 13
Object Oriented Process Oriented
Ruby Erlang
class Foo
def bar
puts “hello!”
end
end
Definition
-module(foo).
-export([bar/0]).
bar() ->
io:format(‘hello!~n’,[]).
Instantiation >f = Foo.new
>f.bar
#=> hello!
>foo:bar().
hello!
>F = spawn(foo, bar, []).
hello!
<0.34.0>
Simple comparison of Ruby to Erlang
Orientation
Friday, June 21, 13
How does one use Erlang?
Friday, June 21, 13
process process
spawn
receive
ErlangVM
process
process
spawn
spawn
{messages}
receive
A typical application will use many processes, and
message passing for inter-process communications
Friday, June 21, 13
How is Erlang used
on the RaspberryPi?
Friday, June 21, 13
The components of the RaspberryPi
Your interface to the world!
Friday, June 21, 13
Friday, June 21, 13
Accessing the GPIO pins through Linux SysFs
OS mapping location of pins:
Exporting a pin for use:
Reading the value of a pin as that pin is toggled high/low:
Friday, June 21, 13
Imagine a product called
The Baconator*
How might this system be
modeled?
(*patent/trademark/startup pending...)
Friday, June 21, 13
SysFs
Dispense
process
{messages}
receive
Make
Bacon
process
Button
process{messages}
receive
GPIO
io:Read
io:Write
The Baconator!
A.K.A. the most awesome bacon dispensing machine in the world!
Bacon
supervisor Instructions:
Step 1) Push button
Step 2) Receive bacon
Step 3) NomNomNom
software hardware
Friday, June 21, 13
Demo: Erlang powered
LED light and “switch”
(Sorry, no bacon will be auto-dispensed tonight)
Friday, June 21, 13
erl shell
process
switch
process
spawn
receive
ErlangVM
erl shell
process
LED
light
process
spawn
receive
ErlangVM
{messages}
{messages}
Laptop
RaspberryPi
{
{
local network
Friday, June 21, 13
Next steps for the Erlang and
embedded systems
Friday, June 21, 13
A website to watch for progress on embedded erlang
Friday, June 21, 13
Side Project: Dash-dot-com
(a sass-talking web controlled animatronic puppet)
Friday, June 21, 13
How to get Erlang running
on the RaspberryPi?
(It’s incredibly easy, I swear)
Friday, June 21, 13
deb http://binaries.erlang-solutions.com/debian wheezy contrib
If you have the latest Raspbian distro...
add the package location to /etc/apt/sources.list
add the public key for apt-secure
Install the package
wget -O - http://binaries.erlang-solutions.com/debian/
erlang_solutions.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install esl-erlang
From the console, fire up the Erlang REPL
erl
Friday, June 21, 13
Resources
Friday, June 21, 13
• http://www.adafruit.com or http://www.sparkfun.com
• http://www.erlang-embedded.com/
• http://www.erlang-solutions.com/section/132/download-erlang-otp
• https://github.com/omerk/erl-hw/
• http://www.infoq.com/interviews/kilic-erlang-embedded
• http://www.erlang-factory.com/upload/presentations/451/Wiger-
erlangforembedded.pdf
• http://www.1011ltd.com/web/blog/post/embedded_erlang
Friday, June 21, 13
Questions?!
Brian Chamberlain
blchamberlain@gmail.com
@breakpointer
http://breakpointer.co
Friday, June 21, 13

More Related Content

What's hot

Corporate governance presentation
Corporate governance presentationCorporate governance presentation
Corporate governance presentation
Ola Brown
 
Ethical issue in finance
Ethical issue in financeEthical issue in finance
Ethical issue in finance
Pankaj Chandel
 
SCM case study essay 2
SCM case study essay 2SCM case study essay 2
SCM case study essay 2Serina Robnett
 
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Afifah Nabilah
 
Ease of Doing Business in India
Ease of Doing Business in IndiaEase of Doing Business in India
Ease of Doing Business in India
Prakhar Jain
 
Case study last frontier pcb
Case study   last frontier pcbCase study   last frontier pcb
Case study last frontier pcbKristina Moniz
 
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Afifah Nabilah
 
Worldcom Scandal
Worldcom  ScandalWorldcom  Scandal
Worldcom Scandal
Shiva Js Kumar
 
Sole proprietorship
Sole proprietorshipSole proprietorship
Sole proprietorship
Bugbear Entertainment
 
Power point Presentation on Reliance Industries Limitd
Power point Presentation on Reliance Industries LimitdPower point Presentation on Reliance Industries Limitd
Power point Presentation on Reliance Industries Limitd
Piyush Rane
 
ANALYSIS OF FINANCIAL PERFORMANCE OF THOMAS COOK (INDIA) LTD. USING RATIO ANA...
ANALYSIS OF FINANCIAL PERFORMANCE OF THOMAS COOK (INDIA) LTD. USING RATIO ANA...ANALYSIS OF FINANCIAL PERFORMANCE OF THOMAS COOK (INDIA) LTD. USING RATIO ANA...
ANALYSIS OF FINANCIAL PERFORMANCE OF THOMAS COOK (INDIA) LTD. USING RATIO ANA...
Anirban Chakraborty
 
Forms of business organisations sole trader
Forms of business organisations   sole traderForms of business organisations   sole trader
Forms of business organisations sole trader
PRASANTH VENPAKAL
 
Satyam Lessons and Corporate Governance Reforms
Satyam Lessons and Corporate Governance ReformsSatyam Lessons and Corporate Governance Reforms
Satyam Lessons and Corporate Governance ReformsPushkar Raj Chandna
 
Report on ratio analysis
Report on ratio analysisReport on ratio analysis
Report on ratio analysisjcakj
 
Asian paints Pvt Ltd Financial Statement Analysis - Profitability and Liquidity
Asian paints Pvt Ltd Financial Statement Analysis - Profitability and Liquidity Asian paints Pvt Ltd Financial Statement Analysis - Profitability and Liquidity
Asian paints Pvt Ltd Financial Statement Analysis - Profitability and Liquidity
AyeshaFaroqui
 
Corporate Compliance Management
Corporate Compliance Management Corporate Compliance Management
Corporate Compliance Management Pavan Kumar Vijay
 
Presentation On Business Organization
Presentation On Business OrganizationPresentation On Business Organization
Presentation On Business Organization
mytopics
 
Sole Proprietorships
Sole ProprietorshipsSole Proprietorships
Sole Proprietorships
Brian Coil
 
Financial statement analysis
Financial statement analysisFinancial statement analysis
Financial statement analysis
Nikhil Jaiswal
 
Black book project on power generation company
Black book project on power generation companyBlack book project on power generation company
Black book project on power generation company
Akash Gupta
 

What's hot (20)

Corporate governance presentation
Corporate governance presentationCorporate governance presentation
Corporate governance presentation
 
Ethical issue in finance
Ethical issue in financeEthical issue in finance
Ethical issue in finance
 
SCM case study essay 2
SCM case study essay 2SCM case study essay 2
SCM case study essay 2
 
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
 
Ease of Doing Business in India
Ease of Doing Business in IndiaEase of Doing Business in India
Ease of Doing Business in India
 
Case study last frontier pcb
Case study   last frontier pcbCase study   last frontier pcb
Case study last frontier pcb
 
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
Case Analysis: The Battle for Value, 2004: FedEx Crop vs United Parcel Servic...
 
Worldcom Scandal
Worldcom  ScandalWorldcom  Scandal
Worldcom Scandal
 
Sole proprietorship
Sole proprietorshipSole proprietorship
Sole proprietorship
 
Power point Presentation on Reliance Industries Limitd
Power point Presentation on Reliance Industries LimitdPower point Presentation on Reliance Industries Limitd
Power point Presentation on Reliance Industries Limitd
 
ANALYSIS OF FINANCIAL PERFORMANCE OF THOMAS COOK (INDIA) LTD. USING RATIO ANA...
ANALYSIS OF FINANCIAL PERFORMANCE OF THOMAS COOK (INDIA) LTD. USING RATIO ANA...ANALYSIS OF FINANCIAL PERFORMANCE OF THOMAS COOK (INDIA) LTD. USING RATIO ANA...
ANALYSIS OF FINANCIAL PERFORMANCE OF THOMAS COOK (INDIA) LTD. USING RATIO ANA...
 
Forms of business organisations sole trader
Forms of business organisations   sole traderForms of business organisations   sole trader
Forms of business organisations sole trader
 
Satyam Lessons and Corporate Governance Reforms
Satyam Lessons and Corporate Governance ReformsSatyam Lessons and Corporate Governance Reforms
Satyam Lessons and Corporate Governance Reforms
 
Report on ratio analysis
Report on ratio analysisReport on ratio analysis
Report on ratio analysis
 
Asian paints Pvt Ltd Financial Statement Analysis - Profitability and Liquidity
Asian paints Pvt Ltd Financial Statement Analysis - Profitability and Liquidity Asian paints Pvt Ltd Financial Statement Analysis - Profitability and Liquidity
Asian paints Pvt Ltd Financial Statement Analysis - Profitability and Liquidity
 
Corporate Compliance Management
Corporate Compliance Management Corporate Compliance Management
Corporate Compliance Management
 
Presentation On Business Organization
Presentation On Business OrganizationPresentation On Business Organization
Presentation On Business Organization
 
Sole Proprietorships
Sole ProprietorshipsSole Proprietorships
Sole Proprietorships
 
Financial statement analysis
Financial statement analysisFinancial statement analysis
Financial statement analysis
 
Black book project on power generation company
Black book project on power generation companyBlack book project on power generation company
Black book project on power generation company
 

Viewers also liked

Using Erlang in an Embedded and Cross-Compiled World
Using Erlang in an Embedded and Cross-Compiled WorldUsing Erlang in an Embedded and Cross-Compiled World
Using Erlang in an Embedded and Cross-Compiled World
Frank Hunleth
 
Building a Network IP Camera using Erlang
Building a Network IP Camera using ErlangBuilding a Network IP Camera using Erlang
Building a Network IP Camera using Erlang
Frank Hunleth
 
Embedded Erlang, Nerves, and SumoBots
Embedded Erlang, Nerves, and SumoBotsEmbedded Erlang, Nerves, and SumoBots
Embedded Erlang, Nerves, and SumoBots
Frank Hunleth
 
SocBiz Talk: Redes sociales corporativas, claves en las organizaciones del fu...
SocBiz Talk: Redes sociales corporativas, claves en las organizaciones del fu...SocBiz Talk: Redes sociales corporativas, claves en las organizaciones del fu...
SocBiz Talk: Redes sociales corporativas, claves en las organizaciones del fu...EvolvingSocBiz
 
Trabajo gestión del conocimiento (final)
Trabajo gestión del conocimiento (final)Trabajo gestión del conocimiento (final)
Trabajo gestión del conocimiento (final)Fernando Llanos
 
Winning the Erlang Edit•Build•Test Cycle
Winning the Erlang Edit•Build•Test CycleWinning the Erlang Edit•Build•Test Cycle
Winning the Erlang Edit•Build•Test Cycle
Rusty Klophaus
 
Clojure made-simple - John Stevenson
Clojure made-simple - John StevensonClojure made-simple - John Stevenson
Clojure made-simple - John Stevenson
JAX London
 
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-SubramanyaErlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Hakka Labs
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabberl xf
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)
Pavlo Baron
 
Elixir talk
Elixir talkElixir talk
Elixir talk
Cory Gwin
 
20 reasons why we don't need architects (@pavlobaron)
20 reasons why we don't need architects (@pavlobaron)20 reasons why we don't need architects (@pavlobaron)
20 reasons why we don't need architects (@pavlobaron)
Pavlo Baron
 
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
Howard Lewis Ship
 
From Perl To Elixir
From Perl To ElixirFrom Perl To Elixir
From Perl To Elixir
Ruben Amortegui
 
NDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsNDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business Needs
Torben Hoffmann
 
VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012
Eonblast
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
thnetos
 

Viewers also liked (20)

Using Erlang in an Embedded and Cross-Compiled World
Using Erlang in an Embedded and Cross-Compiled WorldUsing Erlang in an Embedded and Cross-Compiled World
Using Erlang in an Embedded and Cross-Compiled World
 
Building a Network IP Camera using Erlang
Building a Network IP Camera using ErlangBuilding a Network IP Camera using Erlang
Building a Network IP Camera using Erlang
 
Embedded Erlang, Nerves, and SumoBots
Embedded Erlang, Nerves, and SumoBotsEmbedded Erlang, Nerves, and SumoBots
Embedded Erlang, Nerves, and SumoBots
 
SocBiz Talk: Redes sociales corporativas, claves en las organizaciones del fu...
SocBiz Talk: Redes sociales corporativas, claves en las organizaciones del fu...SocBiz Talk: Redes sociales corporativas, claves en las organizaciones del fu...
SocBiz Talk: Redes sociales corporativas, claves en las organizaciones del fu...
 
Trabajo gestión del conocimiento (final)
Trabajo gestión del conocimiento (final)Trabajo gestión del conocimiento (final)
Trabajo gestión del conocimiento (final)
 
Winning the Erlang Edit•Build•Test Cycle
Winning the Erlang Edit•Build•Test CycleWinning the Erlang Edit•Build•Test Cycle
Winning the Erlang Edit•Build•Test Cycle
 
Clojure made-simple - John Stevenson
Clojure made-simple - John StevensonClojure made-simple - John Stevenson
Clojure made-simple - John Stevenson
 
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-SubramanyaErlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabber
 
High Performance Erlang
High  Performance  ErlangHigh  Performance  Erlang
High Performance Erlang
 
Clojure values
Clojure valuesClojure values
Clojure values
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)
 
Elixir talk
Elixir talkElixir talk
Elixir talk
 
Clojure class
Clojure classClojure class
Clojure class
 
20 reasons why we don't need architects (@pavlobaron)
20 reasons why we don't need architects (@pavlobaron)20 reasons why we don't need architects (@pavlobaron)
20 reasons why we don't need architects (@pavlobaron)
 
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
Clojure: Functional Concurrency for the JVM (presented at Open Source Bridge)
 
From Perl To Elixir
From Perl To ElixirFrom Perl To Elixir
From Perl To Elixir
 
NDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsNDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business Needs
 
VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
 

Similar to Using Erlang on the RaspberryPi to interact with the physical world

Why you should use the Yocto Project
Why you should use the Yocto ProjectWhy you should use the Yocto Project
Why you should use the Yocto Project
rossburton
 
Freesmartphone.org
Freesmartphone.orgFreesmartphone.org
Freesmartphone.org
sudharsh
 
Hacking the Kinect with GAFFTA Day 4
Hacking the Kinect with GAFFTA Day 4Hacking the Kinect with GAFFTA Day 4
Hacking the Kinect with GAFFTA Day 4
benDesigning
 
DWF WP2 Jecel Lowcost
DWF WP2 Jecel LowcostDWF WP2 Jecel Lowcost
DWF WP2 Jecel LowcostRon Burger
 
Open Moko And Ubiquitous Computing Presentation
Open Moko And Ubiquitous Computing PresentationOpen Moko And Ubiquitous Computing Presentation
Open Moko And Ubiquitous Computing Presentation
ridgeway137
 
Raspberry Pi (Introduction)
Raspberry Pi (Introduction)Raspberry Pi (Introduction)
Raspberry Pi (Introduction)
Mandeesh Singh
 
All your legos are belong to Us Gr8Conf.EU 2015
All your legos are belong to Us Gr8Conf.EU 2015All your legos are belong to Us Gr8Conf.EU 2015
All your legos are belong to Us Gr8Conf.EU 2015
Ryan Vanderwerf
 
Cloudstack collaboration conference Europe - SDN and Devops
Cloudstack collaboration conference Europe - SDN and DevopsCloudstack collaboration conference Europe - SDN and Devops
Cloudstack collaboration conference Europe - SDN and Devops
John Willis
 
OLPC presentation in a class on Information Systems Strategy
OLPC presentation in a class on Information Systems StrategyOLPC presentation in a class on Information Systems Strategy
OLPC presentation in a class on Information Systems Strategy
Sameer Verma
 
GPU Programming: Chicago CocoaConf 2015
GPU Programming: Chicago CocoaConf 2015GPU Programming: Chicago CocoaConf 2015
GPU Programming: Chicago CocoaConf 2015
Janie Clayton
 
An introduction to erlang
An introduction to erlangAn introduction to erlang
An introduction to erlang
Mirko Bonadei
 
OLPC presentation in a class on Marketing
OLPC presentation in a class on MarketingOLPC presentation in a class on Marketing
OLPC presentation in a class on Marketing
Sameer Verma
 
Basics of tcp ip
Basics of tcp ipBasics of tcp ip
Basics of tcp ipKumar
 
The Network The Next Frontier for Devops ?
The Network   The Next Frontier for Devops ?The Network   The Next Frontier for Devops ?
The Network The Next Frontier for Devops ?John Willis
 
Sample_HEngineering
Sample_HEngineeringSample_HEngineering
Sample_HEngineeringZachary Job
 
Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?
Yauheni Akhotnikau
 

Similar to Using Erlang on the RaspberryPi to interact with the physical world (20)

Why you should use the Yocto Project
Why you should use the Yocto ProjectWhy you should use the Yocto Project
Why you should use the Yocto Project
 
Freesmartphone.org
Freesmartphone.orgFreesmartphone.org
Freesmartphone.org
 
Hacking the Kinect with GAFFTA Day 4
Hacking the Kinect with GAFFTA Day 4Hacking the Kinect with GAFFTA Day 4
Hacking the Kinect with GAFFTA Day 4
 
DWF WP2 Jecel Lowcost
DWF WP2 Jecel LowcostDWF WP2 Jecel Lowcost
DWF WP2 Jecel Lowcost
 
about java
about javaabout java
about java
 
Open Moko And Ubiquitous Computing Presentation
Open Moko And Ubiquitous Computing PresentationOpen Moko And Ubiquitous Computing Presentation
Open Moko And Ubiquitous Computing Presentation
 
Raspberry Pi (Introduction)
Raspberry Pi (Introduction)Raspberry Pi (Introduction)
Raspberry Pi (Introduction)
 
All your legos are belong to Us Gr8Conf.EU 2015
All your legos are belong to Us Gr8Conf.EU 2015All your legos are belong to Us Gr8Conf.EU 2015
All your legos are belong to Us Gr8Conf.EU 2015
 
Cloudstack collaboration conference Europe - SDN and Devops
Cloudstack collaboration conference Europe - SDN and DevopsCloudstack collaboration conference Europe - SDN and Devops
Cloudstack collaboration conference Europe - SDN and Devops
 
OLPC presentation in a class on Information Systems Strategy
OLPC presentation in a class on Information Systems StrategyOLPC presentation in a class on Information Systems Strategy
OLPC presentation in a class on Information Systems Strategy
 
LinuxCon Europe 2013
LinuxCon Europe 2013LinuxCon Europe 2013
LinuxCon Europe 2013
 
GPU Programming: Chicago CocoaConf 2015
GPU Programming: Chicago CocoaConf 2015GPU Programming: Chicago CocoaConf 2015
GPU Programming: Chicago CocoaConf 2015
 
An introduction to erlang
An introduction to erlangAn introduction to erlang
An introduction to erlang
 
Foss Presentation
Foss PresentationFoss Presentation
Foss Presentation
 
OLPC presentation in a class on Marketing
OLPC presentation in a class on MarketingOLPC presentation in a class on Marketing
OLPC presentation in a class on Marketing
 
Routing_Article
Routing_ArticleRouting_Article
Routing_Article
 
Basics of tcp ip
Basics of tcp ipBasics of tcp ip
Basics of tcp ip
 
The Network The Next Frontier for Devops ?
The Network   The Next Frontier for Devops ?The Network   The Next Frontier for Devops ?
The Network The Next Frontier for Devops ?
 
Sample_HEngineering
Sample_HEngineeringSample_HEngineering
Sample_HEngineering
 
Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?
 

Recently uploaded

SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 

Recently uploaded (20)

SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 

Using Erlang on the RaspberryPi to interact with the physical world

  • 1. Have some Erlang on your RaspberryPi (Using Erlang in embedded linux systems) Friday, June 21, 13
  • 2. But first, some context (i.e. Why running Erlang on the RaspberryPi might be interesting...) Friday, June 21, 13
  • 3. nowyears agodecades agoa long time ago (in a galaxy far, far away...) The progression mainframe desktop laptop smart phone tablet ? We all are aware of the inevitable progression towards more diverse, smaller, and powerful software enabled devices. It is pretty obvious. In addition to this, it’s clear that devices are designed around certain modes of interactions and interaction duration. However, there is a new space in consumer devices which allows for entirely different ways of interaction (and in some cases no interaction at all). Friday, June 21, 13
  • 4. The quantified self/ internet of things? FitBit/Fuel Band WiThings BodyScale ScoutAlarm SmartThings Pebble Watch Philips Hue/ Blink(1) NinjaBlocks Belkin WeMo Switch This new space is based on the idea that devices can be passive observers of human behavior, the environment, or other sources of data. This is the central idea of the quantified self/internet of things. Initially devices are focused around health and activity.There will be an increasing growth in other areas. Friday, June 21, 13
  • 5. Games Information Environment Security Health The quantified self is part of the “Internet of Things” There are more and more devices entering the market every month. To date, a large number have been focused on health (e.g. FitBit, Nike Fuel) and security (e.g. ScoutAlarm). Over time these devices will enter other aspects of human activity. Some sense and control the home environment (e.g. Nest), others provide information from internet services (e.g. Philips Hue), and some might be purely for entertainment and a platform for games. Friday, June 21, 13
  • 6. In addition to lots of interesting consumer products. There are lots of new and interesting hardware platforms. Almost all run embedded linux. Friday, June 21, 13
  • 7. What are people doing with these boards? Friday, June 21, 13
  • 10. Build your own Google Glass perhaps?... Friday, June 21, 13
  • 11. Ok, but what does this have to do with Erlang? Friday, June 21, 13
  • 12. Small, cheap hardware Linux = Lots of internet connected, linux powered, small, cheap, embedded devices + Expensive, big hardware Erlang = A massively scaleable, fault tolerant system which runs on embedded systems + The Internet + The phone network + Well, there are some parallels between these “internet of” devices and Erlang Friday, June 21, 13
  • 13. What is Erlang? (hint: It’s pronounced “Air-lang” not “Errr-lang”) Friday, June 21, 13
  • 14. • Creating and destroying processes is very fast • Sending messages between processes is very fast • Processes behave the same way on all operating systems • We can have very large numbers of processes (1,000’s to 100,000’s) • Processes share no memory and are completely independent • The ONLY way for processes to interact is through message passing Like some languages are object oriented, Erlang is “process oriented”. For example, in Erlang: Erlang is a general purpose concurrent programming language and runtime system. It is a functional language which has strict evaluation, single assignment, and dynamic typing. Originally designed by Ericsson to support distributed, fault-tolerant, soft-real time, non-stop applications. [from wikipedia] Friday, June 21, 13
  • 15. This is a sample of code from the demo portion of this presentation. It defines a module called “net_led” which controls an LED over the local network. Erlang code is composed into modules which expose certain functions via the “export” directive. In this module, I export methods to spawn the LED light process on one machine.Then have a switch function which controls the light via a different process running on a separate machine. In the sample below there are two functions defined,“decouple” and “switch.” These take parameters about the LED light process and then send messages to that process.The “!” is the message send operator. Full source can be found here: https://gist.github.com/breakpointer/5799847 Friday, June 21, 13
  • 16. What does Erlang look like? Friday, June 21, 13
  • 17. Object Oriented Process Oriented Ruby Erlang class Foo def bar puts “hello!” end end Definition -module(foo). -export([bar/0]). bar() -> io:format(‘hello!~n’,[]). Instantiation >f = Foo.new >f.bar #=> hello! >foo:bar(). hello! >F = spawn(foo, bar, []). hello! <0.34.0> Simple comparison of Ruby to Erlang Orientation Friday, June 21, 13
  • 18. How does one use Erlang? Friday, June 21, 13
  • 19. process process spawn receive ErlangVM process process spawn spawn {messages} receive A typical application will use many processes, and message passing for inter-process communications Friday, June 21, 13
  • 20. How is Erlang used on the RaspberryPi? Friday, June 21, 13
  • 21. The components of the RaspberryPi Your interface to the world! Friday, June 21, 13
  • 23. Accessing the GPIO pins through Linux SysFs OS mapping location of pins: Exporting a pin for use: Reading the value of a pin as that pin is toggled high/low: Friday, June 21, 13
  • 24. Imagine a product called The Baconator* How might this system be modeled? (*patent/trademark/startup pending...) Friday, June 21, 13
  • 25. SysFs Dispense process {messages} receive Make Bacon process Button process{messages} receive GPIO io:Read io:Write The Baconator! A.K.A. the most awesome bacon dispensing machine in the world! Bacon supervisor Instructions: Step 1) Push button Step 2) Receive bacon Step 3) NomNomNom software hardware Friday, June 21, 13
  • 26. Demo: Erlang powered LED light and “switch” (Sorry, no bacon will be auto-dispensed tonight) Friday, June 21, 13
  • 28. Next steps for the Erlang and embedded systems Friday, June 21, 13
  • 29. A website to watch for progress on embedded erlang Friday, June 21, 13
  • 30. Side Project: Dash-dot-com (a sass-talking web controlled animatronic puppet) Friday, June 21, 13
  • 31. How to get Erlang running on the RaspberryPi? (It’s incredibly easy, I swear) Friday, June 21, 13
  • 32. deb http://binaries.erlang-solutions.com/debian wheezy contrib If you have the latest Raspbian distro... add the package location to /etc/apt/sources.list add the public key for apt-secure Install the package wget -O - http://binaries.erlang-solutions.com/debian/ erlang_solutions.asc | sudo apt-key add - sudo apt-get update sudo apt-get install esl-erlang From the console, fire up the Erlang REPL erl Friday, June 21, 13
  • 34. • http://www.adafruit.com or http://www.sparkfun.com • http://www.erlang-embedded.com/ • http://www.erlang-solutions.com/section/132/download-erlang-otp • https://github.com/omerk/erl-hw/ • http://www.infoq.com/interviews/kilic-erlang-embedded • http://www.erlang-factory.com/upload/presentations/451/Wiger- erlangforembedded.pdf • http://www.1011ltd.com/web/blog/post/embedded_erlang Friday, June 21, 13