Skip to content

Instantly share code, notes, and snippets.

@termie
Last active October 5, 2022 21:56
Show Gist options
  • Save termie/621c842122b5f51e1a662f046f922b54 to your computer and use it in GitHub Desktop.
Save termie/621c842122b5f51e1a662f046f922b54 to your computer and use it in GitHub Desktop.
json to ical
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Pycon 2018//
BEGIN:VEVENT
SUMMARY:Complexity Science
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T122000
DESCRIPTION:Complexity Science is an approach to modeling systems using to
ols from discrete mathematics and computer science\, including networks\,
cellular automata\, and agent-based models.  It has applications in many
areas of natural and social science.\n\nPython is a particularly good lang
uage for exploring and implementing models of complex systems.  In this t
utorial\, we present material from the draft second edition of *Think Comp
lexity*\, and from a class we teach at Olin College.  We will work with r
andom networks using NetworkX\, with cellular automata using NumPy\, and w
e will implement simple agent-based models.\n\nAllen Downey
LOCATION:Room 15
END:VEVENT
BEGIN:VEVENT
SUMMARY:Standardized Data Science: The Team Data Science Data Process - wi
th a practical\, example in Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T103000
DESCRIPTION:In dealing with hundreds of Data Science teams around the worl
d\, our team has had a consistent request: A proven\, standardized methodo
logy for Data Science that folds into standard IT practices (such as SDLC
’s and DevOps) and governance. The Team Data Science Process (TDSP) is a
robust\, yet flexible\, fully-documented and defined process you can use
for consistent\, successful Data Science projects. The TDSP takes into acc
ount all phases\, roles\, and skills in a solution. Buck Woody\, an Applie
d Data Scientist from Microsoft Research and AI\, will explain how the TDS
P works\, provide you resources to use in your organization\, and walk you
through a practical example using Python.\n\nBuck Woody
LOCATION:Room 25C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Managing Dependencies & Runtime Security
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T103000
DESCRIPTION:In this workshop we’ll explore working with complex dependen
cy trees in Python\, learn about how to quickly configure virtual environm
ents\, as well as how you can implement zero-discipline runtime security s
canning for your applications.\n\nActiveState’s ActivePython distributio
n and the newly launched ActiveState platform provide solutions to these p
roblems in simple and powerful ways. During this workshop\, we’ll walk t
hrough:\n\n- How you can use the ActivePython distribution to have a pre-c
onfigured\, pre-built environment for many common development tasks and av
oid dealing with complex build steps for dependencies.\n- How to configure
a virtual environment for your project\n- How to integrate ActiveState’
s runtime interpreter plugin to either ActivePython or your existing Pytho
n distribution to achieve zero-discipline security reporting\n- A demonstr
ation of how the new ActiveState platform sets you up to solve these probl
ems and more in a simple\, powerful manner"\n\nPete Garcin
LOCATION:Room 13
END:VEVENT
BEGIN:VEVENT
SUMMARY:Making Art with Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T122000
DESCRIPTION:In this workshop\, we’ll learn how to make visual art using
Processing.py\, the Python mode for a powerful visual language library cal
led Processing.\n\nThis tutorial walks through Processing.py from the grou
nd up––from initial setup & foundational concepts\, to the library's c
ore functions\, as well as its more advanced features. Topics covered incl
ude the coordinate system\, shape primitives\, lines\, stroke\, fill\, col
or\, mapping\, events\, and transforms. At the end\, we'll break out of th
e tutorial format and give free reign for attendees to create\, tinker\, a
nd experiment freely with the framework.\n\nYou’ll walk away with an art
piece of your own original design\, as well as a newfound appreciation fo
r Python as a medium for creative expression. \n\nEmily Xie
LOCATION:Room 16
END:VEVENT
BEGIN:VEVENT
SUMMARY:A Python-flavored Introduction to Containers And Kubernetes
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T122000
DESCRIPTION:Containers have more or less taken over the world of applicati
on\, web APIs\, mobile endpoints and other forms of deployment. They have
become the currency\, the "table stakes" and de-facto application deployme
nt unit. Their raise to the fore has brought about a whole host of use cas
es which weren't practical or accessible in the world of "classic" paradig
ms of infrastructure and virtualization. Containers have also brought appl
ication deployment closer and more accessible to developers. \n\nBut as mo
re use cases\, deployment styles and exponential adoption of containers wa
s ongoing\, a new set of problems began to surface: how do you manage the
ever growing number of containers in a deployment? How do you make sure co
ntainers have the right resources\, deployed to the right machine\, runnin
g with the correct parameters\, how do you scale in and out without disrup
tion? How do you make sure in a fleet of X containers that they’re all r
unning and in healthy state? Enter Kubernetes.\n\nInitially developed inte
rnally by Google to replace their own complex container orchestration and
management framework. It had to meet all the stringent standards and mind-
boggling scale that Google operates on\, but from the get-go an effort was
made to make the learning curve and developer experience as approachable
as possible. At certain point the creators made the case to Google to rele
ase kubernetes to the open source community -- a crucial decision that has
helped “k8s” (as it’s commonly referred to as) reach rock star leve
ls of fame and mind share not just in the FOSS community but also across i
ndustries and businesses from small operations to gigantic multinational c
orporations with thousands of deployments.\n\n\nRuben Orduz\, Nolan Bruba
ker
LOCATION:Room 20
END:VEVENT
BEGIN:VEVENT
SUMMARY:Network Analysis Made Simple: Part I
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T122000
DESCRIPTION:Have you ever wondered about how those data scientists at Face
book and LinkedIn make friend recommendations? Or how epidemiologists trac
k down patient zero in an outbreak? If so\, then this tutorial is for you.
In this tutorial\, which is Part I of a two-part series\, we will use a v
ariety of datasets to help you understand the fundamentals of network thin
king\, with a particular focus on constructing\, summarizing\, and visuali
zing complex networks. With this tutorial\, you will be well equipped to e
xplore advanced topics (dynamics on graphs\, evolving graphs\, and network
propagation methods) in Part II.\n\nEric Ma\, Mridul Seth
LOCATION:Room 19
END:VEVENT
BEGIN:VEVENT
SUMMARY:Build-a-GitHub-Bot Workshop
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T122000
DESCRIPTION:GitHub provides a great platform for collaborating. You can ta
ke it to the next level by creating custom GitHub bots. By delegating some
of the chores to a bot\, you get to spend more time developing your proje
ct and collaborating with others.\n\nLearn how to automate your workflow b
y building a personal GitHub assistant for your own project. We'll use lib
raries called `gidgethub` and `aiohttp` to write a GitHub bot that does th
e following:\n\n- Greet the person who created an issue in your project. \
n\n- Say thanks when a pull request has been closed.\n\n- Apply a label to
issues or pull requests.\n\n- Gives a thumbs up reaction to comments **yo
u** made. (becoming your own personal cheer squad).\n \nThe best part is\,
you get to do all of the above using Python 3.6! F-strings included!\n\n\
n\nMariatta Wijaya
LOCATION:Room 16
END:VEVENT
BEGIN:VEVENT
SUMMARY:Build a Search Engine with Python + Elasticsearch
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T122000
DESCRIPTION:One of the most common actions that we take when visiting any
website is search. A common service that powers search for many sites is E
lasticsearch - but what makes it so powerful? What can you do with Elasti
csearch that you can’t with a regular database?\n\nThis tutorial starts
with an introduction to Elasticsearch architecture\, including what makes
it great for search and not so great for other use cases. We will then bui
ld an application together with a search engine powered by Elasticsearch.
We will also discuss how to optimize search queries and scale as the volum
e of data increases.\n\nJulie Qiu
LOCATION:Room 21
END:VEVENT
BEGIN:VEVENT
SUMMARY:Down the rabbit hole. A 101 on reproducible workflows with Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T122000
DESCRIPTION:There has been a massive interest in reproducible research / d
ata\nanalysis pipelines over the last few years.\nBut... how can I ensure
that what I produce as a Python\nuser is reproducible?\nIn this tutorial w
e'll be taking you on a journey down the rabbit hole\nof reproducibility.\
nWe'll be taking a step by step approach to reproducible scientific develo
pment\nin Python.\nThis means you get a crash course on version control\,
execution environments\, testing\,\nand continuous integration. And a guid
e on how to integrate all of these in your\nsoftware projects.\nBy the end
of the course we hope you will have the necessary tools to make your\nPyt
hon workflows reproducible no matter if you're starting a brand new projec
t\nor if this is ready to be shared with the world.\n\nTania Sanchez Monr
oy
LOCATION:Room 09
END:VEVENT
BEGIN:VEVENT
SUMMARY:Code Your Heart Out: Beginning Python for Human People with Feelin
gs
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T122000
DESCRIPTION:This tutorial is for people who are __brand new to Python__. I
t's for people with curioisty to feed\, anxiety to overcome\, and worlds t
o change. It's for people named Edna. (And others not named Edna.)\n\nDuri
ng this tutorial you'll be encouraged to __bring your whole self to learni
ng__. We'll start with the very basics of Python\, keeping your fingers on
the keyboard to gain as much practice as possible. Between strings\, func
tions\, and other fun Python-y things\, we'll discuss learning deeply\, __
nourishing our brains__\, and boosting happiness with science.\n\nNo prior
experience required\; come just as you are. __This is about being a whole
person__. It's about learning Python\, because Python is really cool. It'
s also about staying afloat. Being productive. Focusing. It's about findin
g joy in the error codes.\n\nCome play. It'll be awesome.\n\nMelanie Crutc
hfield
LOCATION:Room 10
END:VEVENT
BEGIN:VEVENT
SUMMARY:Lights Camera Action! Scrape\, explore\, and model to predict Osca
r winners & box office hits
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T122000
DESCRIPTION:Using Jupyter notebooks\, HTTP requests\, BeautifulSoup\, NumP
y\, Pandas\, scikit learn\, and matplotlib\, you’ll predict whether a mo
vie is likely to [win an Oscar](http://oscarpredictor.github.io/) or be a
box office hit. We’ll step through the creation of an effective dataset:
asking a question your data can answer\, writing a web scraper\, and answ
ering those questions using nothing but Python libraries and data from the
Internet. \n\nDeborah Hanus\, Patricia Hanus\, Sebastian Hanus\, Veronica
Hanus
LOCATION:Room 15
END:VEVENT
BEGIN:VEVENT
SUMMARY:Foundations of Numerical Computing in Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T122000
DESCRIPTION:Python is one of the world's most popular programming language
s for numerical\ncomputing. In areas of application like physical simulati
on\, signal processing\,\npredictive analytics\, and more\, engineers and
data scientists increasingly use\nPython as their primary tool for working
with numerical large-scale data.\n\nDespite this diversity of application
domains\, almost all numerical programming\nin Python builds upon a small
foundation of libraries. In particular\, the\n`numpy.ndarray` is the core
data structure for the entire PyData ecosystem\, and\nthe `numpy` library
provides many of the foundational algorithms used to power\nmore domain-s
pecific libraries.\n\nThe goal of this tutorial is to provide an introduct
ion to numpy -- how it\nworks\, how it's used\, and what problems it aims
to solve. In particular\, we\nwill focus on building up students' mental m
odel of how numpy works and how\n**idiomatic** usage of numpy allows us to
implement algorithms much more\nefficiently than is possible in pure Pyth
on.\n\n\nScott Sanderson
LOCATION:Room 20
END:VEVENT
BEGIN:VEVENT
SUMMARY:Intro to Spatial Analysis and Maps with Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T122000
DESCRIPTION:In this tutorial\, we will introduce Python as a spatial probl
em solving and data visualization tool. To demonstrate the power of Python
for spatial analysis\, we will solve a spatial problem and make a beautif
ul map of our results. Along the way\, we will discuss considerations when
dealing with spatial data and the wide range of Python tools available fo
r spatial analysis.\n\nChristy Heaton
LOCATION:Room 21
END:VEVENT
BEGIN:VEVENT
SUMMARY:API-Driven Django
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T122000
DESCRIPTION:As the web continues to evolve\, the demand for data-driven ba
ckends matched with rich frontend experiences grows every day. Django come
s with a robust templating system and rendering engine\, but more and more
web applications using Django are just focusing on it’s API abilities.\
n\nWhat if we could have the best of both worlds? What if we could use Dja
ngo and django-rest-framework to write views that let us prototype quickly
using the Django templating system\, and have those same views return API
responses to rich clients?\n\nIn this tutorial\, we’ll build a sample d
ata collection and display web application\, taking advantage of the ways
Django and django-rest-framework work together. The end result will be a w
eb application you could adapt for many kinds of data collection needs\, a
nd you’ll come away knowing how to get a rich API and a frontend prototy
pe out of just one Django view. \n\n\nPhilip James
LOCATION:Room 10
END:VEVENT
BEGIN:VEVENT
SUMMARY:Introduction to TDD with Django
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T122000
DESCRIPTION:Over the past few years\, automated software testing has moved
from being a niche interest to being the default assumption. This tutori
al is an introduction to Test-Driven Development (TDD) for the world of we
b development in Python using the Django framework.\n\nThe tutorial is sui
table for people who are new to either testing\, or Django\, or both\, alt
hough some basic working knowledge of Python syntax (or programming in ano
ther language) is assumed.\n\nLearn about:\n- Unit testing and Functional
testing\n- the Selenium browser automation tool\n- Python's unittest stand
ard library module\n- Django models\, views and templates\n- testing front
-end and back-end code\n- refactoring\, using tests \n- the unit-test/code
cycle\, or Red-Green-Refactor\, TDD workflow\n- and the Testing Goat\, Py
thon's unofficial mascot for testing!\n\nCome prepared! You'll need a Pyt
hon 3.6 virtualenv with Django and Selenium installed. Detailed instructi
ons are provided [here](https://www.obeythetestinggoat.com/book/pre-requis
ite-installations.html).\n\n\nHarry Percival
LOCATION:Room 09
END:VEVENT
BEGIN:VEVENT
SUMMARY:Introduction to Python for Data Science
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T122000
DESCRIPTION:This tutorial introduces users to Python for data science. Fro
m data cleaning to model building\, we will work through a series of short
examples together using some real-world health inspection data. Attendees
will have their hands on the keyboard\, using the Python standard library
and pandas to clean data and scikit-learn to build some models.\n\nSkippe
r Seabold
LOCATION:Room 22
END:VEVENT
BEGIN:VEVENT
SUMMARY:Going Serverless with OpenFaaS\, Kubernetes\, and Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T122000
DESCRIPTION:OpenFaaS (Functions as a Service) is a framework for building
serverless\, event-driven functions with Docker and Kubernetes. \n\nIn thi
s tutorial\, you'll learn how to build and deploy a full-stack application
that uses Flask (client-facing app) along with OpenFaaS to handle backgro
und processes.\n\nMichael Herman
LOCATION:Room 22
END:VEVENT
BEGIN:VEVENT
SUMMARY:Web Applications\, A to Z
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T122000
DESCRIPTION:Modern web applications have gotten complicated -- backend log
ic\, front-end logic\, storage and deployment options abound.\n\nThis tuto
rial will take a tour of all the pieces that go into making a web applicat
ion\, and show how they all fit together -- using specific choices\, speci
fic examples and a lot of hands-on programming\, to give participants a ch
ance to actually write a web applications: all the parts. \n\nWe will use
some external third-party services\, but care is taken to fit into the fr
ee tier.\n\n\nMoshe Zadka
LOCATION:Room 19
END:VEVENT
BEGIN:VEVENT
SUMMARY:Data science and Engineering at Shopify
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T090000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T103000
DESCRIPTION:Shopify’s workshop will be a series of two 45 minute tech ta
lks on our use of Python and its ability to make commerce better for every
one. Shopify is the leading cloud-based\, multi-channel commerce platform
where entrepreneurs can design\, set up\, and manage their stores across m
ultiple sales channels. With a decade worth of data\, we are able to build
products using Python that help our entrepreneurs run their businesses ev
eryday. We'll hear about how Python is particularly useful when it comes t
o understanding our user base by sifting through tons of data from Franço
ise Provencher and about how PySpark can be used to reliably process data
to feed reports\, dashboards\, and products from Chris Fournier.\n\nExcite
d about what you learned and want to continue the conversation\, visit our
booth in the expo hall!\n\nFrançoise Provencher\, Chris Fournier
LOCATION:Room 23
END:VEVENT
BEGIN:VEVENT
SUMMARY:STEAM Workshops using Jupyter Notebooks\, JupyterHub\, and Binder
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T102000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T105000
DESCRIPTION:Middle School and High School students can learn by doing. Jup
yter Notebooks and the rich Python ecosystem with libraries on a variety o
f topics can engage many learners of the sciences and humanities. Interact
ive content\, using Jupyter Widgets and visualization libraries\, put the
student in charge of manipulating content and extending their learning. Gi
ving students engaging content in familiar subjects encourages them to dev
elop and use computational skills to build upon their interests.\n\nOne di
fficulty of teaching workshops is access to computers and the ability to i
nstall software on those systems. This talk will demonstrate how a worksho
p organizer or teacher can deploy JupyterHub easily for a class using the
Zero to JupyterHub Guide\, Kubernetes\, and Cloud Services. Even if studen
ts only have access to smartphones\, tablets\, or shared computers\, a wor
kshop can be held using Binder which allows a notebook environment to be s
erved at the click of a button to any modern web browser.\n\nCarol Willing
LOCATION:Room 25A\, Room 25B
END:VEVENT
BEGIN:VEVENT
SUMMARY:How we designed an inclusivity-first conference on a shoestring bu
dget and short timeline
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T112000
DESCRIPTION:New conferences rarely have resources to run the sort of outre
ach and inclusion programs that big conferences have. It’s hard to guess
how much money you’ll have to spend\, how many attendees you’ll have\
, and what your new community will look like. With so many things to worry
about\, it’s no surprise that most events don’t prioritise outreach u
ntil they’ve got a few years under their belt\, if at all.\n\nIt doesn
’t have to be this way\, and it can even be easier to build a new event
around outreach and inclusion than it is to build it in later on!\n\nThis
talk shares the story of North Bay Python’s inaugural conference\, which
we planned in under 6 months\, ran on a $40\,000 budget\, and built a wel
coming community to make it real. We made inclusivity a founding principle
and did so without compromising our speaker lineup while still attracting
great sponsorship and hosted an event that almost every attendee wants to
return to.\n\nIn this talk\, we’re going to share with you how we built
a conference\, from the ground up\, to be as inclusive as we could make i
t. We’ll touch on early organisation\, marketing\, and on-the ground log
istics. Throughout the talk\, you’ll learn:\n\n* How we designed a budge
t that let us prioritise outreach and inclusion activities\n* How we built
the community that we wanted before the conference even started\n* How we
ran an event that proved that we meant everything we said\n\nYou too can
host a new conference with a great lineup on a shoestring budget and short
timeline\, and you can do it while being inclusive\, welcoming\, and putt
ing attendee safety first. Find out how you can have your cake\, eat it\,
and still have lots to share with your new community.\n\n\nChristopher Neu
gebauer\, Josh Simmons\, Sam Kitajima-Kimbrel
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Visualizing Algorithms with Python and Programmable LEDs
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T112000
DESCRIPTION:Recently\, a new LED strip specification\, APA102\, has been r
eleased which allows these strips to be driven by a general purpose CPU in
stead of a dedicated microcontroller. This allows us the luxury of control
ling them with Python!\n\nI'll teach you about how to get the the hardware
\, how to think about programming for lights and how to build anything fro
m a psychedelic art installation to home lighting to an educational tool.
\n\nProgramming with lights is awesome because you can SEE bugs with your
eyes. I think the use of these LED's have great potential as a teaching to
ol because of the immediacy of the feedback.\n\nLIVE hardware demos! See
Quicksort in brilliant colors!\n\nChristopher Beacham / Lady Red
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Coding through Adversity
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T112000
DESCRIPTION:In 2017\, I was released from prison after serving 17 years. O
ne of the most transformational experiences I had while incarcerated was l
earning to code\, through a pioneering new program called Code.7370 — th
e first coding curriculum in a United States prison.\nIn this talk\, I’d
like to share my experiences learning to code in prison and getting a sof
tware engineering job after my release\, with the goals of:\nInspiring new
programmers to stick with it and be confident in their abilities\nInspiri
ng educators to think about how to support new coders in a broad range of
learning environments (there’s no internet in prison!)\nInspiring everyo
ne to think about the potential for rehabilitation in prison in a new way\
nMy story:\nMy first computer was the Commodore 64. I can still remember w
riting in Basic when you had to number the lines of code yourself and save
everything onto cassette drives. Once the Atari 2600 came on the scene\,
I traded in my keyboard for a joystick and lost myself in each successive
release. From Intellivision to Colecovision and from Nintendo to Playstati
on\, I immersed myself to test my skill and lose myself in these magical d
igital universes.\nAs I left my teen years behind\, I discovered new ways
of exciting and losing myself in a sea of alcoholism and drug addiction. A
s Y2K came and went\, American Online and Motorola flip phones were about
the hottest thing going and I began dealing drugs to support my reckless l
ifestyle. This decision would lead me to taking a friend’s life over a s
ix pound suitcase of marijuana. It was the worst decision I’ve ever made
in my life and would cost me the next 17 years in prison.\nWhile I was in
prison\, I sat on the sidelines and watched as the world of technology wa
s passing me by. I spent over a decade in prison with no access to compute
rs\, the internet\, or email. The only glimmers I saw were from commercial
s on TV and my subscription to Wired magazine.\nThat was until I was accep
ted to The Last Mile\, an entrepreneurial program at San Quentin State Pri
son. We read books by authors like Guy Kawasaki\, Reid Hoffman\, and Andy
Smith. We also learned to develop business plans for our own entrepreneuri
al ideas that involved 3 components\, 1) something we were passionate abou
t 2) something that involved technology 3) something with a social cause.
My idea was for an online life coaching platform called Fitness Monkey tha
t would empower addiction recovery through physical fitness.\nIn 2014\, th
e door to technology was finally opened. The Last Mile started the Code.73
70 program where I was accepted and began learning front-end web developme
nt. With every line of HTML\, CSS\, and JavaScript I wrote\, I fell in lov
e with coding for its ability to solve problems and create and design solu
tions that could enhance people’s lives.\nI carried a coding book with m
e everywhere I went and my love for coding would propel me to the head of
the class. I begin doing breakout sessions with my classmates on coding ch
allenges assigned to us by Hack Reactor\, a dev bootcamp in San Francisco.
The first class was such a success\, they started a Track 2 that taught a
dvanced CSS and went into depth on data structures and algorithms. Later\,
we began delving into full-stack development with Angular\, Node\, and Wo
rdPress.\nWith so many qualified inside coders\, The Last Mile partnered w
ith the Prison Industry Authority to open The Last Mile Works\, a dev shop
inside the walls of San Quentin. We began developing projects for outside
companies like Airbnb and the Coalition for Public Safety. As well as\, e
arning a wage that would provide us with a savings account upon our releas
e to help transition back into society. I was building a resume and gainin
g real world experience while incarcerated that would enable me to find em
ployment with The Last Mile upon my release.\nOn May 4\, 2017\, I was rele
ased from prison after serving a total of 17 years. I did everything in my
power to make sure that this time wasn’t wasted. I was hired for a paid
internship with The Last Mile as a Web Developer to build a learning mana
gement system that would package the coding program at San Quentin into a
piece of software that could be distributed to other prisons throughout Ca
lifornia and eventually the entire country. This internship also included
our application to Y-Combinator where we pitched our project to Michael Se
ibel\, the CEO and his team of VC’s. \nWe finished the project and it
’s currently being tested in San Quentin and two different Women’s pri
sons. As my internship drew to an end\, I began to reach out and see what
other opportunities would be available to someone with my experience. I w
ent through a 4 hour interview process with the entire engineering team at
FANDOM. I’m not going to say it was as difficult as the parole board\,
but these guys put me through my paces and in the end offered my a 90 day
internship. Here was my chance!\nWhen my internship began\, I was given qu
ite a few tasks that those in the industry call pixel pushing. Design twea
ks and CSS fixes. All of the cards on the project management board were la
beled 1-5 on complexity. For the first few weeks\, all of my cards were on
es. However\, with each successive week\, I became more familiar with the
code base and started to reach for some of the more difficult assignments.
I believe one of my strengths was being able to admit when I had no clue
what I was doing and courage to ask for help. \nMy time at FANDOM was an a
mazing experience in learning how to collaborate on an international team
that spans eight different countries. I learned how to effectively communi
cate with different departments within the office in San Francisco. And\,
one of the most amazing parts was getting to tell my story to the entire c
ompany at the all hands meeting. Now\, I was not only the ‘old’ intern
\, but someone who had persevered through adversity and was willing to sha
re his truth of committing a horrible crime\, but also of earning a colleg
e degree\, running marathons\, developing business ideas\, and learning to
code.\nAll of the work paid off this past December\, when I was offered a
full-time position as a Software Engineer for FANDOM. One of my biggest f
ears was what would life be like for me once I was released from prison. T
he answer is nothing short of incredible. The Last Mile’s mantra is ‘B
elieve in the Process’ and there were times when I wasn’t even quite s
ure what the process was\, but I believed anyway. For every step I took le
arning and growing\, more and more opportunities opened up for me. I found
great freedom in defaulting to yes.\n\n\nChris Schuhmacher
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Mu - How to Make a Kids' Code Editor
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T112000
DESCRIPTION:[The Raspberry Pi Foundation][1] receives feedback about the d
ifficulties beginner programmers encounter when learning Python from thous
ands of volunteer mentors at after-school CodeClubs and thousands of teach
ers from around the world.\n\n[Mu][3] is a Python code editor for beginner
programmers based upon this feedback.\n\nThis talk tells the story of Mu:
why it was created\, how we built it and includes a demonstration of how
it works.\n\n [1]: http://raspberrypi.org/\n [3]: http://codewith.mu/\n\
n\nNicholas Tollervey
LOCATION:Room 25A\, Room 25B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Code Reviews Using Art Critique Principles
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T112000
DESCRIPTION:Code reviews don't have to be a time consuming\, morale zappin
g\, arduous tasks. Not only can they catch bugs and errors but they can co
ntribute in positive ways to the individual developer\, the team\, managem
ent and company as a whole. \n\nArt critiques have existed in academia fo
r hundreds of years. The methodology of the critique has evolved to be tim
e sensitive and productive\, while keeping the enthusiasm of the student a
rtist intact. \n\nThe purpose of the art critique is to get peers and men
tors to look at the work and raise any problems they may see. It's also ti
me where people with more experience could contribute their knowledge in a
helpful way. This process is about producing the best work\, quickly and
in a productive and constructive way. \n \nThese methods can be applied to
code review. \n\n\n\nStacy Morse
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Build Teams as an Engineer
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T112000
DESCRIPTION:We build product and software as teams. And as anyone who as w
orked on a team knows\, there’s often a lot more that goes into working
together to build that product than actually just building the product its
elf. A highly functional team is not as elusive it may seem. Software engi
neering is a skill we’ve developed\, but even more importantly software
engineering on teams is another skill we’ve been practicing and improvin
g on as an industry. Software engineering principles and best practices ma
y seem to have very little to do with teamwork\, but being able to thought
fully apply some of what we’ve learned as engineers towards teamwork\, w
e can help move towards creating such success with our teams.\n\nJoyce Jan
g
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Solve Your Problem With Sloppy Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T112000
DESCRIPTION:Stop writing crappy shell scripts—write crappy Python script
s instead!\n\nOther talks will show you how to write clean\, performant\,
robust Python. But that's not always necessary. When writing personal au
tomation or solving one-shot problems\, it can be safe (and fun!) to quick
ly hack something together.\n\nThis talk will show examples of problems su
itable for this approach\, scenarios where it's reasonable to cut corners\
, novel techniques that can help break a problem down\, and shortcuts that
can speed development.\n\nLarry Hastings
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Thinking Outside the GIL with AsyncIO and Multiprocessing
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T112000
DESCRIPTION:Have you ever written a small\, elegant application that could
n't keep up with the growth of your data or user demand? Did your beautifu
l design end up buried in threads and locks? Did Python's very special Glo
bal Interpreter Lock make all of this an exercise in futility?\n\nThis tal
k is for you! With the combined powers of AsyncIO and multiprocessing\, we
'll redesign an old multithreaded application limited by the GIL into a mo
dern solution that scales with the demand using only the standard library.
No prior AsyncIO or multiprocessing experience required.\n\n\nJohn Reese
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python Data Sonification for Science and Discovery
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T112000
DESCRIPTION:What do geiger counters\, black holes\, heart monitors\, and v
olcanoes have in common? They all can use sound to convey information! Th
is talk will explore using python for sonification: the process of transla
ting data into sound that could otherwise be represented visually. Have yo
u ever wondered how to use python to represent data other than making char
ts and graphs? Are you a musician looking for inspiration in the world ar
ound you? This talk will go over how to use python to translate time seri
es data to MIDI that can be played back in real time. We’ll sonically in
terpret light-curve data from the Kepler space telescope using pygame\, MI
DIUtil\, and astropy\, turning points on a graph into a musical masterpiec
e! Come learn about how data sonification is used to help people\, to expa
nd the reach of scientific research\, and to create music from data.\n\nEr
in Braswell
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Democratizing Distributed Computing with Dask and JupyterHub
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T112000
DESCRIPTION:We use JupyterHub\, XArray\, Dask\, and Kubernetes to build a
cloud-based system to enable scientists to analyze and manage large datase
ts. We use this in practice to serve a broad community of atmospheric and
climate scientists.\n\nAtmospheric and climate scientists analyze large v
olumes of observational and simulated data to better understand our planet
. They have historically used tools like NumPy and SciPy along with Jupyt
er notebooks to combine efficient computation with accessibility. However
\, as datasets increase in size and collaboration extends to new populatio
ns of scientists these tools begin to feel their age. In this talk we use
more recent libraries to build a modern deployment for academic scientist
s. In particular we use the following tools:\n\n- **Dask:** to paralleliz
e and scale NumPy computations\n- **XArray**: as a self-discribing data mo
del and tool kit for labeled and index arrays\n- **JupyterLab:** to enable
more APIs for users beyond the classic notebook\n- **JupyterHub:** to man
age users and maintain environments for a new population of cloud-friendly
users\n- **Kubernetes:** to manage everything and deploy easily on cloud
hardware\n\nThis talk will focus less on how these libraries work and will
instead be a case study of using them together in an operational setting.
During the talk we will build up and deploy a running system that the au
dience can then use to access distributed computing resources.\n\n\nMatthe
w Rocklin
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Data Visualization in Mixed Reality with Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T105000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T112000
DESCRIPTION:Data Visualization charts are supposed to be our map to inform
ation. However\, when making charts\, customarily we are just re-sizing li
nes and circles based on metrics instead of creating data-driven version o
f reality. The contemporary charting techniques have a few shortcomings (
especially when dealing with high-dimensional dataset): \n\n* **Context Re
duction**: in order to fit a high-dimensional dataset into a chart one nee
ds to filter/ aggregate/ flatten data which results in reduction of full c
ontext of information. Without context most of the charts show only a par
t of the story\, that can potentially lead to data misinterpretation/misun
derstanding. \n* **Numeric Thinking**: naturally humans have hard time per
ceiving big numbers. While data visualization is suppose to help us to con
ceptualize large volumes\, unless the dataset is carefully prepared\, 2D
charts rarely give us the intuitive grasp of magnitude. \n* **Perceptual d
e-humanization**: when examining charts it is easy to forget that we are d
ealing with activity in real world instead of lines/bars. \n\nAugmented/Mi
xed Reality can potentially solve all of the issues listed above by presen
ting an intuitive and interactive environment for data exploration. Three
dimensional space provides conditions to create complex data stories with
more “realistic assets” (beyond lines and bars). The talk would presen
t the architecture required to create MR data visualization story with Pyt
hon (70% of architecture)\, starting with drawing 3D assets in a data-driv
en way and finishing with deployment on MR devices. \n\nAnna Nicanorova
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Let's build a Slack app!
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T110000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T123000
DESCRIPTION:In this workshop\, we'll guide you through the process and too
ls needed to build your first Slack bot. We'll go over our Python SDKs\, w
alk through an example app and talk about what's going on under-the-hood a
s your app interacts with Slack's APIs. \n\nThis workshop will be beginner
-friendly\, but also allow those with prior experience with Slack to learn
about new features\, tools and ask us questions directly.\n\n\nJason Roch
e
LOCATION:Room 13
END:VEVENT
BEGIN:VEVENT
SUMMARY:Deploy Your Python Apps Quickly with Heroku
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T110000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T123000
DESCRIPTION:A crash course on deploying Python applications to Heroku. We'
ll take a pre-made Django app\, spin it up locally\, then deploy it to Her
oku. We'll then go over the tools that Heroku provides for managing your a
pplications.\n\nIan Stapleton Cordesco
LOCATION:Room 23
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python with Visual Studio and Visual Studio Code – tips and tric
ks for a more productive developer l
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T110000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T123000
DESCRIPTION:Developers have many choices when it comes to writing Python c
ode from editors to IDEs\, from free tools to paid\, from tools designed s
pecifically for their platform to tools running on many\, from open source
to closed source tools and so on… In this demo-driven session\, we’ll
show you why we think the cross-platform\, free\, and open source Visual
Studio Code will become your favorite tool for all your Python needs. From
editing to linting\, to debugging and more\, you will learn how to get st
arted\, as well as tips and tricks to save you time in your everyday devel
opment lifecycle. You will also learn when to consider Visual Studio 2017\
, which for certain scenarios (such as mixed C and Python development)\, c
an offer you more than any other Python tool on the planet.\n\nSteve Dower
LOCATION:Room 25C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Coding as Enrichment: How to Empower Students with Creative Coding
Experiences
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T112000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T115000
DESCRIPTION:My goal is to share resources\, pedagogy\, best practices and
lessons learned in bringing hands-on coding workshops to underserved K-12
students.\n\nFor fall 2017 over ten weeks\, [Code Park Houston](https://co
deparkhouston.org/)\, a a 501(c)(3) non-profit organization piloted a fre
e after-school Creative Coding program at [BakerRipley - Leonel Castillo |
BakerRipley](https://www.bakerripley.org/locations/leonel-castillo-commun
ity-center). We focused on **Coding as Enrichment** by encouraging our stu
dents to pursue creative endeavors such as storytelling with Minecraft and
making procedural art with [p5.js | get started](https://p5js.org/get-sta
rted/). Instead of traversing a programming language’s syntax peculiarit
ies\, our students drew colorful lines\, made interactive buttons\, and sh
ared their creations.\n\nWe also worked to provide a positive and collabor
ative learning environment. Our students were encouraged to learn by makin
g mistakes and exploring his or her own interests. In the process\, we jus
t happened to facilitate knowledge in coding\, problem-solving\, electroni
cs science and collaboration.\n\nWhen it comes to technology\, the arts ca
n be an unusual pathway to success. But we know and see that creativity is
the secret sauce that inspires the next generation of diverse and passion
ate students.\n\nThis program was a rewarding experience for everyone invo
lved. We faced and overcame many challenges. For the talk I would like to
share:\n\n**Tools of the Trade** — what software and hardware we us
ed and why.\n**Classroom Set Up** — how to provide a positive and en
couraging learning environment.\n**Best Practices for Tech Educators** 
— why we are learning facilitators.\n**Open Source Creative Coding Cur
riculum** — open source curriculum to be used in your own classroom!
\n\nWanjun Zhang
LOCATION:Room 25A\, Room 25B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Oops! I Committed My Password To GitHub!
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T120000
DESCRIPTION:What do AWS\, GitHub\, Travis CI\, DockerHub\, Google\, Stripe
\, New Relic\, and the rest of the myriad of services that make our develo
per life easier have in common?\n They all give you secret keys to authent
icate with. Did you ever commit one of these to source control by mistake?
That happened to me more times than I'm willing to admit!\n\nIn this talk
I'm going to go over the best practices to follow when when writing Pytho
n applications that prevent this type of accident.\n\nMiguel Grinberg
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Inside the Cheeseshop: How Python Packaging Works
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T120000
DESCRIPTION:Questions and confusion about the Python packaging ecosystem a
bound. What is this `setup.py` file? What's the difference between wheels
and eggs? Do I use setuptools or distutils? Why should I use twine? Do I p
ut my projects dependencies in a `requirements.txt` or in `setup.py`? How
do I just get my module up on PyPI? Wait\, what is Warehouse?\n\nThis talk
will identify the key tools one might encounter when trying to distribute
Python software\, what they are used for\, why they exist\, and their his
tory (including where their weird names come from). In addition\, we'll se
e how they all work together\, what it takes to make them work\, and what
the future has in store for Python packaging.\n\nDustin Ingram
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:How Netflix does failovers in 7 minutes flat
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T120000
DESCRIPTION:During peak hours\, Netflix video streams make up more than on
e third of internet traffic. Netflix must stream uninterrupted in the face
of widespread network issues\, bad code deploys\, AWS service outages\, a
nd much more. Failovers make this possible.\n\nFailover is the process of
transferring all of our traffic from one region in AWS to another. While m
ost of Netflix runs on Java\, failovers are powered entirely by Python. Py
thon's versatility and rich ecosystem means we can use it for everything f
rom predicting our traffic patterns to orchestrating traffic movement\, wh
ile dealing with the eventual consistency of AWS.\n\nToday\, we can shift
all of our 100 million+ users in under seven minutes. A lot of engineering
work went into making this possible. The issues we faced and solutions we
created have broad application to availability strategies in the cloud or
the datacenter.\n\nAmjith Ramanujam
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Strategies to Edit Production Data
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T120000
DESCRIPTION:At some point\, we all find ourselves at a SQL prompt making e
dits to the production database. We know it's a bad practice and we always
intend to put in place safer infrastructure before we need to do it again
— what does a better system actually look like?\n\nThis talk progresses
through 5 strategies for teams using a Python stack to do SQL writes agai
nst a database\, to achieve increasing safety and auditability:\n\n(1) Dev
elop a process for raw SQL edits \n(2) Run scripts locally\n(3) Deploy and
run scripts on an existing server\n(4) Use a task runner\n(5) Build a Scr
ipt Runner service\n\nWe’ll talk about the pros and cons of each strateg
y and help you determine which one is right for your specific needs.\n\nBy
the end of this talk you’ll be ready to start upgrading your infrastruc
ture for making changes to your production database safely!\n\nJulie Qiu
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Practical Sphinx
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T120000
DESCRIPTION:Each member of your project team uses something different to d
ocument\ntheir work -- RestructuredText\, Markdown\, and Jupyter Notebooks
. How do\nyou combine all of these into useful documentation for your proj
ect's users.\nSphinx and friends to the rescue!\n\nLearn how to integrate
documentation into your everyday development\nworkflow\, apply best practi
ces\, and use modern development tools and\nservices\, like Travis CI and
ReadTheDocs\, to create engaging and up-to-date\ndocumentation which users
and contributors will love.\n\n\n\nCarol Willing
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:DragonPaint – Bootstrapping Small Data to Color Cartoons
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T120000
DESCRIPTION:The creation of sufficient quantities of labeled training data
is one of the biggest challenges for machine learning applications\, espe
cially when the data itself must be created\, not just labeled. DragonPain
t presents a generalizable strategy for minimizing the manual creation of
data using rule based algorithms to automate the creation of a restricted
subset of data and then bootstrapping to the automated creation of unrestr
icted (rule breaking) training and test data. A gentle introduction to com
puter vision\, graphics and machine learning\, we use Python and geometry
to build an image data set for a TensorFlow model. \n\nGretchen Greene
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Augmenting Human Decision Making with Data Science
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T120000
DESCRIPTION:Do we even need humans? Humans and data science are flawed on
their own. Humans lack the ability to process large volumes of information
. Machines lack intuition\, empathy\, and nuance. You'll learn how to guid
e users of expert-use systems by applying data science to their user exper
ience. This allows us to take advantage of the human-touch while leveragin
g our large datasets. What is the relationship between human decisions and
algorithms? Are we thinking about data science all wrong? In this talk\,
you'll learn the ways we balance human decisions and data science througho
ut our applications\, the challenges we have faced along the way and the f
uture of the relationship between humans and data.\n\nKelsey Pedersen
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Code like an accountant: Designing data systems for accuracy\, res
ilience and auditability
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T120000
DESCRIPTION:As engineers\, we care a lot about the reliability of our appl
ications. When a website falls over\, pagers go off\, and engineers burst
into action to bring a site back to life. Postmortems are written\, and t
eams develop strategies to prevent similar failures in the future.\n\nBut
what about the reliability of our data? Would _you_ trust financial report
s built on your data? \n\nIf not\, what can you do to improve data health?
If you _would_ trust these reports\, how can you prove to customers\, inv
estors\, and auditors alike that they should too?\n\nIn this talk\, you’
ll learn to apply strategies from the world of dev-ops to data. You’ll l
earn about questions auditors ask that can help you pinpoint data problems
. You’ll also learn some accounting-specific tools for accurate and time
ly record keeping that I’ve found fascinating and helpful!\n\n\n\nSophie
Rapoport
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Performance Python: Seven Strategies for Optimizing Your Numerical
Code
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T120000
DESCRIPTION:Python provides a powerful platform for working with data\, bu
t often the most straightforward data analysis can be painfully slow. When
used effectively\, though\, Python can be as fast as even compiled langua
ges like C. This talk presents an overview of how to effectively approach
optimization of numerical code in Python\, touching on tools like numpy\,
pandas\, scipy\, cython\, numba\, and more.\n\nJake VanderPlas
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Counter\, Gauge\, Upper 90 - Oh my!
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T113000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T120000
DESCRIPTION:Setting up application monitoring is often an afterthought\, a
nd in the speaker's opinion can be a bit overwhelming to get started with.
What is a `metric`? What is a `gauge`? What is a `counter`? What's that `
upper 90` metric you have up on your `dashboard`? And what *all* metrics s
hould I monitor?\n\nThis talk aims to get you started on the monitoring jo
urney in Python. In addition to clearing up some of the jargon\, we will l
ook at `statsd` and `prometheus` monitoring systems and how to integrate o
ur applications with these.\n\nWithout the numbers\, we are really flying
blind!\n\nAmit Saha
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Beyond Unit Tests: Taking Your Testing to the Next Level
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T125500
DESCRIPTION:You've used pytest and you've used mypy\, but bugs are still s
lipping through your code. What's next? In this talk\, we cover two simple
but powerful tools for keeping your code problem-free. Property-based tes
ting\, provided by the [Hypothesis](https://hypothesis.readthedocs.io/en/l
atest/) library\, lets you run hundreds of tests from a single template. C
ontracts\, via [dpcontracts](https://github.com/deadpixi/contracts)\, make
your program test itself. You'll learn how and why to use these tools and
how to combine them with the rest of your testing suite.\n\n\nHillel Wayn
e
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:import time_travel: A Primer on Timezones in Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T125500
DESCRIPTION:Timezones are one of those things every programmer loves to ha
te. Most of us\, at\nleast in the US\, just try to ignore them and hope no
body notices. Then twice a\nyear\, we fear with impending doom those 3 sma
ll words: Daylight Saving Time.\n\nIt doesn't have to be this way. Armed w
ith some best practices and a little help\nfrom supporting libraries\, tim
ezone-related bugs can be a thing of the past.\n\nThis talk explores stand
ard library and 3rd party library timezone support\, as\nwell as persisten
ce and serialization techniques for timezone-aware datetimes.\nBy the end
of the talk\, the listener should feel confident in their ability to\ncorr
ectly store\, send\, receive\, and manipulate datetime objects in any time
zone.\n\nDavid Gouldin
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Colossal Cave Adventure in Python... in the browser!
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T125500
DESCRIPTION:Colossal Cave\, also known as Adventure or ADVENT\, is the ori
ginal text adventure. It was written in FORTRAN IV and there is practicall
y no way to run the original program without translating it. We'll explore
software archeology to write a Python interpreter to run the FORTRAN code
as-is\, without translating it. Come learn about pre-ASCII and 36-bit int
egers and writing interpreters in Python!\n\nAnd\, we'll show how to use B
eeWare's Batavia Python interpreter (in JavaScript) to execute the program
. FORTRAN IV in Python in JavaScript in your browser!\n\nChristopher Swens
on
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Behavior-Driven Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T124000
DESCRIPTION:Behavior-Driven Development (BDD) is gaining popularity as an
improved way to collaborate over product features and tests. In Python\, *
*behave** is one of the leading BDD test frameworks. Using **behave**\, te
ams write Gherkin behavior scenarios (e.g.\, tests) in plain language\, an
d then programmers write Python code to automate the steps. BDD testing is
great because tests are self-documenting and steps abide by the DRY princ
iple. An example test could be:\n\n> Given the DuckDuckGo home page is dis
played\n> When the user searches the phrase "Python"\n> Then search result
s for "Python" are shown\n\nThis talk will teach how to use **behave** to
develop well-designed test scenarios and a robust automation framework. It
will focus on the layers of the behave framework: feature files\, step de
finitions\, support classes\, and config files. A full example project wil
l be hosted on GitHub for audience members to reference after the talk.\n\
n\n\nAndrew Knight
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:"WHAT IS THIS MESS?" - Writing tests for pre-existing code bases
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T124000
DESCRIPTION:Many of us practice test driven development\, and pride oursel
ves in our code coverage. This is relatively easy to do when you begin a n
ew project\, but what happens when you take over an existing code base wit
h little to no tests? Where and how do you start writing tests? This task
can be very intimidating and frustrating\, but can be accomplished!\n\nThi
s talk will run through some common approaches and methodologies for addin
g test coverage to pre-existing code (that you might not even be familiar
with at all). The next time you take over an untested monolith\, you will
be able to do the right thing and start writing tests instead of hoping f
or the best!\n\nJustin Crown
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Demystifying the Patch Function
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T125500
DESCRIPTION:One of the most challenging and important thing fors for Pytho
n developers learn is the unittest mock library. The patch function is in
particular confusing- there are many different ways to use it. Should I us
e a context manager? Decorator? When would I use it manually? Improperly u
sed patch functions can make unit tests useless\, all the while making the
m look as if they are correctly testing code.Let’s learn how to wield pa
tch with confidence!\n\n\nLisa Roach
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:One weird trick to becoming a better software developer
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T124000
DESCRIPTION:Those of us who have worked in software development for longer
than a few years probably feel we have an intuitive sense of what a great
developer is. Some traits come more easily to mind than others when it co
mes to identifying a great developer. In this talk we will take a slightly
different approach to evaluating software development best practices\, an
d identify one underrated skill common to great software developers: empat
hy. I hope to demonstrate that cognitive and emotional empathy skills are
critical to good software development. We will explore ways to cultivate t
his trait in order to become better developers\, both for our own sakes an
d for the sake of the teams in which we work.\n\nEsther Nam
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Programming microbes using Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T124000
DESCRIPTION:The genome of a typical microbe contains roughly 5 million bas
e pairs of DNA including > 4000 genes\, which provide the instructions for
cellular replication\, energy metabolism\, and other biological processes
. At Zymergen\, we edit DNA to design microbes with improved ability to pr
oduce valuable materials and molecules. Microbes with these edits are buil
t and tested in high throughput by our fleet of robots. Genomes are far to
o large for exhaustive search\, so identifying which edits to make require
s machine learning on non-standard features. Our task to extract informati
on from trees\, networks\, and graphs of independently representable knowl
edge bases (metabolism\, genomics\, regulation)\, in ways that respect the
strongly causal relationships between systems. In this talk\, I will desc
ribe how we use Python’s biological packages (e.g. BioPython\, CobraPy\,
Escher\, goatools) and other packages (NetworkX\, TensorFlow\, PyStan\, A
irFlow) to extract machine learning features and predict which genetic edi
ts will produce high-performance microbes.\n\nJanet Matsen
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Reinventing the Parser Generator
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T125500
DESCRIPTION:Writing lexers and parsers is a complex problem that often inv
olves the use of special tools and domain specific languages (e.g.\, the l
ex/yacc tools on Unix). In 2001\, I wrote Python versions of these tools
which can be found in the PLY project. PLY predates a huge number of mode
rn Python features including the iteration protocol\, generators\, decorat
ors\, metaclasses\, and more. As such\, it relied on a variety of clever
hacks to layer a domain specific parser specification language on top of P
ython itself. \n\nIn this talk\, I discuss a modernization of the PLY proj
ect that abandons its past and freely abuses modern Python features includ
ing advanced metaclasses\, guaranteed dictionary ordering\, class decorato
rs\, type hints\, and more. The result of this work can be found in the
SLY project. However\, this talk isn't so much about SLY as it is focused
on how far you can push Python metaprogramming features to create domain-
specific languages. Prepare to be horrified--and to write code that will
break your IDE. \n \n\nDavid Beazley
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:HOWTO Write a Function
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T121000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T125500
DESCRIPTION:A function is a small chunk of code that does useful work. You
r job when writing a function is to do it in a way that it easy to read. B
ased on over 15 years of code reviews here are some tips and guidelines I
give again and again. \n\nJack Diederich
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Type-checked Python in the real world
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T131000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T134000
DESCRIPTION:You've heard about Python type annotations\, but wondered if t
hey're useful in the real world? Worried you've got too much code and can'
t afford to annotate it? Type-checked Python is here\, it's for real\, an
d it can help you catch bugs and make your code easier to understand. Come
learn from our experience gradually typing a million-LOC production Pytho
n application!\n\nType checking solves real world problems in production P
ython systems. We'll cover the benefits\, how type checking in Python work
s\, how to introduce it gradually and sustainably in a production Python a
pplication\, and how to measure success and avoid common pitfalls. We'll e
ven demonstrate how modern Python typechecking goes hand-in-hand with duck
-typing! Join us for a deep dive into type-checked Python in the real worl
d.\n\nCarl Meyer
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Systemd: why you should care as a Python developer
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T131000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T134000
DESCRIPTION:Done! Your shiny new application is functionally complete and
ready to be deployed to production! But how exactly do you deploy properly
on Linux? Wonder no more! In 30 minutes\, this talk explains how you can
harness the power of the init system and systemd to solve common deploymen
t problems\, including some that you didn't even know you had. Examples of
things we will cover:\n\n* How to secure your system by having: private /
tmp for your process\, read-only paths so that your process can not write
to them\, inaccessible paths\, protect users home\, network access\, bin d
irectories\, etc.\n* How to limit the resources you app can consume.\n* Ho
w to interact directly with systemd\, so it can start transient units\, st
art/stop services\, mount disks\, resolve addresses.\n* How to isolate you
r service without containers.\n* How to isolate your service using contain
ers (using systemd to spawn a namespace).\n\nAll this will be covered from
a Python developer's perspective.\n\n\nAlvaro Leiva Geisse
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:There and Back Again: Disable and re-enable garbage collector at I
nstagram
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T131000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T134000
DESCRIPTION:Python's cyclic garbage collector wonderfully hides the comple
xity of memory management from the programmer. But we pay the price in per
formance. Ever wondered how that works? In this talk\, you'll learn how ga
rbage collection is designed in Python\, what the tradeoffs are and how In
stagram battled copy-on-write memory issues by disabling the garbage colle
ctor entirely.\n\nYou'll also learn why that isn't such a great idea after
all and how we ended up extending the garbage collector API which allowed
us to (mostly) re-enable garbage collection. We'll discuss our upstream c
ontributions to the garbage collector that landed in Python 3.6 and 3.7.\n
\nThis is an in-depth talk about memory management but no prior experience
with CPython internals is necessary to follow it.\n\nZekun Li
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Effortless Logging: A deep dive into the logging module
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T131000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T134000
DESCRIPTION:Logs are our best friend\, especially on those late nights whe
n we try to troubleshoot a problem in production that was written by a co-
worker who is on vacation. Logs are the main way to know what is happening
with an application at runtime\, but we don’t realize how important the
y are until we actually need them. Unfortunately\, they are usually an und
er-estimated part of the development process.\n\nThis talk aims to transmi
t the need for the logging module\, briefly explains how to use it and how
it is built\, and dives into all the complexity that is hidden to us. Thi
s will help attendees not just understand all the magic that allows us to
inspect our applications at runtime\, but also to avoid mistakes and adapt
the module to our needs for more esoteric scenarios.\n\nThe talk is struc
tured to simplify the understanding of the logging module. Many people hav
e read the documentation\, but still struggle to fully understand what is
happening under the hood. This talk aims to eliminate that barrier by pres
enting it in an easier-to-digest manner.\n\n\nMario Corchero
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Efficient shared memory data structures
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T131000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T134000
DESCRIPTION:Multithreading makes shared memory easy\, but true parallelism
next to impossible. Multiprocessing gives us true parallelism\, but it ma
kes sharing memory very difficult\, and high overhead. In this talk\, we'l
l explore techniques to share memory between processes efficiently\, with
a focus on sharing read-only massive data structures.\n\nClaudio Freire
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Using List Comprehensions and Generator Expressions For Data Proce
ssing
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T164000
DESCRIPTION:Creating one list out of another list is a very common thing t
o do in Python\, so common that Python includes a special construct just f
or this purpose: list comprehensions. We'll get hands-on experience using
list comprehensions\, set comprehensions\, and dictionary comprehensions
during this tutorial. We'll also learn how and when we can slightly tweak
our comprehensions to turn them into more performant generator expression
s.\n\nWe will learn some tricks for figuring out which of our "for" loops
can be rewritten as comprehensions and which cannot. We will focus heavil
y on **code readability and code clarity** and we'll discuss when comprehe
nsions help readability and when they hurt.\n\nAll new skills will be acqu
ired through practice. We'll work through many exercises both individuall
y and as a group. All students will also receive a cheat sheet which can
be used for guidance during future comprehension-writing journeys.\n\nA la
ptop with Python installed is required for this workshop.\n\nTrey Hunner
LOCATION:Room 09
END:VEVENT
BEGIN:VEVENT
SUMMARY:Workflow Engines Up and Running
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T164000
DESCRIPTION:Join us for an introduction hands on tutorial of Python based
workflow engines.\n\nYou will get to create\, run and monitor a real time
workflow job with two Python based popular workflow engines: Airflow and L
uigi.\nDevelopers may have some long running batch jobs and may be using o
ne of the tools we will cover or might be using a different engine\, and w
ould like a more in depth hands-on experience learning these tools.\n\nIan
Zelikman\, Austin Hacker
LOCATION:Room 15
END:VEVENT
BEGIN:VEVENT
SUMMARY:Practical API Security
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T164000
DESCRIPTION:With the dominance of Mobile Apps\, Single Page Apps for the W
eb\, and Micro-Services\, we are all building more APIs than ever before.
Like many other developers\, I had struggled with finding the right mix of
security and simplicity for securing APIs. Some standards from the IETF h
ave made it possible to accomplish both. Let me show you how to utilize ex
isting libraries to lock down you API without writing a ton of code.\n\nIn
this tutorial\, you will learn how to write a secure API with future proo
f security utilizing JOSE. JOSE is a collection of complimentary standards
: JWT\, JWE\, JWS\, JWA\, and JWK. JOSE is used by OAuth\, OpenID\, and ot
hers to secure communications between APIs and consumers. Now you can use
it to secure your API.\n\nAdam Englander
LOCATION:Room 16
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python Epiphanies
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T164000
DESCRIPTION:This tutorial is for those who've been using Python for a whil
e and would consider themselves at an intermediate level but are looking t
o get to the next level.\n\nWe'll explore core language features\, look a
bit under the hood\, and to understand and learn how not to be too afraid
of bytecode\, monkey patching\, decorators\, and metaclasses.\n\nIn many w
ays Python is very similar to other programming languages. However\, in a
few subtle ways it is quite different\, and many software developers new
to Python\, after their initial successes\, hit a plateau and have difficu
lty getting past it. Others don't hit or perceive a plateau\, but still f
ind some of Python's features a little mysterious or confusing. This tuto
rial will help deconstruct some common incorrect assumptions about Python.
\n\nIf in your use of Python you sometimes feel like an outsider\, like yo
u're missing the inside jokes\, like you have most of the puzzle pieces bu
t they don't quite fit together yet\, or like there are parts of Python yo
u just don't get\, this may be a good tutorial for you.\n\nStuart Williams
LOCATION:Room 19
END:VEVENT
BEGIN:VEVENT
SUMMARY:Parallel Data Analysis with Dask
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T164000
DESCRIPTION:The libraries that power data analysis in Python are essential
ly limited to a single CPU core and to datasets that fit in RAM. Attendees
will see how dask can parallelize their workflows\, while still writing w
hat looks like normal python\, NumPy\, or pandas code.\n\nDask is a parall
el computing framework\, with a focus on analytical computing. We'll start
with `dask.delayed`\, which helps parallelize your existing Python code.
We’ll demonstrate `dask.delayed` on a small example\, introducing the co
ncepts at the heart of dask like the *task graph* and the *schedulers* tha
t execute tasks. We’ll compare this approach to the simpler\, but less f
lexible\, parallelization methods available in the standard library like `
concurrent.futures`.\n\nAttendees will see the high-level collections dask
provides for writing regular Python\, NumPy\, or Pandas code that is then
executed in parallel on datasets that may be larger than memory. These hi
gh level collections provide a familiar API\, but the execution model is v
ery different. We'll discuss concepts like the GIL\, serialization\, and o
ther headaches that come up with parallel programming. We’ll use dask’
s various schedulers to illustrate the differences between multi-threaded\
, multi-processes\, and distributed computing.\n\nDask includes a distribu
ted scheduler for executing task graphs on a cluster of machines. We’ll
provide each person access to their own cluster.\n\nTom Augspurger\, James
Crist\, Martin Durant
LOCATION:Room 20
END:VEVENT
BEGIN:VEVENT
SUMMARY:Getting Started with Blockchains and Cryptocurrencies in Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T164000
DESCRIPTION:Blockchains and cryptocurrencies are getting more popular ever
yday. The rise and wide adoption of cryptocurrencies such as Bitcoin has a
ttracted a lot of attention\, ranging from developers to bankers. However\
, many people are still not very comfortable with the ideas and concepts b
ehind the blockchain\, and workings of cryptocurrencies such as Bitcoin. T
herefore\, it stops them from entering and exploring the blockchain and cr
yptocurrency world.\n\n\nIn this tutorial\, we first explore the cryptogra
phic ideas behind the cryptocurrencies\, including hashing\, public/privat
e cryptography. This will be followed by the basics of a simplified blockc
hain. We cover mining\, incentives\, payment records\, ownership\, etc. Th
en we delve into working and playing with a private Bitcoin network\, by i
mplementing simple programs in Python to create public/private keys\, acco
unts\, and transactions. We further look into services that provide exchan
ge rate data on cryptocurrencies and analyze the data.\n\nAmirali Sanatini
a
LOCATION:Room 21
END:VEVENT
BEGIN:VEVENT
SUMMARY:Faster Python Programs - Measure\, don't Guess
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T164000
DESCRIPTION:Optimization can often help to make Python programs faster or
use less memory. Developing a strategy\, establishing solid measuring and
visualization techniques as well as knowing about algorithmic basics and d
atastructures are the foundation for a successful optimization. The tutori
al will cover these topics.\nExamples will give you a hands-on experience
on how to approach efficiently.\n\nPython is a great language. But it can
be slow compared to other languages\nfor certain types of tasks. If applie
d appropriately\, optimization may reduce\nprogram runtime or memory consu
mption considerably. But this often comes at a price. Optimization can be
time consuming and the optimized program may be more complicated. This\, i
n turn\, means more maintenance effort. How do you find out if it is worth
while to optimize your program? Where should you start?\n\nThis tutorial w
ill help you to answer these questions. You will learn how\nto find an op
timization strategy based on quantitative and objective criteria.\nYou wil
l experience that one's gut feeling what to optimize is often wrong.\n\nTh
e solution to this problem is: „Measure\, Measure\, and Measure!“. You
will\nlearn how to measure program run times as well as profile CPU and m
emory.\nThere are great tools available. You will learn how to use some of
them.\nMeasuring is not easy because\, by definition\, as soon as you sta
rt to measure\,\nyou influence your system. Keeping this impact as small a
s possible is\nimportant. Therefore\, we will cover different measuring te
chniques.\n\nFurthermore\, we will look at algorithmic improvements. You w
ill see that the\nright data structure for the job can make a big differen
ce. Finally\, you will\nlearn about different caching techniques.\n\nMike
Müller
LOCATION:Room 22
END:VEVENT
BEGIN:VEVENT
SUMMARY:Statistics and probability: your first steps on the road to data s
cience
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T164000
DESCRIPTION:An introduction to statistics and probability geared toward en
abling attendees to understand the capabilities and limitations of statist
ics and probability and to help them implement calculations in their proje
cts. Where possible/feasible\, attendees will build their own tools to hel
p them grasp the underlying concepts. In addition\, attendees will be intr
oduced to the pre-built tools in world-class Python and data science libra
ries to help them capitalize on the efficiencies and utility that those li
braries offer.\n\nChalmer Lowe
LOCATION:Room 09
END:VEVENT
BEGIN:VEVENT
SUMMARY:Intermediate testing with Django: Outside-in TDD and Mocking effe
ctively
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T164000
DESCRIPTION:Once developers have got the hang of the basics of testing\, p
roblems of applying it in the real world soon start to manifest themselves
\, and common questions come up. \n\n- What order should I write my tests
and code in to avoid wasting time on blind alleys? \n- If I'm using Mock
s in my tests to avoid external dependencies\, how do I avoid getting stuc
k with unwieldy\, unreadable tests that don't actually tell me when things
have gone wrong?\n- Unit tests vs integration tests vs functional tests\,
which should I use when\, and what are the trade-offs?\n\nIn this tutoria
l we'll work through an example of using an existing Django codebase\, add
ing a new feature\, and experimenting with different testing techniques al
ong the way to illustrate the pros and cons of each\n\n- bottom-up vs outs
ide-in development\n- double-loop TDD\n- using Mocks to isolate applicatio
n layers from each other\n- "listen to your tests"\, and learning to use u
gly or convoluted tests as a signal for improving design.\n\nSome familiar
ity with Django is desirable\, although skills learned in other web framew
orks are transferrable. By the end\, you'll be able to go back to your ow
n projects with practical experience\, and a new way of thinking about how
to optimise your tests for your own circumstances.\n\n\nHarry Percival
LOCATION:Room 10
END:VEVENT
BEGIN:VEVENT
SUMMARY:Beyond Django Basics
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T164000
DESCRIPTION:Finished with the official Django getting started guide\, and
not sure what to do next? This tutorial has you covered. \n\nWe'll exten
d the blog built in the official guide\, using a variety of slightly more
advanced Django features. Topics to be covered include: extending the in-
built user model\, using the in-built login system\, enhancing forms\, usi
ng view mixins and overriding view methods\, and changing up your database
backend. \n\nWith each extension\, we'll talk about not just how to use
these features but also *why* you'd want to use them. We'll conclude by t
alking about other Django features you may want to learn about as you grow
more proficient with this versatile framework.\n\nShauna Gordon-McKeon
LOCATION:Room 15
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python by Immersion
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T164000
DESCRIPTION:A fast introduction to Python for software developers with exp
erience in other programming languages. Instead of a traditional top-down
presentation of Python's features\, syntax\, and semantics\, students are
immersed in the language bottom-up with hundreds of small examples using t
he interactive interpreter to quickly gain familiarity with most of the co
re language features. Special attention is given to concepts in Python tha
t often trip up those new to the language.\n\nNote that this tutorial is n
ot designed to pair with the Python by Epiphanies tutorial\, i.e. we recom
mend you sign up for one or the other\, but no both.\n\nStuart Williams
LOCATION:Room 16
END:VEVENT
BEGIN:VEVENT
SUMMARY:Network Analysis Made Simple: Part II
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T164000
DESCRIPTION:Daenerys or Jon Snow? Diffusion of news through Twitter? JFK\,
ORD or ATL\, do these codes look familiar? In this tutorial we build up o
n the fundamentals of Part 1 tutorial and look at various applications of
network analysis to real world datasets like the US Airport Dataset\, Game
of Thrones character co-occurrence network\, and foray into diffusion pro
cesses on networks. \n\n\nMridul Seth\, Eric Ma
LOCATION:Room 19
END:VEVENT
BEGIN:VEVENT
SUMMARY:Docker for Data Science
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T164000
DESCRIPTION:Jupyter notebooks simplify the process of developing and shari
ng Data Science projects across groups and organizations. However\, when w
e want to deploy our work into production\, we need to extract the model f
rom the notebook and package it up with the required artifacts (data\, dep
endencies\, configurations\, etc) to ensure it works in other environments
. Containerization technologies such as Docker can be used to streamline t
his workflow.\n\nThis hands-on tutorial presents Docker in the context of
Reproducible Data Science - from idea to application deployment. You will
get a thorough introduction to the world of containers\; learn how to inco
rporate Docker into various Data Science projects\; and walk through the p
rocess of building a Machine Learning model in Jupyter and deploying it as
a containerized Flask REST API.\n\nAly Sivji\, Joe Jasinski\, tathagata d
asgupta (t)
LOCATION:Room 20
END:VEVENT
BEGIN:VEVENT
SUMMARY:Exploratory Data Visualization with Vega\, Vega-Lite\, and Altair
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T164000
DESCRIPTION:Exploring a new dataset visually can provide quick intuition i
nto the relationships within the data. There are a few well-developed visu
alization packages in Python\, but they often have very imperative APIs th
at force the user to focus on the mechanics of the visualization – tick
locations\, axis limits\, legends\, etc. – rather than the salient relat
ionships within the data.\n\nThis tutorial will introduce data visualizati
on with [Altair](http://altair-viz.github.io)\, a package designed for exp
loratory visualization in Python that features a declarative API\, allowin
g data scientists to focus more on the data than the incidental details. A
ltair is based on the [Vega](https://vega.github.io/) and [Vega-Lite](http
s://vega.github.io/vega-lite/) visualization grammars\, and thus automatic
ally incorporates best practices drawn from recent research in effective d
ata visualization.\n\nThe tutorial will provide an introduction to the Alt
air package and its API\, but more importantly will dive into the core con
cepts of effective data visualization that can be applied using any visual
ization package or tool.\n\nJake VanderPlas
LOCATION:Room 21
END:VEVENT
BEGIN:VEVENT
SUMMARY:Using pandas for Better (and Worse) Data Science
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T164000
DESCRIPTION:The pandas library is a powerful tool for multiple phases of t
he data science workflow\, including data cleaning\, visualization\, and e
xploratory data analysis. However\, proper data science requires careful c
oding\, and pandas will not stop you from creating misleading plots\, draw
ing incorrect conclusions\, ignoring relevant data\, including misleading
data\, or executing incorrect calculations.\n\nIn this tutorial\, you'll p
erform a variety of data science tasks on a handful of real-world datasets
using pandas. With each task\, you'll learn how to avoid either a pandas
pitfall or a data science pitfall. By the end of the tutorial\, you'll be
more confident that you're using pandas for good rather than evil!\n\nPart
icipants should have a working knowledge of pandas and an interest in data
science\, but are not required to have any experience with the data scien
ce workflow. Datasets will be provided by the instructor.\n\nKevin Markham
LOCATION:Room 22
END:VEVENT
BEGIN:VEVENT
SUMMARY:Introduction to Digital Signal Processing
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180509T132000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180509T164000
DESCRIPTION:Spectral analysis is an important and useful technique in many
areas of science and engineering\, and the Fast Fourier Transform is one
of the most important algorithms\, but the fundamental ideas of signal pro
cessing are not as widely known as they should be.\n\nFortunately\, Python
provides an accessible and enjoyable way to get started.  In this tutori
al\, I present material from my book\, *Think DSP*\, and from a class I te
ach at Olin College.  We will work with audio signals\, including music a
nd other recorded sounds\, and visualize their spectrums and spectrograms.
 We will synthesize simple sounds and learn about harmonic structure\, c
hirps\, filtering\, and convolution.\n\nAllen Downey
LOCATION:Room 10
END:VEVENT
BEGIN:VEVENT
SUMMARY:Hard Shouldn't be Hardship: Supporting Absolute Novices to Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T133000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T140000
DESCRIPTION:When we tell novices that programming is hard\, what are we wa
rning them about? The intent may be to impress upon learners the importanc
e of taking the workload seriously and starting early on the homework. How
ever\, “hard” is a loaded word and leaving novices alone with that wor
d and their imaginations can create an unbounded variable\, normalizing em
otional extremes and all nighters. The instructor often has no idea that
"hard" has become "hardship".\n\nAn instructor's expertise can become a bl
indspot. We've learned what is normal through experience and can easily fo
rget that we didn't know from the start. We presume that those experienci
ng trouble will stop and reach out for help\, but this will not always be
the case if they don't know those situations look like. Saying "when you'
re stuck" is not an objective\, actionable statement and leaves the unbou
nded suffering monster in play\, particularly for students who are afraid
of being a bother or being seen as asking a stupid question. We need to b
e clear with our learners about when difficult material has moved outside
our expectations and create a classroom environment where questions and cl
arifications are celebrated.\n\nThis talk will cover real and practical me
thods to help learners succeed in intensive programming courses\, such as
making your expectations clear\, helping your students recognize when and
how they should reach out for help\, creating a positive emotional atmosph
ere in the classroom\, and providing help efficiently. Topics will includ
e a ban on demotivational words\, strategies for soliciting questions\, th
e "2 hour" rule\, the educational benefits of live coding\, and recontextu
alizing error messages.\n\nElizabeth Wickes
LOCATION:Room 25A
END:VEVENT
BEGIN:VEVENT
SUMMARY:The Five Kinds of Python Functions
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T133000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T150000
DESCRIPTION:Audience level: Intermediate\n\nWe'll look at the wide variety
of ways that we can leverage Python functions. This will show provide hel
pful background in ordinary functions\, as well as callable objects and la
mbdas. We'll look closely at how to use generator functions\, also. The fi
fth type of function is a function wraps a special method\, like len().\n\
n\n\nSteven Lott
LOCATION:Room 23
END:VEVENT
BEGIN:VEVENT
SUMMARY:Learning Python like a Pro
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T133000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T140000
DESCRIPTION:There are many awesome tools to learn and teach Python to begi
nners. You can teach it with games\, interactive tutorials and microcontro
llers. However\, if one is to stay in the world of programming\, sooner or
later one needs to start using more professional tools such as IDEs\, deb
uggers\, profilers\, version control systems and databases. Needless to sa
y\, the transition from IDLE to PyCharm can be very frustrating.\n\nCreati
ng your own course is a time-consuming process\, but after the course has
been created you also need to check students' solutions which consumes eve
n more time. Wouldn't it be great to automate checking process and to conc
entrate on the creative part of content creation and explaining concepts t
o students?\n\nAs an attempt to solve these problems [EduTools plugin](htt
ps://plugins.jetbrains.com/plugin/10081-edutools) was created. It's a free
open-source plugin that can be installed on PyCharm/IntelliJ IDEA IDEs to
create and take programming courses right inside the IDE. This way a novi
ce programmer dives into professional environment straight away and an edu
cator gets a tool to automate solution checking. Not only the plugin allow
s to create courses\, but it also comes with integration with [Stepik MOOC
platform](https://stepik.org).\n\nIn this talk I'd like to demonstrate ho
w one can create a course with automated checks using EduTools plugin\, sh
are it with students and connect to Stepik platform to gather solutions an
d statistics. I'll show how to create a simple course containing theory\,
code task with feedback prompts and test with choice problems. I'll also s
how how to use our existing free courses in class with the ability to view
your students' solutions.\n\nLiana Bakradze
LOCATION:Room 25B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Bridging the gaps between Science and Engineering with Jupyter Not
ebooks
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T133000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T150000
DESCRIPTION:When it comes to data science in the enterprise\, organization
s often face a culture of self-interest that leads to unnecessary friction
between the Data Science and Software engineering teams\, causing ineffic
iencies\, and ultimately a failure to realize the full potential of data s
cience. In this talk\, we’ll show how Jupyter Notebooks combined with th
e PixieDust open source library can address the expectations and challenge
s around data science\, including the shortage of technical expertise\, ov
erly complex and inaccessible analytics tools and more. \n\nDavid Taieb
LOCATION:Room 13
END:VEVENT
BEGIN:VEVENT
SUMMARY:A Whirlwind Tour of Google Cloud Services
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T133000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T150000
DESCRIPTION:Did you know Google offers object recognition as an API? Join
us for a rapid tour of services you can add to your applications to save t
ime and add features to delight your users! All of these services can be u
sed wherever your core application is running -- as long as it has interne
t access. :)\n\n- Identify objects and locate faces in photos & videos wit
h Cloud Vision. Also speech to text and back!\n- Easy\, scalable logging w
ith Google Stackdriver\, then extract and graph metrics from those logs.\n
- Interactively query all of your logs (or any other data) with BigQuery.\
n- Connect your distributed processes with fast and reliable messaging usi
ng Cloud PubSub.\n- And maybe more? Or less! It will be interesting and us
eful.\n\nThis is explicitly a sponsored product tour - we promise to focus
on solving real problems with these tools and to include lots of interact
ive hands-on demos and example code. Some of the demos will be easy to fol
low along on your own laptop. Please bring yours if that sounds interestin
g!\n\nJon Wayne Parrott
LOCATION:Room 25C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Graph Databases: Talking about your Data Relationships with Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T134000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T142500
DESCRIPTION:Have you ever considered how many relationships you have in yo
ur virtual life? Every friend or page liked on Facebook\, each connection
in LinkedIn or Twitter account followed is a new relationship not only bet
ween two people\, but also between their data. In Brazil only\, we have 16
0 millions Facebook users. How can we represent and manipulate all these r
elationships? Graph Databases are storage systems that use graph structure
(nodes and edges) to represent and store data in a semantic way.\n\nThis
talk will begin approaching the challenge in representing relationships in
Relational Databases and introducing a more friendly solution using graph
. The definition of Graph Database\, its pros and cons and some available
tools (Neo4J\, OrientDB and TitanDB) will be shown during the presentation
\, as well as how these tools can be integrated with Python.\n\n\nNicolle
Cysneiros
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Win back lovely API: GraphQL in Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T134000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T142500
DESCRIPTION:RESTful has been the go-to choice of API world. Why another AP
I approach? To support more data-driven applications\, to provide more fle
xibility and ease unnecessary code and calls\, to address a wide variety o
f large-scale development problems\, **GraphQL** comes with HTTP\, JSON\,
Versioning\, Nullability\, Pagination\, and Server-side Batching & Caching
in mind to make API "Simple yet Powerful".\n\nBy applying [Graphene-Pytho
n](http://graphene-python.org/)\, a library for building GraphQL APIs in P
ython easily\, this talk will go through the background and challenges of
applying GraphQL as the new API service in a restaurant POS (point of sale
) system within complex cloud infrastructure in Python. Introduction\, tes
ting\, and live demo is included for sure.\n\nKeith Yang
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Software Library APIs: Lessons Learned from scikit-learn
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T134000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T142500
DESCRIPTION:When you think of an API\, you’re probably thinking about a
web service. But it’s important to think about your developer interface
when designing a software library as well! I’ll talk about the scikit-le
arn package\, and how its API makes it easy to construct complex models fr
om simple building blocks\, using three basic pieces: transformers\, estim
ators\, and meta-estimators. Then I’ll show how this interface enabled u
s to construct our own meta-estimator for model stacking. This will demons
trate how to implement new modeling techniques in a scikit-learn style\, a
nd more generally\, the value of writing libraries with the developer inte
rface in mind.\n\nLiz Sander
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY: Bayesian Non-parametric Models for Data Science using PyMC3
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T134000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T142500
DESCRIPTION:Nowadays\, there are many ways of building data science models
using Python\, including statistical and machine learning methods. I will
introduce probabilistic models\, which use Bayesian statistical methods t
o quantify all aspects of uncertainty relevant to your problem\, and provi
de inferences in simple\, interpretable terms using probabilities. A part
icularly flexible form of probabilistic models uses Bayesian *non-parametr
ic* methods\, which allow models to vary in complexity depending on how mu
ch data are available. In doing so\, they avoid the over-fitting that is c
ommon in machine learning and statistical modeling. I will demonstrate the
basics of Bayesian non-parametric modeling in Python\, using the PyMC3 pa
ckage. Specifically\, I will introduce two common types\, Gaussian process
es and Dirichlet processes\, and show how they can be applied easily to re
al-world problems using two examples.\n\nChristopher Fonnesbeck
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:The Hare Wins the Race: Getting the most out of RabbitMQ in distri
buted applications
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T135000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T142000
DESCRIPTION:As web apps grow increasingly complex\, distributing asynchron
ous work across multiple background workers is often a basic requirement o
f a performant app. While there are a variety of tools that exist to solv
e this issue\, one common feature among them is the need for a robust mess
aging platform.\n\n[RabbitMQ][1] is a stable\, full-featured\, and mature
solution that is usually found in the Python ecosystem backing [Celery][2]
implementations. While Celery's utilization of RabbitMQ works just fine
out of the gate\, users with complex workflows\, unique constraints\, or t
ight budgets can take advantage of the flexibility of RabbitMQ to streamli
ne their data pipelines and get the most out of their infrastructure.\n\nT
his talk will provide an overview of RabbitMQ\, review its varied message-
routing capabilities\, and demonstrate some of the ways in which these fea
tures can be utilized in Python applications to solve common yet difficult
use-cases.\n\n [1]: https://www.rabbitmq.com/\n [2]: http://www.celeryp
roject.org/\n\n\nSteven Sklar
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pumping up Python modules using Rust
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T135000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T142000
DESCRIPTION:If you’ve spent much time writing (or debugging) Python perf
ormance problems\, you’ve probably had a hard time managing memory with
its limited language support. \n\nIn this talk\, we venture deep into the
belly of the Rust Language to uncover the secret incantations for building
high performance and memory safe Python extensions using Rust. \n\nRust h
as a lot to offer in terms of safety and performance for high-level progra
mming languages such Python\, Ruby\, Js and more with its easy Foreign Fun
ction Interface capabilities which enables developers to easily develop bi
ndings for foreign code. \n\n\nvigneshwer dhinakaran
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Learning From Failure: Post Mortems
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T135000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T142000
DESCRIPTION:Unless you work on pacemakers or at NASA\, you've probably acc
epted the fact that you will make mistakes in your code\, and those mistak
es will creep into production. This talk will introduce you to post-mortem
s\, and how to use them as a vehicle for improving your code and your proc
ess.\n\nAlex Gaynor
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:A practical guide to Singular Value Decomposition in Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T135000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T142000
DESCRIPTION:Recommender systems have become increasingly popular in recent
years\, and are used by some of the largest websites in the world to pred
ict the likelihood of a user taking an action on an item. In the world of
Netflix\, this means recommending similar movies to the ones you have seen
. In the world of dating\, this means suggesting matches similar to people
you already showed interest in!\n\nMy path to recommenders has been an un
usual one: from a Software Engineer to working on matching algorithms at a
dating company\, with a little background on machine learning. With my kn
owledge of Python and the use of basic SVD (Singular Value Decomposition)
frameworks\, I was able to understand SVDs from a practical standpoint of
what you can do with them\, instead of focusing on the science.\n\nIn my t
alk\, you will learn 2 practical ways of generating recommendations using
SVDs: matrix factorization and item similarity. We will be learning the hi
gh-level components of SVD the "doer way": we will be implementing a simpl
e movie recommendation engine with the help of Jupiter notebooks\, the Mov
ieLens database\, and the Surprise recommendation package.\n\n\nDaniel Pyr
athon
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Clearer Code at Scale: Static Types at Zulip and Dropbox
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T135000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T142000
DESCRIPTION:Python now offers static types! Companies like Dropbox and Fac
ebook\, and open-source projects like Zulip\, use static types (with [PEP
484](https://www.python.org/dev/peps/pep-0484/) and [mypy](https://github.
com/python/mypy)) to make Python more productive and fun to work with —
in existing codebases from 40k lines to 4 million\, in Python 2 and 3\, an
d while preserving the conciseness and flexibility that make Python a grea
t language in the first place. I’ll describe how.\n\nReading and underst
anding code is a huge part of what we do as software developers. If we mak
e it easier to understand our codebases\, we make everyone more productive
\, help each other write fewer bugs\, and lower barriers for new contribut
ors. That's why Python now features optional static types\, and why Dropbo
x\, [Facebook](https://engineering.instagram.com/let-your-code-type-hint-i
tself-introducing-open-source-monkeytype-a855c7284881)\, and [Zulip](https
://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy/) use them on
part or all of their Python code.\n\nIn this talk\, I’ll share lessons f
rom Zulip’s and Dropbox’s experience — having led the mypy team at D
ropbox and working now on the Zulip core team — for how you can start us
ing static types in your own codebases\, large or small. We’ll discuss h
ow to make it a seamless part of your project’s tooling\; what order to
approach things in\; and powerful new tools that make it even easier today
to add static types to your Python codebase than ever before.\n\n\nGreg P
rice
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:By the Numbers: Python Community Trends in 2017/2018
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T135500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T142500
DESCRIPTION:Want to know about the latest trends in the Python community a
nd see the the big picture of how things have changed over the last few ye
ars? Interested in the results of the latest official Python Developers Su
rvey 2017 which was supported by the Python Software Foundation and gather
ed responses from more than 10.000 Python developers? Come learn about the
most popular types of Python development\, trending frameworks\, librarie
s and tools\, additional languages being used by Python developers\, Pytho
n versions usage statistics and many other insights from the world of Pyth
on. All derived from the actual data and professional research such as the
Python Developers Survey 2017 which collected responses from over 10.000
Python developers\, organized in partnership between the Python Software F
oundation and JetBrains\, the Python Developers Survey 2016\, 3rd party su
rveys and supplementary analytical research.\n\nDmitry Filippov\, Ewa Jodl
owska
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Flourishing FLOSS: Making Your Project Successful
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T135500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T142500
DESCRIPTION:You maintain an Open Source project with great code? Yet your
project isn’t succeeding in the ways you want? Maybe you’re struggling
with funding or documentation? Or you just can’t find new contributors
and you’re drowning in issues and pull requests?\nOpen Source is made up
of many components and we are often better-trained in methods for writing
good code\, than in methods for succeeding in the other dimensions we wan
t our project to grow. \nIn this talk we’ll explore the different compon
ents of an Open Source project and how they work together. After this talk
you’ll be well-equipped with a ideas and strategies for growing\, culti
vating\, and nourishing your Open Source project. \n\nFor your project to
succeed\, all of its non-code components must be well-maintained. What are
these different components and what methods can we learn to maintain them
?\n\n* Build real relationships with your sponsors and determine ways how
both sides can benefit from this relationship\, don’t just ask people fo
r money. \n* Establish a good communication system with your contributors:
Keep them informed\, listen to their feedback and input\, make them feel
heard. \n* Thank the people who worked on ticket triage or marketing\, not
just those who wrote code\, in your release notes. \n* Make it easy for n
ew contributors to get started: Write and maintain good documentation\, an
swer questions in a friendly and timely manner. \n* Market and evangelize
in the right places and at the right time: Give conference talks\, organiz
e sprints\, keep your project’s Twitter account active\, always curate n
ew and interesting content on your blog or website.\n* Implement a Code of
Conduct and enforce it if needed: Make your project a safe space to contr
ibute for everyone. \n\nWith these methods and a half-dozen others\, you
’ll handle beautifully all the components your project needs to succeed.
\n\nAnna Ossowski
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Fighting Gerrymandering with PyMC3
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T135500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T142500
DESCRIPTION:At the end of 2017\, there were seven states with ongoing redi
stricting litigation. We will discuss a statistical model that the United
States Supreme Court declared to be appropriate in cases of racial gerrym
andering\, and show how it can be implemented and used with the library `P
yMC3`. We will also discuss what the model tells us about racial gerryman
dering in North Carolina.\n\n\nColin Carroll\, Karin C. Knudson
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Don't Look Back in Anger: Wildman Whitehouse and the Great Failure
of 1858
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T135500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T142500
DESCRIPTION:In the 1850s\, Edward Orange Wildman Whitehouse was appointed
the lead engineer of the first attempt to build a trans-Atlantic telegraph
cable. With the entire population of two continents waiting for his go-li
ve\, their handlebar moustaches aquiver\, he demonstrated in fine form jus
t how spectacularly a big project can be a bigger disaster.\n\nThis is a t
ale of long-winded rants\, spectacular sideburns\, and gentlemen scientist
s behaving badly. It is also a lesson about the importance of honest refle
ction in technical teamwork. Lilly outlines some of the mistakes made duri
ng one of the biggest tech delivery projects in history\, and how a constr
uctive view of failure helped to turn it all around. Through the public me
ltdowns of Wildman Whitehouse you will learn the importance of feedback\,
how to handle complex tasks gracefully\, and the best way to recover from
having your pipeline eaten by a whale.\n\nLilly Ryan
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Using Python to build an AI to play and win SNES StreetFighter II
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T135500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T142500
DESCRIPTION:![ryu-python](http://www.thesimplelogic.com/wordpress/wp-conte
nt/uploads/2017/12/ryu-python.png)\n\nHear the story of how we used Python
to build an AI that plays Super StreetFighter II on the Super NES. We'll
cover how Python provided the key glue between the SNES emulator and AI\,
and how the AI was built with `gym`\, `keras-rl` and `tensorflow`. We'll s
how examples of game play and training\, and talk about which bot beat whi
ch bot in the bot-v-bot tournament we ran. \n\nAfter this talk you'll know
how easy it is to use Python and Python's machine learning libraries to t
each a computer to play games. You'll see a practical example of the same
type of machine learning used by AlphaGo\, and also get to find out which
character in StreetFighter II is best to pick when playing your friends.\
n\n [1]: https://lh3.googleusercontent.com/Mh9uzCm4JeevMN5w-SWJgzWabrqOCl
AVMsa4jJtMRm-il1dP6oVTsRstJSQlbgKf4qh3A08yMZ36pwezsITA=w3230-h1786\n [2]:
http://www.thesimplelogic.com/wordpress/wp-content/uploads/2017/12/ryu-py
thon.png\n\n\nAdam Fletcher\, Jonathan Mortensen
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:The importance of exploratory data analysis and data visualization
in machine learning
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T135500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T142500
DESCRIPTION:All the data in the world is useless if you cannot understand
it. EDA and data visualization are the most crucial yet overlooked stage i
n analytics process. This is because they give insights on the most releva
nt features in a particular data set required to build an accurate model.
It is often said that the more the data\, the better the model but sometim
es\, this can be counter-productive as more data can be a disadvantage. ED
A helps avoid that.\n\nEDA is useful for professionals while data visualiz
ation is useful for end-users. \n\nFor end-users: \nA good sketch is bette
r than a long speech. The value of a machine learning model is not known u
nless it is used to make data driven decisions. It is therefore necessary
for data scientists to master the act of telling a story for their work to
stay relevant. This is where data visualization is extremely useful. \nW
e must remember that the end-users of the results are not professionals li
ke us but people who know little or nothing about data analysis. For effec
tive communication of our analysis\, there is need for a detailed yet simp
le data visualization because the work of a data scientist is not done if
data-driven insights and decisions are not made.\n\nFor professionals:\nHo
w do you ensure you are ready to use machine learning algorithms in a proj
ect? How do you choose the most suitable algorithms for your data set? How
do you define the feature variables that can potentially be used for mach
ine learning? Most data scientists ask these questions. EDA answers these
questions explicitly.\nAlso\, EDA helps in understanding the data. Unders
tanding the data brings familiarity with the data\, giving insights on the
best models that fit the data set\, the features in the dataset that will
be useful for building an accurate machine learning model\, making featur
e engineering an easy process.\n\nIn this talk\, I will give a detailed ex
planation on what EDA and data visualization are and why they are very hel
pful in building accurate machine learning models for analytics as well as
enhancing productivity and better understanding for clients. I will also
discuss the risks of not mastering EDA and data visualization as a data sc
ientist.\n\nOpetunde Adepoju
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Teaching Python 101
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T140000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T143000
DESCRIPTION:My name is Devishi Jha\, and I am a freshman at Valparaiso Hig
h School\, Indiana. I have been taught programming by the Python community
\, and currently\, I have been teaching python to children in my local com
munity. Throughout elementary and middle school\, I have been taught progr
amming in many different ways. Then in late middle school\, I taught progr
amming to children at my local library. In this talk\, I have compiled man
y teaching methods that I have found useful when learning python/teaching
python. I also cover the ages to start coding\, access to computers\, and
teaching at school vs. an after-school program. With the help of several c
oding teachers\, school principals\, and after-school coding program direc
tors\, I hope that this talk will serve as a guide to anyone who wants to
teach python or find a good way to learn it.\n\n\nDevishi Jha
LOCATION:Room 25A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Lessons Learned from Python-related Tips and Tricks to keep studen
ts engaged
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T140000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T143000
DESCRIPTION:(30 minutes)\n\n**Background**: How does one keep a set of pro
fessional students interested in Python and data science for 2 whole weeks
? Esp. when their employers have paid for the class? Twice a year\, for 2
full weeks\, I have to teach students data science (using Python) to busin
ess and industry professionals\, who are not programmers.\n\n**Outline**:
In this 30-minute talk\, I hope to share several of the Python-related tea
ching 'tricks' that I tried\, along with a few thoughts on why some worked
while many failed.\n\n**Students**: My students are professionals working
in developing countries (Asia\, Africa\, the Middle East) whose companies
have sent them for training. They have some quantitative background but a
lmost no computer programming experience (not counting Excel). Hence\, th
e choice of Python for instruction. The students are in the age group from
25-30\, and at the slightest chance\, they will revert to checking their
smartphones.\n\n**Curriculum**: I teach a hands-on Python course. In nine
full days\, I get them started on Jupyter\, Python basics\, and Pandas. I
then introduce data analysis using Pandas\, plotting\, and introductory ma
chine learning. At the end of two weeks\, there is a final project (with c
oding and data analysis) that is due.\n\n**Challenges**: Out of a class of
around 30\, there are always 4-5 students who have prior programming expe
rience and want a lot more out of the class. This “mixed-ability” clas
s adds to the difficulty of keeping them all engaged. One additional diffi
culty is that this being a “professional development course\,” there i
s no grading as such.\n\n**The talk**: Through repeated failures\, I’ve
had to adapt and develop several tricks and tips that impart Python and da
ta analytics skills to the students while simultaneously keeping them enga
ged. I will share the tools and techniques that I have discovered to work
(Ex. RISE by Damian Avila on top of Jupyter)\, Jupyter NBextensions\, the
frequent use of random numbers in various guises.\n\n**What worked & What
didn’t work**: Tapping into their competitiveness by awarding ‘points
’ worked. Just handing out handouts didn’t work well\, but Jupyter no
tebooks with descriptive text in Markdown worked better. It took me a long
time to realize that I was jumping into techniques and algorithms with to
o little of preface. Spending a good deal of time on motivating the proble
m and ‘building the narrative’ helped get them interested. When trying
to teach “*Classification Algorithms*\,” using the canonical *Iris* d
ataset (to identify species) flopped\, whereas classifying Tweets as 'from
bots' or 'from humans' kept them interested. Web-scraping for Ebola incid
ences flopped but getting live soccer scores made the students come alive.
\n\nI’ve made an embarrassing number of mistakes\, some of which I will
share\, along with my thoughts on why some of these techniques work and ot
hers don't. Though I teach regularly\, I am not an educator by training. I
am proposing this talk in the hope that I can share my insights and lesso
ns\, and learn a few things from seasoned educators a lot more experienced
than myself\, for the next time.\n\n\n\nRam Narasimhan
LOCATION:Room 25B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Types\, Deeper Static Analysis\, and you
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T143000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T150000
DESCRIPTION:Many projects already take advantage of static analysis tools
like flake8\, PyLint\, and MyPy. Can we do better? In this talk\, I'll dis
cuss how to take a type checker\, bolt on an interprocedural static analyz
er\, and delight your security team with high quality results.\n\nAbstract
\n\nIt is incredibly challenging to build a halfway decent static analysi
s tool for a dynamic language like Python. Fortunately\, it gets quite a b
it easier with Python type annotations. To explain why\, I'll present a to
ol that finds security vulnerabilities by tracking dangerous flows of info
rmation interprocedurally across an entire codebase. **Then\,** I'll demon
strate how that tool is really just a slightly slower\, more sophisticated
\, type checker.\n\n\n\nPieter Hooimeijer
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Automating Code Quality
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T143000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T150000
DESCRIPTION:Writing quality Python code can be both tough and tedious. On
top of the general design\, there are many code quality aspects that you n
eed to watch out for when writing and reviewing code such as adherence to
PEP8\, docstring quality\, test quality\, etc. Furthermore\, everyone is h
uman. If you are catching these code quality issues by hand\, there is a g
ood chance that at some point you will miss an easy opportunity to improve
code quality. If the quality check can be done by a machine\, then why wo
uld you even try to catch the code quality issue by hand? In the end\, the
machine will be able to perform the quality check with much more speed\,
accuracy\, and consistency than a person.\n\nThis talk will dive into how
existing open source projects offload and automate many of these code qual
ity checks resulting in:\n\n- A higher quality and a more consistent codeb
ase\n- Maintainers being able to focus more on the higher level design and
interfaces\n of a project.\n- An improved contribution process and highe
r quality pull requests from\n external contributors\n\nBy diving into ho
w these open source projects automate code quality checks\, you will learn
about:\n\n- The available tooling related to checking code quality such a
s `flake8`\,\n `pylint`\, `coverage`\, etc.\n- How to automate code quali
ty checks for both a development and team \n setting.\n- First-hand accou
nts of the benefits and lessons learned from automating\n code quality ch
ecks in real-life open source projects.\n\n\n\nKyle Knapp
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:How We Do Identity Wrong
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T143000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T150000
DESCRIPTION:Most software has a user. Depending on the software\, the user
may need to provide various details about themselves for proper operation
-- their name\, their date of birth\, where they live. However\, it is qu
ite common for software systems such as these to ask the wrong questions\,
collect too much data\, and when it comes down to it\, serialise the part
s of the user's identity wrongly. This talk will discuss common ways that
real-world systems store identity wrong\, what questions you shouldn't ask
\, and how you can fix it in your own projects.\n\nAmber Brown ("HawkOwl")
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Big-O: How Code Slows as Data Grows
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T143000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T150000
DESCRIPTION:Big-O is a computer science technique for analyzing how code p
erforms as data gets larger. It's a very handy tool for the working progr
ammer\, but it's often shrouded in off-putting mathematics.\n\nIn this tal
k\, I'll teach you what you need to know about Big-O\, and how to use it t
o keep your programs running well. Big-O helps you choose the data struct
ures and algorithms that will let your code work efficiently even on large
data sets.\n\nYou can understand Big-O even if you aren't a theoretical c
omputer science math nerd. Big-O isn't as mystical as it appears. It's wra
pped in mathematical trappings\, but doesn't have to be more than a common
-sense assessment of how your code will behave.\n\n\nNed Batchelder
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:User focused API Design
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180513T143000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180513T150000
DESCRIPTION:When we talk about Web API Design\, we're usually driven to th
ink in architecture\, verbs\, and nouns. But we often forget our user: the
developer.\n\nUX designers rely on many techniques to create great experi
ences. User research\, User Testing\, Personas\, Usage Data Analysis and o
thers. However when creating `invisible products` we’re not used to thin
k in usability. So why don’t we take advantage of this background to imp
rove our APIs experiences?\n\n\n\nRenato Oliveira
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:GenZeal: A new generation of thinkers who design\, develop\, and d
istribute for tomorrow
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T143000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T150000
DESCRIPTION:The GenZeal project is an after-school program where students
learn design thinking\, applied computational thinking\, and programming s
kills to solve a problem in their community. Students research and work wi
th local organizations and businesses to design and program microcontrolle
rs that run entirely on renewable energy sources to solve a specific need.
Through the process\, students earn physical and digital badges for each
skill they learn and apply with their project. Students learn applied desi
gn thinking\, computational thinking\, and open-source programming languag
es. They use what they learn to design\, prototype\, and program their pro
ject. The student projects are installed in the community and they monitor
their use in conjunction with the community coach. \n\nI will provide det
ails and examples of this project that can be replicated in small through
large school districts\, rural and urban. I will also explain how our scho
ol district redefined our curriculum from little computer science concepts
to purposeful\, applied PreK-12 computer science principles. \n\nLaura Ja
cob
LOCATION:Room 25A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Using GitHub\, Travis CI\, and Python to Introduce Collaborative S
oftware Development
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T143000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T150000
DESCRIPTION:Real-world software engineering is collaborative\, commonly in
volving the use of Git\, GitHub\, and continuous integration with Travis C
I. This presentation will explain how to use these technologies and platfo
rms to teach interdisciplinary and introductory courses in computer progra
mming and software engineering. This presentation will first show how to c
reate a GitHub organization connected to a GitHub Classroom with unlimited
private repositories that contain instructor solutions and starter kits a
nd assignment submissions for both individual and team-based programming a
ssignments. The talk will next explain how to connect GitHub repositories
to continuous integration servers hosted by Travis CI\, thus supporting th
e cloud-based execution of tests and checks.\n\nThe presentation will subs
equently introduce a Python program\, called [GatorGrader](https://github.
com/gkapfham/gatorgrader)\, that supports the local and cloud-based checki
ng of a student's source code and technical writing for a programming proj
ect. GatorGrader can check\, for example\, that a submission contains the
required number of comments and produces the correct number of lines of co
nsole output. Suitable for use on either a local workstation or a cloud-ba
sed server provided by Travis CI\, GatorGrader can\, for instance\, ensure
that a student makes the requisite number of commits to a GitHub reposito
ry and structures a program in a specified fashion. GatorGrader can also i
nvoke external programs that ensure the quality of a student's technical w
riting. Finally\, since most of the aforementioned assignments are designe
d to be completed in teams\, this presentation introduces [GatorGrouper](h
ttps://github.com/GatorGrouper/gatorgrouper)\, another Python program that
uses student responses on a Google Form to create suitable groups of stud
ents who collaboratively complete programming projects with GitHub.\n\nGre
gory M. Kapfhammer
LOCATION:Room 25B
END:VEVENT
BEGIN:VEVENT
SUMMARY: Randomness in Python: Creating Chaos in an Ordered Machine/Contro
lled Environment
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T150500
DESCRIPTION:There are many computational needs for randomness--from creati
ng a game to building a simulation involving naturally occurring randomnes
s similar to the physical world. For most purposes using the python math m
odule to create random numbers within a specific range can be done with no
further questions\, but sometimes we require a more nuanced implementatio
n. \n\nWe will look at both pseudo-random number generators\, which use st
atistically repeatable processes to generate seemingly random series and t
rue random number generators\, which inject physical processes like atmosp
heric noise to generate sequences of numbers. We will discuss the benefits
and drawbacks of both approaches and common methods of implementing these
two types of generators in python. \n\nFinally\, we will look at several
real applications for randomness and discuss the best method for generatin
g “randomness” in each scenario. \n\nAmanda Sopkin
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python across the USA: This is the Bus.
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T150500
DESCRIPTION:For 2 years\, a family of three has traveled on a converted sc
hool bus from conference to conference\, building tooling for the road in
Python and visiting Python families in every corner of the country.\n\nJus
tin Myles Holmes
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Birding with Python and Machine Learning
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T150500
DESCRIPTION:In the past few years\, the power of computer vision has explo
ded. In this talk\, we'll apply a deep learning model to a bird feeder. We
'll use that model to detect\, identify\, and record birds that come to a
smart bird feeder.\n\nAlong the way\, we'll learn about different platform
s to deploy deep learning cameras on\, from the lowly Raspberry PI all the
way up to the powerful NVIDIA Jetson embedded computer with a built in GP
U.\n\nKirk Kaiser
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Adapting from Spark to Dask: what to expect
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T150500
DESCRIPTION:Until very recently\, Apache Spark has been a de facto standar
d choice of a framework for batch data processing. For Python developers\,
diving into Spark is challenging\, because it requires learning the Java
infrastructure\, memory management\, configuration management. The multipl
e layers of indirection also make it harder to debug things\, especially w
hen throwing the Pyspark wrapper into the equation.\n\nWith Dask emerging
as a pure Python framework for parallel computing\, Python developers migh
t be looking at it with new hope\, wondering if it might work for them in
place of Spark. In this talk\, I’m using a data aggregation example to h
ighlight the important differences between the two frameworks\, and make i
t clear how involved the switch may be.\n\nNote: Just in case it's unclear
\, there's no Java of any kind in this talk. All the code / examples use P
ython (PySpark).\n\n\nIrina Truong
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Building a cross-platform native app with BeeWare
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T150500
DESCRIPTION:Have you ever wanted to write a GUI application you can run on
your laptop? What about an app that you can run on your phone? Historical
ly\, these have been difficult to achieve with Python\, and impossible to
achieve without learning a different API for each platform. But no more.\n
\nBeeWare is a collection of tools and libraries that allows you to build
cross-platform native GUI applications in pure Python\, targeting desktop\
, mobile and web platforms. In this talk\, you'll be introduced to the Bee
Ware suite of tools and libraries\, and see how you can use them to develo
p\, from scratch\, a GUI ChatBot application that can be deployed as a sta
ndalone desktop application\, a mobile phone application\, and a single pa
ge webapp - without making any changes to the application's codebase.\n\nR
ussell Keith-Magee
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pipenv: The Future of Python Dependency Management
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T150500
DESCRIPTION:This talk is about the history of Python packaging\, the tools
that have been historically available for application deployment\, the pr
oblems/constraints presented by them\, and presents a holistic solution to
many of these problems: Pipenv.\n\nA live demo of the tool will be presen
ted\, as well as a Q&A session.\n\nKenneth Reitz
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:You're an expert. Here's how to teach like one.
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T150500
DESCRIPTION:Knowing how to code and being able to teach it are two separat
e skills. When we have expertise in a subject\, it's common to take for gr
anted that we'll be able to effectively communicate our expertise to someo
ne else. Come learn (or re-learn!) how to teach and discover practical exa
mples you can put to work right away.\n\nBy sharpening your teaching skill
s\, you'll be a more effective mentor\, trainer\, and team member.\n\nShan
non Turner
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Beyond scraping: how to use machine learning when you're not sure
where to start
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T150500
DESCRIPTION:Scraping one web site for information is easy\, scraping 10000
different sites is hard. Beyond page-specific scraping\, how do you build
a program than can extract the publication date of (almost) any news arti
cle online\, no matter the web site?\n\nWe’ll cover when to use machine
learning vs. humans or heuristics for data extraction\, the different step
s of how to phrase the problem in terms of machine learning\, including fe
ature selection on HTML documents\, and issues that arise when turning res
earch into production code.\n\nJulie Lavoie
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:CuPy: A NumPy-compatible Library for GPU
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T150500
DESCRIPTION:![Logo][https://raw.githubusercontent.com/cupy/cupy/master/doc
s/image/cupy_logo_1000px.png]\n\n# CuPy : NumPy-like API accelerated with
CUDA\n\n[**Website**](https://cupy.chainer.org/) | [**Docs**](https://docs
-cupy.chainer.org/en/stable/) | [**Install Guide**](https://docs-cupy.chai
ner.org/en/stable/install.html) | [**Tutorial**](https://docs-cupy.chainer
.org/en/stable/tutorial/) | **Examples** ([Official](https://github.com/cu
py/cupy/blob/master/examples)) | [**Forum**](https://groups.google.com/for
um/#!forum/cupy)\n\nCuPy is an open-source library with NumPy syntax that
increases speed by doing matrix operations on NVIDIA GPUs. It is accelerat
ed with the CUDA platform from NVIDIA and also uses CUDA-related libraries
\, including cuBLAS\, cuDNN\, cuRAND\, cuSOLVER\, cuSPARSE\, and NCCL\, to
make full use of the GPU architecture. CuPy's interface is highly compati
ble with NumPy\; in most cases it can be used as a drop-in replacement. Cu
Py supports various methods\, data types\, indexing\, broadcasting\, and m
ore.\n\nShohei Hido
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Easy 2D Game Creation With Arcade
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T143500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T150500
DESCRIPTION:Want to have fun with Python? Do something visual? Get started
today? Learn how to draw\, animate\, and use sprites for games with the [
Python Arcade](http://arcade.academy/) library.\n\n"Arcade" is an easy-to-
use Python library for creating 2D arcade games. We'll show you how to get
started creating your own game\, and find plenty of example code to get a
n idea of what you can do with this library. If you are familiar with PyGa
me\, Arcade is easier\, more powerful\, and uses recent Python features li
ke type hinting and decorators.\n\nThis talk is great for beginners\, educ
ators\, and people who want to create their own arcade games.\n\nPaul Vinc
ent Craven
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:When data meets education! The secret life of data in education
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T151000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T154000
DESCRIPTION:In the last decades\, the power of data and analytics has tran
sformed instruction in education. Increasingly\, large-scale data is avail
able on student learning and interaction online. Much of this data represe
nts student behavior. This has allowed researchers to model and track many
elements of student learning that were not previously feasible at scale:
engagement\, affect\, collaborative skill\, and robust learning. In turn\,
these models can be used in prediction of long-term student outcomes\, an
d to analyze the factors driving long-term success of students\, \n\nThis
talk will focus on secret life of data in education\, the key points of my
talk will be:\n\n- Data meets education\n- Course tracking\n- Student Beh
aviour\n- Data-driven education\n- Finishing strong\n\n\n\n\nRizky Ariesti
yansyah
LOCATION:Room 25B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python for N00bs: A cognitive and educational approach
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T151000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T154000
DESCRIPTION:This talk will put a new spin on helping complete beginners to
use Python. We all tend to teach Python the way that we learned it. Howev
er\, by applying lessons learned from cognitive science and educational ps
ychology\, we can better help a wide range of beginners and open up Python
to new audiences. \n\nThe speaker will share examples of successes and fa
ilures in teaching Python in several contexts including high school classr
ooms\, the Young Coders program\, as well as online and printed curricula.
Topics covered will include teaching the command line\, helping new progr
amming concepts to “stick\,” increasing engagement with abstract conce
pts\, and supporting the independence of new programmers. \n\nThe Python
community is an ecosystem built on learning from others and giving back to
others. The strategies covered in this talk are useful for creating docum
entation for new users\, writing a book or tutorial\, teaching a child or
adult\, running a workshop\, or teaching a class. \n\n\nMeg Ray
LOCATION:Room 25A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Debugging PySpark -- Or trying to make sense of a JVM stack trace
when you were minding your own bus
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T154500
DESCRIPTION:Apache Spark is one of the most popular big data projects\, of
fering greatly improved performance over traditional MapReduce models. Muc
h of Apache Spark’s power comes from lazy evaluation along with intellig
ent pipelining\, which can make debugging more challenging. This talk will
examine how to debug Apache Spark applications\, the different options fo
r logging in PySpark\, as well as some common errors and how to detect the
m.\n\nSpark’s own internal logging can often be quite verbose\, and this
talk will examine how to effectively search logs from Apache Spark to spo
t common problems. In addition to the internal logging\, this talk will lo
ok at options for logging from within our program itself.\n\nSpark’s acc
umulators have gotten a bad rap because of how they interact in the event
of cache misses or partial recomputes\, but this talk will look at how to
effectively use Spark’s current accumulators for debugging as well as a
look to future for data property type accumulators which may be coming to
Spark in future version.\n\nIn addition to reading logs\, and instrumentin
g our program with accumulators\, Spark’s UI can be of great help for qu
ickly detecting certain types of problems.\n\nDebuggers are a wonderful to
ol\, however when you have 100 computers the “wonder” can be a bit mor
e like “pain”. This talk will look at how to connect remote debuggers\
, but also remind you that it’s probably not the easiest path forward.\n
\n\nHolden Karau
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python 3: ten years later
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T160000
DESCRIPTION:Looking back at Python evolutions over the last 10 years.\n\nP
ython 3.0 was released ten years ago (December 2008). It's time to look ba
ck: analyze the migration from Python 2 to Python 3\, see the progress we
made on the language\, list bugs by cannot be fixed in Python 2 because of
the backward compatibility\, and discuss if it's time or not to bury Pyth
on 2.\n\nPython became the defacto language in the scientific world and th
e favorite programming language as the first language to learn programming
.\n\n\n\nVictor Stinner
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python for the quantum computing age
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T160000
DESCRIPTION:Quantum computers are slowly turning in to reality more than 3
0 years after they were first theorized. The need for quantum computers ha
ve become clear as we reach the limits of Moore’s law and yet we need mo
re computational power. We are at a very early stage of quantum computing.
Yet Python is slowly becoming a defacto language for programming quantum
computers. \n\nIn this talk\, we will discuss the difference a traditional
computer and a quantum computer. We will learn about the two architecture
s namely Quantum annealing and Quantum gate. Finally\, we will learn to pr
ogram quantum computers using Python.\n\n\nRavi Chityala
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:The AST and Me
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T160000
DESCRIPTION:Get under the hood and learn about Python's beloved Abstract S
yntax Tree. Ever wonder how Python code is run? Overheard people arguing a
bout whether Python is interpreted or compiled? In this talk\, we will del
ve into the lifecycle of a piece of Python code in order to understand the
role that Python's Abstract Syntax Tree plays in shaping the runtime of y
our code. Utilizing your newfound knowledge of Python's AST\, you'll get a
taste of how you probably already rely on ASTs and how they can be used t
o build awesome tools.\n\n\nEmily Morehouse-Valcarcel
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Taking Django Async
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T160000
DESCRIPTION:The Django Channels project has taken a major turn with versio
n 2.0\, embracing Python's async functionality and building applications a
round an async event loop rather than worker processes.\n\nDoing this\, ho
wever\, wasn't easy. We'll look through some of the techniques used to mak
e Django coexist in this async world\, including handing off between async
and sync code\, writing fully asynchronous HTTP and WebSocket handling\,
and what this means for the future of Django\, and maybe Python web framew
orks in general.\n\nAndrew Godwin
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Analyzing Data: What pandas and SQL Taught Me About Taking an Aver
age
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T154500
DESCRIPTION:“So tell me\,” my manager said\, “what is an average?”
\n\nThere’s probably nothing worse than that sinking feeling when you fi
nish an analysis\, email it to your manager or client to review\, and they
point out a mistake so basic you can’t even fathom how you missed it. \
n\nThis talk is about mine: how to take an average.\n\nAverages are someth
ing we use everywhere - it’s a simple np.mean() in pandas or AVG() in SQ
L. But recently I’ve come to appreciate just how easy it is to calculate
this statistic incorrectly. We learn once - in middle school no less - ho
w to take an average\, and never revisit it. Then\, when we are faced with
multidimensional datasets (ie. pretty much every dataset out there)\, we
never reconsider whether we should be taking an average the same way.\n\nI
n this talk\, we follow my arduous and humbling journey of learning how to
properly take an average with multidimensional data. We will cover how im
properly calculating it can produce grossly incorrect figures\, which can
slip into publications\, research analyses and management reports.\n\nAlex
Petralia
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:The human nature of failure & resiliency
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T160000
DESCRIPTION:Projects fail in droves. Systems hiccup and hours of downtime
follows. Screws fall out all the time\; the world is an imperfect place.\n
\nWe talk a lot about building resilient systems\, but all systems are (at
least for now) built by humans. Humans who have been making the same type
s of mistakes for thousands of years. \n\nJust because failure happens doe
sn’t mean we can’t do our best to prevent it or—at the very least—
to minimize the damage when it does. As a matter of fact\, embracing failu
re can be one of the best things you do for your system. Failure is a vita
l part of evolution. By learning to love failure we learn how to take the
next step forward. Ignoring or punishing failure leads to stagnation and w
asted potential.\n\nThis talk distills 3000 pages of failure research into
40 minutes of knowledge about the human factors of failure\, how it can b
e recognised\, and how you can work around it to create more resilient sys
tems.\n\nBy the end of this talk the audience will have an awareness of th
e most common psychological reasons for mistakes and failures and how to d
evelop systems and processes to protect against them.\n\nVM (Vicky) Brasse
ur
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Dataclasses: The code generator to end all code generators
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T160000
DESCRIPTION:The PEP 557 dataclasses module is available in starting in Pyt
hon 3.7. It will become an essential part of every Python programmer's t
oolkit. This talk shows what problem the module solves\, explains its key
design decisions\, and provides practical examples of how to put it to wo
rk.\n\nDataclasses are shown to be the next step in a progression of data
aggregation tools: tuple\, dict\, simple class\, bunch recipe\, named tupl
es\, records\, attrs\, and then dataclasses. Each builds upon the one that
came before\, adding expressiveness at the expense of complexity.\n\nData
classes are unique in that they let you selectively turn-on or turn-off it
s various capabilities and it lets the user choose the underlying data sto
re (either instance dictionary\, instance slots\, or an inherited base cla
ss).\n\nDataclasses and typing.NamedTuple both use variable annotations wh
ich were new in Python 3.6.\n\n\n\n\n\n\n\n\n\nRaymond Hettinger
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Controlling apples with snakes: Automating mobile apps with Appium
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T154500
DESCRIPTION:Testing mobile applications is hard. Testing manually is nearl
y impossible.\nThat’s where automated testing shines. Just sit back and
watch the machine go!\nPython is a very powerful language for writing auto
mated tests\, but since Python is not installed on mobile platforms\, we n
eed to find a way to remotely control and monitor the device.\nBut how do
we automate a device remotely? The answer is Appium.\n\nIn this talk I wil
l go over the process of deploying and testing iOS (or Android) applicatio
ns\, and how to work with Appium to easily generate Python 3 code for test
ing your application.\n\nNir Arad
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Surviving (and thriving!) when you are overloaded
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T151500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T154500
DESCRIPTION:Taking on leadership roles always includes new demands on your
attention and time. Inevitably\, your finite work week will conflict with
the sheer amount of tasks you have to do. How can we as leaders keep step
ping up to new responsibilities while balancing our pre-existing ones?\n\n
This talk will focus on strategies for managing a too-large workload witho
ut abandoning important tasks or doing a shoddy job. We’ll look at techn
iques to prioritize what work matters most\, identify tasks we should be d
oing ourselves\, and finally delegate the rest to build our team’s skill
s while reducing our own workload.\n\nScott Triglia
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:How I Learned to Stop Worrying and Love Python at Google | Tech Ta
lk Series
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T153000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T170000
DESCRIPTION:Continuing with tradition\, our sponsor workshop session featu
res three awesome half-hour Python tech talks as they relate to Google. He
ar about Python tools we’ve built in-house\, using Python with Google de
veloper tools to build your web & mobile applications with or best practic
es on how we use Python internally at Google. You’re invited to stop by
and hear from a cadre of world-class Google engineers from around the worl
d! :-)\n\nWesley Chun
LOCATION:Room 23
END:VEVENT
BEGIN:VEVENT
SUMMARY:Datadog: Distributed Tracing for Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T153000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T170000
DESCRIPTION:Tracing is a specialized form of logging that is designed to w
ork effectively in large\, distributed environments. When done right\, tra
cing follows the path of a request across process and service boundaries.
This provides a big step-up in application observability and can help info
rm a developer why certain requests are slow\, or why they might have beha
ved unexpectedly. This tutorial will familiarize users with the benefits o
f tracing\, and describe a general toolkit for emitting traces from Python
applications in a minimally intrusive way. We will walk through a simple
example app\, which receives an HTTP request and gradually instrument it t
o be observable via traces. We will discuss language constructs that can g
enerate traces - namely decorators\, monkey-patching and context managers
- and give users hints on how they might add tracing to their own applicat
ions and libraries. In the process\, users will become familiar with the e
xisting standards for modeling traces\, and some of the challenges involve
d in adhering to this model in a distributed\, asynchronous environment.\n
\nMichael Whetten
LOCATION:Room 13
END:VEVENT
BEGIN:VEVENT
SUMMARY:Build serverless applications easily with Chalice – an open sour
ce Python framework
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T153000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T170000
DESCRIPTION:Serverless applications make it easy for you to run your code
without managing servers. AWS Chalice is a serverless Python framework for
getting your serverless application up and running in minutes. In this tu
torial\, you'll learn how to build a serverless application using AWS Chal
ice. We will cover authoring a RESTful service that leverages Amazon API G
ateway and AWS Lambda as well as various deployment options.\n\nJames Sary
erwinnie
LOCATION:Room 25C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Jupyter Tools for Teaching and Learning
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T154000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T161000
DESCRIPTION:Project Jupyter is the center of a set of technologies that gr
ew out of simple tools to make Python easier to use. Today\, Jupyter is co
mposed of powerful client-server applications and protocols for computing
in many programming languages. This talk focuses on using these technologi
es for pedagogical purposes. \n\nEvery course I have taught since the Fall
semester of 2014 has been over the web via our JupyterHub server. These c
ourses have included firstyear writing seminars\, as well as courses in Pr
ogramming Languages\, Assembly Language\, Introduction to Biology (in Pyth
on)\, and in Processing (Java-based). In this talk I hope to help identify
best-practices for using Jupyter in the classroom. I will discuss and dem
onstrate tools and techniques\, and explore the challenges of using Jupyte
r for teaching and learning.\n\nDouglas Blank
LOCATION:Room 25A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pycamp 2K17: A Disclaimer
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180510T154000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180510T161000
DESCRIPTION:Nagpur is a tier-two city in India. There were no user groups\
, programming meetups and that too in Python? Impossible! It really seemed
impossible to organise people and do something that will make them intere
sted in learning and contributing. \nAs a student of Computer Engineering
Bachelor's Degree Program\, I always felt that drive missing in my fellow
classmates.\nMy talk covers the journey of organising first Django Girls M
eetup and first ever Python BootCamp of my city called "Pycamp 2k17". \nIt
covers the journey of survival\, how being a women it made tougher and ho
w we ended up putting a disclaimer on our website because we never knew th
at name 'PyCamp' has a copyright! \nHow me and my team managed to sell tic
kets of worth INR 50\,000 to the people who hardly ever heard of the name
'Python'. \nAnd cherry on the cake to get 'PSF' sponsoring the event.\n\nA
nubha Maneshwar
LOCATION:Room 25B
END:VEVENT
BEGIN:VEVENT
SUMMARY:How to Write Deployment-friendly Applications
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T161500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T170000
DESCRIPTION:The DevOps movement gave us many ways to put Python applicatio
ns into production. But should your *application* care? Should it need t
o know whether it’s running on your notebook\, on a server\, in a Docker
container\, or in some cloud platform as a service?\n\nIt should not\, be
cause environment-agnostic applications are easier to **test**\, easier to
**deploy**\, easier to **handle**\, and easier to **scale**.\n\nBut how c
an you *practically* structure and configure your applications to make the
m indifferent to the environment they run in? How do secrets fit into the
picture? And where do you put that log file?\n\nBy the end of this talk
you’ll know the tools and techniques that enable you to write such Pytho
n applications and you’ll be ready for the next big change.\n\nHynek Sch
lawack
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:What is a Python Core Developer?
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T161500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T170000
DESCRIPTION:How do you become a Python core developer? How can I become on
e? What is it like to be a Python core developer?\n\nThese are the questio
ns I often receive ever since I became a Python core developer a year ago.
Contributing to Python is a long journey that does not end when one earns
the commit privilege. There are responsibilities to bear and expectations
to live up to.\n\nIn the past year\, I've been learning more about what i
t really means to be a Python core developer. Let me share all of that wit
h you.\n\n\nMariatta Wijaya
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Exploring Deep Learning Framework PyTorch
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T161500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T170000
DESCRIPTION:Anyone who is interested in deep learning has gotten their han
ds dirty playing around with Tensorflow\, Google's open source deep learni
ng framework. Tensorflow has its benefits like wide scale adoption\, deplo
yment on mobile\, and support for distributed computing\, but it also has
a somewhat challenging learning curve\, is difficult to debug\, and hard t
o deploy in production. PyTorch is a new deep learning framework that solv
es a lot of those problems.\n\nPyTorch is only in beta\, but users are rap
idly adopting this modular deep learning framework. PyTorch supports tenso
r computation and dynamic computation graphs that allow you to change how
the network behaves on the fly unlike static graphs that are used in frame
works such as Tensorflow. PyTorch offers modularity which enhances the abi
lity to debug or see within the network and for many\, is more intuitive t
o learn than Tensorflow.\n\nThis talk will objectively look at PyTorch and
why it might be the best fit for your deep learning use case and we'll lo
ok at use cases that will showcase why you might want consider using Tenso
rflow instead.\n\n\n\n\nStephanie Kim
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Reactive Programming with RxPy
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T161500
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T170000
DESCRIPTION:Web applications contains lots of database operations\, networ
k calls\, nested callbacks and other computationally expensive tasks that
might take a long time to complete or even block other threads until it's
done\, here is where ReactiveX enters\, it doesn't only gives us the facil
ity to convert almost anything to a stream\; variables\, properties\, user
inputs\, caches\, etc to manage it asynchronously. But it also gives us a
n easy way to handle errors which is a hard task within asynchronous progr
amming. ReactiveX makes our code more flexible\, readable\, maintainable a
nd easy to write.\n\nWe will be exploring how ReactiveX help us to make th
ings easier with its operators toolbox that can be used to filter\, create
\, transform or unify any of those streams. We will learn that in just a f
ew lines of maintainable code\, we can have multiple web sockets which rec
ieves multiple requests all handled by an asynchronous process that serves
a filtered output.\n\nTo do that I decided to explain an example of the u
se with an example by implementing observables\, observers/subscribers and
subjects. We will start by requesting our data stream from the Github API
with a Tornado web socket and then filtering and processing it asynchroun
osly.\n\nValery Calderon
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Building a Data Pipeline with Testing in Mind
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T163000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T170000
DESCRIPTION:It’s one thing to build a robust data pipeline process in py
thon but a whole other challenge to find tooling and build out the framewo
rk that allows for testing a data process. In order to truly iterate and d
evelop a codebase\, one has to be able to confidently test during the deve
lopment process and monitor the production system. \n\nIn this talk\, I ho
pe to address the key components for building out end to end testing for d
ata pipelines by borrowing concepts from how we test python web services.
Just like how we want to check for healthy status codes from our API respo
nses\, we want to be able to check that a pipeline is working as expected
given the correct inputs. We’ll talk about key features that allows a da
ta pipeline to be easily testable and how to identify timeseries metrics t
hat can be used to monitor the health of a data pipeline.\n\nJiaqi Liu
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Listen\, Attend\, and Walk : Interpreting natural language navigat
ional instructions
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T163000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T170000
DESCRIPTION:Imagine you have an appointment in a large building you do not
know. Your host sent instructions describing how to reach their office. T
hough the instructions were fairly clear\, in a few places\, such as at th
e end\, you had to infer what to do. How does a _robot (agent)_ interpret
an instruction in the environment to infer the correct course of action? E
nabling harmonious _Human - Robot Interaction_ is of primary importance if
they are to work seamlessly alongside people.\n\nDealing with natural lan
guage instructions in hard because of two main reasons\, first being\, Hum
ans - through their prior experience know how to interpret natural languag
e but agents can’t\, and second is overcoming the ambiguity that is inhe
rently associated with natural language instructions. This talk is about h
ow deep learning models were used to solve such complex and ambiguous prob
lem of converting natural language instruction into its corresponding acti
on sequence.\n\nFollowing verbal route instructions requires knowledge of
language\, space\, action and perception. In this talk I shall be presenti
ng\, a neural sequence-to-sequence model for direction following\, a task
that is essential to realize effective autonomous agents.\n\nAt a high lev
el\, a sequence-to- sequence model is an end-to-end model made up of two r
ecurrent neural networks: \n\n - **Encoder** - which takes the model’s i
nput sequence as input and encodes it into a fixed-size context vector.\n
- **Decoder** - which uses the context vector from above as a seed from wh
ich to generate an output sequence. \n\nFor this reason\, sequence-to-sequ
ence models are often referred to as _encoder-decoder_ models. The alignme
nt based encoder-decoder model would translate the natural language instru
ctions into corresponding action sequences. This model does not assume any
prior linguistic knowledge: syntactic\, semantic or lexical. The model le
arns the meaning of every word\, including object names\, verbs\, spatial
relations as well as syntax and the compositional semantics of the languag
e on its own.\n\nIn this talk\, steps involved in pre-processing of data\,
training the model\, testing the model and final simulation of the model
in the virtual environment will be discussed. This talk will also cover so
me of the challenges and trade-offs made while designing the model.\n\nPad
maja Bhagwat
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python Performance Investigation by Example
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T163000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T170000
DESCRIPTION:Occasionally we’ll find that some bit of Python we’ve writ
ten doesn’t run as fast as we’d like\, what can we do? Performance bot
tlenecks aren’t always intuitive or easy to spot by reading code so we n
eed to collect data with [profiling](https://docs.python.org/3.6/library/p
rofile.html). Once we’ve identified the bottleneck we’ll need to chang
e our approach\, but what options are faster than others?\n\nThis talk ill
ustrates a Python performance investigation and improvements using an [Adv
ent of Code](http://www.adventofcode.com/) programming challenge. I’ll w
alk through starting from a slow (but correct) solution\, look at profilin
g data to investigate _why_ it’s slow\, and explore multiple paths for i
mproving performance\, including more efficient algorithms and using third
-party tools like [Cython](http://cython.org/). You’ll leave this talk w
ith a recipe for analyzing Python performance and information about some o
ptions for improved performance.\n\nMatt Davis
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python 2 to 3: How to Upgrade and What Features to Start Using
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T163000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T170000
DESCRIPTION:The end of life for Python 2 is 2020. Python 3 is the future a
nd you'll need to consider both your upgrade plan and what steps you'll ta
ke after upgrading to start leveraging Python 3 features.\n\nDuring this t
alk we'll briefly discuss how to start **the process of upgrading your cod
e to Python 3**. We'll then dive into some of **the most useful Python 3 f
eatures** that you'll be able to start embracing once you drop Python 2 su
pport.\n\nA number of the most powerful Python 3 features are syntactic fe
atures that are **Python 3 only**. You won't get any experience using thes
e features until you fully upgrade. These features are an incentive to dro
p Python 2 support in existing 2 and 3 compatible code. You can consider t
his talk as a teaser of Python 3 features that you may have never used.\n\
nAfter this talk I hope you'll be inspired to fully upgrade your code to P
ython 3.\n\nTrey Hunner
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Trio: Async concurrency for mere mortals
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T163000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T170000
DESCRIPTION:Concurrent programs are super useful: think of web apps juggli
ng lots of simultaneous downloads and websocket connections\, chat bots tr
acking multiple concurrent conversations\, or web spiders fetching pages i
n parallel. But *writing* concurrent programs is complicated\, intimidatin
g to newcomers\, and often challenging even for experts.\n\nDoes it have t
o be? Python is famous for being simple and straightforward\; can Python m
ake concurrent programming simple and straightforward too? I think so. By
carefully analyzing usability pitfalls in other libraries\, and taking adv
antage of new Python 3 features\, I've come up with a new set of primitive
s that make it dramatically easier to write correct concurrent programs\,
and implemented them in a new library called [Trio](https://trio.readthedo
cs.io). In this talk\, I'll describe these primitives\, and demonstrate ho
w to use them to implement a basic algorithm for speeding up TCP connectio
ns. Compared to the best previous Python implementation\, our version turn
s out to be easier to understand\, more correct\, and dramatically shorter
.\n\nThis talk assumes basic familiarity with Python\, but does *not* requ
ire any prior experience with concurrency\, async/await\, or networking.\n
\n\nNathaniel J. Smith
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Fighting the Good Fight: Python 3 in your organization
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T163000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T170000
DESCRIPTION:Today\, services built on Python 3.6.3 are widely used at Face
book. But as recently as May of 2014 it was actually impossible at all to
use Python 3 at Facebook. Come learn how we cut the Gordian Knot of depend
encies and social aversion to the point where new services are now being w
ritten in Python 3 while older Python 2 projects are actively migrated to
Python 3. All accomplished by a small group of individual contributors in
their spare time. Learn to fight the good fight and upgrade your organizat
ion to Python 3 like we did at Facebook.\n\nJason Fried
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Secrets of a WSGI master.
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T174000
DESCRIPTION:The WSGI (Web Server Gateway Interface) specification for host
ing Python web applications was created in 2003. Measured in Internet time
\, it is ancient. The oldest main stream implementation of the WSGI specif
ication is mod_wsgi\, for the Apache HTTPD server and it is over 10 years
old.\n\nWSGI is starting to be regarded as not up to the job\, with techno
logies such as HTTP/2\, web sockets and async dispatching being the way fo
rward. Reality is that WSGI will be around for quite some time yet and for
the majority of use cases is more than adequate.\n\nThe real problem is n
ot that we need to move to these new technologies\, but that we aren't usi
ng the current WSGI servers to their best advantage. Moving to a new set o
f technologies will not necessarily make things better and will only creat
e a new set of problems you have to solve.\n\nAs one of the oldest WSGI se
rver implementations\, Apache and mod\\_wsgi may be regarded as boring and
not cool\, but it is still the most stable option for hosting WSGI applic
ations available. It also hasn't been sitting still\, with a considerable
amount of development work being done on mod\\_wsgi in the last few years
to make it even more robust and easier to use in a development environment
as well as production\, including in containerised environments.\n\nIn th
is talk you will learn about many features of mod\\_wsgi which you probabl
y didn't even know existed\, features which can help towards ensuring your
Python web application deployment performs to its best\, is secure\, and
has a low maintenance burden.\n\nTopics which will be covered include:\n\n
* Easy deployment of Python web applications using mod\\_wsgi-express.\n*
Integration of mod_wsgi-express with a Django web application.\n* Using mo
d\\_wsgi-express in a development environment.\n* How to make use of mod\\
_wsgi-express in a production environment.\n* Using mod_wsgi-express in a
containerised runtime environment.\n* Ensuring consistency between develop
ment and production environments using warpdrive.\n* Using mod\\_wsgi-expr
ess to bootstrap a system Apache installation for hosting WSGI application
s.\n* Why you should be using daemon mode of mod\\_wsgi and not embedded m
ode.\n* How to properly associate mod\\_wsgi with a Python virtual environ
ment.\n* Building a robust deployment that can recover from misbehaving ap
plication code\, backend services\, or request overloading.\n* Using hooks
provided by mod\\_wsgi to monitor the performance of your Python web appl
ication.\n\nIf you are a beginner\, come learn why mod\\_wsgi is still a g
ood option for deploying your Python web applications. If you are an old t
ime user of mod\\_wsgi\, find out about all the features you probably didn
't know existed\, revisit your current Python web application deployment a
nd make it even better.\n\nGraham Dumpleton
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Bowerbirds of Technology: Architecture and Teams at Less-than-Goog
le Scale
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T174000
DESCRIPTION:Facebook\, Google\, Uber\, LinkedIn\, and friends are the rare
fied heights of software engineering. They encounter and solve problems at
scales shared by few others\, and as a result\, their priorities in produ
ction engineering and architecture are just a bit different from the rest
of us down here in the other 99% of services. Through deconstructing a few
blog posts from these giants\, we’ll evaluate just what is it that they
’re thinking about when they build systems and whether any of their choi
ces are relevant to those of us operating at high scale yet still somethin
g less than millions of requests per second.\n\nThis talk will go into dep
th on how to make technological decisions to meet your customers’ requir
ements without requiring a small army of engineers to answer 2 AM pages\,
and how to set realistic goals for your team around operations\, uptime\,
communications\, and disaster recovery.\n\nWith these guidelines in mind\,
you should be better equipped to say no (or yes!) the next time your team
’s software hipster proposes moving everything to the Next Big Thing.\n\
nSam Kitajima-Kimbrel
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Visual Testing with PyCharm and pytest
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T174000
DESCRIPTION:Know you should be doing testing but haven’t gotten over the
hurdle to learn it? pytest is Python’s modern\, friendly\, and powerful
testing framework. When paired with an IDE\, testing gets a visual interf
ace\, making it much easier to get started.\n\nIn this talk we cover “vi
sual testing”: starting\, learning\, using\, and mastering test-driven d
evelopment (TDD) with the help of a nice UI. We’ll show PyCharm Communit
y Edition\, a free and open-source Python IDE\, as a productive TDD enviro
nment for pytest. Specifically\, we’ll show a workflow using pytest and
PyCharm that helps make tests speed up development\, or at the very least
help to make testing seem less "in the way" of other development activitie
s\n\nBrian Okken\, Paul Everitt
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:All in the timing: How side channel attacks work
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T174000
DESCRIPTION:In this talk\, you’ll learn about a category of security iss
ue known as side channel attacks. You’ll be amused to see how features l
ike automatic data compression\, short-circuit execution\, and determinist
ic hashing can be abused to bypass security systems. No security backgroun
d knowledge is required. The talk assumes at least intermediate Python exp
erience.\n\nWe’ll take a tour of real side channel vulnerabilities in op
en source Python codebases\, including the patches that fixed them. It als
o offers practical advice for avoiding these issues. My goal is to demysti
fy this topic\, even if you aren’t writing security-critical software.\n
\n\nPhilip James\, Asheesh Laroia
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:Elegant Solutions For Everyday Python Problems
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T174000
DESCRIPTION:Are you an intermediate python developer looking to level up?
Luckily\, python provides us with a unique set of tools to make our code m
ore elegant and readable by providing language features that make your cod
e more intuitive and cut down on repetition. In this talk\, I’ll share p
ractical pythonic solutions for supercharging your code. \n\nSpecifically\
, I'll cover:\n\n- What magic methods are\, and show you how to use them i
n your own code.\n- When and how to use partial methods.\n- An explanation
of ContextManagers and Decorators\, as well as multiple techniques for im
plementing them.\n- How to effectively use `NamedTuples`\, and even subcla
ss and extend them!\n\nLastly\, I'll go over some example code that ties m
any of these techniques together in a cohesive way. You'll leave this talk
feeling confident about using these tools and techniques in your next pyt
hon project!\n\nNina Zakharenko
LOCATION:Room 26A/B/C
END:VEVENT
BEGIN:VEVENT
SUMMARY:A Bit about Bytes: Understanding Python Bytecode
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T174000
DESCRIPTION:At some point every Python programmer sees Python bytecode fil
es -- they're those '.pyc' files Python likes to leave behind after it run
s. But have you ever wondered what's really going on in those files? Well\
, wonder no more! In this talk you'll learn what Python bytecode is and ho
w it's used to execute your code\, as well as how to decipher and read it\
, and how to reason about bytecode to understand the performance of your P
ython code.\n\nJames Bennett
LOCATION:Grand Ballroom B
END:VEVENT
BEGIN:VEVENT
SUMMARY:The Journey Over the Intermediate Gap
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T174000
DESCRIPTION:Congratulations on finishing your first tutorials or classes i
n python! In the parlance of the hero’s journey myth\, you’ve had your
‘threshold moment”: you’ve started down a path that could lead to a
long and fulfilling career. But the road to this glorious future is frust
ratingly obscured by a lack of guidance in the present. You know enough to
realize that you don’t have all the skills you need yet\, but it’s ha
rd to know how to learn those skills\, or even articulate what they are. T
here are no easy solutions to this problem. There are\, however\, a few fu
ndamental things to know and advice to keep in mind. Drawing from my own e
xperience and with input from others\, I’ve compiled some helpful hints
about the skills\, tools\, and guiding questions that will get you to mast
ery.\n\nSara Packman
LOCATION:Grand Ballroom A
END:VEVENT
BEGIN:VEVENT
SUMMARY:Get your resources faster\, with importlib.resources
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T174000
DESCRIPTION:Resources are files that live within Python packages. Think t
est data files\, certificates\, templates\, translation catalogs\, and oth
er static files you want to access from Python code. Sometimes you put th
ese static files in a package directory within your source tree\, and then
locate them by importing the package and using its `__file__` attribute.
But this doesn't work for zip files!\n\nYou could use `pkg_resources`\, a
n API that comes with `setuptools` and hides the differences between files
on the file system and files in a zip file. This is great because you do
n't have to use `__file__`\, but it's not so great because `pkg_resources`
is a big library and can have potentially severe performance problems\, e
ven at import time.\n\nWelcome to `importlib.resources`\, a new module and
API in Python 3.7 that is also available as a standalone library for olde
r versions of Python. `importlib.resources` is build on top of Python's e
xisting import system\, so it is very efficient. It also defines an abstr
act base class which loaders can implement to provide their own resource a
ccess. Python's built-in zipimporter uses this to provide efficient acces
s to resources within a zip file. Third party import hooks can do the sam
e\, so resources can come from anything that is importable by Python.\n\nT
his talk will step through the motivations behind `importlib.resources`\,
the library's usage\, its interfaces\, and the hooks made available to thi
rd party packages. It will also talk about the minor differences between
the standalone version and the version in Python 3.7's standard library.
Hopefully audience members will come away with compelling reasons to port
their code to this much more efficient library.\n\nBarry Warsaw
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python\, Locales and Writing Systems
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180512T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180512T174000
DESCRIPTION:Python 3 removes a lot of the confusion around Unicode handlin
g in Python\, but that by no means fixes everything. Different locales and
writing systems have unique behaviours that can trip you up. Here’s som
e of the worst ones and how to handle them correctly.\n\nRae Knowler
LOCATION:Global Center Ballroom AB
END:VEVENT
BEGIN:VEVENT
SUMMARY:Love your bugs
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20180511T171000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20180511T174000
DESCRIPTION:Wrestling bugs can be one of the most frustrating parts of pro
gramming - but with the right framing\, bugs can also be our best allies.
I'll tell the tales of two of my favorite bugs\, including the time I trig
gered a DDOS of a logging cluster\, and explain why I love them. I'll also
give you concrete strategies for approaching tricky bugs and making them
easier and more fun.\n\nAllison Kaptur
LOCATION:Grand Ballroom C
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python Developers Survey 2017: Findings
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Want to know about the latest trends in the Python community a
nd see the big picture of how things have changed over the last few years?
Interested in the results of the latest official Python Developers Survey
2017 which was supported by the Python Software Foundation and gathered r
esponses from more than 10.000 Python developers? Come learn about the mos
t popular types of Python development\, trending frameworks\, libraries an
d tools\, additional languages being used by Python developers\, Python ve
rsions usage statistics and many other insights from the world of Python.
All derived from the actual research: Python Developers Survey 2017 which
collected responses from over 10.000 Python developers\, organized in part
nership between the Python Software Foundation and JetBrains.\n\nDmitry Fi
lippov
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Building Reproducible Machine Learning Models with Python and Dock
er
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:A 2016 study by the journal _Nature_ found that 90% of working
scientists surveyed think there is a "slight" or "significant" crisis in
experimental reproducibility. For the working data scientist\, the process
es and models used in analysis must be able to be used to reproduce result
s or to be applied to new data. We ran into these same problems while buil
ding an API for developers to easily incorporate Machine Learning algorith
ms in their software. We were able to leverage Docker\, Python\, Flask\, a
nd Amazon S3 to enable the reuse of the exact model generated in the initi
al analysis. This poster will show how those pieces are put together and h
ow you could create a similar system for your analysis. \n\nJeff Espenschi
ed
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Spfy: analyzing E.coli genomes as graph data
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Whole genome sequencing isn't only for humans\, but also plays
a key role in our understanding of bacteria. Spfy uses WGS data to predic
t traditional lab results for E.coli genomes. The results are then stored
in a linked graph for identifying and comparing different subtypes.\nThe e
ntire platform is packaged as a web-app\, and the analysis modules are wri
tten in Python (+ a bit of R). Part of a larger open-source initiative by
the National Microbiology Lab of Canada.\n\nKevin K Le
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Curriculum for project-based data science classes and their buildi
ng blocks
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Machine learning\, artificial intelligence and data science ar
e \ninterdisciplinary subjects and therefore they are difficult to teach.
We suggest educational building blocks that help students to understand m
achine learning software (such as scikit-learn) and create their own artif
icial intelligence algorithms. These building blocks are theoretical compo
nents of global optimization algorithms (derived in [1]- more information
of these building blocks will be given later ) as well as some other numer
ical procedures(such as automatic differentiation\, see\, for example\, Py
thon implementations Autograd and AlgoPy). \nBased on these building block
s the programming projects \nare created that demonstrate certain steps in
machine learning algorithms and show how these steps appear in popular m
odern machine learning methods.\nThese projects become a foundation of pro
ject based data \nscience courses\, such as Data Analysis and Decision Mak
ing using Python\, Python for Financial Applications\, Operations Research
models using Python\, etc. \n\nBuilding Blocks\n\nIn [1] the theoretical
approach for the design of global optimization \nmethods based on potentia
l theory was introduced. This approach extends \nthe theory of gradient ba
sed optimization for algorithmically defined \nfunctions (or black box fun
ctions)\, where analytical representation of the function is not available
or too complicated to work with (say\, too hard to compute derivatives).
Such situations are very common in real world applications. Based on this
theory\, the parsimonious set of building blocks \nof the optimization alg
orithms was obtained. The hypothetical algorithm \nwhere all these buildin
g blocks are present in their full form is given \nin [1]-[3]. It is shown
that by varying the parameters of the building blocks we obtain the whole
universe of optimization methods\, some of them we recognize as well know
n heuristic techniques such as covariance matrix adaptation evolution stra
tegy\, Shor r algorithm\, Nelder and Mead algorithm etc. Main building blo
cks are defined as linear algebra operations: space dilation operator (bas
ed on this operator space transformation is defined)\, Householder transfo
rmation as a certain case of space dilation operator and memory accumulati
on module (accumulates information from the previous iterations of the alg
orithms). \nOther numerical procedures that algorithms are built upon are
automatic differentiation and natural gradient.\n\nExamples of the projec
ts\n\nHouseholder transformation in Nelder and Mead algorithm (fmin functi
on in SciPy)\n\nSpace dilation operator in Shor r-algorithm [5] and in Cov
ariance matrix \nadaptation evolution strategy(CMA-ES) [6]\n\nCombining au
tomatic differentiation with gradient-based algorithms for \noptimization
of algorithmically defined functions.\n\nNatural gradient evolution strate
gy [4]\n\nCoordinate transformation\, cootdinate descent algorithm and sep
arable \nfunctions. Invariance of coordinate descent method with respect t
o \nscaling and rotation of the search space.\n\nMemory accumulation modul
e. Comparizon of memory accumulation in Shor \nalgorithm and genetic algor
ithm\n\nMulti objective optimization vs constrained optimization\n\n[1]Kap
linskii A.I.\, Propoi A.I.\, First-order nonlocal optimization methods tha
t use potential theory\, Automation and Remote Control \, 1994\, №7\,
pp.94-103.\n[2]Kaplinskii A.I.\, Propoi A.I.\, Nonlocal optimization meth
ods that use potential theory\, Automation and Remote Control \, 1993\
, №7\, pp.55-66.\n[3]Kaplinskii A.I.\, Propoi A.I.\, Second-order refin
ement conditions in nonlocal optimization methods that use potential theor
y\, Automation and Remote Control \, 1994\, №8\, pp.104-113.\n[4]N. H
ansen\, Covariance Matrix Adaptation Evolution Strategy:A Tutorial \, N.Ha
nsen \, Cornell University Library\, 2016\nhttps://arxiv.org/abs/1604.0077
2\n[5]Tom Schaul\, Studies in Continuous Black Box Optimization\, PhD diss
ertation\, 2011 \n[6]N.Shor \,Minimization Methods for Non-Differentiable
functions\, Springer 1985\n\n\n\nNadia Udler
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python and Windows C++ desktop app: how we made them the best frie
nds
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Have you ever dreamed of live peeking and hacking inside big C
++ desktop application? Controlling it with simple and elegant Python code
? That's what we do in our test automation team at Avast software. \n\n\nW
hen we were thinking about test automation for software which protects hun
dreds of millions users worldwide\, we wanted our tests to be as stable as
possible. That's why we targeted internals of the application.\n\n\nBoost
Python allows us to easily export internal C++ interfaces of our applicat
ion to be controlled with Python. This approach allows us to automatically
create binary that is importable by Python like a standard Python module
and natively call the C++ code of the application. It provides us with the
best of both worlds:\n\n * Python allows easy and fast development of tes
ts\n\n * Invoking code of our C++ application directly reduces the test st
ability problems\n\n * We are directly at the core\, no extra layers/testi
ng frameworks needed\n\n * No need to beg for some extra code in the appli
cation: we just use it as it is \n\n * We can script our Python tests\, as
well as interactively control the application\n\nIn this poster\, we show
the basic principles of this architecture and present guiding steps for t
hose who would like to start leveraging convenient Python in the cruel C++
world.\n\n\n\nTomas Danek\, Lukas Kucera
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:PyBites Code Challenges
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Code challenges work. We hosted [47 Python challenges last yea
r](https://pybit.es/pages/challenges.html) and we have received amazing fe
edback. Not only do we get [amazing PR submissions](https://pybit.es/guest
-telegram-python-chatbot.html)\, we hear people stretching beyond what the
y thought capable of. As Sean Connery said: “there is nothing like a cha
llenge to bring out the best in man.” and we’re in the business of bri
nging this to the Python world.\n\nWe just launched our [Code Challenges P
latform](https://codechalleng.es) and > 500 Github users jumped on it the
first 2 weeks. We did a live code workshop at [Alicante University](https:
//pybit.es/alicante-pychallengeday.html) where we learned about typical hu
rdles people need to overcome to start leveraging the power of Python. And
we’re delighted to host a live code challenge at Pycon 2018! ([proposal
227](https://us.pycon.org/2018/proposals/227/)). We think it would be nic
e to further support this initiative with an attractive and data-driven po
ster about our project.\n\nBob Belderbos\, Julian Sequeira
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Lessons Learned from Civic Hacking
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Budgets\, Housing\, and Hurricanes. What do all of these thing
s have in common? Civic Hacking. These were local problems that were tackl
ed by a village of coding warriors.\n\nThere’s a lot Civic Hacking happe
ning in the state of Texas. From giving citizens exposure to city budgetin
g with Award-winning Budget Party\, tackling Section 8\, to the Hurricane
app creating effort covered by Forbes.\n\n\nCarrie Maxwell
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Django-Herald: A Django Messaging Library
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:A Django messaging library that features:\n\n - Class-based de
claration and registry approach\, like Django Admin\n - Supports multiple
transmission methods (Email\, SMS\, Slack\, etc) per message\n - Browser-b
ased previewing of messages\n - Maintains a history of messaging sending a
ttempts and can view these messages\n - Disabling notifications per user\n
\n\n\nRobert Roskam
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:15 years of PyCon: insight into Python's language and community vi
a seminar abstracts
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Since its inaugural conference in 2003\, the Python community
has hosted over 1200 talks\, in over 30 countries\, with more than 20\,000
attendees in the U.S. alone. \n\nThat’s a lot of Python -- and a lot of
extractable data. \n\nBy examining the categories and topics of seminar a
bstracts over the years\, observations about the development of the langua
ge and the Python community's interests can be found. These insights are i
nvaluable to understanding how both the community and language have grown\
, where they are headed\, and how people may support the continued growth
of Python for years to come.\n\nThis year for the 15th anniversary of PyCo
n\, we will highlight some of the many diverse presentations of previous c
onferences\, piquing not only your nostalgia\, but also your appreciation
for the impact this event has on what is shaping to truly be a hundred-yea
r language.\n\nTanya Schlusser\, Hailey Hoyat
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:AREPL: real-time evaluation of python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:[AREPL](https://github.com/almenon/AREPL) is a scratchpad in w
hich debugging\, running\, and writing your code can all be done at the sa
me time. Whenever you stop typing your code is evaluated and the output i
s shown. But not just the output - your local variables are saved for ins
pection as well. Update the code\, and the values seamlessly change. Eve
n if you make a mistake\, you will still get the state of your variables r
ight before\, along with the error and stack trace.\n\n**Other Features:**
\n* human-readable display of certain types\, like dates.\n* Automatic res
tart for GUI development\n* Ability to 'save' a section so it only runs on
ce\n\n----------\n\n**Links:**\nhttps://github.com/almenon/AREPL\nhttps://
www.youtube.com/watch?v=GxryBUukTyM\n\n\n\nCaleb Collins-Parks
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:MFP: Making music with Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:MFP (Music For Programmers) is an application that lets users
make music by creating a dataflow diagram called a "patch" (really a progr
am) that generates or processes sound. MFP is strongly inspired by graphi
cal patching languages such as Max/MSP and Pure Data\, but is a completely
new implementation written in Python with C extensions.\n\nUsing MFP\, y
ou can quickly start making sound\, processing the inputs and outputs of o
ther audio programs\, and interfacing with MIDI devices and control surfac
es by drawing diagrams. But you also have access to Python data and libr
aries from within patches\, which makes it possible to write programs that
have nothing to do with audio\, or to bring in Python's power to handle f
iles\, strings or whatever\, or to write extensions to MFP itself. \n\nBi
ll Gribble
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Reproducible environments for reproducible results
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Trustworthy results require reproducibility\, which begins wit
h an environment that won’t change under your feet. A truly stable envir
onment requires a guarantee of dependency immutability and the ability to
roll back if problems arise. [Pulp](https://pulpproject.org/) is open sour
ce\, written in Python\, and can be used to fetch\, upload\, organize\, an
d distribute software packages. With Pulp you can host and manage multiple
PyPI-like instances\, called repositories\, which are versioned and conta
in any packages you choose. These repositories can range from a mirror to
a carefully curated [known good set](https://packaging.python.org/glossary
/#term-known-good-set-kgs) and they can be promoted through your software
development life cycle.\n\nYou can fetch packages from external repositori
es\, upload private packages\, and create a pull-through cache of the Pyth
on Package Index\, all while keeping fine control from development to prod
uction. Each Pulp repository can act as a package index that plays nice wi
th pip. Pulp's plugin architecture enables users to manage RPM Packages\,
Debian Packages\, Docker Containers\, and ISOs all in one place. View our
source code on [github](https://github.com/pulp/pulp)\, or read more about
us in our [documentation](https://docs.pulpproject.org/en/3.0/nightly/).
\nCome by and talk Python workflows\, learn how Pulp can help you\, and te
ll us your use cases.\n\nAustin Macdonald\, Bihan Zhang
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Exploring generative models with Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Do you know that Neural Networks learn an inner representation
? This could be useful for data understanding and disentangling relationsh
ips between features. Over this manifold\, their last layers can perform t
he classification. But what if we change the target of these networks? Ins
tead of trying to classify correctly\, we could want to reconstruct the in
put. Based on this idea\, there are different approaches using Neural Netw
orks that are known as generative models\, models that can provide new ins
tances learning a manifold of the original data. Generative Adversarial Ne
tworks (GAN) and Variational Autoencoders (VAE) are two well-known techniq
ues to do this.\n\nRegarding this learnt manifold\, if the network can rec
onstruct the input after projecting it into this subspace\, What is in bet
ween two projected samples? Is it useful or just noise? We have explored t
his manifold empirically and we have found that some paths between project
ed samples provide unseen instances that are a combination of the inputs\,
i.e: digits that are rotated or shrunk\, style combination\, etc. This co
uld be useful to understand the underlying distribution or to provide new
instances when data is scarce.\n\nIn order to carry on these experiments\,
we have relied on Python\, in particular\, we have extensively used Tenso
rflow. In this poster\, the Python tools that one could use to explore and
reproduce these experiments will be described as well as the datasets tha
t we have used.\n\nJavier Jorge
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:How a Python Application Can Support Everything Else
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:This poster will walk through the full replacement of a legacy
suite of applications. The final system had a series of projects that all
plugged into a Python project that versioned every document for storage.
Python was the beginning and end state of every piece of data whether it w
as going through Javascript manipulation\, PHP\, or Knime. Python was the
backbone\, and it had to perform over very large data sets that were expec
ted to grow quickly.\n\nThis poster will present a visual representation o
f all the systems and how this project used Python to solve the problems i
n question.\n\nLaurie Barth
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Converting unstructured web data into sequenced STEM educational g
ames
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Vocabulary\, repetition\, and examples are fundamental to huma
n learning. These fundamental tools help humans to teach each other\, com
municate\, and innovate. Yet\, vocabulary building and reading comprehensi
on games specifically geared for science\, technology\, engineering and ma
th (STEM) disciplines are lacking. They are expensive to make and the cont
ent has a short life span.\n\nFirst\, a topic and grade level must be chos
en by the game designer. Second\, an age appropriate curriculum must be de
veloped. Third\, the content must be researched and edited. And finally\,
the content needs to be transformed into a game by game developer(s). This
process needs to be repeated for each topic.\n\nHowever\, this process ca
n be automated using natural language processing (NLP)\, the digitization
of primary sourced information\, and vibrant open source ecosystems. Autom
ating this process enables educators to create STEM educational games with
just four user inputs: (1) Term\, (2) Topic\, (3) Grade Level\, (4) Game
type. The corresponding output is a set of sequenced games that can be adj
usted for reading comprehension levels for particular students.\n\nThe pro
cess to build content for the games is built on open source packages such
as beautiful soup\, pandas\, textacy\, gensim\, scikit-learn\, and network
x. Client side work is done in javascript and is served by Flask.\n\nItay
Livni\, Michael Wehar
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Cart Pole AI Controller
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Cart Pole Balancing Problem is one of the standard classical c
ontrol problem. Building an AI Reinforcement learning agent to balance the
pole connected with one joint on top of the moving cart is a challenging
problem. This live demo showcases the working of the adaptive actor critic
game controller. It has applications in designing future AI game controll
ers\n\nSRIVIGNESSH PACHAM SRI SRINIVASAN
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:A Python-Friendly Computer Keyboard
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:If we could create a computer keyboard specifically for Python
programmers\, what would the layout of the letters and symbols be?\n\nThe
QWERTY keyboard we use today was developed in 1878 to avoid jamming typew
riters' metal arms when typing quickly. But some of the most commonly used
letters and symbols aren't easy for our fingers to get to on our modern\,
two-dimensional computer keyboards!\n\nComputer programmers know this pro
blem well: We have to press the `SHIFT` key every time we need a curly bra
cket\, a parenthesis or a colon. And we use lots of these punctuation mark
s\, creating a lot of extra keystrokes.\n\nBy running character analysis o
n the source code of Python's 30 most widely used libraries—presumably g
ood examples of high-quality\, Pythonic code—we can discover character f
requencies that will help us assemble a new keyboard layout that helps Pyt
hon programmers make more efficient keystrokes.\n\nA Python-friendly keybo
ard would have the most common letters and symbols on the home row\, the m
oderately-used letters and symbols on the top row\, and infrequently used
letters and symbols on the bottom row.\n\nAnd with keyboard re-mapping\, w
e can actually implement such a keyboard!\n\n\n\nErin Allard
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Fighting Documentation Drift
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:One of the main arguments against documentation is that it fre
quently falls out of sync with the code it is supposed to describe. Howev
er\, the solution isn't to document less\; the solution is to automate the
process of checking our documentation. This is the idea behind [darglint
](https://github.com/terrencepreilly/darglint)\, a docstring argument lint
er.\n\n*Darglint* can identify certain types of documentation drift with d
ocstring\, such as\n\n- missing/extraneous parameters\,\n- missing/extrane
ous return or yield statements\,\n- missing/extraneous exception descripti
ons\,\n\nAs well as a variety of stylistic errors which can make parsing t
he docstring difficult. This poster will describe and demonstrate *dargli
nt*\, measure its effectiveness against open-source projects\, and explore
other possibilities for fighting documentation drift.\n\nTerrence Reilly
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Building your own Messenger Chatbot using Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:While designing and developing your own functional chatbot mig
ht seem like a herculean task\, python makes it extremely easy to add inte
lligent conversational functionality\, and with pretty good accuracy! In a
ddition to this\, once you are familiar with Facebook messenger API (which
also has a wide range of wonderful conversational interface elements) it
’s actually not that hard a task to get your chatbot into production on
Messenger.\n\nMy poster\, with the help of a messenger bot I have programm
ed myself as an example\, will be taking you through the whole workflow of
setting up your own chatbot. We will start by looking at the important fe
atures of the Messenger API\, such as automatically sending texts\, quick
replies and images. Python libraries such as _spaCy_ and _NLTK_ make it ve
ry intuitive to add functionality to your bot. I will then be explaining h
ow you can use NLTK for text classification\, and spaCy language models fo
r entity recognition and part-of-speech tagging. These python libraries wi
ll enable us to add natural language conversational ability to the chatbot
.\n\nTo get your bot up and running on messenger\, you need to deploy it o
n a cloud server. I will be going through the steps involved in getting yo
ur app up and running on one such cloud service\, _Heroku_. Following this
\, we will be integrating Messenger with the application deployed on Herok
u\, for which we need to set up WebHooks (after I tell you what webhooks a
re!) and authorise the app.\n\nFinally\, I will be talking about how to ge
t your bot into production for which you will need to do complete some saf
ety formalities (such as setting a privacy policy) as per Facebook’s rul
es & regulations. We will then discuss how different lines of business can
leverage chatbots\, and what the potential advantages and disadvantages o
f chatbots are. By the end\, you will be equipped with all the tools neces
sary to design your own chatbot for your product\, and get it up and runni
ng on messenger for your Facebook product page! \n\nAkilesh Lakshminarayan
an
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Practical Sphinx
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Each member of your project team uses something different to d
ocument their\nwork --- RestructuredText\, Markdown\, and Jupyter Notebook
s. How do you\ncombine these into useful documentation for your project's
users? Sphinx and\nfriends to the rescue!\n\nLearn how to integrate docume
ntation into your everyday development\nworkflow\, apply best practices\,
and use modern development tools and services\,\nlike Travis CI and ReadTh
eDocs\, to create engaging and up-to-date\ndocumentation which users and c
ontributors will love.\n\n\nCarol Willing
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Open Source Metrics at Twitter: A USF Capstone Project
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Through a Capstone Program partnership between the Open Source
Program at Twitter\, the University of San Francisco Computer Science Dep
artment\, and members of the Linux Foundation's CHAOSS Community\, undergr
aduate students researched and developed numerous proof of concept tools t
o gather and and visualize metrics that assess Open Source Community Healt
h.\n\nRemy DeCausemaker
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Build secure and reliable continuous delivery deployment for pytho
n microservices
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:In the agile methodology\, the speed at which software gets sh
ipped these days got very fast. In many cases the initiative of building s
oftware in a secure way get’s deprioritized. There is no time to do “t
raditional secure process” where every stage of the software development
cycle has a security checklist. This talk presents proposal about process
es that support or could support secure software development. \nContinuous
Delivery is a software development discipline where you build your python
microservices in such a way that it can be released to production at any
time. Microservice security relies on automating the Continuous Delivery d
eployment process. \nMaking deployments secure and reliable before they la
nd in production should be a goal for every software developer. With Conti
nuous Delivery and security automation software developer doesn’t have t
o be a security expert in everything to work within a microservices archit
ecture. \n\nA poster will contain (suggestions and code snippets):\n\n1)
Challenges when using Microservices and Continuous Deployment\n2) Secure C
ontinuous Delivery Microservices Production pipeline\n - access control se
ttings\n - secure deploy an API gateway \n - centralized security or conf
iguration policies\n - secure source code management using GitHub \n - use
Security Policies tailored for microservices workflow\n3) Conclusion\n\nN
atalie Serebryakova
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Managing Machine Learning Experiments
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Managing experimental results in machine learning can be a dau
nting task. Researchers and practitioners often try a variety of algorith
ms\, hyper-parameters\, and pre-processing techniques\, each resulting in
different outcomes. Tracking and analyzing each of these outcomes is a bur
den further amplified when dealing with multiple collaborators and several
computer nodes.\n\nIn this presentation I will share my experience of man
aging over a 1\,200 experimental results\, ran in parallel on 8 computer n
odes with 5 collaborators over a time span of 6 months. I will focus on th
e usage of the [randopt](https://seba-1511.github.io/randopt/) package for
experimental management and visualization. Specifically\, I will introduc
e the typical randopt workflow which consists of experiment creation\, hyp
er-parameter selection\, and results visualization.\n\nRandopt is an [open
-source](https://github.com/seba-1511/randopt) library for experiment mana
gement. It is written in pure Python\, is dependency-free\, and available
on [PyPI](https://pypi.python.org/pypi/randopt). Interactive\, web-based e
xperimental reports are generated via the built-in command line utility an
d a programmatic API is also available. It is compatible with all Python p
ackages\, including PyTorch\, TensorFlow\, scikit-learn\, and numpy/scipy.
While randopt was developed with machine learning in mind\, its agnostici
ty with respect to the nature of the experiments makes it suitable for gen
eral-purpose scientific experiment management.\n\nSeb Arnold
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Building your own weather app using NOAA open data and Jupyter not
ebooks
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:The National Weather Service (NWS) estimates that its open dat
a support a [1.5 billion dollar industry](http://informationdiet.com/blog/
read/how-did-weather-data-get-opened). However\, if you are a Python enthu
siast and love open data you don't need that industry to get your very ow
n customized weather app \;-)\n\nWe will walk through all the steps to cre
ate a fully-featured GIS interactive map (mobile friendly too!).\n\nThanks
to the Open Geospatial Consortium (OGC) standards\, and NOAA's open data
policies\, it is quite easy to set up a data discovery system based on loc
ation\, time\, and variable of interested.\n\nIn [this example](https://oc
efpaf.github.io/python_hurricane_gis_map/irma.html) we'll explore the Nati
onal Hurricane Center (NHC) predictions for hurricane Irma and fetch all o
pen data we can find along its path.\n\nFilipe Fernandes
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Instrumenting Python
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:This poster presents [Affirm](https://www.affirm.com/)'s appro
ach to instrumenting Python. We place great importance on our metrics infr
astructure because metrics help engineers find and fix bugs quickly\, conf
idently iterate on features\, and make data-driven decisions. \n\nWe start
by discussing how we emit metrics in our Python code by extending the Pyt
hon logger. We consider how we ensure this process is reliable and how we
make sure it will not impact application performance. \n\nWe also present
our metrics pipeline--how we use open source software for metrics collecti
on ([Riemann](http://riemann.io/))\, storage ([Elasticsearch](https://www.
elastic.co/products/elasticsearch))\, visualization ([Grafana](https://gra
fana.com/))\, and alerting ([Cabot](https://github.com/Affirm/cabot)). We
explain the reasons we believe the tools we chose are reliable and scalabl
e and the checks we have built to ensure our pipeline is working. \n\nAs a
n example\, we present the metrics we collect for [celery](http://www.cele
ryproject.org/) tasks and examples of the insights these metrics have give
n us. \n\nElaine Arbaugh\, James Lim
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Improving command line experience for managing databases with mssq
l-cli and mssql-scripter
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Since the announcement that SQL Server 2017 supports Linux and
Docker\, there was a need for creating modern\, cross-platform CLI tools
to provide DBA's and developers the choice to use SQL Server anywhere. \n\
nWhile rethinking our tools strategy\, our team chose to collaborate with
the open source community to create two great Python-based tools: mssql-cl
i and mssql-scripter.\n\n- **mssql-cli** is an interactive T-SQL query too
l which includes features such as auto-completion\, syntax highlighting\,
and pretty formatting. To create this tool\, we collaborated with the [dbc
li community](https://github.com/dbcli) which includes other CLI tools suc
h as pgcli and mycli.\n\n- **mssql-scripter** is a scripting tool for SQL
Server databases and can easily generate CREATE and INSERT t-sql scripts f
or database objects\, similar to pg_dump and mysqldump.\n\nTo learn more\,
please visit our GitHub repos for [mssql-cli](https://github.com/dbcli/ms
sql-cli) and [mssql-scripter](https://github.com/microsoft/mssql-scripter)
\n\n\nAlan Yu
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:BAMnostic: an OS-agnostic port of genomic sequence analysis
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:As genome sequencing and testing gets [cheaper](https://www.ge
nome.gov/27565109/the-cost-of-sequencing-a-human-genome/) and becomes more
[mainstream](http://bgr.com/2017/11/27/23andme-dna-test-price-drop-amazon
-cyber-monday/)\, the amount of data being generated is staggering. Much l
ike other scientific fields\, **Python** has become one of the predominant
programming languages used to process such data. What most people do not
know is that a majority of genome analytics can be boiled down to clever s
tring comparison and matching algorithms. The caveat here being a single f
ile can be as ≥**300 Gb** in its [compressed binary encoded format](http
s://samtools.github.io/hts-specs/SAMv1.pdf). A high-throughput sequencing
library ([htslib](https://github.com/samtools/htslib)) was developed to es
tablish a standard encoding and compression schema that enabled researcher
s to have random access to these large files. As it stands\, htslib is the
industry standard in the realm of genomics. \n\nOne of the most popular P
ython libraries for handling genomic data ([PySAM](http://pysam.readthedoc
s.io/en/latest/)) is essentially a wrapper for htslib. As widely used as b
oth htslib and PySAM are for developers\, a large contingent of users (bot
h end and developer) are excluded simply because htslib and PySAM do not s
upport [***Windows***](https://github.com/pysam-developers/pysam/issues/57
5) environments outside of contrived builds and dependencies that many end
-users would not be willing to implement.\n\nTo overcome this issue\, pure
Python ports of the random access\, unpacking\, and decoding components o
f htslib were developed as a lightweight toolkit called **BAMnostic**. BAM
nostic was developed to be a drop-in alternative for a majority of PySAM's
workload when working in a Windows environment or projects that require a
n OS-agnostic approach. As a drop-in\, it retains the same interface as Py
SAM for each of its supported functions. This interface also provides a me
ans of simple extensibility for machine learning and statistical analysis
through libraries such as [TensorFlow](https://www.tensorflow.org/api_docs
/python/)\, [scikit-learn](http://scikit-learn.org/stable/)\, and [statsmo
dels](http://www.statsmodels.org/stable/index.html). Additionally\, it mak
es piping desired data into data visualization libraries\, such as [Plotly
](https://plot.ly/)\, a simple task. Lastly\, as pure Python\, it can now
be easily embedded into a socketed [Flask](http://flask.pocoo.org/) web se
rver or used as standalone application.\n\nMarcus Sherman
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Supervised and Unsupervised Machine Learning of Electroluminescent
Images of Photovoltaic Modules
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Electroluminescence (EL) is a process in which materials emit
light when an electric current is passed through it. In this method\, elec
tricity is passed through photovoltaic (PV) modules and EL light is emitte
d from the solar cells which are captured by an infrared sensitive camera.
EL images are useful for characterization of electrical properties of pho
tovoltaic (PV) modules based on the intensity of light in the images. The
goal of the project is to build an automated pipeline for EL image supervi
sed classification and unsupervised clustering. The motivation behind EL i
mage processing is to study the effect of degradation in electrical proper
ties based on physical appearances captured by the images.\n\nTo study PV
module degradation\, EL images of crystalline silicon PV solar panels were
captured under multiple test conditions at various periodic intervals. Da
mp-heat and thermal cycling cause corrosion and cracks\, respectively\, wh
ich can be seen in an EL image with regions of dark areas. Cracks orientat
ion and thickness of corrosion is correlated to resistive losses which cau
se EL images to have lower light intensity at affected areas.\n\nThis work
is part of our US Dept. of Energy\, SunShot project “MLEET”. To enabl
e in-place analytics we store all datasets and results from different sour
ces in Hadoop with an HBase NoSQL database and we integrate it with python
using the happybase module. For feature extraction and machine learning f
rom these EL images\, we use scipy\, sklearn\, and opencv.\n\n\n\nAhmad Ma
roof Karimi\, Justin Fada\, Roger French
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Bringing ML to the Front Lines of Healthcare
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:# Introducing healthcareai\n\nA python and R library focused o
n increasing the national adoption of machine learning in healthcare.\n\n#
# Healthcare is behind\n\nHealthcare is far behind other industries techno
logically\, especially when it comes to analytics and machine learning. Th
is means that the industry is full of easy to capture value\, that can man
ifest as cost savings\, clinical outcome improvements and lives saved.\n\n
## Challenges to ML in Healthcare\n\n- There are many skilled analysts tha
t lack the skills to use ML.\n- Deploying models with pipelines is non-tri
vial even with experience.\n- Workflows are expensive and slow to change.\
n- Model interpretability is a big deal for front line clinicians.\n\n## S
uccesses\n\n- LACE vs ML\n- 50% reduction in CLABSI cases at a large acade
mic medical center.\n- Improved self-pay collection workflows.\n- Reducing
Heart Failure Readmissions by \n\n## Lessons Learned\n\n- Pair analysts w
ith domain experts.\n- Be agile in model development.\n- Surface predictio
ns in the right workflow.\n- Continually monitor models.\n- Interpretation
is hard.\n\n## The Library\n\n### Benefits\n\n- Learn ML with the dozen b
uilt-in healthcare datasets.\n- Many built in visual model evaluation tool
s.\n- Data preparation pipelines are baked in from training to production
deployment.\n- Advanced users can use the full power of scikit-learn while
leveraging some nice conveniences.\n\n### Sample Usage of healthcareai\n\
n```\nimport healthcareai\n... more to come here\n```\n\n### Ways You Can
Help\n\nThough we have some great successes (and failures) under our belts
\, we are early on our journey with ML + healthcare. Our goals are to make
healthcareai a low-friction way to get into ML. We are eager to provide i
ssues across a wide range of abilities and encourage PRs!\n\nTaylor Miller
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Running the #1 Brazilian Telegram Bot on a Raspberry Pi using Pyth
on
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Telegram Messenger is an instant messaging app. It has a well
documented chatbots API and a great amount of users on multiple countries.
\n\nFrom the need to save some time\, I learned to develop chatbots\, aut
omating tasks. A server is needed to run them 24/7. Then\, questions arris
e:\n- How to develop them?\n- Where to run it?\n- How much will it cost?\n
\nOn this poster I'll show people how I'm running a few Telegram Chatbots
as cheap as possible\, making possible to achieve it's goals without spend
ing lots of money.\n\nGabriel Ferreira
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Python for Passwords: Diceware
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION: A Beginner's Guide to Crypto Magic ⚡️ Welcome to Professo
r Speir's crypto class for first years. Passwords are an integral part of
our lives both in the Wizarding World of Technology™️ and consumers of
the internet. In this lesson\, we will learn a fun and safe methodology o
f creating passwords for humans that also contain a great deal of entropy.
Why are passwords so difficult?\n\nPassword best practices. \nHow can we
create good passwords with Python?\n>Diceware: A History\n>Diceware: The P
yPi Package\n\nIt all comes down to being random. Explain how `random.Syst
emRandom` works.\n\nI would have a demo application built where people cou
ld test generating such a password to take the experience from the poster
to the attendee. \n\n\nMegan Speir
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:Hack your Kinect!
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:Has your Kinect\, too\, been collecting dust at the back of yo
ur consoles console? Time to get it out and put it to good use again! \n\
nWith a little Python and OpenCV magic\, you can easily breathe new life i
nto this super innovative gaming device from a few years ago. \n \nMy po
ster will show you what your trusty Kinect is capable of and what you can
do with the built-in hardware – which does not limit you to playing game
s\, but opens up other\, even more interesting possibilities of interactio
n\, especially when combined with a projector. Not a Kinect owner yet? No
problem\, my poster has you covered! I will let you know what equipment yo
u need and how to get it (good news: you do not need to also get the conso
le it came bundled with!). \n \nAs space is limited on a poster\, I will
likely not be able to provide a full working example script\, but I will m
ake sure to include code snippets and links to resources to help you with
your own future Python + Kinect projects.\n\nKay Kollmann
LOCATION:Poster Room
END:VEVENT
BEGIN:VEVENT
SUMMARY:I contributed! But what now ? Data analytics for understanding you
r open source community
DTSTART;TZID=US/Eastern;VALUE=DATE-TIME:20140317T100000
DTEND;TZID=US/Eastern;VALUE=DATE-TIME:20140317T131000
DESCRIPTION:For any community especially those in open source\, newcomer o
nboarding is important but retaining them is critical. Since past two year
s\, we at the Fedora Community Operations team have been working on unders
tanding community health and on improving contributor retention rates in o
ur community. Using this poster session\, I would like to share some of th
e findings from our work\, similar research done by other open source proj
ects and how we can use and apply these findings.\n\nThe poster will discu
ss some community-oriented metrics we use at Fedora to understand communit
y health like contributor engagement metrics\, contributor onboarding and
retention rates etc. I will then share some insights derived from finding
common patterns in contribution activity of long-term active volunteers i.
e. Are they involved in many different areas of their projects? What are s
ome good measures to predict how long a volunteer will stay ? What is the
magic element X that makes people stay ? The poster will also discuss abou
t similar research done by other open source communities in this area and
how these insights can be applied to improve contributor retention rates
and overall community health on an individual as well as community level.\
n\nBee
LOCATION:Poster Room
END:VEVENT
END:VCALENDAR
import json
import icalendar as ical
import datetime
import pytz
def desc(event):
desc = event["description"]
authors = ", ".join(event["authors"])
return "%s\n\n%s" % (desc, authors)
def utf8(s):
return s.encode("utf-8")
def ptime(s):
t = datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%S")
tz = pytz.timezone("US/Eastern")
return tz.localize(t)
if __name__ == "__main__":
with open("conference.json") as f:
data = json.load(f)
c = ical.Calendar()
c.add("prodid", "-//Pycon 2018//")
c.add("version", "2.0")
for item in data:
#print str(item["name"].encode('utf-8'))
#print str(item["description"].encode('utf-8'))
e = ical.Event()
e.add("summary", utf8(item["name"]))
e.add("dtstart", ptime(item["start"]))
e.add("dtend", ptime(item["end"]))
e.add("description", utf8(desc(item)))
e.add("location", item["room"])
c.add_component(e)
with open("my.ics", "w") as f:
f.write(c.to_ical())
python t.py
Complexity Science
Complexity Science is an approach to modeling systems using tools from discrete mathematics and computer science, including networks, cellular automata, and agent-based models.  It has applications in many areas of natural and social science.
Python is a particularly good language for exploring and implementing models of complex systems.  In this tutorial, we present material from the draft second edition of *Think Complexity*, and from a class we teach at Olin College.  We will work with random networks using NetworkX, with cellular automata using NumPy, and we will implement simple agent-based models.
Traceback (most recent call last):
File "t.py", line 32, in <module>
print e
File "/usr/local/lib/python2.7/dist-packages/ics/component.py", line 93, in __str__
output(self, container)
File "/usr/local/lib/python2.7/dist-packages/ics/event.py", line 392, in o_description
container.append(ContentLine('DESCRIPTION', value=escape_string(event.description)))
File "/usr/local/lib/python2.7/dist-packages/ics/utils.py", line 170, in escape_string
string = string.replace("\\", "\\\\")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 177: ordinal not in range(128)
import ics
def desc(event):
desc = event["description"]
authors = ", ".join(event["authors"])
return "%s\n\n%s" % (desc, authors)
def utf8(s):
return s.encode("utf-8")
if __name__ == "__main__":
with open("conference.json") as f:
data = json.load(f)
c = ics.Calendar()
for item in data:
print str(item["name"].encode('utf-8'))
print str(item["description"].encode('utf-8'))
e = ics.Event(name=utf8(item["name"]),
begin=item["start"],
end=item["end"],
description=utf8(desc(item)),
location=item["room"],
)
print e
c.events.append(e)
with open("my.ics", "w") as f:
f.writelines(c)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment