EuroPython 2015 - Day Two - Tuesday 21st July 2015

Keynote by Guido

Guido receiving a thank you gift.

He’s thanking Ola + Ola for their talk and noted that it’s impressive that they managed to
create a really strong brand in about one year.

Then he moved on to discuss why one should move to switch to Python 3,
especially since:

  • porting takes time
  • Python 2.7.x is a fine language that will be supported for the next 5 years

The simple answer is Python 3 is just a much better language.

Python 2.7.x will simply be a dead end, there will not be a 2.8 version.

The unicode support alone should make you move to Python 3.

His favorite features in Python 3 is asyncio and everything connected to that,
in Python 3.4 the async_with and all the other block statements are simply
a much better more natural way of writing coroutines.

Why is there such a huge list of open bugs?
Simple fact of live, any large project has many open bugs, but they should mostly be harmless edge cases.

Interesting developments for the future is cross-compiling of Python to Android and iOS.

During the QnA Guido noted that he really likes Swift as language, as well as the 2015 version of C++.

Salting things up in the sysadmin’s world

From @godlike64.

Salt is a configuration management system:

ensure that the state of your system is consistent through time

  • Quantity (we’re dealing with more and more machines at the same time)
  • Increasing complexity of systems
  • System-Admins are generally lazy

He prefers Salt because:

  • written in Python
  • yaml configuration files
  • Jinja Templating

Master - and - Minions

  • Minions are defined by:
    • ID (the hostname)
    • they are part of a nodegroup
    • they provide grains of information

State file - defines the state

  • reside in /etc/salt/master
  • yaml
  • top.sls
    • which host matches the environment
    • entry point
  • supports jinja templating that can be used to replace data from salt minion or master

highstate - state that all minions will adhere too

  • state that is supposed to applied to all systems controlled by the salt master

matching and nodegroups

  • ID (hostname)
  • nodegroup
    • defined by master
    • matches on all grain data

grains and pillars

  • grains
    • informational bits about the current minion system
    • generated on minion start
    • you can write your own grain generating functions in Python
  • pillars
    • data defined by admin in the master configuration in /etc/salt/master
  • general rules
    • grains are data from minions
    • pillar is data sent to the minions


Communication between master and minion is encrypted.
Pillar data is not stored on the minion.

Lessons learned about testing and TDD

From Marco Buttu.

Radio Telescope

They learned the hard way that tests can keep you sane.
Now they’re happily embracing TDD and don’t have to
deal with sudden outages anymore.

Image recognition using OpenCV

OpenCV detecting in B/W

We saw how OpenCV can be used to recognize a picture based on a library of paintings from Google Glass input while a tourist wearing a Google Glass is walking through a museum.

Python and PyPY performance (not) for dummies

To measure Python performance via a profile you’ve got the following opitions:

  • statistical
    • plop (by Dropbox)
    • vmprof
  • event based
    • cProfile
    • runSnakeRun

The ones supported by PyPy are vmprof and cProfile.

VMProf is inspired by gperftools, it was needed because the C stack output isn’t very useful.

The reason why PyPy is fast than CPython in some cases is that they analyze the python code and
compile the high points into Assembler.

This specialized version is covered by special guardians that check if the previous assumptions are constant, if not it recompiles another version.