#PyCon6

Florence, April 2015

This is a bunch of notes I've scribbled while attending the conference.

I've then spent a bit of time to reorganize them according to a simple classification:

  • Awesome
  • Cool
  • Meh*

* hope authors don't take it too personally

Awesome

Async web dev with py3, A. Caceres

Day 1 h11.15am

Skoobe is Spotify for books and uses Tornado in production

Use "yield from" in python 3.3 to create callbacks and use them in async Web server

result = yield from my_slowfunc()

Graph databases intro, f. fernandez

Day 2 h5.45pm

Starts quoting euler and 7 the bridges of Koenigsberg

complexity of ER querying for "friends of friends" at depth m is O(m log n) while on graph db it’s O(m)

Neo4j provides ACID REST interface and declarative language called Cypher

"reduce" is provided as a cypher function so it can e.g. evaluate shortest path between nodes

recommendation system in 3 lines: nodes: [users, films, directors]. arcs: "ratings". add node "genre" and arc "belonging" for finer classification. RUN: query all films seen by connected users that have similar ratings.

v-eras Mars mission simulation

Day 3 h11.45am

The Italian Mars society, quite cool and unassuming

models and simulation of a colonization infrastructure on Mars using threadmill and oculus rift, including labs, rovers and hangouts through webcam across modules

Everything released open source: erasproject.org

Cool

modern python patterns and idioms, alex martelli

Day 1 h10am

googler (bad start with an italian only talk), kind of old school dev

mentions Gilliam, framework for micro rest services (maybe useful for responsive.TV)

pulls out some x86 asm and cryptic python, kind of cool, he's way better prepared than he looks

building a SNA dashboard, luca mearelli

Day 1 h5pm

Edgesense is a social network analysis tool

shows degree of connectivity and network analysis, in/out degrees and in-betweenness (super interesting for krawkon)

uses d3.js to display some graph, sigma.js to display big network topologies

supports GEXF (Graph Exchange XML Format), a language for describing complex networks

data science models on a budget, peader coyle

Day 1 h6pm

chit chat about how to become a valuable data scientist

"data product": bring math models to real world

yhatHQ: interesting to provide a predictive model (or any other statistical / machine learning algorithm) as a service

basically you do the maths, then export the numbers of the predictive model through their api

alternatives: domino, sense.io, ipython widgets

staying on top of server security, justin mayer

Day 2 h12.15pm

install unattended-upgrades and enable them!

try Click a Python package for creating command line interfaces in a composable way, developed by same Armin Ronacher (Flask)

On docker running unattended-upgrades is not an option, we need to rely on upstream linked images that provide upgrades and restart the container when ready to deploy

managing docker with python, cuzzoli + fanelli

Day 2 h3pm

very high level overview of docker features

ops management: try saltsack and ansible

docker py gives hints to programatically manage docker, live demo

interacts with containers using std in/err/out streams to read/write commands and infos

they actually don’t use it in production, but ok for dev for the time being

python in the videogame industry, roberto de ioris

Day 3 h10am

videogame development IS rocket science, john carmack

favs unity 5, based on mono. works at AIV

alternatives: cryengine (c++, lua), unreal engine (c++, boo, js-like)

open source: blender game engine (c++, py), panda3d (c++, py), ogre, cocos2d

maya, blender, makehuman are all python scriptable

py libs available: pygame, pyglet, panda3d, blender but unity/udk are light years ahead

everyone complains of GIL! but multithread is progressively disappearing in gaming

Meh

py3 for data science, valerio maggio

Day 1 h12

trying quite hard to evangelize about how 2to3 can be easily done and the new code will be 10x faster using matrix multiplication (but without showing any benchmark) and extensive use of generators

gradual typing in python - a. gomez

Day 2 h11.15am

quite interestingly, his company is behind taiga.io project management suite

straight to the point, differences between static and dynamic typing

gradual typing approach is to add annotations so that a piece of sw can be partially type checked

follows a (painful) list of features from the py3 “typing” library

test driven deployment with ipython and nosetests, roberto polli

Day 2 h3.45pm

nosestest is easier because each and every function is a test and don’t need to write oop

building successful api overnight, orlando kalossakas

Day 2 h5.15pm

some useful links to create api docs: raml, apiblueprint, swagger

you've reached the end, you deserve a little reward(*)

(*) Roberto Rosario was also at #pycon6 but I couldn't manage to see his talk, he maintains a super useful list of Django apps that is worth checking.

Glossary

ACID

  • atomicity: If any part of a transaction fails, the database state is left unchanged.
  • consistency: Any transaction will leave the database in a consistent state.
  • isolation: During a transaction, modified data cannot be accessed by other operations.
  • durability: The DBMS can always recover the results of a committed transaction.

GIL

The global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once