+ All Categories
Home > Documents > Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm...

Building an alarm clock with node - Amazon Web Servicesfelixge.s3.amazonaws.com/11/node.js - alarm...

Date post: 21-Jul-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
47
Building an alarm clock with node.js or Hacking vs. Engineering Felix Geisendörfer 29.09.2011 (v1) Donnerstag, 29. September 2011
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

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

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

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

@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

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

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

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

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

Previous attempts

Donnerstag, 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

Text

Circadian rhythm app (Sleep Cycle)Donnerstag, 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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

Turn off speakers?

Engineering:

Install speakers in unreachable place.

Hacking: ?

Donnerstag, 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

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

JS has a very hacker-driven culture

Donnerstag, 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

• 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

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

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

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

Questions?

☝@felixge

Donnerstag, 29. September 2011


Recommended