SlideShare a Scribd company logo
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 technological reasons
          factored into our decisions
     •    Took risks
     •    Open to new technologies
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...
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...
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...
Lesson:

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


•   Multiple roles
•   Learn quickly
•   Dedicated



                      Do a lot with a little...
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...
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...
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...
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...
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...
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...
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...
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...
[ JARRING CHORD ]




Expect Anything!
Lesson:

          Expect Anything

     •    Young sites can run into many problems
     •    Need to respond quickly
     •    Can’t prepare for everything
     •    Every web application is unique
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...
Duly Noted:
Keep lots of data.


•   Stats to monitor
•   Quantitative measures
•   Pretty graphs




                            Expect anything...
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...
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...
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 Rose
•   Design for success
•   Accept that your code will change


                               Expect anything...
Lessons Learned
 Think about technology choices
      Do a lot with a little
    Be kind to your database
        Expect anything
Thanks!

More Related Content

What's hot

Working Effectively With A Clinical Publisher
Working Effectively With A Clinical PublisherWorking Effectively With A Clinical Publisher
Working Effectively With A Clinical Publisher
chrisgraflinkedin
 
Deliver value not quantity, a Lean UX approach
Deliver value not quantity, a Lean UX approachDeliver value not quantity, a Lean UX approach
Deliver value not quantity, a Lean UX approach
Oana Mangiurea
 
Enki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript frameworkEnki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript framework
Radu Iscu
 
Flip Presentation
Flip PresentationFlip Presentation
Flip Presentation
Lance Bledsoe
 
Printer Problems
Printer ProblemsPrinter Problems
Printer Problems
lgmsgranger
 
Getting started programming on Linux
Getting started programming on LinuxGetting started programming on Linux
Getting started programming on Linux
Steve Dalton
 
How the brain reacts to a slow corporate website
How the brain reacts to a slow corporate websiteHow the brain reacts to a slow corporate website
How the brain reacts to a slow corporate website
Comprend
 
Instant Timetables
Instant TimetablesInstant Timetables
Instant Timetables
wlj616
 
Common Mistakes Made By Web Developers
Common Mistakes Made By Web DevelopersCommon Mistakes Made By Web Developers
Common Mistakes Made By Web Developers
BOSS Webtech
 
Close circles. Do more.
Close circles. Do more.Close circles. Do more.
Close circles. Do more.
Nicole Gravagna, PhD
 
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
LogeekNightUkraine
 
Boardmaker Powerpoint - My Experience
Boardmaker Powerpoint - My ExperienceBoardmaker Powerpoint - My Experience
Boardmaker Powerpoint - My Experience
1JJH
 

What's hot (12)

Working Effectively With A Clinical Publisher
Working Effectively With A Clinical PublisherWorking Effectively With A Clinical Publisher
Working Effectively With A Clinical Publisher
 
Deliver value not quantity, a Lean UX approach
Deliver value not quantity, a Lean UX approachDeliver value not quantity, a Lean UX approach
Deliver value not quantity, a Lean UX approach
 
Enki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript frameworkEnki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript framework
 
Flip Presentation
Flip PresentationFlip Presentation
Flip Presentation
 
Printer Problems
Printer ProblemsPrinter Problems
Printer Problems
 
Getting started programming on Linux
Getting started programming on LinuxGetting started programming on Linux
Getting started programming on Linux
 
How the brain reacts to a slow corporate website
How the brain reacts to a slow corporate websiteHow the brain reacts to a slow corporate website
How the brain reacts to a slow corporate website
 
Instant Timetables
Instant TimetablesInstant Timetables
Instant Timetables
 
Common Mistakes Made By Web Developers
Common Mistakes Made By Web DevelopersCommon Mistakes Made By Web Developers
Common Mistakes Made By Web Developers
 
Close circles. Do more.
Close circles. Do more.Close circles. Do more.
Close circles. Do more.
 
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
 
Boardmaker Powerpoint - My Experience
Boardmaker Powerpoint - My ExperienceBoardmaker Powerpoint - My Experience
Boardmaker Powerpoint - My Experience
 

Similar to Pownce Lessons Learned

Setting up the New Stuff: Planning & Implementing Library 2.0
Setting up the New Stuff: Planning & Implementing Library 2.0Setting up the New Stuff: Planning & Implementing Library 2.0
Setting up the New Stuff: Planning & Implementing Library 2.0
David King
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEP
Ioannis Baltopoulos
 
Help Desk Management & Multimedia
Help Desk Management & MultimediaHelp Desk Management & Multimedia
Help Desk Management & Multimedia
wes.christiansen
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for Testers
Adam Goucher
 
Super lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanSuper lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik Mukelyan
Drew Malone
 
Understand Open Source ecosystems
Understand Open Source ecosystemsUnderstand Open Source ecosystems
Understand Open Source ecosystems
Knowmades.com
 
Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008
Ivo Jansch
 
Guerilla Usability Testing
Guerilla Usability TestingGuerilla Usability Testing
Guerilla Usability Testing
Andy Budd
 
DjangoCon09: No! Bad Pony!
DjangoCon09: No! Bad Pony!DjangoCon09: No! Bad Pony!
DjangoCon09: No! Bad Pony!
Russell Keith-Magee
 
Running Neo4j in Production: Tips, Tricks and Optimizations
Running Neo4j in Production:  Tips, Tricks and OptimizationsRunning Neo4j in Production:  Tips, Tricks and Optimizations
Running Neo4j in Production: Tips, Tricks and Optimizations
Nick Manning
 
Running Neo4j in Production: Tips, Tricks and Optimizations
Running Neo4j in Production:  Tips, Tricks and OptimizationsRunning Neo4j in Production:  Tips, Tricks and Optimizations
Running Neo4j in Production: Tips, Tricks and Optimizations
Nick Manning
 
Things You Need to Know Before Starting An App-Openair2015 keynote
Things You Need to Know Before Starting An App-Openair2015 keynoteThings You Need to Know Before Starting An App-Openair2015 keynote
Things You Need to Know Before Starting An App-Openair2015 keynote
Sana Nasar
 
Supporting studio-based design courses with django-courseapp
Supporting studio-based design courses with django-courseappSupporting studio-based design courses with django-courseapp
Supporting studio-based design courses with django-courseapp
Mike Krieger
 
Chat Smarter At Penn State
Chat Smarter At Penn StateChat Smarter At Penn State
Chat Smarter At Penn State
John Meier
 
Web Design Workshop
Web Design WorkshopWeb Design Workshop
Web Design Workshop
SuseZ
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Long Nguyen
 
Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)
Ivo Jansch
 
Software Development Whats & Whys
Software Development Whats & Whys Software Development Whats & Whys
Software Development Whats & Whys
Harun Yardımcı
 
PostgreSQL Conference: West 08
PostgreSQL Conference: West 08PostgreSQL Conference: West 08
PostgreSQL Conference: West 08
Joshua Drake
 
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
Scott Abel
 

Similar to Pownce Lessons Learned (20)

Setting up the New Stuff: Planning & Implementing Library 2.0
Setting up the New Stuff: Planning & Implementing Library 2.0Setting up the New Stuff: Planning & Implementing Library 2.0
Setting up the New Stuff: Planning & Implementing Library 2.0
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEP
 
Help Desk Management & Multimedia
Help Desk Management & MultimediaHelp Desk Management & Multimedia
Help Desk Management & Multimedia
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for Testers
 
Super lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanSuper lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik Mukelyan
 
Understand Open Source ecosystems
Understand Open Source ecosystemsUnderstand Open Source ecosystems
Understand Open Source ecosystems
 
Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008
 
Guerilla Usability Testing
Guerilla Usability TestingGuerilla Usability Testing
Guerilla Usability Testing
 
DjangoCon09: No! Bad Pony!
DjangoCon09: No! Bad Pony!DjangoCon09: No! Bad Pony!
DjangoCon09: No! Bad Pony!
 
Running Neo4j in Production: Tips, Tricks and Optimizations
Running Neo4j in Production:  Tips, Tricks and OptimizationsRunning Neo4j in Production:  Tips, Tricks and Optimizations
Running Neo4j in Production: Tips, Tricks and Optimizations
 
Running Neo4j in Production: Tips, Tricks and Optimizations
Running Neo4j in Production:  Tips, Tricks and OptimizationsRunning Neo4j in Production:  Tips, Tricks and Optimizations
Running Neo4j in Production: Tips, Tricks and Optimizations
 
Things You Need to Know Before Starting An App-Openair2015 keynote
Things You Need to Know Before Starting An App-Openair2015 keynoteThings You Need to Know Before Starting An App-Openair2015 keynote
Things You Need to Know Before Starting An App-Openair2015 keynote
 
Supporting studio-based design courses with django-courseapp
Supporting studio-based design courses with django-courseappSupporting studio-based design courses with django-courseapp
Supporting studio-based design courses with django-courseapp
 
Chat Smarter At Penn State
Chat Smarter At Penn StateChat Smarter At Penn State
Chat Smarter At Penn State
 
Web Design Workshop
Web Design WorkshopWeb Design Workshop
Web Design Workshop
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)
 
Software Development Whats & Whys
Software Development Whats & Whys Software Development Whats & Whys
Software Development Whats & Whys
 
PostgreSQL Conference: West 08
PostgreSQL Conference: West 08PostgreSQL Conference: West 08
PostgreSQL Conference: West 08
 
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
 

Recently uploaded

Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
ScyllaDB
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 

Recently uploaded (20)

Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 

Pownce Lessons Learned

  • 1.
  • 2. Social messaging application Developed in 4 months Invite-only launch in June We’ve learned a lot ...
  • 3. 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
  • 4. 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...
  • 5. 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...
  • 6. 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...
  • 7. Lesson: Do a lot with a little • Pownce has a tiny team • One website developer • Self-funded • Short deadlines
  • 8. Small Teams We wear many shoes. • Multiple roles • Learn quickly • Dedicated Do a lot with a little...
  • 9. 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...
  • 10. 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...
  • 11. 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...
  • 12. 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...
  • 13. 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...
  • 14. 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...
  • 15. 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...
  • 16. 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...
  • 17. [ JARRING CHORD ] Expect Anything!
  • 18. Lesson: Expect Anything • Young sites can run into many problems • Need to respond quickly • Can’t prepare for everything • Every web application is unique
  • 19. 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...
  • 20. Duly Noted: Keep lots of data. • Stats to monitor • Quantitative measures • Pretty graphs Expect anything...
  • 21. 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...
  • 22. 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...
  • 23. A feature that matters. (from Satisfaction) Expect anything...
  • 24. 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...
  • 25. Lessons Learned Think about technology choices Do a lot with a little Be kind to your database Expect anything