SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
PHARO IoT
Installation Improvements and 

Continuous Integration

Allex Oliveira
IoT Engineer @ RMoD Team, INRIA
allex.oliveira@msn.com
1
Summary
1 – Getting experience
2 – Making the process easy
3 – Continuous Integration
4 – The future
!2
1 - Overview
• Created by Rmod Team, a research team from
INRIA (France)
• Written by Denis Kudriashov in 2016/17
dionisiydk@gmail.com
• In 2018, Allex Oliveira joined the Rmod Team to
continue the project 
!3
• A Pharo image running on IoT device (ARM VM)
• A Pharo library to control GPIOs (PharoThings) 
• A Remote IDE
• Remote Playground, Browser, Inspectors
• An advanced board inspector for Raspberry PI
• Other IoT Projects:
• A Pharo library to control Arduino Devices (Firmata)
What is Pharo IoT?
!4
ThingsThings
IDE
TelePharo

Remote

Communication
Firmata
GPIO
What is Pharo IoT?
Motivation
• It's not very easy to get started with PharoThings for
anyone who is not a Pharo/Smalltalk user.
• How can we automate the process to make the
developer’s life easier?
Before we automate something, we should ask:
How can we improve it?
!6
How to know what to improve?
Real world experience
IoT Workshop, ESUG
September 2018 - Cagliari, Italy
!
!7
How to know what to improve?
Real world experience
IoT Hackaton, Zweidenker GmbH
October 2018 - Cologne, Germany
"
!8
How to know what to improve?
Real world experience
Live Programming IoT devices with PharoThings
January 2019 - Can Tho University, Vietnam
#
!9
How to know what to improve?
Real world experience
ESUG Conference
European Smalltalk User Group
Sep 2018 Cagliari, Italy
INRIA
Pharo 10 Years
Nov 2018 Lille, France
USTH
University of Science and
Technology of Hanoi
Jan 2019 Hanoi, Vietnam
#$!
!10
2 - Difficulties
1. Is not so easy to start (many steps needed to run it);
2. Takes a long time to start (get everything);
3. Download VMs to different OS (ARM, Linux, Win, OSX);
4. Need the same version on server/client;
5. Needs a keyboard/screen on Raspberry to install from
scratch;
6. No many application examples;
7. Search example code: copy and paste (pdf bad formatting);
!11
2 - Difficulties
1. Is not so easy to start (many steps needed to run it);
2. Takes a long time to start (get everything);
3. Download VMs to different OS (ARM, Linux, Win, OSX);
4. Need the same version on server/client;
5. Needs a keyboard/screen on Raspberry to install from
scratch;
6. No many application examples;
7. Search example code: copy and paste (pdf bad formatting);
!12
How to install (manually)
1 2 3 4 5 6
1. Install PharoLauncher and create a new image
2. Load PharoThings project from Github
3. Copy ARM VM and Pharo Image to Raspberry Pi
4. Set the run permissions "chmod +x"
5. Run TelePharo server in a big command line
6. Extra configurations: set hostname, WiFi, autorun
!13
How to install (manually)
1 2 3 4 5 6
1. Install PharoLauncher and create a new image
!14
How to install (manually)
1 2 3 4 5 6
2. Load PharoThings project from Github
!15
How to install (manually)
1 2 3 4 5 6
3. Copy ARM VM and Pharo Image to Raspberry Pi
!16
How to install (manually)
1 2 3 4 5 6
4. Set the run permissions "chmod +x"
!17
How to install (manually)
1 2 3 4 5 6
5. Run TelePharo server in a big command line
!18
How to install (manually)
1 2 3 4 5 6
6. Extra configurations
• Auto connect on WiFi network
• Set hostname
• Autostart TelePharo server every boot
• Set boot to console (disable the Linux UI)
• Enable I2C and SPI kernel modules
!19
How to install (zero-conf)
1 2 3 4 5 6
1. Run the command to download and extract the files:
• wget -O - get.pharoiot.org/server | bash
2. Run TelePharo server:
• 1 click on pharo-server file or…
• type in terminal: ./pharo-server
Less than 1 minute!
!20
How to install (zero-conf)
1 2 3 4 5 6
6. Extra configurations
!21
1. Is not so easy to start (many steps needed to run it);
2. Takes a long time to start (get everything);
3. Download VMs to different OS (ARM, Linux, Win, OSX);
4. Need the same version on server/client;
5. Needs a keyboard/screen on Raspberry to install from
scratch;
6. No many application examples;
7. Search example code: copy and paste (pdf bad formatting);
2 - Difficulties
!22
+ Pharo Image 32/64
+ PharoThings loaded
+ ARM VM
+ Windows, Linux, Mac VMs
Packing everything
!23
+ Pharo Image 32/64
+ PharoThings loaded
+ ARM VM
+ Windows, Linux, Mac VMs
+ 1 click run files
pharo-ui
pharo-server
pharo
pharo.bat
1-click run files
!24
1. Is not so easy to start (many steps needed to run it);
2. Takes a long time to start (get everything);
3. Download VMs to different OS (ARM, Linux, Win, OSX);
4. Need the same version on server/client;
5. Needs a keyboard/screen on Raspberry to install from
scratch;
6. No many application examples;
7. Search example code: copy and paste (pdf bad formatting);
2 - Difficulties
!25
Installing from scratch
+ Installing Raspbian
+ Download Pharo IoT
+ Set Hostname
+ Enable I2C and SPI
+ Connect on WiFi
+ Start server every boot
Keyboard,mouse or
monitor not required
Less than 10 minutes!
!26
1. Is not so easy to start (many steps needed to run it);
2. Takes a long time to start (get everything);
3. Download VMs to different OS (ARM, Linux, Win, OSX);
4. Need the same version on server/client;
5. Needs a keyboard/screen on Raspberry to install from
scratch;
6. No many application examples;
7. Search example code: copy and paste (pdf bad formatting);
2 - Difficulties
!27
PharoThings Booklet
https://github.com/SquareBracketAssociates/Booklet-APharoThingsTutorial
!28
PharoThings Booklet
https://github.com/SquareBracketAssociates/Booklet-APharoThingsTutorial
!29
1. Is not so easy to start (many steps needed to run it);
2. Takes a long time to start (get everything);
3. Download VMs to different OS (ARM, Linux, Win, OSX);
4. Need the same version on server/client;
5. Needs a keyboard/screen on Raspberry to install from
scratch;
6. No many application examples;
7. Search example code: copy and paste (pdf bad formatting);
2 - Difficulties
!30
Welcome Window PharoThings
!31
1. Is not so easy to start (many steps needed to run it);
2. Takes a long time to start (get everything);
3. Download VMs to different OS (ARM, Linux, Win, OSX);
4. Need the same version on server/client;
5. Needs a keyboard/screen on Raspberry to install from
scratch;
6. No many application examples;
7. Search example code: copy and paste (pdf bad formatting);
2 - Difficulties
!32
3 - Continuous Integration
After these improvements,
now we can automate the process:
• Create PDF Booklet
• Load PharoThings on image 32/64
• Download last VMs
• Create the 1 click-run files
• Zip everything
• Deploy
How to automate?
!33
3 - Continuous Integration
Travis CI on PharoThings Booklet
• With each commit in Github, a new instance of a Travis virtual
machine is created and the scripts executed
• The booklet is created using Pillar, a Pharo tool-suite to generate
documentation, books, websites and slides
• Deploy in Github releases is done in each changes on the booklet
• The process is transparent, anyone can see and contribute to
improvements
!34
3 - Continuous Integration
Travis CI on PharoThings Booklet
github.com/SquareBracketAssociates/
Booklet-APharoThingsTutorial/.travis.yml
travis-ci.org/SquareBracketAssociates/
Booklet-APharoThingsTutorial
new commit run scripts/tests
new Github release
https://github.com/SquareBracketAssociates/Booklet-APharoThingsTutorial
!35
3 - Continuous Integration
Travis CI on PharoThings Booklet
https://github.com/SquareBracketAssociates/Booklet-APharoThingsTutorial
!36
3 - Continuous Integration
Travis CI on Pharo IoT
• With each commit in Github, a new instance of a Travis
virtual machine is created and the scripts executed
• Deploy is done only when a new Github Tag is created
• PharoThings is loaded in 32/64 images
• Zip files with everything (VMs, Images, 1 click-run) are up in
Github releases. We put it inside the repo also.
• The process is transparent, anyone can see and contribute
to improvements
!37
3 - Continuous Integration
Travis CI on Pharo IoT
https://github.com/pharo-iot/Ci
github.com/pharo-iot/Ci/.travis.yml travis-ci.org/pharo-iot/Ci
new commit run scripts/tests
is it tag? finishnoyes
new Github release
Github push
!38
3 - Continuous Integration
Travis CI on Pharo IoT
https://github.com/pharo-iot/Ci
!39
• We are using the Github Pages to host the zero-conf pages
get.pharoiot.org
https://github.com/pharo-iot/Ci/docs
!40
github.com/pharo-iot
• We are starting using Github Projects to work in a more
transparent and dynamic way.
https://github.com/orgs/pharo-iot/projects/1
You can take some tasks!
!41
Now you can
+ IoT
< 10 minutes
IoT
< 1 minute
IoT IDE
< 1 minute
Booklet Quickstart Guide Be part of the project!
!42
4 - Future
!43
pharoiot.org
Everything in the
same place, to
facilitate the journey
of the new user.
!44
pharoiot.org
• Share your IoT projects using Pharo with the community!
!45
Tele Radar
Automatic detection of running images in network 
(TeleRadar using SSDP protocol)
!46
PharoThings Booklet inside Pharo
!47
Minimal PharoThings image
https://github.com/noha/pharo-minimal
• Norbert Hartl
!48
Tool to “brew” SD Cards
• “brew" a new SD Card to inside Pharo (like PiBakery)
!49
NOW IN LESS
THAN 10 MINUTES!
With Pharo IoT you can
THANKS!
Any questions?
allex.oliveira@msn.com
• Dynamically update your running board
• Interact remotely with pins  and boards
• Modify the system while it is running (create new
board, change code)
• Make your changes persistent
get.pharoiot.org
!50
Presentation Information
This slides was presented at Pharo Days 2019, Lille, France
https://pharo.org/2019PharoDays
•Title: Pharo IoT - Installation Improvements and Continuous
Integration
•Presenters:
Allex Oliveira - linkedin.com/in/allex-oliveira
INRIA
https://www.inria.fr/
RMOD TEAM
https://rmod.inria.fr/web
PHARO PROJECT
https://github.com/pharo-project/pharo
PHAROTHINGS PROJECT
https://github.com/pharo-iot/PharoThings
PHARO IoT
http://get.pharoiot.org
!51

Weitere ähnliche Inhalte

Was ist angesagt?

C# on the iPhone with MonoTouch Glasgow
C# on the iPhone with MonoTouch GlasgowC# on the iPhone with MonoTouch Glasgow
C# on the iPhone with MonoTouch GlasgowChris Hardy
 
Using Jenkins for jobs scheduling
Using Jenkins for jobs scheduling  Using Jenkins for jobs scheduling
Using Jenkins for jobs scheduling Irek Romaniuk
 
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini
 
West Coast DevCon 2014: Engine Overview - A Programmers Glimpse at UE4
West Coast DevCon 2014: Engine Overview - A Programmers Glimpse at UE4West Coast DevCon 2014: Engine Overview - A Programmers Glimpse at UE4
West Coast DevCon 2014: Engine Overview - A Programmers Glimpse at UE4Gerke Max Preussner
 
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 WorldFrank Hunleth
 
Bringing Dev and Ops together with ChatOps
Bringing Dev and Ops together with ChatOpsBringing Dev and Ops together with ChatOps
Bringing Dev and Ops together with ChatOpsJaap Brasser
 
Is it possible to write cross-native apps in 2020 ?
Is it possible to write cross-native apps in 2020 ?Is it possible to write cross-native apps in 2020 ?
Is it possible to write cross-native apps in 2020 ?Chris Saez
 

Was ist angesagt? (7)

C# on the iPhone with MonoTouch Glasgow
C# on the iPhone with MonoTouch GlasgowC# on the iPhone with MonoTouch Glasgow
C# on the iPhone with MonoTouch Glasgow
 
Using Jenkins for jobs scheduling
Using Jenkins for jobs scheduling  Using Jenkins for jobs scheduling
Using Jenkins for jobs scheduling
 
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
 
West Coast DevCon 2014: Engine Overview - A Programmers Glimpse at UE4
West Coast DevCon 2014: Engine Overview - A Programmers Glimpse at UE4West Coast DevCon 2014: Engine Overview - A Programmers Glimpse at UE4
West Coast DevCon 2014: Engine Overview - A Programmers Glimpse at UE4
 
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
 
Bringing Dev and Ops together with ChatOps
Bringing Dev and Ops together with ChatOpsBringing Dev and Ops together with ChatOps
Bringing Dev and Ops together with ChatOps
 
Is it possible to write cross-native apps in 2020 ?
Is it possible to write cross-native apps in 2020 ?Is it possible to write cross-native apps in 2020 ?
Is it possible to write cross-native apps in 2020 ?
 

Ähnlich wie PHARO IoT: Installation Improvements and Continuous Integration

PHARO IoT: Present and Future
PHARO IoT: Present and FuturePHARO IoT: Present and Future
PHARO IoT: Present and FutureESUG
 
Improving the Pharo VM
Improving the Pharo VMImproving the Pharo VM
Improving the Pharo VMFAST
 
Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotely
Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotelyPharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotely
Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotelyESUG
 
Cross-platform development with Pharo - The PharoLauncher case
Cross-platform development with Pharo - The PharoLauncher caseCross-platform development with Pharo - The PharoLauncher case
Cross-platform development with Pharo - The PharoLauncher caseESUG
 
Dependent things dependency management for apple sw - slideshare
Dependent things   dependency management for apple sw - slideshareDependent things   dependency management for apple sw - slideshare
Dependent things dependency management for apple sw - slideshareCavelle Benjamin
 
OSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adwareOSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adwareAmit Serper
 
Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and PharoPharo
 
Workshop For pycon13
Workshop For pycon13Workshop For pycon13
Workshop For pycon13Steven Pousty
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat OverviewMandi Walls
 
Applications in Pharo
Applications in PharoApplications in Pharo
Applications in PharoESUG
 
.Net framework 4.5 on raspberry pi
.Net framework 4.5 on raspberry pi.Net framework 4.5 on raspberry pi
.Net framework 4.5 on raspberry piNguyen Huu Thien An
 
.Net framework 4.5 on raspberry pi
.Net framework 4.5 on raspberry pi.Net framework 4.5 on raspberry pi
.Net framework 4.5 on raspberry piNguyen Huu Thien An
 
Run your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryRun your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryAndy Piper
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)jaxLondonConference
 
Midwest php 2013 deploying php on paas- why & how
Midwest php 2013   deploying php on paas- why & howMidwest php 2013   deploying php on paas- why & how
Midwest php 2013 deploying php on paas- why & howdotCloud
 
Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?AFUP_Limoges
 
Internet of Thing, is there a place for C# and .NET Framework?
Internet of Thing, is there a place for C# and .NET Framework?Internet of Thing, is there a place for C# and .NET Framework?
Internet of Thing, is there a place for C# and .NET Framework?William S. Rodriguez
 

Ähnlich wie PHARO IoT: Installation Improvements and Continuous Integration (20)

PHARO IoT: Present and Future
PHARO IoT: Present and FuturePHARO IoT: Present and Future
PHARO IoT: Present and Future
 
Improving the Pharo VM
Improving the Pharo VMImproving the Pharo VM
Improving the Pharo VM
 
Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotely
Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotelyPharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotely
Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotely
 
PHARO IOT
PHARO IOTPHARO IOT
PHARO IOT
 
Cross-platform development with Pharo - The PharoLauncher case
Cross-platform development with Pharo - The PharoLauncher caseCross-platform development with Pharo - The PharoLauncher case
Cross-platform development with Pharo - The PharoLauncher case
 
Dependent things dependency management for apple sw - slideshare
Dependent things   dependency management for apple sw - slideshareDependent things   dependency management for apple sw - slideshare
Dependent things dependency management for apple sw - slideshare
 
OSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adwareOSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adware
 
Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and Pharo
 
Workshop For pycon13
Workshop For pycon13Workshop For pycon13
Workshop For pycon13
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat Overview
 
Applications in Pharo
Applications in PharoApplications in Pharo
Applications in Pharo
 
.Net framework 4.5 on raspberry pi
.Net framework 4.5 on raspberry pi.Net framework 4.5 on raspberry pi
.Net framework 4.5 on raspberry pi
 
.Net framework 4.5 on raspberry pi
.Net framework 4.5 on raspberry pi.Net framework 4.5 on raspberry pi
.Net framework 4.5 on raspberry pi
 
Websocket 101 in Python
Websocket 101 in PythonWebsocket 101 in Python
Websocket 101 in Python
 
Run your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryRun your Java apps on Cloud Foundry
Run your Java apps on Cloud Foundry
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
 
Automation in Cloud
Automation in CloudAutomation in Cloud
Automation in Cloud
 
Midwest php 2013 deploying php on paas- why & how
Midwest php 2013   deploying php on paas- why & howMidwest php 2013   deploying php on paas- why & how
Midwest php 2013 deploying php on paas- why & how
 
Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?
 
Internet of Thing, is there a place for C# and .NET Framework?
Internet of Thing, is there a place for C# and .NET Framework?Internet of Thing, is there a place for C# and .NET Framework?
Internet of Thing, is there a place for C# and .NET Framework?
 

Mehr von Pharo

Yesplan: 10 Years later
Yesplan: 10 Years laterYesplan: 10 Years later
Yesplan: 10 Years laterPharo
 
Object-Centric Debugging: a preview
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a previewPharo
 
The future of testing in Pharo
The future of testing in PharoThe future of testing in Pharo
The future of testing in PharoPharo
 
Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Pharo
 
UI Testing with Spec
 UI Testing with Spec UI Testing with Spec
UI Testing with SpecPharo
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo
 
Easy REST with OpenAPI
Easy REST with OpenAPIEasy REST with OpenAPI
Easy REST with OpenAPIPharo
 
Comment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlComment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlPharo
 
apart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorksapart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorksPharo
 
XmppTalk
XmppTalkXmppTalk
XmppTalkPharo
 
A living programming environment for blockchain
A living programming environment for blockchainA living programming environment for blockchain
A living programming environment for blockchainPharo
 
Welcome: PharoDays 2017
Welcome: PharoDays 2017Welcome: PharoDays 2017
Welcome: PharoDays 2017Pharo
 
Pharo 6
Pharo 6Pharo 6
Pharo 6Pharo
 
Robotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoRobotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoPharo
 
Pharo 64bits
Pharo 64bitsPharo 64bits
Pharo 64bitsPharo
 
Smack: Behind the Refactorings
Smack: Behind the RefactoringsSmack: Behind the Refactorings
Smack: Behind the RefactoringsPharo
 
Pharo VM Performance
Pharo VM PerformancePharo VM Performance
Pharo VM PerformancePharo
 
Git with Style
Git with StyleGit with Style
Git with StylePharo
 
Pharo JS
Pharo JSPharo JS
Pharo JSPharo
 
Seaside & ReactJS
Seaside & ReactJSSeaside & ReactJS
Seaside & ReactJSPharo
 

Mehr von Pharo (20)

Yesplan: 10 Years later
Yesplan: 10 Years laterYesplan: 10 Years later
Yesplan: 10 Years later
 
Object-Centric Debugging: a preview
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a preview
 
The future of testing in Pharo
The future of testing in PharoThe future of testing in Pharo
The future of testing in Pharo
 
Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI
 
UI Testing with Spec
 UI Testing with Spec UI Testing with Spec
UI Testing with Spec
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alpha
 
Easy REST with OpenAPI
Easy REST with OpenAPIEasy REST with OpenAPI
Easy REST with OpenAPI
 
Comment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlComment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowl
 
apart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorksapart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorks
 
XmppTalk
XmppTalkXmppTalk
XmppTalk
 
A living programming environment for blockchain
A living programming environment for blockchainA living programming environment for blockchain
A living programming environment for blockchain
 
Welcome: PharoDays 2017
Welcome: PharoDays 2017Welcome: PharoDays 2017
Welcome: PharoDays 2017
 
Pharo 6
Pharo 6Pharo 6
Pharo 6
 
Robotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoRobotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with Pharo
 
Pharo 64bits
Pharo 64bitsPharo 64bits
Pharo 64bits
 
Smack: Behind the Refactorings
Smack: Behind the RefactoringsSmack: Behind the Refactorings
Smack: Behind the Refactorings
 
Pharo VM Performance
Pharo VM PerformancePharo VM Performance
Pharo VM Performance
 
Git with Style
Git with StyleGit with Style
Git with Style
 
Pharo JS
Pharo JSPharo JS
Pharo JS
 
Seaside & ReactJS
Seaside & ReactJSSeaside & ReactJS
Seaside & ReactJS
 

Kürzlich hochgeladen

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Kürzlich hochgeladen (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

PHARO IoT: Installation Improvements and Continuous Integration

  • 1. PHARO IoT Installation Improvements and Continuous Integration Allex Oliveira IoT Engineer @ RMoD Team, INRIA allex.oliveira@msn.com 1
  • 2. Summary 1 – Getting experience 2 – Making the process easy 3 – Continuous Integration 4 – The future !2
  • 3. 1 - Overview • Created by Rmod Team, a research team from INRIA (France) • Written by Denis Kudriashov in 2016/17 dionisiydk@gmail.com • In 2018, Allex Oliveira joined the Rmod Team to continue the project  !3
  • 4. • A Pharo image running on IoT device (ARM VM) • A Pharo library to control GPIOs (PharoThings)  • A Remote IDE • Remote Playground, Browser, Inspectors • An advanced board inspector for Raspberry PI • Other IoT Projects: • A Pharo library to control Arduino Devices (Firmata) What is Pharo IoT? !4
  • 6. Motivation • It's not very easy to get started with PharoThings for anyone who is not a Pharo/Smalltalk user. • How can we automate the process to make the developer’s life easier? Before we automate something, we should ask: How can we improve it? !6
  • 7. How to know what to improve? Real world experience IoT Workshop, ESUG September 2018 - Cagliari, Italy ! !7
  • 8. How to know what to improve? Real world experience IoT Hackaton, Zweidenker GmbH October 2018 - Cologne, Germany " !8
  • 9. How to know what to improve? Real world experience Live Programming IoT devices with PharoThings January 2019 - Can Tho University, Vietnam # !9
  • 10. How to know what to improve? Real world experience ESUG Conference European Smalltalk User Group Sep 2018 Cagliari, Italy INRIA Pharo 10 Years Nov 2018 Lille, France USTH University of Science and Technology of Hanoi Jan 2019 Hanoi, Vietnam #$! !10
  • 11. 2 - Difficulties 1. Is not so easy to start (many steps needed to run it); 2. Takes a long time to start (get everything); 3. Download VMs to different OS (ARM, Linux, Win, OSX); 4. Need the same version on server/client; 5. Needs a keyboard/screen on Raspberry to install from scratch; 6. No many application examples; 7. Search example code: copy and paste (pdf bad formatting); !11
  • 12. 2 - Difficulties 1. Is not so easy to start (many steps needed to run it); 2. Takes a long time to start (get everything); 3. Download VMs to different OS (ARM, Linux, Win, OSX); 4. Need the same version on server/client; 5. Needs a keyboard/screen on Raspberry to install from scratch; 6. No many application examples; 7. Search example code: copy and paste (pdf bad formatting); !12
  • 13. How to install (manually) 1 2 3 4 5 6 1. Install PharoLauncher and create a new image 2. Load PharoThings project from Github 3. Copy ARM VM and Pharo Image to Raspberry Pi 4. Set the run permissions "chmod +x" 5. Run TelePharo server in a big command line 6. Extra configurations: set hostname, WiFi, autorun !13
  • 14. How to install (manually) 1 2 3 4 5 6 1. Install PharoLauncher and create a new image !14
  • 15. How to install (manually) 1 2 3 4 5 6 2. Load PharoThings project from Github !15
  • 16. How to install (manually) 1 2 3 4 5 6 3. Copy ARM VM and Pharo Image to Raspberry Pi !16
  • 17. How to install (manually) 1 2 3 4 5 6 4. Set the run permissions "chmod +x" !17
  • 18. How to install (manually) 1 2 3 4 5 6 5. Run TelePharo server in a big command line !18
  • 19. How to install (manually) 1 2 3 4 5 6 6. Extra configurations • Auto connect on WiFi network • Set hostname • Autostart TelePharo server every boot • Set boot to console (disable the Linux UI) • Enable I2C and SPI kernel modules !19
  • 20. How to install (zero-conf) 1 2 3 4 5 6 1. Run the command to download and extract the files: • wget -O - get.pharoiot.org/server | bash 2. Run TelePharo server: • 1 click on pharo-server file or… • type in terminal: ./pharo-server Less than 1 minute! !20
  • 21. How to install (zero-conf) 1 2 3 4 5 6 6. Extra configurations !21
  • 22. 1. Is not so easy to start (many steps needed to run it); 2. Takes a long time to start (get everything); 3. Download VMs to different OS (ARM, Linux, Win, OSX); 4. Need the same version on server/client; 5. Needs a keyboard/screen on Raspberry to install from scratch; 6. No many application examples; 7. Search example code: copy and paste (pdf bad formatting); 2 - Difficulties !22
  • 23. + Pharo Image 32/64 + PharoThings loaded + ARM VM + Windows, Linux, Mac VMs Packing everything !23
  • 24. + Pharo Image 32/64 + PharoThings loaded + ARM VM + Windows, Linux, Mac VMs + 1 click run files pharo-ui pharo-server pharo pharo.bat 1-click run files !24
  • 25. 1. Is not so easy to start (many steps needed to run it); 2. Takes a long time to start (get everything); 3. Download VMs to different OS (ARM, Linux, Win, OSX); 4. Need the same version on server/client; 5. Needs a keyboard/screen on Raspberry to install from scratch; 6. No many application examples; 7. Search example code: copy and paste (pdf bad formatting); 2 - Difficulties !25
  • 26. Installing from scratch + Installing Raspbian + Download Pharo IoT + Set Hostname + Enable I2C and SPI + Connect on WiFi + Start server every boot Keyboard,mouse or monitor not required Less than 10 minutes! !26
  • 27. 1. Is not so easy to start (many steps needed to run it); 2. Takes a long time to start (get everything); 3. Download VMs to different OS (ARM, Linux, Win, OSX); 4. Need the same version on server/client; 5. Needs a keyboard/screen on Raspberry to install from scratch; 6. No many application examples; 7. Search example code: copy and paste (pdf bad formatting); 2 - Difficulties !27
  • 30. 1. Is not so easy to start (many steps needed to run it); 2. Takes a long time to start (get everything); 3. Download VMs to different OS (ARM, Linux, Win, OSX); 4. Need the same version on server/client; 5. Needs a keyboard/screen on Raspberry to install from scratch; 6. No many application examples; 7. Search example code: copy and paste (pdf bad formatting); 2 - Difficulties !30
  • 32. 1. Is not so easy to start (many steps needed to run it); 2. Takes a long time to start (get everything); 3. Download VMs to different OS (ARM, Linux, Win, OSX); 4. Need the same version on server/client; 5. Needs a keyboard/screen on Raspberry to install from scratch; 6. No many application examples; 7. Search example code: copy and paste (pdf bad formatting); 2 - Difficulties !32
  • 33. 3 - Continuous Integration After these improvements, now we can automate the process: • Create PDF Booklet • Load PharoThings on image 32/64 • Download last VMs • Create the 1 click-run files • Zip everything • Deploy How to automate? !33
  • 34. 3 - Continuous Integration Travis CI on PharoThings Booklet • With each commit in Github, a new instance of a Travis virtual machine is created and the scripts executed • The booklet is created using Pillar, a Pharo tool-suite to generate documentation, books, websites and slides • Deploy in Github releases is done in each changes on the booklet • The process is transparent, anyone can see and contribute to improvements !34
  • 35. 3 - Continuous Integration Travis CI on PharoThings Booklet github.com/SquareBracketAssociates/ Booklet-APharoThingsTutorial/.travis.yml travis-ci.org/SquareBracketAssociates/ Booklet-APharoThingsTutorial new commit run scripts/tests new Github release https://github.com/SquareBracketAssociates/Booklet-APharoThingsTutorial !35
  • 36. 3 - Continuous Integration Travis CI on PharoThings Booklet https://github.com/SquareBracketAssociates/Booklet-APharoThingsTutorial !36
  • 37. 3 - Continuous Integration Travis CI on Pharo IoT • With each commit in Github, a new instance of a Travis virtual machine is created and the scripts executed • Deploy is done only when a new Github Tag is created • PharoThings is loaded in 32/64 images • Zip files with everything (VMs, Images, 1 click-run) are up in Github releases. We put it inside the repo also. • The process is transparent, anyone can see and contribute to improvements !37
  • 38. 3 - Continuous Integration Travis CI on Pharo IoT https://github.com/pharo-iot/Ci github.com/pharo-iot/Ci/.travis.yml travis-ci.org/pharo-iot/Ci new commit run scripts/tests is it tag? finishnoyes new Github release Github push !38
  • 39. 3 - Continuous Integration Travis CI on Pharo IoT https://github.com/pharo-iot/Ci !39
  • 40. • We are using the Github Pages to host the zero-conf pages get.pharoiot.org https://github.com/pharo-iot/Ci/docs !40
  • 41. github.com/pharo-iot • We are starting using Github Projects to work in a more transparent and dynamic way. https://github.com/orgs/pharo-iot/projects/1 You can take some tasks! !41
  • 42. Now you can + IoT < 10 minutes IoT < 1 minute IoT IDE < 1 minute Booklet Quickstart Guide Be part of the project! !42
  • 44. pharoiot.org Everything in the same place, to facilitate the journey of the new user. !44
  • 45. pharoiot.org • Share your IoT projects using Pharo with the community! !45
  • 46. Tele Radar Automatic detection of running images in network  (TeleRadar using SSDP protocol) !46
  • 49. Tool to “brew” SD Cards • “brew" a new SD Card to inside Pharo (like PiBakery) !49
  • 50. NOW IN LESS THAN 10 MINUTES! With Pharo IoT you can THANKS! Any questions? allex.oliveira@msn.com • Dynamically update your running board • Interact remotely with pins  and boards • Modify the system while it is running (create new board, change code) • Make your changes persistent get.pharoiot.org !50
  • 51. Presentation Information This slides was presented at Pharo Days 2019, Lille, France https://pharo.org/2019PharoDays •Title: Pharo IoT - Installation Improvements and Continuous Integration •Presenters: Allex Oliveira - linkedin.com/in/allex-oliveira INRIA https://www.inria.fr/ RMOD TEAM https://rmod.inria.fr/web PHARO PROJECT https://github.com/pharo-project/pharo PHAROTHINGS PROJECT https://github.com/pharo-iot/PharoThings PHARO IoT http://get.pharoiot.org !51