Your current filters are…
A complex network is a network that has non trivial topological properties, i.e., properties hinting the presence of elaborate relationships among the actors, opposed to simple networks such as regular lattices or random graphs. Examples of complex networks are most social, technological or biological networks, such as the internet, the web, a professional network, the nervous system of an animal or the contact network of any social networking system.
Network analysis has many practical applications, e.g., ranking or grouping items on the basis of their position in the network, and is also the basis of some collective intelligence and data mining techniques. Recently network analysis is also applied to security problems in the form of trust networks.
Along with the basic concepts, working Python code is presented, both using existing network analysis Python tools and numeric packages. The focus is mainly placed on code, which will be shown and discussed together with the theory, with the idea that running code and simulations are easier to understand that formal maths. Since complex network datasets are typically huge, some high-level optimization techniques are also discussed.
Although formulas are kept at the minimum, some maths skills are required along with basic knowledge of the Python programming language.
by Thomas Perl
The goal of this training is to show you how to start developing full Android applications using only Python. Different technologies will be demonstrated, including PySide-based QML GUIs using the Necessitas Qt port and the Py4A/SL4A-based approach, which can be combined with Android’s WebKit and re-use Python web frameworks.
While Android already has a good SDK out of the box, being able to use Python instead of Java is a big advantage for some developers - it allows for quicker turnaround times, and reuse of Python libraries. Python on Android uses a native CPython build, so its performance and compatibility is very good. Combined with PySide (which uses a native Qt build) and Qt’s support for OpenGL ES acceleration, you can create fluent UIs even with Python.
The resulting PySide-based applications run on Android, but also at least on Mac OS X, Windows, Linux and Maemo and MeeGo - basically all platforms on which Qt is available. The SL4A/Py4A-based applications will run on Android only, but will be able to utilize Android-specific APIs. Both approaches can also be combined.
The Python web framework Django can handle extremely high levels of traffic… with appropriate design and support. We’ll go over techniques to keep your Django site from being crushed under high load.
Topics include:
We’ll also discuss caching.
PyGame continues to be Python’s most popular 2D game library, even though there is growing competition from more modern OpenGL-based libraries. It is still an excellent way to learn how our favorite games work internally and to write similar games ourselves.
During this tutorial I want to introduce the basics of using PyGame to create interactive, animated graphical applications (such as games), and then help the participants make their own start at a simple adventure game, which they can later develop further into projects of their own. I want to concentrate on commonly used techniques and patterns in game development, which are useful no matter what library is used in the implementation. In particular I will be discussing animations, tile-based maps, collision detection, event systems, internal representation of game state and different approaches to code organisation and internal structure of games.
I have previously created a (much simpler) tutorial for creating a turn-based tile-based PyGame game and a couple of games, such as Z-Day and Jelly . I will be using the materials and experiences from those projects in the tutorial.
Please bring your laptop with Python 2.7 and PyGame installed.
OpenStack is a large and relatively new platform for building IaaS public and private clouds, which has attracted widespread backing from many companies. Covered in the talk is:
Nel corso dell’ultimo anno abbiamo lavorato all’implementazione Python di una RESTful Web API completa. Abbiamo imparato un bel po’ di cose sui best pattern REST e, naturalmente, abbiamo messo alla prova le ben note capacità web di Python, rilasciando nel frattempo un paio di progetti Open Source. Nel corso del mio intervento condividerò quel che abbiamo imparato. Prenderemo in considerazione il problematico design di una REST API ‘pura’. Vedremo che cosa offre Python in questo campo e scenderemo infine nel dettaglio, dando una occhiata al codice che abbiamo scritto. Alcune tecnologie/stack che tratteremo sono (in nessun ordine particolare): Flask, PyMongo, MongoDB, REST, JSON, XML, Heroku. Lo sapevi? Che ti piaccia o no, c’è una REST API nel tuo futuro.
Tornado is a non-blocking light-weight web server and framework. There’s been many introductory talks about it, and it’s time to look deeper into it: not just what Tornado does, but how it does it and what can we learn from it when designing our own concurrent systems.
We’ll cover each topic in two parts: first we’ll see how to use a certain feature in our applications; then, we’ll dig into Tornado’s source code to see how it really works. How much time we’ll spend in the “how to use” will depend on the audience’s knowledge of Tornado.
Getting Started: quickly get a simple Tornado application up and running. We’ll keep digging into, changing and poking this Application for most of the talk.
So you have selected the best possible programming language; you learned about object oriented design, functional paradigmas, test driven development and the Structure and interpretation of computer programs.
What else can you do? Harald did research and experimented outside computer sciences. What methods and substances are available to tune your brain for programming? This talk will describe personal experiences with various motivational, self discipline, learning and information management techniques; substances and exercises to tune your brains operating system. There will be expeditions into results from brain research. A critical judgement, pointing out snake oil and stuff that worked.
Python has great support for interfacing with C/C++ code, and this has been used to great advantage by exposing many C/C++ libraries as Python modules. In this talk, I will reverse the equation. I will show you how you can - and why you might want to - build C++ APIs on top of Python modules and use them directly from your C++ programs.
The topics will include:
I will also discuss the reasons why C++ APIs on Python code represent a very useful and often powerful technique. The reasons range from simple pragmatism (you want to use an existing Python module in an existing C++ program) to productivity (writing Python code plus a C++ wrapper can be easier and faster than writing pure C++.)
Juju is a new opensource configuration management and tool for deploying services into a cloud and data center environments.
Juju provides a higher level semantic to its users of service level management rather than machine management. By rethinking this focus, Juju is able to provide real reuse of service definitions in much the same way that package management allows deployment and reuse of software bits in many different context. Juju’s goal is to be the apt of the clouds. By providing these higher level semantics to end users, juju aims to be a preferred solution for deploying services to the cloud.
by Davide Corio
OpenERP 6.1 è uno dei più importanti free e opensource software scritti in Python. Immergiamoci nel framework a scopriamo come progettare la nostra applicazione.
Durante la presentazione exploreremo gli strumenti integrati a disposizione degli sviluppatori per la creazione di nuove funzionalità, la progettazione di stampe o per dialogare con dispositivi mobile e applicazioni di terze parti.
Spotify’s current catalog contains 15 million songs. Original storage of audio and metadata is over 500 terabytes and we’re transcoding 500 000 new audio streams a day. At it’s best the system can make an album playable just few minutes after it’s delivery.
This talk is about building the music pipeline, all the way from the labels, who deliver music and metadata XML to our system, to the clients. Problems here are the concurrency, massive amount of data, enriching the metadata to provide better quality and to actually deliver 100 gigabytes of indexes daily.
ABOUT THE TALK
What is Flask? Is it any better than Django? Can I use Flask on Google AppEngine? Fortunately, during the course of this talk I will not have to answer any of these questions. This talk is a showcase of our experience with using Flask to build flexible and scalable web service and it focuses strongly on Flask and Flask extensions’ internals.
WHO SHOULD COME TO THIS TALK
Basically anybody who’s looking to invest into learning Flask or already started using Flask. Even though this talk focuses strongly on Flask-related topics, it also raises important points relevant to any web development framework or library.
ABSTRACT
Introduction
Flask
Exploring Flask-Celery
Flask-SQLAlchemy
Performance analysis
Summary
The talk targets developers who wish to publish applications to an international audience and will discuss three topics that developers have to deal with: handling Unicode, localizing the software with gettext and handling time zones.
First, the talk will address what Unicode is and how to write applications that deal with Unicode correctly. Then, the talk will discuss software localization using gettext and will conclude with a discussion of time zone handling in Python.
No prerequisites are necessary.
by Nicola Larosa
Prenditi cura della cosa più importante, il benessere psicofisico, e fallo in modo efficiente.
Non bisogna patire la fame (magari solo un pochino), fare tanta ginnastica (magari solo un pochino) e impiegare tanto tempo e soldi (magari solo un pochino… sembra di intravedere uno schema di fondo :-) ). Occorre soltanto prendersi cura del proprio corpo usando ciò che ci permette di programmare i computer: la nostra mente.
No, il corpo umano non è una “macchina”, come spesso si dice: è molto più complesso. Ciononostante, conoscere alcuni fatti, qualche principio guida e alcuni strumenti tecnologici (dopo tutto siamo geek, no? :-) ) può decisamente migliorare la nostra vita.
A short overview how PostgreSQL can be used for tasks that are currently often delegated to heterogeneous bunch of data storage solutions referred to by common name NoSQL. Covered topics from traditional NoSQL area are:
And from SQL part
The Python Standard Library contains all kinds of useful stuff - healthy, wholesome stuff like a wide array of support libraries for file formats, a web server, easy access to OS services and functional programming tools.
Among those benevolent libraries hide other, darker libraries. They offer tremendous power to anyone who learns how to wield them, but they also carry the threat of destroying your software’s readability, comprehension and very structure.
This session will be a hands-on-keyboard dive into the dark magic parts of the standard library, and participants will learn valid (for a given value of valid) use-cases for practices that will give any software engineering professor nightmares. It focuses on learning by doing, and (evil?) koans are used to teach some of the most ‘clever’ tricks of standard Python.
by Roberto De Ioris
Siamo tutti capaci di far girare una applicazione WSGI su un server (indipendentemente da quale sia), ma che succede quando ne vogliamo eseguire centinaia scritte da programmatori che non conosciamo (o che conosciamo fin troppo bene e quindi non vorremmo avere sui nostri server) ? uWSGI e’ un application server estremamente avanzato, usato principalmente per l’esecuzione di applicazioni WSGI. Nginx e’ un webserver estremamente performante e leggero. Il task mostrera’ come usare entrambi per costruire una infrastruttura per il deployment di applicazioni WSGI per voi, i vostri collaboratori e i vostri clienti, tenendo i costi hardware (e umani) al minimo sindacale
by Jannis Leidel and Philipp Wassibauer
Based on our (Philipp Wassibauer and Jannis Leidel) experiences building Gidsy.com this talk will give you valuable insight as to how your infrastructure will evolve and how to set up the basic components (Loadbalancer, Webservers, DB, Caching, Celery, CDN, …) of your site.
Outline:
by Péter Szabó
The earlier a bug is discovered, the cheaper it is to fix it. Method restrictions (such as abstract, final and @Override) help the programmer in discovering incompatibilities between a class and its subclass early (i.e. at startup time for Python and at compile time for compiled languages). Python doesn’t provide method restrictions out of the box. To implement them, we take a deep dive to the realms of Python metaprogramming (decorators, metaclasses, method wrappers, traceback inspection and builtins). Lots of short and code examples will be provided to show the building blocks and how we combine them.
In one intensive four-hour tutorial, we will cover everything that a Python developer needs to know to set up, maintain, and get best performance out of a PostgreSQL database:
The focus is the skills needed by developers in a devops environment who need to step into the database administrator role. No previous database administration experience is assumed.
by Antonio Cuni
Python is a powerful language. Beginners appreciate its surface of simplicity and ease to use, where (almost) everything “just works” (TM) as expected. However, under the hood, there is a whole world of rules and layers which can be (ab)used by experienced programmers to tweak the language in unexpected ways.
Often, these techniques are labeled as “hacks” or “black magic”, to indicate that they should not used in production or that you should not look at it unless you are “initiated” to some not better specified sorcery.
However, if used with care and in the right places, these techniques can lead to better, faster and/or more readable code, or can be extremely useful during debugging, and thus deserve the definition of “white magic” which programmers can use to improve their code. Moreover, looking at how they are implemented is a good way to learn about some of the deep corners of the language.
This talk presents some of these advanced techniques which I have seen in use in real code, e.g. in PyPy or pdb++. Including, but not limited to: creating new functions by reusing existing code objects, instantiating multiple copies of the same module, playing with metaclasses in various ways, changing the __class__ of an object on the fly to get specialized behavior, automatically entering the debugger when a certain event occur, etc.
by Arnaud Fontaine
Recent cloud architecture are heavily based on key-value storage databases rather than distributed filesystems. While the data itself is usually stored in scalable database, the source code is mainly kept on the filesystem. However, having the source code on filesystem raises a lot of issues for cloud applications and more generally for transactional web applications supposed to be deployed on a large number of servers:
Everytime the source code is modified, it has to be synchronized on all the nodes somehow and the application server must be restarted, therefore implying downtime or inconsistency.
Usually, the developer cannot directly modify the source code as this task is left to the administrator.
This talk will show how source code, including modules and their classes, can be migrated away from filesystem, thanks to import hooks, meta classes, reflection and metaprogramming provided by Python, and the different challenges involved:
Technical: modules and classes must be loaded and reset while carefully considering concurrency and database issues and ensuring that the system will stay usable whatever happens and without breaking existing class instances.
Also, developers must be efficient with the new system, including convenient source code edition and meaningful backtraces.
Performance: having dynamic modules and classes involved a performance tradeoff which should be kept to the minimum.
Security: as the source code is dynamically loaded from the database, extra care must be taken care of compared to filesystem source code where the source code is never supposed to change once the applications has been started.
In order to give practical examples of how this migration can be achieved, two examples will be studied and explain thoroughly, based on the experience I have acquired through the implementation for ERP5 I have worked on during the past year:
The Python logging module is a useful tool for getting all kinds of information out of your program; everything from error notifications through to debug information. The standard facilities are useful out of the box, but, sometimes, you need a bit more. Not surprisingly, it turns out that the logging module is designed to be extended. This presentation shows some of the things you can do; things like gathering statistics on message type, directing emails to different recipients depending on severity, dynamic updating of attributes, and logging to a database.
The examples are based on the notification facilities in Lokai.
The talk covers:
I’m sure there are many different ways of doing this. Some of the code might be obvious in retrospect, and some might be surprising. Whatever the case, if you havn’t thought of doing this before you might be encouraged to give it a go. And if you have done it before you can always come and heckle.
When writing code in C, the mapping between written code and compiled assembler is generally pretty well understood. Compilers employ tricks, but barring few extreme examples they’re, typically within 20% performance difference from “naive” compilation. Tools used to asses performance are usually per-function profilers, like valgrind, oprofile or gnuprof. They all can display time spent per function as well as cumultative times and call chains. This works very well for small-to-medium programs, however large, already profiled programs tend to have flat performance profile with unclear message from profilers.
To make matters even more complicated, in JITted VMs, like PyPy, mapping between assembler and high level language, like python, is very unclear and not well known. Writing “good” vs “bad” python (from the JIT perspective), can make a 20x performance difference.
This talk will cover current profilers available for Python and PyPy, as well as other tools that can be used to asses performance. I’ll also present in which cases using current tools does not give necessary information and what kind of tools can address this problem in the future.
Apps for smartphones and tablet PCs are getting the most relevant kind of software. The numbers of apps in app markets for Android, iOS and Windows Phone simply explodes. Unfortunately, almost none of them are developed with Python which is a bit of shame.
This talk covers the various mobile platforms and explains current solutions for programming apps with Python. It shows todays problems as well as possibilities, so that every listener can decide whether Python is already ready for his mobile app project.
Nel corso dell’ultimo anno abbiamo lavorato all’implementazione Python di una RESTful Web API completa. Abbiamo imparato un bel po’ di cose sui best pattern REST e, naturalmente, abbiamo messo alla prova le ben note capacità web di Python, rilasciando nel frattempo un paio di progetti Open Source. Nel corso del mio intervento condividerò quel che abbiamo imparato. Prenderemo in considerazione il problematico design di una REST API ‘pura’. Vedremo che cosa offre Python in questo campo e scenderemo infine nel dettaglio, dando una occhiata al codice che abbiamo scritto. Alcune tecnologie/stack che tratteremo sono (in nessun ordine particolare): Flask, PyMongo, MongoDB, REST, JSON, XML, Heroku. Lo sapevi? Che ti piaccia o no, c’è una REST API nel tuo futuro.
by Christian Theune
The requirements and expectations towards deployment and operations are advancing at an incredible pace. Especially the DevOps community encourages and demonstrates how system administrators can leverage methods from other areas of expertise to achieve classical goals: fewer outages, more flexibility, lower cost, higher security standards, improved reproducability and overall increased quality.
The hosting of complex, traffic-intensive web applications nowadays requires a solid and flexible infrastructure: you need to take care of all the homework first before going into the nitty gritty details of your specific application.
My talk shall demonstrate the aspects we meet on the infrastructure and service level when deploying and operating complex services. I’ll show-case how we approach the problems we face to prepare for an ever-improving future.
As many people and companies are experimenting with different approaches today, I’d love to spawn a separate discussion, maybe in an open space, to talk about why you do something different from us and what your experiences are.
The topics will specifically include: infrastructure versus service, data center operations, make-or-buy, automation, virtualisation, monitoring, help desk, SLAs, deployment checklist, staging, secrets, HTTP/S termination, load balancing, reporting
As you can see, the talk’s topics are mainly focused on methods and lines of thought. However, if you’re interest in tools - I will also mention the following on a varying level of detail: puppet, haproxy, nginx, apache, varnish, supervisor, cron, Linux, DELL, ProCurve, KVM, Nagios, RT, fabric, zc.buildout, batou
The Tor Project develops and maintains Tor, a free and open-source software that allows users to browse the web anonymously and securely. In addition, the Tor Project also develops and maintains a number of Python applications related to Tor, such as a command-line monitor, censorship scanner, network simulator, controller library, and bridge distributor. In this talk, Runa A. Sandvik will present the Tor Project, and talk about Tor and how it works. She will also introduce some of the Python projects currently under development, and explain how you can get involved and contribute with code, testing, and documentation.