Skip to content

Instantly share code, notes, and snippets.

@tomviner
Last active August 29, 2015 14:06
Show Gist options
  • Save tomviner/d0bd30314302c839c6b3 to your computer and use it in GitHub Desktop.
Save tomviner/d0bd30314302c839c6b3 to your computer and use it in GitHub Desktop.
Linkify PyConUK Schedule Page
  1. acl TrustedEditorGroup:read,write,revert All:read Known:read

Table of Contents

Schedule

Outline

 * '''Friday 19th September from 9am''' - Normal conference day with talks and keynotes. Teachers' track. Social event in the evening.
 * '''Saturday 20th September 9am''' - Normal conference day with talks, keynotes and lightning talks. Kids' day. Conference meal in the evening.
 * '''Sunday 21st September 9am''' - Normal conference day with talks, keynotes, and lightning talks.
 * '''Monday 22nd September 9am''' - Code sprints.

THIS IS A PROVISIONAL SCHEDULE

Click for a minimalist version, e.g. for printing. However, please be aware that the schedule may change.

Friday 19th

|| Time || The HP Room || The MADE Room || The Test People Room || The Mailjet Room || Simulation Centre || || || (CC1.3) || (CC2.1) || (CC1.4) || ( tba CC1.8? ) || || 9:30 ||<-5> Welcome || || 10:00 ||<-4> Keynote: Ecosystem threats to Python (Van Lindberg) ||<|12> Education track ( schedule here) Including learning Python, games workshops, Raspberry Pi and walking/talking robots! (Open to all attendees!) || || 10:50 ||<-3> Break ||<-1|4> Workshop: Python Rules the Cloud (Interoute) || || 11:10 || HTTP/2: Because The Web Was Too Easy (Cory Benfield) || Automated Report Generation with IPython Notebook (Adam Hodgen) || Post Mortem Debugging and Web Development (Alessandro Molina) || || 11:40 || Python for Zombies: 15.000 enrolled in the first Brazilian MOOC to teach programming (Fernando Masanori Ashikaga) || Exploring unit-testing with unittest, nose and pytest (Tom Viner) || Ganga: an interface to the LHC computing grid (Matt Williams) || || 12:10 || Collaborative, streaming, 3D, and interactive matplotlib, ggplot2, and MATLAB plots in an IPython Notebook with Plotly (Carole Griffiths & Chris Parmer) || Selenium Simple Test - An experience report (Peter Russell) || Advanced py.test Fixtures (Floris Bruynooghe) || || 12:40 ||<-4> Lunch || || 14:10 ||<-3> Keynote: Lessons from Strangers (Rachel Sanders) ||<-1|4> Workshop: Python and Spatial Data (Valentin Hancu) || || 15:00 || When performance matters... (Marc-Andre Lemburg) || Discovering developer habits with !OpenStack code review data (Dougal Matthews) || Data Traceability Through Data Annotation (Fredrik Haard) || || 15:30 || Try A Little Randomness (Larry Hastings) || A Pinch of Salt (Scott Walton) || Where am I? Geospatial processing with Python (Ian Taylor) || || 16:00 ||<-3> Break || || 16:20 || ! PyPy and its ecosystem (Ronan Lamy) || Self-Contained Deployment (Rach Belaid) || Let your data go/flow/grow with py2neo (Colin Moore-Hill) ||<-1|5> Workshop: Integrating Python and C++ with Boost.Python (Austin Bingham) || || 16:50 || Simulating quantum systems in Python (Katie Barr) || Micro Python - my experiences running a successful Kickstarter campaign (Damien George) || Dockerize your Python apps! (James Pacileo) || || 17:20 ||<-3> Break ||<|3> The Great British ROBOT Code Dojo ( Open to all attendees!)|| || 17:40 || Farewell and Welcome Home: Python in Two Genders (Naomi Ceder) || Use of !OpenStack CI for your own projects (Yolanda Robla Mota) || Python Web Installers (Marc-Andre Lemburg) || || 18:10 || Tests without boilerplate (Jonathan Fine) || The IPython notebook is for everyone (Gautier Hayoun) || Exploring unit-testing with unittest, nose and pytest (Tom Viner) || || 18:40 ||<-4> Break || || 19:30 ||<-4> Buffet with Python-themed beer provided by Fuzzy Duck, TechnoCentre restaurant. ||

Saturday 20th

|| Time || The HP Room || The MADE Room || The Test People Room || Simulation Centre || || 9:00 || Stormy Webber (Wes Mason) || Weld: Managing git (Tibs) || DEPOT, story of a file.write() gone wrong (Alessandro Molina) || Kids registration || || 9:30 || Dealing with big black boxes (Fergus Doyle) || The Twelve-Factor App (Kristian Glass) || Enterprise 101 (Martin P. Hellwig) ||<|10> Kids track (schedule here) Including learning Python, Minecraft, games workshops, Raspberry Pi, quadcopters, kids, harassed parents and walking/talking robots! (Open to all attendees!) :-)|| || 10:00 ||<-3> Break || || 10:20 || The High Performance Python Landscape (Ian Ozsvald) ||<-1|5> Workshop: Python in game development (Denis Kovalev) ||<-1|5> Workshop: Practical introduction to machine learning via Kaggle problems (Ezzeri Esa) || || 10:50 || Functional Programming and Python (Pete Graham) || || 11:20 || Break || || 11:40 || Building great APIs in Python (Paul Hallett) || || 12:10 || How does a spreadsheet work? A tour of the codebase of Dirigible, the Pythonic spreadsheet (Harry Percival) || || 12:40 ||<-3> Lunch (book signing and giveaway at 13:30 in HP room) || || 14:00 ||<-3> PyCon UK Vice-Chair Plenary bit || || 14:10 ||<-3> Keynote: A time traveler's guide to Python (Jessica !McKellar) || || 15:00 || Using python to improve government (Michael Brunton-Spall) || Dependency Injection in Nameko (Matt Bennett) || Python Refactoring with Rope and Traad (Austin Bingham) ||<|2> Kids Track Show and tell (all welcome || || 15:30 || Micro Python - shrinking Python down to run on a microcontroller (Damien George) || Is that jumper made of cats? Matching fashion products with image similarity. (Eddie Bell) || you're doing it wrong: the lack of reproducibility in statistical science, and how to fix it (Mike !McKerns) || || 16:00 ||<-3> Break || || 16:20 || The Minecraft Challenge (Katie Bell) || Exploring unit-testing with unittest, nose and pytest (Tom Viner) || Web based application automation at the protocol level (Katie Barr) || || || 16:50 || Teaching children to program Python with the Pyland game (Alex Bradbury) || A Deep Dive into Requests (Cory Benfield) || Dr. Jython or: How I Learned to Stop Worrying and Love the JVM (Naomi Ceder) || || || 17:10 ||<-4> Break || || 17:30 ||<-4> The Lightning Talk Show || || 18:45 ||<-2> Break || PSF Members only preloading/pregaming reception || || || 19:30 ||<-4> PyCon UK Dinner, TechnoCentre restaurant ||

Sunday 21st

|| Time || The HP Room || The MADE Room || CC1.8 || Bistro || The Test People Room || || 9:00 || The failure of python object serialization: why HPC in python is broken, and how to fix it (Mike !McKerns) || It's Not All About Success & Failure (Julian Berman) || Python Core Development on Windows: Pleasures & Pitfalls (Tim Golden) ||<|5> Recruitment Fair ||<-1|9> TDD Study Group (Harry Percival) || || 9:30 || Repeatable automated deployments with Juju (Michael Foord & Simon Davy) || The knights who say Neo - storing classes in the graph (David Szotten) || Rapid prototyping to industrial strength: Python in Government (Michal Olszewski, Jim Gumbley & Max Edwards) || || 10:00 ||<-3> Break || || 10:20 || Studying astronomy at the University of Warwick using Python (Simon Walker) ||<-1|6> Workshop: Nameko Tutorial (Matt Bennett) || || || 10:50 ||<-1|2> Haircuts for your code (Carl Crowder) || || || 11:00 ||<|4> Workshop: Automation Made Simple with SST (Jordan Brennan) || ! EuroPython Reboot (John Pinner, Room CC1.2) || || 11:20 || Break || Break || || 11:40 || !PyPi (not that one) - Python on the !RaspberryPi (Ben Nuttall) || First steps with django CMS (Iacopo Spalletti) || || 12:10 || Trouble at t'!LeedsDataMill: Oompah.py ~ Big Data meets Big Brass (Nicholas Tollervey & Simon Davy) || || 12:40 ||<-5> Lunch || || 14:00 ||<-5> PyCon UK Vice-Chair Plenary bit || || 14:10 ||<-5> Keynote: Miss Adventures in Raspberry Pi (Carrie Anne Philbin) || || 15:00 || AGM ||<-4> Break || || 15:10 ||<-4> The PyConUK Panel - Question time with TheZeth and our panel of experts, including: Dawn Hewitson (Faculty of Education at Edge Hill University), Michael Foord (Python Core Developer), Van Lindberg (Python Software Foundation, Rachel Sanders (!LinkedIn/PyLadies) and others || Teaching Python to non-programmers special interest group || || 16:00 ||<-5> The Lightning Talk Show || || 17:30 ||<-5> The non-closing closing || || 18:00 ||<-5> End of Day || || 19:30 ||<-5> The Mellow Night ||

Monday 22nd

|| Time || Sprint 1 || Sprint 2 || Sprint 3 || Sprint 4 || || 09:30 ||<-4> Discussion and decisions about what to do, split into groups || || 10:00 || TBC || TBC || TBC || TBC || || 11:00 ||<-4> Break || || 11:15 || TBC || TBC || TBC || TBC || || 12:30 ||<-4> Lunch || || 13:30 || TBC || TBC || TBC || TBC || || 15:30 ||<-4> Break || || 15:45 || TBC || TBC || TBC || TBC || || 16:30 ||<-4> Share results together || || 17:00 ||<-2> End of Conference ||<-2> Moving all the boxes away for next year ||

ipdb==0.8
ipython==2.2.0
rerun==1.0.22
pyquery==1.2.9
lxml==3.4.0
pytest==2.6.2
requests==2.4.1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="robots" content="index,nofollow">
<title>Schedule - pyconuk2014</title>
<script type="text/javascript" src="/moin_static198/common/js/common.js"></script>
<script type="text/javascript">
<!--
var search_hint = "Search";
//-->
</script>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/moin_static198/moniker/css/common.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="/moin_static198/moniker/css/screen.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="/moin_static198/moniker/css/print.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="/moin_static198/moniker/css/projection.css">
<!-- css only for MS IE6/IE7 browsers -->
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/moin_static198/moniker/css/msie.css">
<![endif]-->
<link rel="alternate" title="pyconuk2014: Schedule" href="/action/rss_rc/Schedule?diffs=1&amp;show_att=1&amp;action=rss_rc&amp;unique=0&amp;page=Schedule&amp;ddiffs=1" type="application/rss+xml">
<script type="text/javascript" src="/moin_static198/moniker/js/actionmenuoptions.js"></script>
<link rel="Start" href="/PyCon_UK_2014">
<link rel="Alternate" title="Wiki Markup" href="/action/raw/Schedule?action=raw">
<link rel="Alternate" media="print" title="Print View" href="/action/print/Schedule?action=print">
<link rel="Search" href="/FindPage">
<link rel="Index" href="/TitleIndex">
<link rel="Glossary" href="/WordIndex">
<link rel="Help" href="/HelpOnFormatting">
</head>
<body lang="en" dir="ltr">
<!-- Page Header 1 -->
<div id="username">welcome: <a href="/action/login/Schedule?action=login" id="login" rel="nofollow">please sign in</a></div>
<div id="header"><div id="logo"><a href="/PyCon_UK_2014"><img src="/wiki/pyconuk/img/pycon2012logo.png" alt="PyCon UK" /></a></div>
<div id="banner" align="center"><strong>Proud to Sponsor PyCon UK</strong><br />
<a href="/SponsorShip"><img alt="Sponsor of PyCon UK 2014" id="banner" src="/SponsorShip?action=AttachFile&amp;do=get&amp;target=sponsor_Interoute_Logo.png" title="Sponsor of PyCon UK 2014" /></a>
</div>
<div id="sidebar">
<div class="sidepanel"><h1>Quick Links</h1>
<ul id="navibar">
<li class="wikilink current"><a href="/Schedule">Schedule</a></li><li class="wikilink"><a href="/Workshops">Workshops</a></li><li class="wikilink"><a href="/Talks">Talks</a></li><li class="wikilink"><a href="/Themes">Themes</a></li><li class="wikilink"><a href="/Sprints">Sprints</a></li><li class="wikilink"><a class="nonexistent" href="/Posters">Posters</a></li><li class="wikilink"><a href="/Sponsors">Sponsors</a></li><li class="wikilink"><a href="/Social">Social</a></li><li class="wikilink"><a href="/Helping">Helping</a></li><li class="wikilink"><a href="/Location">Location</a></li><li class="wikilink"><a href="/Accommodation">Accommodation</a></li><li class="wikilink"><a href="/FAQ">FAQ</a></li><li class="wikilink"><a href="/CodeOfConduct">Code Of Conduct</a></li><li class="wikilink"><a class="nonexistent" href="/Publicity">Publicity</a></li><li class="wikilink"><a href="/RecentChanges">RecentChanges</a></li><li class="wikilink"><a href="/PyCon_UK_2014">Wiki Home</a></li>
</ul>
</div>
<div class="sidepanel"><h1>Search Wiki</h1>
<form id="searchform" method="get" action="/Schedule">
<div>
<input type="hidden" name="action" value="fullsearch">
<input type="hidden" name="context" value="180">
<input id="searchinput" type="text" name="value" value=""
onfocus="searchFocus(this)" onblur="searchBlur(this)"
onkeyup="searchChange(this)" onchange="searchChange(this)" alt="this">
<div id="searchbuttons">
<input id="titlesearch" name="titlesearch" type="submit"
value="Titles" alt="Search Titles">
<input id="fullsearch" name="fullsearch" type="submit"
value="Text" alt="Search Full Text">
</div>
</div>
</form>
<script type="text/javascript">
// Initialize search form
// var f = document.getElementById('searchform');
// f.getElementsByTagName('label')[0].style.display = 'none';
var e = document.getElementById('searchinput');
e.value = "";
searchChange(e);
searchBlur(e);
</script>
</div>
<div class="sidepanel"><h1>Page Tools</h1><ul class="editbar"><li><span class="disabled">Page Locked</span></li><li class="toggleCommentsButton" style="display:none;"><a href="#" class="nbcomment" onClick="toggleComments();return false;">Comments</a></li><li><a href="/action/info/Schedule?action=info" rel="nofollow">page history</a></li><li><a href="/action/AttachFile/Schedule?action=AttachFile" rel="nofollow">upload &amp; manage files</a></li><li>
<div class="togglelink" id="togglelink" onclick="toggleMenu('menu1')">[ more options ]</div>
<div id="menu1">
<ul>
<li><a href="/Schedule?action=raw">Raw Text</a></li>
<li><a href="/Schedule?action=print">Print View</a></li>
<li><a href="/Schedule?action=RenderAsDocbook">Render as Docbook</a></li>
<li><a href="/Schedule?action=refresh">Delete Cache</a></li>
<li><a href="/Schedule?action=SpellCheck">Check Spelling</a></li>
<li><a href="/Schedule?action=LikePages">Like Pages</a></li>
<li><a href="/Schedule?action=LocalSiteMap">Local Site Map</a></li>
<li class="disabled">Rename Page</li>
<li class="disabled">Delete Page</li>
<li class="disabled">Subscribe User</li>
<li class="disabled">Remove Spam</li>
<li class="disabled">revert to this revision</li>
<li class="disabled">Package Pages</li>
<li><a href="/Schedule?action=SyncPages">Sync Pages</a></li>
<li class="disabled"></li>
<li><a href="/Schedule?action=Load">Load</a></li>
<li><a href="/Schedule?action=Save">Save</a></li>
<li><a href="/Schedule?action=SlideShow">SlideShow</a></li>
</ul>
</div>
</li></ul>
</div>
</div>
<!-- Page Header 2 -->
<div id="page" lang="en" dir="ltr">
<span id="pagelocation">location: <a class="backlink" href="/Schedule" rel="nofollow">Schedule</a></span><div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
<span class="anchor" id="line-1"></span><span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line867">
<h1 id="Schedule-1">Schedule</h1>
<span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><span class="anchor" id="line-6"></span><p class="line867">
<h2 id="Outline">Outline</h2>
<span class="anchor" id="line-7"></span><span class="anchor" id="line-8"></span><ul><li><p class="line891"><strong>Friday 19th September from 9am</strong> - Normal conference day with talks and keynotes. Teachers' track. Social event in the evening. <span class="anchor" id="line-9"></span></li><li><p class="line891"><strong>Saturday 20th September 9am</strong> - Normal conference day with talks, keynotes and lightning talks. Kids' day. Conference meal in the evening. <span class="anchor" id="line-10"></span></li><li><p class="line891"><strong>Sunday 21st September 9am</strong> - Normal conference day with talks, keynotes, and lightning talks. <span class="anchor" id="line-11"></span></li><li><p class="line891"><strong>Monday 22nd September 9am</strong> - Code sprints. <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span></li></ul><p class="line867">
<h2 id="THIS_IS_A_PROVISIONAL_SCHEDULE">THIS IS A PROVISIONAL SCHEDULE</h2>
<span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line867"><a class="http" href="http://pyconuk.net/Schedule?action=print">Click for a minimalist version</a>, e.g. for printing. However, please be aware that the schedule may change. <span class="anchor" id="line-16"></span>
<h2 id="Friday_19th">Friday 19th</h2>
<span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><div><table><tbody><tr> <td><p class="line862"> <strong>Time</strong> </td>
<td><p class="line862"> <strong>The HP Room</strong> </td>
<td><p class="line862"> <strong>The MADE Room</strong> </td>
<td><p class="line862"> <strong>The Test People Room</strong> </td>
<td><p class="line862"> <strong>The Mailjet Room</strong> </td>
<td><p class="line862"> <strong> Simulation Centre </strong> </td>
</tr>
<tr> <td><span class="anchor" id="line-19"></span><p class="line862"> </td>
<td><p class="line862"> (CC1.3) </td>
<td><p class="line862"> (CC2.1) </td>
<td><p class="line862"> (CC1.4) </td>
<td><p class="line862"> ( tba CC1.8? ) </td>
</tr>
<tr> <td><span class="anchor" id="line-20"></span><p class="line862"> 9:30 </td>
<td colspan="5"><p class="line862"> Welcome </td>
</tr>
<tr> <td><span class="anchor" id="line-21"></span><p class="line862"> 10:00 </td>
<td colspan="4"><p class="line862"> Keynote: Ecosystem threats to Python (Van Lindberg) </td>
<td colspan="1" rowspan="12" style="text-align: center"><p class="line862"> Education track (<a class="https" href="https://docs.google.com/document/d/1vfWZ_kFxiRX9btcqVYCQLK0STooGezS58ixq2ldF3WY/edit?usp=sharing">schedule here</a>) Including learning Python, games workshops, Raspberry Pi and walking/talking robots! (<strong>Open to all attendees!</strong>) </td>
</tr>
<tr> <td><span class="anchor" id="line-22"></span><p class="line862"> 10:50 </td>
<td colspan="3"><p class="line862"> Break </td>
<td colspan="1" rowspan="4" style="text-align: center"><p class="line862"> Workshop: Python Rules the Cloud (Interoute) </td>
</tr>
<tr> <td><span class="anchor" id="line-23"></span><p class="line862"> 11:10 </td>
<td><p class="line862"> HTTP/2: Because The Web Was Too Easy (Cory Benfield) </td>
<td><p class="line862"> Automated Report Generation with IPython Notebook (Adam Hodgen) </td>
<td><p class="line862"> Post Mortem Debugging and Web Development (Alessandro Molina) </td>
</tr>
<tr> <td><span class="anchor" id="line-24"></span><p class="line862"> 11:40 </td>
<td><p class="line862"> Python for Zombies: 15.000 enrolled in the first Brazilian MOOC to teach programming (Fernando Masanori Ashikaga) </td>
<td><p class="line862"> Exploring unit-testing with unittest, nose and pytest (Tom Viner) </td>
<td><p class="line862"> Ganga: an interface to the LHC computing grid (Matt Williams) </td>
</tr>
<tr> <td><span class="anchor" id="line-25"></span><p class="line862"> 12:10 </td>
<td><p class="line862"> Collaborative, streaming, 3D, and interactive matplotlib, ggplot2, and MATLAB plots in an IPython Notebook with Plotly (Carole Griffiths &amp; Chris Parmer) </td>
<td><p class="line862"> Selenium Simple Test - An experience report (Peter Russell) </td>
<td><p class="line862"> Advanced py.test Fixtures (Floris Bruynooghe) </td>
</tr>
<tr> <td><span class="anchor" id="line-26"></span><p class="line862"> 12:40 </td>
<td colspan="4"><p class="line862"> Lunch </td>
</tr>
<tr> <td><span class="anchor" id="line-27"></span><p class="line862"> 14:10 </td>
<td colspan="3"><p class="line862"> Keynote: Lessons from Strangers (Rachel Sanders) </td>
<td colspan="1" rowspan="4" style="text-align: center"><p class="line862"> Workshop: Python and Spatial Data (Valentin Hancu) </td>
</tr>
<tr> <td><span class="anchor" id="line-28"></span><p class="line862"> 15:00 </td>
<td><p class="line862"> When performance matters... (Marc-Andre Lemburg) </td>
<td><p class="line862"> Discovering developer habits with OpenStack code review data (Dougal Matthews) </td>
<td><p class="line862"> Data Traceability Through Data Annotation (Fredrik Haard) </td>
</tr>
<tr> <td><span class="anchor" id="line-29"></span><p class="line862"> 15:30 </td>
<td><p class="line862"> Try A Little Randomness (Larry Hastings) </td>
<td><p class="line862"> A Pinch of Salt (Scott Walton) </td>
<td><p class="line862"> Where am I? Geospatial processing with Python (Ian Taylor) </td>
</tr>
<tr> <td><span class="anchor" id="line-30"></span><p class="line862"> 16:00 </td>
<td colspan="3"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-31"></span><p class="line862"> 16:20 </td>
<td><p class="line862"> PyPy and its ecosystem (Ronan Lamy) </td>
<td><p class="line862"> Self-Contained Deployment (Rach Belaid) </td>
<td><p class="line862"> Let your data go/flow/grow with py2neo (Colin Moore-Hill) </td>
<td colspan="1" rowspan="5" style="text-align: center"><p class="line862"> Workshop: Integrating Python and C++ with Boost.Python (Austin Bingham) </td>
</tr>
<tr> <td><span class="anchor" id="line-32"></span><p class="line862"> 16:50 </td>
<td><p class="line862"> Simulating quantum systems in Python (Katie Barr) </td>
<td><p class="line862"> Micro Python - my experiences running a successful Kickstarter campaign (Damien George) </td>
<td><p class="line862"> Dockerize your Python apps! (James Pacileo) </td>
</tr>
<tr> <td><span class="anchor" id="line-33"></span><p class="line862"> 17:20 </td>
<td colspan="3"><p class="line862"> Break </td>
<td colspan="1" rowspan="3" style="text-align: center"><p class="line862"> The Great British ROBOT Code Dojo (<strong>Open to all attendees!</strong>)</td>
</tr>
<tr> <td><span class="anchor" id="line-34"></span><p class="line862"> 17:40 </td>
<td><p class="line862"> Farewell and Welcome Home: Python in Two Genders (Naomi Ceder) </td>
<td><p class="line862"> Use of OpenStack CI for your own projects (Yolanda Robla Mota) </td>
<td><p class="line862"> Python Web Installers (Marc-Andre Lemburg) </td>
</tr>
<tr> <td><span class="anchor" id="line-35"></span><p class="line862"> 18:10 </td>
<td><p class="line862"> Tests without boilerplate (Jonathan Fine) </td>
<td><p class="line862"> The IPython notebook is for everyone (Gautier Hayoun) </td>
<td><p class="line862"> Exploring unit-testing with unittest, nose and pytest (Tom Viner) </td>
</tr>
<tr> <td><span class="anchor" id="line-36"></span><p class="line862"> 18:40 </td>
<td colspan="4"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-37"></span><p class="line862"> 19:30 </td>
<td colspan="4"><p class="line862"> Buffet with Python-themed beer provided by Fuzzy Duck, <a class="nonexistent" href="/TechnoCentre">TechnoCentre</a> restaurant. </td>
</tr>
</tbody></table></div><span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><p class="line867">
<h2 id="Saturday_20th">Saturday 20th</h2>
<span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><div><table><tbody><tr> <td><p class="line862"> <strong>Time</strong> </td>
<td><p class="line862"> <strong>The HP Room</strong> </td>
<td><p class="line862"> <strong>The MADE Room</strong> </td>
<td><p class="line862"> <strong>The Test People Room</strong> </td>
<td><p class="line862"> <strong> Simulation Centre </strong> </td>
</tr>
<tr> <td><span class="anchor" id="line-42"></span><p class="line862"> 9:00 </td>
<td><p class="line862"> Stormy Webber (Wes Mason) </td>
<td><p class="line862"> Weld: Managing git (Tibs) </td>
<td><p class="line862"> DEPOT, story of a file.write() gone wrong (Alessandro Molina) </td>
<td><p class="line862"> Kids registration </td>
</tr>
<tr> <td><span class="anchor" id="line-43"></span><p class="line862"> 9:30 </td>
<td><p class="line862"> Dealing with big black boxes (Fergus Doyle) </td>
<td><p class="line862"> The Twelve-Factor App (Kristian Glass) </td>
<td><p class="line862"> Enterprise 101 (Martin P. Hellwig) </td>
<td colspan="1" rowspan="10" style="text-align: center"><p class="line862"> Kids track (<a class="https" href="https://docs.google.com/document/d/1vfWZ_kFxiRX9btcqVYCQLK0STooGezS58ixq2ldF3WY/edit?usp=sharing">schedule here</a>) Including learning Python, Minecraft, games workshops, Raspberry Pi, quadcopters, kids, harassed parents and walking/talking robots! (<strong>Open to all attendees!</strong>) :-)</td>
</tr>
<tr> <td><span class="anchor" id="line-44"></span><p class="line862"> 10:00 </td>
<td colspan="3"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-45"></span><p class="line862"> 10:20 </td>
<td><p class="line862"> The High Performance Python Landscape (Ian Ozsvald) </td>
<td colspan="1" rowspan="5" style="text-align: center"><p class="line862"> Workshop: Python in game development (Denis Kovalev) </td>
<td colspan="1" rowspan="5" style="text-align: center"><p class="line862"> Workshop: Practical introduction to machine learning via Kaggle problems (Ezzeri Esa) </td>
</tr>
<tr> <td><span class="anchor" id="line-46"></span><p class="line862"> 10:50 </td>
<td><p class="line862"> Functional Programming and Python (Pete Graham) </td>
</tr>
<tr> <td><span class="anchor" id="line-47"></span><p class="line862"> 11:20 </td>
<td><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-48"></span><p class="line862"> 11:40 </td>
<td><p class="line862"> Building great APIs in Python (Paul Hallett) </td>
</tr>
<tr> <td><span class="anchor" id="line-49"></span><p class="line862"> 12:10 </td>
<td><p class="line862"> How does a spreadsheet work? A tour of the codebase of Dirigible, the Pythonic spreadsheet (Harry Percival) </td>
</tr>
<tr> <td><span class="anchor" id="line-50"></span><p class="line862"> 12:40 </td>
<td colspan="3"><p class="line862"> Lunch (book signing and giveaway at 13:30 in HP room) </td>
</tr>
<tr> <td><span class="anchor" id="line-51"></span><p class="line862"> 14:00 </td>
<td colspan="3"><p class="line862"> <a class="nonexistent" href="/PyCon">PyCon</a> UK Vice-Chair Plenary bit </td>
</tr>
<tr> <td><span class="anchor" id="line-52"></span><p class="line862"> 14:10 </td>
<td colspan="3"><p class="line862"> Keynote: A time traveler's guide to Python (Jessica McKellar) </td>
</tr>
<tr> <td><span class="anchor" id="line-53"></span><p class="line862"> 15:00 </td>
<td><p class="line862"> Using python to improve government (Michael Brunton-Spall) </td>
<td><p class="line862"> Dependency Injection in Nameko (Matt Bennett) </td>
<td><p class="line862"> Python Refactoring with Rope and Traad (Austin Bingham) </td>
<td colspan="1" rowspan="2" style="text-align: center"><p class="line862"> Kids Track Show and tell (all welcome </td>
</tr>
<tr> <td><span class="anchor" id="line-54"></span><p class="line862"> 15:30 </td>
<td><p class="line862"> Micro Python - shrinking Python down to run on a microcontroller (Damien George) </td>
<td><p class="line862"> Is that jumper made of cats? Matching fashion products with image similarity. (Eddie Bell) </td>
<td><p class="line862"> you're doing it wrong: the lack of reproducibility in statistical science, and how to fix it (Mike McKerns) </td>
</tr>
<tr> <td><span class="anchor" id="line-55"></span><p class="line862"> 16:00 </td>
<td colspan="3"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-56"></span><p class="line862"> 16:20 </td>
<td><p class="line862"> The Minecraft Challenge (Katie Bell) </td>
<td><p class="line862"> Exploring unit-testing with unittest, nose and pytest (Tom Viner) </td>
<td><p class="line862"> Web based application automation at the protocol level (Katie Barr) </td>
<td><p class="line862"> </td>
</tr>
<tr> <td><span class="anchor" id="line-57"></span><p class="line862"> 16:50 </td>
<td><p class="line862"> Teaching children to program Python with the Pyland game (Alex Bradbury) </td>
<td><p class="line862"> A Deep Dive into Requests (Cory Benfield) </td>
<td><p class="line862"> Dr. Jython or: How I Learned to Stop Worrying and Love the JVM (Naomi Ceder) </td>
<td><p class="line862"> </td>
</tr>
<tr> <td><span class="anchor" id="line-58"></span><p class="line862"> 17:10 </td>
<td colspan="4"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-59"></span><p class="line862"> 17:30 </td>
<td colspan="4"><p class="line862"> The Lightning Talk Show </td>
</tr>
<tr> <td><span class="anchor" id="line-60"></span><p class="line862"> 18:45 </td>
<td colspan="2"><p class="line862"> Break </td>
<td><p class="line862"> PSF Members only preloading/pregaming reception </td>
<td><p class="line862"> </td>
</tr>
<tr> <td><span class="anchor" id="line-61"></span><p class="line862"> 19:30 </td>
<td colspan="4"><p class="line862"> <a class="nonexistent" href="/PyCon">PyCon</a> UK Dinner, <a class="nonexistent" href="/TechnoCentre">TechnoCentre</a> restaurant </td>
</tr>
</tbody></table></div><span class="anchor" id="line-62"></span><span class="anchor" id="line-63"></span><p class="line867">
<h2 id="Sunday_21st">Sunday 21st</h2>
<span class="anchor" id="line-64"></span><span class="anchor" id="line-65"></span><div><table><tbody><tr> <td><p class="line862"> <strong>Time</strong> </td>
<td><p class="line862"> <strong>The HP Room</strong> </td>
<td><p class="line862"> <strong>The MADE Room</strong> </td>
<td><p class="line862"> <strong>CC1.8</strong> </td>
<td><p class="line862"> <strong>Bistro</strong> </td>
<td><p class="line862"> <strong>The Test People Room</strong> </td>
</tr>
<tr> <td><span class="anchor" id="line-66"></span><p class="line862"> 9:00 </td>
<td><p class="line862"> The failure of python object serialization: why HPC in python is broken, and how to fix it (Mike McKerns) </td>
<td><p class="line862"> It's Not All About Success &amp; Failure (Julian Berman) </td>
<td><p class="line862"> Python Core Development on Windows: Pleasures &amp; Pitfalls (Tim Golden) </td>
<td colspan="1" rowspan="5" style="text-align: center"><p class="line862"> Recruitment Fair </td>
<td colspan="1" rowspan="9" style="text-align: center"><p class="line862"> TDD Study Group (Harry Percival) </td>
</tr>
<tr> <td><span class="anchor" id="line-67"></span><p class="line862"> 9:30 </td>
<td><p class="line862"> Repeatable automated deployments with Juju (Michael Foord &amp; Simon Davy) </td>
<td><p class="line862"> The knights who say Neo - storing classes in the graph (David Szotten) </td>
<td><p class="line862"> Rapid prototyping to industrial strength: Python in Government (Michal Olszewski, Jim Gumbley &amp; Max Edwards) </td>
</tr>
<tr> <td><span class="anchor" id="line-68"></span><p class="line862"> 10:00 </td>
<td colspan="3"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-69"></span><p class="line862"> 10:20 </td>
<td><p class="line862"> Studying astronomy at the University of Warwick using Python (Simon Walker) </td>
<td colspan="1" rowspan="6" style="text-align: center"><p class="line862"> Workshop: Nameko Tutorial (Matt Bennett) </td>
<td><p class="line862"> </td>
</tr>
<tr> <td><span class="anchor" id="line-70"></span><p class="line862"> 10:50 </td>
<td colspan="1" rowspan="2" style="text-align: center"><p class="line862"> Haircuts for your code (Carl Crowder) </td>
<td><p class="line862"> </td>
</tr>
<tr> <td><span class="anchor" id="line-71"></span><p class="line862"> 11:00 </td>
<td colspan="1" rowspan="4" style="text-align: center"><p class="line862"> Workshop: Automation Made Simple with SST (Jordan Brennan) </td>
<td><p class="line862"> EuroPython Reboot (John Pinner, Room CC1.2) </td>
</tr>
<tr> <td><span class="anchor" id="line-72"></span><p class="line862"> 11:20 </td>
<td><p class="line862"> Break </td>
<td><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-73"></span><p class="line862"> 11:40 </td>
<td><p class="line862"> PyPi (not that one) - Python on the RaspberryPi (Ben Nuttall) </td>
<td><p class="line862"> First steps with django CMS (Iacopo Spalletti) </td>
</tr>
<tr> <td><span class="anchor" id="line-74"></span><p class="line862"> 12:10 </td>
<td><p class="line862"> Trouble at t'LeedsDataMill: Oompah.py ~ Big Data meets Big Brass (Nicholas Tollervey &amp; Simon Davy) </td>
</tr>
<tr> <td><span class="anchor" id="line-75"></span><p class="line862"> 12:40 </td>
<td colspan="5"><p class="line862"> Lunch </td>
</tr>
<tr> <td><span class="anchor" id="line-76"></span><p class="line862"> 14:00 </td>
<td colspan="5"><p class="line862"> <a class="nonexistent" href="/PyCon">PyCon</a> UK Vice-Chair Plenary bit </td>
</tr>
<tr> <td><span class="anchor" id="line-77"></span><p class="line862"> 14:10 </td>
<td colspan="5"><p class="line862"> Keynote: Miss Adventures in Raspberry Pi (Carrie Anne Philbin) </td>
</tr>
<tr> <td><span class="anchor" id="line-78"></span><p class="line862"> 15:00 </td>
<td><p class="line862"> AGM </td>
<td colspan="4"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-79"></span><p class="line862"> 15:10 </td>
<td colspan="4"><p class="line862"> The PyConUK Panel - Question time with <a href="/TheZeth">TheZeth</a> and our panel of experts, including: Dawn Hewitson (Faculty of Education at Edge Hill University), Michael Foord (Python Core Developer), Van Lindberg (Python Software Foundation, Rachel Sanders (LinkedIn/PyLadies) and others </td>
<td><p class="line862"> Teaching Python to non-programmers special interest group </td>
</tr>
<tr> <td><span class="anchor" id="line-80"></span><p class="line862"> 16:00 </td>
<td colspan="5"><p class="line862"> The Lightning Talk Show </td>
</tr>
<tr> <td><span class="anchor" id="line-81"></span><p class="line862"> 17:30 </td>
<td colspan="5"><p class="line862"> The non-closing closing </td>
</tr>
<tr> <td><span class="anchor" id="line-82"></span><p class="line862"> 18:00 </td>
<td colspan="5"><p class="line862"> End of Day </td>
</tr>
<tr> <td><span class="anchor" id="line-83"></span><p class="line862"> 19:30 </td>
<td colspan="5"><p class="line862"> The Mellow Night </td>
</tr>
</tbody></table></div><span class="anchor" id="line-84"></span><span class="anchor" id="line-85"></span><p class="line867">
<h2 id="Monday_22nd">Monday 22nd</h2>
<span class="anchor" id="line-86"></span><span class="anchor" id="line-87"></span><div><table><tbody><tr> <td><p class="line862"> <strong>Time</strong> </td>
<td><p class="line862"> <strong>Sprint 1</strong> </td>
<td><p class="line862"> <strong>Sprint 2</strong> </td>
<td><p class="line862"> <strong>Sprint 3</strong> </td>
<td><p class="line862"> <strong>Sprint 4</strong> </td>
</tr>
<tr> <td><span class="anchor" id="line-88"></span><p class="line862"> 09:30 </td>
<td colspan="4"><p class="line862"> Discussion and decisions about what to do, split into groups </td>
</tr>
<tr> <td><span class="anchor" id="line-89"></span><p class="line862"> 10:00 </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
</tr>
<tr> <td><span class="anchor" id="line-90"></span><p class="line862"> 11:00 </td>
<td colspan="4"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-91"></span><p class="line862"> 11:15 </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
</tr>
<tr> <td><span class="anchor" id="line-92"></span><p class="line862"> 12:30 </td>
<td colspan="4"><p class="line862"> Lunch </td>
</tr>
<tr> <td><span class="anchor" id="line-93"></span><p class="line862"> 13:30 </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
</tr>
<tr> <td><span class="anchor" id="line-94"></span><p class="line862"> 15:30 </td>
<td colspan="4"><p class="line862"> Break </td>
</tr>
<tr> <td><span class="anchor" id="line-95"></span><p class="line862"> 15:45 </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
<td><p class="line862"> TBC </td>
</tr>
<tr> <td><span class="anchor" id="line-96"></span><p class="line862"> 16:30 </td>
<td colspan="4"><p class="line862"> Share results together </td>
</tr>
<tr> <td><span class="anchor" id="line-97"></span><p class="line862"> 17:00 </td>
<td colspan="2"><p class="line862">End of Conference </td>
<td colspan="2"><p class="line862"> Moving all the boxes away for next year </td>
</tr>
</tbody></table></div><span class="anchor" id="line-98"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">Schedule (last edited 2014-09-20 21:18:08 by <span title="JohnPinner @ 193.61.104.66[193.61.104.66]"><a href="/JohnPinner" title="JohnPinner @ 193.61.104.66[193.61.104.66]">JohnPinner</a></span>)</p>
<div id="pagebottom"></div>
</div>
<div id="footer">
<ul id="credits">
<li><a href="http://moinmo.in/" title="This site uses the MoinMoin Wiki software.">MoinMoin Powered</a></li><li><a href="http://moinmo.in/Python" title="MoinMoin is written in Python.">Python Powered</a></li><li><a href="http://moinmo.in/GPL" title="MoinMoin is GPL licensed.">GPL licensed</a></li><li><a href="http://validator.w3.org/check?uri=referer" title="Click here to validate this page.">Valid HTML 4.01</a></li>
</ul>
</div>
<div align=center>PyCon&trade; is a Registered Trade Mark of the Python Software Foundation</div></body>
</html>
  1. acl TrustedEditorGroup:read,write,revert All:read Known:read

Table of Contents

Schedule

Outline

 * '''Friday 19th September from 9am''' - Normal conference day with talks and keynotes. Teachers' track. Social event in the evening.
 * '''Saturday 20th September 9am''' - Normal conference day with talks, keynotes and lightning talks. Kids' day. Conference meal in the evening.
 * '''Sunday 21st September 9am''' - Normal conference day with talks, keynotes, and lightning talks.
 * '''Monday 22nd September 9am''' - Code sprints.

THIS IS A PROVISIONAL SCHEDULE

Click for a minimalist version, e.g. for printing. However, please be aware that the schedule may change.

Friday 19th

|| Time || The HP Room || The MADE Room || The Test People Room || The Mailjet Room || Simulation Centre || || || (CC1.3) || (CC2.1) || (CC1.4) || ( tba CC1.8? ) || || 9:30 ||<-5> Welcome || || 10:00 ||<-4> Keynote: Ecosystem threats to Python (Van Lindberg) ||<|12> Education track (schedule here) Including learning Python, games workshops, Raspberry Pi and walking/talking robots! (Open to all attendees!) || || 10:50 ||<-3> Break ||<-1|4> Workshop: Python Rules the Cloud (Interoute) || || 11:10 || HTTP/2: Because The Web Was Too Easy (Cory Benfield) || Automated Report Generation with IPython Notebook (Adam Hodgen) || Post Mortem Debugging and Web Development (Alessandro Molina) || || 11:40 || Python for Zombies: 15.000 enrolled in the first Brazilian MOOC to teach programming (Fernando Masanori Ashikaga) || Exploring unit-testing with unittest, nose and pytest (Tom Viner) || Ganga: an interface to the LHC computing grid (Matt Williams) || || 12:10 || Collaborative, streaming, 3D, and interactive matplotlib, ggplot2, and MATLAB plots in an IPython Notebook with Plotly (Carole Griffiths & Chris Parmer) || Selenium Simple Test - An experience report (Peter Russell) || Advanced py.test Fixtures (Floris Bruynooghe) || || 12:40 ||<-4> Lunch || || 14:10 ||<-3> Keynote: Lessons from Strangers (Rachel Sanders) ||<-1|4> Workshop: Python and Spatial Data (Valentin Hancu) || || 15:00 || When performance matters... (Marc-Andre Lemburg) || Discovering developer habits with !OpenStack code review data (Dougal Matthews) || Data Traceability Through Data Annotation (Fredrik Haard) || || 15:30 || Try A Little Randomness (Larry Hastings) || A Pinch of Salt (Scott Walton) || Where am I? Geospatial processing with Python (Ian Taylor) || || 16:00 ||<-3> Break || || 16:20 || !PyPy and its ecosystem (Ronan Lamy) || Self-Contained Deployment (Rach Belaid) || Let your data go/flow/grow with py2neo (Colin Moore-Hill) ||<-1|5> Workshop: Integrating Python and C++ with Boost.Python (Austin Bingham) || || 16:50 || Simulating quantum systems in Python (Katie Barr) || Micro Python - my experiences running a successful Kickstarter campaign (Damien George) || Dockerize your Python apps! (James Pacileo) || || 17:20 ||<-3> Break ||<|3> The Great British ROBOT Code Dojo (Open to all attendees!)|| || 17:40 || Farewell and Welcome Home: Python in Two Genders (Naomi Ceder) || Use of !OpenStack CI for your own projects (Yolanda Robla Mota) || Python Web Installers (Marc-Andre Lemburg) || || 18:10 || Tests without boilerplate (Jonathan Fine) || The IPython notebook is for everyone (Gautier Hayoun) || Exploring unit-testing with unittest, nose and pytest (Tom Viner) || || 18:40 ||<-4> Break || || 19:30 ||<-4> Buffet with Python-themed beer provided by Fuzzy Duck, TechnoCentre restaurant. ||

Saturday 20th

|| Time || The HP Room || The MADE Room || The Test People Room || Simulation Centre || || 9:00 || Stormy Webber (Wes Mason) || Weld: Managing git (Tibs) || DEPOT, story of a file.write() gone wrong (Alessandro Molina) || Kids registration || || 9:30 || Dealing with big black boxes (Fergus Doyle) || The Twelve-Factor App (Kristian Glass) || Enterprise 101 (Martin P. Hellwig) ||<|10> Kids track (schedule here) Including learning Python, Minecraft, games workshops, Raspberry Pi, quadcopters, kids, harassed parents and walking/talking robots! (Open to all attendees!) :-)|| || 10:00 ||<-3> Break || || 10:20 || The High Performance Python Landscape (Ian Ozsvald) ||<-1|5> Workshop: Python in game development (Denis Kovalev) ||<-1|5> Workshop: Practical introduction to machine learning via Kaggle problems (Ezzeri Esa) || || 10:50 || Functional Programming and Python (Pete Graham) || || 11:20 || Break || || 11:40 || Building great APIs in Python (Paul Hallett) || || 12:10 || How does a spreadsheet work? A tour of the codebase of Dirigible, the Pythonic spreadsheet (Harry Percival) || || 12:40 ||<-3> Lunch (book signing and giveaway at 13:30 in HP room) || || 14:00 ||<-3> PyCon UK Vice-Chair Plenary bit || || 14:10 ||<-3> Keynote: A time traveler's guide to Python (Jessica !McKellar) || || 15:00 || Using python to improve government (Michael Brunton-Spall) || Dependency Injection in Nameko (Matt Bennett) || Python Refactoring with Rope and Traad (Austin Bingham) ||<|2> Kids Track Show and tell (all welcome || || 15:30 || Micro Python - shrinking Python down to run on a microcontroller (Damien George) || Is that jumper made of cats? Matching fashion products with image similarity. (Eddie Bell) || you're doing it wrong: the lack of reproducibility in statistical science, and how to fix it (Mike !McKerns) || || 16:00 ||<-3> Break || || 16:20 || The Minecraft Challenge (Katie Bell) || Exploring unit-testing with unittest, nose and pytest (Tom Viner) || Web based application automation at the protocol level (Katie Barr) || || || 16:50 || Teaching children to program Python with the Pyland game (Alex Bradbury) || A Deep Dive into Requests (Cory Benfield) || Dr. Jython or: How I Learned to Stop Worrying and Love the JVM (Naomi Ceder) || || || 17:10 ||<-4> Break || || 17:30 ||<-4> The Lightning Talk Show || || 18:45 ||<-2> Break || PSF Members only preloading/pregaming reception || || || 19:30 ||<-4> PyCon UK Dinner, TechnoCentre restaurant ||

Sunday 21st

|| Time || The HP Room || The MADE Room || CC1.8 || Bistro || The Test People Room || || 9:00 || The failure of python object serialization: why HPC in python is broken, and how to fix it (Mike !McKerns) || It's Not All About Success & Failure (Julian Berman) || Python Core Development on Windows: Pleasures & Pitfalls (Tim Golden) ||<|5> Recruitment Fair ||<-1|9> TDD Study Group (Harry Percival) || || 9:30 || Repeatable automated deployments with Juju (Michael Foord & Simon Davy) || The knights who say Neo - storing classes in the graph (David Szotten) || Rapid prototyping to industrial strength: Python in Government (Michal Olszewski, Jim Gumbley & Max Edwards) || || 10:00 ||<-3> Break || || 10:20 || Studying astronomy at the University of Warwick using Python (Simon Walker) ||<-1|6> Workshop: Nameko Tutorial (Matt Bennett) || || || 10:50 ||<-1|2> Haircuts for your code (Carl Crowder) || || || 11:00 ||<|4> Workshop: Automation Made Simple with SST (Jordan Brennan) || !EuroPython Reboot (John Pinner, Room CC1.2) || || 11:20 || Break || Break || || 11:40 || !PyPi (not that one) - Python on the !RaspberryPi (Ben Nuttall) || First steps with django CMS (Iacopo Spalletti) || || 12:10 || Trouble at t'!LeedsDataMill: Oompah.py ~ Big Data meets Big Brass (Nicholas Tollervey & Simon Davy) || || 12:40 ||<-5> Lunch || || 14:00 ||<-5> PyCon UK Vice-Chair Plenary bit || || 14:10 ||<-5> Keynote: Miss Adventures in Raspberry Pi (Carrie Anne Philbin) || || 15:00 || AGM ||<-4> Break || || 15:10 ||<-4> The PyConUK Panel - Question time with TheZeth and our panel of experts, including: Dawn Hewitson (Faculty of Education at Edge Hill University), Michael Foord (Python Core Developer), Van Lindberg (Python Software Foundation, Rachel Sanders (!LinkedIn/PyLadies) and others || Teaching Python to non-programmers special interest group || || 16:00 ||<-5> The Lightning Talk Show || || 17:30 ||<-5> The non-closing closing || || 18:00 ||<-5> End of Day || || 19:30 ||<-5> The Mellow Night ||

Monday 22nd

|| Time || Sprint 1 || Sprint 2 || Sprint 3 || Sprint 4 || || 09:30 ||<-4> Discussion and decisions about what to do, split into groups || || 10:00 || TBC || TBC || TBC || TBC || || 11:00 ||<-4> Break || || 11:15 || TBC || TBC || TBC || TBC || || 12:30 ||<-4> Lunch || || 13:30 || TBC || TBC || TBC || TBC || || 15:30 ||<-4> Break || || 15:45 || TBC || TBC || TBC || TBC || || 16:30 ||<-4> Share results together || || 17:00 ||<-2>End of Conference ||<-2> Moving all the boxes away for next year ||

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="robots" content="index,nofollow">
<title>Talks - pyconuk2014</title>
<script type="text/javascript" src="/moin_static198/common/js/common.js"></script>
<script type="text/javascript">
<!--
var search_hint = "Search";
//-->
</script>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/moin_static198/moniker/css/common.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="/moin_static198/moniker/css/screen.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="/moin_static198/moniker/css/print.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="/moin_static198/moniker/css/projection.css">
<!-- css only for MS IE6/IE7 browsers -->
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/moin_static198/moniker/css/msie.css">
<![endif]-->
<link rel="alternate" title="pyconuk2014: Talks" href="/action/rss_rc/Talks?diffs=1&amp;show_att=1&amp;action=rss_rc&amp;unique=0&amp;page=Talks&amp;ddiffs=1" type="application/rss+xml">
<script type="text/javascript" src="/moin_static198/moniker/js/actionmenuoptions.js"></script>
<link rel="Start" href="/PyCon_UK_2014">
<link rel="Alternate" title="Wiki Markup" href="/action/raw/Talks?action=raw">
<link rel="Alternate" media="print" title="Print View" href="/action/print/Talks?action=print">
<link rel="Search" href="/FindPage">
<link rel="Index" href="/TitleIndex">
<link rel="Glossary" href="/WordIndex">
<link rel="Help" href="/HelpOnFormatting">
</head>
<body lang="en" dir="ltr">
<!-- Page Header 1 -->
<div id="username">welcome: <a href="/action/login/Talks?action=login" id="login" rel="nofollow">please sign in</a></div>
<div id="header"><div id="logo"><a href="/PyCon_UK_2014"><img src="/wiki/pyconuk/img/pycon2012logo.png" alt="PyCon UK" /></a></div>
<div id="banner" align="center"><strong>Proud to Sponsor PyCon UK</strong><br />
<a href="/SponsorShip"><img alt="Sponsor of PyCon UK 2014" id="banner" src="/SponsorShip?action=AttachFile&amp;do=get&amp;target=sponsor_scraperwiki_long.png" title="Sponsor of PyCon UK 2014" /></a>
</div>
<div id="sidebar">
<div class="sidepanel"><h1>Quick Links</h1>
<ul id="navibar">
<li class="wikilink"><a href="/Schedule">Schedule</a></li><li class="wikilink"><a href="/Workshops">Workshops</a></li><li class="wikilink current"><a href="/Talks">Talks</a></li><li class="wikilink"><a href="/Themes">Themes</a></li><li class="wikilink"><a href="/Sprints">Sprints</a></li><li class="wikilink"><a class="nonexistent" href="/Posters">Posters</a></li><li class="wikilink"><a href="/Sponsors">Sponsors</a></li><li class="wikilink"><a href="/Social">Social</a></li><li class="wikilink"><a href="/Helping">Helping</a></li><li class="wikilink"><a href="/Location">Location</a></li><li class="wikilink"><a href="/Accommodation">Accommodation</a></li><li class="wikilink"><a href="/FAQ">FAQ</a></li><li class="wikilink"><a href="/CodeOfConduct">Code Of Conduct</a></li><li class="wikilink"><a class="nonexistent" href="/Publicity">Publicity</a></li><li class="wikilink"><a href="/RecentChanges">RecentChanges</a></li><li class="wikilink"><a href="/PyCon_UK_2014">Wiki Home</a></li>
</ul>
</div>
<div class="sidepanel"><h1>Search Wiki</h1>
<form id="searchform" method="get" action="/Talks">
<div>
<input type="hidden" name="action" value="fullsearch">
<input type="hidden" name="context" value="180">
<input id="searchinput" type="text" name="value" value=""
onfocus="searchFocus(this)" onblur="searchBlur(this)"
onkeyup="searchChange(this)" onchange="searchChange(this)" alt="this">
<div id="searchbuttons">
<input id="titlesearch" name="titlesearch" type="submit"
value="Titles" alt="Search Titles">
<input id="fullsearch" name="fullsearch" type="submit"
value="Text" alt="Search Full Text">
</div>
</div>
</form>
<script type="text/javascript">
// Initialize search form
// var f = document.getElementById('searchform');
// f.getElementsByTagName('label')[0].style.display = 'none';
var e = document.getElementById('searchinput');
e.value = "";
searchChange(e);
searchBlur(e);
</script>
</div>
<div class="sidepanel"><h1>Page Tools</h1><ul class="editbar"><li><span class="disabled">Page Locked</span></li><li class="toggleCommentsButton" style="display:none;"><a href="#" class="nbcomment" onClick="toggleComments();return false;">Comments</a></li><li><a href="/action/info/Talks?action=info" rel="nofollow">page history</a></li><li><a href="/action/AttachFile/Talks?action=AttachFile" rel="nofollow">upload &amp; manage files</a></li><li>
<div class="togglelink" id="togglelink" onclick="toggleMenu('menu1')">[ more options ]</div>
<div id="menu1">
<ul>
<li><a href="/Talks?action=raw">Raw Text</a></li>
<li><a href="/Talks?action=print">Print View</a></li>
<li><a href="/Talks?action=RenderAsDocbook">Render as Docbook</a></li>
<li><a href="/Talks?action=refresh">Delete Cache</a></li>
<li><a href="/Talks?action=SpellCheck">Check Spelling</a></li>
<li><a href="/Talks?action=LikePages">Like Pages</a></li>
<li><a href="/Talks?action=LocalSiteMap">Local Site Map</a></li>
<li class="disabled">Rename Page</li>
<li class="disabled">Delete Page</li>
<li class="disabled">Subscribe User</li>
<li class="disabled">Remove Spam</li>
<li class="disabled">revert to this revision</li>
<li class="disabled">Package Pages</li>
<li><a href="/Talks?action=SyncPages">Sync Pages</a></li>
<li class="disabled"></li>
<li><a href="/Talks?action=Load">Load</a></li>
<li><a href="/Talks?action=Save">Save</a></li>
<li><a href="/Talks?action=SlideShow">SlideShow</a></li>
</ul>
</div>
</li></ul>
</div>
</div>
<!-- Page Header 2 -->
<div id="page" lang="en" dir="ltr">
<span id="pagelocation">location: <a class="backlink" href="/Talks" rel="nofollow">Talks</a></span><div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
<span class="anchor" id="line-1"></span><span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line867">
<h1 id="Talks-1">Talks</h1>
<span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867">
<h2 id="Ecosystem_threats_to_Python_.28Van_Lindberg.29">Ecosystem threats to Python (Van Lindberg)</h2>
<span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line874">Python is a spectacular success - far more than anyone, even Guido, would have anticipated 20 years ago. Python is preinstalled on almost every operating system, is becoming the lingua franca for many numeric, statistical, and big data problems, and is the default teaching language in many colleges and universities. <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line874">But our success does not hide the warning signs. Javascript, Julia, Java, Lua, and Go are all picking up speed and mindshare, frequently at the expense of Python. What do these languages and language communities have that is enticing others to pick them? How can we learn from the good ideas in these languages to make Python even stronger? How can we interoperate and build on what they have? <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><p class="line867">
<h2 id="Lessons_from_Strangers_.28Rachel_Sanders.29">Lessons from Strangers (Rachel Sanders)</h2>
<span class="anchor" id="line-13"></span><span class="anchor" id="line-14"></span><p class="line874">Why are some workplaces vibrant and innovative, and others fetid pits of despair? Why are some products loved and others DOA? I dove into the strange world of business and psychology and emerged a better engineer. <span class="anchor" id="line-15"></span><span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line867">
<h2 id="Discovering_developer_habits_with_OpenStack_code_review_data_.28Dougal_Matthews.29">Discovering developer habits with OpenStack code review data (Dougal Matthews)</h2>
<span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><p class="line874">What time of day are you most productive? How long does it take for a review to get merged after it has been submitted? Is the number of people reviewing each patch increasing or decreasing over time? Do some reviewers or companies favour specific developers? <span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><p class="line862">Those are some of the questions this talk aims to answer. Given 120k code reviews in the Python based OpenStack project, what can we learn about developer behaviour? What lessons can it teach us to help us review code better and be more efficient? <span class="anchor" id="line-22"></span><span class="anchor" id="line-23"></span><p class="line874">Using IPython notebook and Pandas we will explore this data, asking questions of it and seeing what correlations we can find. Along the way we will look at Pandas and IPython notebook and introduce a number of its features and functionality. <span class="anchor" id="line-24"></span><span class="anchor" id="line-25"></span><span class="anchor" id="line-26"></span><p class="line867">
<h2 id="HTTP.2F2:_Because_The_Web_Was_Too_Easy_.28Cory_Benfield.29">HTTP/2: Because The Web Was Too Easy (Cory Benfield)</h2>
<span class="anchor" id="line-27"></span><span class="anchor" id="line-28"></span><p class="line874">The internet has spoken, HTTP is to get its first serious update in 15 years. In this talk we'll discuss what HTTP/2 is, why it's happening, and how it's going to affect you and everyone you love. <span class="anchor" id="line-29"></span><span class="anchor" id="line-30"></span><span class="anchor" id="line-31"></span><p class="line867">
<h2 id="A_Deep_Dive_into_Requests_.28Cory_Benfield.29">A Deep Dive into Requests (Cory Benfield)</h2>
<span class="anchor" id="line-32"></span><span class="anchor" id="line-33"></span><p class="line874">Requests is one of the most popular third-party Python libraries ever written. Users love its clean and expressive API and its tendency to shorten their codebases. <span class="anchor" id="line-34"></span><span class="anchor" id="line-35"></span><p class="line874">That’s only part of the story, though. Behind Requests’ famous API lurks a number of exciting features that many users know nothing about. By using these features you can take your HTTP usage to the next level, speed up your code, and impress your friends (some of them, anyway). <span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span><p class="line874">In this short talk, we’ll do a quick pass through the Requests library itself pointing out its powerful features and tools. We’ll also take a look at some of the other libraries in the Requests ecosystem to see what they can bring to your code. We’ll talk about things like authentication, connection management, state persistence, SSL/TLS, transport adapters, and more! <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><p class="line874">This talk requires basic familiarity with the Requests library. No deep HTTP knowledge is required. <span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><span class="anchor" id="line-42"></span><p class="line867">
<h2 id="With_a_Pinch_of_Salt_.28Scott_Walton.29">With a Pinch of Salt (Scott Walton)</h2>
<span class="anchor" id="line-43"></span><span class="anchor" id="line-44"></span><p class="line874">Salt can be sprinkled over your food for flavouring. The same can be done with your servers, though I’d not recommend trying to eat them afterwards. <span class="anchor" id="line-45"></span><span class="anchor" id="line-46"></span><p class="line874">Salt is a very powerful server and configuration management system. It uses YAML and Jinja2 for configuration, so it should be familiar for most developers to get up and running. <span class="anchor" id="line-47"></span><span class="anchor" id="line-48"></span><p class="line874">In this talk, we will go through the basics of setting up Salt using a simple Django web app as an example. We can then build on this by introducing more of Salt’s features, such as selectors, grains, and pillars to construct and manage a complex system through testing, staging and production with relative ease. <span class="anchor" id="line-49"></span><span class="anchor" id="line-50"></span><span class="anchor" id="line-51"></span><p class="line867">
<h2 id="Dealing_with_big_black_boxes_.28Fergus_Doyle.29">Dealing with big black boxes (Fergus Doyle)</h2>
<span class="anchor" id="line-52"></span><span class="anchor" id="line-53"></span><p class="line874">"Full-stack" includes so much more than just client and server these days, with systems building on top of multiple database engines, caching layers, search backends, third party web services and hosting solutions to name but a few. <span class="anchor" id="line-54"></span><span class="anchor" id="line-55"></span><p class="line874">What does this mean for infrastructure? In this talk we'll explore the impact maintaining so many independent cogs can have on a system as a whole. <span class="anchor" id="line-56"></span><span class="anchor" id="line-57"></span><p class="line874">We’ll look at third-party components vs. those developed and maintained in-house and their similarities and differences. How can we encapsulate and efficiently test components in such disparate systems? What can we do to minimise the overhead and risk of releasing new code to individual components nested deep within the machine? <span class="anchor" id="line-58"></span><span class="anchor" id="line-59"></span><span class="anchor" id="line-60"></span><p class="line867">
<h2 id="Enterprise_101_.28Martin_P._Hellwig.29">Enterprise 101 (Martin P. Hellwig)</h2>
<span class="anchor" id="line-61"></span><span class="anchor" id="line-62"></span><p class="line874">Red tape, arbitrary rules, office politics and clueless management, if these issues sum up your working day then you probably work in an enterprise like company. In this talk I'll take on the role of the devil's advocate in the expectation that some of my hypotheses about the underlying principles of those issues will have enough relevance to your situation that it can be applied to improve your working environment or at least understand why it can't be changed. <span class="anchor" id="line-63"></span><span class="anchor" id="line-64"></span><span class="anchor" id="line-65"></span><p class="line867">
<h2 id="It.27s_Not_All_About_Success_.26_Failure_.28Julian_Berman.29">It's Not All About Success &amp; Failure (Julian Berman)</h2>
<span class="anchor" id="line-66"></span><span class="anchor" id="line-67"></span><p class="line874">There's more to software testing than just a green "All tests passed". Python is lucky to have a wealth of testing tools that can provide information on useful things like test timing, the long term behavior of a suite, or the comprehensiveness of a set of tests. <span class="anchor" id="line-68"></span><span class="anchor" id="line-69"></span><p class="line874">We'll investigate some of these tools and explore how they can help diagnose failures and provide insights into existing tests. <span class="anchor" id="line-70"></span><span class="anchor" id="line-71"></span><span class="anchor" id="line-72"></span><p class="line867">
<h2 id="First_steps_with_django_CMS_.28Iacopo_Spalletti.29">First steps with django CMS (Iacopo Spalletti)</h2>
<span class="anchor" id="line-73"></span><span class="anchor" id="line-74"></span><p class="line874">An introduction to the philosophy of Django CMS and how to build flexible websites with it. <span class="anchor" id="line-75"></span>You will learn how to handle content, writing templates and how to integrate your own Django applications with one of the best CMS for Django <span class="anchor" id="line-76"></span><span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></span><p class="line867">
<h2 id="Python_for_Zombies:_15.000_enrolled_in_the_first_Brazilian_MOOC_to_teach_programming_.28Fernando_Masanori_Ashikaga.29">Python for Zombies: 15.000 enrolled in the first Brazilian MOOC to teach programming (Fernando Masanori Ashikaga)</h2>
<span class="anchor" id="line-79"></span><span class="anchor" id="line-80"></span><p class="line862">Python for Zombies is the first MOOC (Massive Open Online Course) to teach programming in portuguese. Our first edition had 15.000 "zombies". This course is different from traditional MOOCs (Edx, Coursera, etc). First is an initiative of the Brazilian Python community. Besides the difference of language, it is very "casual", as I have little time, I recorded most of the videos on my trips between meetings, conferences or at mealtimes. This MOOC is "brazilian", in a non traditional academic way. The size of the videos is far lower than the average traditional courses too. I will show you the most funny codes that I used in MOOC classes to teach programming: hacking basic modules and classes to obtain the "Answer to the Ultimate Question of Life, the Universe, and Everything". All material is Creative Commons Share Alike. The MOOC is based in my experience to teach programming in past six years at FATEC, a public university in Brazil, with decreasing rates of failure in the introduction to programming discipline. We have 100% class in labs, Coding Dojos to training and tests in exercises. Slides: <a class="http" href="http://bit.ly/python-for-zombies">http://bit.ly/python-for-zombies</a> <span class="anchor" id="line-81"></span><span class="anchor" id="line-82"></span><span class="anchor" id="line-83"></span><p class="line867">
<h2 id="Farewell_.26_Welcome_Home:_Python_in_Two_Genders_.28Naomi_Ceder.29">Farewell &amp; Welcome Home: Python in Two Genders (Naomi Ceder)</h2>
<span class="anchor" id="line-84"></span><span class="anchor" id="line-85"></span><p class="line874">After half a lifetime "undercover as a man" I embraced my identity as a transgender woman and openly transitioned from male to female while staying involved in the Python community. This talk discusses that transition and how I found my new life in Python as a woman different from my former life as a man and the lessons about diversity I have learned. <span class="anchor" id="line-86"></span><span class="anchor" id="line-87"></span><p class="line874">This talk will include a brief discussion of what being transgender means, my experiences as I came to terms with it, and the losses and gains transition entailed. I will discuss my decision transition openly in Python community and how it was received. <span class="anchor" id="line-88"></span><span class="anchor" id="line-89"></span><p class="line874">While my transition has been exceptionally successful, I now inhabit a surprisingly different world. As a part of at least 3 groups that are minorities in the Python world I now have a very different view of a community I thought I knew. In addition to the many positives the Python community has offered me on my journey, I will discuss the experiences that have made me understand what it means to marginalized and that privilege is very much alive and well in the Python world. <span class="anchor" id="line-90"></span><span class="anchor" id="line-91"></span><span class="anchor" id="line-92"></span><span class="anchor" id="line-93"></span><p class="line867">
<h2 id="Dr._Jython_or:_How_I_Learned_to_Stop_Worrying_and_Love_the_JVM_.28Naomi_Ceder.29">Dr. Jython or: How I Learned to Stop Worrying and Love the JVM (Naomi Ceder)</h2>
<span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></span><p class="line874">Jython has many admirable attributes - running on a Java JVM, it doesn't have or need a GIL, in spite of not getting the love it deserves it works amazingly well, and it can even be used to embed a Python interpreter in Java code. <span class="anchor" id="line-96"></span><span class="anchor" id="line-97"></span><p class="line874">But even more important from an enterprise point of view is that Jython can use both pure Python and Java libraries side by side, and you still get to write your code in Python. <span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span><p class="line874">This talk is quick account of two similar occasions where Java libraries were the best choice for connecting to an ERP system, and Jython made it possible to write the applications in Python instead of Java. <span class="anchor" id="line-100"></span><span class="anchor" id="line-101"></span><p class="line874">There will be a quick rundown of the issues one encounters in using Jython for a use case like this, with some sample code showing both Java and Python using the same libraries. <span class="anchor" id="line-102"></span><span class="anchor" id="line-103"></span><p class="line874">Particular Issues covered will be: <span class="anchor" id="line-104"></span><span class="anchor" id="line-105"></span><ul><li>Care and feeding of the JVM <span class="anchor" id="line-106"></span></li><li>Using the Jython shell to expore Java libraries <span class="anchor" id="line-107"></span></li><li>Translating Java to Jython - tips and caveats <span class="anchor" id="line-108"></span></li><li>Which Jython? <span class="anchor" id="line-109"></span><span class="anchor" id="line-110"></span><span class="anchor" id="line-111"></span><span class="anchor" id="line-112"></span></li></ul><p class="line867">
<h2 id="Building_Great_APIs_in_Python_.28Paul_Hallett.29">Building Great APIs in Python (Paul Hallett)</h2>
<span class="anchor" id="line-113"></span><span class="anchor" id="line-114"></span><p class="line874">Applications are increasingly reliant on third party web APIs that provide complex services through a simple web interface. As such, it has never been more important understand how to build APIs with our favourite tools. T <span class="anchor" id="line-115"></span>his talk covers the API development ecosystem available to Python, the best practices for building APIs, and a short demonstration of how easy it is to add an API to an existing Python app. <span class="anchor" id="line-116"></span><span class="anchor" id="line-117"></span><span class="anchor" id="line-118"></span><p class="line867">
<h2 id="Self-Contained_Deployment_with_Docker_and_Packer_.28Rach_Belaid.29">Self-Contained Deployment with Docker and Packer (Rach Belaid)</h2>
<span class="anchor" id="line-119"></span><span class="anchor" id="line-120"></span><p class="line874">Deploying complex applications can be hard and rolling back is even harder. Ideally we would like to have the deployment self contained and be able to throw server resources to implement the deployment in an immutable way, but in practice this is difficult and takes lot of time to put in place. This is where a tool like Packer / Docker can help you to reach a self-contained deployment workflow in a much easier way. <span class="anchor" id="line-121"></span>I will guide you through how to easily get started with immutable deployment and doing deployment (or rollback) of a self-contained application. <span class="anchor" id="line-122"></span><span class="anchor" id="line-123"></span><span class="anchor" id="line-124"></span><p class="line867">
<h2 id="you.2BIBk-re_doing_it_wrong:_the_lack_of_reproducibility_in_statistical_science.2C_and_how_to_fix_it_.28Mike_McKerns.29">you’re doing it wrong: the lack of reproducibility in statistical science, and how to fix it (Mike McKerns)</h2>
<span class="anchor" id="line-125"></span><span class="anchor" id="line-126"></span><p class="line874">A recent mathematical proof by Owhadi et al [1,2] details how many of today's common statistical methods are inherently unreliable. For example, Bayesian inference is only guaranteed to be correct when the selected prior is exact -- otherwise, the predictions are not guaranteed to be any more likely true than a random guess. Common tools in statistical science such as Bayesian inference, Monte Carlo, and Machine Learning impose strong implicit assumptions on a problem set in order to yield a solution. These methods do not provide a means for testing the assumptions the methods themselves require. For example, with Bayesian inference one must select a prior, where selecting a prior essentially turns the past into an explicit predictor of future events. Monte Carlo can never rigorously predict bounds on risk, and falls victim to the curse of dimensionality. <span class="anchor" id="line-127"></span><span class="anchor" id="line-128"></span><p class="line874">We have developed a comprehensive mathematical framework (OUQ) [3,4] capable of utilizing all available information to rigorously predict the impact of high-impact rare events, where our predictors are multiply-nested global optimizations over all possible valid scenarios. Such optimizations are high-dimensional, highly-constrained, non-convex, and generally impossible to solve with current optimization technology; however, by addressing optimization constraints as quantum operators on a probability distribution, our software (called 'mystic') [5,6] converts highly-nonlinear statistical calculations to those that are nearly embarrassingly parallel. By utilizing abstractions on programming models and global distributed caching of data and results, we can scale up from desktop calculations to petascale and larger with little burden on the programmer. <span class="anchor" id="line-129"></span><span class="anchor" id="line-130"></span><p class="line874">Within the context of this framework, assumptions inherent to common statistical science can be tested and validated, and models can be rigorously tested and improved. Results obtained are rigorous and optimal with respect to the information provided, and should enable great strides in reproducibility in statistical science. This framework has been used in calculations of materials failure under hypervelocity impact, elasto-plastic failure in structures under seismic ground acceleration, and the design of the next generation of large-scale heterogeneous compute clusters. Tools are included for rigorously constraining design space, constructing standard and statistical constraints, leveraging discrete and symbolic math, and quantifying uncertainties and risk. <span class="anchor" id="line-131"></span><span class="anchor" id="line-132"></span><p class="line874">This talk will lightly cover Owhadi's proof in pictorial form, however will primarily focus on the implementation of Owhadi's new rigorous statistical framework in the mystic software, and discuss the outlook and impact on scientific reproducibility in statistical science. <span class="anchor" id="line-133"></span><span class="anchor" id="line-134"></span><ol type="1"><li><p class="line891"><a class="http" href="http://arxiv.org/abs/1308.6306">http://arxiv.org/abs/1308.6306</a> <span class="anchor" id="line-135"></span></li><li><p class="line891"><a class="http" href="http://arxiv.org/abs/1304.6772">http://arxiv.org/abs/1304.6772</a> <span class="anchor" id="line-136"></span></li><li><p class="line891"><a class="http" href="http://arxiv.org/abs/1009.0679">http://arxiv.org/abs/1009.0679</a> <span class="anchor" id="line-137"></span></li><li><p class="line891"><a class="http" href="http://arxiv.org/abs/1202.1928">http://arxiv.org/abs/1202.1928</a> <span class="anchor" id="line-138"></span></li><li><p class="line891"><a class="http" href="http://pythonhosted.org/mystic">http://pythonhosted.org/mystic</a> <span class="anchor" id="line-139"></span></li><li><p class="line891"><a class="https" href="https://github.com/uqfoundation">https://github.com/uqfoundation</a> <span class="anchor" id="line-140"></span><span class="anchor" id="line-141"></span><span class="anchor" id="line-142"></span></li></ol><p class="line867">
<h2 id="the_failure_of_python_object_serialization:_why_HPC_in_python_is_broken.2C_and_how_to_fix_it_.28Mike_McKerns.29">the failure of python object serialization: why HPC in python is broken, and how to fix it (Mike McKerns)</h2>
<span class="anchor" id="line-143"></span><span class="anchor" id="line-144"></span><p class="line874">Parallel and asynchronous computing in python is crippled by pickle's poor object serialization. However, a more robust serialization package would drastically improve the situation. To leverage the cores found in modern processors we need to communicate functions between different processes -- and that means callables must be serialized without pickle barfing. Similarly, parallel and distributed computing with MPI, GPUs, sockets, and across other process boundaries all need serialized functions (or other callables). So why is pickling in python so broken? Python's ability to leverage these awesome communication technologies is limited by python's own inability to be a fully serializable language. In actuality, serialization in python is quite limited, and for really no good reason. <span class="anchor" id="line-145"></span><span class="anchor" id="line-146"></span><p class="line874">Many raise security concerns for full object serialization, however it can be argued that it is not pickle's responsibility to do proper authentication. In fact, one could apply rather insecure serialization of all objects the objects were all sent across RSA-encrypted ssh-tunnels, for example. <span class="anchor" id="line-147"></span><span class="anchor" id="line-148"></span><p class="line874">Dill is a serialization package that strives to serialize all of python. We have forked python's multiprocessing to use dill. Dill can also be leveraged by mpi4py, ipython, and other parallel or distributed python packages. Dill serves as the backbone for a distributed parallel computing framework that is being used to design the next generation of large-scale heterogeneous computing platforms, and has been leveraged in large-scale calculations of risk and uncertainty. Dill has been used to enable state persistence and recovery, global caching, and the coordination of distributed parallel calculations across a network of the world's largest computers. <span class="anchor" id="line-149"></span><span class="anchor" id="line-150"></span><ul><li><p class="line891"><a class="http" href="http://pythonhosted.org/dill">http://pythonhosted.org/dill</a> <span class="anchor" id="line-151"></span></li><li><p class="line891"><a class="https" href="https://github.com/uqfoundation">https://github.com/uqfoundation</a> <span class="anchor" id="line-152"></span></li><li><p class="line891"><a class="http" href="http://matthewrocklin.com/blog/work/2013/12/05/Parallelism-and-Serialization/">http://matthewrocklin.com/blog/work/2013/12/05/Parallelism-and-Serialization/</a> <span class="anchor" id="line-153"></span></li><li><p class="line891"><a class="http" href="http://stackoverflow.com/questions/19984152/what-can-multiprocessing-and-dill-do-together?rq=1">http://stackoverflow.com/questions/19984152/what-can-multiprocessing-and-dill-do-together?rq=1</a> <span class="anchor" id="line-154"></span></li><li><p class="line891"><a class="https" href="https://groups.google.com/forum/#!topic/mpi4py/1fd4FwdgpWY">https://groups.google.com/forum/#!topic/mpi4py/1fd4FwdgpWY</a> <span class="anchor" id="line-155"></span></li><li><p class="line891"><a class="http" href="http://nbviewer.ipython.org/gist/anonymous/5241793">http://nbviewer.ipython.org/gist/anonymous/5241793</a> <span class="anchor" id="line-156"></span><span class="anchor" id="line-157"></span><span class="anchor" id="line-158"></span></li></ul><p class="line867">
<h2 id="Dockerize_your_Python_apps.21_.28James_Pacileo.29">Dockerize your Python apps! (James Pacileo)</h2>
<span class="anchor" id="line-159"></span><span class="anchor" id="line-160"></span><p class="line874">Docker has emerged to be one of the latest and greatest innovations in the web development community. But what is Docker? And most importantly how can a Python Web Developer take advantage of it? <span class="anchor" id="line-161"></span><span class="anchor" id="line-162"></span><span class="anchor" id="line-163"></span><p class="line867">
<h2 id="Data_Matching_and_Big_Data_Deduping_in_Python_.28Nikit_Saraf.29">Data Matching and Big Data Deduping in Python (Nikit Saraf)</h2>
<span class="anchor" id="line-164"></span><span class="anchor" id="line-165"></span><p class="line874">Till now, using real-world-data is difficult. Apart from encoding and missing value, multiple records which mean the same thing is one of the biggest headache. This talk will demonstrate two tools “Dedupe” and “Dedoop” to handle task of Data Matching and Deduplication in Python at the scale of millions and billions of records respectively. <span class="anchor" id="line-166"></span><span class="anchor" id="line-167"></span><p class="line874">One of the widely postulated theory is “Most of the time spent working with real world data is not spent on the analysis, but in preparing the data”, I believe any Data guy would agree. There are numerous problems, which crop up while cleansing any dataset, and the prominent and recurring problem is duplicates (It is duplicate, so it has to be recurring). The problem of matching data and information from multiple databases or sources is also a prominent problem encountered in large decision support applications in large commercial and government organizations. This problems has many many different names deduplication, record linkage, entity resolution, coreference, reference reconciliation, record alignment. <span class="anchor" id="line-168"></span><span class="anchor" id="line-169"></span><p class="line874">Accurate, Scalable and Fast entity resolution has huge practical implications in a wide variety of commercial, scientific and civic domains. Despite the long history of work on Data Matching, there is still a surprising diversity of approaches, and lack of guiding theory. Meanwhile, in the age of big data, the need for high quality entity resolution is growing, as we are inundated with more and more data, all of which needs to be integrated, aligned and matched, before further utility can be extracted. <span class="anchor" id="line-170"></span><span class="anchor" id="line-171"></span><p class="line862">This talk will present the key ideas implemented behind “Dedupe” an open source python library that quickly deduplicates and matches records at the scale of millions of records on the laptop. The aim is to show how “Dedupe” achieves speed by “Blocking” records, to save from O(n<sup>2</sup>) comparisons, achieves accuracy, by using better string comparators and clustering algorithms suited for this problem etc. The attendees would also gain understanding of the tradeoffs between the speed and accuracy. <span class="anchor" id="line-172"></span><span class="anchor" id="line-173"></span><p class="line862">But what about a billion records ? In such a scenario, it is imminent to parallelise the whole process, to achieve greater speed. So, enter <a class="nonexistent" href="/MapReduce">MapReduce</a> based Entity Resolution. Attendees would also walk away with the understanding of how the Deduplication procedure may be parallelised by distributing the task independently to the map and reduce stages. There would also be a demo of the same using “Dedoop” an open source Efficient Deduplication tool for Hadoop on Amazon EC2 Machines <span class="anchor" id="line-174"></span><span class="anchor" id="line-175"></span><span class="anchor" id="line-176"></span><p class="line867">
<h2 id="The_Twelve-Factor_App_.28Kristian_Glass.29">The Twelve-Factor App (Kristian Glass)</h2>
<span class="anchor" id="line-177"></span><span class="anchor" id="line-178"></span><p class="line874">Are you building web services? Do you have passwords and keys embedded in your code, readable by everyone who works on the project? Are you tied to your production environment, unable to move, needing painful hacks for local testing? Is every app a special snowflake to configure and run? <span class="anchor" id="line-179"></span><span class="anchor" id="line-180"></span><p class="line874">The Twelve-Factor App is a language and framework agnostic set of principles for building easily configurable, easily deployable, well-structured services. Follow these principles; they’re low-effort and low-maintenance, and will make your life easier, whether you’re deploying or writing code. <span class="anchor" id="line-181"></span><span class="anchor" id="line-182"></span><p class="line874">If you work on any kind of web service, you should attend this talk. <span class="anchor" id="line-183"></span><span class="anchor" id="line-184"></span><span class="anchor" id="line-185"></span><p class="line867">
<h2 id="An_HTTP_request.27s_journey_through_a_platform-as-a-service_.28Giles_Thomas.29">An HTTP request's journey through a platform-as-a-service (Giles Thomas)</h2>
<span class="anchor" id="line-186"></span><span class="anchor" id="line-187"></span><p class="line867">PythonAnywhere hosts tens of thousands of Python web applications, with traffic ranging from a couple of hits a week to dozens of hits a second. Hosting this many sites reliably at a reasonable cost requires a well-designed infrastructure, but it uses the same standard components as many other Python-based websites. We've built our stack on GNU/Linux, nginx, !uWSGI, Redis, and Lua -- all managed with Python. In this talk we'll give a high-level overview of how it all works, by tracing how a request goes from the browser to the Python application and its response goes back again. As well as showing how a fairly large deployment works, we'll give tips on scaling and share a few insights that may help people running smaller sites discover how they can speed things up. <span class="anchor" id="line-188"></span><span class="anchor" id="line-189"></span><span class="anchor" id="line-190"></span><p class="line867">
<h2 id="Exploring_unit-testing_with_unittest.2C_nose_and_pytest_.28Tom_Viner.29">Exploring unit-testing with unittest, nose and pytest (Tom Viner)</h2>
<span class="anchor" id="line-191"></span><span class="anchor" id="line-192"></span><p class="line874">We'll start by briefly introducing our three test frameworks: <span class="anchor" id="line-193"></span><ul><li><p class="line862">unittest (sometimes called PyUnit) and it's !xUnit origins <span class="anchor" id="line-194"></span></li><li>nose: "extends unittest to make testing easier" <span class="anchor" id="line-195"></span></li><li>pytest: more pythonic tests? <span class="anchor" id="line-196"></span><span class="anchor" id="line-197"></span></li></ul><p class="line874">We'll look at several features of unit-testing and how they're covered by our frameworks. Covering: <span class="anchor" id="line-198"></span><ul><li>running your tests from the command line <span class="anchor" id="line-199"></span></li><li>a minimal test: with class or function? <span class="anchor" id="line-200"></span></li><li>setting up the environment for a test, and clearing up afterwards <span class="anchor" id="line-201"></span></li><li>happy path: asserting the expected truth <span class="anchor" id="line-202"></span></li><li>provoking failure: ensuring exceptions raised <span class="anchor" id="line-203"></span><span class="anchor" id="line-204"></span></li></ul><p class="line874">In the remaining time we'll move on to some more advanced techniques: <span class="anchor" id="line-205"></span><ul><li>parameterised test generators <span class="anchor" id="line-206"></span></li><li>skipping and xfails <span class="anchor" id="line-207"></span></li><li>next level: marking your params <span class="anchor" id="line-208"></span><span class="anchor" id="line-209"></span><span class="anchor" id="line-210"></span></li></ul><p class="line867">
<h2 id="Try_A_Little_Randomness_.28Larry_Hastings.29">Try A Little Randomness (Larry Hastings)</h2>
<span class="anchor" id="line-211"></span><span class="anchor" id="line-212"></span><p class="line874">This talk is all about random numbers--what are they? What different kinds are there? What are they useful for? And why are computers really bad at them? Come learn all about random numbers, both the good and the bad. <span class="anchor" id="line-213"></span><span class="anchor" id="line-214"></span><span class="anchor" id="line-215"></span><p class="line867">
<h2 id="Use_of_Openstack_CI_for_your_own_projects_.28Yolanda_Robla_Mota.29">Use of Openstack CI for your own projects (Yolanda Robla Mota)</h2>
<span class="anchor" id="line-216"></span><span class="anchor" id="line-217"></span><p class="line874">Session will cover the basics about the CI process we follow at Openstack. It will dig on how it can be reused to setup a great CI system for own projects <span class="anchor" id="line-218"></span>I will show the basics of deployment and configuration, highlight the efforts we are doing to make the CI system totally independent from Openstack requirements, and explain how to contribute to that project to people interested on it. <span class="anchor" id="line-219"></span><span class="anchor" id="line-220"></span><span class="anchor" id="line-221"></span><p class="line867">
<h2 id="Python_Refactoring_with_Rope_and_Traad_.28Austin_Bingham.29">Python Refactoring with Rope and Traad (Austin Bingham)</h2>
<span class="anchor" id="line-222"></span><span class="anchor" id="line-223"></span><p class="line874">Python is a modern, dynamic language which is growing in popularity, but tool support for it is sometime lacking or only available in specific environments. For refactoring and other common IDE functions, however, the powerful open-source rope library provides a set of tools which are designed to be integrated into almost any programming environment. Rope supports most common refactorings, such as renaming and method extraction, but also more Python-specific refactorings, such as import organization. Rope’s underlying code analysis engine also allows it to do things like locating method definitions and generating auto-completion suggestions. <span class="anchor" id="line-224"></span><span class="anchor" id="line-225"></span><p class="line874">While rope is designed to be used from many environments, it’s not always easy or ideal to integrate rope directly into other programs. Traad (Norwegian for “thread”) is another open-source project that addresses this problem by wrapping rope into a simple client-server model so that client programs (IDEs, editors, etc.) can perform refactorings without needing to embed rope directly. This simplifies dependencies, makes clients more robust in the face of errors, eases traad client development, and even allows clients to do things like switch between Python 2 and 3 refactoring in the same session. <span class="anchor" id="line-226"></span><span class="anchor" id="line-227"></span><p class="line874">In this session we’ll look at how rope operates, and we’ll see how traad wraps it to provide an easier integration interface. The audience will get enough information to start using rope themselves, either directly or via traad, and they’ll see how to use traad for integrating rope into their own environments. More generally, we’ll look at why client-server refactoring tools might be preferable to the more standard approach of direct embedding. <span class="anchor" id="line-228"></span><span class="anchor" id="line-229"></span><span class="anchor" id="line-230"></span><span class="anchor" id="line-231"></span><p class="line867">
<h2 id="Advanced_py.test_fixtures_.28Floris_Bruynooghe.29">Advanced py.test fixtures (Floris Bruynooghe)</h2>
<span class="anchor" id="line-232"></span><span class="anchor" id="line-233"></span><p class="line874">One unique and powerful feature of py.test is the dependency injection of test fixtures using function arguments. This talk aims to walk through py.test's fixture mechanism gradually introducing more complex uses and features. This should lead to an understanding of the power of the fixture system and how to build complex but easily-managed test suites using them. <span class="anchor" id="line-234"></span><span class="anchor" id="line-235"></span><span class="anchor" id="line-236"></span><p class="line867">
<h2 id="Ganga:_an_interface_to_the_LHC_computing_grid_.28Matt_Williams.29">Ganga: an interface to the LHC computing grid (Matt Williams)</h2>
<span class="anchor" id="line-237"></span><span class="anchor" id="line-238"></span><p class="line874">Ganga is a tool, designed and used by the large particle physics experiments at CERN. Written in pure Python, it delivers a clean, usable interface to allow thousands of physicists to interact with the huge computing resources available to them. <span class="anchor" id="line-239"></span><span class="anchor" id="line-240"></span><span class="anchor" id="line-241"></span><p class="line867">
<h2 id="PyPy_and_its_ecosystem_.28Ronan_Lamy.29">PyPy and its ecosystem (Ronan Lamy)</h2>
<span class="anchor" id="line-242"></span><span class="anchor" id="line-243"></span><span class="anchor" id="line-244"></span><p class="line867">PyPy is a fast, compliant alternative implementation of the Python language (2.7.6 and 3.2.5). I will give an overview of the current status of and the on-going development efforts on all the pieces that combine to make it a compelling Python platform. In particular, I will mention the RPython toolchain, CFFI, the JIT, garbage collection, the numpy port, Python 3 support, software transactional memory. <span class="anchor" id="line-245"></span><span class="anchor" id="line-246"></span><span class="anchor" id="line-247"></span><p class="line867">
<h2 id="The_IPython_Notebook_is_for_everyone_.28Gautier_Hayoun.29">The IPython Notebook is for everyone (Gautier Hayoun)</h2>
<span class="anchor" id="line-248"></span><span class="anchor" id="line-249"></span><p class="line874">!IPython Notebook is a vastly underrated tool in the Python eco-system. <span class="anchor" id="line-250"></span><span class="anchor" id="line-251"></span><p class="line874">In this talk I will show what is !IPython Notebook, examples of what you can do with it and hopefully inspire you to use it for your own problems. <span class="anchor" id="line-252"></span><span class="anchor" id="line-253"></span><p class="line874">This should be interesting even if you build web applications or manage servers. <span class="anchor" id="line-254"></span><span class="anchor" id="line-255"></span><span class="anchor" id="line-256"></span><p class="line867">
<h2 id="Studying_astronomy_at_the_University_of_Warwick_using_Python_.28Simon_Walker.29">Studying astronomy at the University of Warwick using Python (Simon Walker)</h2>
<span class="anchor" id="line-257"></span><span class="anchor" id="line-258"></span><p class="line874">We at the astronomy group at the University of Warwick use Python for a wide range of tasks. From efficient image reduction through numpy array manipulation, high performance analysis by wrapping C++ code, or use of the multiprocessing module, Python is utilised for many applications. <span class="anchor" id="line-259"></span><span class="anchor" id="line-260"></span><p class="line874">The astronomy group studies other worlds, searching for extrasolar planets with new projects such as NGTS, and utilising results from the Kepler project. Also studied are the most distant objects in the universe, where massive explosions are visible from colossal distances. Cold dying stars known as white dwarfs are modelled as systems orbiting and stealing mass from their companion stars. <span class="anchor" id="line-261"></span><span class="anchor" id="line-262"></span><p class="line874">Python enables our understanding at the Warwick astronomy group. In this talk I discuss topics covering the whole scientific process from manipulating raw data and correcting for systematic errors, through analysis incorporating modelling and understanding the results, to visualising the final products ready for publication. <span class="anchor" id="line-263"></span><span class="anchor" id="line-264"></span><span class="anchor" id="line-265"></span><p class="line867">
<h2 id="The_High_Performance_Python_Landscape_.28Ian_Ozsvald.29">The High Performance Python Landscape (Ian Ozsvald)</h2>
<span class="anchor" id="line-266"></span><span class="anchor" id="line-267"></span><p class="line862">A Python programmer has many options to profile and optimize CPU-bound and data-bound systems, common solutions include Cython, numpy and PyPy. Increasingly we have single-core solutions that should take advantage of many cores and clusters. This talk reviews the current state of the art, looking at the compromises and outcomes of the current approaches and reviews upcoming solutions like Numba, Pythran and <a class="nonexistent" href="/PyPy">PyPy</a>’s numpy and STM. Thoughts will be shared on how current hindrances might be improved. <span class="anchor" id="line-268"></span><span class="anchor" id="line-269"></span><span class="anchor" id="line-270"></span><p class="line867">
<h2 id="Learning_Python_in_Africa_Universities_.28Olaniyan_Adewale.29">Learning Python in Africa Universities (Olaniyan Adewale)</h2>
<span class="anchor" id="line-271"></span><span class="anchor" id="line-272"></span><p class="line874">The session will of help to open source communities in the world by spreading the knowledge of open source technologies to Africa. <span class="anchor" id="line-273"></span>It's been so pathetic that Africa has not been contributing to the open source technologies since it's innovation. <span class="anchor" id="line-274"></span>However, this session should be an eye opener to developer in the world that it is high time to take more effort in contributing to Africa Technology through Open Source by adding it to Higher Institution Curriculum. <span class="anchor" id="line-275"></span><span class="anchor" id="line-276"></span><span class="anchor" id="line-277"></span><p class="line867">
<h2 id="Let_your_data_go.2Fgrow.2Fflow_with__Py2Neo_.28Colin_Moore-Hill.29">Let your data go/grow/flow with Py2Neo (Colin Moore-Hill)</h2>
<span class="anchor" id="line-278"></span><span class="anchor" id="line-279"></span><p class="line874">This is a high level introduction to graph Databases and in particular Neo4J and how to use then utilising the py2neo wrapper. <span class="anchor" id="line-280"></span><span class="anchor" id="line-281"></span><p class="line874">This will cover the basis of the data structure and modelling as well as an introduction to the Cypher query language. <span class="anchor" id="line-282"></span><span class="anchor" id="line-283"></span><span class="anchor" id="line-284"></span><p class="line867">
<h2 id="Trouble_at_t.27LeedsDataMill:_Oompah.py_.2BAH4_Big_Data_meets_Big_Brass_.28Nicholas_Tollervey_.26_Simon_Davy.29">Trouble at t'LeedsDataMill: Oompah.py ~ Big Data meets Big Brass (Nicholas Tollervey &amp; Simon Davy)</h2>
<span class="anchor" id="line-285"></span><span class="anchor" id="line-286"></span><p class="line874">We will describe and (maybe) perform via the medium of Brass Band footfall data collected from the city of Leeds. <span class="anchor" id="line-287"></span><span class="anchor" id="line-288"></span><p class="line874">It's likely to be a loud, fun, interesting and musical exposition of big data manipulated with Python. <span class="anchor" id="line-289"></span><span class="anchor" id="line-290"></span><p class="line874">It may involve Tubas. <span class="anchor" id="line-291"></span><span class="anchor" id="line-292"></span><span class="anchor" id="line-293"></span><p class="line867">
<h2 id="Stormy_Webber_-_Tornado_for_everyone_.28Wes_Mason.29">Stormy Webber - Tornado for everyone (Wes Mason)</h2>
<span class="anchor" id="line-294"></span><span class="anchor" id="line-295"></span><p class="line874">An introductory talk to building fast non-blocking async web services with Tornado, especially relevant to Django, Flask, bottle, web.py, Pyramid, Zope, Gevent, Twisted and every other web (or not) dev interested in learning what makes Tornado special for such tasks. <span class="anchor" id="line-296"></span><span class="anchor" id="line-297"></span><p class="line862">Bonus: advanced tips and tricks for migrating from current systems and working with technologies such as WebSockets and Server Sent Events in Tornado. <span class="anchor" id="line-298"></span><span class="anchor" id="line-299"></span><span class="anchor" id="line-300"></span><p class="line867">
<h2 id="Is_that_jumper_made_of_cats.3F_Matching_fashion_products_with_image_similarity._.28Eddie_Bell.29">Is that jumper made of cats? Matching fashion products with image similarity. (Eddie Bell)</h2>
<span class="anchor" id="line-301"></span><span class="anchor" id="line-302"></span><p class="line874">Given two non-identical images, how can we decide when those two images represent the same fashion product? The images can have different backgrounds, models, rotation, lighting and scale. In this talk I will show how we do this at Lyst in python using k-means bag-of-words on BRISK image descriptors. <span class="anchor" id="line-303"></span><span class="anchor" id="line-304"></span><span class="anchor" id="line-305"></span><p class="line867">
<h2 id="Where_am_I.3F_Geospatial_processing_with_Python_.28Ian_Taylor.29">Where am I? Geospatial processing with Python (Ian Taylor)</h2>
<span class="anchor" id="line-306"></span><span class="anchor" id="line-307"></span><p class="line874">Turns out not only is the world not flat, it's not round either! And, everybody measures it differently in their hometown. So converting geo data is hard (= lots of math!) and you can't do it just with sql, sed, awk. You can do it with Perl ... but who wants to do that!!?? <span class="anchor" id="line-308"></span><span class="anchor" id="line-309"></span><p class="line874">Enter Python. Really fast iterative development copes with data 'anomalies' (bugs to you and me). Extensive library support for SHP, WKT, CSV, databases makes data I/O effortless. Well, um, yeah ... easier. ;o) <span class="anchor" id="line-310"></span><span class="anchor" id="line-311"></span><p class="line874">The problem initially looks like text or stream processing: the function machine. You don't need classes for that, right? Hmmm, maybe ... <span class="anchor" id="line-312"></span><span class="anchor" id="line-313"></span><p class="line874">Geospatial processing requires more libraries (shapely in this case). Then more anomalies, math problems, but - hurrah - it works! <span class="anchor" id="line-314"></span><span class="anchor" id="line-315"></span><p class="line874">Mapping (of course) is about a journey, so along the way we'll meet friends and enemies like globals, classes, PEP8, IDEs and a cast of colourful characters! <span class="anchor" id="line-316"></span><span class="anchor" id="line-317"></span><span class="anchor" id="line-318"></span><p class="line867">
<h2 id="How_to_become_an_.21OpenStack_hacker_.28Milap_Bhojak.29">How to become an !OpenStack hacker (Milap Bhojak)</h2>
<span class="anchor" id="line-319"></span><span class="anchor" id="line-320"></span><p class="line862">The goal of OpenStack is to produce a ubiquitous open source cloud computing platform that will meet the needs of public and private cloud providers, regardless of size, by being simple to implement and massively scalable. <span class="anchor" id="line-321"></span><span class="anchor" id="line-322"></span><p class="line862">This talk will look at some projects that are running OpenStack, and will look at how to contribute to the development of OpenStack. <span class="anchor" id="line-323"></span><span class="anchor" id="line-324"></span><span class="anchor" id="line-325"></span><p class="line867">
<h2 id="Pioneering_the_Future_of_Computing_Education_.28Carrie_Anne_Philbin_.26_Ben_Nuttall.29">Pioneering the Future of Computing Education (Carrie Anne Philbin &amp; Ben Nuttall)</h2>
<span class="anchor" id="line-326"></span><span class="anchor" id="line-327"></span><p class="line874">Carrie Anne Philbin and Ben Nuttall of the Raspberry Pi Foundation talk about the foundations education mission, how raspberry pi and python is being used in the classroom, and most importantly how you can get involved. <span class="anchor" id="line-328"></span><span class="anchor" id="line-329"></span><span class="anchor" id="line-330"></span><p class="line867">
<h2 id="Functional_Programming_and_Python_.28Pete_Graham.29">Functional Programming and Python (Pete Graham)</h2>
<span class="anchor" id="line-331"></span><span class="anchor" id="line-332"></span><p class="line874">What is functional programming, and when would you want to use it? <span class="anchor" id="line-333"></span><span class="anchor" id="line-334"></span><p class="line874">Can you use Python to write programs in a functional style? Is this a good idea? What are the limitations, and when should you use an alternative functional language such as Haskell (Scala, Closure, Erlang, Lisp, etc). <span class="anchor" id="line-335"></span><span class="anchor" id="line-336"></span><span class="anchor" id="line-337"></span><p class="line867">
<h2 id="When_performance_matters..._.28Marc-Andre_Lemburg.29">When performance matters... (Marc-Andre Lemburg)</h2>
<span class="anchor" id="line-338"></span><span class="anchor" id="line-339"></span><p class="line862">Python applications sometimes need all the performance they can get. Think of e.g. web, REST or RPC servers. There are several ways to address this: scale up by using more processes, use Cython, use <a class="nonexistent" href="/PyPy">PyPy</a>, rewrite parts in C, etc. <span class="anchor" id="line-340"></span><span class="anchor" id="line-341"></span><p class="line874">However, there are also quite a few things that can be done directly in Python. This talk goes through a number of examples and show cases how sticking to a few idioms can easily enhance the performance of your existing application without having to revert to more complex optimization strategies. <span class="anchor" id="line-342"></span><span class="anchor" id="line-343"></span><span class="anchor" id="line-344"></span><p class="line867">
<h2 id="Python_Web_Installers_.28Marc-Andre_Lemburg.29">Python Web Installers (Marc-Andre Lemburg)</h2>
<span class="anchor" id="line-345"></span><span class="anchor" id="line-346"></span><p class="line874">Installing Python packages is usually done with one of the available package installation systems, e.g. pip, easy_install, zc.buildout, manual "python setup.py install". <span class="anchor" id="line-347"></span><span class="anchor" id="line-348"></span><p class="line874">These systems work fine as long as you have Python-only packages. For packages that contain binaries, such as Python C extensions or other platform dependent code, the situation is a lot less bright. <span class="anchor" id="line-349"></span><span class="anchor" id="line-350"></span><p class="line874">In the talk I will present a new web installer system that we're currently developing to overcome these limitations. The system uses the dynamic Python installation interface that all installers support ("python setup.py install") with a web installer which automatically selects, downloads, verifies and installs the binary package for your platform. <span class="anchor" id="line-351"></span><span class="anchor" id="line-352"></span><span class="anchor" id="line-353"></span><p class="line867">
<h2 id="Dependency_Injection_in_Nameko_.28Matt_Bennett.29">Dependency Injection in Nameko (Matt Bennett)</h2>
<span class="anchor" id="line-354"></span><span class="anchor" id="line-355"></span><p class="line874">Nameko is a python framework for building service-oriented software, developed by onefinestay. This talk will explain how nameko uses Dependency Injection, why it's an important paradigm and how it simplifies writing services and testing them. <span class="anchor" id="line-356"></span><span class="anchor" id="line-357"></span><p class="line862">Nameko is on GitHub at <a class="https" href="https://github.com/onefinestay/nameko">https://github.com/onefinestay/nameko</a> <span class="anchor" id="line-358"></span><span class="anchor" id="line-359"></span><span class="anchor" id="line-360"></span><p class="line867">
<h2 id="The_Minecraft_Challenge_.28Katie_Bell.29">The Minecraft Challenge (Katie Bell)</h2>
<span class="anchor" id="line-361"></span><span class="anchor" id="line-362"></span><p class="line874">There's already a great Python scripting interface for Minecraft, allowing you limitless creativity with the ability to read and place blocks anywhere. Unfortunately with limitless power the challenge of Minecraft disappears, because building a castle is somehow more satisfying when you have to mine and craft every block. If you’ve played Minecraft you’ve no doubt found yourself building or mining mindlessly in a pattern and wished you could simply script away the boring bits, but still keep the fun and challenge of the game. <span class="anchor" id="line-363"></span><span class="anchor" id="line-364"></span><p class="line874">In this presentation I'll be demonstrating a Python interface for writing Minecraft AIs, giving you the programming equivalent of Survivor mode. Your helper robots have some advantages over humans and can mine and build things for you faster, but ultimately this doesn't feel like cheating because it can’t do anything you can’t do. This also works well in multiplayer on an open server where players and bots can interact but no single player can destroy the world with a small software bug. <span class="anchor" id="line-365"></span><span class="anchor" id="line-366"></span><p class="line874">Writing an AI for the Minecraft world poses an interesting challenge for both young and experienced programmers, it’s a pure example of how we can use programming to avoid boring and repetitive tasks in the real world. It provides new programmers with immediate goals and for students exploring more advanced computer science concepts it leads well into real world robot control and game AI algorithms. <span class="anchor" id="line-367"></span><span class="anchor" id="line-368"></span><p class="line874">In this talk, I'll go through the Minecraft server and client implementation details, the challenges of multiplayer programming and the structures built into the interface to make coding AIs easier such as built-in state machines and the ability for the in-game player to give commands. <span class="anchor" id="line-369"></span><span class="anchor" id="line-370"></span><p class="line874">As a bonus, we’ll see how it plays out in the real world, what happens when we give the interface to a group of young programmers on a shared server, and how we can set up competitions and more specific AI-coding challenges. <span class="anchor" id="line-371"></span><span class="anchor" id="line-372"></span><span class="anchor" id="line-373"></span><p class="line867">
<h2 id="The_knights_who_say_Neo_-_storing_classes_in_the_graph_.28David_Szotten.29">The knights who say Neo - storing classes in the graph (David Szotten)</h2>
<span class="anchor" id="line-374"></span><span class="anchor" id="line-375"></span><p class="line874">Ever wondered what happens if you store your Python classes directly in your database? (And no, we’re not talking about pickling) <span class="anchor" id="line-376"></span><span class="anchor" id="line-377"></span><p class="line874">When faced with the problem of modelling a large, complex type hierarchy of "stuff one might find in a seven bedroom home", we went down the somewhat unusual route of storing not only the objects themselves, but also their types in a graph database. <span class="anchor" id="line-378"></span><span class="anchor" id="line-379"></span><p class="line874">In this talk we will take a look under the hood of Kaiso, the open source framework we built to do this, and how we use some metaclass magic to to make it all happen. <span class="anchor" id="line-380"></span><span class="anchor" id="line-381"></span><p class="line874">Unlike conventional ORMs, we needed the schemas to be as dynamic as the records, and so decided to keep them side by side in our neo4j db. Using the Python type system as our data model means we get features like hierarchy consistency checks and other type calculations for free. <span class="anchor" id="line-382"></span><span class="anchor" id="line-383"></span><p class="line874">While this might not be the solution to a particularly common problem, come along to see how we’ve used some of the more dynamic aspects of the Python language for fun and profit! <span class="anchor" id="line-384"></span><span class="anchor" id="line-385"></span><span class="anchor" id="line-386"></span><p class="line867">
<h2 id="Rapid_prototyping_to_industrial_strength_:_Python_in_Government_.28Michal_Olszewski.2C_Jim_Gumbley_.26_Max_Edwards.29">Rapid prototyping to industrial strength : Python in Government (Michal Olszewski, Jim Gumbley &amp; Max Edwards)</h2>
<span class="anchor" id="line-387"></span><span class="anchor" id="line-388"></span><p class="line874">One team goes on a journey to prove that iterative lean approach can deliver results and change how organizations work. By deliberately choosing Python and a micro-framework approach our team is building an online public service which will help UK citizens to claim their redundancy payments. This is the story of how the team approached problems and devised solutions while staying true to Python philosophy. <span class="anchor" id="line-389"></span><span class="anchor" id="line-390"></span><span class="anchor" id="line-391"></span><p class="line867">
<h2 id="Selenium_Simple_Test_-_An_experience_report._.28Peter_Russell.29">Selenium Simple Test - An experience report. (Peter Russell)</h2>
<span class="anchor" id="line-392"></span><span class="anchor" id="line-393"></span><p class="line862">Selenium Simple Test (SST, <a class="http" href="http://testutils.org/sst/">http://testutils.org/sst/</a> ) is an open source Python framework for writing automated tests for web applications. SST tests use Selenium Webdriver to drive real web browsers around the system under test. <span class="anchor" id="line-394"></span><span class="anchor" id="line-395"></span><p class="line874">The Test People recently used SST for the first time in a large project for a client. In this talk I'll cover: <span class="anchor" id="line-396"></span><span class="anchor" id="line-397"></span><p class="line874">* How SST compares with other approaches to writing automated functional tests for webapps. <span class="anchor" id="line-398"></span>* Why we thought SST was an appropriate choice for this project <span class="anchor" id="line-399"></span>* What changes we needed to make to the framework to support our needs <span class="anchor" id="line-400"></span>* What changes I'd like to see in the future <span class="anchor" id="line-401"></span>* Whether I'd recommend SST for future projects. <span class="anchor" id="line-402"></span><span class="anchor" id="line-403"></span><span class="anchor" id="line-404"></span><p class="line867">
<h2 id="Simulating_quantum_systems_in_Python_.28Katie_Barr.29">Simulating quantum systems in Python (Katie Barr)</h2>
<span class="anchor" id="line-405"></span><span class="anchor" id="line-406"></span><p class="line874">Quantum theory is famously difficult and paradoxical, but exploring quantum systems numerically in high level languages such as Python is surprisingly easy. In this talk I will describe, step by step, how to simulate a particular system, the discrete time quantum walk. This is the quantum analogue of a classical random walk, and has some interesting properties which I will briefly describe. The simulation can be performed with just 15 lines of Python code, using no external modules. I will then indicate how simple variations on this simulation are used to perform current research into the discrete time quantum walk, as the example I give is a variation of Grover's algorithm, which is asymptotically the fastest possible quantum search algorithm. By the end of the talk listeners should be able to go away and perform their own simulations of this system. I will also indicate further motivations for using Python to investigate quantum mechanical systems, in particular using numpy support for linear algebra, which is one of the types of mathematics used by quantum theorists. There will be no mention of the trickier aspects of quantum systems, but, for those interested, I will provide materials describing how to measure entanglement and explore the effects of measurement in the quantum walk I have presented. I do not expect listeners to have any background in mathematics and physics, and will keep technical discussion which would require such background to a minimum. <span class="anchor" id="line-407"></span><span class="anchor" id="line-408"></span><span class="anchor" id="line-409"></span><p class="line867">
<h2 id="Web_based_application_automation_at_the_protocol_level_.28Katie_Barr.29">Web based application automation at the protocol level (Katie Barr)</h2>
<span class="anchor" id="line-410"></span><span class="anchor" id="line-411"></span><p class="line874">Python has support for both capturing data concerning networking activity, using browsermod proxy, and generating it using the requests module. The requests module has sophisticated support for generating HTTP requests and analysing their responses. This enables us to get a good understanding of what browsers do for us behind the scenes. With this understanding, we can automate browsing sessions, which enables testing at the protocol level. In cases where testing via the UI is difficult, a protocol based approach is more suitable. In this talk I will describe a command line tool developed in Python, which, for a simple HTTP archive (a snapshot of the session), generates a Python script which will replicate the requests made in the session. The tool uses the jinja2 templating language for the code generation, and creates an object which inherits from the requests 'Session' object to perform the requests, giving us the full power of the requests module. <span class="anchor" id="line-412"></span><span class="anchor" id="line-413"></span><span class="anchor" id="line-414"></span><p class="line867">
<h2 id="Automated_Report_Generation_with_IPython_Notebook_.28Adam_Hodgen.29">Automated Report Generation with IPython Notebook (Adam Hodgen)</h2>
<span class="anchor" id="line-415"></span><span class="anchor" id="line-416"></span><p class="line874">IPython Notebook is a web based interface to execute python code, along with options to include LaTeX equations, charts and diagrams, and many other forms of media. <span class="anchor" id="line-417"></span><span class="anchor" id="line-418"></span><p class="line874">In this talk I will discuss how we have included IPython notebooks in our workflow during large automated test executions. We are often required to do analysis of complex datasets and IPython notebooks allow us to rapidly gather information and clarity on how our tests performed. The notebooks also simplify further analysis for repeated executions, which significantly reduces turnaround time. I will also show how, along with IPython’s nbconvert, it is possible to turn an IPython notebook into an attractive, branded, report, which can be rapidly delivered with minimal effort. <span class="anchor" id="line-419"></span><span class="anchor" id="line-420"></span><span class="anchor" id="line-421"></span><p class="line867">
<h2 id="Data_traceability_through_data_annotation_.28Fredrik_Haard.29">Data traceability through data annotation (Fredrik Haard)</h2>
<span class="anchor" id="line-422"></span><span class="anchor" id="line-423"></span><p class="line874">When writing data aggregation tools - for example for "business intelligence" - no amount of test cases can guarantee that the data you display to the end user is the data they need - or believe they are seeing. By it’s very definition, data aggregation tools removes information about the data, and it may very well take a domain expert - who may or may not understand the application itself - to manually verify that the data presented is indeed the data that is needed. <span class="anchor" id="line-424"></span><span class="anchor" id="line-425"></span><p class="line874">Testing and verifying the operation of such an application when testers and/or developers don’t have an intimate knowledge of the domain presents a challenge. In this talk I’ll present a way of providing traceability for your data, so that anywhere you show a data point, you can also explain exactly how it was computed. <span class="anchor" id="line-426"></span><span class="anchor" id="line-427"></span><p class="line874">I will show a full-stack example implementation modelled after a real customer case of how data can be annotated by (ab)using the Python object model to allow information on data source and operations to follow the individual data points all the way up through the stack to client-side rendering, as well as discuss some drawbacks to the methods used. <span class="anchor" id="line-428"></span><span class="anchor" id="line-429"></span><span class="anchor" id="line-430"></span><p class="line867">
<h2 id="Teaching_children_to_program_Python_with_the_Pyland_game_.28Alex_Bradbury.29">Teaching children to program Python with the Pyland game (Alex Bradbury)</h2>
<span class="anchor" id="line-431"></span><span class="anchor" id="line-432"></span><p class="line874">This summer, a team of interns at the University of Cambridge Computer Lab have been working on a project to teach children to program in Python through a programming game. The primary target platform is the Raspberry Pi, though multi-platform ports are planned for the future. It is, of course, open source. The game consists of a number of challenges and puzzles which invite the user to apply programming techniques in order to progress. I will discuss the motivation for the game, give a demo, give some insight into its implementation, our plans for the future, and how you can get involved. <span class="anchor" id="line-433"></span><span class="anchor" id="line-434"></span><span class="anchor" id="line-435"></span><p class="line867">
<h2 id="Post_Mortem_Debugging_and_Web_Development_.28Alessandro_Molina.29">Post Mortem Debugging and Web Development (Alessandro Molina)</h2>
<span class="anchor" id="line-436"></span><span class="anchor" id="line-437"></span><p class="line874">Developers often tend to ignore that users can be more creative than them. Use their debugging skills for your own benefit: post-mortem debugging is one of the most important features your web framework can provide. <span class="anchor" id="line-438"></span><span class="anchor" id="line-439"></span><p class="line874">The talk will cover some of the most common practices and available tools for debugging on development and production environments and immediately improve quality of your web applications through feedbacks from your running software and the interaction with your users. <span class="anchor" id="line-440"></span><span class="anchor" id="line-441"></span><span class="anchor" id="line-442"></span><p class="line867">
<h2 id="DEPOT.2C_story_of_a_file.write.28.29_gone_wrong_.28Alessandro_Molina.29">DEPOT, story of a file.write() gone wrong (Alessandro Molina)</h2>
<span class="anchor" id="line-443"></span><span class="anchor" id="line-444"></span><p class="line862">DEPOT ( <a class="http" href="http://depot.readthedocs.org/en/latest/">http://depot.readthedocs.org/en/latest/</a> ) is a file storage framework born from the experience on a project that saved a lot of files on disk, until the day it went online and the customer system engineering team diceded to switch to Heroku, which doesn't support storing files on disk. <span class="anchor" id="line-445"></span><span class="anchor" id="line-446"></span><p class="line874">The talk will cover the facets of a feature "saving files" which has always been considered straightforward but that can become complex in the era of cloud deployment and when infrastructure migration happens. <span class="anchor" id="line-447"></span><span class="anchor" id="line-448"></span><p class="line874">After exposing the major drawbacks and issues that big projects might face on short and long terms with file storage the talk will introduce DEPOT and how it tried to solve most of the issues while providing a super-easy-to-use interface for developers. We will see how to use DEPOT to provide attachments on SQLAlchemy or MongoDB and how to handle problems like migration to a different storage backend and long term evolution. <span class="anchor" id="line-449"></span><span class="anchor" id="line-450"></span><p class="line874">Like SQLAlchemy makes possible to switch your storage on the fly without touching code, DEPOT aims at making so possible for files and even use multiple different storages together. <span class="anchor" id="line-451"></span><span class="anchor" id="line-452"></span><span class="anchor" id="line-453"></span><p class="line867">
<h2 id="Using_python_to_improve_government_.28Michael_Brunton-Spall.29">Using python to improve government (Michael Brunton-Spall)</h2>
<span class="anchor" id="line-454"></span><span class="anchor" id="line-455"></span><p class="line874">The Government Digital Service is helping to transform government, helping to provide user led, high quality digital services to make citizens lives easier. <span class="anchor" id="line-456"></span>One of the projects is based in Birmingham, dealing with giving citizens redundancy pay if their employer goes insolvent. <span class="anchor" id="line-457"></span>We took a team of .NET engineers with no experience of agile development, and built a project in Python, iteratively, following government security principles. <span class="anchor" id="line-458"></span>In this session, you'll learn why we picked python, how we convinced management, and how we convinced the developers <span class="anchor" id="line-459"></span><span class="anchor" id="line-460"></span><span class="anchor" id="line-461"></span><p class="line867">
<h2 id="How_does_a_spreadsheet_work.3F_A_tour_of_the_codebase_of_Dirigible.2C_the_Pythonic_spreadsheet_.28Harry_Percival.29">How does a spreadsheet work? A tour of the codebase of Dirigible, the Pythonic spreadsheet (Harry Percival)</h2>
<span class="anchor" id="line-462"></span><span class="anchor" id="line-463"></span><p class="line874">Have you ever wondered how a spreadsheet works? It's actually surprisingly simple. <span class="anchor" id="line-464"></span><span class="anchor" id="line-465"></span><p class="line874">Join me for a tour around the codebase of Dirigible, the Pythonic spreadsheet (recently rescued from its abandonware status and made open source). <span class="anchor" id="line-466"></span><span class="anchor" id="line-467"></span><p class="line874">Find out how cell formulae are parsed and evaluated to become cell values, how the dependency graph of the spreadsheet is built, and how custom python code can be merged into spreadsheet calculations without everything exploding violently. <span class="anchor" id="line-468"></span><span class="anchor" id="line-469"></span><span class="anchor" id="line-470"></span><p class="line867">
<h2 id="Repeatable.2C_automated_cloud_deployments_.28Michael_Foord_.26_Simon_Davy.29">Repeatable, automated cloud deployments (Michael Foord &amp; Simon Davy)</h2>
<span class="anchor" id="line-471"></span><span class="anchor" id="line-472"></span><p class="line874">Do you deploy your Python services to Amazon EC2, or to Openstack, or even to HP cloud, joyent or Azure? Do you want to - without being tied into any one of them? <span class="anchor" id="line-473"></span><span class="anchor" id="line-474"></span><p class="line862">What about local deployments with lxc or kvm containers. How about managing your bare metal servers through Metal As A Service and deploying to <a class="nonexistent" href="/OpenStack">OpenStack</a> on top? ISP grade technology for your data centre! <span class="anchor" id="line-475"></span><span class="anchor" id="line-476"></span><p class="line874">How about managing your service deployment and infrastructure with Python code? (Devops distilled.) <span class="anchor" id="line-477"></span><span class="anchor" id="line-478"></span><p class="line874">If any of this sounds interesting then Juju maybe for you! Treat your servers as cattle not as pets, for service oriented repeatable deployments on your choice of back-end. Orchestrate and relate your services with charms written in Python. <span class="anchor" id="line-479"></span><span class="anchor" id="line-480"></span><p class="line874">In this talk we'll demo service deployment for a Django application and related infrastructure. <span class="anchor" id="line-481"></span><span class="anchor" id="line-482"></span><span class="anchor" id="line-483"></span><p class="line867">
<h2 id="Tests_without_boilerplate_.28Jonathan_Fine.29">Tests without boilerplate (Jonathan Fine)</h2>
<span class="anchor" id="line-484"></span><span class="anchor" id="line-485"></span><p class="line874">This talk is about a new way of writing tests. We arrange matters so that the expression statement <span class="anchor" id="line-486"></span><span class="anchor" id="line-487"></span><span class="anchor" id="line-488"></span><pre><span class="anchor" id="line-1"></span> add(2, 2) == 4</pre><span class="anchor" id="line-489"></span><p class="line874">reports a test failure if add(2, 2) does not return 4. Similarly <span class="anchor" id="line-490"></span><span class="anchor" id="line-491"></span><span class="anchor" id="line-492"></span><pre><span class="anchor" id="line-1-1"></span> add(2, '2') ** TypeError</pre><span class="anchor" id="line-493"></span><p class="line862">reports a test failure if add(2, '2') does not raise a TypeError exception. These new semantics (which provide no-boilerplate testing) do not apply when comparison expressions are used in conditional statements etc. <span class="anchor" id="line-494"></span><span class="anchor" id="line-495"></span><p class="line874">I will demonstrate Python software that implements this, and will discuss with you the use, benefits and development of this new approach to writing tests. <span class="anchor" id="line-496"></span><span class="anchor" id="line-497"></span><span class="anchor" id="line-498"></span><p class="line867">
<h2 id="Python_Core_Development_on_Windows:_Pleasures_.26_Pitfalls_.28Tim_Golden.29">Python Core Development on Windows: Pleasures &amp; Pitfalls (Tim Golden)</h2>
<span class="anchor" id="line-499"></span><span class="anchor" id="line-500"></span><p class="line874">Python is a cross-platform language. ANd Windows has long been a first-class target for Python: it's one of the three classes of OS which the core development team undertakes to support and to test for on its buildbot fleet. <span class="anchor" id="line-501"></span><span class="anchor" id="line-502"></span><p class="line874">But Python itself still thinks, by and large, in Posix. And Windows-based contributors are a tiny minority. Sometimes that mindset skew shows in some of the choices which have to be made. <span class="anchor" id="line-503"></span><span class="anchor" id="line-504"></span><p class="line874">This talk will cover the essentials of the toolset needed to even build a modern Python on a modern Windows. It will look at some of the challenges you face when deciding how to approach some Windows-specific issues. And it will reflect on the help and support which is out there; somewhere. <span class="anchor" id="line-505"></span><span class="anchor" id="line-506"></span><span class="anchor" id="line-507"></span><p class="line867">
<h2 id="Collaborative.2C_streaming.2C_3D.2C_and_interactive_matplotlib.2C_ggplot2.2C_and_MATLAB_plots_in_an_IPython_Notebook_with_Plotly_.28Carole_Griffiths_.26_Chris_Parmer.29">Collaborative, streaming, 3D, and interactive matplotlib, ggplot2, and MATLAB plots in an IPython Notebook with Plotly (Carole Griffiths &amp; Chris Parmer)</h2>
<span class="anchor" id="line-508"></span><span class="anchor" id="line-509"></span><p class="line874">Plotly's Python API lets you make and share beautiful, web-based plots. This talk will be a walk-through of Plotly's library. We will craft and embed interactive graphs within an IPython Notebook, use Plotly's web-app to edit and share graphs, and use Plotly's matplotlib wrapper to create web-based graphs and data files from matplotlib scripts. <span class="anchor" id="line-510"></span><span class="anchor" id="line-511"></span><p class="line874">Plotly is the easiest way to graph and share your data online. Plotly allows you to make beautiful, interactive online graphs from Python, R, or MATLAB code or with its web-based spreadsheet tool. Public sharing is free, users own their data, and users control whether data and graphs are public or private. <span class="anchor" id="line-512"></span><span class="anchor" id="line-513"></span><span class="anchor" id="line-514"></span><p class="line867">
<h2 id="Micro_Python_-_my_experiences_running_a_successful_Kickstarter_campaign_.28Damien_George.29">Micro Python - my experiences running a successful Kickstarter campaign (Damien George)</h2>
<span class="anchor" id="line-515"></span><span class="anchor" id="line-516"></span><p class="line874">The Micro Python Kickstarter campaign was successfully funded in December <span class="anchor" id="line-517"></span>2013 and had close to 2000 backers. In this talk I will discuss the ins <span class="anchor" id="line-518"></span>and outs of the Kickstarter campaign itself, highlighting the good and bad <span class="anchor" id="line-519"></span>bits of having an overwhelmingly successful crowdfunding project. <span class="anchor" id="line-520"></span><span class="anchor" id="line-521"></span><span class="anchor" id="line-522"></span><p class="line867">
<h2 id="Micro_Python_-_shrinking_Python_down_to_run_on_a_microcontroller_.28Damien_George.29">Micro Python - shrinking Python down to run on a microcontroller (Damien George)</h2>
<span class="anchor" id="line-523"></span><span class="anchor" id="line-524"></span><p class="line874">Micro Python is a rewrite of the Python language that uses minimal RAM and <span class="anchor" id="line-525"></span>which is optimised to run on a microcontroller (basically a very small <span class="anchor" id="line-526"></span>computer). I will outline the architecture of Micro Python, explain how it <span class="anchor" id="line-527"></span>minimises RAM usage, and discuss its benefits and use in the embedded <span class="anchor" id="line-528"></span>electronics world. <span class="anchor" id="line-529"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">Talks (last edited 2014-09-19 07:55:32 by <span title="PeterInglesby @ 193.61.104.66[193.61.104.66]"><a href="/PeterInglesby" title="PeterInglesby @ 193.61.104.66[193.61.104.66]">PeterInglesby</a></span>)</p>
<div id="pagebottom"></div>
</div>
<div id="footer">
<ul id="credits">
<li><a href="http://moinmo.in/" title="This site uses the MoinMoin Wiki software.">MoinMoin Powered</a></li><li><a href="http://moinmo.in/Python" title="MoinMoin is written in Python.">Python Powered</a></li><li><a href="http://moinmo.in/GPL" title="MoinMoin is GPL licensed.">GPL licensed</a></li><li><a href="http://validator.w3.org/check?uri=referer" title="Click here to validate this page.">Valid HTML 4.01</a></li>
</ul>
</div>
<div align=center>PyCon&trade; is a Registered Trade Mark of the Python Software Foundation</div></body>
</html>
  1. acl AdminGroup:read,write,delete,revert All:read

Table of Contents

Talks

Ecosystem threats to Python (Van Lindberg)

Python is a spectacular success - far more than anyone, even Guido, would have anticipated 20 years ago. Python is preinstalled on almost every operating system, is becoming the lingua franca for many numeric, statistical, and big data problems, and is the default teaching language in many colleges and universities.

But our success does not hide the warning signs. Javascript, Julia, Java, Lua, and Go are all picking up speed and mindshare, frequently at the expense of Python. What do these languages and language communities have that is enticing others to pick them? How can we learn from the good ideas in these languages to make Python even stronger? How can we interoperate and build on what they have?

Lessons from Strangers (Rachel Sanders)

Why are some workplaces vibrant and innovative, and others fetid pits of despair? Why are some products loved and others DOA? I dove into the strange world of business and psychology and emerged a better engineer.

Discovering developer habits with OpenStack code review data (Dougal Matthews)


What time of day are you most productive? How long does it take for a review to get merged after it has been submitted? Is the number of people reviewing each patch increasing or decreasing over time? Do some reviewers or companies favour specific developers?


Those are some of the questions this talk aims to answer. Given 120k code reviews in the Python based !OpenStack project, what can we learn about developer behaviour? What lessons can it teach us to help us review code better and be more efficient?


Using IPython notebook and Pandas we will explore this data, asking questions of it and seeing what correlations we can find. Along the way we will look at Pandas and IPython notebook and introduce a number of its features and functionality.

HTTP/2: Because The Web Was Too Easy (Cory Benfield)

The internet has spoken, HTTP is to get its first serious update in 15 years. In this talk we'll discuss what HTTP/2 is, why it's happening, and how it's going to affect you and everyone you love.

A Deep Dive into Requests (Cory Benfield)

Requests is one of the most popular third-party Python libraries ever written. Users love its clean and expressive API and its tendency to shorten their codebases.

That’s only part of the story, though. Behind Requests’ famous API lurks a number of exciting features that many users know nothing about. By using these features you can take your HTTP usage to the next level, speed up your code, and impress your friends (some of them, anyway).

In this short talk, we’ll do a quick pass through the Requests library itself pointing out its powerful features and tools. We’ll also take a look at some of the other libraries in the Requests ecosystem to see what they can bring to your code. We’ll talk about things like authentication, connection management, state persistence, SSL/TLS, transport adapters, and more!

This talk requires basic familiarity with the Requests library. No deep HTTP knowledge is required.

With a Pinch of Salt (Scott Walton)

Salt can be sprinkled over your food for flavouring. The same can be done with your servers, though I’d not recommend trying to eat them afterwards.

Salt is a very powerful server and configuration management system. It uses YAML and Jinja2 for configuration, so it should be familiar for most developers to get up and running.

In this talk, we will go through the basics of setting up Salt using a simple Django web app as an example. We can then build on this by introducing more of Salt’s features, such as selectors, grains, and pillars to construct and manage a complex system through testing, staging and production with relative ease.

Dealing with big black boxes (Fergus Doyle)

"Full-stack" includes so much more than just client and server these days, with systems building on top of multiple database engines, caching layers, search backends, third party web services and hosting solutions to name but a few.

What does this mean for infrastructure? In this talk we'll explore the impact maintaining so many independent cogs can have on a system as a whole.

We’ll look at third-party components vs. those developed and maintained in-house and their similarities and differences. How can we encapsulate and efficiently test components in such disparate systems? What can we do to minimise the overhead and risk of releasing new code to individual components nested deep within the machine?

Enterprise 101 (Martin P. Hellwig)

Red tape, arbitrary rules, office politics and clueless management, if these issues sum up your working day then you probably work in an enterprise like company. In this talk I'll take on the role of the devil's advocate in the expectation that some of my hypotheses about the underlying principles of those issues will have enough relevance to your situation that it can be applied to improve your working environment or at least understand why it can't be changed.

It's Not All About Success & Failure (Julian Berman)

There's more to software testing than just a green "All tests passed". Python is lucky to have a wealth of testing tools that can provide information on useful things like test timing, the long term behavior of a suite, or the comprehensiveness of a set of tests.

We'll investigate some of these tools and explore how they can help diagnose failures and provide insights into existing tests.

First steps with django CMS (Iacopo Spalletti)

An introduction to the philosophy of Django CMS and how to build flexible websites with it. You will learn how to handle content, writing templates and how to integrate your own Django applications with one of the best CMS for Django

Python for Zombies: 15.000 enrolled in the first Brazilian MOOC to teach programming (Fernando Masanori Ashikaga)

Python for Zombies is the first MOOC (Massive Open Online Course) to teach programming in portuguese. Our first edition had 15.000 "zombies". This course is different from traditional MOOCs (Edx, Coursera, etc). First is an initiative of the Brazilian Python community. Besides the difference of language, it is very "casual", as I have little time, I recorded most of the videos on my trips between meetings, conferences or at mealtimes. This MOOC is "brazilian", in a non traditional academic way. The size of the videos is far lower than the average traditional courses too. I will show you the most funny codes that I used in MOOC classes to teach programming: hacking basic modules and classes to obtain the "Answer to the Ultimate Question of Life, the Universe, and Everything". All material is Creative Commons Share Alike. The MOOC is based in my experience to teach programming in past six years at FATEC, a public university in Brazil, with decreasing rates of failure in the introduction to programming discipline. We have 100% class in labs, Coding Dojos to training and tests in exercises. Slides: http://bit.ly/python-for-zombies

Farewell & Welcome Home: Python in Two Genders (Naomi Ceder)

After half a lifetime "undercover as a man" I embraced my identity as a transgender woman and openly transitioned from male to female while staying involved in the Python community. This talk discusses that transition and how I found my new life in Python as a woman different from my former life as a man and the lessons about diversity I have learned.

This talk will include a brief discussion of what being transgender means, my experiences as I came to terms with it, and the losses and gains transition entailed. I will discuss my decision transition openly in Python community and how it was received.

While my transition has been exceptionally successful, I now inhabit a surprisingly different world. As a part of at least 3 groups that are minorities in the Python world I now have a very different view of a community I thought I knew. In addition to the many positives the Python community has offered me on my journey, I will discuss the experiences that have made me understand what it means to marginalized and that privilege is very much alive and well in the Python world.

Dr. Jython or: How I Learned to Stop Worrying and Love the JVM (Naomi Ceder)

Jython has many admirable attributes - running on a Java JVM, it doesn't have or need a GIL, in spite of not getting the love it deserves it works amazingly well, and it can even be used to embed a Python interpreter in Java code.

But even more important from an enterprise point of view is that Jython can use both pure Python and Java libraries side by side, and you still get to write your code in Python.

This talk is quick account of two similar occasions where Java libraries were the best choice for connecting to an ERP system, and Jython made it possible to write the applications in Python instead of Java.

There will be a quick rundown of the issues one encounters in using Jython for a use case like this, with some sample code showing both Java and Python using the same libraries.

Particular Issues covered will be:

 * Care and feeding of the JVM
 * Using the Jython shell to expore Java libraries
 * Translating Java to Jython - tips and caveats
 * Which Jython?

Building Great APIs in Python (Paul Hallett)

Applications are increasingly reliant on third party web APIs that provide complex services through a simple web interface. As such, it has never been more important understand how to build APIs with our favourite tools. T his talk covers the API development ecosystem available to Python, the best practices for building APIs, and a short demonstration of how easy it is to add an API to an existing Python app.

Self-Contained Deployment with Docker and Packer (Rach Belaid)

Deploying complex applications can be hard and rolling back is even harder. Ideally we would like to have the deployment self contained and be able to throw server resources to implement the deployment in an immutable way, but in practice this is difficult and takes lot of time to put in place. This is where a tool like Packer / Docker can help you to reach a self-contained deployment workflow in a much easier way. I will guide you through how to easily get started with immutable deployment and doing deployment (or rollback) of a self-contained application.

you’re doing it wrong: the lack of reproducibility in statistical science, and how to fix it (Mike McKerns)

A recent mathematical proof by Owhadi et al [1,2] details how many of today's common statistical methods are inherently unreliable. For example, Bayesian inference is only guaranteed to be correct when the selected prior is exact -- otherwise, the predictions are not guaranteed to be any more likely true than a random guess. Common tools in statistical science such as Bayesian inference, Monte Carlo, and Machine Learning impose strong implicit assumptions on a problem set in order to yield a solution. These methods do not provide a means for testing the assumptions the methods themselves require. For example, with Bayesian inference one must select a prior, where selecting a prior essentially turns the past into an explicit predictor of future events. Monte Carlo can never rigorously predict bounds on risk, and falls victim to the curse of dimensionality.

We have developed a comprehensive mathematical framework (OUQ) [3,4] capable of utilizing all available information to rigorously predict the impact of high-impact rare events, where our predictors are multiply-nested global optimizations over all possible valid scenarios. Such optimizations are high-dimensional, highly-constrained, non-convex, and generally impossible to solve with current optimization technology; however, by addressing optimization constraints as quantum operators on a probability distribution, our software (called 'mystic') [5,6] converts highly-nonlinear statistical calculations to those that are nearly embarrassingly parallel. By utilizing abstractions on programming models and global distributed caching of data and results, we can scale up from desktop calculations to petascale and larger with little burden on the programmer.

Within the context of this framework, assumptions inherent to common statistical science can be tested and validated, and models can be rigorously tested and improved. Results obtained are rigorous and optimal with respect to the information provided, and should enable great strides in reproducibility in statistical science. This framework has been used in calculations of materials failure under hypervelocity impact, elasto-plastic failure in structures under seismic ground acceleration, and the design of the next generation of large-scale heterogeneous compute clusters. Tools are included for rigorously constraining design space, constructing standard and statistical constraints, leveraging discrete and symbolic math, and quantifying uncertainties and risk.

This talk will lightly cover Owhadi's proof in pictorial form, however will primarily focus on the implementation of Owhadi's new rigorous statistical framework in the mystic software, and discuss the outlook and impact on scientific reproducibility in statistical science.

 1. http://arxiv.org/abs/1308.6306
 2. http://arxiv.org/abs/1304.6772
 3. http://arxiv.org/abs/1009.0679
 4. http://arxiv.org/abs/1202.1928
 5. http://pythonhosted.org/mystic
 6. https://github.com/uqfoundation

the failure of python object serialization: why HPC in python is broken, and how to fix it (Mike McKerns)

Parallel and asynchronous computing in python is crippled by pickle's poor object serialization. However, a more robust serialization package would drastically improve the situation. To leverage the cores found in modern processors we need to communicate functions between different processes -- and that means callables must be serialized without pickle barfing. Similarly, parallel and distributed computing with MPI, GPUs, sockets, and across other process boundaries all need serialized functions (or other callables). So why is pickling in python so broken? Python's ability to leverage these awesome communication technologies is limited by python's own inability to be a fully serializable language. In actuality, serialization in python is quite limited, and for really no good reason.

Many raise security concerns for full object serialization, however it can be argued that it is not pickle's responsibility to do proper authentication. In fact, one could apply rather insecure serialization of all objects the objects were all sent across RSA-encrypted ssh-tunnels, for example.

Dill is a serialization package that strives to serialize all of python. We have forked python's multiprocessing to use dill. Dill can also be leveraged by mpi4py, ipython, and other parallel or distributed python packages. Dill serves as the backbone for a distributed parallel computing framework that is being used to design the next generation of large-scale heterogeneous computing platforms, and has been leveraged in large-scale calculations of risk and uncertainty. Dill has been used to enable state persistence and recovery, global caching, and the coordination of distributed parallel calculations across a network of the world's largest computers.

 * http://pythonhosted.org/dill
 * https://github.com/uqfoundation
 * http://matthewrocklin.com/blog/work/2013/12/05/Parallelism-and-Serialization/
 * http://stackoverflow.com/questions/19984152/what-can-multiprocessing-and-dill-do-together?rq=1
 * https://groups.google.com/forum/#!topic/mpi4py/1fd4FwdgpWY
 * http://nbviewer.ipython.org/gist/anonymous/5241793

Dockerize your Python apps! (James Pacileo)

Docker has emerged to be one of the latest and greatest innovations in the web development community. But what is Docker? And most importantly how can a Python Web Developer take advantage of it?

Data Matching and Big Data Deduping in Python (Nikit Saraf)

Till now, using real-world-data is difficult. Apart from encoding and missing value, multiple records which mean the same thing is one of the biggest headache. This talk will demonstrate two tools “Dedupe” and “Dedoop” to handle task of Data Matching and Deduplication in Python at the scale of millions and billions of records respectively.

One of the widely postulated theory is “Most of the time spent working with real world data is not spent on the analysis, but in preparing the data”, I believe any Data guy would agree. There are numerous problems, which crop up while cleansing any dataset, and the prominent and recurring problem is duplicates (It is duplicate, so it has to be recurring). The problem of matching data and information from multiple databases or sources is also a prominent problem encountered in large decision support applications in large commercial and government organizations. This problems has many many different names deduplication, record linkage, entity resolution, coreference, reference reconciliation, record alignment.

Accurate, Scalable and Fast entity resolution has huge practical implications in a wide variety of commercial, scientific and civic domains. Despite the long history of work on Data Matching, there is still a surprising diversity of approaches, and lack of guiding theory. Meanwhile, in the age of big data, the need for high quality entity resolution is growing, as we are inundated with more and more data, all of which needs to be integrated, aligned and matched, before further utility can be extracted.

This talk will present the key ideas implemented behind “Dedupe” an open source python library that quickly deduplicates and matches records at the scale of millions of records on the laptop. The aim is to show how “Dedupe” achieves speed by “Blocking” records, to save from O(n^2^) comparisons, achieves accuracy, by using better string comparators and clustering algorithms suited for this problem etc. The attendees would also gain understanding of the tradeoffs between the speed and accuracy.

But what about a billion records ? In such a scenario, it is imminent to parallelise the whole process, to achieve greater speed. So, enter MapReduce based Entity Resolution. Attendees would also walk away with the understanding of how the Deduplication procedure may be parallelised by distributing the task independently to the map and reduce stages. There would also be a demo of the same using “Dedoop” an open source Efficient Deduplication tool for Hadoop on Amazon EC2 Machines

The Twelve-Factor App (Kristian Glass)

Are you building web services? Do you have passwords and keys embedded in your code, readable by everyone who works on the project? Are you tied to your production environment, unable to move, needing painful hacks for local testing? Is every app a special snowflake to configure and run?

The Twelve-Factor App is a language and framework agnostic set of principles for building easily configurable, easily deployable, well-structured services. Follow these principles; they’re low-effort and low-maintenance, and will make your life easier, whether you’re deploying or writing code.

If you work on any kind of web service, you should attend this talk.

An HTTP request's journey through a platform-as-a-service (Giles Thomas)

!PythonAnywhere hosts tens of thousands of Python web applications, with traffic ranging from a couple of hits a week to dozens of hits a second. Hosting this many sites reliably at a reasonable cost requires a well-designed infrastructure, but it uses the same standard components as many other Python-based websites. We've built our stack on GNU/Linux, nginx, !uWSGI, Redis, and Lua -- all managed with Python. In this talk we'll give a high-level overview of how it all works, by tracing how a request goes from the browser to the Python application and its response goes back again. As well as showing how a fairly large deployment works, we'll give tips on scaling and share a few insights that may help people running smaller sites discover how they can speed things up.

Exploring unit-testing with unittest, nose and pytest (Tom Viner)

We'll start by briefly introducing our three test frameworks:

 * unittest (sometimes called !PyUnit) and it's !xUnit origins
 * nose: "extends unittest to make testing easier"
 * pytest: more pythonic tests?

We'll look at several features of unit-testing and how they're covered by our frameworks. Covering:

 * running your tests from the command line
 * a minimal test: with class or function?
 * setting up the environment for a test, and clearing up afterwards
 * happy path: asserting the expected truth
 * provoking failure: ensuring exceptions raised

In the remaining time we'll move on to some more advanced techniques:

 * parameterised test generators
 * skipping and xfails
 * next level: marking your params

Try A Little Randomness (Larry Hastings)

This talk is all about random numbers--what are they? What different kinds are there? What are they useful for? And why are computers really bad at them? Come learn all about random numbers, both the good and the bad.

Use of Openstack CI for your own projects (Yolanda Robla Mota)

Session will cover the basics about the CI process we follow at Openstack. It will dig on how it can be reused to setup a great CI system for own projects I will show the basics of deployment and configuration, highlight the efforts we are doing to make the CI system totally independent from Openstack requirements, and explain how to contribute to that project to people interested on it.

Python Refactoring with Rope and Traad (Austin Bingham)

Python is a modern, dynamic language which is growing in popularity, but tool support for it is sometime lacking or only available in specific environments. For refactoring and other common IDE functions, however, the powerful open-source rope library provides a set of tools which are designed to be integrated into almost any programming environment. Rope supports most common refactorings, such as renaming and method extraction, but also more Python-specific refactorings, such as import organization. Rope’s underlying code analysis engine also allows it to do things like locating method definitions and generating auto-completion suggestions.

While rope is designed to be used from many environments, it’s not always easy or ideal to integrate rope directly into other programs. Traad (Norwegian for “thread”) is another open-source project that addresses this problem by wrapping rope into a simple client-server model so that client programs (IDEs, editors, etc.) can perform refactorings without needing to embed rope directly. This simplifies dependencies, makes clients more robust in the face of errors, eases traad client development, and even allows clients to do things like switch between Python 2 and 3 refactoring in the same session.

In this session we’ll look at how rope operates, and we’ll see how traad wraps it to provide an easier integration interface. The audience will get enough information to start using rope themselves, either directly or via traad, and they’ll see how to use traad for integrating rope into their own environments. More generally, we’ll look at why client-server refactoring tools might be preferable to the more standard approach of direct embedding.

Advanced py.test fixtures (Floris Bruynooghe)

One unique and powerful feature of py.test is the dependency injection of test fixtures using function arguments. This talk aims to walk through py.test's fixture mechanism gradually introducing more complex uses and features. This should lead to an understanding of the power of the fixture system and how to build complex but easily-managed test suites using them.

Ganga: an interface to the LHC computing grid (Matt Williams)

Ganga is a tool, designed and used by the large particle physics experiments at CERN. Written in pure Python, it delivers a clean, usable interface to allow thousands of physicists to interact with the huge computing resources available to them.

PyPy and its ecosystem (Ronan Lamy)

!PyPy is a fast, compliant alternative implementation of the Python language (2.7.6 and 3.2.5). I will give an overview of the current status of and the on-going development efforts on all the pieces that combine to make it a compelling Python platform. In particular, I will mention the RPython toolchain, CFFI, the JIT, garbage collection, the numpy port, Python 3 support, software transactional memory.

The IPython Notebook is for everyone (Gautier Hayoun)

!IPython Notebook is a vastly underrated tool in the Python eco-system.

In this talk I will show what is !IPython Notebook, examples of what you can do with it and hopefully inspire you to use it for your own problems.

This should be interesting even if you build web applications or manage servers.

Studying astronomy at the University of Warwick using Python (Simon Walker)

We at the astronomy group at the University of Warwick use Python for a wide range of tasks. From efficient image reduction through numpy array manipulation, high performance analysis by wrapping C++ code, or use of the multiprocessing module, Python is utilised for many applications.

The astronomy group studies other worlds, searching for extrasolar planets with new projects such as NGTS, and utilising results from the Kepler project. Also studied are the most distant objects in the universe, where massive explosions are visible from colossal distances. Cold dying stars known as white dwarfs are modelled as systems orbiting and stealing mass from their companion stars.

Python enables our understanding at the Warwick astronomy group. In this talk I discuss topics covering the whole scientific process from manipulating raw data and correcting for systematic errors, through analysis incorporating modelling and understanding the results, to visualising the final products ready for publication.

The High Performance Python Landscape (Ian Ozsvald)

A Python programmer has many options to profile and optimize CPU-bound and data-bound systems, common solutions include Cython, numpy and !PyPy. Increasingly we have single-core solutions that should take advantage of many cores and clusters. This talk reviews the current state of the art, looking at the compromises and outcomes of the current approaches and reviews upcoming solutions like Numba, Pythran and PyPy’s numpy and STM. Thoughts will be shared on how current hindrances might be improved.

Learning Python in Africa Universities (Olaniyan Adewale)

The session will of help to open source communities in the world by spreading the knowledge of open source technologies to Africa. It's been so pathetic that Africa has not been contributing to the open source technologies since it's innovation. However, this session should be an eye opener to developer in the world that it is high time to take more effort in contributing to Africa Technology through Open Source by adding it to Higher Institution Curriculum.

Let your data go/grow/flow with Py2Neo (Colin Moore-Hill)

This is a high level introduction to graph Databases and in particular Neo4J and how to use then utilising the py2neo wrapper.

This will cover the basis of the data structure and modelling as well as an introduction to the Cypher query language.

Trouble at t'LeedsDataMill: Oompah.py ~ Big Data meets Big Brass (Nicholas Tollervey & Simon Davy)

We will describe and (maybe) perform via the medium of Brass Band footfall data collected from the city of Leeds.

It's likely to be a loud, fun, interesting and musical exposition of big data manipulated with Python.

It may involve Tubas.

Stormy Webber - Tornado for everyone (Wes Mason)

An introductory talk to building fast non-blocking async web services with Tornado, especially relevant to Django, Flask, bottle, web.py, Pyramid, Zope, Gevent, Twisted and every other web (or not) dev interested in learning what makes Tornado special for such tasks.

Bonus: advanced tips and tricks for migrating from current systems and working with technologies such as !WebSockets and Server Sent Events in Tornado.

Is that jumper made of cats? Matching fashion products with image similarity. (Eddie Bell)

Given two non-identical images, how can we decide when those two images represent the same fashion product? The images can have different backgrounds, models, rotation, lighting and scale. In this talk I will show how we do this at Lyst in python using k-means bag-of-words on BRISK image descriptors.

Where am I? Geospatial processing with Python (Ian Taylor)

Turns out not only is the world not flat, it's not round either! And, everybody measures it differently in their hometown. So converting geo data is hard (= lots of math!) and you can't do it just with sql, sed, awk. You can do it with Perl ... but who wants to do that!!??

Enter Python. Really fast iterative development copes with data 'anomalies' (bugs to you and me). Extensive library support for SHP, WKT, CSV, databases makes data I/O effortless. Well, um, yeah ... easier. ;o)

The problem initially looks like text or stream processing: the function machine. You don't need classes for that, right? Hmmm, maybe ...

Geospatial processing requires more libraries (shapely in this case). Then more anomalies, math problems, but - hurrah - it works!

Mapping (of course) is about a journey, so along the way we'll meet friends and enemies like globals, classes, PEP8, IDEs and a cast of colourful characters!

How to become an !OpenStack hacker (Milap Bhojak)

The goal of !OpenStack is to produce a ubiquitous open source cloud computing platform that will meet the needs of public and private cloud providers, regardless of size, by being simple to implement and massively scalable.

This talk will look at some projects that are running !OpenStack, and will look at how to contribute to the development of !OpenStack.

Pioneering the Future of Computing Education (Carrie Anne Philbin & Ben Nuttall)

Carrie Anne Philbin and Ben Nuttall of the Raspberry Pi Foundation talk about the foundations education mission, how raspberry pi and python is being used in the classroom, and most importantly how you can get involved.

Functional Programming and Python (Pete Graham)

What is functional programming, and when would you want to use it?

Can you use Python to write programs in a functional style? Is this a good idea? What are the limitations, and when should you use an alternative functional language such as Haskell (Scala, Closure, Erlang, Lisp, etc).

When performance matters... (Marc-Andre Lemburg)

Python applications sometimes need all the performance they can get. Think of e.g. web, REST or RPC servers. There are several ways to address this: scale up by using more processes, use Cython, use PyPy, rewrite parts in C, etc.

However, there are also quite a few things that can be done directly in Python. This talk goes through a number of examples and show cases how sticking to a few idioms can easily enhance the performance of your existing application without having to revert to more complex optimization strategies.

Python Web Installers (Marc-Andre Lemburg)

Installing Python packages is usually done with one of the available package installation systems, e.g. pip, easy_install, zc.buildout, manual "python setup.py install".

These systems work fine as long as you have Python-only packages. For packages that contain binaries, such as Python C extensions or other platform dependent code, the situation is a lot less bright.

In the talk I will present a new web installer system that we're currently developing to overcome these limitations. The system uses the dynamic Python installation interface that all installers support ("python setup.py install") with a web installer which automatically selects, downloads, verifies and installs the binary package for your platform.

Dependency Injection in Nameko (Matt Bennett)

Nameko is a python framework for building service-oriented software, developed by onefinestay. This talk will explain how nameko uses Dependency Injection, why it's an important paradigm and how it simplifies writing services and testing them.

Nameko is on !GitHub at https://github.com/onefinestay/nameko

The Minecraft Challenge (Katie Bell)

There's already a great Python scripting interface for Minecraft, allowing you limitless creativity with the ability to read and place blocks anywhere. Unfortunately with limitless power the challenge of Minecraft disappears, because building a castle is somehow more satisfying when you have to mine and craft every block. If you’ve played Minecraft you’ve no doubt found yourself building or mining mindlessly in a pattern and wished you could simply script away the boring bits, but still keep the fun and challenge of the game.

In this presentation I'll be demonstrating a Python interface for writing Minecraft AIs, giving you the programming equivalent of Survivor mode. Your helper robots have some advantages over humans and can mine and build things for you faster, but ultimately this doesn't feel like cheating because it can’t do anything you can’t do. This also works well in multiplayer on an open server where players and bots can interact but no single player can destroy the world with a small software bug.

Writing an AI for the Minecraft world poses an interesting challenge for both young and experienced programmers, it’s a pure example of how we can use programming to avoid boring and repetitive tasks in the real world. It provides new programmers with immediate goals and for students exploring more advanced computer science concepts it leads well into real world robot control and game AI algorithms.

In this talk, I'll go through the Minecraft server and client implementation details, the challenges of multiplayer programming and the structures built into the interface to make coding AIs easier such as built-in state machines and the ability for the in-game player to give commands.

As a bonus, we’ll see how it plays out in the real world, what happens when we give the interface to a group of young programmers on a shared server, and how we can set up competitions and more specific AI-coding challenges.

The knights who say Neo - storing classes in the graph (David Szotten)

Ever wondered what happens if you store your Python classes directly in your database? (And no, we’re not talking about pickling)

When faced with the problem of modelling a large, complex type hierarchy of "stuff one might find in a seven bedroom home", we went down the somewhat unusual route of storing not only the objects themselves, but also their types in a graph database.

In this talk we will take a look under the hood of Kaiso, the open source framework we built to do this, and how we use some metaclass magic to to make it all happen.

Unlike conventional ORMs, we needed the schemas to be as dynamic as the records, and so decided to keep them side by side in our neo4j db. Using the Python type system as our data model means we get features like hierarchy consistency checks and other type calculations for free.

While this might not be the solution to a particularly common problem, come along to see how we’ve used some of the more dynamic aspects of the Python language for fun and profit!

Rapid prototyping to industrial strength : Python in Government (Michal Olszewski, Jim Gumbley & Max Edwards)

One team goes on a journey to prove that iterative lean approach can deliver results and change how organizations work. By deliberately choosing Python and a micro-framework approach our team is building an online public service which will help UK citizens to claim their redundancy payments. This is the story of how the team approached problems and devised solutions while staying true to Python philosophy.

Selenium Simple Test - An experience report. (Peter Russell)

Selenium Simple Test (SST, http://testutils.org/sst/ ) is an open source Python framework for writing automated tests for web applications. SST tests use Selenium Webdriver to drive real web browsers around the system under test.

The Test People recently used SST for the first time in a large project for a client. In this talk I'll cover:

  • How SST compares with other approaches to writing automated functional tests for webapps.
  • Why we thought SST was an appropriate choice for this project
  • What changes we needed to make to the framework to support our needs
  • What changes I'd like to see in the future
  • Whether I'd recommend SST for future projects.

Simulating quantum systems in Python (Katie Barr)

Quantum theory is famously difficult and paradoxical, but exploring quantum systems numerically in high level languages such as Python is surprisingly easy. In this talk I will describe, step by step, how to simulate a particular system, the discrete time quantum walk. This is the quantum analogue of a classical random walk, and has some interesting properties which I will briefly describe. The simulation can be performed with just 15 lines of Python code, using no external modules. I will then indicate how simple variations on this simulation are used to perform current research into the discrete time quantum walk, as the example I give is a variation of Grover's algorithm, which is asymptotically the fastest possible quantum search algorithm. By the end of the talk listeners should be able to go away and perform their own simulations of this system. I will also indicate further motivations for using Python to investigate quantum mechanical systems, in particular using numpy support for linear algebra, which is one of the types of mathematics used by quantum theorists. There will be no mention of the trickier aspects of quantum systems, but, for those interested, I will provide materials describing how to measure entanglement and explore the effects of measurement in the quantum walk I have presented. I do not expect listeners to have any background in mathematics and physics, and will keep technical discussion which would require such background to a minimum.

Web based application automation at the protocol level (Katie Barr)

Python has support for both capturing data concerning networking activity, using browsermod proxy, and generating it using the requests module. The requests module has sophisticated support for generating HTTP requests and analysing their responses. This enables us to get a good understanding of what browsers do for us behind the scenes. With this understanding, we can automate browsing sessions, which enables testing at the protocol level. In cases where testing via the UI is difficult, a protocol based approach is more suitable. In this talk I will describe a command line tool developed in Python, which, for a simple HTTP archive (a snapshot of the session), generates a Python script which will replicate the requests made in the session. The tool uses the jinja2 templating language for the code generation, and creates an object which inherits from the requests 'Session' object to perform the requests, giving us the full power of the requests module.

Automated Report Generation with IPython Notebook (Adam Hodgen)

IPython Notebook is a web based interface to execute python code, along with options to include LaTeX equations, charts and diagrams, and many other forms of media.

In this talk I will discuss how we have included IPython notebooks in our workflow during large automated test executions. We are often required to do analysis of complex datasets and IPython notebooks allow us to rapidly gather information and clarity on how our tests performed. The notebooks also simplify further analysis for repeated executions, which significantly reduces turnaround time. I will also show how, along with IPython’s nbconvert, it is possible to turn an IPython notebook into an attractive, branded, report, which can be rapidly delivered with minimal effort.

Data traceability through data annotation (Fredrik Haard)

When writing data aggregation tools - for example for "business intelligence" - no amount of test cases can guarantee that the data you display to the end user is the data they need - or believe they are seeing. By it’s very definition, data aggregation tools removes information about the data, and it may very well take a domain expert - who may or may not understand the application itself - to manually verify that the data presented is indeed the data that is needed.

Testing and verifying the operation of such an application when testers and/or developers don’t have an intimate knowledge of the domain presents a challenge. In this talk I’ll present a way of providing traceability for your data, so that anywhere you show a data point, you can also explain exactly how it was computed.

I will show a full-stack example implementation modelled after a real customer case of how data can be annotated by (ab)using the Python object model to allow information on data source and operations to follow the individual data points all the way up through the stack to client-side rendering, as well as discuss some drawbacks to the methods used.

Teaching children to program Python with the Pyland game (Alex Bradbury)

This summer, a team of interns at the University of Cambridge Computer Lab have been working on a project to teach children to program in Python through a programming game. The primary target platform is the Raspberry Pi, though multi-platform ports are planned for the future. It is, of course, open source. The game consists of a number of challenges and puzzles which invite the user to apply programming techniques in order to progress. I will discuss the motivation for the game, give a demo, give some insight into its implementation, our plans for the future, and how you can get involved.

Post Mortem Debugging and Web Development (Alessandro Molina)

Developers often tend to ignore that users can be more creative than them. Use their debugging skills for your own benefit: post-mortem debugging is one of the most important features your web framework can provide.

The talk will cover some of the most common practices and available tools for debugging on development and production environments and immediately improve quality of your web applications through feedbacks from your running software and the interaction with your users.

DEPOT, story of a file.write() gone wrong (Alessandro Molina)

DEPOT ( http://depot.readthedocs.org/en/latest/ ) is a file storage framework born from the experience on a project that saved a lot of files on disk, until the day it went online and the customer system engineering team diceded to switch to Heroku, which doesn't support storing files on disk.

The talk will cover the facets of a feature "saving files" which has always been considered straightforward but that can become complex in the era of cloud deployment and when infrastructure migration happens.

After exposing the major drawbacks and issues that big projects might face on short and long terms with file storage the talk will introduce DEPOT and how it tried to solve most of the issues while providing a super-easy-to-use interface for developers. We will see how to use DEPOT to provide attachments on SQLAlchemy or MongoDB and how to handle problems like migration to a different storage backend and long term evolution.

Like SQLAlchemy makes possible to switch your storage on the fly without touching code, DEPOT aims at making so possible for files and even use multiple different storages together.

Using python to improve government (Michael Brunton-Spall)

The Government Digital Service is helping to transform government, helping to provide user led, high quality digital services to make citizens lives easier. One of the projects is based in Birmingham, dealing with giving citizens redundancy pay if their employer goes insolvent. We took a team of .NET engineers with no experience of agile development, and built a project in Python, iteratively, following government security principles. In this session, you'll learn why we picked python, how we convinced management, and how we convinced the developers

How does a spreadsheet work? A tour of the codebase of Dirigible, the Pythonic spreadsheet (Harry Percival)

Have you ever wondered how a spreadsheet works? It's actually surprisingly simple.

Join me for a tour around the codebase of Dirigible, the Pythonic spreadsheet (recently rescued from its abandonware status and made open source).

Find out how cell formulae are parsed and evaluated to become cell values, how the dependency graph of the spreadsheet is built, and how custom python code can be merged into spreadsheet calculations without everything exploding violently.

Repeatable, automated cloud deployments (Michael Foord & Simon Davy)

Do you deploy your Python services to Amazon EC2, or to Openstack, or even to HP cloud, joyent or Azure? Do you want to - without being tied into any one of them?

What about local deployments with lxc or kvm containers. How about managing your bare metal servers through Metal As A Service and deploying to OpenStack on top? ISP grade technology for your data centre!

How about managing your service deployment and infrastructure with Python code? (Devops distilled.)

If any of this sounds interesting then Juju maybe for you! Treat your servers as cattle not as pets, for service oriented repeatable deployments on your choice of back-end. Orchestrate and relate your services with charms written in Python.

In this talk we'll demo service deployment for a Django application and related infrastructure.

Tests without boilerplate (Jonathan Fine)

This talk is about a new way of writing tests. We arrange matters so that the expression statement

reports a test failure if add(2, 2) does not return 4. Similarly

reports a test failure if add(2, '2') does not raise a !TypeError exception. These new semantics (which provide no-boilerplate testing) do not apply when comparison expressions are used in conditional statements etc.

I will demonstrate Python software that implements this, and will discuss with you the use, benefits and development of this new approach to writing tests.

Python Core Development on Windows: Pleasures & Pitfalls (Tim Golden)

Python is a cross-platform language. ANd Windows has long been a first-class target for Python: it's one of the three classes of OS which the core development team undertakes to support and to test for on its buildbot fleet.

But Python itself still thinks, by and large, in Posix. And Windows-based contributors are a tiny minority. Sometimes that mindset skew shows in some of the choices which have to be made.

This talk will cover the essentials of the toolset needed to even build a modern Python on a modern Windows. It will look at some of the challenges you face when deciding how to approach some Windows-specific issues. And it will reflect on the help and support which is out there; somewhere.

Collaborative, streaming, 3D, and interactive matplotlib, ggplot2, and MATLAB plots in an IPython Notebook with Plotly (Carole Griffiths & Chris Parmer)

Plotly's Python API lets you make and share beautiful, web-based plots. This talk will be a walk-through of Plotly's library. We will craft and embed interactive graphs within an IPython Notebook, use Plotly's web-app to edit and share graphs, and use Plotly's matplotlib wrapper to create web-based graphs and data files from matplotlib scripts.

Plotly is the easiest way to graph and share your data online. Plotly allows you to make beautiful, interactive online graphs from Python, R, or MATLAB code or with its web-based spreadsheet tool. Public sharing is free, users own their data, and users control whether data and graphs are public or private.

Micro Python - my experiences running a successful Kickstarter campaign (Damien George)

The Micro Python Kickstarter campaign was successfully funded in December 2013 and had close to 2000 backers. In this talk I will discuss the ins and outs of the Kickstarter campaign itself, highlighting the good and bad bits of having an overwhelmingly successful crowdfunding project.

Micro Python - shrinking Python down to run on a microcontroller (Damien George)

Micro Python is a rewrite of the Python language that uses minimal RAM and which is optimised to run on a microcontroller (basically a very small computer). I will outline the architecture of Micro Python, explain how it minimises RAM usage, and discuss its benefits and use in the embedded electronics world.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment