Evolve

Evolve »
Diana Clarke

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 0.0.0.0:5000 view at http://127.0.0.1:5000
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-py2.6.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
Back-Ups
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
Back-end
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.
freshbooks.com/
api/webhooks/
How?
php + python
A Poor Carpenter Blames His Tools
'cause every tool is a
weapon
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

AltertSite
Latency Curl
Repoze AccumulatingProfileMiddleware
cProfile

Loading comments...

Please log in to add your comment.

Report abuse

More presentations by Diana Clarke

  • joking

    Diana Clarke on