I’ll update this as the day progresses at PyCon 2010.
1727: Debating whether to attend the lightning talks, or have dinner now and hack Django tonight. Django coding wins.
1655: Testing and Testability. “Testability is as important as all the other -ilities.” Testable code is better code – better design, etc. Better tests are convenient, fast, unambiguous, and repeatable. Advises peeling production setup and cleanup from the work, so that the guts of the work will have a clean interface and hence be easier to test. “A Test:Product ration of 1:1 is not unreasonable.” “You will write test framework code.”
1615: Why not run all your Tests all the Time? Hudson, Buildbot, et al. Minimalistic CI can be just a shell script, cron job, and notification system. The speaker advocates Hudson. Although written in Java, it appears to be quite feature-rich, slick, and easy to use. “Great for small-ish projects.” His take on Buildbot: Very powerful and configurable, but requires a high level of expertise for configuration and management. It is “frustratingly annoying to configure and maintain,” and debugging Buildbot setups is excruciating, “‘Just use zc.buildout and collective.buildout’ – now you have two problems.” He pushes very hard for Hudson, and says use Buildbot if and only if you outgrow Hudson. An excellent talk.
1540: Plone folks at PyCon 2010:
I’m in the photo, even though I haven’t worked in Plone since Fisher Communications embraced the future by firing 99% of its Web team.
1455: Threading is not a Model. Slow intro, got better over time.
1335: To Relate, or not to Relate. There’s 20 years of experience in SQL DBMS, and they have a good mix of properties. You’re less likely to “nail your hand to the wall” with them. ACID is goodness. SQL is the default safe choice – ad-hoc queries, consistency, acceptable latency. SourceForge switched from PostgreSQL to mongoDB. Big message was, don’t obsess about scale you’ll never achieve. YouTube made it to the top 10 web sites on MySQL with one write master.
1145: Understanding the Python GIL. GIL = cooperative multitasking. Pathological examples of more cores slowing down code, spawning compute-bound threads speeding up code. An example of a superb design that’s simple, easy to understand, and correctly implemented, which has unexpected subtleties. David Beazley does great analysis, is a great technical writer, and a great speaker. A new GIL in Python 3.2 – the first major change to the GIL since the inception of Python threads in 1992. It, too, can exhibit bizarre scheduling behavior. Proposed tweaks to the new GIL’s design. He points out that scheduling is a (mostly) solved problem in operating systems. Python’s GIL poorly reinvents the wheel. This was a great talk.
1107: Dude, Where’s my Database? Relational: Highly structured, strong type system, powerful query language. Key/Value: Unstructured, no type system, simple query API. (anydbm/dbm in Python 3, Berkeley DB, MemcacheDB). Data Structure: Modified key/value store, structured values, atomic operations: Redis. Graph: Specialized data structure type. Data is stored as graph nodes and edges. Document-oriented: Unstructured, formatted (JSON, Python object), programmable query API. (CouchDB, MongoDB (“blazingly fast”), ZODB). Highly Distributed: Multi-node optimized, add/remove nodes on the fly, difficult ad-hoc queries, sacrifices consistency. (Cassandra, Riak, HBase, Hypertable.) These have a very high scale ceiling, high availability, and eventual consistency.
1025: Simulating Network Devices with Python. Not super-duper.
1004: I miss my wife.
0949: This is the third conference in as many years where someone has claimed that open-source is at an “inflection point.” It was at an inflection point because of a perceived killer app; or some improvement; or a country, organization, or person had adopted open-source or said something about it. So I don’t believe it.
0935: Great talk by Mark Suttleworth, founder of Ubuntu, about the benefits of keeping a cadence in release cycles. He advocates using a check-in robot, which will reject a check-in without a minimum number of tests, or a test failure.
0901: Attendance is 1,025. The largest PyCon ever! About 10% female.
0759: In the main hall, surfing and coding until the 9:00 Plenary. Gave my business card to someone over lunch. That’s the first one of the day!