building an alarm clock with node - amazon web servicesfelixge.s3.amazonaws.com/11/node.js - alarm...
TRANSCRIPT
![Page 1: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/1.jpg)
Building an alarm clock with node.js
or
Hacking vs. Engineering
Felix Geisendörfer 29.09.2011 (v1)Donnerstag, 29. September 2011
![Page 2: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/2.jpg)
TextWelcome to the Siesta
right-after-lunch Session!Donnerstag, 29. September 2011
![Page 3: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/3.jpg)
Building an alarm clock with node.js
or
Hacking vs. Engineering
Felix Geisendörfer 29.09.2011 (v1)Donnerstag, 29. September 2011
![Page 4: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/4.jpg)
@felixge
Twitter / GitHub / IRC
Donnerstag, 29. September 2011
![Page 5: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/5.jpg)
My Problem
• Getting up early in the morning
• That means before 12:00 (noon)
Donnerstag, 29. September 2011
![Page 6: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/6.jpg)
This talk
• How I solved this problem
• Hacking vs. Engineering the solution
Donnerstag, 29. September 2011
![Page 7: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/7.jpg)
Patient History
• 23 years
• Working from home
• Can work any hours
Donnerstag, 29. September 2011
![Page 8: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/8.jpg)
So why get up early?
• To get more stuff done ...
Donnerstag, 29. September 2011
![Page 9: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/9.jpg)
Previous attempts
Donnerstag, 29. September 2011
![Page 10: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/10.jpg)
Text
Behavioral ConditioningDonnerstag, 29. September 2011
![Page 11: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/11.jpg)
Text
Flying alarm clockDonnerstag, 29. September 2011
![Page 12: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/12.jpg)
Text
Circadian rhythm app (Sleep Cycle)Donnerstag, 29. September 2011
![Page 13: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/13.jpg)
Text
Many alarmsDonnerstag, 29. September 2011
![Page 14: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/14.jpg)
Nothing was working
Donnerstag, 29. September 2011
![Page 15: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/15.jpg)
Text
Donnerstag, 29. September 2011
![Page 16: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/16.jpg)
Donnerstag, 29. September 2011
![Page 17: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/17.jpg)
Donnerstag, 29. September 2011
![Page 18: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/18.jpg)
Donnerstag, 29. September 2011
![Page 19: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/19.jpg)
Donnerstag, 29. September 2011
![Page 20: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/20.jpg)
VLCDonnerstag, 29. September 2011
![Page 21: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/21.jpg)
pmsetDonnerstag, 29. September 2011
![Page 22: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/22.jpg)
The Script
https://gist.github.com/1a40a207cf6132f77efa
Donnerstag, 29. September 2011
![Page 23: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/23.jpg)
sudo ./alarm.js 7 30
Donnerstag, 29. September 2011
![Page 24: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/24.jpg)
Donnerstag, 29. September 2011
![Page 25: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/25.jpg)
Result
• Reliably waking up at any time
• Get to choose different music every night
Donnerstag, 29. September 2011
![Page 26: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/26.jpg)
Hacking vs. Engineering
Donnerstag, 29. September 2011
![Page 27: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/27.jpg)
(Software) Engineering
“Rigorous application of science”
Donnerstag, 29. September 2011
![Page 28: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/28.jpg)
Hacking
“Playful cleverness”
Donnerstag, 29. September 2011
![Page 29: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/29.jpg)
Hacking vs. Engineering this project
Donnerstag, 29. September 2011
![Page 30: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/30.jpg)
Tests?
Engineering: Yes
Hacking: Maybe
Donnerstag, 29. September 2011
![Page 31: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/31.jpg)
Airtunes?Engineering:
Implement protocol
Hacking:
Piggyback on iTunes or VLC
Donnerstag, 29. September 2011
![Page 32: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/32.jpg)
Codevar file = '/my/music/file.mp3';var vlcPath = '/Applications/VLC.app/Contents/MacOS/VLC';var vlc = spawn(vlcPath, [ '-R', '--sout=#transcode {acodec = alac channels = 2, samplerate = 44100}: raop{host=10.0.1.13,volume=255}', file]);
vlc.stdout.setEncoding('utf8');vlc.stderr.setEncoding('utf8');vlc.stdout.on('data', process.stdout.write);vlc.stderr.on('data', process.stderr.write);
vlc.on('exit', function(code, signal) { console.log('vlc exit: %i %s', code, signal);});
Donnerstag, 29. September 2011
![Page 33: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/33.jpg)
Wakeup from Sleep?
Engineering:
pmset schedule wakeorpoweron <datetime>
Hacking:
pmset schedule wakeorpoweron MTWRFSU <time>
Donnerstag, 29. September 2011
![Page 34: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/34.jpg)
Code
var powerCmd = sprintf( 'pmset repeat wakeorpoweron MTWRFSU %02d:%02d:00', powerHour, powerMinute);
exec(powerCmd, function(err) { if (err) throw err; process.setuid('felix');});
Donnerstag, 29. September 2011
![Page 35: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/35.jpg)
Turn off speakers?
Engineering:
Install speakers in unreachable place.
Hacking: ?
Donnerstag, 29. September 2011
![Page 36: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/36.jpg)
Text
Duct TapeDonnerstag, 29. September 2011
![Page 37: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/37.jpg)
Duct Tape of Concurrent I/ODonnerstag, 29. September 2011
![Page 38: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/38.jpg)
Engineering Solution for ConcurrencyDonnerstag, 29. September 2011
![Page 39: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/39.jpg)
Why am I talking about this?
Donnerstag, 29. September 2011
![Page 40: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/40.jpg)
JS has a very hacker-driven culture
Donnerstag, 29. September 2011
![Page 41: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/41.jpg)
Text
Duct tape of the webDonnerstag, 29. September 2011
![Page 42: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/42.jpg)
Text
Duct tape of the DOMDonnerstag, 29. September 2011
![Page 43: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/43.jpg)
• Hacking is lots of fun, go do it!
• Hacking can be a good solution!
• But be aware that many problems call for an engineering approach.
Donnerstag, 29. September 2011
![Page 44: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/44.jpg)
Where we need more engineering:
• Libraries
• Domain logic
• Performance
Donnerstag, 29. September 2011
![Page 45: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/45.jpg)
TL;DL
• Hack when in doubt
• Engineer when clear
Donnerstag, 29. September 2011
![Page 46: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/46.jpg)
EngineeringHacking
Donnerstag, 29. September 2011
![Page 47: Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm clock.pdf · Building an alarm clock with node.js or Hacking vs. Engineering Felix](https://reader035.vdocuments.net/reader035/viewer/2022062603/5f60581f8c2e1d2150525e60/html5/thumbnails/47.jpg)
Questions?
☝@felixge
Donnerstag, 29. September 2011