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

MATLAB Programming Contest

Embed Size (px)

Citation preview

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.