Loading presentation...

Present Remotely

Send the link below via email or IM


Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.




Diana Clarke

on 17 May 2010

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Evolve

Data Access Serialization Deploying Performance Cloud Unit Testing
AMQP Messaging Community Dog Food
Service Oriented RESTful #sqlalchemy #pylons groups.google.com/group/sqlalchemy
groups.google.ca/group/pylons-discuss Grow
Commits to SQLAlchemy [diana@devimage ~]$ source mydevenv/bin/activate
(mydevenv)[diana@devimage ~]$ cd workspace/evolve
(mydevenv)[diana@devimage evolve]$ python setup.py develop $$ Cash Money $$ (mydevenv)[diana@devimage evolve]$ nosetests --exclude=integration
(mydevenv)[diana@devimage evolve]$ paster serve --reload development.ini
serving on view at I’ve got a little secret to share about our technology stack here at FreshBooks. Although by all appearances we are just another PHP shop, FreshBooks has actually been powered by Ruby on Rails for about three years now. Here’s how we did it: FreshBooks is a rails shop, right? I blame this guy Developer Blog: routes.rb: FreshBooks is a PHP shop then? Understanding the Python GIL (mydevenv)[diana@devimage evolve]$ python setup.py sdist bdist_egg
]evolve-2.29.tar.gz requests/sec, fast enough, metrics RailsConf 09: Robert Martin, "What Killed Smalltalk Could Kill Ruby, Too" http://pylonshq.com/docs/en/1.0/gettingstarted/#installing http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html anonymous comment in response... Language ... Questions?
Memory Old-style vs. New-style classes
Dynamical Mappings
Brute Force Sharding
Python Weakref Dict Bugs
Garbage Collection

Connect Give Back Decorators testing is hard --
like proofs are hard nose
Legacy Rewrite?
Evolve Founded in 2003
Filled a Void
Got it to Market Legacy Code Tangled PHP + HTML + SQL
Tons of One-Off Queries
Code Duplication
Huge Blocks
Global Scope Abuse LegacyDatabase MyISAM
No Transactions
No Foreign Keys
Insane sharding
Priming the Cache The Hard Part Why *not* PHP? Developer Satisfaction
Not the Legacy Language
Community & Tools
Gulf of Expectation Oh, the hilarity ... What? Database
Front-end http://developers.freshbooks.com/blog/ It's Complicated. http://blip.tv/file/2089545 def test_<method_under_test>___<edge_case1>___<edge_caseN>
Generated Code folder.child_folders() folder.parent_folder() base_dao coverage
What would it take to transform our code base into something we were actually proud of? Hibernate Like
SQL Expression Language
Defined Relationships
Lazy/Eager Loading
Insane Sharding ORM ORM Spike Zend_db, Propel, Doctrine, Django ORM
SQLAlchemy (complete, sharding)
Django Web Framework + Django ORM
Pylons Truth(iness) Automatic Type Conversion developers.
api/webhooks/ How? php + python A Poor Carpenter Blames His Tools 'cause every tool is a
if you hold it
right whatever... Test Drive
Mitigate Risk
Unit Test
Go Slow
Release Often
Follow Through
http://us.pycon.org/2010/conference/schedule/event/76/ Focused on Correctness
Extended Query
Second Level Cache
Latency Curl
Repoze AccumulatingProfileMiddleware

Full transcript