Slide 1

Slide 1 text

stories from a music-fueled distributed streaming bender PLAY

Slide 2

Slide 2 text

MUSIC

Slide 3

Slide 3 text

music keeps your RIGHT BRAIN happy LEFT BRAIN works while your

Slide 4

Slide 4 text

my company is a pretty musical company

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

WE BUILT an employee-driven, geographically-distributed, multi-client, HTML5-based, API-centric, bathroom- enabled, buzzword- embracing music server

Slide 7

Slide 7 text

THIS ISN’T AN AD i hate talks like that

Slide 8

Slide 8 text

THIS IS ABOUT building open source

Slide 9

Slide 9 text

THIS IS ABOUT improving your company

Slide 10

Slide 10 text

TODAY: what is play company side project culture doing open source real good structured experimentation stealing shit

Slide 11

Slide 11 text

@HOLMAN

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

we talkin’ about WHAT

Slide 14

Slide 14 text

PLAY a shared music server at github’s office GITHUB.COM/PLAY/PLAY

Slide 15

Slide 15 text

MAC MINI all of our music QUEUE songs, artists, albums, stars >

Slide 16

Slide 16 text

STEP ONE get a potentially empty office MARCH 2010

Slide 17

Slide 17 text

STEP TWO get some big speakers MAY 2010

Slide 18

Slide 18 text

STEP THREE get work done MAY 2010

Slide 19

Slide 19 text

MUSIC LEADS TO STORIES! LIKE...

Slide 20

Slide 20 text

WHEN OUR OFFICE GOT MISTAKEN FOR A NIGHTCLUB BECAUSE YOU CAN HEAR THE SPEAKERS THREE BLOCKS AWAY our neighbors hate us

Slide 21

Slide 21 text

WHEN NINE OF US GOT TO CALL MC HAMMER... how did we get fired up? by blasting hammertime in the office all morning. true story.

Slide 22

Slide 22 text

WHEN THE FIRE DEPARTMENT RUSHED TO THE OFFICE BECAUSE OUR SMOKE MACHINE WENT CRAZY... what were we playing? i don’t know but it must have been one hell of a song ARTIST’S RENDITION

Slide 23

Slide 23 text

WHEN THE FIRE DEPARTMENT RUSHED TO THE OFFICE BECAUSE OUR SMOKE MACHINE WENT CRAZY... we don’t try to use the smoke machine anymore ARTIST’S RENDITION

Slide 24

Slide 24 text

WHEN THE FIRE DEPARTMENT RUSHED TO THE OFFICE BECAUSE OUR SMOKE MACHINE WENT CRAZY... also, are these kids dead? ARTIST’S RENDITION

Slide 25

Slide 25 text

WHEN THE FIRE DEPARTMENT RUSHED TO THE OFFICE BECAUSE OUR SMOKE MACHINE WENT CRAZY... also this kid definitely set the place on fire ARTIST’S RENDITION

Slide 26

Slide 26 text

WHEN THE FIRE DEPARTMENT RUSHED TO THE OFFICE BECAUSE OUR SMOKE MACHINE WENT CRAZY... no seriously he was like, laughing last frame ARTIST’S RENDITION kid creeps me out

Slide 27

Slide 27 text

i was going somewhere with this, i forget

Slide 28

Slide 28 text

ANYWAY, MUSIC HAS BEEN A FUN PART OF GITHUB

Slide 29

Slide 29 text

WE’VE SINCE EXPANDED IT.

Slide 30

Slide 30 text

⽄ ⽄ ̇ ̇ ⽄ ̇ APRIL 2012

Slide 31

Slide 31 text

WEB queuing and searching

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

WEB BACKEND itunes, applescript, sinatra, redis, pusher

Slide 34

Slide 34 text

WEB FRONTEND coffeescript, mustache, scss, pusher, html5

Slide 35

Slide 35 text

API the web is just another client

Slide 36

Slide 36 text

SPEAKERS airport express, music everywhere >

Slide 37

Slide 37 text

60’S ROOM >

Slide 38

Slide 38 text

⽄ ̇ ̇

Slide 39

Slide 39 text

⽄ ̇ POOL TABLE >

Slide 40

Slide 40 text

⽄ ̇ SITUATION ROOM >

Slide 41

Slide 41 text

⽄ ̇ MEN’S ROOM >

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

DON’T WANT MUSIC? - we have private, quiet offices, too - you have headphones - or just don’t go to work today

Slide 44

Slide 44 text

STREAMING music really everywhere

Slide 45

Slide 45 text

consume everywhere CLIENTS f

Slide 46

Slide 46 text

DISPLAYS f

Slide 47

Slide 47 text

hubot play daft punk hubot play next hubot volume 75 hubot play something i’d like f HUBOT CLIENT hubot i like this song

Slide 48

Slide 48 text

f OS X CLIENT

Slide 49

Slide 49 text

f IPHONE CLIENT

Slide 50

Slide 50 text

f IPAD CLIENT

Slide 51

Slide 51 text

f WINDOWS CLIENT

Slide 52

Slide 52 text

f ANDROID CLIENT

Slide 53

Slide 53 text

LIVE DJ BOOTH dj! spin that shit ~

Slide 54

Slide 54 text

~ LIVE DJ BOOTH

Slide 55

Slide 55 text

PAUSE PLAY DJ SWITCH STREAM TO CONTROLLER AUTO-RECORD DJ SET TIMESTAMP & LABEL SET IMPORT BACK INTO PLAY

Slide 56

Slide 56 text

MOST OF US HAVEN’T DJED BEFORE IT’S LIKE PROGRAMMING BUT FRESH AND NEW EVERYONE FEELS LIKE A GENIUS FOR MIXING “ALL MY FRIENDS” AND “WE ARE YOUR FRIENDS” FOR THE 462TH TIME guise it’s like two songs about friends whoaaa

Slide 57

Slide 57 text

ECOSYSTEM lots got built, lots to build

Slide 58

Slide 58 text

together, right now COME

Slide 59

Slide 59 text

PLAY builds culture

Slide 60

Slide 60 text

KEEP YOUR EMPLOYEES HAPPY

Slide 61

Slide 61 text

A SOURCE OF UNHAPPINESS? BEING EXCLUSIONARY

Slide 62

Slide 62 text

THIS IS ESPECIALLY DIFFICULT FOR REMOTE WORKERS

Slide 63

Slide 63 text

PLAY IS ONE WAY WE GET GITHUBBERS SHARING EXPERIENCES

Slide 64

Slide 64 text

PLAY HAS BEEN STREAMED: ON SAN FRANCISCO MUNI IN SOUTH AFRICA OVER MOBILE TETHERING IN VIRGINIA IN A CAR OVER BLUETOOTH IN JAPAN ON A HIGH-SPEED TRAIN

Slide 65

Slide 65 text

THIS IS HOW WE KNOW WHO LOVES GARTH BROOKS (scott)

Slide 66

Slide 66 text

THIS IS HOW WE KNOW WHO HATES GARTH BROOKS (everyone else)

Slide 67

Slide 67 text

THIS IS HOW WE SHARE COMMON EXPERIENCES

Slide 68

Slide 68 text

SHARED SIDE PROJECT build clients, learn new techniques, work with coworkers you wouldn’t normally work with

Slide 69

Slide 69 text

GITHUB SIDE PROJECTS we build things like play and hubot to keep everyone excited sometimes even “fun” work blows encourage a culture of building

Slide 70

Slide 70 text

FIND SOMETHING YOU CAN ALL HACK ON TOGETHER

Slide 71

Slide 71 text

collaborate and listen STOP

Slide 72

Slide 72 text

BUILD SOCIALLY that means be a good teammate

Slide 73

Slide 73 text

ZOMG TELL EVERYONE EVERYTHING README INLINE DOCUMENTATION CLEAN TESTS LONG-FORM DOCUMENTATION OPEN ISSUES

Slide 74

Slide 74 text

PLAY WAS DISCOVERED months before it shipped

Slide 75

Slide 75 text

USE GITHUB to find free slave labor open new issues add todos detail your plans

Slide 76

Slide 76 text

PEOPLE WILL SURPRISE YOU and build things you didn’t expect. it’s awesome.

Slide 77

Slide 77 text

CONTRIBUTORS helped shape play without being asked

Slide 78

Slide 78 text

detail your setup BUILD A KILLER README readme-driven development explain your plans

Slide 79

Slide 79 text

setup development fixtures BUILD A KILLER BOOTSTRAP install with a one-liner dependency management

Slide 80

Slide 80 text

say thanks, help them redirect BUILD A NON-KILLER ATTITUDE sometimes weird features happen don’t fret, don’t shoot down

Slide 81

Slide 81 text

EXPERIMENT

Slide 82

Slide 82 text

MAKE A PROJECT specifically to fuck around with new things

Slide 83

Slide 83 text

HERE’S WHAT ISN’T IN PLAY foundation backbone.js ember.js WE GAINED A LOT FROM TRYING A LOT macruby

Slide 84

Slide 84 text

GO OUT OF YOUR WAY TO TRY NEW TECHNIQUES

Slide 85

Slide 85 text

HERE’S WHAT’S NEW IN PLAY: WEB AS API CLIENT “twitter-style” all clients use the endpoints same as web more stable, more dogfooding

Slide 86

Slide 86 text

HERE’S WHAT’S NEW IN PLAY: COCOA/RUBY BRIDGES subscribe to itunes in cocoa push over pusher realtime clients (including web)

Slide 87

Slide 87 text

HERE’S WHAT’S NEW IN PLAY: LIVE DJ SETS applescript agains gets us around GUIs

Slide 88

Slide 88 text

HERE’S WHAT’S NEW IN PLAY: NATIVE OS TECHNIQUES data-first UI design on windows, mac ios/mac library sharing

Slide 89

Slide 89 text

WHEN THE WHOLE PURPOSE IS EXPERIMENTATION, YOU CAN TAKE RISKS

Slide 90

Slide 90 text

WHAT WERE RISKS THEN BECOME NORMAL PRACTICES AND YOU’RE BETTER OFF

Slide 91

Slide 91 text

STEAL shit

Slide 92

Slide 92 text

PLAY HAS LOTS OF MOVING PARTS

Slide 93

Slide 93 text

PLAY ( MAC MINI ) AIRFOIL NICECAST PUSHER > RESTROOMS > POOL TABLE f OS X CLIENT WINDOWS CLIENT IPHONE CLIENT c CONTROLLED BY CAMPFIRE ( CHAT ROOM ) IPAD CLIENT TV SCREENS ANDROID CLIENT > 60’S ROOM > DESKS ~ LIVE DJ BOOTH

Slide 94

Slide 94 text

GO LEVERAGE EXISTING THINGS

Slide 95

Slide 95 text

INTERNET STREAMING AIRPORT STREAMING MUSIC STATE nicecast airfoil itunes DJ SOFTWARE traktor

Slide 96

Slide 96 text

BUILDING ALL THAT OURSELVES WOULD HAVE SUCKED

Slide 97

Slide 97 text

PLAY 1.0 MANAGED PLAY STATE TURNS OUT, DIFFICULT PROBLEM reliability, simplicity PLAY-NEXT LETS ITUNES DJ HANDLE IT free itunes client browsing, remote.app, queueing redis, separate player process

Slide 98

Slide 98 text

GUIs ARE HORRIBLE TO MANAGE completely breaks the bootstrap goal they’re great until we can replace them BUT:

Slide 99

Slide 99 text

EMBRACE HACKY SOLUTIONS THEY’RE THE PINNACLE OF PROGRAMMING

Slide 100

Slide 100 text

PLAY

Slide 101

Slide 101 text

PLAY NOT WITH MY PROJECT, PLAY WITH YOUR PROJECT

Slide 102

Slide 102 text

PLAY EXPERIMENT COLLABORATE

Slide 103

Slide 103 text

PLAY GITHUB.COM/PLAY

Slide 104

Slide 104 text

THANKS

Slide 105

Slide 105 text

No content

Slide 106

Slide 106 text

ZACH HOLMAN @HOLMAN