Slide 1

Slide 1 text

Make stuff that people want Evan Solomon | Automattic @evansolomon

Slide 2

Slide 2 text

Hi WordPress.com Data Code Marketing

Slide 3

Slide 3 text

Choose your own adventure

Slide 4

Slide 4 text

Context Experiments, what & why? Designing an experiment Tools we use Data analysis Qualitative data Data mining in WordPress

Slide 5

Slide 5 text

Experiments What and why?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Build Measure Learn

Slide 9

Slide 9 text

A person who never made a mistake never tried anything new.

Slide 10

Slide 10 text

Validated Learning

Slide 11

Slide 11 text

Want

Slide 12

Slide 12 text

Have

Slide 13

Slide 13 text

Try things

Slide 14

Slide 14 text

...and measure, or it doesn’t exist

Slide 15

Slide 15 text

Design Experiment (v.)

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Reasons It’s bad It’s important We have ideas We can measure it

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Previews up 10%

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

What’s next?

Slide 23

Slide 23 text

Failure Shouldn’t exist

Slide 24

Slide 24 text

Tools Optimizely Kissmetrics Internal HotnessTM

Slide 25

Slide 25 text

Optimizely A/B testing

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

An (abridged) plugin wp_enqueue_script('optimizely ', $this->url); wp_localize_script( 'optimizely', 'wpcom_optimizely', array( $experiment->slug => true ) );

Slide 29

Slide 29 text

gist.github /1275892

Slide 30

Slide 30 text

jQuery (".post-812") .find("h2 > a") .html("Nacin fights Koop"); The change

Slide 31

Slide 31 text

jQuery(".post-812") .find("h2 > a") .live("mousedown", function() { window.optimizely.push( ["trackEvent", "a_click"] ); }); The goal

Slide 32

Slide 32 text

optimizely_experiment( "nancin_coding_title', array( "action" => "init", "logged_out_users" => true ) ); The test

Slide 33

Slide 33 text

var wpcom_optimizely = {"nacin_coding_title":true}; The browser

Slide 34

Slide 34 text

The target

Slide 35

Slide 35 text

Kissmetrics Arbitrary data

Slide 36

Slide 36 text

What did they do?

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

gist.github /1428452

Slide 39

Slide 39 text

Using it WP_Kissmetrics::init( KISSMETRICS_API_KEY ); WP_Kissmetrics::identify( get_current_user_id() ); WP_Kissmetrics::record( 'Viewed shopping cart');

Slide 40

Slide 40 text

Mission Control Aka “Internal hotness”

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

Internal API bump_stats_extras( 'wclv_talk', 'audience_impressed' );

Slide 47

Slide 47 text

Analysis We have data! What does it say?

Slide 48

Slide 48 text

All data is not equal

Slide 49

Slide 49 text

isvalid.org Confidence interval Significance test

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

github /evansolomon/isvalid.org

Slide 52

Slide 52 text

Garbage in, garbage out

Slide 53

Slide 53 text

It is a mistake to use statistics without logic, but the reverse does not hold: It is not a mistake to use logic without statistics

Slide 54

Slide 54 text

Qualitative Get out of the building

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

Why did you sign up?

Slide 57

Slide 57 text

How Polldaddy.com Survey.io Usertesting.com

Slide 58

Slide 58 text

Data Mining Get answers

Slide 59

Slide 59 text

Pageviews

Slide 60

Slide 60 text

iPad Views

Slide 61

Slide 61 text

evansolomon.me /notes /data-visualization-is-itself-data/

Slide 62

Slide 62 text

wordpress.com/ stats

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

Your new friend $wpdb

Slide 65

Slide 65 text

WordPress Bootstrap include('wp-load.php'); global $wpdb; //magic goes here

Slide 66

Slide 66 text

$wpdb->prepare() Cleaner, safer SQL

Slide 67

Slide 67 text

Prepare $query = $wpdb->prepare( 'SELECT post_author FROM {$wpdb->posts} WHERE ID = %d', $author);

Slide 68

Slide 68 text

$wpdb->get_var() Readable code

Slide 69

Slide 69 text

Get Var $author = $wpdb->get_var( 'SELECT post_author FROM {$wpdb->posts} WHERE ID = %d', $author);

Slide 70

Slide 70 text

codex.wordpress.org/ Class_Reference/wpdb

Slide 71

Slide 71 text

No content