26
Cheap tricks for Startups Lanyrd.com Simon Willison @simonw Monki Gras, 31st January 2013 http://lanyrd.com/sccqcy

Cheap tricks for startups

  • View
    4.211

  • Download
    4

Embed Size (px)

DESCRIPTION

My talk from Monki Gras 2013.

Citation preview

Page 1: Cheap tricks for startups

Cheap tricks for Startups

Lanyrd.com

Simon Willison @simonwMonki Gras, 31st January 2013

http://lanyrd.com/sccqcy

Page 2: Cheap tricks for startups

Early-stagestartup engineering

is different

Page 3: Cheap tricks for startups

What are the quickest tools to

build that provide the most value?

Page 4: Cheap tricks for startups

Cheap experimentation

Page 5: Cheap tricks for startups

FEATURE_FLAGS = { 'new_maps': 'Uses MapBox rather than Google', 'login_picker': '/signin/ page with picker', 'login_linkedin': 'Sign in with LinkedIn', # ...}

Page 6: Cheap tricks for startups

@login_required@flag_required('topic_tracking')def topic_track(request, slug): topic = get_object_or_404(Topic, slug=slug) # ... if user.has_flag('topic_enhancements'): # ...

Page 7: Cheap tricks for startups

<div class="secondary"> {% flag topic_tracking %} <div class="icon-feature feature-topic"> <em class="title">Keep exploring</em> <p class="med"><a href="/topics/"> Browse and track events by&nbsp;topic</a></p> </div> {% flagactive topic_tracking %} BETA ONLY {% endflagactive %} {% endflag %} <!-- ... --></div>

Page 8: Cheap tricks for startups

Feature flags applyto individual users

and/or user tags, e.g.alpha, beta, lanyrd-team

Page 9: Cheap tricks for startups

“preview” tag controls flags available on private

preview.lanyrd.com(for testing logged-out

features)

Page 10: Cheap tricks for startups

Feature flags help keep trunk deployable

Page 11: Cheap tricks for startups

Cheap deployment

Page 12: Cheap tricks for startups

$ fab e:live deploy

$ fab e:staging target:feature/linkedin deploy

Page 13: Cheap tricks for startups
Page 14: Cheap tricks for startups
Page 15: Cheap tricks for startups

Deployment should be...

EasyFastCheap

Page 16: Cheap tricks for startups

Everyone deployson their first day!

Page 17: Cheap tricks for startups

Read only mode

Page 18: Cheap tricks for startups

MySQLon EC2

PostgreSQLon SoftLayer

with no downtime

http://lanyrd.com/blog/2012/lanyrds-big-move/

Page 19: Cheap tricks for startups

Cheap analytics

Page 20: Cheap tricks for startups

The History table

Page 21: Cheap tricks for startups

Internal metrics

• created_at field on EVERY table, no exceptions

• Makes building graphs of site growth trivial

• updated_at useful but not essential

Page 22: Cheap tricks for startups

Our report system• Reports are arbitrary calculations

• Run daily by cron

• Backfill available on date-field based reports

• Points are stored in the database

• Site can graph any report

• We can export any report to a spreadsheet

Page 23: Cheap tricks for startups
Page 24: Cheap tricks for startups

Cheap tricksFeature flagsRead only modeHistory tableDaily calculated reports

http://lanyrd.com/sccqcy

Page 25: Cheap tricks for startups
Page 26: Cheap tricks for startups