#+STARTUP: content #+STARTUP: hidestars * Pycon Keynote Notes ** Guido Keynote - Merging unladen swallow into 3 within a year? Python 3 - Guido also hates Python packaging - Thinks programming languages will disappear eventually. Replaced by something more natural - AppEngine? - greenlet/eventlet? - doesn't think python should be used for functional programming, admires f languages from a distance - django > turbogears - uses emacs.... and vi, got a lot of boos for the first one - web code review tools: codereview.appspot.com * Pycon Talk Notes ** Large Astronomical Data Reduction and Analysis Systems - LSST - Uses SimPy & ctypes - Large Scale simulations - Uses MPI for pipeline communications (mpi4py) - Astronomy, open data and open source. Free Data ** Ian Bicking: Packaging and Deployment - No one uses Python 3, everyone sees it as the future but there's no practical movement towards using it - standard library is fundamental, very stable - think about dependency tree as layers - analogy of streets and traffic to language - showing complex dependency graphs (*) (woonerf) - sqlalchemy, extremely complex... lots of lateral dependencies - "The Cloud" -> 'toppcloud' Ian's new tool - cloud is Testable - from questions: - monwhiskey instead of paste - toppcloud has config management (vs. chef, puppet) ** Python 2 -> 3 - "Regrets" and "Warts" - new string model (PEPs 358, 3112, 3137, 3138) - exception changes - division becomes true division ( 1/2 = 0.5 instead of 0 ) - floor division (my safe division? - new hex, octable, etc. literals - iterations are much more efficient (3.0 has a mem consumption theme) - xrange becomes range - new i/o class type - methods for tuples, new set and dict comprehensions (setcomps, dictcomps) ** Laziness - lazy data via generators & iterators - giving examples in scheme and haskell - memoizers as a form of laziness - haskell is completely lazy, evaluation only happens when necessary - itertools combinatoric iterator tools, very helpful and under used - itertools replaces older non-iterative tools like map, slice, etc. - not for infinite sets/lists (unlike haskell) - weakref, memoization - promises in a directed acyclic graph ** PyPy - Seems to be a very effective JIT for Python - operations like *args **kwargs are poor from a performance persp. + Significantly faster + I wonder if this is the same for CPython ** Revisioned Databases - From EVE - They use stackless python - Strategies + YAML + Server Authoritative + Settled on Revisioned Database - Multi-layered + DB Tables + BSD(Branch-Static-Data) layer that keeps changes/revision + CCP Revisioned Database (views on a per-row op) + User can only have one row out and allowed to CUD - Branching <-> Syncing - Doc developers can continuously work on versions of documentation - PyObj holds references to each table, polls recent revisions + Handles update tasklets + Merges into single query - BSDTable class managed BSDRow data - BSDRow handles editing and merging (bucketing) - Switched to sets from lists and got a huge speed improvement (interesting) - Caching/filtering using SQLite - Can't support 2 way (loading/written) transactions - Good for document editing - MSSQL 2k8 :( TransactSQL ** Dealing with unsightly data - ElementSoup? - xml.handler.ContentHandler for switching between diff formats - mapping between different protocols - this guy is british and hard to understand - get permission when converting prop data to open format - Reverse Engineering + Corner cases + Source data stability + provider notification of changes + Tools (docs, firebug or equiv) - DS -> [Connector|API] -> Consumer - data/type coercion - Strict out, forgiving in - Tests on API - Similar to issues I have had with the Yahoo Fantasy Sports Page though I used BeautifulSoup + Mechanize - Z39.50 protocol?