Slide 1

Slide 1 text

A N A LY S I N G W E B P E R F O R M A N C E D ATA W I T H J U L I A & D 3 OpenSource Bridge 2015 2015-06-24

Slide 2

Slide 2 text

Philip Tellis @bluesmoon https://github.com/lognormal/boomerang http://www.soasta.com/mpulse/

Slide 3

Slide 3 text

G E T S E T U P 1. Visit http://bit.ly/osb-julia-d3 and either make a copy or just download the files. 2. Sign in to juliabox.org (This might fail once or twice) 3. In the Sync tab, enter either your copy of the Google Drive folder listed above, or the bit.ly link. 4. This should add an OSBridge folder in your JuliaBox. 5. Also available at github.com/SOASTA/osbridge-julia-d3

Slide 4

Slide 4 text

J U L I A I S … • High-level, high-performance dynamic programming language • Borrows from R, Python, MatLab, etc. • Performance comparable to C • Designed for Parallelism & Cloud Computing • MIT licensed — http://julialang.org/

Slide 5

Slide 5 text

D 3 I S … • A JavaScript library that maps Data to DOM Nodes • Extended via layouts & plugins for rich data visualisations • You still need to write code to draw things • Fast on its own, but you can easily make it sluggish • BSD Licensed — http://d3js.org/

Slide 6

Slide 6 text

I J U L I A

Slide 7

Slide 7 text

H T T P S : / / W W W. J U L I A B O X . O R G / G E T S TA R T E D W I T H I J U L I A

Slide 8

Slide 8 text

B A S I C J U L I A T U T O R I A L • JSON & JavaScript • Matrix Operations • Stats & DataFrames • JavaScript to update a DOM Node • Notebooks 01-04 at http://bit.ly/osb-julia-d3

Slide 9

Slide 9 text

H T T P S : / / G I T H U B . C O M / M B O S T O C K / D 3 / W I K I / G A L L E RY G E T S TA R T E D W I T H D 3

Slide 10

Slide 10 text

B A S I C D 3 T U T O R I A L • Adding nodes • Mapping data to nodes • Data Driven Documents • Examples 01-06 at https://soasta.github.io/osbridge- julia-d3/d3/

Slide 11

Slide 11 text

I T W O U L D B E C O O L I F J U L I A C O U L D C A L L O U T T O D 3

Slide 12

Slide 12 text

T H I S I S A S I M P L E E X T E N S I O N O F W H AT W E A L R E A D Y K N O W • Create an IFRAME instead of a P • Assign to its src instead of innerText • Example notebook 05 - Include an IFrame • Example JavaScript 06-data-driven-bars

Slide 13

Slide 13 text

B U T R E A L LY, J U L I A N E E D S T O PA S S D ATA T O D 3 F O R T H I S T O B E U S E F U L

Slide 14

Slide 14 text

W E C A N U S E w i n d o w . p o s t M e s s a g e • JS in IFrame looks for data in query string or listens for “message” event • Julia code sets query string or sends message using postMessage • Example notebook 06 - Pass Data to IFrame • Example JavaScript 07-d3-external-data

Slide 15

Slide 15 text

A N D O N E M O R E T H I N G …

Slide 16

Slide 16 text

T H E W E B S O C K E T I T W O U L D B E R E A L LY C O O L T O TA P I N T O T H I S W E B S O C K E T

Slide 17

Slide 17 text

I N T E R A C T. J L • Interact.jl taps into the WebSocket to let you build dynamic widgets • Imagine being able to interact with your D3 charts and having that data fed back to the Julia Kernel • https://github.com/JuliaLang/Interact.jl • It’s also available in the tutorial section of your JuliaBox • See also: https://jakevdp.github.io/blog/2013/06/01/ipython-notebook-javascript-python-communication/

Slide 18

Slide 18 text

Thank You