SlideShare a Scribd company logo
1 of 62
Download to read offline
Programming the
real World
Peter Christensen
http://pchristensen.com
@christensenp
Why Do We Love
Programming?
• Challenge of problem solving
• Creating something that didn’t exist before
• Seeing something work
• Show off our abilities
• ...but everybody loves those feelings!
Everybody Wants To Create
Artists...
Everybody Wants To Create
Athletes...
Everybody Wants To Create
Young and old...
Everybody Wants To Create
Politicians...
(no, really!)
Everybody Wants To Create
Engineers...
Everybody Wants To Create
Fashion designers...
Software is Different
Software is Different
• Something about creating with software is
qualitatively different
• How many pottery billionaires have you
heard of lately?
• How many other young businesses have
hundreds of millions of users?
Why Is Software Different?
vs
Software is design-only,
with no marginal cost to reproduce
Why Is Software Different?
vs
Software has a lower barrier to participation.
What is the “Hello World” for surgery?
Why Is Software Different?
vs
Distribution is easier and cheaper
Why Is Software Different?
Tools and libraries let us abstract away non-core tasks
Why Is Software Different?
Communities and contribution tools
allow us to build on the best work of others
It’s Not Just For
Software Anymore
The Maker Movement
• Costs for hardware of all sorts are falling
• Resources for learning electronics and
hardware are better than ever and improving
• The internet makes showing off your
creations easier than ever
• Maker Faire - the biggest show and tell on
Earth - http://makerfaire.com/
Maker Faire
Robot bugs that skitter,
made with $10 of electronics
Maker Faire
Real-time visualization of dancing
https://github.com/benMcChesney/ofxOpenVJ
Maker Faire
250 Fish and Lobsters Singing Beethoven’s 9th
http://www.sashimitabernaclechoir.org/
Maker Faire
Coming Soon to a City Near You!
http://makerfaire.com/map/
The Maker Movement
New tools for design and experimentation
Left: http://upverter.com for designing circuits
Right: 3D printer for prototyping complex shapes
The Maker Movement
Tools and resources for learning
L: Adafruit tutorials http://learn.adafruit.com/
C: LightUp augmented reality http://www.lightup.io/
R: littleBits kits http://littlebits.com/
The Maker Movement
DIY Projects
Left: Roominate DIY Dollhouse Kits
http://www.roominatetoy.com/
Right: Retro Gaming with Raspberry Pi
http://learn.adafruit.com/retro-gaming-with-raspberry-pi
Software Enables Intelligent
Interaction With Abstract
Things
Hardware Enables Intelligent
Interaction With Physical
Things
Hardware Becoming Software
http://www.paulgraham.com/hw.html
“Hackers love to build hardware, and customers love
to buy it. So if the ease of shipping hardware even
approached the ease of shipping software, we'd see a
lot more hardware startups.”
Hardware Becoming Software
• Shrinking marginal cost - cheaper hardware
• Broad participation - Maker movement
• Distribution - Kickstarter, Shopify
• Abstract non-core tasks - kits, more
components
• Community and collaboration
Arduino
Arduino is an open-source
electronics prototyping
platform based on flexible,
easy-to-use hardware and
software. It's intended for
artists, designers, hobbyists,
and anyone interested in
creating interactive objects or
environments.
- http://www.arduino.cc/
Arduino
• Free, multiplatform
• Includes examples with
documentation
• Compiles code and loads
as firmware to any
Arduino-compatible
bord
Arduino IDE
Arduino
A family of compatible boards
with different options for:
extensibility, features,
size, power, cost,
Electronics Crash Course
Electronics Crash Course
• Electrons flow from negative to positive
(current)
• If there’s no path, the flow stops (circuit)
• You can put stuff in the circuit to use, alter,
or react to the current
• Each component is like a function with
inputs and outputs, and they chain together
Electronics Crash Course
http://electronicsclub.info/circuitsymbols.htm
• Wire - connect 2
components, function
argument
• Battery - provides
current, run the
program
• LED - side effect,
output
Electronics Crash Course
http://electronicsclub.info/circuitsymbols.htm
• On-off Switch -
boolean variable
• 2-Way Switch - if
statement
• Resistor - input
checking
Electronics Crash Course
http://electronicsclub.info/circuitsymbols.htm
• Breadboard for
prototyping
• Conductive strips
underneath holes make
easy connections
• Like a REPL or console
Electronics Crash Course
http://learn.adafruit.com/category/learn-arduino
Wiring an Arduino circuit: schematic and pic
Electronics Crash Course
• Arduino code has 2 requires functions
• void setup() - run once when the board is
powered up
• void loop() - runs repeatedly until the board
is powered down
• Other functions allowed for clarity
Electronics Crash Course
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(2000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(2000); // wait for a second
}
What About Javascript?
Javascript For Makers
• Javascript rose to new popularity coincident with
the Maker movement
• Maker projects use the web
• Projects made by non-developers, tinkerers,
engineers - smart people new to software
• Hardware is event-based, so JS is a good fit
• Javascript is a kind language for beginners - single
numeric type, familiar syntax, type conversions
Javascript For Makers
• node-serialport - https://github.com/
voodootikigod/node-serialport
• Firmata - common firmware protocol for
controlling microcontroller boards
http://firmata.org/
Libraries
Javascript For Makers
Libraries - JohnnyFive
button = new five.Button(8);
// "down" the button is pressed
button.on("down", function() {
console.log("down");
});
// "hold" the button is pressed for specified time.
// defaults to 500ms (1/2 second)
button.on("hold", function() {
console.log("hold");
});
// "up" the button is released
button.on("up", function() {
console.log("up");
});
Firmata library with component behavior events
https://github.com/rwldrn/johnny-five
Javascript For Makers
Enabling Libraries - JohnnyFive
http://www.youtube.com/watch?v=gFiL4xVINdw
Javascript For Makers
NodeBots: a full day
event where JS
developers team up and
use soldering guns and
parts nearby to create
amazing robotic devices.
http://nodebots.io/
Javascript For Makers
var arDrone = require('ar-drone');
var client = arDrone.createClient();
client.takeoff();
client
.after(5000, function() {
this.clockwise(0.5);
})
.after(3000, function() {
this.animate('flipLeft', 15);
})
.after(1000, function() {
this.stop();
this.land();
});
http://nodecopter.com/
http://www.youtube.com/watch?v=ymlbNEL5TQQ
Javascript For Makers
Miniature Hardware
Raspberry Pi Beagle Bone Black
Small, inexpensive general purpose computers
with ARM chips, USB and HDMI ports, run
Linux and any software
Javascript For Makers
Where to Buy?
http://www.adafruit.com/
http://sparkfun.com/
http://www.hobbytronics.co.uk/
$$! €€! (?)
• Not expensive to start: ~$30 for Arduino,
~$45 for Raspberry Pi or BeagleBone
• Kits for < $100
• Whole pile of electronic parts and
computers for < $200
$$! €€! (?)
• Prototyping parts are reusable; you only
incur more costs when you:
• break stuff (it happens)
• want new features (motors, sensors, etc)
• want to build more because you designed
something useful
Advanced Electronic Design
• Custom circuit design - Eagle,
CAD, http://upverter.com
• Designs printed on a PCB
(printed circuit board)
• Components assembled into
finished hardware
Advanced Electronic Design
• Designed circuits can be assembled by lots
of manufacturers
• Upverter has manufacture integrated into
their workflow
• DIY tools are developing, improving
I Don’t Know Electronics,
What Can I Do?
What Can I Do?
• Find a hardware project you’re interested in
• Maker Faire, Kickstarter, Meetups, etc
• Add to software, improve software practices
• Source control, abstraction, testing, etc
• Miscellaneous contributions - documentation, etc
What Can I Do?
• Build demo apps on hardware APIs
• Example: moj.io
• Plugs into car diagnostic port
• Sends geocoded logs over cellular network
• Expose API for building car data apps
How I Got Into Hardware
How I Got Into Hardware
• No background except for 1 college class 15 yrs ago
• Went to YC Hardware hackathon in Feb ’13
• Got little done because I had so many basic questions
• Liked the project and team so I continued working on a
prototype for Maker Faire
• I wrote software for a hardware project, so I
contributed and learned a lot without slowing down
the project
Tempo Automation
http://www.youtube.com/watch?v=-jsQF-xFdJM
https://www.facebook.com/video/embed?
video_id=4184537549975
Here’s the demo - it assembles circuit boards
OpenROV
http://www.youtube.com/watch?v=GVp0zeH0H3Q
• Started by guys looking for
“return on adventure”
• Sold > 100 kits on Kickstarter
• Open, worldwide community
OpenROV
• Node.js server serves cockpit web
page, translates input into motor
commands through Arduino
• I didn’t buy a kit, so I can’t write
or test software for it
• I take and post notes from
monthly dev calls, helps
community
Concluding Thoughts
• What would you make if you weren’t stuck
inside the computer or the internet?
• What objects do you interact with daily that
you could make smarter?
• What would you do if you could program
the real world?
You are only limited by
your imagination.
What will
YOU
make?

More Related Content

What's hot

Mobile Development Options
Mobile Development OptionsMobile Development Options
Mobile Development OptionsGreat Wide Open
 
Prototyping for mobile
Prototyping for mobilePrototyping for mobile
Prototyping for mobileMemi Beltrame
 
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"Daniel Bryant
 
Hardware hacking on the pi; what's js got to do with it
Hardware hacking on the pi; what's js got to do with itHardware hacking on the pi; what's js got to do with it
Hardware hacking on the pi; what's js got to do with itAlexander Roche
 
Getting started in mobile games
Getting started in mobile gamesGetting started in mobile games
Getting started in mobile gamesahamidi27
 
2010 01 27 Chairman Opening Remarks
2010 01 27 Chairman Opening Remarks2010 01 27 Chairman Opening Remarks
2010 01 27 Chairman Opening RemarksSimon Coles
 
Real world software launch
Real world software launchReal world software launch
Real world software launchKunal Johar
 

What's hot (8)

Mobile Development Options
Mobile Development OptionsMobile Development Options
Mobile Development Options
 
Prototyping for mobile
Prototyping for mobilePrototyping for mobile
Prototyping for mobile
 
Eclipse e4
Eclipse e4Eclipse e4
Eclipse e4
 
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"
 
Hardware hacking on the pi; what's js got to do with it
Hardware hacking on the pi; what's js got to do with itHardware hacking on the pi; what's js got to do with it
Hardware hacking on the pi; what's js got to do with it
 
Getting started in mobile games
Getting started in mobile gamesGetting started in mobile games
Getting started in mobile games
 
2010 01 27 Chairman Opening Remarks
2010 01 27 Chairman Opening Remarks2010 01 27 Chairman Opening Remarks
2010 01 27 Chairman Opening Remarks
 
Real world software launch
Real world software launchReal world software launch
Real world software launch
 

Similar to Programming the Real World: Javascript for Makers

Hacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreHacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreNick Landry
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium IntroNicholas Jansma
 
Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.Junichi Ishida
 
Py4 inf 01-intro
Py4 inf 01-introPy4 inf 01-intro
Py4 inf 01-introIshaq Ali
 
Os hardware meets os software
Os hardware meets os softwareOs hardware meets os software
Os hardware meets os softwarePaul Tanner
 
Open Hardware Summit 2014
Open Hardware Summit 2014Open Hardware Summit 2014
Open Hardware Summit 2014Drew Fustini
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1benDesigning
 
Bot. You said bot? Let build bot then! - Laurent Ellerbach
Bot. You said bot? Let build bot then! - Laurent EllerbachBot. You said bot? Let build bot then! - Laurent Ellerbach
Bot. You said bot? Let build bot then! - Laurent EllerbachITCamp
 
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...ITCamp
 
Talk at the Landelijk Architecure Congress (NL)
Talk at the Landelijk Architecure Congress (NL)Talk at the Landelijk Architecure Congress (NL)
Talk at the Landelijk Architecure Congress (NL)Jonathan Carter
 
COMP 4026 Lecture3 Prototyping and Evaluation
COMP 4026 Lecture3 Prototyping and EvaluationCOMP 4026 Lecture3 Prototyping and Evaluation
COMP 4026 Lecture3 Prototyping and EvaluationMark Billinghurst
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Svetlin Nakov
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitcbenDesigning
 
ch4-Software is Everywhere
ch4-Software is Everywherech4-Software is Everywhere
ch4-Software is Everywheressuser06ea42
 

Similar to Programming the Real World: Javascript for Makers (20)

Hacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreHacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT Core
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium Intro
 
Learn to Code and Have Fun Doing It!
Learn to Code and Have Fun Doing It! Learn to Code and Have Fun Doing It!
Learn to Code and Have Fun Doing It!
 
Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.
 
Py4 inf 01-intro
Py4 inf 01-introPy4 inf 01-intro
Py4 inf 01-intro
 
Sketching In Hardware 4
Sketching In Hardware 4Sketching In Hardware 4
Sketching In Hardware 4
 
Os hardware meets os software
Os hardware meets os softwareOs hardware meets os software
Os hardware meets os software
 
Open Hardware Summit 2014
Open Hardware Summit 2014Open Hardware Summit 2014
Open Hardware Summit 2014
 
Maker Boot Camp
Maker Boot CampMaker Boot Camp
Maker Boot Camp
 
py4inf-01-intro.ppt
py4inf-01-intro.pptpy4inf-01-intro.ppt
py4inf-01-intro.ppt
 
Make Tools
Make ToolsMake Tools
Make Tools
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1
 
Bot. You said bot? Let build bot then! - Laurent Ellerbach
Bot. You said bot? Let build bot then! - Laurent EllerbachBot. You said bot? Let build bot then! - Laurent Ellerbach
Bot. You said bot? Let build bot then! - Laurent Ellerbach
 
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
 
Talk at the Landelijk Architecure Congress (NL)
Talk at the Landelijk Architecure Congress (NL)Talk at the Landelijk Architecure Congress (NL)
Talk at the Landelijk Architecure Congress (NL)
 
COMP 4026 Lecture3 Prototyping and Evaluation
COMP 4026 Lecture3 Prototyping and EvaluationCOMP 4026 Lecture3 Prototyping and Evaluation
COMP 4026 Lecture3 Prototyping and Evaluation
 
Node-Red
Node-RedNode-Red
Node-Red
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
 
ch4-Software is Everywhere
ch4-Software is Everywherech4-Software is Everywhere
ch4-Software is Everywhere
 

Recently uploaded

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - AvrilIvanti
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 

Recently uploaded (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
How Tech Giants Cut Corners to Harvest Data for A.I.
How Tech Giants Cut Corners to Harvest Data for A.I.How Tech Giants Cut Corners to Harvest Data for A.I.
How Tech Giants Cut Corners to Harvest Data for A.I.
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - Avril
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 

Programming the Real World: Javascript for Makers

  • 1. Programming the real World Peter Christensen http://pchristensen.com @christensenp
  • 2. Why Do We Love Programming? • Challenge of problem solving • Creating something that didn’t exist before • Seeing something work • Show off our abilities • ...but everybody loves those feelings!
  • 3. Everybody Wants To Create Artists...
  • 4. Everybody Wants To Create Athletes...
  • 5. Everybody Wants To Create Young and old...
  • 6. Everybody Wants To Create Politicians... (no, really!)
  • 7. Everybody Wants To Create Engineers...
  • 8. Everybody Wants To Create Fashion designers...
  • 10. Software is Different • Something about creating with software is qualitatively different • How many pottery billionaires have you heard of lately? • How many other young businesses have hundreds of millions of users?
  • 11. Why Is Software Different? vs Software is design-only, with no marginal cost to reproduce
  • 12. Why Is Software Different? vs Software has a lower barrier to participation. What is the “Hello World” for surgery?
  • 13. Why Is Software Different? vs Distribution is easier and cheaper
  • 14. Why Is Software Different? Tools and libraries let us abstract away non-core tasks
  • 15. Why Is Software Different? Communities and contribution tools allow us to build on the best work of others
  • 16. It’s Not Just For Software Anymore
  • 17. The Maker Movement • Costs for hardware of all sorts are falling • Resources for learning electronics and hardware are better than ever and improving • The internet makes showing off your creations easier than ever • Maker Faire - the biggest show and tell on Earth - http://makerfaire.com/
  • 18. Maker Faire Robot bugs that skitter, made with $10 of electronics
  • 19. Maker Faire Real-time visualization of dancing https://github.com/benMcChesney/ofxOpenVJ
  • 20. Maker Faire 250 Fish and Lobsters Singing Beethoven’s 9th http://www.sashimitabernaclechoir.org/
  • 21. Maker Faire Coming Soon to a City Near You! http://makerfaire.com/map/
  • 22. The Maker Movement New tools for design and experimentation Left: http://upverter.com for designing circuits Right: 3D printer for prototyping complex shapes
  • 23. The Maker Movement Tools and resources for learning L: Adafruit tutorials http://learn.adafruit.com/ C: LightUp augmented reality http://www.lightup.io/ R: littleBits kits http://littlebits.com/
  • 24. The Maker Movement DIY Projects Left: Roominate DIY Dollhouse Kits http://www.roominatetoy.com/ Right: Retro Gaming with Raspberry Pi http://learn.adafruit.com/retro-gaming-with-raspberry-pi
  • 25. Software Enables Intelligent Interaction With Abstract Things Hardware Enables Intelligent Interaction With Physical Things
  • 26. Hardware Becoming Software http://www.paulgraham.com/hw.html “Hackers love to build hardware, and customers love to buy it. So if the ease of shipping hardware even approached the ease of shipping software, we'd see a lot more hardware startups.”
  • 27. Hardware Becoming Software • Shrinking marginal cost - cheaper hardware • Broad participation - Maker movement • Distribution - Kickstarter, Shopify • Abstract non-core tasks - kits, more components • Community and collaboration
  • 28. Arduino Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. - http://www.arduino.cc/
  • 29. Arduino • Free, multiplatform • Includes examples with documentation • Compiles code and loads as firmware to any Arduino-compatible bord Arduino IDE
  • 30. Arduino A family of compatible boards with different options for: extensibility, features, size, power, cost,
  • 32. Electronics Crash Course • Electrons flow from negative to positive (current) • If there’s no path, the flow stops (circuit) • You can put stuff in the circuit to use, alter, or react to the current • Each component is like a function with inputs and outputs, and they chain together
  • 33. Electronics Crash Course http://electronicsclub.info/circuitsymbols.htm • Wire - connect 2 components, function argument • Battery - provides current, run the program • LED - side effect, output
  • 34. Electronics Crash Course http://electronicsclub.info/circuitsymbols.htm • On-off Switch - boolean variable • 2-Way Switch - if statement • Resistor - input checking
  • 35. Electronics Crash Course http://electronicsclub.info/circuitsymbols.htm • Breadboard for prototyping • Conductive strips underneath holes make easy connections • Like a REPL or console
  • 37. Electronics Crash Course • Arduino code has 2 requires functions • void setup() - run once when the board is powered up • void loop() - runs repeatedly until the board is powered down • Other functions allowed for clarity
  • 38. Electronics Crash Course /* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(2000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(2000); // wait for a second }
  • 40. Javascript For Makers • Javascript rose to new popularity coincident with the Maker movement • Maker projects use the web • Projects made by non-developers, tinkerers, engineers - smart people new to software • Hardware is event-based, so JS is a good fit • Javascript is a kind language for beginners - single numeric type, familiar syntax, type conversions
  • 41. Javascript For Makers • node-serialport - https://github.com/ voodootikigod/node-serialport • Firmata - common firmware protocol for controlling microcontroller boards http://firmata.org/ Libraries
  • 42. Javascript For Makers Libraries - JohnnyFive button = new five.Button(8); // "down" the button is pressed button.on("down", function() { console.log("down"); }); // "hold" the button is pressed for specified time. // defaults to 500ms (1/2 second) button.on("hold", function() { console.log("hold"); }); // "up" the button is released button.on("up", function() { console.log("up"); }); Firmata library with component behavior events https://github.com/rwldrn/johnny-five
  • 43. Javascript For Makers Enabling Libraries - JohnnyFive http://www.youtube.com/watch?v=gFiL4xVINdw
  • 44. Javascript For Makers NodeBots: a full day event where JS developers team up and use soldering guns and parts nearby to create amazing robotic devices. http://nodebots.io/
  • 45. Javascript For Makers var arDrone = require('ar-drone'); var client = arDrone.createClient(); client.takeoff(); client .after(5000, function() { this.clockwise(0.5); }) .after(3000, function() { this.animate('flipLeft', 15); }) .after(1000, function() { this.stop(); this.land(); }); http://nodecopter.com/ http://www.youtube.com/watch?v=ymlbNEL5TQQ
  • 46. Javascript For Makers Miniature Hardware Raspberry Pi Beagle Bone Black Small, inexpensive general purpose computers with ARM chips, USB and HDMI ports, run Linux and any software
  • 47. Javascript For Makers Where to Buy? http://www.adafruit.com/ http://sparkfun.com/ http://www.hobbytronics.co.uk/
  • 48. $$! €€! (?) • Not expensive to start: ~$30 for Arduino, ~$45 for Raspberry Pi or BeagleBone • Kits for < $100 • Whole pile of electronic parts and computers for < $200
  • 49. $$! €€! (?) • Prototyping parts are reusable; you only incur more costs when you: • break stuff (it happens) • want new features (motors, sensors, etc) • want to build more because you designed something useful
  • 50. Advanced Electronic Design • Custom circuit design - Eagle, CAD, http://upverter.com • Designs printed on a PCB (printed circuit board) • Components assembled into finished hardware
  • 51. Advanced Electronic Design • Designed circuits can be assembled by lots of manufacturers • Upverter has manufacture integrated into their workflow • DIY tools are developing, improving
  • 52. I Don’t Know Electronics, What Can I Do?
  • 53. What Can I Do? • Find a hardware project you’re interested in • Maker Faire, Kickstarter, Meetups, etc • Add to software, improve software practices • Source control, abstraction, testing, etc • Miscellaneous contributions - documentation, etc
  • 54. What Can I Do? • Build demo apps on hardware APIs • Example: moj.io • Plugs into car diagnostic port • Sends geocoded logs over cellular network • Expose API for building car data apps
  • 55. How I Got Into Hardware
  • 56. How I Got Into Hardware • No background except for 1 college class 15 yrs ago • Went to YC Hardware hackathon in Feb ’13 • Got little done because I had so many basic questions • Liked the project and team so I continued working on a prototype for Maker Faire • I wrote software for a hardware project, so I contributed and learned a lot without slowing down the project
  • 58. OpenROV http://www.youtube.com/watch?v=GVp0zeH0H3Q • Started by guys looking for “return on adventure” • Sold > 100 kits on Kickstarter • Open, worldwide community
  • 59. OpenROV • Node.js server serves cockpit web page, translates input into motor commands through Arduino • I didn’t buy a kit, so I can’t write or test software for it • I take and post notes from monthly dev calls, helps community
  • 60. Concluding Thoughts • What would you make if you weren’t stuck inside the computer or the internet? • What objects do you interact with daily that you could make smarter? • What would you do if you could program the real world?
  • 61. You are only limited by your imagination.