These are my notes about the last day of the conference. Today was a more “relaxed” day because there were less tracks. I followed a bunch of tracks, mostly project management. We, the Italian maphia
, managed to take some pictures with Guido. I’ll upload them to flickr when the guy with the camera will give them to me. I had a great time attending the conference and the lightning talks are definitely interesting. 5 minutes sometime is all you need to get people know you. I also saw a very beautiful female scientist (I guess) around here but lost track of her
I have 2 days to find her!
We were thinking of doing a lightning talk to do some jokes to the german guys here (cause of the soccer semi-final score) but we didn’t have time to arrange something funny. Armin Massa (as you can read down in the talks report) is reconfirmed as a great entertainer. I liked the day as it came. Very much.
Let’s see what I saw (!):
Templating Systems Compared and Contrasted
This was a endless talk about templating systems. People should stop write their YAUABWTS and start “fixing” the ones already there if they don’t like them. The talk was 1 hour long and I’ve to admit I was not so interested so here you are:
Chris Withers, Simplistix.co.uk
print string templating quixote PTL
Zope - DTML Zope - ZPT
Cheetah Nevow Kid
Django
pymeld meld2 meld3
Twiddler overview
Implementation of a Transaction-based Peer-to-Peer Protocol
This was the coolest talk of the day I guess. Prof. Sofia Nygard from Finland showed us an overview of a P2P protocol they are developing and I find it very simple and cool. They took inspiration from Gnutella but the project is really promising if they keep it simple and not overfeatured like is right now. Useless notes here because I was reading, listening and asking some questions:
Sofia Nygard, Finland
Adaptive ping HTTP rest interface transactional not really opensourced yet university project
Kill-1: process refactoring in the PyPy project
After the P2P track Beatrice During introduced PyPy from the manager view. The talk was really interesting (like the following ones) because, hey, someone has to handle the developers! Like Steve Alexander from Canonical said: distributed company are the future! …or maybe “a” future.
Managing the Launchpad team at Canonical
I took a lot of notes (basically the whole slides) because this topic rocks to me. How do you handle people all over the world? Here’s the answer:
- many different countries
- timezone 19 hours
- communications over all kind of channels. irc, meetings, email,
specs, launchpad, wiki, jabber, voip, screen/vnc, phone, code review,
design review, bug triage, activity reports, weblogs, voice call
Coordination: - ubuntu team has weekly meeting: lots of people, few blocking - the launchpad team also: few people, lots of blocking - management team too: variable time
Launchpad weekly meetings: - strictly 45 minutes because people is all over the world: - always on time - whole team on irc
Launchpad meeting agenda: - roll call, agenda, next meeting - activity reports - actions from the last meeting - oops report. critical bug report - production and staging - sysadmin requests - items - keep bag change, three sentences
Items must be: - dealt with swiftly and decisively - options are: - fix it now - assign responsible people and derivable - assign group to meet, attendees, time, owner
Meeting techniques: - prepare text before, paste onto channel at once - countdown - quick polls: - say "done" if you did it, "not done" otherwise - summary before item: "in this oops report I'll discuss issues 123, 667 and 998" - nominate a person for taking user issues elsewhere
Activity reports: - simple format - with or without time information - gtimelog to make it easier to keep track - etc.
Meetings in person: - one all-hands canonical meeting each year - launchpad meetings between time - specs, docs, architecture: - braindump -> draft -> approved -> implemented - use launchpad to manage specs
Launchpad code: - Bazaar for revision control: - PQM runs full test suite before code gets into (pqm is a daemon to merge changesets, patch queue manager) - signed changesets - feature branches
- code reviews
Managing a distributed company
Lene Wagner, Merlinux.de managing director, completed the topic about distributed companies explaining how Merlinux.de handles a team all over the Europe. They’re are really small compared to Canonical but the problems are the same in scale. Very nice talk
Speed up your Python code
A quite interesting talk of good practices about writing fast code:
- your optimization is really necessary?
- don't do premature optimization
- finding the bottlenecks:
- io bound or cpu bound?
- os system tools:
- time, top, dstat
- gkrellm, xosview
- python tools:
- profile and cProfile
- hotshot
- print
- analyze algos with big-O notation
- O(1) -> constant -> key in dict or list.append
- O(ln n) -> logarithmic -> binary search
- O(n) -> linear -> item in sequence or join
- O(n ln n) -> list.sort()
- O(n^2) -> quadratic -> nested loops
change algorithms, architectures or data structures!
algorithms: - avoid nested loops - move loop invariant code out of loops - update only changed data in a object - divide and conquer - cache instead of recompute or reload - but don't exhaust memory, avoid swapping - use multithreading for i/o bound code - consider replacing an algorith instead of tuning it - read a file completely ad then process it if it's small - read and process a file line by line if it's large - use db for large files
hw: - use faster computers - more memory - faster hd - faster network hw
python: - use python -O - no exec and eval - no from module import * - shcut namespaces searches (e.g. opj = os.path.join) - use list.append and string.join to concatenate - list and gen comprehension instead of for loops - avoid function/method calls, inline calls
Here come the lightning talks!
Moshe Zadka: Giving a "bad lightning talk HOWTO" talk
- use a monotone tone
- look at the screen, never at the audience
- make sure to read every single bullet point
- do not modify phrasing
- talk really fast (Moshe is crazy!)
- make sure to say nothing interesting
Rob Collins about tools for (D)SCM - bzrk
Felix Wiemann about docutils (rEst) - security issues
Richards Jones about playing videogames (the guy of the pygame.draw challenge, see http://www.pyweek.org/)
Aaron Bingham about Design By Contract
Andrew Maier of CERN about Ganga: - tool to optimize job submissions to the CERN grid - jobs up to 1TB per job - several times, 6000 phisycists
Ganga is a python app to help the user to submit jobs. it splits the jobs over resources.
- used by ITU, Biomed (Avian flu)
Stefano Masini about shell application framework - http://www.pragma2000.com - shellcs on sourceforge. twisted based system from writing client-server command-based applications.
Marc Berhault, Google Inc. about Site Reliability at Google - estimated 5 exabytes per year - traffic never stops: - 1.000 queries / sec - GFS usage at google: - 30+ clusters - 2000+ chunkservers - petabyte-sized fs - 2000MB/s r/w load - all in the presence of hw failurs
EPC team: - 15 months to prepare an EPC - lots of details - indico sw from CERN (opensource) - online payment system - Vilnius for next year?
Harald Armin Massa about zerolib: - a parody of web templating systems - the final templating solution (lol)
Sylvain Thénault on Static type inference in logilab-astng: - astng estension to ast - dynamically extended to add some info about methods - applications: - pylint - charateristics: - a kind of restricted python - local ast based inference - extensive use of generators
Anders Chrigstrom about pypy's JIT: - very hard to write - create a program that creates a JIT for us, a JIT generator
Some guy about pickling and (in)security
EPC team woman (Aiste?) about EPC online poll
Jean-Philippe about teaching Python at Ecole Central Paris: - general engineering school - bac + 2 -> bac + 5 - 500 students/year - theoretical background (math, physics) - < 5% will program for a living
why teaching programming?:
- to understand programmers
- to understand how computer works
- to understand what can you do with it
- crash course
Python led to an increase in student's interest in the course
some students started to use it out of school
http://www.etudes.ecp.fr
Ignas Mikalajunas about Access control with crowds: - http://www.schooltool.org - http://pov.lt/ - Vilnius - Lithuania (they developed gtimelog, ubuntu and canonical website)
Holger Krekel and Armin Rigo about PyPy 3000: - http://codespeak.net/svn/pypy/extradoc/talk/ep2006/pypy3000.txt
Brian Quinlan about Vancouver Python Workshop:
- 10 reasons to go there:
- located 8.000km away
- we're european, lot of vacation time
- vancouver is the 3rd best city in the world (CNN ranking)
- kind of nice city
- great keynoters
- plone, pyobjc, plone, blahblah
- nice barbecues
- people like it
- cheap (your super € beats wimpy canadian $)
- extra revenue goes to the PSF
- guido
- make me happy
and my dog also
Rob Collins about donations to PSF (I made my first donation to PSF!)
Andrew Dalke about handling big collections: - heapq - collections.defaultdict - sorted
Felix Wiemann about rst2s5
Steve Alexander about Launchpad - free - rosetta, the translation fw - bug tracker - tickets - used to manage specifications
Jakob Hallen about nevow's stan
That’s it. I spent the late afternoon and the night discussing Python stuff with guys around. Explained the basics of PyPy to a guy (sorry I already forgot your name!). Fabrizio and I debugged and pdb-traced pypy for a lot of time (I don’t even remember the time we started) because we had a recursion limit bug in PyPy. When we noticed it was midnight and that we we’re stepping one line at the the interpreter of PyPy and our head was smashing we stopped. Gotta show the tracebacks to some PyPy guy tomorrow at the sprint.
I also asked Marc Berhault about the summer internship program at Google and got a satisfying answer

















Pingback: Recent Links Tagged With "heapq" - JabberTags