Your SlideShare is downloading. ×
0
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Cheap tricks for startups
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cheap tricks for startups

3,851

Published on

My talk from Monki Gras 2013.

My talk from Monki Gras 2013.

Published in: Technology
1 Comment
9 Likes
Statistics
Notes
No Downloads
Views
Total Views
3,851
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
31
Comments
1
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Lanyrd.comCheap tricks for Startups Simon Willison @simonw Monki Gras, 31st January 2013 http://lanyrd.com/sccqcy
  • 2. Early-stagestartup engineering is different
  • 3. What are the quickest tools tobuild that provide the most value?
  • 4. Cheap experimentation
  • 5. FEATURE_FLAGS = { new_maps: Uses MapBox rather than Google, login_picker: /signin/ page with picker, login_linkedin: Sign in with LinkedIn, # ...}
  • 6. @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): # ...
  • 7. <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 topic</a></p> </div> {% flagactive topic_tracking %} BETA ONLY {% endflagactive %} {% endflag %} <!-- ... --></div>
  • 8. Feature flags apply to individual users and/or user tags, e.g.alpha, beta, lanyrd-team
  • 9. “preview” tag controlsflags available on private preview.lanyrd.com (for testing logged-out features)
  • 10. Feature flags helpkeep trunk deployable
  • 11. Cheap deployment
  • 12. $ fab e:live deploy$ fab e:staging target:feature/linkedin deploy
  • 13. Deployment should be... Easy Fast Cheap
  • 14. Everyone deployson their first day!
  • 15. Read only mode
  • 16. MySQL PostgreSQLon EC2 on SoftLayer with no downtimehttp://lanyrd.com/blog/2012/lanyrds-big-move/
  • 17. Cheap analytics
  • 18. The History table
  • 19. Internal metrics• created_at field on EVERY table, no exceptions • Makes building graphs of site growth trivial• updated_at useful but not essential
  • 20. 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
  • 21. Cheap tricksFeature flagsRead only modeHistory tableDaily calculated reports http://lanyrd.com/sccqcy

×