EuroPython 2015 - Day 3 - Wed 22nd July 2015

Keynote from Holger Krekel - towards a more effective, decentralized web

Holgers amazing keynote on a new way to exchange data deserved it’s own blog post can be found here.

Python Cryptography & Security

@jmortegac was speaking about OWASP and how to secure a python application. You can find his talk on (

Use PBKDF2 for everything with passwords, django has that built in. Find out if everything is ok in your django application via

MongoDB tricks

@apotoc shared

MongoDB best practices and tips

Some MongoDB best practices.

MongoDB useful resources

And further useful resources.

Type Hints for Python 3 - PEP 484 - Guido Van Rossum

Guido is going over all the different new type annotation options and how to define stub files.

Unfortunately, I can’t find a link to the slides. I’ll update this post when I find them.

The reason the syntax is clunky is, it needs to be easy to parse and we need to support all the other syntax commitments from Python 3.

If you’re very academic, you’re probably very upset about this proposal, however, this is a good start, now we can iterate over it until we’re happy about it.

After a little bit of pondering with different implementations they came to the conclusion that, for Python at least, type checking isn’t the job of the python compiler. Instead we’ll be using a static type checker that can be run aside the compile, similar to pylint.

Simply because many organizations are already doing that, and it works.


Why is there two ways, to define annotations.

There are quite a few downsides to stub files, always, however, if you force it into every definition the function declaration will be much longer.

Why square brackets?

Parameterization is different, hence

  • they stand out
  • and they are already part of current Python syntax

Invariant, Covariant etc.

Yes, the default is invariant but it’s all in the PEP.

Float vs. Int - Int is a subtype of float and expectable.

Playing with CPython object internals

Very entertaining talk about everything that one shouldn’t do with CPython. Within the process context, we’re able to mess around with the CPython internals and fix it in funny and entertaining ways.


We saw that very bad things can be made possible if you play with cpython internals.

Asyncio - Look Ma I’ve built a distributed hash table

Asyncio is great for networking related tasks.
He used asyncio to implement a distributed hash table, or simply speaking a key/value store.

@ntoll spoke to us about how Asyncio helped him solve some of the concurrency issues he faced
while implementing a massively scalable distributed hash table.

asyncio/1.jpg asyncio/3.jpg asyncio/6.jpg asyncio/7.jpg asyncio/8.jpg asyncio/10.jpg asyncio/11.jpg asyncio/12.jpg asyncio/15.jpg asyncio/16.jpg asyncio/19.jpg asyncio/20.jpg asyncio/22.jpg asyncio/24.jpg asyncio/25.jpg asyncio/26.jpg asyncio/27.jpg asyncio/28.jpg asyncio/31.jpg asyncio/32.jpg asyncio/33.jpg asyncio/34.jpg asyncio/35.jpg asyncio/36.jpg asyncio/37.jpg asyncio/39.jpg asyncio/40.jpg asyncio/41.jpg asyncio/42.jpg