Social messaging application
  Developed in 4 months
 Invite-only launch in June
  We’ve learned a lot ...
Lesson:
        Think about
     technology choices
     •    We could pick anything!
     •    Social as well as technolo...
Why Django?
Django is a Python web framework


•   Yay! Web frameworks!
•   Documentation and readability
•   Auto-generat...
Why S3?
Amazon’s Simple Storage Service


•   Pownce files are stored on S3
•   Less maintenance for Pownce
•   Inexpensiv...
Why AIR?
Adobe Integrated Runtime


•   Works on both PC and Mac
•   Easy to develop
•   Encourages good UI
•   Lots of go...
Lesson:

    Do a lot with a little
     •    Pownce has a tiny team
     •    One website developer
     •    Self-funded...
Small Teams
We wear many shoes.


•   Multiple roles
•   Learn quickly
•   Dedicated



                      Do a lot wit...
Open Source Tools
Plenty of web application help


•   Someone has solved this problem before
•   ... and they’re probably...
Use Your Resources
Get some help.


•   Documentation websites
•   IRC
•   Network and learn from friends
•   Exchange kno...
Lesson:
           Be kind to your
              database

     •    Pownce’s database is its main bottleneck
     •    On...
Caching:
“I’ve already done that.”


•   We use memcached
•   Caching at page and object / list level
•   Cached our stati...
Queuing:
“I’ll do that later.”


•   Taking a (shorter) note of a (longer)
    process to do later
•   We “send” notes via...
Limits and Pagination:
 “I don’t need to do ALL of that.”


•   Notes list, friends list, recipient lists...
•   Good user...
Index:
 “I’ll mark that to find it later.”


•   We had to re-think how we were
    accessing our data
•   Friend searchin...
Avoid Complexity:
“I won’t make the db do that.”

•   Some queries are just too complicated
    (for a new web app)
•   Co...
[ JARRING CHORD ]




Expect Anything!
Lesson:

          Expect Anything

     •    Young sites can run into many problems
     •    Need to respond quickly
   ...
Keep Backups
Because stuff happens.


•   Use version control
•   Have a system to revert code changes
•   Track dependenc...
Duly Noted:
Keep lots of data.


•   Stats to monitor
•   Quantitative measures
•   Pretty graphs




                    ...
Community
Keep in touch with your community.


•   Let users know what you’re working on
•   Respond to individual bug rep...
Friendships Matter
Social sites are all about friends.


•   Strive to make it easy to establish,
    maintain or break re...
A feature that matters.




   (from Satisfaction)




                         Expect anything...
Prepare to Scale Up
It’s a good problem to have.


•   “Don’t prematurely optimize”
•   ... unless you work with Kevin Ros...
Lessons Learned
 Think about technology choices
      Do a lot with a little
    Be kind to your database
        Expect a...
Thanks!
Pownce Lessons Learned
Upcoming SlideShare
Loading in...5
×

Pownce Lessons Learned

25,804

Published on

Lessons learned while developing Pownce, a social messaging web application.

Published in: Technology
0 Comments
86 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
25,804
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
1,087
Comments
0
Likes
86
Embeds 0
No embeds

No notes for slide

Pownce Lessons Learned

  1. 1. Social messaging application Developed in 4 months Invite-only launch in June We’ve learned a lot ...
  2. 2. Lesson: Think about technology choices • We could pick anything! • Social as well as technological reasons factored into our decisions • Took risks • Open to new technologies
  3. 3. Why Django? Django is a Python web framework • Yay! Web frameworks! • Documentation and readability • Auto-generated admin • Active community • Framework open to growth Think about tech choices...
  4. 4. Why S3? Amazon’s Simple Storage Service • Pownce files are stored on S3 • Less maintenance for Pownce • Inexpensive • Been very reliable so far Think about tech choices...
  5. 5. Why AIR? Adobe Integrated Runtime • Works on both PC and Mac • Easy to develop • Encourages good UI • Lots of good buzz Think about tech choices...
  6. 6. Lesson: Do a lot with a little • Pownce has a tiny team • One website developer • Self-funded • Short deadlines
  7. 7. Small Teams We wear many shoes. • Multiple roles • Learn quickly • Dedicated Do a lot with a little...
  8. 8. Open Source Tools Plenty of web application help • Someone has solved this problem before • ... and they’re probably smarter than me • Lots of tools available • Free to use Do a lot with a little...
  9. 9. Use Your Resources Get some help. • Documentation websites • IRC • Network and learn from friends • Exchange knowledge with other sites • Participate in communities Do a lot with a little...
  10. 10. Lesson: Be kind to your database • Pownce’s database is its main bottleneck • One MySQL database • Responding quickly to slow queries has helped keep Pownce running • Few simple tips...
  11. 11. Caching: “I’ve already done that.” • We use memcached • Caching at page and object / list level • Cached our static pages since launch Be kind to your database...
  12. 12. Queuing: “I’ll do that later.” • Taking a (shorter) note of a (longer) process to do later • We “send” notes via a job queue • Need to improve our queuing system and add more processes Be kind to your database...
  13. 13. Limits and Pagination: “I don’t need to do ALL of that.” • Notes list, friends list, recipient lists... • Good user interface as well • Django Paginator object is a good starting point Be kind to your database...
  14. 14. Index: “I’ll mark that to find it later.” • We had to re-think how we were accessing our data • Friend searching is a prime example of where good indexing can improve performance Be kind to your database...
  15. 15. Avoid Complexity: “I won’t make the db do that.” • Some queries are just too complicated (for a new web app) • Consider if they’re actually NEEDED • Usually good to avoid abstract or conceptual data display Be kind to your database...
  16. 16. [ JARRING CHORD ] Expect Anything!
  17. 17. Lesson: Expect Anything • Young sites can run into many problems • Need to respond quickly • Can’t prepare for everything • Every web application is unique
  18. 18. Keep Backups Because stuff happens. • Use version control • Have a system to revert code changes • Track dependencies and updates made • If developing locally, backup personal work Expect anything...
  19. 19. Duly Noted: Keep lots of data. • Stats to monitor • Quantitative measures • Pretty graphs Expect anything...
  20. 20. Community Keep in touch with your community. • Let users know what you’re working on • Respond to individual bug reporters • Inform users of bug fixes and new features • Be careful about asserting deadlines Expect anything...
  21. 21. Friendships Matter Social sites are all about friends. • Strive to make it easy to establish, maintain or break relationships • Accurately represent user relationships • Online friends have real-world effects • Don’t mess this up! Expect anything...
  22. 22. A feature that matters. (from Satisfaction) Expect anything...
  23. 23. Prepare to Scale Up It’s a good problem to have. • “Don’t prematurely optimize” • ... unless you work with Kevin Rose • Design for success • Accept that your code will change Expect anything...
  24. 24. Lessons Learned Think about technology choices Do a lot with a little Be kind to your database Expect anything
  25. 25. Thanks!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×