SlideShare a Scribd company logo
1 of 50
Download to read offline
Creating Art
with a Raspberry Pi
Adventures in trying out hardware, code,
and having fun in a personal project
Stephanie Nemeth  @stephaniecodes
stephanie.lol
Hi, I'm Stephanie.
Frontend/JS Developer at
Organizer of
Mentor at


Stupid Hackathon AMS
NodeSchool AMS
stephanie.lol
@stephaniecodes
Me:
6 months ago
I visited an art
museum.
Jean Tinguely
http://www.flickriver.com/photos/46774986@N02/17028829322/
“I wanted something ephemeral
that would pass like a falling star...
The work had to just transpire,
make people dream and talk, and
that would be all.“
- Jean Tinguely
What I dreamed of
What I Built
0:00 / 0:06
Phase I: Planning
 Project Idea
 Identify Skills Needed
 Research Hardware
 Create A Mockup
 Identify My Must-Haves
 Assembly my Toolkit
 Finally, I'm ready to code!
- Coding Skills
- Artistic Ability
- Experience Working With Hardware
- Wiring/Soldering Experience
Reality Check
 Could probably handle the coding
 Not a real artist
 No experience with hardware
 No experience with wiring or soldering
I started googling.
I needed to find a plug and play hardware option.
HATS
Hardware Attached on Top
Easily plugs into a Raspberry Pi's GPIO
No Soldering or Wiring!
HATS
They have established libraries!
Many kinds of HATs
pimoroni.com
TEXT
LIGHTS
SENSORS
MUSIC
AUDIO
Unicorn HAT
64 LED Lights
I saw Pixel Art
 Project Idea
 Identify Skills Needed
 Research Hardware
 Create A Mockup
 Identify My Must-Haves
 Assembly my Toolkit
 Finally, I'm ready to code!
A Mockup of My Idea
 Project Idea
 Identify Skills Needed
 Research Hardware
 Create A Mockup
 Identify My Must-Haves
 Assembly my Toolkit
 Finally, I'm ready to code!
Must-Haves
- Anyone in the world could interact with the application
- Users can create colorful pixel artwork!
- Build with Javascript & React to improve my skills
 Project Idea
 Identify Skills Needed
 Research Hardware
 Create A Mockup
 Identify My Must-Haves
 Assembly my Toolkit
 Finally, I'm ready to code!
1. User Creates Art
Write the web app in React & React-Native
2. Display the art
Raspberry Pi + Unicorn HAT + Python
3. How do they communicate?
Other Unicorn HAT projects
- Github repos
- Blog posts
Raspberry Pi project made with React?
- Hard to find examples.
- But, I found one lightning talk video!
Socket.IO
Enables real-time communication between apps
Works on every platform, browser or device
Easy setup: Only a node.js server & client libraries
Has client libraries for Python and React!
Socket.IO Server
var server = require('http').createServer();
var io = require('socket.io')(server);
io.on('connection', function(socket) {
socket.on('artSubmitted', function(data) {
io.emit('updateState', data);
});
});
server.listen(3000);
Socket.IO React Client
import React, { Component } from 'react';
import io from 'socket.io-client';
const socket = io('http://localhost:8000', {});
class App extends Component {
...other code here...
// onSubmit action to send art to Pi
sendMessage = (message, data) => {
socket.emit(message, data);
}
}
Socket.IO Pi Client
from socketIO_client import SocketIO
socketIO = SocketIO('http://localhost:8000')
def main():
# Gets msg from other client & call updateState method
socketIO.on('updateState', updateState)
# Keeps the socket open...
socketIO.wait()
def updateState(data):
# Do stuff with data & turn on LEDs
...more code here...
Project Design
 Project Idea
 Identify Skills Needed
 Research Hardware
 Create A Mockup
 Identify My Must-Haves
 Assembly my Toolkit
 Finally, I'm ready to code!
Phase II: Building
“Taking on large tasks, or too many
tasks at once, overwhelms us. You’re
more likely to follow through if the task
is small. Once successful, you can then
try a new activity or increase the
original task’s complexity.“
- Sabina Nawaz
https://hbr.org/2017/02/break-bad-habits-with-a-simple-checklist
Break Up Goals
- Turn on one LED on the HAT
- Turn on multiple LEDS in 1 color
- Turn on multiple LEDS in multiple colors
Light one LED
Break it down into even smaller goals
Click a button, send text message to hardware
Click a button, see one pixel light up
Click on grid square, see that pixel light up


Breaking Up Goals
Kept my momentum in the project
Multiple small 'wins' prevents discouragement
Light one LED Display pixel art in only ONE color
Display pixel art in multiple colors!
 
Try it out!
https://light-art.herokuapp.com
Surprise Bonus Project!
Arduino + LEDs + Socket.IO client in my shirt
Project Design
Making a Connected Wearable
Arduino + Neopixel LEDs + C++
Feather Huzzah ESP8266 WiFi
Wiring Prototype
Arduino
NeoPixel LED Strips
Battery
On/Off Switch
Achievements Unlocked!
Wiring + Soldering
Breaking Up Goals
 Kept adding on to project
 Wasn't intimidated to try new hardware
 Gained skills I didn't know I could
Final Thoughts
- I had never written for hardware.
- I had never written any Python or React Native.
- I had never built anything using Socket.IO.
- I had never built a server with JavaScript.
- I had never combined so many tools into one project.
Final Thoughts
Despite all these "nevers", I managed to pull off a
cool first hardware project using a Pi.
(And I ended up with a new dev job!)
Don't let what you think are your insufficiencies
hold you back from tackling the stuff you really
want to build.
Thank you!
Now go create something wonderful.
Slides available at
Stephanie Nemeth  @stephaniecodes
stephanie.lol/codemotion
stephanie.lol

More Related Content

What's hot

Reproducible Workflow with Cytoscape and Jupyter Notebook
Reproducible Workflow with Cytoscape and Jupyter NotebookReproducible Workflow with Cytoscape and Jupyter Notebook
Reproducible Workflow with Cytoscape and Jupyter NotebookKeiichiro Ono
 
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...Keiichiro Ono
 
EuroPython 2020 - Speak python with devices
EuroPython 2020 - Speak python with devicesEuroPython 2020 - Speak python with devices
EuroPython 2020 - Speak python with devicesHua Chu
 
High Performance Machine Learning in R with H2O
High Performance Machine Learning in R with H2OHigh Performance Machine Learning in R with H2O
High Performance Machine Learning in R with H2OSri Ambati
 
Python as the Zen of Data Science
Python as the Zen of Data SciencePython as the Zen of Data Science
Python as the Zen of Data ScienceTravis Oliphant
 
Puppet, now with google!
Puppet, now with google!Puppet, now with google!
Puppet, now with google!Puppet
 
Ceph Day Chicago - Ceph Ecosystem Update
Ceph Day Chicago - Ceph Ecosystem Update Ceph Day Chicago - Ceph Ecosystem Update
Ceph Day Chicago - Ceph Ecosystem Update Ceph Community
 
FireWorks overview
FireWorks overviewFireWorks overview
FireWorks overviewAnubhav Jain
 
C# - Raise the bar with functional & immutable constructs (Dutch)
C# - Raise the bar with functional & immutable constructs (Dutch)C# - Raise the bar with functional & immutable constructs (Dutch)
C# - Raise the bar with functional & immutable constructs (Dutch)Rick Beerendonk
 
PTU: Using Provenance for Repeatability
PTU: Using Provenance for RepeatabilityPTU: Using Provenance for Repeatability
PTU: Using Provenance for RepeatabilityTanu Malik
 
Realtime processing with storm presentation
Realtime processing with storm presentationRealtime processing with storm presentation
Realtime processing with storm presentationGabriel Eisbruch
 
Scaling PyData Up and Out
Scaling PyData Up and OutScaling PyData Up and Out
Scaling PyData Up and OutTravis Oliphant
 
Real Time Graph Computations in Storm, Neo4J, Python - PyCon India 2013
Real Time Graph Computations in Storm, Neo4J, Python - PyCon India 2013Real Time Graph Computations in Storm, Neo4J, Python - PyCon India 2013
Real Time Graph Computations in Storm, Neo4J, Python - PyCon India 2013Sonal Raj
 
Fast and Scalable Python
Fast and Scalable PythonFast and Scalable Python
Fast and Scalable PythonTravis Oliphant
 

What's hot (20)

Reproducible Workflow with Cytoscape and Jupyter Notebook
Reproducible Workflow with Cytoscape and Jupyter NotebookReproducible Workflow with Cytoscape and Jupyter Notebook
Reproducible Workflow with Cytoscape and Jupyter Notebook
 
MAVRL Workshop 2014 - Python Materials Genomics (pymatgen)
MAVRL Workshop 2014 - Python Materials Genomics (pymatgen)MAVRL Workshop 2014 - Python Materials Genomics (pymatgen)
MAVRL Workshop 2014 - Python Materials Genomics (pymatgen)
 
MAVRL Workshop 2014 - pymatgen-db & custodian
MAVRL Workshop 2014 - pymatgen-db & custodianMAVRL Workshop 2014 - pymatgen-db & custodian
MAVRL Workshop 2014 - pymatgen-db & custodian
 
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
SDCSB Advanced Tutorial: Reproducible Data Visualization Workflow with Cytosc...
 
EuroPython 2020 - Speak python with devices
EuroPython 2020 - Speak python with devicesEuroPython 2020 - Speak python with devices
EuroPython 2020 - Speak python with devices
 
High Performance Machine Learning in R with H2O
High Performance Machine Learning in R with H2OHigh Performance Machine Learning in R with H2O
High Performance Machine Learning in R with H2O
 
Python as the Zen of Data Science
Python as the Zen of Data SciencePython as the Zen of Data Science
Python as the Zen of Data Science
 
Puppet, now with google!
Puppet, now with google!Puppet, now with google!
Puppet, now with google!
 
Bids talk 9.18
Bids talk 9.18Bids talk 9.18
Bids talk 9.18
 
London level39
London level39London level39
London level39
 
Ceph Day Chicago - Ceph Ecosystem Update
Ceph Day Chicago - Ceph Ecosystem Update Ceph Day Chicago - Ceph Ecosystem Update
Ceph Day Chicago - Ceph Ecosystem Update
 
FireWorks overview
FireWorks overviewFireWorks overview
FireWorks overview
 
C# - Raise the bar with functional & immutable constructs (Dutch)
C# - Raise the bar with functional & immutable constructs (Dutch)C# - Raise the bar with functional & immutable constructs (Dutch)
C# - Raise the bar with functional & immutable constructs (Dutch)
 
PyData Boston 2013
PyData Boston 2013PyData Boston 2013
PyData Boston 2013
 
PTU: Using Provenance for Repeatability
PTU: Using Provenance for RepeatabilityPTU: Using Provenance for Repeatability
PTU: Using Provenance for Repeatability
 
Realtime processing with storm presentation
Realtime processing with storm presentationRealtime processing with storm presentation
Realtime processing with storm presentation
 
Scaling PyData Up and Out
Scaling PyData Up and OutScaling PyData Up and Out
Scaling PyData Up and Out
 
Real Time Graph Computations in Storm, Neo4J, Python - PyCon India 2013
Real Time Graph Computations in Storm, Neo4J, Python - PyCon India 2013Real Time Graph Computations in Storm, Neo4J, Python - PyCon India 2013
Real Time Graph Computations in Storm, Neo4J, Python - PyCon India 2013
 
Apache Toree
Apache ToreeApache Toree
Apache Toree
 
Fast and Scalable Python
Fast and Scalable PythonFast and Scalable Python
Fast and Scalable Python
 

Similar to Creating Art with a Raspberry Pi - Stephanie Nemeth - Codemotion Amsterdam 2017

I Heart LilyPad Arduino
I Heart LilyPad ArduinoI Heart LilyPad Arduino
I Heart LilyPad ArduinoRain Ashford
 
LilyPad Arduino = \o/
LilyPad Arduino = \o/LilyPad Arduino = \o/
LilyPad Arduino = \o/Rain Ashford
 
Programming the Real World: Javascript for Makers
Programming the Real World: Javascript for MakersProgramming the Real World: Javascript for Makers
Programming the Real World: Javascript for Makerspchristensen
 
Simplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsSimplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsRui Carvalho
 
Building a Thought Controlled Drone
Building a Thought Controlled DroneBuilding a Thought Controlled Drone
Building a Thought Controlled DroneJim McKeeth
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedWojciech Koszek
 
Building Droids with JavaScript
Building Droids with JavaScriptBuilding Droids with JavaScript
Building Droids with JavaScriptAndrew Fisher
 
Prototyping in code
Prototyping in codePrototyping in code
Prototyping in codeMarcin Ignac
 
The Rise of Maker Movement in Indonesia
The Rise of Maker Movement in IndonesiaThe Rise of Maker Movement in Indonesia
The Rise of Maker Movement in IndonesiaAndri Yadi
 
Advanced view arduino projects list part 4 use arduino for projects
Advanced view arduino projects list part 4 use arduino for projectsAdvanced view arduino projects list part 4 use arduino for projects
Advanced view arduino projects list part 4 use arduino for projectsWiseNaeem
 
From zero to hero with React Native!
From zero to hero with React Native!From zero to hero with React Native!
From zero to hero with React Native!Commit University
 
Arduino Development For Beginners
Arduino Development For BeginnersArduino Development For Beginners
Arduino Development For BeginnersFTS seminar
 
Hacking your doorbell - Karl-Henrik Nilsson - Codemotion Rome 2015
Hacking your doorbell - Karl-Henrik Nilsson - Codemotion Rome 2015Hacking your doorbell - Karl-Henrik Nilsson - Codemotion Rome 2015
Hacking your doorbell - Karl-Henrik Nilsson - Codemotion Rome 2015Codemotion
 
Getting Started with Raspberry Pi and Arduino
Getting Started with Raspberry Pi and ArduinoGetting Started with Raspberry Pi and Arduino
Getting Started with Raspberry Pi and ArduinoChad Mairn
 
Eating Fruit - Combining Robots & Apps
Eating Fruit - Combining Robots & AppsEating Fruit - Combining Robots & Apps
Eating Fruit - Combining Robots & AppsRobotGrrl
 
Open Hardware Summit 2014
Open Hardware Summit 2014Open Hardware Summit 2014
Open Hardware Summit 2014Drew Fustini
 
Evangelizing Your Thing (Extended Edition)
Evangelizing Your Thing (Extended Edition)Evangelizing Your Thing (Extended Edition)
Evangelizing Your Thing (Extended Edition)Rex St. John
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneEdorian
 
Portfolio_Rolf Huijgen
Portfolio_Rolf HuijgenPortfolio_Rolf Huijgen
Portfolio_Rolf HuijgenRolf Huijgen
 

Similar to Creating Art with a Raspberry Pi - Stephanie Nemeth - Codemotion Amsterdam 2017 (20)

I Heart LilyPad Arduino
I Heart LilyPad ArduinoI Heart LilyPad Arduino
I Heart LilyPad Arduino
 
LilyPad Arduino = \o/
LilyPad Arduino = \o/LilyPad Arduino = \o/
LilyPad Arduino = \o/
 
Programming the Real World: Javascript for Makers
Programming the Real World: Javascript for MakersProgramming the Real World: Javascript for Makers
Programming the Real World: Javascript for Makers
 
Simplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsSimplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and tools
 
Building a Thought Controlled Drone
Building a Thought Controlled DroneBuilding a Thought Controlled Drone
Building a Thought Controlled Drone
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
 
Building Droids with JavaScript
Building Droids with JavaScriptBuilding Droids with JavaScript
Building Droids with JavaScript
 
Prototyping in code
Prototyping in codePrototyping in code
Prototyping in code
 
The Rise of Maker Movement in Indonesia
The Rise of Maker Movement in IndonesiaThe Rise of Maker Movement in Indonesia
The Rise of Maker Movement in Indonesia
 
Advanced view arduino projects list part 4 use arduino for projects
Advanced view arduino projects list part 4 use arduino for projectsAdvanced view arduino projects list part 4 use arduino for projects
Advanced view arduino projects list part 4 use arduino for projects
 
Sketching in Code
Sketching in CodeSketching in Code
Sketching in Code
 
From zero to hero with React Native!
From zero to hero with React Native!From zero to hero with React Native!
From zero to hero with React Native!
 
Arduino Development For Beginners
Arduino Development For BeginnersArduino Development For Beginners
Arduino Development For Beginners
 
Hacking your doorbell - Karl-Henrik Nilsson - Codemotion Rome 2015
Hacking your doorbell - Karl-Henrik Nilsson - Codemotion Rome 2015Hacking your doorbell - Karl-Henrik Nilsson - Codemotion Rome 2015
Hacking your doorbell - Karl-Henrik Nilsson - Codemotion Rome 2015
 
Getting Started with Raspberry Pi and Arduino
Getting Started with Raspberry Pi and ArduinoGetting Started with Raspberry Pi and Arduino
Getting Started with Raspberry Pi and Arduino
 
Eating Fruit - Combining Robots & Apps
Eating Fruit - Combining Robots & AppsEating Fruit - Combining Robots & Apps
Eating Fruit - Combining Robots & Apps
 
Open Hardware Summit 2014
Open Hardware Summit 2014Open Hardware Summit 2014
Open Hardware Summit 2014
 
Evangelizing Your Thing (Extended Edition)
Evangelizing Your Thing (Extended Edition)Evangelizing Your Thing (Extended Edition)
Evangelizing Your Thing (Extended Edition)
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it done
 
Portfolio_Rolf Huijgen
Portfolio_Rolf HuijgenPortfolio_Rolf Huijgen
Portfolio_Rolf Huijgen
 

More from Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Recently uploaded (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 

Creating Art with a Raspberry Pi - Stephanie Nemeth - Codemotion Amsterdam 2017

  • 1. Creating Art with a Raspberry Pi Adventures in trying out hardware, code, and having fun in a personal project Stephanie Nemeth  @stephaniecodes stephanie.lol
  • 2. Hi, I'm Stephanie. Frontend/JS Developer at Organizer of Mentor at   Stupid Hackathon AMS NodeSchool AMS stephanie.lol @stephaniecodes
  • 4. I visited an art museum.
  • 6. “I wanted something ephemeral that would pass like a falling star... The work had to just transpire, make people dream and talk, and that would be all.“ - Jean Tinguely
  • 10.  Project Idea  Identify Skills Needed  Research Hardware  Create A Mockup  Identify My Must-Haves  Assembly my Toolkit  Finally, I'm ready to code!
  • 11. - Coding Skills - Artistic Ability - Experience Working With Hardware - Wiring/Soldering Experience
  • 12. Reality Check  Could probably handle the coding  Not a real artist  No experience with hardware  No experience with wiring or soldering
  • 13. I started googling. I needed to find a plug and play hardware option.
  • 14. HATS Hardware Attached on Top Easily plugs into a Raspberry Pi's GPIO No Soldering or Wiring!
  • 16. Many kinds of HATs pimoroni.com TEXT LIGHTS SENSORS MUSIC AUDIO
  • 18. I saw Pixel Art
  • 19.  Project Idea  Identify Skills Needed  Research Hardware  Create A Mockup  Identify My Must-Haves  Assembly my Toolkit  Finally, I'm ready to code!
  • 20. A Mockup of My Idea
  • 21.  Project Idea  Identify Skills Needed  Research Hardware  Create A Mockup  Identify My Must-Haves  Assembly my Toolkit  Finally, I'm ready to code!
  • 22. Must-Haves - Anyone in the world could interact with the application - Users can create colorful pixel artwork! - Build with Javascript & React to improve my skills
  • 23.  Project Idea  Identify Skills Needed  Research Hardware  Create A Mockup  Identify My Must-Haves  Assembly my Toolkit  Finally, I'm ready to code!
  • 24. 1. User Creates Art Write the web app in React & React-Native
  • 25. 2. Display the art Raspberry Pi + Unicorn HAT + Python
  • 26. 3. How do they communicate?
  • 27.
  • 28. Other Unicorn HAT projects - Github repos - Blog posts Raspberry Pi project made with React? - Hard to find examples. - But, I found one lightning talk video!
  • 29. Socket.IO Enables real-time communication between apps Works on every platform, browser or device Easy setup: Only a node.js server & client libraries Has client libraries for Python and React!
  • 30. Socket.IO Server var server = require('http').createServer(); var io = require('socket.io')(server); io.on('connection', function(socket) { socket.on('artSubmitted', function(data) { io.emit('updateState', data); }); }); server.listen(3000);
  • 31. Socket.IO React Client import React, { Component } from 'react'; import io from 'socket.io-client'; const socket = io('http://localhost:8000', {}); class App extends Component { ...other code here... // onSubmit action to send art to Pi sendMessage = (message, data) => { socket.emit(message, data); } }
  • 32. Socket.IO Pi Client from socketIO_client import SocketIO socketIO = SocketIO('http://localhost:8000') def main(): # Gets msg from other client & call updateState method socketIO.on('updateState', updateState) # Keeps the socket open... socketIO.wait() def updateState(data): # Do stuff with data & turn on LEDs ...more code here...
  • 34.  Project Idea  Identify Skills Needed  Research Hardware  Create A Mockup  Identify My Must-Haves  Assembly my Toolkit  Finally, I'm ready to code!
  • 36. “Taking on large tasks, or too many tasks at once, overwhelms us. You’re more likely to follow through if the task is small. Once successful, you can then try a new activity or increase the original task’s complexity.“ - Sabina Nawaz https://hbr.org/2017/02/break-bad-habits-with-a-simple-checklist
  • 37. Break Up Goals - Turn on one LED on the HAT - Turn on multiple LEDS in 1 color - Turn on multiple LEDS in multiple colors
  • 38. Light one LED Break it down into even smaller goals Click a button, send text message to hardware Click a button, see one pixel light up Click on grid square, see that pixel light up  
  • 39. Breaking Up Goals Kept my momentum in the project Multiple small 'wins' prevents discouragement Light one LED Display pixel art in only ONE color Display pixel art in multiple colors!  
  • 41. Surprise Bonus Project! Arduino + LEDs + Socket.IO client in my shirt
  • 43. Making a Connected Wearable Arduino + Neopixel LEDs + C++ Feather Huzzah ESP8266 WiFi
  • 44. Wiring Prototype Arduino NeoPixel LED Strips Battery On/Off Switch
  • 46. Breaking Up Goals  Kept adding on to project  Wasn't intimidated to try new hardware  Gained skills I didn't know I could
  • 47. Final Thoughts - I had never written for hardware. - I had never written any Python or React Native. - I had never built anything using Socket.IO. - I had never built a server with JavaScript. - I had never combined so many tools into one project.
  • 48. Final Thoughts Despite all these "nevers", I managed to pull off a cool first hardware project using a Pi. (And I ended up with a new dev job!)
  • 49. Don't let what you think are your insufficiencies hold you back from tackling the stuff you really want to build.
  • 50. Thank you! Now go create something wonderful. Slides available at Stephanie Nemeth  @stephaniecodes stephanie.lol/codemotion stephanie.lol