Building an alarm clock with node.js

Post on 15-Jan-2015

6.202 views 1 download

Tags:

description

My Sep 29 2011 talk at RejectJS.

Transcript of Building an alarm clock with node.js

Building an alarm clock with node.js

or

Hacking vs. Engineering

Felix Geisendörfer 29.09.2011 (v1)Donnerstag, 29. September 2011

TextWelcome to the Siesta

right-after-lunch Session!Donnerstag, 29. September 2011

Building an alarm clock with node.js

or

Hacking vs. Engineering

Felix Geisendörfer 29.09.2011 (v1)Donnerstag, 29. September 2011

@felixge

Twitter / GitHub / IRC

Donnerstag, 29. September 2011

My Problem

• Getting up early in the morning

• That means before 12:00 (noon)

Donnerstag, 29. September 2011

This talk

• How I solved this problem

• Hacking vs. Engineering the solution

Donnerstag, 29. September 2011

Patient History

• 23 years

• Working from home

• Can work any hours

Donnerstag, 29. September 2011

So why get up early?

• To get more stuff done ...

Donnerstag, 29. September 2011

Previous attempts

Donnerstag, 29. September 2011

Text

Circadian rhythm app (Sleep Cycle)Donnerstag, 29. September 2011

Nothing was working

Donnerstag, 29. September 2011

Text

Donnerstag, 29. September 2011

Donnerstag, 29. September 2011

Donnerstag, 29. September 2011

Donnerstag, 29. September 2011

Donnerstag, 29. September 2011

VLCDonnerstag, 29. September 2011

pmsetDonnerstag, 29. September 2011

The Script

https://gist.github.com/1a40a207cf6132f77efa

Donnerstag, 29. September 2011

sudo ./alarm.js 7 30

Donnerstag, 29. September 2011

Donnerstag, 29. September 2011

Result

• Reliably waking up at any time

• Get to choose different music every night

Donnerstag, 29. September 2011

Hacking vs. Engineering

Donnerstag, 29. September 2011

(Software) Engineering

“Rigorous application of science”

Donnerstag, 29. September 2011

Hacking

“Playful cleverness”

Donnerstag, 29. September 2011

Hacking vs. Engineering this project

Donnerstag, 29. September 2011

Tests?

Engineering: Yes

Hacking: Maybe

Donnerstag, 29. September 2011

Airtunes?Engineering:

Implement protocol

Hacking:

Piggyback on iTunes or VLC

Donnerstag, 29. September 2011

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

Wakeup from Sleep?

Engineering:

pmset schedule wakeorpoweron <datetime>

Hacking:

pmset schedule wakeorpoweron MTWRFSU <time>

Donnerstag, 29. September 2011

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

Turn off speakers?

Engineering:

Install speakers in unreachable place.

Hacking: ?

Donnerstag, 29. September 2011

Why am I talking about this?

Donnerstag, 29. September 2011

JS has a very hacker-driven culture

Donnerstag, 29. September 2011

• 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

Where we need more engineering:

• Libraries

• Domain logic

• Performance

Donnerstag, 29. September 2011

TL;DL

• Hack when in doubt

• Engineer when clear

Donnerstag, 29. September 2011

EngineeringHacking

Donnerstag, 29. September 2011

Questions?

☝@felixge

Donnerstag, 29. September 2011