Top Banner
Addictive Collaboration Patterns of Participation in an Open Programming Contest Ned Gulley The MathWorks, Inc.
53

MATLAB Programming Contest

Jul 12, 2015

Download

Technology

Ned Gulley
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MATLAB Programming Contest

Addictive Collaboration

Patterns of Participation in an Open Programming Contest

Ned GulleyThe MathWorks, Inc.

Page 2: MATLAB Programming Contest

Competitive Wikipedia

Page 3: MATLAB Programming Contest
Page 4: MATLAB Programming Contest

MATLAB Programming Contest:

A week-long open collaborative competition for MATLAB programmers

Page 5: MATLAB Programming Contest

• Entries are automatically scored, ranked, and displayed immediately

• Code, author, and score are visible at all times

• Anyone can modify anyone else's code and resubmit it as their own

Page 6: MATLAB Programming Contest
Page 7: MATLAB Programming Contest

Protein folding

Page 8: MATLAB Programming Contest

leaders

leaders

1 karim2 carol3 eric karim.

fcn f(x)...

view entry

new entry

ned.fcn f(x)...

1 ned2 karim3 carol4 eric

Page 9: MATLAB Programming Contest

Doug says:

“I do not understand why anyone would be interested in participating in a contest where a winning idea is immediately co-opted and tweaked by another player.”

Page 10: MATLAB Programming Contest

Stijn says:

“I started Monday after work. I worked late, let's say 4 or 5 hours. I started to become ‘obsessed’. At home, although I am a father of three children, my full-time job was working on the contest. I didn't sleep much. I worked maybe 10 hours after work each day. On Thursday it was clear that I wasn't going to be able to work seriously (for my job), so I took a day off on Friday.”

Page 11: MATLAB Programming Contest

“This is my first MATLAB contest and it is giving me far too much enjoyment. It's one of the most addictive things I have tried. The exercise is improving my programming skill, but in return I have backache, a terrible diet, no social life, and not much of a work life either. Also, I have experienced physical trembling while making the final preparations to send a code into the pit. Is that normal?”

Nathan says:

Page 12: MATLAB Programming Contest

Patterns ofParticipation

Page 13: MATLAB Programming Contest

Big changes (Leaps)

function f = fb(n)a = [0 1; 1 1]^n;f = a(2);

function f = fb(n)if n > 2 f = fb(n-1) + fb(n-2); else f = 1; end

Generating the nth Fibonacci number: 1, 1, 2, 3, 5, 8, 13, ...

Page 14: MATLAB Programming Contest

Small changes (Tweaks)

...y = [1 2 3]...

...y = 1:3;...

Page 15: MATLAB Programming Contest

Better

Time

Wednesday Monday

Score = k1 * (algorithmic result) + k2 * (CPU time)

Page 16: MATLAB Programming Contest
Page 17: MATLAB Programming Contest
Page 18: MATLAB Programming Contest

Punctuatedequilibrium

(the zigzag of innovation)

Page 19: MATLAB Programming Contest

CPU Time

CostFunction

Page 20: MATLAB Programming Contest

CostFunction

CPUTime

Page 21: MATLAB Programming Contest

CostFunction

CPUTime

Page 22: MATLAB Programming Contest

Collaboration

Page 23: MATLAB Programming Contest

Code Market Share by Line Count

Page 24: MATLAB Programming Contest

Schools of thought(clans)

Page 25: MATLAB Programming Contest
Page 26: MATLAB Programming Contest

Innovation uptake

Page 27: MATLAB Programming Contest

First use of

conv

First leader

with conv

Page 28: MATLAB Programming Contest

Systematic variation(tweak bombs)

Page 29: MATLAB Programming Contest
Page 30: MATLAB Programming Contest
Page 31: MATLAB Programming Contest

Social signaling

Page 32: MATLAB Programming Contest

• Scrambled Eggs• Rotten Eggs• I didn't start the fire• don't get obfuscated ... follow the light• You Call This Collaboration? Give

Me A Break

Page 33: MATLAB Programming Contest

• Tweak Tweak Tweak• tweakfest • tweak-o-rama• slippery ground (tweak me)• Seems like everyone's just tweaking• I said to myself not to do this kind of

thing...• Poopdeck Pappy gives in to peer

pressure

Page 34: MATLAB Programming Contest

• I wish I knew how this works

Page 35: MATLAB Programming Contest

Phase transitions

Page 36: MATLAB Programming Contest

novel

conserved

deleted

Page 37: MATLAB Programming Contest

Line-by-lineAnalysis

Page 38: MATLAB Programming Contest

History Flow

Page 39: MATLAB Programming Contest

Knapsack, all

Page 40: MATLAB Programming Contest

Knapsack, leaders only

Page 41: MATLAB Programming Contest

Knapsack leaders

Page 42: MATLAB Programming Contest

Knapsack shortest path

Page 43: MATLAB Programming Contest

The shortest path

Page 44: MATLAB Programming Contest

Two views of history

Page 45: MATLAB Programming Contest

Broad variations

Page 46: MATLAB Programming Contest

Deep variations

Page 47: MATLAB Programming Contest

Motivation

Page 48: MATLAB Programming Contest

Personal gloryor

Collaboration ?

Page 49: MATLAB Programming Contest

Behavior of a jealous coder

• Last-minute entry• Obfuscation• Spaghetti code• No comments• Sandbagging• Sock puppeting• Combinations

Page 50: MATLAB Programming Contest

“Behavior” of successful code

• High rank• Time on top• High status

author• Clarity• Elegance• Comments• Novelty

Page 51: MATLAB Programming Contest

The code wants to propagate!

The coder wants to block code propagation

The essential tension:

Page 52: MATLAB Programming Contest

For the code • Encourage copying• Highlight changes• Punish complexity• Discourage

obfuscation• Easy tweaking

For the coder • Make participation

easy• Reward vanity• Many cheap prizes• Darkness period• Easy tweaking

Managing the tension:

Page 53: MATLAB Programming Contest

A chicken is only an egg’s way of making another egg.

A hacker is only code’s way of

making more code.