diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..0fd8c7b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,25 @@ +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 +max_line_length = 80 + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml,json}] +indent_size = 2 + +[Makefile] +indent_style = tab + +[LICENSE] +insert_final_newline = none +trim_trailing_whitespace = none +indent_style = none +indent_size = none diff --git a/.gitignore b/.gitignore index f144262..4329ebb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,79 @@ -*.pyc -.idea/ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ +cc-test-reporter + +# pyenv +.python-version + +# Environments +.env +.venv env/ +venv/ +ENV/ +env.bak/ +venv.bak/ +.python-version +.envrc + +# Rope project settings +.ropeproject + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Serverless +node_modules +.serverless + +# IDEs +.vscode +.idea + +# Sphinx temp +docs/_build +docs/source + +*.ipynb_checkpoints/ +*.ipynb +.node-version diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..211de99 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,51 @@ +--- +fail_fast: true +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.2.1 + hooks: + - id: check-ast + - id: check-symlinks + - id: check-executables-have-shebangs + - id: check-merge-conflict + - id: check-json + - id: check-yaml + - id: detect-private-key + - id: double-quote-string-fixer + - id: trailing-whitespace + - id: no-commit-to-branch # No (direct) commits to master + - repo: https://github.com/asottile/add-trailing-comma + rev: v1.0.0 + hooks: + - id: add-trailing-comma + - repo: https://github.com/pre-commit/mirrors-isort + rev: v4.3.18 + hooks: + - id: isort + - repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.1.6 + hooks: + - id: forbid-crlf + files: \.md$ + - id: remove-crlf + files: \.md$ + - repo: local + hooks: + - id: lint + name: tox lint + entry: tox -e lint + language: system + - id: doclint + name: tox doclint + entry: tox -e doclint + language: system + - id: mypy + name: tox mypy + entry: tox -e mypy + language: system + types: [python] + - id: tests + name: tox tests + entry: tox -e tests + language: system + types: [python, yaml] diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..559b02d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,62 @@ +FROM debian:buster + +WORKDIR /opt + +ADD . flask_nexttalk + +RUN apt update \ + && apt -y upgrade \ + && apt -y install build-essential python3-dev python3-pip \ + && python3 -m pip install -U pip setuptools pipenv \ + && touch /tmp/mysite.sock \ + && chown www-data /tmp/mysite.sock \ + && cd flask_nexttalk/; pipenv install \ + && rm -rf /var/lib/apt/lists/* \ + + +RUN ln -s /etc/uwsgi/apps-available/mysite.ini /etc/uwsgi/apps-enabled/mysite.ini \ + && service nginx restart \ + && service uwsgi restart + +# command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'" + +EXPOSE 80 + + +# Now all we have to do is add our configuration files for nginx and uwsgi. First delete the default configuration for nginx: +# ``` +# cd /etc/nginx/sites-available +# sudo rm default +# ``` +# Create a new configuration file mysite and add the following: + +# ``` +# server { +# listen 80; +# server_tokens off; +# server_name localhost; + +# location / { +# include uwsgi_params; +# uwsgi_pass unix:/tmp/mysite.sock; +# } + +# location /static { +# alias /home/pi/App/flask-nexttalk/ep2017/static; +# } + +# ## Only requests to our Host are allowed +# if ($host !~ ^(localhost)$ ) { +# return 444; +# } +# } +# ``` +# NOTE: change ep2017 for your theme folder + +# In order to enable the site, we must link our configuration file to /etc/nginx/sites-enabled/: + +# ``` +# sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/mysite +# ``` + + diff --git a/Dockerfile.armhf b/Dockerfile.armhf new file mode 100644 index 0000000..db96132 --- /dev/null +++ b/Dockerfile.armhf @@ -0,0 +1,19 @@ +FROM balenalib/rpi-alpine:3.10 + +ENV TZ 'Europe/Berlin' + +ENV SICKRAGE_VERSION 9.4.132 + +RUN apk add --update --no-cache libffi-dev openssl-dev libxml2-dev libxslt-dev linux-headers build-base \ + git tzdata unrar \ + python3 python3-dev +RUN git clone https://github.com/SiCKRAGE/SiCKRAGE.git -b ${SICKRAGE_VERSION} --depth 1 /opt/sickrage \ + && cd /opt/sickrage; git checkout ${SICKRAGE_VERSION} \ + && python3 -m pip install -U pip setuptools \ + && python3 -m pip install -r /opt/sickrage/requirements.txt + +## Expose port +EXPOSE 8081 + +## Run +ENTRYPOINT ["python3", "/opt/sickrage/SiCKRAGE.py", "--datadir=/config"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..40e5300 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Enterat + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..a33db56 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +include README.md +include CHANGELOG.md diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4a2b74f --- /dev/null +++ b/Makefile @@ -0,0 +1,101 @@ +.PHONY: help clean clean-pyc clean-build list test test-dbg test-cov test-all coverage docs release sdist install install-dev install-ci lint mypy isort isort-check + +project-name = flask-nexttalk + +version-var := "__version__ = " +version-string := $(shell grep $(version-var) $(project-name)/version.py) +version := $(subst __version__ = ,,$(version-string)) + +help: + @echo "install - install" + @echo "install-dev - install also development dependencies" + @echo "clean - clean all below" + @echo "clean-build - remove build artifacts" + @echo "clean-pyc - remove Python file artifacts" + @echo "clean-tox - clean tox cache" + @echo "lint - check style with flake8" + @echo "test - run tests quickly with the default Python" + @echo "test-cov - run tests with the default Python and report coverage" + @echo "test-dbg - run tests and debug with pdb" + @echo "develop - run tests in loop mode" + @echo "deploy - deploy" + @echo "mypy - check type hinting with mypy" + @echo "isort - sort imports" + @echo "isort-check - check if your imports are correctly sorted" + @echo "build - create the distribution package" + @echo "release - package a release in wheel and tarball, requires twine" + +install: + python -m pip install pipenv + pipenv install + python -m pip install . + +install-ci: + python -m pip install pipenv + pipenv install --dev + python -m pip install -e . + +install-dev: install-ci + pre-commit install + +clean: clean-build clean-pyc clean-caches + +clean-build: + rm -fr build/ + rm -fr dist/ + rm -fr .eggs/ + rm -fr *.egg-info + rm -fr *.spec + +clean-pyc: + pyclean $(project-name) + find . -name '*~' -exec rm -f {} + + find . -name __pycache__ -exec rm -rf {} + + find . -name '*.log*' -delete + find . -name '*_cache' -exec rm -rf {} + + find . -name '*.egg-info' -exec rm -rf {} + + +clean-caches: + rm -rf .tox + rm -rf .pytest_cache + +serve: + gunicorn -w 1 --threads 3 --access-logfile access.log -b "0.0.0.0:8888" \ + "flask_nexttalk.app.run:__wsgi__" + +lint: + tox -e lint + +test: + tox -e tests + +mypy: + tox -e mypy + +isort-check: + tox -e isort + +isort: + isort -rc lambda_handlers/ + +test-cov: + py.test --cov-report term-missing --cov=$(project-name) + +test-dbg: + py.test --pdb + +develop: + py.test --color=yes -f + +coverage: + pytest --cov=hansel + coverage report -m + +build: + python -m pip install pep517 + python -m pep517.build -s -b . + +pypi: + twine upload dist/* + +release: clean build pypi diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..e60be39 --- /dev/null +++ b/Pipfile @@ -0,0 +1,31 @@ +[[source]] +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +flask = "*" +gunicorn = "*" +pytz = "*" + +[dev-packages] +flake8 = "*" +flake8-bugbear = "*" +autopep8 = "*" +pre-commit = "*" +pytest = "*" +pytest-cov = "*" +pytest-xdist = "*" +pytest-only = "*" +watchdog = "*" +mypy = "*" +isort = "*" +tox = ">=3.13.2" +coverage = "*" +jsonschema = "==3.0.1" +pyclean-py = "*" +pytest-mock = "*" +rope = "*" +twine = "*" +tox-pipenv-install = "*" +pep517 = "*" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..bda5a72 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,764 @@ +{ + "_meta": { + "hash": { + "sha256": "0942db3783e7cdfabb5b828c8bf88698e1b7d64321a7c1cc0bece504f1cae8dc" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.python.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "click": { + "hashes": [ + "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", + "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" + ], + "version": "==7.0" + }, + "flask": { + "hashes": [ + "sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52", + "sha256:45eb5a6fd193d6cf7e0cf5d8a5b31f83d5faae0293695626f539a823e93b13f6" + ], + "index": "pypi", + "version": "==1.1.1" + }, + "gunicorn": { + "hashes": [ + "sha256:aa8e0b40b4157b36a5df5e599f45c9c76d6af43845ba3b3b0efe2c70473c2471", + "sha256:fa2662097c66f920f53f70621c6c58ca4a3c4d3434205e608e121b5b3b71f4f3" + ], + "index": "pypi", + "version": "==19.9.0" + }, + "itsdangerous": { + "hashes": [ + "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", + "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" + ], + "version": "==1.1.0" + }, + "jinja2": { + "hashes": [ + "sha256:065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013", + "sha256:14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b" + ], + "version": "==2.10.1" + }, + "markupsafe": { + "hashes": [ + "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", + "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", + "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", + "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", + "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", + "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", + "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", + "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", + "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", + "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", + "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", + "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", + "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", + "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", + "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", + "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", + "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", + "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", + "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", + "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", + "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", + "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", + "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", + "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", + "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", + "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", + "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", + "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7" + ], + "version": "==1.1.1" + }, + "pytz": { + "hashes": [ + "sha256:303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda", + "sha256:d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141" + ], + "index": "pypi", + "version": "==2019.1" + }, + "werkzeug": { + "hashes": [ + "sha256:87ae4e5b5366da2347eb3116c0e6c681a0e939a33b2805e2c0cbd282664932c4", + "sha256:a13b74dd3c45f758d4ebdb224be8f1ab8ef58b3c0ffc1783a8c7d9f4f50227e6" + ], + "version": "==0.15.5" + } + }, + "develop": { + "apipkg": { + "hashes": [ + "sha256:37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6", + "sha256:58587dd4dc3daefad0487f6d9ae32b4542b185e1c36db6993290e7c41ca2b47c" + ], + "version": "==1.5" + }, + "argh": { + "hashes": [ + "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3", + "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65" + ], + "version": "==0.26.2" + }, + "aspy.yaml": { + "hashes": [ + "sha256:463372c043f70160a9ec950c3f1e4c3a82db5fca01d334b6bc89c7164d744bdc", + "sha256:e7c742382eff2caed61f87a39d13f99109088e5e93f04d76eb8d4b28aa143f45" + ], + "version": "==1.3.0" + }, + "atomicwrites": { + "hashes": [ + "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4", + "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6" + ], + "version": "==1.3.0" + }, + "attrs": { + "hashes": [ + "sha256:69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79", + "sha256:f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399" + ], + "version": "==19.1.0" + }, + "autopep8": { + "hashes": [ + "sha256:4d8eec30cc81bc5617dbf1218201d770dc35629363547f17577c61683ccfb3ee" + ], + "index": "pypi", + "version": "==1.4.4" + }, + "bleach": { + "hashes": [ + "sha256:213336e49e102af26d9cde77dd2d0397afabc5a6bf2fed985dc35b5d1e285a16", + "sha256:3fdf7f77adcf649c9911387df51254b813185e32b2c6619f690b593a617e19fa" + ], + "version": "==3.1.0" + }, + "certifi": { + "hashes": [ + "sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", + "sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" + ], + "version": "==2019.6.16" + }, + "cfgv": { + "hashes": [ + "sha256:edb387943b665bf9c434f717bf630fa78aecd53d5900d2e05da6ad6048553144", + "sha256:fbd93c9ab0a523bf7daec408f3be2ed99a980e20b2d19b50fc184ca6b820d289" + ], + "version": "==2.0.1" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "click": { + "hashes": [ + "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", + "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" + ], + "version": "==7.0" + }, + "colorama": { + "hashes": [ + "sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", + "sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48" + ], + "version": "==0.4.1" + }, + "colorlog": { + "hashes": [ + "sha256:3cf31b25cbc8f86ec01fef582ef3b840950dea414084ed19ab922c8b493f9b42", + "sha256:450f52ea2a2b6ebb308f034ea9a9b15cea51e65650593dca1da3eb792e4e4981" + ], + "version": "==4.0.2" + }, + "coverage": { + "hashes": [ + "sha256:3684fabf6b87a369017756b551cef29e505cb155ddb892a7a29277b978da88b9", + "sha256:39e088da9b284f1bd17c750ac672103779f7954ce6125fd4382134ac8d152d74", + "sha256:3c205bc11cc4fcc57b761c2da73b9b72a59f8d5ca89979afb0c1c6f9e53c7390", + "sha256:465ce53a8c0f3a7950dfb836438442f833cf6663d407f37d8c52fe7b6e56d7e8", + "sha256:48020e343fc40f72a442c8a1334284620f81295256a6b6ca6d8aa1350c763bbe", + "sha256:5296fc86ab612ec12394565c500b412a43b328b3907c0d14358950d06fd83baf", + "sha256:5f61bed2f7d9b6a9ab935150a6b23d7f84b8055524e7be7715b6513f3328138e", + "sha256:68a43a9f9f83693ce0414d17e019daee7ab3f7113a70c79a3dd4c2f704e4d741", + "sha256:6b8033d47fe22506856fe450470ccb1d8ba1ffb8463494a15cfc96392a288c09", + "sha256:7ad7536066b28863e5835e8cfeaa794b7fe352d99a8cded9f43d1161be8e9fbd", + "sha256:7bacb89ccf4bedb30b277e96e4cc68cd1369ca6841bde7b005191b54d3dd1034", + "sha256:839dc7c36501254e14331bcb98b27002aa415e4af7ea039d9009409b9d2d5420", + "sha256:8f9a95b66969cdea53ec992ecea5406c5bd99c9221f539bca1e8406b200ae98c", + "sha256:932c03d2d565f75961ba1d3cec41ddde00e162c5b46d03f7423edcb807734eab", + "sha256:988529edadc49039d205e0aa6ce049c5ccda4acb2d6c3c5c550c17e8c02c05ba", + "sha256:998d7e73548fe395eeb294495a04d38942edb66d1fa61eb70418871bc621227e", + "sha256:9de60893fb447d1e797f6bf08fdf0dbcda0c1e34c1b06c92bd3a363c0ea8c609", + "sha256:9e80d45d0c7fcee54e22771db7f1b0b126fb4a6c0a2e5afa72f66827207ff2f2", + "sha256:a545a3dfe5082dc8e8c3eb7f8a2cf4f2870902ff1860bd99b6198cfd1f9d1f49", + "sha256:a5d8f29e5ec661143621a8f4de51adfb300d7a476224156a39a392254f70687b", + "sha256:aca06bfba4759bbdb09bf52ebb15ae20268ee1f6747417837926fae990ebc41d", + "sha256:bb23b7a6fd666e551a3094ab896a57809e010059540ad20acbeec03a154224ce", + "sha256:bfd1d0ae7e292105f29d7deaa9d8f2916ed8553ab9d5f39ec65bcf5deadff3f9", + "sha256:c62ca0a38958f541a73cf86acdab020c2091631c137bd359c4f5bddde7b75fd4", + "sha256:c709d8bda72cf4cd348ccec2a4881f2c5848fd72903c185f363d361b2737f773", + "sha256:c968a6aa7e0b56ecbd28531ddf439c2ec103610d3e2bf3b75b813304f8cb7723", + "sha256:df785d8cb80539d0b55fd47183264b7002077859028dfe3070cf6359bf8b2d9c", + "sha256:f406628ca51e0ae90ae76ea8398677a921b36f0bd71aab2099dfed08abd0322f", + "sha256:f46087bbd95ebae244a0eda01a618aff11ec7a069b15a3ef8f6b520db523dcf1", + "sha256:f8019c5279eb32360ca03e9fac40a12667715546eed5c5eb59eb381f2f501260", + "sha256:fc5f4d209733750afd2714e9109816a29500718b32dd9a5db01c0cb3a019b96a" + ], + "index": "pypi", + "version": "==4.5.3" + }, + "docutils": { + "hashes": [ + "sha256:f33ddb723332c6d6b6d99731ee1fc0c35eb4044a2df5cca1c64c8aa78eaf22cb" + ], + "version": "==0.15.1.post1" + }, + "entrypoints": { + "hashes": [ + "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", + "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" + ], + "version": "==0.3" + }, + "execnet": { + "hashes": [ + "sha256:64dcdc248d007060f6f6500e7c79a4f87ee692063e3ec51e9bebf30ef2ea21d7", + "sha256:dfd10a5663f94d1235e6fbee86bc53e2f89b6f15e031e7e6d9e4bb345bcd7e52" + ], + "version": "==1.6.1" + }, + "filelock": { + "hashes": [ + "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", + "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + ], + "version": "==3.0.12" + }, + "flake8": { + "hashes": [ + "sha256:19241c1cbc971b9962473e4438a2ca19749a7dd002dd1a946eaba171b4114548", + "sha256:8e9dfa3cecb2400b3738a42c54c3043e821682b9c840b0448c0503f781130696" + ], + "index": "pypi", + "version": "==3.7.8" + }, + "flake8-bugbear": { + "hashes": [ + "sha256:5070774b668be92c4312e5ca82748ddf4ecaa7a24ff062662681bb745c7896eb", + "sha256:fef9c9826d14ec23187ae1edeb3c6513c4e46bf0e70d86bac38f7d9aabae113d" + ], + "index": "pypi", + "version": "==19.3.0" + }, + "flake8-polyfill": { + "hashes": [ + "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9", + "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda" + ], + "version": "==1.0.2" + }, + "future": { + "hashes": [ + "sha256:67045236dcfd6816dc439556d009594abf643e5eb48992e36beac09c2ca659b8" + ], + "version": "==0.17.1" + }, + "gitdb2": { + "hashes": [ + "sha256:83361131a1836661a155172932a13c08bda2db3674e4caa32368aa6eb02f38c2", + "sha256:e3a0141c5f2a3f635c7209d56c496ebe1ad35da82fe4d3ec4aaa36278d70648a" + ], + "version": "==2.0.5" + }, + "gitpython": { + "hashes": [ + "sha256:c15c55ff890cd3a6a8330059e80885410a328f645551b55a91d858bfb3eb2573", + "sha256:df752b6b6f06f11213e91c4925aea7eaf9e37e88fb71c8a7a1aa0a5c10852120" + ], + "version": "==2.1.13" + }, + "identify": { + "hashes": [ + "sha256:0a11379b46d06529795442742a043dc2fa14cd8c995ae81d1febbc5f1c014c87", + "sha256:43a5d24ffdb07bc7e21faf68b08e9f526a1f41f0056073f480291539ef961dfd" + ], + "version": "==1.4.5" + }, + "idna": { + "hashes": [ + "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", + "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c" + ], + "version": "==2.8" + }, + "importlib-metadata": { + "hashes": [ + "sha256:23d3d873e008a513952355379d93cbcab874c58f4f034ff657c7a87422fa64e8", + "sha256:80d2de76188eabfbfcf27e6a37342c2827801e59c4cc14b0371c56fed43820e3" + ], + "version": "==0.19" + }, + "isort": { + "hashes": [ + "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1", + "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd" + ], + "index": "pypi", + "version": "==4.3.21" + }, + "jsonschema": { + "hashes": [ + "sha256:0c0a81564f181de3212efa2d17de1910f8732fa1b71c42266d983cd74304e20d", + "sha256:a5f6559964a3851f59040d3b961de5e68e70971afb88ba519d27e6a039efff1a" + ], + "index": "pypi", + "version": "==3.0.1" + }, + "mando": { + "hashes": [ + "sha256:4ce09faec7e5192ffc3c57830e26acba0fd6cd11e1ee81af0d4df0657463bd1c", + "sha256:79feb19dc0f097daa64a1243db578e7674909b75f88ac2220f1c065c10a0d960" + ], + "version": "==0.6.4" + }, + "marshmallow": { + "hashes": [ + "sha256:9cedfc5b6f568d57e8a2cf3d293fbd81b05e5ef557854008d03e25660a39ccfd", + "sha256:a4d99922116a76e5abd8f997ec0519086e24814b7e1e1344bebe2a312ba50235" + ], + "index": "pypi", + "version": "==2.19.5" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "more-itertools": { + "hashes": [ + "sha256:409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832", + "sha256:92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4" + ], + "version": "==7.2.0" + }, + "mypy": { + "hashes": [ + "sha256:0107bff4f46a289f0e4081d59b77cef1c48ea43da5a0dbf0005d54748b26df2a", + "sha256:07957f5471b3bb768c61f08690c96d8a09be0912185a27a68700f3ede99184e4", + "sha256:10af62f87b6921eac50271e667cc234162a194e742d8e02fc4ddc121e129a5b0", + "sha256:11fd60d2f69f0cefbe53ce551acf5b1cec1a89e7ce2d47b4e95a84eefb2899ae", + "sha256:15e43d3b1546813669bd1a6ec7e6a11d2888db938e0607f7b5eef6b976671339", + "sha256:352c24ba054a89bb9a35dd064ee95ab9b12903b56c72a8d3863d882e2632dc76", + "sha256:437020a39417e85e22ea8edcb709612903a9924209e10b3ec6d8c9f05b79f498", + "sha256:49925f9da7cee47eebf3420d7c0e00ec662ec6abb2780eb0a16260a7ba25f9c4", + "sha256:6724fcd5777aa6cebfa7e644c526888c9d639bd22edd26b2a8038c674a7c34bd", + "sha256:7a17613f7ea374ab64f39f03257f22b5755335b73251d0d253687a69029701ba", + "sha256:cdc1151ced496ca1496272da7fc356580e95f2682be1d32377c22ddebdf73c91" + ], + "index": "pypi", + "version": "==0.720" + }, + "mypy-extensions": { + "hashes": [ + "sha256:37e0e956f41369209a3d5f34580150bcacfabaa57b33a15c0b25f4b5725e0812", + "sha256:b16cabe759f55e3409a7d231ebd2841378fb0c27a5d1994719e340e4f429ac3e" + ], + "version": "==0.4.1" + }, + "nodeenv": { + "hashes": [ + "sha256:ad8259494cf1c9034539f6cced78a1da4840a4b157e23640bc4a0c0546b0cb7a" + ], + "version": "==1.3.3" + }, + "packaging": { + "hashes": [ + "sha256:0c98a5d0be38ed775798ece1b9727178c4469d9c3b4ada66e8e6b7849f8732af", + "sha256:9e1cbf8c12b1f1ce0bb5344b8d7ecf66a6f8a6e91bcb0c84593ed6d3ab5c4ab3" + ], + "version": "==19.0" + }, + "pathtools": { + "hashes": [ + "sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0" + ], + "version": "==0.1.2" + }, + "pep517": { + "hashes": [ + "sha256:43a7aa3902efd305a605c1028e4045968cd012831233ecab633a31d3ba4860a5", + "sha256:cb5ca55450b64e80744cd5c32f7d5b8928004042dfea50fdc3f96ad7f27cba96" + ], + "index": "pypi", + "version": "==0.5.0" + }, + "pkginfo": { + "hashes": [ + "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", + "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" + ], + "version": "==1.5.0.1" + }, + "plotly": { + "hashes": [ + "sha256:b4ae32398e5b862e6d65c8ae8579044df31fd989174f77e25ad91952f3aa5c78", + "sha256:bf4f7bac9d033818375d9985bb15c47c31bfa89419abdbd6b5f32fcaa5908047" + ], + "version": "==4.0.0" + }, + "pluggy": { + "hashes": [ + "sha256:0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc", + "sha256:b9817417e95936bf75d85d3f8767f7df6cdde751fc40aed3bb3074cbcb77757c" + ], + "version": "==0.12.0" + }, + "pre-commit": { + "hashes": [ + "sha256:92e406d556190503630fd801958379861c94884693a032ba66629d0351fdccd4", + "sha256:cccc39051bc2457b0c0f7152a411f8e05e3ba2fe1a5613e4ee0833c1c1985ce3" + ], + "index": "pypi", + "version": "==1.17.0" + }, + "progress": { + "hashes": [ + "sha256:5e2f9da88ed8236a76fffbee3ceefd259589cf42dfbc2cec2877102189fae58a" + ], + "version": "==1.4" + }, + "py": { + "hashes": [ + "sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa", + "sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53" + ], + "version": "==1.8.0" + }, + "pyclean-py": { + "hashes": [ + "sha256:9fe408486edc5d5f667390c025222339ca3e624f6cc7e7cdf550b6052704afab" + ], + "index": "pypi", + "version": "==0.0.1" + }, + "pycodestyle": { + "hashes": [ + "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", + "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + ], + "version": "==2.5.0" + }, + "pydocstyle": { + "hashes": [ + "sha256:58c421dd605eec0bce65df8b8e5371bb7ae421582cdf0ba8d9435ac5b0ffc36a" + ], + "index": "pypi", + "version": "==4.0.0" + }, + "pyflakes": { + "hashes": [ + "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", + "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + ], + "version": "==2.1.1" + }, + "pygments": { + "hashes": [ + "sha256:71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127", + "sha256:881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297" + ], + "version": "==2.4.2" + }, + "pyparsing": { + "hashes": [ + "sha256:43c5486cefefa536c9aab528881c992328f020eefe4f6d06332449c365218580", + "sha256:d6c5ffe9d0305b9b977f7a642d36b9370954d1da7ada4c62393382cbadad4265" + ], + "version": "==2.4.1.1" + }, + "pyrsistent": { + "hashes": [ + "sha256:34b47fa169d6006b32e99d4b3c4031f155e6e68ebcc107d6454852e8e0ee6533" + ], + "version": "==0.15.4" + }, + "pytest": { + "hashes": [ + "sha256:6ef6d06de77ce2961156013e9dff62f1b2688aa04d0dc244299fe7d67e09370d", + "sha256:a736fed91c12681a7b34617c8fcefe39ea04599ca72c608751c31d89579a3f77" + ], + "index": "pypi", + "version": "==5.0.1" + }, + "pytest-cov": { + "hashes": [ + "sha256:2b097cde81a302e1047331b48cadacf23577e431b61e9c6f49a1170bbe3d3da6", + "sha256:e00ea4fdde970725482f1f35630d12f074e121a23801aabf2ae154ec6bdd343a" + ], + "index": "pypi", + "version": "==2.7.1" + }, + "pytest-forked": { + "hashes": [ + "sha256:5fe33fbd07d7b1302c95310803a5e5726a4ff7f19d5a542b7ce57c76fed8135f", + "sha256:d352aaced2ebd54d42a65825722cb433004b4446ab5d2044851d9cc7a00c9e38" + ], + "version": "==1.0.2" + }, + "pytest-mock": { + "hashes": [ + "sha256:43ce4e9dd5074993e7c021bb1c22cbb5363e612a2b5a76bc6d956775b10758b7", + "sha256:5bf5771b1db93beac965a7347dc81c675ec4090cb841e49d9d34637a25c30568" + ], + "index": "pypi", + "version": "==1.10.4" + }, + "pytest-only": { + "hashes": [ + "sha256:221d9c8094dde089d1c2dac6972ae2b47d95a8e13d5282e0289f8b27f06e3637" + ], + "index": "pypi", + "version": "==1.2.1" + }, + "pytest-xdist": { + "hashes": [ + "sha256:3489d91516d7847db5eaecff7a2e623dba68984835dbe6cedb05ae126c4fb17f", + "sha256:501795cb99e567746f30fe78850533d4cd500c93794128e6ab9988e92a17b1f8" + ], + "index": "pypi", + "version": "==1.29.0" + }, + "pytoml": { + "hashes": [ + "sha256:57a21e6347049f73bfb62011ff34cd72774c031b9828cb628a752225136dfc33", + "sha256:8eecf7c8d0adcff3b375b09fe403407aa9b645c499e5ab8cac670ac4a35f61e7" + ], + "version": "==0.1.21" + }, + "pyyaml": { + "hashes": [ + "sha256:57acc1d8533cbe51f6662a55434f0dbecfa2b9eaf115bede8f6fd00115a0c0d3", + "sha256:588c94b3d16b76cfed8e0be54932e5729cc185caffaa5a451e7ad2f7ed8b4043", + "sha256:68c8dd247f29f9a0d09375c9c6b8fdc64b60810ebf07ba4cdd64ceee3a58c7b7", + "sha256:70d9818f1c9cd5c48bb87804f2efc8692f1023dac7f1a1a5c61d454043c1d265", + "sha256:86a93cccd50f8c125286e637328ff4eef108400dd7089b46a7be3445eecfa391", + "sha256:a0f329125a926876f647c9fa0ef32801587a12328b4a3c741270464e3e4fa778", + "sha256:a3c252ab0fa1bb0d5a3f6449a4826732f3eb6c0270925548cac342bc9b22c225", + "sha256:b4bb4d3f5e232425e25dda21c070ce05168a786ac9eda43768ab7f3ac2770955", + "sha256:cd0618c5ba5bda5f4039b9398bb7fb6a317bb8298218c3de25c47c4740e4b95e", + "sha256:ceacb9e5f8474dcf45b940578591c7f3d960e82f926c707788a570b51ba59190", + "sha256:fe6a88094b64132c4bb3b631412e90032e8cfe9745a58370462240b8cb7553cd" + ], + "version": "==5.1.1" + }, + "radon": { + "hashes": [ + "sha256:0cde1953547a164d24420ed6ccdfa18b61f1457b96a2b99ff0de76b22d504a0f", + "sha256:ee20308ce8bae7a89b067425b63b141a0077632ab318d5288da649c830882b3d" + ], + "version": "==3.0.3" + }, + "readme-renderer": { + "hashes": [ + "sha256:bb16f55b259f27f75f640acf5e00cf897845a8b3e4731b5c1a436e4b8529202f", + "sha256:c8532b79afc0375a85f10433eca157d6b50f7d6990f337fa498c96cd4bfc203d" + ], + "version": "==24.0" + }, + "requests": { + "hashes": [ + "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", + "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" + ], + "version": "==2.22.0" + }, + "requests-toolbelt": { + "hashes": [ + "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", + "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" + ], + "version": "==0.9.1" + }, + "retrying": { + "hashes": [ + "sha256:08c039560a6da2fe4f2c426d0766e284d3b736e355f8dd24b37367b0bb41973b" + ], + "version": "==1.3.3" + }, + "rope": { + "hashes": [ + "sha256:6b728fdc3e98a83446c27a91fc5d56808a004f8beab7a31ab1d7224cecc7d969", + "sha256:c5c5a6a87f7b1a2095fb311135e2a3d1f194f5ecb96900fdd0a9100881f48aaf", + "sha256:f0dcf719b63200d492b85535ebe5ea9b29e0d0b8aebeb87fe03fc1a65924fdaf" + ], + "index": "pypi", + "version": "==0.14.0" + }, + "six": { + "hashes": [ + "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", + "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" + ], + "version": "==1.12.0" + }, + "smmap2": { + "hashes": [ + "sha256:0555a7bf4df71d1ef4218e4807bbf9b201f910174e6e08af2e138d4e517b4dde", + "sha256:29a9ffa0497e7f2be94ca0ed1ca1aa3cd4cf25a1f6b4f5f87f74b46ed91d609a" + ], + "version": "==2.0.5" + }, + "snowballstemmer": { + "hashes": [ + "sha256:9f3b9ffe0809d174f7047e121431acf99c89a7040f0ca84f94ba53a498e6d0c9" + ], + "version": "==1.9.0" + }, + "tabulate": { + "hashes": [ + "sha256:8af07a39377cee1103a5c8b3330a421c2d99b9141e9cc5ddd2e3263fea416943" + ], + "version": "==0.8.3" + }, + "toml": { + "hashes": [ + "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", + "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + ], + "version": "==0.10.0" + }, + "tox": { + "hashes": [ + "sha256:dab0b0160dd187b654fc33d690ee1d7bf328bd5b8dc6ef3bb3cc468969c659ba", + "sha256:ee35ffce74933a6c6ac10c9a0182e41763140a5a5070e21b114feca56eaccdcd" + ], + "index": "pypi", + "version": "==3.13.2" + }, + "tox-pipenv-install": { + "hashes": [ + "sha256:6bea3c88622d2cfc94ef2a5a36b656d0c9ea82ad7a82213c0097f571b77d0863", + "sha256:b406939613526895e633acdb590fcd39c0cd1def722cec44f78d5c8d73f13197" + ], + "index": "pypi", + "version": "==0.1.1" + }, + "tqdm": { + "hashes": [ + "sha256:14a285392c32b6f8222ecfbcd217838f88e11630affe9006cd0e94c7eff3cb61", + "sha256:25d4c0ea02a305a688e7e9c2cdc8f862f989ef2a4701ab28ee963295f5b109ab" + ], + "version": "==4.32.2" + }, + "twine": { + "hashes": [ + "sha256:0fb0bfa3df4f62076cab5def36b1a71a2e4acb4d1fa5c97475b048117b1a6446", + "sha256:d6c29c933ecfc74e9b1d9fa13aa1f87c5d5770e119f5a4ce032092f0ff5b14dc" + ], + "index": "pypi", + "version": "==1.13.0" + }, + "typed-ast": { + "hashes": [ + "sha256:18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e", + "sha256:262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e", + "sha256:2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0", + "sha256:354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c", + "sha256:4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631", + "sha256:630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4", + "sha256:66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34", + "sha256:71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b", + "sha256:95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a", + "sha256:bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233", + "sha256:cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1", + "sha256:d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36", + "sha256:d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d", + "sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a", + "sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12" + ], + "version": "==1.4.0" + }, + "typing-extensions": { + "hashes": [ + "sha256:2ed632b30bb54fc3941c382decfd0ee4148f5c591651c9272473fea2c6397d95", + "sha256:b1edbbf0652660e32ae780ac9433f4231e7339c7f9a8057d0f042fcbcea49b87", + "sha256:d8179012ec2c620d3791ca6fe2bf7979d979acdbef1fca0bc56b37411db682ed" + ], + "version": "==3.7.4" + }, + "urllib3": { + "hashes": [ + "sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", + "sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" + ], + "version": "==1.25.3" + }, + "virtualenv": { + "hashes": [ + "sha256:6cb2e4c18d22dbbe283d0a0c31bb7d90771a606b2cb3415323eea008eaee6a9d", + "sha256:909fe0d3f7c9151b2df0a2cb53e55bdb7b0d61469353ff7a49fd47b0f0ab9285" + ], + "version": "==16.7.2" + }, + "watchdog": { + "hashes": [ + "sha256:965f658d0732de3188211932aeb0bb457587f04f63ab4c1e33eab878e9de961d" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "wcwidth": { + "hashes": [ + "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e", + "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c" + ], + "version": "==0.1.7" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "wily": { + "hashes": [ + "sha256:4671cb486188ae84076a9e873815caf05f523479ccf1b513320fac6c99731377", + "sha256:fb027fbfc234660bc1e822b7d1b1c10329ba6098cea61fbc4f59505d0a437acb" + ], + "index": "pypi", + "version": "==1.12.3" + }, + "zipp": { + "hashes": [ + "sha256:4970c3758f4e89a7857a973b1e2a5d75bcdc47794442f2e2dd4fe8e0466e809a", + "sha256:8a5712cfd3bb4248015eb3b0b3c54a5f6ee3f2425963ef2a0125b8bc40aafaec" + ], + "version": "==0.5.2" + } + } +} diff --git a/README.md b/README.md index 16b94e8..ca3780e 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,19 @@ - Working in python2 - Testing in python3 (fails gevent-socketio) -Instructions: ------- -``` -pip install -r requirements/dev_requirements.txt -``` -``` +Installation: +------------- + +```bash +make install python app.py ``` -Lazy mode: ------- +Development: +------------- -``` -python auto_app.py +```bash +make install-dev ``` THEMES: @@ -52,14 +51,12 @@ SOCIAL_IFRAME_SRC = "http://your_url.com" ``` - SETUP ------ [Follow this tutorial](https://github.com/PythonSanSebastian/flask-nexttalk/blob/ep2016/SETUP.md) TODO ------ -- Why is ep2016 main branch? should not be master? change it idiot! - Automatically sync static/data/talks.json with internet ACTIVE CONTRIBUTORS diff --git a/app.py b/app.py deleted file mode 100644 index 980ab87..0000000 --- a/app.py +++ /dev/null @@ -1,165 +0,0 @@ -__author__ = 'oier' - -import pytz -from datetime import datetime -from threading import Thread, Event -from time import sleep - -from flask import Flask, render_template -from flask import send_from_directory, request -#from flask.ext.socketio import SocketIO -from momentjs import momentjs - -from talks import Talks -from sponsors import Sponsors -import config as cfg - -import os - -# Initialize the Flask application -print(cfg.TEMPLATES_PATH) -app = Flask(__name__, static_path="/" + cfg.STATIC_PATH, static_url_path="/" + cfg.STATIC_PATH, template_folder=cfg.TEMPLATES_PATH) -app.config['DEBUG'] = True - -#socket = SocketIO(app) -# Set jinja template global -app.jinja_env.globals['momentjs'] = momentjs - -thread = Thread() -thread_stop_event = Event() - -#ADD ONE ROUTE PER FOLDER IN STATIC FOLDER -@app.route('/'+ cfg.STATIC_PATH +'/media/fonts/') -@app.route('/'+ cfg.STATIC_PATH +'/') -@app.route('/'+ cfg.STATIC_PATH +'/media/sponsors/') -@app.route('/'+ cfg.STATIC_PATH +'/media/') -def serve_static(filename): - url = os.path.dirname(str(request.url_rule))[1:] - #root_dir = os.path.dirname(os.getcwd()) - return send_from_directory(url, filename) - -@app.route('/') -def index(): - pytz.timezone(cfg.LOCAL_TZ) - naive = datetime.now().replace(minute=50) - - talks = Talks() - #current, next_t = talks.filter_talks_by_time(datetime.strptime('2015-07-22 15:45:00', '%Y-%m-%d %H:%M:%S')) - #print current - #print next_t - - #rooms = talks.filter_talks_by_room(datetime.strptime('2015-07-22 15:45:00', '%Y-%m-%d %H:%M:%S')) - - rooms = talks.filter_talks_by_room(datetime.now()) - - empty = all([len(rooms[key]['current']) == 0 for key in rooms.keys()]) - - cur = talks.get_current(datetime.strptime('2015-07-22 15:45:00', '%Y-%m-%d %H:%M:%S')) - - sponsors = Sponsors() - sponsors_list = sponsors.sponsors_list() - print(sponsors_list) - # import pprint - # #pprint.pprint(rooms) - # pprint.pprint(cur) - # Render template with a test timestamp - # print(datetime.now().replace(minute=0)) - return render_template('multi_index.html', - timestamp=naive, - empty=empty, - talks_list=rooms, - sponsors=sponsors_list, - social_iframe_src=cfg.SOCIAL_IFRAME_SRC) - -@app.route('/feeds') -def feeds(): - temp = ' ' - temp = ''' - - ''' - - #return render_template('feeds.html', - # event='europython2016', - # feed_url='http://www.smartfeedz.com/', - # static_url="http://www.smartfeedz.com/static/", - # feed_source='http://www.smartfeedz.com/livepage/live-lite/europython2016/') - return temp - -@app.route('/menu/') -def menu(): - talks = Talks() - #rooms = talks.filter_talks_by_room(datetime.strptime('2015-07-22 15:45:00', '%Y-%m-%d %H:%M:%S')) - rooms = talks.filter_talks_by_room(datetime.now()) - - return render_template('menu.html', - options = rooms.keys() ) - - -@app.route('/room/') -def room_info(track): - if "Hall" in track: - return render_hall(track) - return render_room(track) - -@app.route('/hall') -def render_hall(): - pytz.timezone("Europe/Madrid") - naive = datetime.now().replace(minute=50) - - talks = Talks() - - #rooms = talks.filter_talks_by_room(datetime.strptime('2015-07-22 15:45:00', '%Y-%m-%d %H:%M:%S')) - - rooms = talks.filter_talks_by_room(datetime.now().strftime('%Y-%m-%d %H:%M:%S')) - - print(rooms.keys()) - actual = rooms.pop("Exhibition Hall / Helpdesk ") - - other = random_talks(rooms) - - print(datetime.now().replace(minute=0)) - return render_template('hall.html', - now_happening=actual["current"], - will_happen=actual["next"], - talks_list=other) - -def random_talks(talks): - ts = [] - for k in talks.keys(): - actual = talks.pop(k) - ts.append(actual["current"]) - ts.append(actual["next"]) - import random - return random.sample(ts, 10) - - -def render_room(room): - pytz.timezone("Europe/Madrid") - naive = datetime.now().replace(minute=50) - - talks = Talks() - - #rooms = talks.filter_talks_by_room(datetime.strptime('2015-07-22 15:45:00', '%Y-%m-%d %H:%M:%S')) - rooms = talks.filter_talks_by_room(datetime.now()) - - actual = rooms.pop(room) - other = rooms - - #next_talks = sorted(actual["next"], key=getattr('start')) - print(datetime.now().replace(minute=0)) - return render_template('index.html', - room_name = room, - timestamp=naive, - next_talk=actual["current"], - talks= actual["next"], - talks_list=other) - - -# Run -if __name__ == '__main__': - app.run( - # debug=True, - host = "0.0.0.0", - port = 5000 - ) - # socket.run(app) diff --git a/auto_app.py b/auto_app.py deleted file mode 100644 index 2313ad0..0000000 --- a/auto_app.py +++ /dev/null @@ -1,26 +0,0 @@ -import subprocess - - -commands = [ - "fuser -k 5000/tcp", #kill process in port 5000 - "pip install virtualenv", - "virtualenv env -p /usr/bin/python2.7", - "env/bin/pip install -r requirements/dev_requirements.txt", - "env/bin/python app.py" - -] - -#run_app = "env/bin/python app.py" - -for i in commands: - print(i) - process = subprocess.Popen(i.split(), stdout=subprocess.PIPE) - process.wait() - -#process = subprocess.Popen(run_app.split(), stdout=subprocess.PIPE) - -#import git - -#g = git.cmd.Git(".") -#while T: -# print(git.pull()) diff --git a/auto_rpi.py b/auto_rpi.py deleted file mode 100644 index e044169..0000000 --- a/auto_rpi.py +++ /dev/null @@ -1,31 +0,0 @@ -import subprocess - - -commands = [ - "fuser -k 5000/tcp", #kill process in port 5000 - "pip install virtualenv", - "virtualenv env -p /usr/bin/python2.7", - "env/bin/pip install -r requirements/dev_requirements.txt", - "env/bin/python app.py", - "@xset s noblank", - "@xset s off", - "@xset -dpms", - "iceweasel http://0.0.0.0:5000 &", - "sleep 60", - "xdotool search --onlyvisible --name iceweasel key F11" -] - -#run_app = "env/bin/python app.py" - -for i in commands: - print(i) - process = subprocess.Popen(i.split(), stdout=subprocess.PIPE) - process.wait() - -#process = subprocess.Popen(run_app.split(), stdout=subprocess.PIPE) - -#import git - -#g = git.cmd.Git(".") -#while T: -# print(git.pull()) diff --git a/config.py b/config.py deleted file mode 100644 index 35f7187..0000000 --- a/config.py +++ /dev/null @@ -1,31 +0,0 @@ -__author__ = 'oier' - -import os - -DATA_PATH = "data" -DB_NAME = "p3_june_29.db" -DB_PATH = os.path.join(DATA_PATH, DB_NAME) -THEME = "ep2018" - -TALKS_JSON = "/static/data/accepted_talks.json" - -STATIC = "static" -TEMPLATES = "templates" - -LOCAL_TZ = "Europe/Madrid" - -#IF THE THEME ALLOWES: - -SPONSORS_IMAGES = 'media/sponsors' #in static folder!!!! - -SOCIAL_IFRAME_SRC = "http://ep.patrick.wtf/" - - -#Everything autogenerated from here. You should touch nothing. -#REMEMBER TO SET THE ROUTES IN APP.PY!!!!!!! -STATIC_PATH = os.path.join(THEME, STATIC) -TEMPLATES_PATH = os.path.join(THEME, TEMPLATES) -TALKS_PATH = "%s%s%s%s" % (os.path.dirname(os.path.abspath(__file__)),"/",THEME, TALKS_JSON) - -if SPONSORS_IMAGES: - SPONSORS_IMAGES_PATH = os.path.join(THEME, STATIC, SPONSORS_IMAGES) diff --git a/ep2016/static/media/01-Standard logo.pdf b/ep2016/static/media/01-Standard logo.pdf deleted file mode 100755 index 6f9f8d0..0000000 Binary files a/ep2016/static/media/01-Standard logo.pdf and /dev/null differ diff --git a/ep2016/static/media/06-Secondary Logo C.pdf b/ep2016/static/media/06-Secondary Logo C.pdf deleted file mode 100755 index 2c48ef9..0000000 Binary files a/ep2016/static/media/06-Secondary Logo C.pdf and /dev/null differ diff --git a/ep2016/static/media/ep_logo.png b/ep2016/static/media/ep_logo.png deleted file mode 100755 index e5b467c..0000000 Binary files a/ep2016/static/media/ep_logo.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/BW/bbva.png b/ep2016/static/media/sponsors/BW/bbva.png deleted file mode 100644 index d3d1e7d..0000000 Binary files a/ep2016/static/media/sponsors/BW/bbva.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/BW/bilbao.bmp b/ep2016/static/media/sponsors/BW/bilbao.bmp deleted file mode 100644 index dc287fc..0000000 Binary files a/ep2016/static/media/sponsors/BW/bilbao.bmp and /dev/null differ diff --git a/ep2016/static/media/sponsors/BW/hired.png b/ep2016/static/media/sponsors/BW/hired.png deleted file mode 100644 index 8166687..0000000 Binary files a/ep2016/static/media/sponsors/BW/hired.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/BW/intel.png b/ep2016/static/media/sponsors/BW/intel.png deleted file mode 100644 index 1224978..0000000 Binary files a/ep2016/static/media/sponsors/BW/intel.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/BW/microsoft.png b/ep2016/static/media/sponsors/BW/microsoft.png deleted file mode 100644 index f0f91d3..0000000 Binary files a/ep2016/static/media/sponsors/BW/microsoft.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/BW/psf.png b/ep2016/static/media/sponsors/BW/psf.png deleted file mode 100644 index bd78741..0000000 Binary files a/ep2016/static/media/sponsors/BW/psf.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/BW/upv.png b/ep2016/static/media/sponsors/BW/upv.png deleted file mode 100644 index 0394948..0000000 Binary files a/ep2016/static/media/sponsors/BW/upv.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/BW/winton.png b/ep2016/static/media/sponsors/BW/winton.png deleted file mode 100644 index 96481e4..0000000 Binary files a/ep2016/static/media/sponsors/BW/winton.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/bbva.png b/ep2016/static/media/sponsors/bbva.png deleted file mode 100644 index 3443b91..0000000 Binary files a/ep2016/static/media/sponsors/bbva.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/bilbao.png b/ep2016/static/media/sponsors/bilbao.png deleted file mode 100644 index fa35851..0000000 Binary files a/ep2016/static/media/sponsors/bilbao.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/hired.png b/ep2016/static/media/sponsors/hired.png deleted file mode 100644 index fb272f9..0000000 Binary files a/ep2016/static/media/sponsors/hired.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/intel.png b/ep2016/static/media/sponsors/intel.png deleted file mode 100755 index 991ca46..0000000 Binary files a/ep2016/static/media/sponsors/intel.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/microsoft.png b/ep2016/static/media/sponsors/microsoft.png deleted file mode 100644 index 1f3d077..0000000 Binary files a/ep2016/static/media/sponsors/microsoft.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/originals/PSF-Logo-Narrow-Shapes.png b/ep2016/static/media/sponsors/originals/PSF-Logo-Narrow-Shapes.png deleted file mode 100755 index 7e295bb..0000000 Binary files a/ep2016/static/media/sponsors/originals/PSF-Logo-Narrow-Shapes.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/originals/bbva.png b/ep2016/static/media/sponsors/originals/bbva.png deleted file mode 100644 index 3443b91..0000000 Binary files a/ep2016/static/media/sponsors/originals/bbva.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/originals/bilbao.png b/ep2016/static/media/sponsors/originals/bilbao.png deleted file mode 100644 index fa35851..0000000 Binary files a/ep2016/static/media/sponsors/originals/bilbao.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/originals/ehu.png b/ep2016/static/media/sponsors/originals/ehu.png deleted file mode 100644 index 55e880d..0000000 Binary files a/ep2016/static/media/sponsors/originals/ehu.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/originals/hired.png b/ep2016/static/media/sponsors/originals/hired.png deleted file mode 100644 index fb272f9..0000000 Binary files a/ep2016/static/media/sponsors/originals/hired.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/originals/intel.png b/ep2016/static/media/sponsors/originals/intel.png deleted file mode 100755 index 991ca46..0000000 Binary files a/ep2016/static/media/sponsors/originals/intel.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/originals/microsoft.png b/ep2016/static/media/sponsors/originals/microsoft.png deleted file mode 100644 index 1f3d077..0000000 Binary files a/ep2016/static/media/sponsors/originals/microsoft.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/originals/winton.png b/ep2016/static/media/sponsors/originals/winton.png deleted file mode 100644 index f52156f..0000000 Binary files a/ep2016/static/media/sponsors/originals/winton.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/upv.png b/ep2016/static/media/sponsors/upv.png deleted file mode 100644 index 55e880d..0000000 Binary files a/ep2016/static/media/sponsors/upv.png and /dev/null differ diff --git a/ep2016/static/media/sponsors/winton.png b/ep2016/static/media/sponsors/winton.png deleted file mode 100644 index f52156f..0000000 Binary files a/ep2016/static/media/sponsors/winton.png and /dev/null differ diff --git a/ep2016/static/talks.css b/ep2016/static/talks.css deleted file mode 100644 index ee3670b..0000000 --- a/ep2016/static/talks.css +++ /dev/null @@ -1,353 +0,0 @@ -@font-face { - font-family: 'Lato'; - src: url('media/fonts/lato-regular-webfont.eot'); - src: url('media/fonts/lato-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('media/fonts/lato-regular-webfont.woff2') format('woff2'), - url('media/fonts/lato-regular-webfont.woff') format('woff'), - url('media/fonts/lato-regular-webfont.ttf') format('truetype'), - url('media/fonts/lato-regular-webfont.svg#latoregular') format('svg'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'Lato'; - src: url('media/fonts/lato-bold-webfont.eot'); - src: url('media/fonts/lato-bold-webfont.eot?#iefix') format('embedded-opentype'), - url('media/fonts/lato-bold-webfont.woff2') format('woff2'), - url('media/fonts/lato-bold-webfont.woff') format('woff'), - url('media/fonts/lato-bold-webfont.ttf') format('truetype'), - url('media/fonts/lato-bold-webfont.svg#latobold') format('svg'); - font-weight: bold; - font-style: normal; -} -@font-face { - font-family: 'Lato'; - src: url('media/fonts/lato-black-webfont.eot'); - src: url('media/fonts/lato-black-webfont.eot?#iefix') format('embedded-opentype'), - url('media/fonts/lato-black-webfont.woff2') format('woff2'), - url('media/fonts/lato-black-webfont.woff') format('woff'), - url('media/fonts/lato-black-webfont.ttf') format('truetype'), - url('media/fonts/lato-black-webfont.svg#latoblack') format('svg'); - font-weight: 900; - font-style: normal; -} - -* { - margin: 0; - padding: 0; -} - -html, body { - height: 100%; -} - -html { - font-size: 10px; - box-sizing: border-box; -} - -*, *:before, *:after { - box-sizing: inherit; -} - -body { - background: #8bd6f5; - color: white; - - font-family: 'Lato'; - - font-size: 1.6rem; -} - -header { - height: 15vh; - - position: relative; -} - -header h1 { - width: 70%; - background: white; - - position: absolute; - top: 0; - bottom: 0; - - white-space: nowrap; - text-indent: 100%; - overflow: hidden; - - background: white url(media/ep_logo.png) no-repeat 5% center; - background-size: auto 60%; -} - -header #time-container { - position: absolute; - right: 0; - top: 0; - bottom: 0; - - width: 30%; - - font-size: 4rem; - - height: 100%; - text-align: center; -} - -header #time-container .wrapper { - display: table; - width: 100%; - height: 100%; -} - -header #time-container time { - display: table-cell; - vertical-align: middle; -} - -header time:before { - content: ''; - display: inline-block; - - height: 5vh; - width: 5vh; - - background: url(media/hour.png) no-repeat center; - background-size: contain; - vertical-align: baseline; - - position: relative; - top: 1vh; - - margin-right: .5vh; -} - -section { - height: 75vh; - - padding: 10vh 3%; - - position: relative; -} - -section h2 { - font-size: 1.5rem; - font-weight: bold; - color: #3f9183; - - text-transform: uppercase; - letter-spacing: 0.3em; - - margin-bottom: 2vh; -} - -section .wrap { - width: 80%; -} - -section footer { - width: 100%; - - position: absolute; - bottom: 3vh; - height: 10vh; - - display: table; -} - -section footer > div { - display: table-cell; - vertical-align: middle; - text-align: center; -} - -section footer > div > div { - display: inline-block; - text-align: left; - vertical-align: top; -} - -section dl { - display: inline-block; - - vertical-align: top; -} - -section dt { - display: block; - letter-spacing: .3em; - text-transform: uppercase; - color: #3f9183; - font-weight: bold; - - margin-bottom: 0.5rem; -} - -section dd { - display: block; - font-weight: bold; - opacity: 0.5; - - font-size: 2rem; -} - -section .room:before { - content: ''; - display: inline-block; - - height: 5rem; - width: 6rem; - - background: url(media/room.png) no-repeat center; - background-size: contain; -} - -section .speaker:before { - content: ''; - display: inline-block; - - height: 5rem; - width: 6rem; - - background: url(media/speaker.png) no-repeat center; - background-size: contain; -} - -section h1 { - font-weight: 900; - font-size: 6rem; - - display: inline; - - background: rgba(0, 0, 0, 0); - background: -moz-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, #dd3524 10.1%, #dd3524 89.9%, rgba(0, 0, 0, 0) 90%, rgba(231,56,39,0) 100%); - background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(10%, rgba(0, 0, 0, 0)), color-stop(10.1%, #dd3524), color-stop(71%, rgba(240,47,23,1)), color-stop(89%, rgba(234,53,33,1)), color-stop(90%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(231,56,39,0))); - background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, #dd3524 10.1%, #dd3524 89.9%, rgba(0, 0, 0, 0) 90%, rgba(231,56,39,0) 100%); - background: -o-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, #dd3524 10.1%, #dd3524 89.9%, rgba(0, 0, 0, 0) 90%, rgba(231,56,39,0) 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, #dd3524 10.1%, #dd3524 89.9%, rgba(0, 0, 0, 0) 90%, rgba(231,56,39,0) 100%); - background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, #dd3524 10.1%, #dd3524 89.9%, rgba(0, 0, 0, 0) 90%, rgba(231,56,39,0) 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f85032', endColorstr='#e73827', GradientType=0 ); - - color: white; - padding: 0.5rem; - padding-left: 0; - padding-right: 0; -} - -body > footer { - height: 10vh; - - position: relative; - - background: #2e9bdd; -} - -footer .next-talk { - height: 100%; - width: 60%; - overflow: hidden; -} - -footer .next-talk p, footer .next-talk h2 { - padding: 0 0 0 4vh; -} - -#next-talk-container { - display: table; - height: 100%; - width: 100%; -} - -#next-talk-container > div { - display: table-cell; - vertical-align: middle; - width: 100%; -} - -.next-talks-slides { - width: 100%; -} - -footer .next-talk h2 { - letter-spacing: .3em; - text-transform: uppercase; - opacity: 0.5; - font-weight: bold; - font-size: 1.4rem; - - margin-bottom: 0.5rem; -} - -footer .next-talk h1 { - font-weight: bold; - font-size: 1.4rem; -} - -footer #sponsors-container { - width: 40%; - height: 100%; - - position: absolute; - top: 0; - bottom: 0; - right: 0; - - background: #ffffff; - -} - -footer #sponsors-container .wrapper { - display: table; - width: 100%; - height: 100%; -} - -footer ul { - text-align: center; - - list-style: none; - - overflow: scroll; - height: 10vh; -} - -footer ul li { - display: inline-block; - width: 100%; - height: 100%; -} - -footer ul img { - height: 80%; - width: auto; - margin: 0.6rem 1rem; - vertical-align: middle; -} - -footer ul .datarobot img { - max-height: 1.7vh; -} - -footer ul .cloudmas img { - max-height: 3.4vh; -} - -footer ul .google img { - position: relative; - top: .3vh; -} - - -.slides button { - display: none!important; -} - -.container{ - width: 50%; - float:left; -} -.clear{ - clear: both; -} diff --git a/ep2016/templates/feeds.html b/ep2016/templates/feeds.html deleted file mode 100644 index a1121d1..0000000 --- a/ep2016/templates/feeds.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - SmartFeedz | {{event}} - - - - - - -
-
-
- - - - - -
-
- -
-
-
- -
-
-
-
- -
-
- -
-
-
-
-
- - - - - - - - - - - - - -
-
-
- - - - - - - diff --git a/ep2016/templates/hall.html b/ep2016/templates/hall.html deleted file mode 100644 index 67f03a9..0000000 --- a/ep2016/templates/hall.html +++ /dev/null @@ -1,207 +0,0 @@ - Talk Schedule - - - - - - - - - - - - - - - - -
-
- - -

HALL INFORMATION

-
- -
- -
- -

NOW IN HAPPENING IN THE HALL:

- {% if now_happening[0] %} - {{ now_happening[0].talk_type }} : {{momentjs(timestamp).from_now()}} - {{ now_happening[0].title }} by - {{ now_happening[0].speakers }} - {% else %} - There is no actual talk, see when its going to be the next one... - {% endif %} -
- -
-

WILL HAPPEN IN THE HALL:

- - {% if will_happen %} - {% for t in will_happen %} -

{{ t.talk_type }} : - {{ t.title }} by - {{ t.speakers }}

- - {% endfor %} - {% else %} - No next talks in the next hours... come tomorrow. - {% endif %} - -
- -
- {% if talks_list %} -

WHATS HAPPENING IN EUROPYTHON 2015

- - - - - - - - - - - - - {% for track in talks_list %} - {% for t in talks_list[track]["current"] %} - - - - - - - - - {% endfor %} - {% endfor %} - -
TrackTalk titleSpeakersTalk typeTiming
{{ t.track_title }}{{ t.title }}{{ t.speakers }}{{ t.talk_type }} "testing"
- {% endif %} - - -
- - - - - - - \ No newline at end of file diff --git a/ep2016/templates/index.html b/ep2016/templates/index.html deleted file mode 100644 index a45687f..0000000 --- a/ep2016/templates/index.html +++ /dev/null @@ -1,257 +0,0 @@ - Talk Schedule - - - - - - - - - - - - - - - - - - - - - - - -
-

Logo

- - {# {{momentjs(timestamp).format('YYYY-MM-DD')}} #} -
- - -
- -

Current Talk:

- {% if next_talk[0] %} -

{{ next_talk[0].start }}

- {% endif %} -
- {% if next_talk[0] %} -

{{ next_talk[0].title }}

- {% else %} -

There is no actual talk, see when its going to be the next one...

- {% endif %} -
- -
-
-
-
Room
-
{{ room_name }}
-
-
-
-
-
Speaker
- {% if next_talk[0] %} -
{{ next_talk[0].speakers }}
- {% else %} -
No Speaker
- {% endif %} -
-
-
- -
- -
-
-
-

Upcoming talk

- {% if talks %} - {% for t in talks %} -

{{ t.end }}

-

: {{ t.title }} by {{ t.speakers }} ( {{ t.talk_type }} )

-
- {% endfor %} - {% else %} -

No next talks in the next hours... come tomorrow.

- {% endif %} -
-
- -
    -
  • -
  • -
  • -
  • -
-
- - - {#
-
- - -

INFORMATION

-
- - - - {% if talks_list %} -

WHATS HAPPENING IN EUROPYTHON 2015

- - - - - - - - - - - - - {% for track in talks_list %} - {% for t in talks_list[track]["current"] %} - - - - - - - - - {% endfor %} - {% endfor %} - -
TrackTalk titleSpeakersTalk typeFinish
{{ t.track_title }}{{ t.title }}{{ t.speakers }}{{ t.talk_type }}{{ t.end }}
- {% endif %} - - -
-#} - - - - - - - - diff --git a/ep2016/templates/menu.html b/ep2016/templates/menu.html deleted file mode 100644 index a46b480..0000000 --- a/ep2016/templates/menu.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - -

Available rooms:

-{% for i in options %} - -{% if "Hall" in i %} - {{ i }}
-{% else %} - {{ i }}
-{% endif %} - -{% endfor %} - - \ No newline at end of file diff --git a/ep2016/templates/multi_index.html b/ep2016/templates/multi_index.html deleted file mode 100644 index 79c758a..0000000 --- a/ep2016/templates/multi_index.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - Talk Schedule - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-
- -
-
- {# {{momentjs(timestamp).format('YYYY-MM-DD')}} #} -
-
-
- {% if not empty %} - {% for track in talks_list %} - {% for t in talks_list[track]["current"] %} -
-
-
-

{{t.start_hour}}

: {{ t.title }} ({{ t.talk_type }})

-
- -
-
-
-
-
Room
-
{{ t.track_title }}
-
-
- -
-
-
Speaker
-
{{ t.speakers }}
-
-
-
-
-
-
- {% endfor %} - {% endfor %} - {% else %} -
-
-
-

No talks at this time

-
-
-
- {% endif %} -
-
- -
- -
-
-
-
-
-
- {% if not empty %} -

Upcoming talk

- -
- {% for track in talks_list %} - {% for t in talks_list[track]["current"] %} -

{{ t.title }}

- {% endfor %} - {% endfor %} -
- {% endif %} -
-
-
- -
-
-
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
-
-
-
- - - - diff --git a/ep2017/__init__.py b/ep2017/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/ep2017/static/data/accepted_talks.json b/ep2017/static/data/accepted_talks.json deleted file mode 100644 index ae18508..0000000 --- a/ep2017/static/data/accepted_talks.json +++ /dev/null @@ -1,8195 +0,0 @@ -{ - "Closing session": { - "699": { - "abstract_short": "Closing Session", - "sub_title": "", - "timerange": "2016-07-22 17:30:00, 2016-07-22 18:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 699, - "speakers": "To be announced", - "title": "Closing Session", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Communication", - "Conferences and Meet-Ups", - "Euro Python and EPS" - ], - "abstract_long": [ - "Closing Session", - "", - "", - "" - ], - "abstract_extra": "Closing Session", - "tag_categories": [ - "Community", - "Community", - "Community" - ], - "emails": "alex@hendorf.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/closing-session", - "admin_type": "Closing session", - "companies": "" - } - }, - "Keynote": { - "711": { - "abstract_short": "Have you ever wondered how you could be your own boss? or how you could make money from your side project? or build the next Facebook or Uber.\r\n\r\nTo be a coder in today's world of work is to have amazing opportunities to design the business life you want.\r\n\r\nI've enjoyed the last 20 years without a 'real job', as company founder, freelancer and side-project-hacker.\r\n\r\nNow I am bootstrapping my current company to profitability. Listen to my stories and learn from my mistakes and successes.", - "sub_title": "How I used my technical skills to design the business life I want; and how you can too", - "timerange": "2016-07-18 09:15:00, 2016-07-18 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@rwillmer", - "id": 711, - "speakers": "Rachel Willmer", - "title": "20 years without a 'proper job'", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Track", - "Business" - ], - "abstract_long": [ - "Have you ever wondered how you could be your own boss? If so, then this talk is for you.\r\n\r\nMaybe you're working on a sideproject and wonder how you could make some money from it? Or maybe you have the idea for the next Facebook or Uber?\r\n\r\nTo be a coder in today's world of work is to have amazing opportunities to design the business life you want. You can work remotely; you can write books, or teach, or consult, with anyone anywhere. \r\n\r\nYou can have a crazy idea on Friday and have it running by Monday. Design your architecture to use cloud computing, so your tiny team can scale up your huge ideas. \r\n\r\nOr keep it small, and just earn some extra money with a Wordpress plugin, or a training course.\r\n\r\nIt has been 21 years since I last had a 'real job' and a regular income. \r\n\r\nI survived creating and running a company through the madness of the dotcom years. I made money from sideprojects, that I had started just for fun and for learning. I have freelanced without needing to use an agency to find the work.\r\n\r\nAnd now I'm bootstrapping my current business to profitability. Listen to my stories and learn from my mistakes and successes.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "", - "" - ], - "emails": "rachel@willmer.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-20-years-without-a-proper-job", - "admin_type": "Keynote", - "companies": "Luzme" - }, - "714": { - "abstract_short": "The BBC micro:bit is a small programmable device for children. A million of them have been handed out to the UK's 11 and 12 years olds. The Python Software Foundation was a partner in this moon-shot scheme and, thanks to the efforts of Damien George, MicroPython runs on the device.\r\n\r\nMy talk will tell the story of the project, describe Python's role in it and explain how the wider Python community can become involved. It may involve demonstrations, live coding and audience participation.", - "sub_title": "A million UK kids have been given a device that runs MicroPython. What could possibly go wrong?", - "timerange": "2016-07-18 13:45:00, 2016-07-18 14:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@ntoll", - "id": 714, - "speakers": "Nicholas Tollervey", - "title": "A Million Children (and MicroPython)", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "MicroPython", - "Fun and Humor", - "Internet of Things (IoT)", - "python" - ], - "abstract_long": [ - "The BBC micro:bit is a small programmable device for children. A million of them have been handed out to the UK's 11 and 12 years olds. The Python Software Foundation was a partner in this moon-shot scheme and, thanks to the efforts of Damien George, MicroPython (a full reimplementation of Python 3) runs on the device.\r\n\r\nMy talk will tell the story of the project, describe Python's role in it and explain how the wider Python community can become involved. It may involve demonstrations, live coding and audience participation.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Educational", - "Python", - "Everything Else", - "Hardware", - "" - ], - "emails": "ntollervey@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-a-million-children-and-micropython", - "admin_type": "Keynote", - "companies": "" - }, - "702": { - "abstract_short": "While Python the language is wonderful, the Python community and the personal, social, and professional benefits that flow from involvement in a community like ours are often more compelling. \r\n\r\nLearn about the goals of the Python Software Foundation and how everyone can take part to help build even better Python communities locally, regionally, and globally. I will also discuss some of our strengths as a community, and also look at some of the challenges we face going forward.\r\n", - "sub_title": "From Community Import Python", - "timerange": "2016-07-21 09:15:00, 2016-07-21 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@NaomiCeder", - "id": 702, - "speakers": "Naomi Ceder", - "title": "Come for the Language, Stay for the Community", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "python", - "Community" - ], - "abstract_long": [ - "Python is a powerful and flexible tool that many of us love and use in many ways. And yet, as wonderful as the language is, many would say that the community is even more attractive. This talk will focus on involvement in the Python community and what that means - in particular the many personal, social, and professional benefits that flow from involvement in a community like ours.\r\n\r\nI will also discuss what the Python Software Foundation does, what its goals and purpose are, and how everyone in the community can take part in the PSF to help build even better Python communities. This will include specific explanations of the membership model and how active contributors (both in terms of code and community organisation) can and should become full voting members of the PSF.\r\n\r\nI will also touch on our strengths, like our commitment to safe and inclusive spaces and our devotion to education, and also look at some of the challenges we face as a community going forward.", - "", - "", - "" - ], - "abstract_extra": "-", - "tag_categories": [ - "", - "Community" - ], - "emails": "naomi.ceder@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-stay-for-the-community", - "admin_type": "Keynote", - "companies": "Trans*Code" - }, - "710": { - "abstract_short": "Paul will take you through the process of making of a Disney movie. He will use examples from Zootopia to explain and illustrate the steps in making a movie and explain where technology, specifically Python, is involved. This is an updated talk from one given years ago with more information. \r\n\r\n*This talk won't be recorded.*", - "sub_title": "", - "timerange": "2016-07-19 09:15:00, 2016-07-19 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@paulhildebrandt", - "id": 710, - "speakers": "Paul Hildebrandt", - "title": "Inside the Hat: Python @ Walt Disney Animation Studios", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Case Study" - ], - "abstract_long": [ - "The Walt Disney Animation Studios has a long history of creating acclaimed animated films and continues to be an industry leader with regards to artistic achievements, storytelling excellence, and cutting-edge innovations. Since the 1923 release of Snow White they\u2019ve been pushing forward technology in the art of movie making. This push continues in the modern day with classics such as Oscar winning box office hits \"Big Hero 6\" and \u201cFrozen\u201d and Oscar nominated hits \u201cWreck-It Ralph\u201d, \u201cTangled\u201d, \u201cBolt\u201d, \u201cTreasure Planet\u201d, and \u201cDinosaur\u201d.\r\n\r\nOne of the most common questions we get when attending PyCon is \u201cWhy are you here?\u201d People seem confused that technology, especially Python is used in the making of animated films. \r\n\r\nTo dive into exactly where Python is used without context would be confusing so Paul will give the audience some background on the Walt Disney Animation Studios. He will talk about what we\u2019ve done and what we are currently working on.\r\n\r\nThe main part of the talk is describing the production process whilst imparting this information he will interject where technology and specifically Python comes into play. He will describe the tools in each area and the tech stack used to create them.\r\n\r\nHe will then dive more deeply into the products he owns and discuss python in general at Disney.\r\n\r\n*This talk won't be recorded.*", - "", - "", - "" - ], - "abstract_extra": "The Walt Disney Animation Studios has a long history of creating acclaimed animated films and continues to be an industry leader with regards to artistic achievements, storytelling excellence, and cutting-edge innovations. Since the 1923 release of Snow White they\u2019ve been pushing forward technology in the art of movie making. This push continues in the modern day with classics such as Oscar winning box office hits \"Big Hero 6\" and \u201cFrozen\u201d and Oscar nominated hits \u201cWreck-It Ralph\u201d, \u201cTangled\u201d, \u201cBolt\u201d, \u201cTreasure Planet\u201d, and \u201cDinosaur\u201d.\r\n\r\nOne of the most common questions we get when attending PyCon is \u201cWhy are you here?\u201d People seem confused that technology, especially Python is used in the making of animated films. \r\n\r\nTo dive into exactly where Python is used without context would be confusing so Paul will give the audience some background on the Walt Disney Animation Studios. He will talk about what we\u2019ve done and what we are currently working on.\r\n\r\nThe main part of the talk is describing the production process whilst imparting this information he will interject where technology and specifically Python comes into play. He will describe the tools in each area and the tech stack used to create them.\r\n\r\nHe will then dive more deeply into the products he owns and discuss python in general at Disney.\r\n\r\n*This talk won't be recorded.*", - "tag_categories": [ - "Case Study" - ], - "emails": "paul.hildebrandt@disney.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-inside-the-hat-python-at-alt-disney-animation", - "admin_type": "Keynote", - "companies": "Walt Disney Animation Studios" - }, - "705": { - "abstract_short": "Scientists have been searching for the elusive gravitational wave for more than half a century. Hear how they finally found them, and the role that Python played in the discovery.\r\n\r\n", - "sub_title": "The epic hunt for the elusive gravitational-wave, and Python's pivital role in the discovery", - "timerange": "2016-07-20 09:15:00, 2016-07-20 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 705, - "speakers": "Jameson Rollins", - "title": "LIGO: The Dawn of Gravitational Wave Astronomy", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Science", - "The Answer to Life the Universe and Everything Else", - "Machine-Learning", - "Human-Machine-Interaction", - "Analytics" - ], - "abstract_long": [ - "Scientists have been searching for the elusive gravitational wave for more than half a century. On September 14, 2015, the Laser Interferometer Gravitational-wave Observatory (LIGO) finally observed the gravitational wave signature from the merger of two black holes. This detection marks the dawn of a new age of _gravitational wave astronomy_, where we routinely hear the sounds emanating from deep within the most energetic events in the Universe. This talk will cover the events leading up to one of the most important discoveries of the last century, and the myriad of ways in which Python enabled the effort.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Sciences", - "Everything Else", - "Data Science", - "Hardware", - "Data Science" - ], - "emails": "jrollins@finestructure.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-ligo", - "admin_type": "Keynote", - "companies": "LIGO Caltech" - }, - "709": { - "abstract_short": "Data science is a hot topic and Python has emerged as an ideal language for it.\r\nIts strength for data analysis come from the cultural mix between the scientific Python community, and more conventional software usage, such as web development or system administration. I'll show how and why Python is a easy and powerful tool for data science.", - "sub_title": "", - "timerange": "2016-07-22 09:15:00, 2016-07-22 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@GaelVaroquaux", - "id": 709, - "speakers": "Ga\u00ebl Varoquaux", - "title": "Scientist meets web dev: how Python became the language of data", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Science", - "Data" - ], - "abstract_long": [ - "Python started as a scripting language, but now it is the new trend everywhere and in particular for data science, the latest rage of computing. It didn't get there by chance: tools and concepts built by nerdy scientists and geek sysadmins provide foundations for what is said to be the sexiest job: data scientist.\r\n\r\nIn my talk I'll give a personal perspective, historical and technical, on the progress of the scientific Python ecosystem, from numerical physics to data mining. What made Python suitable for science; How could scipy grow to challenge commercial giants such as Matlab; Why the cultural gap between scientific Python and the broader Python community turned out to be a gold mine; How scikit-learn was born, what technical decisions enabled it to grow; And last but not least, how we are addressing a wider and wider public, lowering the bar and empowering people.\r\n\r\nThe talk will discuss low-level technical aspects, such as how the Python world makes it easy to move large chunks of number across code. It will touch upon current exciting developments in scikit-learn and joblib. But it will also talk about softer topics, such as project dynamics or documentation, as software's success is determined by people.", - "", - "", - "" - ], - "abstract_extra": ".", - "tag_categories": [ - "Sciences", - "" - ], - "emails": "gael.varoquaux@normalesup.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-science-web-dev", - "admin_type": "Keynote", - "companies": "INRIA" - } - }, - "EPS session": { - "695": { - "abstract_short": "This is where the EuroPython Society (EPS) board gives its reports, resolutions are passed and the EPS members can vote in a new EPS board.", - "sub_title": "", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:30:00", - "sub_community": "", - "duration": 60, - "twitters": "@b_smoke, @malemburg", - "id": 695, - "speakers": "Fabio Pliger, Marc-Andre Lemburg", - "title": "EPS General Assembly", - "have_tickets": [ - true, - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Communication", - "Conferences and Meet-Ups", - "Euro Python and EPS", - "Community" - ], - "abstract_long": [ - "This is where the EuroPython Society (EPS) board gives its reports, resolutions are passed and the EPS members can vote in a new EPS board.", - "", - "", - "" - ], - "abstract_extra": "This is where the EuroPython Society (EPS) board gives its reports, resolutions are passed and the EPS members can vote in a new EPS board.", - "tag_categories": [ - "Community", - "Community", - "Community", - "Community" - ], - "emails": "fabio.pliger@gmail.com, mal@europython.eu", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/eps-general-assembly", - "admin_type": "EPS session", - "companies": "Continuum Analytics, eGenix.com Software GmbH" - }, - "696": { - "abstract_short": "We need help with organizing and running EuroPython 2017.\r\n\r\nIn this session, we will explain how the EuroPython workgroup model works and where you could help.", - "sub_title": "", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@b_smoke, @malemburg", - "id": 696, - "speakers": "Fabio Pliger, Marc-Andre Lemburg", - "title": "EuroPython 2017: Help us build the next edition!", - "have_tickets": [ - true, - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Communication", - "Conferences and Meet-Ups", - "Euro Python and EPS" - ], - "abstract_long": [ - "We need help with organizing and running EuroPython 2017\r\n\r\nIn this session, we will explain how the EuroPython workgroup model works and where you could help.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Community", - "Community", - "Community" - ], - "emails": "fabio.pliger@gmail.com, mal@europython.eu", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/europython-2017-help-us-build-the-next-edition", - "admin_type": "EPS session", - "companies": "Continuum Analytics, eGenix.com Software GmbH" - } - }, - "Lightning talk": { - "469": { - "abstract_short": "The LightingTalkShow is the time for new and exceptional ideas to shine.", - "sub_title": "", - "timerange": "2016-07-18 17:15:00, 2016-07-18 18:15:00", - "sub_community": "", - "duration": 60, - "twitters": "@mcltm", - "id": 469, - "speakers": "Harald Armin Massa", - "title": "The LightningTalkShow", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Communication", - "Conferences and Meet-Ups", - "Best Practice" - ], - "abstract_long": [ - "At the LightningTalkShow, there is script, there are no trained actors. Just the regular attendants, delivering interesting, diverse or crazy presentation about all things Python and computer.\r\n\r\nTo encourage the delivery, the LightningTalkMan shall conduct this ceromny, finding words when Laptops do not find the projector; allways honouring the motto of the original Python: the show must go on.\r\n", - "", - "", - "" - ], - "abstract_extra": "of course those 60 or whatever amount of minutes are allocated will be filled by participants who give LightningTalks.", - "tag_categories": [ - "Community", - "Community", - "Best Practice and Use Cases" - ], - "emails": "chef@ghum.de", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/the-lightningtalkshow", - "admin_type": "Lightning talk", - "companies": "2ndQuadrant Deutschland GmbH" - } - }, - "Recruiting session": { - "717": { - "abstract_short": "The recruiting sponsors will present their companies and their job offers in short talks.", - "sub_title": "", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:30:00", - "sub_community": "", - "duration": 45, - "twitters": "@b_smoke", - "id": 717, - "speakers": "Fabio Pliger", - "title": "Recruiting session", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "workforce" - ], - "abstract_long": [ - "The recruiting sponsors will present their companies and their job offers in short talks.", - "", - "", - "" - ], - "abstract_extra": "The recruiting sponsors will present their companies and their job offers in short talks.", - "tag_categories": [ - "Business" - ], - "emails": "fabio.pliger@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/recruiting-session", - "admin_type": "Recruiting session", - "companies": "Continuum Analytics" - } - }, - "Reserved slot": { - "706": { - "abstract_short": "June 4th we will open a second Call for Proposals, limited to hot topics and most recent developments in software and technology. Read our blog post here: http://blog.europython.eu/post/143625007372/europython-2016-extra-hot-topics-call-for", - "sub_title": "reserved for hot topics", - "timerange": "", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 706, - "speakers": "To be announced", - "title": "Reserved for 2nd Call for Proposals", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "", - "tags": [ - "General", - "python" - ], - "abstract_long": [ - "June 4th we will open a second Call for Proposals, limited to hot topics and most recent developments in software and technology. Read our blog post here: http://blog.europython.eu/post/143625007372/europython-2016-extra-hot-topics-call-for", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "", - "" - ], - "emails": "alex@hendorf.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/reserved-for-2nd-call-for-proposals", - "admin_type": "Reserved slot", - "companies": "" - }, - "707": { - "abstract_short": "June 4th we will open a second Call for Proposals, limited to hot topics and most recent developments in software and technology. Read our blog post here: http://blog.europython.eu/post/143625007372/europython-2016-extra-hot-topics-call-for", - "sub_title": "reserved for hot topics", - "timerange": "", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 707, - "speakers": "To be announced", - "title": "Reserved for 2nd Call for Proposals", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "", - "tags": [ - "General", - "python" - ], - "abstract_long": [ - "June 4th we will open a second Call for Proposals, limited to hot topics and most recent developments in software and technology. Read our blog post here: http://blog.europython.eu/post/143625007372/europython-2016-extra-hot-topics-call-for", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "", - "" - ], - "emails": "alex@hendorf.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/reserved-for-2nd-call-for-proposals-1", - "admin_type": "Reserved slot", - "companies": "" - } - }, - "training": { - "490": { - "abstract_short": "Chinese is a fascinating but also dauntingly complex language. So let's use Python to make learning it easier! In this tutorial, we will use Python's powerful data analysis capabilities to accelerate our understanding of the Chinese language, boosting both our Chinese and our Python skills:\r\n\r\nSpeech analysis will help us to cut through our pronunciation problems, image recognition will make Chinese characters look less foreign to us and statistics will tell us what to learn, and what not.", - "sub_title": "Using Python to become better at language learning.", - "timerange": "2016-07-21 14:00:00, 2016-07-21 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@japh44", - "id": 490, - "speakers": "Andreas Dewes", - "title": "(Machine-)Learning Chinese, with Python!", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4 [PyData Track]", - "tags": [ - "Visualization", - "Natural Language Processing", - "Educational Track", - "Algorithms", - "Machine-Learning" - ], - "abstract_long": [ - "#(Machine-)Learning Chinese, with Python!\r\n\r\nLearning a new language is hard work. Especially if it is Chinese, which is a tonal language that is written using more than 10.000 different characters. Finding our way around in this linguistic labyrinth is a daunting task. But do not fear, for we have the power of Python at our side, and with its help we will **machine-learn Chinese**!\r\n\r\n## Mom scolds the horse \r\n\r\nChinese is a tonal language, which means that pronouncing a syllable differently will usually change its meaning. And while this can be very funny, it can also be rather embarrassing for language learners. So, to keep us from getting into linguistic trouble, we'll write a little Python tool that helps us to improve our pronunciation.\r\n\r\n## Seeing the trees and the forest, but still being lost\r\n\r\nReading the morning newspaper while having a nice cup of tea doesn't sound so complicated, does it? Well, if that newspaper is printed in Chinese we will have to know about 2.500 characters just to make it through the first pages. Again, machine-learning will come to our rescue!\r\n\r\n## Low-hanging fruits, high-flying dragons\r\n\r\nPronunciation and characters mastered, we'll still have to learn a large amount of words and phrases, so where to begin? To answer this, we'll make use of Bayesian techniques to identify the low-hanging fruits of the Chinese language.\r\n\r\nCongratulations, you should now be fluent in Chinese (or at least Machine-Learning)." - ], - "abstract_extra": "After speaking about a fairly scientific topic at the last EuroPython, I want to do something more applied this year! \r\n\r\nAs I'm currently learning Chinese, I thought applying machine-learning to this could be a very good use case for showing off some Python libraries for data analysis and visualization. Also, Chinese is a fascinating topic by itself and something that many people can relate to as Chinese culture becomes more pervasive around the world.\r\n\r\nMy idea is therefore to do a tutorial in which people can apply different machine learning methods to problems that we encounter in language learning. I selected three specific problems (voice recognition, image classification, text processing) for this, which in my opinion are very well suited to a machine-learning approach and produce interesting and relevant results while being easy to explain and understand on a basic level.\r\n\r\nI also would like to give a talk about the material that we cover in the tutorial such that a wider audience can enjoy it, I therefore also submitted a proposal for a summary talk (with the same title). \r\n\r\nI already spoke at many IT & scientific conferences and usually received very good audience feedback for my talks (but maybe people are just very polite :D ), a selection of my talks and publications can be found on my website: http://www.andreas-dewes.de/talks.html\r\n\r\nI also have more than 7 years of experience in using Python for data analysis and I really enjoy teaching, which I have done both at University and professionally in my job.", - "tag_categories": [ - "Data Science", - "Data Science", - ">>> Suggested Track", - "Data Science", - "Data Science" - ], - "emails": "andreas.dewes@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/machine-learning-chinese-with-python", - "admin_type": "", - "companies": "7scientists UG" - }, - "396": { - "abstract_short": "In this short tutorial session you'll learn how easy it is to build 3d objects with python code in blender. We begin with constructing 3d objects with cubes and we finish by rendering a small video/gif with mini explosions! It is meant to be very beginner friendly and will be a fun exercise to show how flexible python can be. ", - "sub_title": "From python code to 3d GIF animations.", - "timerange": "2016-07-22 10:15:00, 2016-07-22 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@fishnets88", - "id": 396, - "speakers": "vincent warmerdam", - "title": "Blender: much visual, very 3d, many python.", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Visualization", - "Blender" - ], - "abstract_long": [ - "In this short tutorial session you'll learn how easy it is to build 3d objects with python code in blender. We begin with constructing 3d objects with cubes and we finish by rendering a small video/gif with mini explosions! It is meant to be very beginner friendly and will be a fun exercise to show how flexible python can be. \r\n\r\nThese two blogposts of mine will give an impression of what people can do at the end of the day. \r\n- http://koaning.io/python-blender-gif.html\r\n- http://koaning.io/python-cubes-in-blender.html\r\n\r\nIf customs allow it: I'll consider bringing an oculus rift such that people can walk in their own creations." - ], - "abstract_extra": "This is my blog: http://koaning.io/. \r\n\r\nI've done many talks in the past. Both at PyData events and EuroPython. If you type my name into youtube, you should find example videos of me. ", - "tag_categories": [ - "Data Science", - "Everything Else" - ], - "emails": "vincentwarmerdam@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/blender-much-visual-very-3d-many-python", - "admin_type": "", - "companies": "GoDataDriven" - }, - "573": { - "abstract_short": "This tutorial is targeted at the intermediate-to-advanced Python user who wants to extend Python into High-Performance Computing. The tutorial will provide hands-on examples and essential performance tips every developer should know for writing effective parallel Python. The result will be a clear sense of possibilities and best practices using Python in HPC environments.\r\n", - "sub_title": "", - "timerange": "2016-07-19 10:15:00, 2016-07-19 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 573, - "speakers": "Michael McKerns", - "title": "Efficient Python for High-Performance Parallel Computing", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Multi-Threading", - "Python general", - "Abstractions", - "Multi-Processing", - "Performance" - ], - "abstract_long": [ - "Many of the examples you often find on parallel Python focus on the mechanics of getting the parallel infrastructure working with your code, and not on actually building good portable parallel Python. This tutorial is intended to be a broad introduction to writing high-performance parallel Python that is well suited to both the beginner and the veteran developer. Parallel efficiency starts with the speed of the target code itself, so we will start with how to evolve code from for-loops to Python looping constructs and vector programming. We will also discuss tools and techniques to optimize your code for speed and memory performance.\r\n\r\nThe tutorial will overview working with the common parallel communication technologies (threading, multiprocessing, MPI) and introduce the use of parallel programming models such as blocking and non-blocking pipes, asynchronous and iterative conditional maps, and map-reduce. We will discuss strategies for extending parallel workflow to utilize hierarchical and heterogeneous computing, distributed parallel computing, and job schedulers. We then return our focus to the speeding up our target code by leveraging parallelism within compiled code using Cython.\r\n\r\nAt the end of the tutorial, participants should be able to write simple parallel Python scripts, make use of effective parallel programming techniques, and have a framework in place to leverage the power of Python in High-Performance Computing.", - "", - "", - "" - ], - "abstract_extra": "An earlier version of the tutorial is available at: http://www.pyvideo.org/video/1345/efficient-parallel-python-for-high-performance-co while a preliminary version of the tutorial is at https://github.com/mmckerns/tuthpc.\r\n", - "tag_categories": [ - "Programming", - "Python", - "Everything Else", - "Programming", - "Programming" - ], - "emails": "mmckerns@uqfoundation.org", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/efficient-python-for-high-performance-parallel-computing", - "admin_type": "", - "companies": "the UQ Foundation" - }, - "592": { - "abstract_short": "Optimization can often help to make Python programs faster or use less memory.\r\nDeveloping a strategy, establishing solid measuring and visualization techniques\r\nas well as knowing about algorithmic basics and datastructures are the foundation\r\nfor a successful optimization. The tutorial will cover these topics.\r\nExamples will give you a hands-on experience on how to approach efficiently.", - "sub_title": "", - "timerange": "2016-07-20 10:15:00, 2016-07-20 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@pyacademy", - "id": 592, - "speakers": "Mike M\u00fcller", - "title": "Faster Python Programs - Measure, don't Guess", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Algorithms", - "Tooling", - "Data Structures", - "Best Practice", - "Performance" - ], - "abstract_long": [ - "Python is a great language. But it can be slow compared to other languages\r\nfor certain types of tasks. If applied appropriately, optimization may reduce\r\nprogram runtime or memory consumption considerably. But this often comes at a\r\nprice. Optimization can be time consuming and the optimized program may be more\r\ncomplicated. This, in turn, means more maintenance effort. How do you find\r\nout if it is worthwhile to optimize your program? Where should you start?\r\nThis tutorial will help you to answer these questions. You will learn how\r\nto find an optimization strategy based on quantitative and objective criteria.\r\nYou will experience that one's gut feeling what to optimize is often wrong.\r\n\r\nThe solution to this problem is: \u201eMeasure, Measure, and Measure!\u201c. You will\r\nlearn how to measure program run times as well as profile CPU and memory.\r\nThere are great tools available. You will learn how to use some of them.\r\nMeasuring is not easy because, by definition, as soon as you start to measure,\r\nyou influence your system. Keeping this impact as small as possible is\r\nimportant. Therefore, we will cover different measuring techniques.\r\n\r\nFurthermore, we will look at algorithmic improvements. You will see that the\r\nright data structure for the job can make a big difference. Finally, you will\r\nlearn about different caching techniques.\r\n" - ], - "abstract_extra": "## Outline\r\n\r\n* How Fast is Fast Enough? (5 min)\r\n* Optimization Guidelines and Strategy (10 min)\r\n* Measuring run time\r\n * ``time``, ``timeit``, decorators for timing (5 min)\r\n * Wall Clock vs. CPU Time (2 min)\r\n* Profiling CPU Usage\r\n * cProfile (10 min)\r\n * A Picture is Worth a Thousand Words\r\n * SnakeViz (10 min)\r\n * Going Line-by-Line (5 min)\r\n * Exercise (15 min)\r\n* Profiling Memory Usage\r\n * Pympler (5 min)\r\n * Memory Usage Line-by-Line with memory_profiler (5 min)\r\n * Roll your own (5 min)\r\n * Exercise (10 min)\r\n* Algorithms and Anti-patterns\r\n * String Concatenation (3 min)\r\n * List and Generator Comprehensions (5 min)\r\n * Think Global buy Local (5 min)\r\n * Exercise (5 min)\r\n* The Right Data Structure\r\n * Use built-in Data Types (2 min)\r\n * ``list`` vs. ``set`` (3 min)\r\n * ``list`` vs. ``deque`` (5 min)\r\n * ``dict`` vs. ``defaultdict`` (5 min)\r\n * Big-O notation and Data Structures (5 min)\r\n * O(1) vs. O(n) vs. O(n) (5 min)\r\n * Exercise (15 min)\r\n* Caching\r\n * Reuse before You Recalculate (5 min)\r\n * Deterministic caching (5 min)\r\n * Non-deterministic caching (5 min)\r\n * Least Recently Used Cache (5 min)\r\n * Memcached (5 min)\r\n * Exercise (10 min)\r\n\r\n## Software Requirements\r\n\r\nYou will need Python 2.7 or 3.5 installed on your laptop. Python 2.6 or 3.3/3.4\r\nshould also work. Python 3.x is strongly preferred.\r\n\r\n\r\n### IPython Notebook\r\n\r\nI will use an IPython Notebook for the tutorial because it makes a very good\r\nteaching tool. You are welcome to use the setup you prefer, i.e editor, IDE,\r\nREPL. If you also like to use an IPython Notebook, I recommend `conda` for\r\neasy installation. Similarly to `virtualenv`, `conda` allows creating isolated\r\nenvironments but allows binary installs for all platforms.\r\n\r\nThere are two ways to install`IPython` via `conda`:\r\n\r\n1. Use [Minconda][1]. This is a small install and (after you installed it)\r\n you can use the command `conda` to create an environment:\r\n `conda create -n pycon2016 python=3.5`\r\n Now you can change into this environment:\r\n `source activate pycon2016`. The prompt should change to `(pycon2016)`.\r\n Now you can install IPython: `conda install IPython`.\r\n\r\n2. Install [Anaconda][2] and you are ready to go if you don't mind installing\r\n lots of packages from the scientific field.\r\n\r\n\r\nThe second option also gives you `conda` and you can create more environments\r\njust as with Miniconda (see 1.).\r\n\r\n### Working witch ``conda`` environments\r\n\r\nAfter creating a new environment, the system might still work with some\r\nstale settings. Even when the command ``which`` tells you that you are using an\r\nexecutable from your environment, this might actually not be the case.\r\nIf you see strange behavior using a command line tool in your environment,\r\nuse ``hash -r`` and try again. Please install ``pip`` inside this environment:\r\n\r\n conda install pip\r\n\r\n\r\n### Tools\r\n\r\nYou can install these with ``pip`` (in the active ``conda`` environment):\r\n\r\n* [SnakeViz][3]\r\n* [line_profiler][4]\r\n* [Pympler][6]\r\n* [memory_profiler][7]\r\n* [pyprof2calltree][9]\r\n\r\n\r\n\r\n#### Linux\r\n\r\nUsing the package manager of your OS should be the best option.\r\n\r\n\r\n[1]: http://conda.pydata.org/miniconda.html\r\n[2]: http://continuum.io/downloads\r\n[3]: http://jiffyclub.github.io/snakeviz/\r\n[4]: https://pypi.python.org/pypi/line_profiler/\r\n[6]: https://pypi.python.org/pypi/Pympler\r\n[7]: https://pypi.python.org/pypi/memory_profiler\r\n[8]: http://kcachegrind.sourceforge.net/html/Home.html\r\n[9]: https://github.com/pwaller/pyprof2calltree/\r\n\r\n## About the trainer\r\n\r\nI've been teaching Python courses since 2004. According to my statistics,\r\nI taught about 250 Python courses totaling over 600 teaching day.\r\nThis includes 16 tutorials at PyCon as well as numerous tutorials at\r\nEuroPython, EuroSciPy, PyCon DE, PyCon PL, PyCon IE, PyCon AsiaPacific\r\nas well as at PyData London and Berlin.\r\n\r\nI've been teaching tutorials about this topic every year at PyCon US from 2007\r\nthrough 2014 as well at PyData Berlin 2015 and at EuroPython 2015 in Bilbao.\r\nThis version has been revised **based on the feedback from the last tutorial\r\ndeliveries**.\r\n\r\nFirst, the tutorial covers fewer topics. I cut out tools that do not support\r\nPython 3 such as SnakeRunSnake and Heapy.\r\n\r\nSecond, I added more exercises. This should allow more focus on the core of the\r\ntutorial and also include more hands-on work by the participants. This \u201eLess is\r\nMore\u201c approach is additionally justified because the content of the tutorial\r\ngrew over time as more very useful tools became available. I think more\r\ndepths and less range makes sense for this topic.\r\n\r\nThere is a 60-page PDF handout that is rather comprehensive and can serve for\r\nself-study after the tutorial.\r\n", - "tag_categories": [ - "Data Science", - "Programming", - "Programming", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "mmueller@python-academy.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/faster-python-programs-measure-dont-guess-1", - "admin_type": "", - "companies": "Python Academy GmbH & Co. KG" - }, - "556": { - "abstract_short": "During this workshop, you will be guided to make an open source contribution to the [coala][1] project. You will learn about quality restrictions and code review as well as the necessary tools to rework your patches to get them accepted. With the knowledge from this course you should easily be able to go out and help any open source project!\r\n\r\n [1]: http://coala-analyzer.org\r\n", - "sub_title": "Qualifies attendees for contribution to coala and other open source projects.", - "timerange": "2016-07-22 14:00:00, 2016-07-22 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@tushar_rishav", - "id": 556, - "speakers": "Tushar Gautam", - "title": "Guide to make a real contribution to an open source project for novice", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Python 3", - "Beginners", - "Git", - "Open-Source", - "Development" - ], - "abstract_long": [ - "Goal\r\n----\r\nYou will be guided to make a real contribution to an open source project ([_coala_][1]). The skills you learn are generally applicable. \r\n\r\nPrerequisite\r\n------------\r\n1. Eager to contribute to open source.\r\n2. Willingness to do great things in python\r\n3. GitHub account\r\n4. Git and Python installed\r\n5. A laptop\r\n\r\n\r\nOverview\r\n--------\r\n- Talk about version control (specifically Git). Basic stuffs like setup git and commands like `fork/clone, pull/fetch, push, commit/ammend, squash` etc. We'll be following **learning by doing** paradigm. Approx 15 minutes.\r\n- Introduce people to [_coala_][1] in general, brief about its codebase and how to use Github to contribute to coala. Approx 15 minutes.\r\n- Get started to write some code. We'll have bunch of unassigned issues, specifically created for \r\nthe purpose of workshop, show people how developers collaborate, cover git commands in more detail and the pull requests from attendees. Approx 1.30 hrs.\r\nWe'll also talk in brief about quality/testing tools like Travis Ci, CircleCi, Gitmate etc. In the meantime we'll start reviewing the PRs. Approx 20 minutes.\r\n- Finally, reworking the code phase and get every attendees merge their contributions to master branch.\r\n\r\n \r\n[1]: http://coala-analyzer.org/" - ], - "abstract_extra": "We've been using git and programming in Python since a fair amount of time. We've also conducted workshops regarding the contribution to open source in University. We'll be glad to share what we've learnt so far with the community. We also look forward to learn a lot from this conference. \r\nThe workshop shall be conducted by [_Tushar Gautam_][1] and [_Vishal Agarwal_][2] ,the two contributors to coala :\r\n [1]: https://github.com/tushar-rishav\r\n [2]: https://github.com/charizard42", - "tag_categories": [ - "Python", - "Educational", - "DevOps", - "Open Source", - "Programming" - ], - "emails": "tushar.rishav@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/guid-to-make-a-real-contribution-to-an-open-source-project-for-novice", - "admin_type": "", - "companies": "" - }, - "407": { - "abstract_short": "Want to learn how to clean, investigate, explore and analyze your data using Python? This workshop will take you from using Python as a developer into the basics of using Python as a data wrangler. We will cover an introduction to several data science libraries including Pandas, as well as some basic charting and reporting libraries.", - "sub_title": "Solving problems through data cleaning, analysis and reporting", - "timerange": "2016-07-21 10:15:00, 2016-07-21 13:15:00", - "sub_community": "pydata", - "duration": 180, - "twitters": "@kjam", - "id": 407, - "speakers": "Katharine Jarmul", - "title": "Introduction to Data Wrangling", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4 [PyData Track]", - "tags": [ - "Visualization", - "Jupyter/iPython Notebook", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "APIs" - ], - "abstract_long": [ - "Overview \r\n------------------ \r\nIn this tutorial, we'll be taking an exploratory look at how to perform data wrangling using Python. It's assumed the audience has a working understanding of Python and some basic data analysis exposure. Participants will leave the class with a better understanding of useful Python libraries for data analysis, as well as some hands-on scripts built throughout the tutorial. With these initial first steps, they should feel comfortable integrating data analysis into their current Python projects. \r\n\r\nOutline \r\n------------------ \r\n* Introduction to Data Wrangling with Python \r\n** How to ask questions \r\n** Where to find data \r\n** Why Python? \r\n\r\n* Initial setup\r\n** IPython Notebook \r\n** Getting the data \r\n\r\n* Importing data\r\n** Working with easy formats \r\n** Working with hard formats \r\n** APIs \r\n\r\n* Exploring data \r\n** Using pandas \r\n** Asking simple questions \r\n** Joining datasets \r\n\r\n* Analysing data \r\n** What is the data saying \r\n** Standardization and normalization \r\n** Making conlusion \r\n\r\n* Reporting your findings \r\n** Who is your audience \r\n** Charting data \r\n** Interactive charts and graphs \r\n\r\n* Next steps \r\n** Where to go from here \r\n** Q&A \r\n** \"Homework\" " - ], - "abstract_extra": "This tutorial will be based on work for my recently completed O'Reilly book, (Data Wrangling with Python)[http://shop.oreilly.com/product/0636920032861.do]. I've spoken at several US PyCon and other Python conferences and led classes for PyLadies in Los Angeles and Berlin. \r\n\r\nI've presented a version of this tutorial at EuroPycon last year, and, despite WiFi issues, received some great feedback and reviews. I've modified it and updated it to be more on-point with the audience in mind. ", - "tag_categories": [ - "Data Science", - "Python", - "Data Science", - "Web" - ], - "emails": "kjarmul@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/introduction-to-data-wrangling", - "admin_type": "", - "companies": "kjamistan" - }, - "629": { - "abstract_short": "**Objectives:**\r\n\r\n1) What is deep learning and why is it the current rage? \r\n2) How to implement a deep learning algorithm from scratch? \r\n3) Python library for deep learning - Keras\r\n4) Leverage deep learning for natural language processing \r\n5) Impact of GPU for deep learning \r\n\r\nThis workshop covers some of the common deep learning architectures for NLP with hands-on implementation of them using the latest deep learning libraries. The main topics would be MLP, RNN and word2vec.\r\n\r\n", - "sub_title": "A single neuron to a civilization", - "timerange": "2016-07-20 10:15:00, 2016-07-20 13:15:00", - "sub_community": "pydata", - "duration": 180, - "twitters": "@bargava, @nischalhp, @raghothams", - "id": 629, - "speakers": "Bargava Subramanian, Nischal HP, Raghotham Sripadraj", - "title": "Introduction to Deep Learning for Natural Language Processing", - "have_tickets": [ - true, - false, - false - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Natural Language Processing", - "Machine-Learning", - "Deep Learning", - "Data Science", - "Analytics" - ], - "abstract_long": [ - "Ever wondered how Google Translate works so well? Do you know how the auto-captioning works on Youtube? How to mine the sentiments of tweets on twitter? And there's a host of successful natural language processing examples out there. What's the underlying theme? They all use Deep Learning.\r\n\r\nThis workshop introduces artificial neural networks and deep learning. The building blocks of neural networks are discussed in detail. Attendees are introduced to learning using ANN with backpropagation algorithm.\r\n\r\nA preliminary model using multi-layer perceptron is implemented to get a feel for deep learning model structure and the library keras.\r\n\r\nThe state-of-art recurrent neural networks is introduced. Two approaches are shown - 0ne using Long Short-Term Memory models and another one leveraging Word2Vec. Some ways to overcome overfitting are explored. \r\n\r\nWe'll also show how GPU's affect the computation.\r\n\r\nWe'll also implement a RNN to do text-generation.\r\n\r\n\r\n**Ideal Background of the attendee**\r\n\r\nSome knowledge of machine learning. \r\n - Bias and Variance\r\n - Train, Validation, and Test sets\r\n - Cross-validation\r\n - hyperparameter optimization\r\n - Measuring model accuracy \r\n - Supervised and Unsupervised learning\r\n - Overfitting \r\n - Basic Python constructs\r\n\r\nThe repository for the tutorial is [here][1]\r\n\r\nThe repository has instructions on what packages to install and the data we would be using for the workshop.\r\n\r\n [1]: https://github.com/rouseguy/intro2deeplearning\r\n", - "", - "", - "" - ], - "abstract_extra": "This tutorial will be conducted along with Raghotham S(raghotham.s@gmail.com) and Nischal HP(nischalhp@gmail.com)\r\n\r\nWe have conducted this workshop at the following places\r\n[PyCon Ireland 2015][5]\r\n[PyCon Poland 2015][4]\r\n[Fifth Elephant 2015(India's largest Data Science Conference)][3]\r\n[IEEE Conference on Cloud Computing for Emerging Markets][2]\r\n[PyCon Czech 2015][1]\r\n\r\n [1]: https://cz.pycon.org/2015/workshops/\r\n [2]: http://conferences.computer.org/ccem/program.html\r\n [3]: https://fifthelephant.talkfunnel.com/2015/10-introduction-to-deep-learning\r\n [4]: http://pl.pycon.org/2015/agenda_en.html\r\n [5]: http://lanyrd.com/2015/pyconie/sdrpqd/\r\n\r\nIn addition to this, the speakers have organized workshops at the following places\r\nPyCon India 2015 - Introduction to Statistics\r\nBangalore Python User Group: \r\n- Machine Learning (June 2015)\r\n- Data Analysis(August 2015)\r\n- Optimization (February 2016) ", - "tag_categories": [ - "Data Science", - "Data Science", - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "bargava@gmail.com, nischal.hp@gmail.com, raghotham.s@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/introduction-to-deep-learning-for-natural-language-processing", - "admin_type": "", - "companies": "Cisco, Unnati Data Labs" - }, - "425": { - "abstract_short": "We will run through a fork of the publicly available ipython-in-depth tutorial \r\n [https://github.com/mjbright/ipython-in-depth][1]\r\nto discover many of the capabilities of Jupyter and IPython.\r\n\r\n [1]: https://github.com/mjbright/ipython-in-depth\r\n", - "sub_title": "Discover IPython/Jupyter through hands-on exercises with this time tested (evolving) tutorial", - "timerange": "2016-07-18 14:15:00, 2016-07-18 17:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@mjbright", - "id": 425, - "speakers": "Mike BRIGHT", - "title": "IPython in Depth", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Notebook", - "Jupyter/iPython" - ], - "abstract_long": [ - "We will run through a fork of the publicly available ipython-in-depth tutorial \r\n - [https://github.com/mjbright/ipython-in-depth][1]\r\n\r\nto discover many of the capabilities of Jupyter and IPython.\r\n\r\nPlease bring your own PC with Jupyter already installed.\r\nI recommend to have the Anaconda distribution, see here for suggested installation methods:\r\n - [http://jupyter.readthedocs.org/en/latest/install.html][2]\r\n\r\nI will work through at least the following tutorial sections:\r\n\r\n - Notebook Basics + beyond plain python\r\n - Markdown Cells\r\n - Rich Display System\r\n - Introduction to Interactive Javascript Widgets\r\n\r\nWe will spend roughly 45 mins on each section\r\n\r\nThis is a beginners Jupyter/IPython session.\r\nNevertheless, there's no problem for people to jump ahead, or to perform other exercises container within that repo.\r\n\r\nI've created a gitter channel for dissemination of information and to allow participants to chat and help each other. Feel free to post before/after the session.\r\nYou can join the channel here:\r\n[https://gitter.im/mjbright/ipython-in-depth][3]\r\n\r\n [1]: https://github.com/mjbright/ipython-in-depth\r\n [2]: http://jupyter.readthedocs.org/en/latest/install.html\r\n [3]: https://gitter.im/mjbright/ipython-in-depth\r\n", - "", - "", - "" - ], - "abstract_extra": "The tutorial will be run on attendee PCs.\r\n\r\nTutorial will be based on the publicly available tutorials on the github IPython and Jupyter repositories.\r\n\r\nCan be adapted if particular requirements are suggested.\r\n\r\nI am more than open to participating with other speakers on this lab.\r\n", - "tag_categories": [ - "", - "" - ], - "emails": "europython@mjbright.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/ipython-in-depth", - "admin_type": "", - "companies": "HPE" - }, - "615": { - "abstract_short": "The open source devpi private packaging system is used in many organisations and in this course you learn how to make the best use of it. Devpi helps with packaging and uploading python packages, documentation and test results to private indexes. In this course you'll also learn how to setup the server and client-side of devpi and how to implement staging and custom work flows. ", - "sub_title": "", - "timerange": "2016-07-20 14:00:00, 2016-07-20 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 615, - "speakers": "holger krekel", - "title": "Manage your Python packages professionally with devpi", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Infrastructure", - "Testing", - "Packaging" - ], - "abstract_long": [ - "The devpi server can manage all your private python packages and documentation and you can use well-known python tools like pip, tox, twine and sphinx to work with it. It also serves as a caching proxy for pypi.python.org and indexes can be configured to work as an \"overlay\" where your private packages appear in addition to public python ones. The server provides a web interface which integrates search and sphinx-generated documentation. All of this will be demonstrated and learned through little exercises during the course.\r\n\r\nThe devpi client side provides help for creating users, indexes, uploading packages, documentation and performing package-defined tests. In the course you'll learn the basics of command line usage with devpi and how to use it to implement custom work flows.\r\n\r\nMore info on the devpi system at doc.devpi.net" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Testing", - "Python" - ], - "emails": "holger@merlinux.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/manage-your-python-packages-professionally-with-devpi", - "admin_type": "", - "companies": "merlinux GmbH" - }, - "650": { - "abstract_short": "Learn how to use the [Cython][1] compiler to bring complex array computations to the speed of C without resorting to low level languages.\r\n\r\n [1]: http://cython.org/\r\n", - "sub_title": "Learn how to speed up complex array computations with Cython", - "timerange": "2016-07-20 14:00:00, 2016-07-20 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 650, - "speakers": "Stefan Behnel", - "title": "NumPy with Cython", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Cython", - "Big Data", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Compiler and Interpreters" - ], - "abstract_long": [ - "The [Cython][1] compiler is an excellent and widely used tool for speeding up computational code and talking to native libraries. It translates Python code to C or C++ code and supports static type annotations to allow direct use of C/C++ data types, native functions and complex array types. The tight integration of all three languages makes it possible to freely mix Python features like generators and comprehensions with C/C++ features like native data types, pointer arithmetic or manually tuned memory management in the same code. Cython has direct support for NumPy arrays and other buffer objects, which allows for efficient and even parallel (OpenMP) processing of large arrays.\r\n\r\nThis tutorial by a Cython core developer introduces the Cython programming language and its compiler and leads the participants all the way from their first Python extension to an efficient integration with NumPy arrays.\r\n\r\nNote that participants are expected to have a good understanding of the Python language, at least some basic knowledge about NumPy and C or C++, and are able to use a C compiler on their computers to build native CPython modules from sources (e.g. install source packages from PyPI that contain C extensions). No deep C programming knowledge is required, nor is any prior knowledge needed about writing extension modules for the CPython runtime. The Cython compiler handles most of these low-level issues itself.\r\n\r\n [1]: http://cython.org/\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Data Science", - "Data Science", - "Data Science", - "Python" - ], - "emails": "pycon@behnel.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/numpy-with-cython", - "admin_type": "", - "companies": "Skoobe" - }, - "549": { - "abstract_short": "Learn the use of python SDKs to deploy your first cloud native application atop OpenStack. Deploying applications in a cloud environment can be very different from deploying them in a traditional IT environment. This workshop will teach you how to deploy applications on OpenStack and some best practices for cloud application development. ", - "sub_title": "Using Python SDKs to Deploy your first Cloud Native Application atop OpenStack", - "timerange": "2016-07-21 14:00:00, 2016-07-21 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 549, - "speakers": "David Flanders", - "title": "OpenStack Cloud Native Deployment for Application Developers", - "have_tickets": [ - false - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Visualization", - "Education", - "OpenStack", - "DevOps general", - "Deep Learning" - ], - "abstract_long": [ - "Did you miss the first wave of job opportunities to be an OpenStack operator? Fear not, the second wave commeth! Learn the latest in Application Development atop OpenStack. Both DevOpps and AppDev are invited to this hands-on training. This training will provide an overview of the most popular Python SDKs and their use with OpenStack (and other clouds: why be locked in?). \r\n\r\nBy the end of the workshop you will have learned: \r\na.) The basic componets of an open collaborative cloud infrastructure, \r\nb.) Simple architectures for building an application to scale accross several cloud compute nodes\r\nc.) Cloud data storage techniques and how to auto-orchestrate your data and compute\r\nd.) About the future upcoming application development paradigms: containers, 12 factor and mobile/IoT and much more. \r\n\r\nThe future is open, might as well get started. \r\n\r\nThe OpenStack foundation is now a not-for-profit organisation which is now 5 years of age and still innovatively growing. If you've not been to an OpenStack summit you are missing one of the best open events of the year. The OpenStack summit will be in Barcelona late October, hope to see you there. " - ], - "abstract_extra": "", - "tag_categories": [ - "Data Science", - "Educational", - "DevOps", - "DevOps", - "Data Science" - ], - "emails": "denise@openstack.org", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/openstack-cloud-native-deployment-for-application-developers", - "admin_type": "", - "companies": "OpenStack Foundation" - }, - "475": { - "abstract_short": "_Try major async web frameworks in playful use-cases, learn which tool works best for which task_\r\n\r\nWorkshop reveals Python capabilities for async web development, focusing on production-ready tools for the time being. It contains an overview and sample tasks for most established Python solutions:\r\n\r\n- AsyncIO\r\n- Tornado\r\n- Twisted\r\n\r\nWorkshop does not promote any particular framework; we try each option to build the personal preference mapping of project requirements and corresponding tools.", - "sub_title": "Try major async web frameworks in playful use-cases, learn which tool works best for which task", - "timerange": "2016-07-19 10:15:00, 2016-07-19 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@PyMunich", - "id": 475, - "speakers": "Anton Caceres", - "title": "Present-day Async Web development training: from Twisted to Tornado and AsyncIO", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Use Case", - "Web Track", - "Best Practice", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "**Objective**\r\n\r\nGet hands-on experience with async Python frameworks, learn which tool works best for which task.\r\n\r\n**Description**\r\n\r\nThis beginner-friendly workshop contains an overview, code tasks and a benchmark for production-ready Python async tools for the time being:\r\n\r\n- AsyncIO\r\n- Tornado\r\n- Twisted\r\n\r\nWorkshop does not promote any particular framework; we practically try each option and develop personal preferences.\r\n\r\n**Plan**\r\n\r\n 1. Introduction to async web servers and frameworks (15 min)\r\n 2. Formulating typical web tasks that need async design (10 min)\r\n 3. for task in tasks: (1 h)\r\n - implement with Twisted\r\n - Tornado\r\n - AsyncIO\r\n 4. Take a realistic parallel requests use-case and use LAN to experiment (30 min)\r\n 4. Discuss peculiarities of implementations (10 min)\r\n 5. Run same task on different platforms with a benchmark (10 min)\r\n 6. Integrate frameworks: (15 min)\r\n - run Tornado on AsyncIO loop\r\n - convert Future objects\r\n7. Q & A (10 min)\r\n\r\n**Practical part**\r\n\r\nWe try different frameworks to implement typical web tasks: handling requests, fetching data from external APIs and proxying connections. In case of reliable LAN we will use laptops of each other as services to call asynchronously. This part is interactive, everyone is a creator of own service. Then we will put some service down and do error handling, try to integrate future objects of different frameworks, run a benchmark.\r\n\r\n**Pre-requirements**\r\n\r\n- Laptop with Python 3.4+" - ], - "abstract_extra": " - This workshop is an evolution of my talk series, eg last _[EuroPython talk][1]_\r\n - I also had similar but more AsyncIO-focused workshops at _[PyCon.es][2]_ and _[PyCon Sette][3]_.\r\n - Current workshop will be presented for the first time\r\n - I'm the organiser and tutor of _[PyMunich][4]_\r\n\r\n [1]: https://www.youtube.com/watch?v=NKPHP5p0WXA\r\n [2]: http://2015.es.pycon.org/en/schedule/\r\n [3]: https://www.pycon.it/conference/talks/beautiful-async-code-in-python-3\r\n [4]: http://www.pymunich.com", - "tag_categories": [ - "Best Practice and Use Cases", - ">>> Suggested Track", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "anton@caceres.me", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/present-day-async-web-development-training-from-twisted-to-tornado-and-asyncio", - "admin_type": "", - "companies": "Skoobe" - }, - "631": { - "abstract_short": "Modern Python development is sophisticated: large code bases with many libraries, multiple developers, and rich frontend stacks for web development. Better tooling can be a big help, including an integrated development environment (IDE). This tutorial introduces PyCharm, covers its major features, and shows a web development workflow in a hands-on environment.", - "sub_title": "", - "timerange": "2016-07-19 14:00:00, 2016-07-19 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@paulweveritt", - "id": 631, - "speakers": "Paul Everitt", - "title": "Productive Coding with PyCharm", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Programming" - ], - "abstract_long": [ - "PyCharm is a powerful development environment for Python and web programming, with many tools and features to boost productivity. This tutorial covers a broad selection of these features, in the context of hands-on development. The outline focuses on Python, but includes a treatment of the HTML/JS/CSS features PyCharm inherits from its IntelliJ/WebStorm foundation.\r\n\r\nDuring this tutorial we'll also take a look on how good code practices can help the IDE to assist you on Python coding: writing docstrings, type hints with Python 3.5 latest standards, etc.\r\n\r\nAfter this tutorial, attendees should part with a basic understanding of the myriad of PyCharm features: what they are, why they help, how to use them, and how to find more information.\r\n\r\nAttendees should arrive at the tutorial with an installation of Python and and installation of the latest PyCharm. A list of required packages will be provide the week before, to help minimize the network impact of PyPI access. (An attempt will be made to run a local mirror.)" - ], - "abstract_extra": "##Tutorial format\r\n\r\nHands-on environment with multiple people from the PyCharm team to walk around and help. The approach is based on how I taught my \u201cPython 3 Web Development with Pyramid\u201d at two previous PyCons, a format that received strong feedback scores. The tutorial is broken into 10-12 sections. Each section begins with some talking, then has the students do hands-on work, then finishes with a wrap-up.\r\n\r\n## Class Size\r\n\r\nWe can handle a large class (I have a lot of experience over the years teaching Python in larger settings.)\r\n\r\n## Previous Experience\r\n\r\nI have conducted two PyCon tutorials in the past 3 years, plus a tutorial at PyCon Brasil. Before that, my tutorial work goes back to teaching CGI at the Python workshop in 1995.", - "tag_categories": [ - "Programming" - ], - "emails": "pauleveritt@me.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/productive-coding-with-pycharm", - "admin_type": "", - "companies": "JetBrains s.r.o." - }, - "587": { - "abstract_short": "Learn to test your code more effectively with Hypothesis.", - "sub_title": "Let your testing do more of your work for you", - "timerange": "2016-07-18 10:15:00, 2016-07-18 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@DRMacIver", - "id": 587, - "speakers": "David MacIver", - "title": "Property-based testing with Hypothesis", - "have_tickets": [ - false - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Test Libraries (pyTest/node/...)", - "Testing" - ], - "abstract_long": [ - "Hypothesis is a library for writing smarter tests.\r\n\r\nInstead of hand-writing every example in your tests, you describe what sorts of examples you need and let it fill in the blanks. It uses this to actively go looking for bugs in your code.\r\n\r\nIt's proven very effective, and is being used by an ever growing number of open source projects (including pypy, cryptography, and mercurial), but people sometimes struggle to get started.\r\n\r\nIn this session we'll help you overcome that by going through a number of illustrative examples that will help you understand this style of testing better.\r\n\r\nThe first two hours will be spent on these, start with a discussion of the problem, a sample test to start you off, and then people will work through it at their own pace, with me there to answer questions and help people when they get stuck. After people have had some time on a given problem, I'll go over some possible tests for the example and why they are useful, and give people time to try anything they like out before moving on to the next problem.\r\n\r\nFor the final hour, people will work on testing some more substantial code. You should feel free to bring your own, but I will provide some interesting projects for people to work on for anyone who doesn't have anything specific.\r\n\r\nAt the end of this you should feel much more comfortable with the general concepts of property based testing, and be able to use Hypothesis effectively to test your own code." - ], - "abstract_extra": "I'm the primary author of Hypothesis.\r\n\r\nI've previously given a few talks about it, including this one at PyCon UK (https://www.youtube.com/watch?v=62ubHXzD8tM) and a more recent one at PyCon Namibia (No video, unfortunately, but here are the slides: https://bit.ly/how-do-i-know-1).\r\n\r\nI've run similar trainings before, both at PyCon Namibia and for companies.\r\n\r\nLast year's EuroPython had a number of talks about Hypothesis ( https://ep2015.europython.eu/conference/talks/whats-the-fuzz-all-about-randomized-data-generation-for-robust-unit-testing, https://ep2015.europython.eu/conference/talks/testing-with-two-failure-seeking-missiles-fuzzing-and-property-based-testing and somewhat https://ep2015.europython.eu/conference/talks/static-type-checking-is-dead-long-live-static-type-checking-in-python) , although I wasn't able to attend myself.", - "tag_categories": [ - "Testing", - "Testing" - ], - "emails": "david.maciver@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/property-based-testing-with-hypothesis", - "admin_type": "", - "companies": "" - }, - "622": { - "abstract_short": "The py.test tool presents a rapid and simple way to write tests for your Python code. This training gives a quick introduction with exercises into some distinguishing features. We\u2019ll do exercises where we get existing non-pytest test suites to run with pytest and discuss migration strategies. We\u2019ll finish with discussing topics and questions of participants related to their own test suites and usages.", - "sub_title": "", - "timerange": "2016-07-22 10:15:00, 2016-07-22 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@the_compiler", - "id": 622, - "speakers": "Florian Bruhin", - "title": "pytest - simple, rapid and fun testing with Python", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Test Driven Development (TDD)", - "Test Libraries (pyTest/node/...)", - "Testing" - ], - "abstract_long": [ - "The py.test tool presents a rapid and simple way to write tests for your Python code. This training gives a quick introduction with exercises into some distinguishing features. We\u2019ll do exercises where we get existing non-pytest test suites to run with pytest and discuss migration strategies. We\u2019ll finish with discussing topics and questions of participants related to their own test suites and usages.\r\n\r\nThis is the planned outline:\r\n\r\n- (30 minutes) pytest feature walkthrough: automatic test discovery, assert statement, modular parametrizable fixtures, 150 plugins\r\n\r\n- (60 minutes) pytest fixture mechanism: dependency injection, declaring and using function/module/session scoped fixtures, using fixtures from fixture functions, parametrizing fixtures. Exercises.\r\n\r\n- (30 minutes): running nose/unittest/trial/Django suites with pytest. Discussing advantages and limitations. Exercise with a select existing real-life open source project.\r\n\r\n- (30 minutes): Strategies for a) migrating to pytest b) using \u201cautouse\u201d fixtures in conjunction with XUnit-based setup/tearodwn methods. Exercise.\r\n\r\n- (30 minutes): open space for questions and interactively solving pytest/unittest integration problems on real-life problems as time permits." - ], - "abstract_extra": "I did the pytest training at EuroPython last year and it was quite popular with good feedback, so I thought I'd submit it again.", - "tag_categories": [ - "Testing", - "Testing", - "Testing" - ], - "emails": "europython.eu@the-compiler.org", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/pytest-simple-rapid-and-fun-testing-with-python-1", - "admin_type": "", - "companies": "" - }, - "439": { - "abstract_short": "Python allows system administrators to replace a wide set of tools like awk, perl and gnuplot.\r\n\r\nThe students will learn - thru various examples presented in ipython notebook - to speed up their everyday work and trasform their scripts in reusable libraries. Moreover they will see a large showcase of libraries and their usage.\r\n\r\nA Test Driven Deployment approach using Ansible will be shown.\r\n", - "sub_title": "One language to rule them all.", - "timerange": "2016-07-19 14:00:00, 2016-07-19 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@ioggstream", - "id": 439, - "speakers": "Roberto Polli", - "title": "Python for System Administrators", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "DevOps general", - "System Administration" - ], - "abstract_long": [ - "##Goal\r\nUse python to replace sysadmin tools like awk, perl and gnuplot and:\r\n\r\n - gather system data on different platforms (Linux, Windows, Mac);\r\n - parse them efficiently (\u00b5-benchmarks, defaultdict, re.compile, dstat plugins); \r\n - basic statistics and data visualization (distributions, correlation, scatter);\r\n - showcase of useful libraries (smtplib, ansible, mysql-utilities);\r\n - plan test driven deployments with Ansible\r\n\r\nTimings are [in the **draft** slides][2] \r\n\r\n## Methodology\r\nThe training is interactive, [jupyter notebooks stubs here][6] with [sources][1] and a [Docker image][4].\r\nStudents will be driven performing the exercises and sharing their results. A couple of volunteers will be prepared to support the students.\r\n\r\n## Prerequisites\r\nThe training is multi-platform, though focused on Linux + Python2.7:\r\n\r\n - Linux, Windows, Mac\r\n\r\nFeel free to contact me for any issue or question!\r\n\r\n \r\n [1]: https://github.com/ioggstream/python-course/tree/master/python-for-sysadmin\r\n \u00a0\r\n [2]: http://www.slideshare.net/ioggstream/python-for-system-administrators-59499282\r\n \u00a0\r\n [3]: https://github.com/ioggstream/python-course/tree/master/python-for-sysadmin/requirements.txt\r\n \u00a0\r\n [4]: https://registry.hub.docker.com/u/ioggstream/python-course/\r\n \u00a0\r\n [5]: https://github.com/ioggstream/python-course/tree/master/python-basic\r\n\r\n [6]: http://nbviewer.jupyter.org/github/ioggstream/python-course/tree/corso-interno/python-for-sysadmin/notebooks/" - ], - "abstract_extra": "EuroPython speaker since 2012.\r\nRed Hat Opensource Days Italy: 2011, 2015", - "tag_categories": [ - "DevOps", - "DevOps" - ], - "emails": "robipolli@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/python-for-system-administrators", - "admin_type": "", - "companies": "Par-Tec Spa" - }, - "643": { - "abstract_short": "Our cloud platform, Aldryn, is probably the world\u2019s biggest host of Docker-powered Django websites. \r\n\r\nWe work with Docker every day, and also with less-technical users of the platform, so we have built up a good understanding of how to introduce and explain the technology for practical purposes, and of the numerous and multiple difficulties that users of it can stumble across.\r\n\r\nWe want to share that experience, and help people take advantage of Docker from a Python/Django perspective.\r\n", - "sub_title": "A hands-on workshop to familiarise Django developers with key Docker concepts and techniques", - "timerange": "2016-07-22 14:00:00, 2016-07-22 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@EvilDMP, @stefanfoulis", - "id": 643, - "speakers": "Daniele Procida, Stefan Foulis", - "title": "So, what's all the fuss about Docker?", - "have_tickets": [ - false, - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Django", - "Docker" - ], - "abstract_long": [ - "Ou cloud platform, Aldryn, is probably the world\u2019s biggest host of Docker-powered Django websites. \r\n\r\nWe work with Docker every day, and also with less-technical users of the platform, so we have built up a good understanding of how to introduce and explain the technology for practical purposes, and of the numerous and multiple difficulties that users of it can stumble across.\r\n\r\nWe want to share that experience, and help people take advantage of Docker from a Python/Django perspective.\r\n\r\nWhat does Docker offer you, the Django developer? Even if you already know a bit about Docker, you\u2019re probably more familiar with it as a deployment tool, but in fact it offers some powerful advantages for the Python/Django developer too.\r\n\r\nThis is a hands-on workshop that also aims to clarify some key questions for the Django developer:\r\n\r\n- Why is Docker such a big deal?\r\n- What problems can Docker solve for me?\r\n- How does it work?\r\n- How can it enhance my development experience?\r\n\r\nIn the workshop we\u2019ll help install and configure Docker on your laptop (Linux/OS X/Windows), to have it working in a clear and manageable way.\r\n\r\nThen we\u2019ll step through setting up a Django project with Docker.\r\n\r\nIf we have time, we\u2019ll go on to show how Docker can help you move your project from development to deployment with minimum friction.\r\n", - "", - "", - "" - ], - "abstract_extra": "I will be running this training workshop together with a colleague or two from Divio.", - "tag_categories": [ - "Application Frameworks", - "DevOps" - ], - "emails": "daniele.procida@divio.ch, stefan@foulis.ch", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/so-whats-all-the-fuss-about-docker", - "admin_type": "", - "companies": "Divio" - }, - "616": { - "abstract_short": "Practice writing implementation-agnostic tests and using the test-driven reuse (TDR) development strategy, a natural extension of test-driven development (TDD), with [pytest-nodev][2] an Open Source test-driven search engine for Python code.\r\n\r\n[2]: http://pytest-nodev.readthedocs.org/en/stable/quickstart.html\r\n\r\nIncluding:\r\n\r\n- test-driven code search of functions and classes\r\n- test-suite validation, identification of weak tests\r\n- implementation-agnostic tests resilient to code refactoring", - "sub_title": "Writing good tests is more challenging and more rewarding than writing good code.", - "timerange": "2016-07-18 14:15:00, 2016-07-18 17:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@alexamici", - "id": 616, - "speakers": "Alessandro Amici", - "title": "Test-driven code search and the art of writing implementation-agnostic tests", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Test Driven Development (TDD)", - "Educational Track", - "Test Libraries (pyTest/node/...)", - "Testing", - "Best Practice" - ], - "abstract_long": [ - "This is the hands-on counterpart of the regular talk \"Test-driven code search and reuse coming to Python with pytest-nodev\", it is suggested to attend it first.\r\n\r\nWe will practice writing implementation-agnostic tests and using the test-driven reuse (TDR) development strategy, a natural extension of test-driven development (TDD), with [pytest-nodev][2] an Open Source test-driven search engine for Python code.\r\n\r\n[2]: http://pytest-nodev.readthedocs.org/en/stable/quickstart.html\r\n\r\nTDR aims to address the limits of usual keyword-based search by focusing on code behaviour and semantics instead. Developing a new feature in TDR starts with the developer writing the tests that will validate candidate implementations of the desired functionality. Before writing any functional code the tests are run against all functions and classes of all available projects. Any code passing the tests is presented to the developer as a candidate implementation for the feature.\r\n\r\nApplications will include:\r\n\r\n- test-driven code search of auxiliary functions and classes\r\n - full code reuse by adding dependencies\r\n - full code reuse by forking code samples\r\n - partial code reuse by integrating features and identifying problem corner cases\r\n- test-suite validation, identification of weak tests\r\n- using implementation-agnostic tests to make regular test-suites more resilient to code refactoring." - ], - "abstract_extra": "This is the hands-on counterpart of the regular talk [\"Test-driven code search and reuse coming to Python with pytest-nodev\"][1], it is suggested to attend it first, but it is not strictly needed.\r\n\r\n[1]: http://ep2016.europython.eu/conference/talks/test-driven-source-code-search-for-python-with-pytest-nodev\r\n", - "tag_categories": [ - "Testing", - ">>> Suggested Track", - "Testing", - "Testing", - "Best Practice and Use Cases" - ], - "emails": "a.amici@bopen.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/test-driven-code-search-and-the-art-of-writing-implementation-agnostic-tests", - "admin_type": "", - "companies": "B-Open Solutions srl" - }, - "397": { - "abstract_short": "Spend time using and abusing advanced features of Python for fun, with little\r\nconsideration of what is a good or bad idea.\r\n\r\nPython has fun and powerful language features: operator overriding, decorators,\r\nmagic methods, and metaclasses. Developers steer away\r\nfrom using these features to avoid creating code that is difficult to\r\nunderstand. *Don't be one of those developers!* Come on an adventure to push\r\nPython syntax to its limits. (We will also cover what each feature is *really* for.)", - "sub_title": "Learn advanced Python features by writing code that would get you fired.", - "timerange": "2016-07-21 10:15:00, 2016-07-21 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@judy2k", - "id": 397, - "speakers": "Mark Smith", - "title": "The Stupid Python Workshop", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Meta Classes", - "Python general", - "Educational Track", - "Mind Bending", - "Fun and Humor" - ], - "abstract_long": [ - "Spend time using and abusing advanced features of Python, for\r\nfun, with little consideration of what is a good or bad idea.\r\n\r\nDevelopers avoid using advanced language features because they don't want to\r\nwrite code that is difficult to understand. *Don't be one of those developers!*\r\nCome on an adventure to push Python syntax to its limits.\r\n\r\nThis workshop is aimed at intermediate Python developers. Attendees should be\r\ncomfortable with Python's syntax and should be intrigued or confused by:\r\nmagic methods; how `@property` works; and *what on Earth* a metaclass is.\r\nAttendees will learn how these things work, starting with the more\r\nstraightforward features. I'll introduce each concept assuming the attendees\r\nhave never used them before.\r\n\r\nWe'll be writing *silly* and *bad* things. We aim to understand how they work,\r\nnot whether they are a good idea, but in each case there will be a brief\r\ndiscussion of what each feature was really designed for. The exact contents are\r\nnot confirmed, but should include some or all of the following:\r\n\r\n* Override operators for more flexible syntax.\r\n* Using `__new__` for fun and profit.\r\n* Functions that behave differently depending on the values in the\r\n caller's scope.\r\n* Tacking extra methods on to classes we don't own.\r\n* Abuse of the descriptor protocol.\r\n* Messing with imports.\r\n* Decorators that do things decorators were never meant to do.\r\n* Write a metaclass and see if the world ends." - ], - "abstract_extra": "This workshop is based on a bunch of experiments I've partly published in my\r\n[GitHub Repo][stupid-python-tricks-repo]. It's basically a ridiculously\r\nexpanded, hands-on version of my [Lightning Talk][stupid-python-tricks-lightning-talk]\r\nat last year's EuroPython.\r\n\r\nI'm an experienced trainer and speaker. Two years ago I gave a talk on\r\n[command line programming][command-line-talk] at EuroPython, which has now been\r\nviewed 20000 times and seems to have been well received.\r\n\r\n[command-line-talk]: https://youtu.be/gR73nLbbgqY\r\n[stupid-python-tricks-repo]: https://github.com/judy2k/stupid-python-tricks\r\n[stupid-python-tricks-lightning-talk]: https://youtu.be/LQSWi3QJV8s?t=55m10s", - "tag_categories": [ - "Programming", - "Python", - ">>> Suggested Track", - "Everything Else", - "Everything Else" - ], - "emails": "pornbypost@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/the-stupid-python-workshop", - "admin_type": "", - "companies": "FanDuel" - }, - "511": { - "abstract_short": "uWSGI application server training from a simple web application hosting to an asynchronous task runner.", - "sub_title": "Learn to use and leverage the uWSGI power", - "timerange": "2016-07-18 10:15:00, 2016-07-18 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@ultrabug", - "id": 511, - "speakers": "Alexys Jacob", - "title": "uWSGI: the full stack application server", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "System Architecture", - "Infrastructure", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "ASYNC / Concurreny", - "System Administration" - ], - "abstract_long": [ - "Come and **learn how to use the uWSGI application server stack** with us.\r\n\r\nWe'll start from the basics to some more advanced usages :\r\n\r\n- what is uWSGI and why it can help you\r\n- what is the dynamic emperor mode and how it works\r\n- 1: run a simple Flask web application\r\n- 2: run a gevent based Flask web application\r\n- 3: run an external daemon using uWSGI\r\n- 4: create and run a task deferral application\r\n\r\nNote : we will provide and open source the Flask web application code we'll start from and iterate from there" - ], - "abstract_extra": "We at Numberly propose this training and propose that 2 of us run it.", - "tag_categories": [ - "DevOps", - "DevOps", - "Web", - "Programming", - "DevOps" - ], - "emails": "ultrabug@ultrabug.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/uwsgi-the-full-stack-application-server", - "admin_type": "", - "companies": "Numberly" - } - }, - "poster": { - "555": { - "abstract_short": "The EDARA code, currently in FORTRAN 77, is used at CERN to assess the environmental impact of airborne releases of radioactivity and will be significantly upgraded in the next years. Therefore a python prototype has been developed using the numba just-in-time compiler for the Monte Carlo simulation core routines and the pandas library for data analysis. This prototype lead to a much cleaner code base with comparable performance and increased flexibility, ensuring its long-term maintainability.", - "sub_title": "Leveraging powerful data analysis libraries with just-in-time compilation techniques", - "timerange": "2016-07-19 11:30:00, 2016-07-19 13:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 555, - "speakers": "Robert Froeschl", - "title": "A case study of porting a Fortran77 Monte Carlo simulation code to python&numba", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "All Other Programming Languages", - "Science Track", - "Case Study", - "Physics" - ], - "abstract_long": [ - "The EDARA code is used at CERN (European Council for Nuclear Research) to assess the environmental impact of airborne releases of radioactivity. Its development has started in the 1990ies and the code is written in FORTRAN 77.\r\nThe EDARA code will be significantly upgraded in the next years to meet the future legal requirement of including additional age groups in the impact assessments, to have the capability of choosing among several different atmospheric dispersion models and to be interfaced from other software packages.\r\nTherefore it has been decided to port the EDARA code to python and a prototype has been developed with the following characteristics:\r\n - The numba just-in-time compiler has been used for the computationally demanding Monte Carlo simulation core routines. Closures over just-in-time compiled functions have been used to implement function pointer like features for the atmospheric dispersion model selection.\r\n - The data analysis and reporting features have been implemented using the pandas library.\r\n - implementation.\r\n - An API is provided for scripting and interfacing from other codes.\r\nThis prototype demonstrates that the python/numba/pandas implementation leads to a much smaller and cleaner code base that the FORTRAN 77 implementation without incurring a significant performance penalty for the computationally demanding parts. It has substantially increased the flexibility and extensibility of the code and will ensure its long-term maintainability.\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Other Programming Languages", - ">>> Suggested Track", - "Case Study", - "Sciences" - ], - "emails": "robert.froeschl@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/a-case-study-of-porting-a-fortran77-monte-carlo-simulation-code-to-pythonnumba", - "admin_type": "", - "companies": "CERN, Geneva, Switzerland" - }, - "725": { - "abstract_short": "Shiv is Facebook layer 4 load balancer control plane built in Python, it is responsible for handling healthchecks, and configuration changes amongst other things and configure Linux IPVS to properly handle IP traffic.", - "sub_title": "", - "timerange": "2016-07-18 11:30:00, 2016-07-18 13:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@chantr4", - "id": 725, - "speakers": "Emmanuel Bretelle", - "title": "Building a billion user load balancer", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "System Architecture", - "Distributed Systems", - "Infrastructure", - "Open-Source", - "Scaling" - ], - "abstract_long": [ - "At Facebook, we make intensive use of Python in our infrastructure. Back in mid-2012, our engineers started to work on replacing the hardware load balancers that were powering Facebook with an in-house brew that would leverage Linux IPVS. Python was naturally chosen as the language to control, configure and manage the load balancers. By mid-2013, the whole of Facebook layer 4 load balancers in our datacenters had been replaced with Shiv and have been handling traffic ever since.\r\n\r\nAt the core of Shiv, we use libraries open-sourced by Facebook like Sparts [0], to set up a Thrift service, run and manage tasks, and gnlpy [1], to control IPVS via netlink. Add some python-fu to the mix and you can get a layer 4 load balancer that serves traffic for 1.65 billion people.\r\n\r\nIn this poster I will explain how our L4 load balancers are architected and how we use Python to leverage IPVS, setup individual VIPs and manage their backends, and make those load balancers operate in a fully automated way.\r\n\r\n\r\n[0] https://github.com/facebook/sparts\r\n\r\n[1] https://github.com/facebook/gnlpy\r\n\r\n[2] https://www.youtube.com/watch?v=MKgJeqF1DHw\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "DevOps", - "DevOps", - "Open Source", - "DevOps" - ], - "emails": "chantra@fb.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/building-a-billion-user-load-balancer", - "admin_type": "", - "companies": "Facebook" - }, - "732": { - "abstract_short": "TBD", - "sub_title": "An EEG-Based Control of a simulated four-wheeled Rover using ROS and Gazebo", - "timerange": "2016-07-18 10:30:00, 2016-07-18 12:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 732, - "speakers": "Enrico Carbognani", - "title": "Driving a Rover on the Moon with the Power of your Mind", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Robotics", - "Human-Machine-Interaction" - ], - "abstract_long": [ - "Humans have been dreaming for centuries about controlling their surroundings solely by the power of their minds. Nowadays, these dreams are slowly becoming reality due to a variety of inexpensive brain-computer interfaces (BCI) that detect neural activation patterns and support the control of devices by brain signals.\r\nIn this experimental setup, we intend to evaluate the performance of a commercial electroencephalographic (EEG) headset (Emotiv EPOC) in combination with a robotic simulation environment based on the Robot Operating System (ROS) and the Gazebo 3D simulator, and highlight the advantages and limitations of this approach. \r\nThe user will able to control one degree of freedom (yaw) of a four-wheeled rover (the CLEARPATH Robotics Husky) via the EPOC EEG and drive it trough simulated Moon terrains constructed using images and topographic (elevation) satellite data and integrated into Gazebo. \r\nWe are also planning to extend the experimental setup to include the use of Virtual Reality for the 3D visualization (this is subject to the successful integration of the Oculus Rift DK2 headset support in Gazebo which we are currently testing).\r\n" - ], - "abstract_extra": "In this simulation we will evaluate the performance of a commercial electroencephalographic (EEG) headset (Emotiv EPOC) in combination with a robotic simulation environment based on ROS and the Gazebo 3D simulator, and highlight the advantages and limitations of this approach. \r\nThe user will able to control one degree of freedom (yaw) of a four-wheeled rover via the EEG and drive it trough simulated Moon terrains.\r\nWe are also planning to possibly extend the experimental setup to include the use of Virtual Reality for the 3D visualization.", - "tag_categories": [ - "Hardware", - "Hardware" - ], - "emails": "enrico.carbognani@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/driving-a-rover-on-the-moon-with-the-power-of-your-mind", - "admin_type": "", - "companies": "" - }, - "550": { - "abstract_short": "Plone has, for the last 15 years, pushed the boundaries of Python-based CMSs. \r\nNow, in a world where JS frontends and delivery to multiple devices is key, we use the knowledge gained to get the **good** parts of this in a sensible, secure, developer- and integrator friendly, reliable Python backend.\r\n\r\n", - "sub_title": "Secure, social, responsive and scalable.", - "timerange": "2016-07-20 11:30:00, 2016-07-20 13:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@polyester", - "id": 550, - "speakers": "Paul Roeland", - "title": "Plone, the premier Python CMS and intranet", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Web General", - "Plone", - "Open-Source", - "CMS", - "Community" - ], - "abstract_long": [ - "Plone 5.1 brings more ways to integrate all that is needed for a modern website and intranet:\r\n\r\n - rapid theming independent of the backend, so designers can do what they do best\r\n - testable, standard ways of integrating JavaScript widgets and frameworks\r\n - integrate best-of-breed search\r\n - all with a solid, secure, Python backend\r\n - flexibility and TTW rapid prototyping, combined with CI and controlled development techniques\r\n\r\nPlone, now in its 15th year, has evolved together with Python. As shown in one of this year's [keynotes at PyCon][1], the relationship is still going strong, and there is much we can learn from one another.\r\n\r\n [1]: https://us.pycon.org/2016/events/keynotes/\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Web", - "Application Frameworks", - "Open Source", - "Web", - "Community" - ], - "emails": "paul.roeland@plone.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/plone-the-premier-python-cms-and-intranet", - "admin_type": "", - "companies": "Plone" - }, - "720": { - "abstract_short": "Many problems in statistics, finance, biology, pharmacology, physics, mathematics, economics, and chemistry involve the determination of the global minimum of multidimensional functions. The PyGenSA python module has been developed for generalized simulated annealing to process complicated non-linear objective functions with a large number of local minima.\r\n\r\n", - "sub_title": "An Efficient Global Optimization Python Module based on Generalized Simulated Annealing", - "timerange": "2016-07-19 10:30:00, 2016-07-19 12:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 720, - "speakers": "St\u00e9phane Cano", - "title": "PyGenSA: An Efficient Global Optimization for Generalized Simulated Annealing", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Science", - "Algorithms", - "Science Track", - "Open-Source", - "Scientific Libraries (Numpy/Pandas/SciKit/...)" - ], - "abstract_long": [ - "Many problems in statistics, finance, biology, pharmacology, physics, mathematics, economics, and chemistry involve the determination of the global minimum of multidimensional functions. Python modules from SciPy and PyPI for the implementation of different stochastic methods (i.e.: pyEvolve, SciPy optimize) have been developed and successfully used in the Python scientific community. Based on Tsallis statistics, the PyGenSA python module has been developed for generalized simulated annealing to process complicated non-linear objective functions with a large number of local minima. Testing PyGenSA, basinhopping and differential evolution (SciPy) on many standard test functions used in optimization problems shows that PyGenSA is more reliable in general and very efficient in particular for high dimension problems." - ], - "abstract_extra": "Pull request submitted to SciPy: \r\nhttps://github.com/scipy/scipy/pull/6197\r\n\r\nBranch corresponding to the pull request:\r\nhttps://github.com/sgubianpm/scipy.git\r\n", - "tag_categories": [ - "Sciences", - "Data Science", - ">>> Suggested Track", - "Open Source", - "Data Science" - ], - "emails": "stephane.john.cano@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pygensa-an-efficient-global-optimization-for-generalized-simulated-annealing", - "admin_type": "", - "companies": "Philip Morris R&D" - }, - "713": { - "abstract_short": "The IntelliCage\u2122 is a system for long-term behavioural experiments on cohorts of mice in social context. The robustness of IntelliCage data analysis may be improved with computer programs analysing the data in batch mode.\r\n\r\nTo simplify development of such programs, we developed the PyMICE library (RRID:nlx_158570). The library provides an user-friendly and intuitive API to access IntelliCage data, encouraging programming according to object-oriented and functional programming paradigms.", - "sub_title": "Facilitating reproducible research on mice behaviour.", - "timerange": "2016-07-20 10:30:00, 2016-07-20 12:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 713, - "speakers": "Jakub Kowalski", - "title": "PyMICE - a library for analysis of IntelliCage\u2122 data", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Science", - "Python general", - "Science Track", - "Open-Source", - "Scientific Libraries (Numpy/Pandas/SciKit/...)" - ], - "abstract_long": [ - "Life sciences are suffering badly from a \"research reproducibility crisis\". One of possible countermeasures is automation of data acquisition and analysis. \r\n\r\nAutomated data acquisition systems facilitate standardization of conditions and measurements by minimization of human disturbance. One of such systems is IntelliCage\u2122, dedicated for long-term behavioural experiments on cohorts of mice in social context.\r\n\r\nThe robustness of data analysis may be improved with automated data analysis workflows (ADAWs): computer programs analysing the data in batch mode. Also, the source code of such program is an unequivocal, formal specification of the performed analysis. The only drawback of such approach is a significant effort and technical knowledge necessary to define an ADAW.\r\n\r\nOur goal was to simplify development of ADAWs and to shift the developer's focus from technical details (like data format) to the analysis itself. To meet the goal, we developed the PyMICE library (resource identifier: RRID:nlx_158570). The library provides an user-friendly and intuitive API to access IntelliCage data, encouraging development of ADAWs according to object-oriented and functional programming paradigms.\r\n\r\n**Acknowledgements**\r\nProject sponsored by Symfonia NCN grant: UMO-2013/08/W/NZ4/00691\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "My experience is mostly from presenting posters at neuroscientific conferences.", - "tag_categories": [ - "Sciences", - "Python", - ">>> Suggested Track", - "Open Source", - "Data Science" - ], - "emails": "j.kowalski@nencki.gov.pl", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pymice-library", - "admin_type": "", - "companies": "" - }, - "733": { - "abstract_short": "Python is the most used language by production engineers , and the second most used by Facebook infrastructure teams. We use it in domains such as infrastructure management (network/server provisioning, service turnup, auto-remediation of server and services failures), platform services (package deployment, job scheduling, TFTP and kernel upgrades), service configuration management or operational tooling.\r\n", - "sub_title": "", - "timerange": "2016-07-19 14:45:00, 2016-07-19 16:25:00", - "sub_community": "", - "duration": 180, - "twitters": "@chantr4", - "id": 733, - "speakers": "Emmanuel Bretelle", - "title": "Python in Production Engineering", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Operations", - "Infrastructure", - "Distributed Systems", - "Scaling" - ], - "abstract_long": [ - "Python is the most used language by production engineers [0], and the second most used by Facebook infrastructure teams. We use it in domains such as infrastructure management (network/server provisioning, service turnup, auto-remediation [1] of server and services failures), platform services (package deployment, job scheduling, TFTP [2] and kernel upgrades), service configuration management [3] or operational tooling.\r\n\r\nProduction engineers working on those services will be attending Europython 16 and happy to answer your questions on how Python helps us build service quickly and enables us to move fast and scale.\r\n\r\n\r\n[0] https://code.facebook.com/posts/1040181199381023/python-in-production-engineering/\r\n\r\n[1] https://www.facebook.com/notes/facebook-engineering/making-facebook-self-healing/10150275248698920/\r\n\r\n[2] https://ep2016.europython.eu/conference/talks/fbtftp-facebooks-python3-framework-for-tftp-servers\r\n\r\n[3] https://us.pycon.org/2016/schedule/presentation/2059/" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "DevOps", - "DevOps", - "DevOps" - ], - "emails": "chantra@fb.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/python-in-production-engineering", - "admin_type": "", - "companies": "Facebook" - }, - "694": { - "abstract_short": "Juju is a devops tool for automated deployments, with full stack\r\nservice modelling and orchestration, in the cloud. Fully\r\ncontrollable with Python through \"charms\".", - "sub_title": "Devops distilled: deploy and orchestrate your services with Juju and Python", - "timerange": "2016-07-20 14:45:00, 2016-07-20 16:25:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 694, - "speakers": "Michael Foord", - "title": "To the Clouds: Service Orchestration and Cloud Deployment with Juju", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Public Cloud (AWS/Google/...)", - "Go-Lang", - "Linux", - "DevOps general", - "OpenStack" - ], - "abstract_long": [ - "Juju is a devops tool for automated deployments, with full stack\r\nservice modelling and orchestration, in the cloud. Fully\r\ncontrollable with Python through \"charms\".\r\n\r\nAbstract\r\n\r\nDo you deploy your Python services to Amazon EC2, or to Openstack,\r\nor even to HP cloud, joyent or Azure? Do you want to - without being\r\ntied into any one of them? What about local full stack deployments\r\nwith lxc or kvm containers?\r\n\r\nEven if you're convinced you don't need \"the cloud\" because you\r\nmanage your own servers, amazing technologies like Private clouds\r\nand MaaS, for dynamic server management on bare metal, may change\r\nyour mind.\r\n\r\nFed up with the cloud hype? Let me rehabilitate the buzzword! (A bit\r\nanyway.)\r\n\r\nA fully automated cloud deployment system is essential for rapid\r\nscaling, but it's also invaluable for full stack testing on\r\ncontinuous integration systems. Even better, your service deployment\r\nand infrastructure can be managed with Python code? (Devops distilled)\r\n\r\nTreat your servers as cattle not as pets, for service oriented\r\nrepeatable deployments on your choice of back-end. Learn how service\r\norchestration is a powerful new approach to deployment management,\r\nand do it with Python! If any of this sounds interesting then Juju\r\nmaybe for you!\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Other Programming Languages", - "Operating Systems", - "DevOps", - "DevOps" - ], - "emails": "fuzzyman@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/juju", - "admin_type": "", - "companies": "Canonical" - }, - "627": { - "abstract_short": "The BBC micro:bit is a small programmable device. It is being given, this year, to every 11 to 12-year-old child in the UK. One of the programming languages available for the micro:bit is Python. This poster will look at using Python, on the micro:bit, in informal learning environments. It is based on a six-month, in residence, project at a library.", - "sub_title": "Introducing Python and the Internet of Things, to the next generation, through libraries and clubs.", - "timerange": "2016-07-18 14:45:00, 2016-07-18 16:25:00", - "sub_community": "", - "duration": 180, - "twitters": "@corinnewelsh", - "id": 627, - "speakers": "Corinne Welsh", - "title": "Using Python on the BBC micro:bit in informal learning environments", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Education", - "Teaching", - "MicroPython", - "Internet of Things (IoT)", - "Community" - ], - "abstract_long": [ - "This year, in an aspirational project led by the BBC, every 11 to 12-year-old child in the UK is being given a small programmable device. The BBC micro:bit has LEDs, input buttons, an accelerometer, a compass, input/output pins, power supply pins, and Bluetooth connectivity. It is supported by four different programming languages, one of which is Python.\r\n\r\nSchools are central in delivering the project: the micro:bits are being distributed, through schools, to Year 7 pupils. However, the vision of the micro:bit project is that the devices are given directly to children. They are owned by the children themselves to do with as they wish.\r\n\r\nI am involved in a six-month project based in a London borough library. The project's aim is to develop support to use Python, on the micro:bit, in the context of informal learning spaces. These include extra-curricular STEM clubs, libraries, and Saturday coding clubs.\r\n\r\nMy poster will be a reportage of the project. It will cover the challenges of introducing Python for the micro:bit and the benefits Python brings. I will also consider some wider issues, such as the role of gender, in the roll-out of the micro:bit." - ], - "abstract_extra": "I will bring a couple of micro:bits, with me, to accompany the poster presentation and discussion with a demonstration.", - "tag_categories": [ - "Educational", - "Everything Else", - "Python", - "Hardware", - "Community" - ], - "emails": "corinne@lilycat.co.uk", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/using-python-on-the-bbc-microbit-in-informal-learning-environments", - "admin_type": "", - "companies": "JustOutsource.it" - } - }, - "helpdesk": { - "731": { - "abstract_short": "We'll try to help everybody, especially new comers in Python, to understand better the asynchronous pattern, and AsyncIO in general.\r\n\r\nDon't hesitate to ask us any question, especially if you think it's a stupid question: No stupid questions, only stupid answers.", - "sub_title": "If you're curious to write code with AsyncIO but you don't know how to start or you have issues", - "timerange": "2016-07-18 10:30:00, 2016-07-18 12:00:00, 2016-07-18 14:15:00, 2016-07-18 17:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@GMLudo", - "id": 731, - "speakers": "Ludovic Gasc", - "title": "AsyncIO support for new comers", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 2", - "tags": [ - "Python 3", - "Databases", - "Architecture", - "APIs", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "We'll try to help everybody, especially new comers in Python, to understand better the asynchronous pattern, and AsyncIO in general.\r\n\r\nDon't hesitate to ask us any question, especially if you think it's a stupid question: No stupid questions, only stupid answers.\r\n\r\nExample of questions we'll try to answer, it's a compilation of questions we'll already received:\r\n\r\n- Where is the 101 of AsyncIO ?\r\n- When I can use AsyncIO ?\r\n- Why to add async/await keywords ? It's only aliases of @asyncio.coroutine/yield from ?\r\n- I don't understand the difference between a task and a coroutine, could you explain me ?\r\n- When I need to add await before a call function ?\r\n- How to spot quickly the code can be asynchronous with synchronous code ?\r\n- How I can use synchronous libraries in my asynchronous code ?\r\n- How to architecture my source code with AsyncIO ?\r\n- I don't understand the internals of AsyncIO with event loop and how yield from works internally. (Spoiler alert: To start to code with Python itself, did you understand before the CPython's internals ?)\r\n - Why another asynchronous network framework ? Need already covered by Twisted/Tornado/Gevent/...\r\n- Why some libraries need to be reimplemented, like aiohttp or aiopg ?\r\n- Now that Django channels exist, AsyncIO is useless, isn't it ?\r\n- What's the difference between AsyncIO and curio ?" - ], - "abstract_extra": "We'll try to be the most pedagogical as possible with some concrete examples of source code with a laptop.", - "tag_categories": [ - "Python", - "Databases", - "Programming", - "Web", - "Programming" - ], - "emails": "gmludo@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/asyncio-support-for-new-comers", - "admin_type": "", - "companies": "Eyepea/ALLOcloud" - }, - "721": { - "abstract_short": "Helpdesk will help people to know more about code analysis tools that they should be using in their projects for better, clean code. The aim is to get people familiar with static code analysis tool and how to use coala to make linting and other analysis super easy in their projects. ", - "sub_title": "Our goal is to make code analysis easy while remaining completely modular, extensible and language i", - "timerange": "2016-07-20 10:30:00, 2016-07-20 12:00:00, 2016-07-20 14:00:00, 2016-07-20 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@karansharma1295", - "id": 721, - "speakers": "Karan Sharma", - "title": "Code analysis made super easy.", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 2", - "tags": [ - "Beginners", - "Clean Code", - "Open-Source", - "Static Analysis", - "Python Software Foundation (PSF)" - ], - "abstract_long": [ - "The helpdesk will get the audience acquainted with code analysis tools and how coala helps to make this whole process of static code analysis easier. The goal of the helpdesk will be to get the user setup coala and demonstrate live on how to use it on projects etc, configure it, how to be able to customise it. coala helps to manage a lot of different tools together in one single configuration file. Also, as coala is an ever growing community of happy developers, I will assist them to get acquainted with how to contribute to coala and solve baby issues at Github to mark their first Open source contribution if they are interested in doing that. \r\n" - ], - "abstract_extra": "I've been contributing to coala since March 2016 and I am a Google Summer of Code student, working with them this year. \r\n\r\nMy code commits which have been accepted at upstream repo at coala are https://github.com/coala-analyzer/coala-bears/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Amr-karan+", - "tag_categories": [ - "Educational", - "Educational", - "Open Source", - "Everything Else", - "Community" - ], - "emails": "karansharma1295@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/code-analysis-made-super-easy", - "admin_type": "", - "companies": "coala" - }, - "668": { - "abstract_short": "Chat with the core developers about how to extend django CMS, integrate your own apps seamlessly or brainstorm a hard-to-solve problem.", - "sub_title": "Talk about your django CMS project with the core devs", - "timerange": "2016-07-21 10:30:00, 2016-07-21 12:00:00, 2016-07-21 14:00:00, 2016-07-21 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@stefanfoulis", - "id": 668, - "speakers": "Stefan Foulis", - "title": "django CMS", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "Web General", - "Django", - "CMS" - ], - "abstract_long": [ - "Chat with the core developers about how to extend django CMS or how to integrate your own apps seamlessly. Lets talk about your plugins, apphooks, toolbar extensions, content-creation wizards, menu extensions or anything else django CMS related.\r\nWe can brainstorm a hard-to-solve problem you've encountered. Maybe you have the nagging feeling there ought to be simpler way to solve something you've done in a project. We're also happy to discuss feedback or ideas for something that could be added to django CMS.\r\nBring your code. Lets chat!" - ], - "abstract_extra": "My colleague has also submitted a matching training which I'll be part of: https://ep2016.europython.eu/conference/talks/application-integration-with-django-cms\r\n\r\nStefan Foulis' previous talk stuff:\r\n- various talks at local meetups in Z\u00fcrich, Switzerland\r\n- \"Local development with docker\" talk at DjangoCon 2015 (http://2015.djangocon.eu/talks/ https://vimeo.com/133154447 )\r\n- \"Advanced django CMS\" workshop at DjangoCon 2015 (http://2015.djangocon.eu/event/advanced-django-cms/)\r\n", - "tag_categories": [ - "Web", - "Application Frameworks", - "Web" - ], - "emails": "stefan@foulis.ch", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/django-cms", - "admin_type": "", - "companies": "Divio" - }, - "553": { - "abstract_short": "Tips, best practices, health check and a general good workout for your documentation. There is both science, and art, to writing and maintaining good docs. And, as your docs are your first point of contact for new community members, there is every reason to make it the best you can.\r\n\r\nWhile this helpdesk won't *write* docs for you, we will give you a solid headstart in making them better. ", - "sub_title": "A health-check and excercise session for your docs", - "timerange": "2016-07-18 10:30:00, 2016-07-18 12:00:00, 2016-07-18 14:15:00, 2016-07-18 15:45:00", - "sub_community": "", - "duration": 180, - "twitters": "@polyester", - "id": 553, - "speakers": "Paul Roeland", - "title": "DOCtors are in!", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "Communication", - "Teaching", - "Documentation", - "DevOps general", - "Community" - ], - "abstract_long": [ - "There's a whole community, and a wealth of experience, that aim to bring the science, the art, and the fun of documentation to a higher level. Come learn some best practices on how to keep your docs maintainable, testable, deployable and up to date.\r\n\r\n\"Give me your tired, your poor,\r\nYour huddled docs yearning to breathe free,\r\nThe wretched refuse of your teeming shore.\r\nSend these, the homeless, tempest-tost to me,\r\nI lift my lamp beside the golden door!\"" - ], - "abstract_extra": "We (Mikey Ariel, Maciej Szlosarczyk and me) held a similar session last year in Bilbao, which was well visited and fun to do.\r\n\r\nAs I'm traveling I haven't had time to contact them to see if they had already submitted a Helpdesk proposal. So there may be a double proposal; just wanted to get it in before the deadline.", - "tag_categories": [ - "Community", - "Everything Else", - "Programming", - "DevOps", - "Community" - ], - "emails": "paul.roeland@plone.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/doctors-are-in", - "admin_type": "", - "companies": "Plone" - }, - "594": { - "abstract_short": "Come ask me anything about Elasticsearch or associated technologies. We can talk design/use cases/integrations and/or try and debug your problems.", - "sub_title": "Ask Me Anything about deploying/architecting/scaling", - "timerange": "2016-07-20 10:30:00, 2016-07-20 12:00:00, 2016-07-20 14:00:00, 2016-07-20 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@honzakral", - "id": 594, - "speakers": "Honza Kr\u00e1l", - "title": "Elasticsearch and the Elastic Stack", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "Debugging", - "Architecture", - "Best Practice", - "Scaling", - "Elastic Search" - ], - "abstract_long": [ - "Elasticsearch and other parts of the Elastic stac (beats, logstash and kibana) are becoming more popular for many different use cases - from pure search all the way to log storage and analysis.\r\n\r\nIn case you have any questions, problems or suggestions, come talk to me." - ], - "abstract_extra": "I have been working for the company behind elasticsearch for over three years, mostly developing the Python client but also doing support, training and consulting for our paying customers. I would love to help the members of the Python community to be successful when using elasticsearch.", - "tag_categories": [ - "Testing", - "Programming", - "Best Practice and Use Cases", - "DevOps", - "Databases" - ], - "emails": "honza.kral@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/elasticsearch-and-the-elastic-stack", - "admin_type": "", - "companies": "Elastic" - }, - "740": { - "abstract_short": "> \u201cMake things as simple as possible, but not simpler.\u201d \u2014 Albert Einstein\r\n> \u201cPremature optimization is the root of all evil.\u201d \u2014 Donald E. Knuth\r\n\r\nWe've all heard that Python is slow and that we have to use a compiled language to get the maximum performance. While this is true to a certain extent, it is also true that we can work out certain bits of our Python code and gain some microseconds. Bring your code and let's try to make it as fast as possible together!", - "sub_title": "Use profiling techniques and certain Python libraries to optimize your code", - "timerange": "2016-07-19 10:30:00, 2016-07-19 12:00:00, 2016-07-19 14:00:00, 2016-07-19 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@astrojuanlu", - "id": 740, - "speakers": "Juan Luis Cano", - "title": "Make Python as fast as possible, but not faster", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 2", - "tags": [ - "Performance", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Code Analysis" - ], - "abstract_long": [ - "> \u201cMake things as simple as possible, but not simpler.\u201d \u2014 Albert Einstein\r\n> \u201cPremature optimization is the root of all evil.\u201d \u2014 Donald E. Knuth\r\n\r\nIt's often said that Python is necessarily slow and that we have to write the critical parts of our program in a compiled language to get the maximum performance. While this is true to a certain extent, it is also true that we can work out certain bits of our Python code and gain some microseconds, leaving the rewriting of our program in C++ or Fortran as a last resource.\r\n\r\nBring your slow Python algorithm and we will use profiling, memory profiling, numba and a bit of common sense to try and make it run as fast as possible! Sometimes we will be able to make some suggestions of new algorithms or architectures, other times we will be able to spot the single line that consumes 90 % of our running time, but either way we will both learn about software performance a lot.\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Data Science", - "Programming" - ], - "emails": "juanlu001@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/make-python-as-fast-as-possible-but-not-faster", - "admin_type": "", - "companies": "Indizen" - }, - "514": { - "abstract_short": "Design or usage questions of mongoDB from python ? Come over and ask !", - "sub_title": "Use cases and pymongo helpdesk", - "timerange": "2016-07-19 10:30:00, 2016-07-19 12:00:00, 2016-07-19 14:00:00, 2016-07-19 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@ultrabug", - "id": 514, - "speakers": "Alexys Jacob", - "title": "Python and mongoDB", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "NoSQL", - "Use Case", - "MongoDB", - "Best Practice" - ], - "abstract_long": [ - "The Numberly DevOps team members will help and share their experience in using mongoDB on python applications.\r\n\r\nCome with your code or design questions and we'll do our best to help you find the best answers and test them live !\r\n\r\n_The Numberly team has been running mongoDB in production for more than 5 years now and used it on various use cases, from simple web applications to real time analytics serving thousands transactions per second._\r\n\r\n" - ], - "abstract_extra": "This is not a personal proposal but a team one from Numberly, at least 2 of us will be made available for this helpdesk (myself not included).", - "tag_categories": [ - "Databases", - "Best Practice and Use Cases", - "Databases", - "Best Practice and Use Cases" - ], - "emails": "ultrabug@ultrabug.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/python-and-mongodb", - "admin_type": "", - "companies": "Numberly" - }, - "416": { - "abstract_short": "I", - "sub_title": "YAML libraries are not always the most developer friendly, stop by if you have any questions.", - "timerange": "2016-07-22 10:30:00, 2016-07-22 12:00:00, 2016-07-22 14:00:00, 2016-07-22 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 416, - "speakers": "Anthon van der Neut", - "title": "YAML is one of the more human friendly data serialisation formats", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "Data", - "Structures" - ], - "abstract_long": [ - "There are several human parsable data serialisation possibilities but there are only a handful that are human friendly. Arbitrarily human friendly means that:\r\n - you can include comments in your format to explain things to other readers\r\n - it means what you think that it means\r\n - no need to quote things that are clear without\r\n - visual nesting through indentation, not through lisp like ( (( (()()))) or \r\n- easy to edit without breaking things (trailing comma's anyone).\r\n\r\nYAML supports most of the above, but the \"standard\" YAML library would \r\n- rearrange mapping (dictionary) entries on dumping making comparison using diff difficult\r\n- drop comments when reading data to YAML, so dumping leads to data loss for humans\r\n- was not updated for YAML 1.2 published in 2009\r\nby upgrading the standard library to deal with these issues in the increasingly often used ruamel.yaml round-trip library, in-dept knowledge was built up both on how to effectively use YAML as well on how to do some unplanned for things in YAML. \r\nPlease stop by with any questions you have beginner, or advanced on how to make the use of YAML in you project not only more human-friendly, but also more developer friendly. \r\n(You're also welcome if you don't understand how someone can like to work with JSON)\r\n\r\n" - ], - "abstract_extra": "I have professionally supported many developers that worked (in)directly for me or for other departments in the organisation I was employed.\r\n\r\nI like helping out people and online I do so both on StackOverflow (primarily\r\nanswering [YAML related questions][1], on [Unix&Linux][2] and [Ebooks][3] StackExchange\r\n\r\n [1]: http://stackoverflow.com/search?q=user%3A1307905+[yaml]+is%3Aanswer\r\n [2]: http://unix.stackexchange.com/users?tab=Reputation&filter=all\r\n [3]: http://ebooks.stackexchange.com/users?tab=Reputation&filter=all\r\n", - "tag_categories": [ - "", - "" - ], - "emails": "a.van.der.neut@ruamel.eu", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/yaml-is-one-of-the-more-human-friendly-data-serialisation-format", - "admin_type": "", - "companies": "RUAMEL bvba" - } - }, - "interactive": { - "572": { - "abstract_short": "Technical debt lives among us regardless if we are in the services business or building products. \r\nWe discuss about it, we try to fix it or live with it, but can we actually prevent it? \r\nMy reason for discussing this openly is because once it is there you do not only deal with the technical debt itself but also with the interest you must pay.\r\nWhat qualifies as debt? What qualifies as interest? How do we manage it? Is it really unavoidable?", - "sub_title": "", - "timerange": "2016-07-18 14:15:00, 2016-07-18 15:15:00", - "sub_community": "", - "duration": 60, - "twitters": "@mircea_zetea", - "id": 572, - "speakers": "Mircea Zetea", - "title": "Managing technical debt", - "have_tickets": [ - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Management", - "Best Practice", - "Business Track" - ], - "abstract_long": [ - "Technical debt lives among us regardless if we are in the services business or building products. \r\nWe discuss about it, we try to fix it or live with it, but can we actually prevent it? \r\nMy reason for discussing this openly is because once it is there you do not only deal with the technical debt itself but also with the interest you must pay.\r\nMy reason for discussing this openly is because once it is there you do not only deal with the technical debt itself but also with the interest you must pay. Comparing the two, probably the highest cost that we see is with the interest.\r\n As our code base grows and our deadlines get tougher we tend to forget about the cost our project will have to pay for every functionality that we implement in a hurry, for which we \u201cforget\u201d about tests or for which we write in a comment \u201cthis needs to be refactored\u201d or \u201cthis is a temporary solution. refactor later\u201d.\r\nWhat qualifies as debt? What qualifies as interest? How do we manage it? At what levels in our projects can we see the debt and the interest? Is it really unavoidable? " - ], - "abstract_extra": "", - "tag_categories": [ - "Development Methods", - "Best Practice and Use Cases", - ">>> Suggested Track" - ], - "emails": "mircea@zetea.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/managing-technical-debt", - "admin_type": "", - "companies": "Spyhce" - }, - "510": { - "abstract_short": "Sharing our worst production experiences and the tricks, good practices and code we developed to address them.", - "sub_title": "Let's share our worst experiences and tricks we used to avoid them", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 60, - "twitters": "@ultrabug, @r4mnes", - "id": 510, - "speakers": "Alexys Jacob, Guillaume Gelin", - "title": "Planning for the worst", - "have_tickets": [ - true, - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "The Answer to Life the Universe and Everything Else", - "Use Case", - "Best Practice", - "Mind Bending", - "failures/mistakes" - ], - "abstract_long": [ - "This talk is about sharing our experience about how we handled production problems on all levels of our applications.\r\n\r\nWe'll begin with common problems, errors and failures and dig on to more obscure ones while sharing concrete tips, good practices and code to address them !\r\n\r\nThis talk will make you feel the warmth of not being alone facing a problem :)", - "", - "", - "" - ], - "abstract_extra": "Can also be a \"standard\" talk, I just wanted to try the idea of having it more interactive with the audience because a lot of people can relate to quick a lot of problems.\r\n\r\nThere will be slides to guide the conversation but it will be open to everyone to share their experience.", - "tag_categories": [ - "Everything Else", - "Best Practice and Use Cases", - "Best Practice and Use Cases", - "Everything Else", - "Best Practice and Use Cases" - ], - "emails": "ultrabug@ultrabug.net, ramnes@1000mercis.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/planning-for-the-worst", - "admin_type": "", - "companies": "Numberly" - }, - "712": { - "abstract_short": "First we will talk about coding interviews: How to prepare and\r\nwhat to expect. Then, we will cover software engineering resumes, typical coding\r\nquestions and tasks that companies usually give to candidates.\r\n\r\nWe end with a discussion on long-term career paths\r\nof software engineers. The hypothesis is that true engineering careers\r\nexist at maybe Google but normal firms unfortunately only allow growth by\r\nforcing engineers into management.", - "sub_title": "Going from junior to senior and from interviewee to interviewer", - "timerange": "2016-07-19 14:00:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 60, - "twitters": "@", - "id": 712, - "speakers": "Iwan Gulenko", - "title": "Programming interviews and careers", - "have_tickets": [ - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "General", - "Use Case", - "Business", - "Best Practice", - "failures/mistakes" - ], - "abstract_long": [ - "First we will talk about coding interviews: How to prepare and\r\nwhat to expect. Then, we will cover software engineering resumes, typical coding\r\nquestions and tasks that companies usually give to candidates.\r\n\r\nWe end with a discussion on long-term career paths\r\nof software engineers. The hypothesis is that true engineering careers\r\nexist at maybe Google but normal firms unfortunately only allow growth by\r\nforcing engineers into management." - ], - "abstract_extra": "", - "tag_categories": [ - "", - "Best Practice and Use Cases", - "", - "Best Practice and Use Cases", - "Best Practice and Use Cases" - ], - "emails": "iwan@gulenko.ch", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/coding-interviews-what-to-expect-and-how-to-prepare", - "admin_type": "", - "companies": "" - }, - "697": { - "abstract_short": "EuroPython Meeting of the Python Software Foundation\r\n\r\nMembers and non-members are invited to this EuroPython meeting of the PSF! Please join us for some updates from the PSF board.", - "sub_title": "", - "timerange": "2016-07-20 15:45:00, 2016-07-20 16:45:00", - "sub_community": "", - "duration": 60, - "twitters": "@NaomiCeder", - "id": 697, - "speakers": "Naomi Ceder", - "title": "PSF Meeting", - "have_tickets": [ - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Conferences and Meet-Ups", - "Python Software Foundation (PSF)", - "Community" - ], - "abstract_long": [ - "EuroPython Meeting of the Python Software Foundation\r\n\r\nMembers and non-members are invited to this EuroPython meeting of the PSF! Please join us for some updates from the PSF board.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Community", - "Community", - "Community" - ], - "emails": "naomi.ceder@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/psf-meeting-2016", - "admin_type": "", - "companies": "Trans*Code" - }, - "639": { - "abstract_short": "This interactive game teaches the basic of ip and ethernet protocol using just paper and pens, and become very popular with our interns and in our LUG meetings. \r\n\r\nParticipants are divided in teams, simulating simple network infrastructures (eg. computers connected by an hub and a switch).\r\n", - "sub_title": "Learn IP protocol basics with an interactive game.", - "timerange": "2016-07-18 16:00:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 60, - "twitters": "@ioggstream", - "id": 639, - "speakers": "Roberto Polli", - "title": "The Router Game", - "have_tickets": [ - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Internet of Things (IoT)" - ], - "abstract_long": [ - "This interactive game teaches the basic of ip and ethernet protocol using just paper and pens, and become very popular with our interns and LUG meetings. \r\n\r\nParticipants are divided in teams, simulating simple network infrastructures (eg. computers connected by an hub and a switch).\r\n\r\nEvery player has a role: a PC or mobile phone, an HUB, a Switch, a Router, and must communicate with the others following the associate specification (eg. an hub should broadcast message to every neighbour, a switch should populate the mac address table, ...)\r\n\r\nThe team which is faster in exchanging messages wins.\r\n\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Hardware" - ], - "emails": "robipolli@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/the-router-game", - "admin_type": "", - "companies": "Par-Tec Spa" - } - }, - "talk": { - "729": { - "abstract_short": "Creating 3D model for 3D printing is pretty hard for non 3D CG designer or non 3D CAD engineer. But recently, so many 3D software (like Maya, Blender, Fusion360 and so on) provides Python API to manipulate 3D data in those software. So in this session, I will introduce Python API of Blender and Autodesk Fusion 360 and share some basic knowledge and tips when you use these API. I will also introduce my past projects with those APIs.", - "sub_title": "Generate 3D model for 3D printing using Python API proveded by 3D softwares", - "timerange": "2016-07-22 14:00:00, 2016-07-22 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@taxpon", - "id": 729, - "speakers": "Takuro Wada", - "title": "3D Modeling and Printing by Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Developing with Python", - "3D", - "Blender" - ], - "abstract_long": [ - "### Abstract\r\n\r\n- Creating 3D model for 3D printing is pretty hard for **non 3D CG designer or non 3D CAD \r\nengineer**.\r\n\r\n- Recently, so many 3D software (like Maya, Blender, Fusion360 and so on) provides Python API to manipulate 3D data in those software. Once you learn these Python API, you can generate 3D model by Python and 3D print those generated model.\r\n\r\n- In this session, I will introduce Python API of some softwares and share some basic knowledges and tips when you use these API. I will also introduce my past projects with those APIs and my products.\r\n\r\n![][1]\r\n\r\n### Goal\r\n- Introduce 3D model generation and 3D printing with Python to audience\r\n\r\n### After this session, you will\r\n- Acquire the basic knowledge of 3D data structure\r\n- Understand basic concepts of Python API provided by 3D softwares\r\n- Acquire knowledge to start your 3D model generation project by Python\r\n- Know past 3D model generation projects by Python\r\n\r\n### Prerequisite\r\n- Basic knowledge of Python\r\n- Interests for 3D modeling and 3D printing by Python\r\n\r\n [1]: http://takuro.ws/img/euro_python.jpg\r\n" - ], - "abstract_extra": "### Blog articles about 3D manipulation by Python\r\n- Articles about 3D modeling for 3D printing by Python (only Japanese)\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-1][1]\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-2][2]\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-3][3]\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-4][4]\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-5][5]\r\n - Sample codes\r\n - [https://github.com/kabuku/blender-python][6]\r\n\r\n- 3D model and Minecraft (only Japanese)\r\n - [http://www.kabuku.co.jp/developers/blender2minecraft-by-python][7]\r\n - Source code\r\n - [https://github.com/taxpon/b2mine][8]\r\n\r\n### Created library to manipulate 3D model\r\n- [Pymesh][9]\r\n- [Openpyscad][10]\r\n\r\n### Presentation Slides\r\n- Past talks\r\n - [http://www.slideshare.net/TakuroWada/3d-modeling-by-python-scripts][11]\r\n - [http://www.slideshare.net/TakuroWada/3d-printing-by-python-scripts-and-blender-54557221][12]\r\n\r\n [1]: https://www.rinkak.com/jp/blog/blender-python-modeling-1\r\n [2]: https://www.rinkak.com/jp/blog/blender-python-modeling-2\r\n [3]: https://www.rinkak.com/jp/blog/blender-python-modeling-3\r\n [4]: https://www.rinkak.com/jp/blog/blender-python-modeling-4\r\n [5]: https://www.rinkak.com/jp/blog/blender-python-modeling-5\r\n [6]: https://github.com/kabuku/blender-python\r\n [7]: http://www.kabuku.co.jp/developers/blender2minecraft-by-python\r\n [8]: https://github.com/taxpon/b2mine\r\n [9]: https://github.com/taxpon/pymesh\r\n [10]: https://github.com/taxpon/openpyscad\r\n [11]: http://www.slideshare.net/TakuroWada/3d-modeling-by-python-scripts\r\n [12]: http://www.slideshare.net/TakuroWada/3d-printing-by-python-scripts-and-blender-54557221", - "tag_categories": [ - ">>> Suggested Track", - "Everything Else", - "Everything Else" - ], - "emails": "taxpon@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/3d-modeling-and-printing-by-python", - "admin_type": "", - "companies": "Kabuku Inc." - }, - "509": { - "abstract_short": "The Pymongo driver is one of MongoDB\u2019s most popular driver interfaces for\r\nconnecting to MongoDB. But developers rarely look under the cover to see\r\nwhat\u2019s happening inside the driver.\r\nBy having a deeper insight into how the driver constructs server requests\r\nand responds, developers will be able to write more effective MongoDB\r\napplications in Python.", - "sub_title": "What work does the driver do before sending requests to the MongoDB server", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 60, - "twitters": "@jdrumgoole", - "id": 509, - "speakers": "Joe Drumgoole", - "title": "A deep dive into the Pymongo MongoDB driver", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Educational Track", - "MongoDB", - "Open-Source" - ], - "abstract_long": [ - "*The Pymongo driver is one of MongoDB\u2019s most popular driver interfaces for\r\nconnecting to MongoDB. But developers rarely look under the cover to see\r\nwhat\u2019s happening inside the driver. *\r\n\r\n*By having a deeper insight into how the driver constructs server requests\r\nand responds, developers will be able to write more effective MongoDB\r\napplications in Python.*\r\n\r\n*We will look at :*\r\n\r\n-\r\n\r\n*Initial connection*\r\n-\r\n\r\n*A query*\r\n-\r\n\r\n*A simple write operation*\r\n-\r\n\r\n*A bulk write operation*\r\n-\r\n\r\n*How the driver responds when we have a node failure*\r\n\r\n*We will also give insight into the driver\u2019s approach to server selection\r\nwhen connecting to a replicas set (a multi-node instance of MongoDB).*", - "", - "", - "" - ], - "abstract_extra": "I've been doing public presentations for over twenty years. I'm a regular speaker at MongoDB technical events .\r\n\r\n", - "tag_categories": [ - ">>> Suggested Track", - "Databases", - "Open Source" - ], - "emails": "joe.drumgoole@10gen.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/a-deep-dive-into-the-pymongo-mongodb-driver", - "admin_type": "", - "companies": "MongoDB" - }, - "409": { - "abstract_short": "A gentle introduction to neural networks, and making your own with Python.\r\n\r\nThis session is deliberately designed to be accessible to everyone, including anyone with no expertise in mathematics, computer science or Python.\r\n\r\nFrom this session you will have an intuitive understanding of what neural networks are and how they work. If you are more technically capable, you will see how you could make your own with Python and numpy.", - "sub_title": "Gain an understanding of the ideas behind simple neural networks, and make your own with Python.", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@postenterprise", - "id": 409, - "speakers": "Tariq Rashid", - "title": "A Gentle Introduction to Neural Networks (with Python)", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Python 3", - "Beginners", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Algorithms", - "Machine-Learning" - ], - "abstract_long": [ - "A gentle introduction to neural networks, and making your own with Python.\r\n\r\nThis session is deliberately designed to be accessible to everyone, including anyone with no expertise in mathematics, computer science or Python.\r\n\r\nFrom this session you will have an intuitive understanding of what neural networks are and how they work. If you are more technically capable, you will see how you could make your own with Python and numpy.\r\n\r\nPart 1 - Ideas:\r\n - the search for AI, hard problems for computers easy fro humans\r\n - learning from examples (simple classifier)\r\n - biologically inspired neurons and networks\r\n - training a neural network - the back propagation breakthrough\r\n - matrix ways of working (good for computers)\r\n\r\nPart 2 - Python:\r\n - Python is easy, and everywhere\r\n - Python notebooks\r\n - the MNIST data set\r\n - a very simple neural network class\r\n - focus on concise and efficient matrix calculations with bumpy\r\n - 97.5% accuracy recognising handwritten numbers - with just a few lines of code!\r\n\r\nPart 3 - Q&A\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "The core reason for my proposal is to open access to interesting ideas to as many people as possible - especially those with no technical background, and no university level expertise in maths or computer science.\r\n\r\nI seem to have a talent for this - and enjoy this immensely. \r\n\r\nI have started teaching Python in London (eg Meetups) for complete beginners, and they are well received and over subscribed. \r\n\r\nI have a book published, introducing complete beginners or students of approx age 15, to fractals using complex numbers, and introducing them to Python to make their own. The book is well reviewed and sells approx 3 a week, and was serialised in Linux Voice magazine.\r\nhttp://www.amazon.com/dp/B00JFIEC2A\r\nhttp://makeyourownmandelbrot.blogspot.com\r\n\r\nMy latest book (almost published) applies the same idea of making complex and sometimes scary concepts accessible and easy to as many people as possible. \r\nhttp://makeyourownneuralnetwork.blogspot.co.uk\r\n\r\nQualifications? Why should anyone believe me?\r\nI have a degree in Physics from Cambridge University, and a second Masters degree in Machine Leaning and Data Mining.\r\nI have worked in tech in some serious organisations like civil nuclear, international finance and media, and most recently in the UK government. If you search google, you'll find talks on open source, digital and security reform by myself - eg http://www.embecosm.com/2015/11/17/how-to-start-your-own-open-source-business/", - "tag_categories": [ - "Python", - "Educational", - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "tariq.rashid50@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/a-gentle-introduction-to-neural-networks-with-python", - "admin_type": "", - "companies": "Digital Dynamics" - }, - "561": { - "abstract_short": "At the LEAP Encryption Access Project we aim to make secure communications both easy to use and easy to provide.\r\n\r\nWe bring some tales (and some, hopefully, tools) from the quest for user-friendly crypto software. How to make people love the email experience in the 21st century, without risking their privacy. How to encrypt data locally, sync it to servers that you can lose, and still be sexy.", - "sub_title": "tales and tools for applications that need encrypted, synchronized data, with minimal-trust servers", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 561, - "speakers": "Kali Kaneko", - "title": "Against the silos: usable encrypted email & the quest for privacy-aware services", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Fun and Humor", - "clients", - "Distributed Systems", - "Cryptography", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "Technologies that allow for privacy in the communications, allowing the escape from the pervasive massive surveillance, have been there for some years now, but yet its use by the general public is far from widespread. The challenge, in our view, can be defined by one of making usable crypto. Usable for the end user, usable for the sysadmin and for the fellow application developer. In the quest for massive adoption of encryption technologies, we've been forging several python packages to solve different problems, always standing in the shoulders of giants. \r\nWe bring some tales from the trenches to share, from our humble experience trying to deploy clients and servers to provide Secured Encrypted Internet Tunnels and Encrypted Email. This includes interesting challenges dealing with key management, automatic and secure software updates, and processing of email while using stock cloud providers, while still being resistant to hostile environments.\r\nWe'll show a webmail email user agent based on this architecture, a promising future for decentralization and privacy.\r\nWe'll also talk about how to store locally encrypted data, and will present Soledad (Synchronization of Locally Encrypted Data Across Devices). Soledad is a library with server and client components that allows the development of different applications based on client-side, end-to-end and cloud-syncable encryption of private data. We'll play with some toy apps to showcase its features and potential." - ], - "abstract_extra": "https://github.com/leapcode/\r\nhttps://leap.se/docs/\r\nsome previous presentations at (random order):\r\nHOPE, IFF, hackmeeting, squatconf", - "tag_categories": [ - "Everything Else", - "Business", - "DevOps", - "Security", - "Programming" - ], - "emails": "bennomadic@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/against-the-silos-usable-encrypted-email-the-quest-for-privacy-aware-services", - "admin_type": "", - "companies": "LEAP Encrypted Access Project" - }, - "715": { - "abstract_short": "This is a look behind the scenes at Winton Capital Management- one of Europe\u2019s most successful systematic investment managers. The talk will mainly focus on how Python gives researchers fine-grained control over the data and trading systems, without requiring them to interact directly with the underlying, highly-optimised technology.", - "sub_title": "", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@, @", - "id": 715, - "speakers": "iztok kucan, Joris Peeters", - "title": "Algorithmic Trading with Python", - "have_tickets": [ - true, - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Algorithms" - ], - "abstract_long": [ - "Have you ever wondered what technologies are used in a systematic trading system that utilises computer models and accounts for the majority of trading on the stock market? This is a look behind the scenes at Winton Capital Management- one of Europe\u2019s most successful systematic investment managers. In this talk, we\u2019ll run through an overview of Winton\u2019s trading infrastructure, including data management, signal generation and execution of orders on global exchanges. The talk will mainly focus on how Python gives researchers fine-grained control over the data and trading systems, without requiring them to interact directly with the underlying, highly-optimised technology.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Data Science" - ], - "emails": "i.kucan@wintoncapital.com, j.peeters@wintoncapital.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/algorithmic-trading-with-python", - "admin_type": "", - "companies": "" - }, - "584": { - "abstract_short": "Deep learning: how it works, how to train a deep neural network, the theory behind deep learning, recent developments and applications.", - "sub_title": "", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:15:00", - "sub_community": "pydata", - "duration": 60, - "twitters": "@Brittix1023", - "id": 584, - "speakers": "Geoff French", - "title": "An Introduction to Deep Learning", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Deep Learning", - "Science Track", - "Data Science", - "Machine-Learning" - ], - "abstract_long": [ - "In the last few years, deep neural networks have been used to generate state of the art results in image classification, segmentation and object detection. They have also successfully been used for speech recognition and textual analysis. In this talk, I will give an introduction to deep neural networks. I will cover how they work, how they are trained, and a little bit on how to get going. I will briefly discuss some of the recent exciting and amusing applications of deep learning. The talk will primarily focus on image processing." - ], - "abstract_extra": "I have given this talk previously at PyData London and at the Cambridge Python User Group where it was well received:\r\nSlides are here:\r\nhttps://speakerdeck.com/britefury/introduction-to-deep-learning-cambridge-python-user-group\r\n", - "tag_categories": [ - "Data Science", - ">>> Suggested Track", - "Data Science", - "Data Science" - ], - "emails": "britefury@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/an-introduction-to-deep-learning", - "admin_type": "", - "companies": "" - }, - "670": { - "abstract_short": "Docker is a powerful tool for packaging software and services in containers and running them on a virtual infrastructure. Python is a very powerful language for data analysis. What happens if we combine the two? We get a very versatile and robust system for analyzing data at small and large scale!\r\n\r\nI will show how we can make use of Python and Docker to build repeatable, robust data analysis workflows which can be used in many different contexts (possibly with a live demo).", - "sub_title": "Creating reproducible and robust data analysis workflows with containers", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@japh44", - "id": 670, - "speakers": "Andreas Dewes", - "title": "Analyzing Data with Python & Docker", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Deployment/Continuous Integration and Delivery", - "Docker", - "Data Science" - ], - "abstract_long": [ - "Docker is a powerful tool for packaging software and services in containers and running them on a virtual infrastructure. Python is a very powerful language for data analysis. What happens if we combine the two? We get a very versatile and robust system for analyzing data at small and large scale!\r\n\r\nI will show how we can make use of Python and Docker to build repeatable, robust data analysis workflows that can be used in many different contexts. I will explain the core ideas behind Docker and show how they can be useful in data analysis. I will then discuss an open-source Python library (Rouster) which uses the Python Docker-API to analyze data in containers and show several interesting use cases (possibly even a live-demo).\r\n\r\nOutline:\r\n\r\n1. Why data analysis can be frustrating: Managing software, dependencies, data versions, workflows\r\n2. How Docker can help us to make data analysis easier & more reproducible\r\n3. Introducing Rouster: Building data analysis workflows with Python and Docker\r\n4. Examples of data analysis workflows: Business Intelligence, Scientific Data Analysis, Interactive Exploration of Data\r\n5. Future Directions & Outlook" - ], - "abstract_extra": "This is a technical talk about data analysis & Python intended for the PyData conference. I have started using Docker and Python for data analysis recently and I think the topic could be very interesting to the Python & data analysis community. I also work on an open-source library for data analysis using Python & Docker called *Rouster* (http://rouster.7scientists.com), which makes it very easy to build data analysis workflows with Python and Docker. I want to use the talk to introduce the tool to a wider audience and get feedback and ideas for the further development (currently the tool is still in its alpha stage).\r\n\r\n", - "tag_categories": [ - "DevOps", - "DevOps", - "Data Science" - ], - "emails": "andreas.dewes@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/analyzing-data-with-python-docker", - "admin_type": "", - "companies": "7scientists UG" - }, - "585": { - "abstract_short": "Many of us have been taught to code, but we know that software engineering jobs are so much more than that.\r\nProgrammers can spend 5-6 hours per week on code review, but doing that is almost ignored as a skill.\r\nHow many of us have seen poor reviews, which don't catch bugs, make people feel bad or block important features being merged?\r\nAn introduction to what code review is alongside guidelines, tips, tricks and anecdotes to help make your code reviews be as productive as possible.", - "sub_title": "Improve your code and your team by reviewing code (well)", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@adamdangoor", - "id": 585, - "speakers": "Adam Dangoor", - "title": "Another pair of eyes: Reviewing code well", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Clean Code", - "Tooling", - "Best Practice", - "Development" - ], - "abstract_long": [ - "Many of us have been taught to code, but we know that software engineering is so much more than that. Programmers can spend 5-6 hours per week on code review, but doing that is almost ignored as a skill, and instead it is often treated as a rote chore.\r\n\r\nHow many of us have seen poor reviews - those which upset people, don't catch bugs or block important features being merged? This talk explores the social and technical impacts of various code review practices as well as helpful tooling. The goal is to provide a structure to help improve how teams review code, and to introduce the costs and benefits of code review to anyone unfamiliar with the practice.\r\n\r\nThere are always trade-offs to be made - e.g. think how costly a security flaw in this code could be to your organisation - perhaps intense scrutiny is not necessary for prototypes soon to be thrown away. It is useful to consider the trade-offs in order to optimise for a particular problem domain. Perhaps right now it is more important to look for issues with maintainability, functionality or performance.\r\n\r\nI talk about how some fantastic code reviews from mentors, colleagues and strangers have helped me become a better programmer and team member, as well as occasions where code review has been detrimental by slowing things down and causing arguments.\r\n\r\nThis is aimed at everyone from beginner to advanced programmers." - ], - "abstract_extra": "I gave my first conference talk last year at Write the Docs Prague - I was nervous but it went down well. The video is at https://www.youtube.com/watch?v=PoVwyPipHzc. The talk was on the topic of how to keep instructions in software documentation working as the code changes.", - "tag_categories": [ - "Educational", - "Programming", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "adamdangoor@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/another-pair-of-eyes-reviewing-code-well", - "admin_type": "", - "companies": "" - }, - "562": { - "abstract_short": "In this talk we show how the Go language helped us get a high performance in a concise and simple API. Everything will be exemplified using the backdrop of a real case of Globo.com: API registrations. We will see how we went from 200 to 19,000 records per second to the impacts of this rapid growth and the consequences of Go of use. We also show how our microservices architecture was used in the project.", - "sub_title": "", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:45:00", - "sub_community": "", - "duration": 60, - "twitters": "@ViniciusPach", - "id": 562, - "speakers": "Vinicius Pacheco", - "title": "APIs and Microservices With Go", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Architecture", - "Go-Lang", - "Microservices" - ], - "abstract_long": [ - "This talk is about Go, software architecture and parallelism. How we went from legacy, complex and slow software to new, speed, resilient and maintainable software.\r\nI'll start the talk showing the problemas and the challenges that my team had received. After that, I'll show the tests, tests of performance and the options that we did considering technologies and strategies of development. The difficulties and problems also will be show. Also I talk about:\r\n\r\n- Goroutines\r\n- Resilient patterns\r\n- Go tools\r\n- Architecture\r\n- Web performance\r\n\r\nHow we leave of the Java ecosystem to new free ecosystem with microservices and how Go help us." - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Other Programming Languages", - "Programming" - ], - "emails": "vfpweb@gmail.com", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/apis-and-microservices-with-go", - "admin_type": "", - "companies": "globo.com" - }, - "547": { - "abstract_short": "async/await is here, everybody can use it in Python 3.5. It's great and awesome, yet only a few understand it. As a PEP 492 author, I'd really like to have a chance to better explain the topic, show why async/await is important and how it will affect Python. I'll also tell a story on how I worked on the PEP -- starting from an idea that I discussed with Guido on PyCon US 2015, and landing to CPython source code one and a half moths later!", - "sub_title": "What and why is async/await in Python, and where it's headed", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@1st1", - "id": 547, - "speakers": "Yury Selivanov", - "title": "async/await in Python 3.5 and why it is awesome", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Python 3", - "Educational Track", - "Architecture", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "The talk will start with a brief coverage of the story of asynchronous programming in Python -- Twisted, Tornado, Stackless Python & greenlets, eventlet, Tornado, asyncio & curio. We've come a really long road, and it's important to understand how we ended up with async/await.\r\n\r\nThen I'll go over asyncio and curio, showing async/await by example, explaining that in reality it's a very easy to use language feature. You don't need to know all the details to be able to successfully use the new syntax, and even build new frameworks on top of it.\r\n\r\nI'll then explain the async/await machinery in CPython, starting with generators and 'yield' expression, showing what is 'yield from' and finally, demonstrating how async/await is implemented in CPython. This will ensure that those who want to invent some new crazy ways of using async/await will have a starting point!\r\n\r\nI'll end the talk with a story of how I came up with the idea. How I shared it with Guido van Rossum, Victor Stinner, and Andrew Svetlow. How the first version of the PEP was born, and how we managed to push it to Python 3.5 in under two months period. The goal is to make people understand that it's possible to change your programming language -- in fact, Python, as any other programming language, wants new features and capabilities to be relevant." - ], - "abstract_extra": "I'm the author and implementor of PEP 492 -- async/await syntax in Python 3.5. I'm also working on a new PEP to add asynchronous generators in CPython 3.6. If it's accepted before the EuroPython (there chances are high!) I'll have a unique opportunity to be the first one to present it to the EuroPython crowd!", - "tag_categories": [ - "Python", - ">>> Suggested Track", - "Programming", - "Programming" - ], - "emails": "yury@magic.io", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/asyncawait-in-python-35-an-why-it-is-awesome", - "admin_type": "", - "companies": "MagicStack" - }, - "687": { - "abstract_short": "Introducing asynchronous calls from within an endpoint in a web app can be desirable but hard to achieve.\r\nThis talk will explore different solutions for this (running Twisted event loop, Co-Routines, Asyncio, \u2026) and how well they play with the different parallelization models of common WSGI web servers.", - "sub_title": "", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@laucia_julljen", - "id": 687, - "speakers": "Lauris Jullien", - "title": "Asynchronous network requests in a web application", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Performance", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "In the more and more popular SOA paradigm, it\u2019s common for services to have to compose responses with resources from many different services. Everyone\u2019s first idea will probably be to call each service synchronously with your favorite python HTTP library. This unfortunately doesn\u2019t scale well and tens of successive network calls will make your endpoints painfully slow. \r\n\r\nOne solution is to parallelize these network calls. If you are already using an asynchronous web app (such as Tornado or Twisted), more asynchronous in your asynchronous shouldn\u2019t be much of a challenge. But if you chose not to dive into the madness of chained Deferred calls, and used a standard prefork/threaded WSGI web server (such as Gunicorn or uWSGI) to run your Django/Flask/Pyramid application, you might find yourself wondering how to manage these asynchronous calls.\r\n\r\nThis talk will explore different solutions (running Twisted event loop, Co-Routines, Asyncio, \u2026) and how well they play with the different parallelization models of WSGI web servers." - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Web", - "Programming" - ], - "emails": "lauris@yelp.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/asynchronous-network-requests-in-a-web-application", - "admin_type": "", - "companies": "Yelp" - }, - "467": { - "abstract_short": "At Ableton we love music and we love open-source. Ansible is an amazing tool which allows us to free more time for music by automating boring and repetitive tasks, and to contribute back to the open-source community with ease. Here's an opportunity to share our love for it, our experience with it, and our contributions to it with you. ", - "sub_title": "Automate everything and contribute back to the community with ansible", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@oleiade", - "id": 467, - "speakers": "Theo Crevon", - "title": "Automate, contribute, repeat.", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Infrastructure", - "Open-Source", - "Development", - "DevOps general" - ], - "abstract_long": [ - "Computers are never as convenient as when they work for us. If you agree with this motto, then Ansible, a deployment and automation tool written in Python, might come in handy.\r\n\r\nAt Ableton, Ansible is involved in every aspect of deployment and automation. From local machine setup, to vm creation and deployment in our self-hosted datacenter, to our services in the immensity of the cloud.\r\n\r\nBecause it is dead simple to use, can deal with any number of hosts in parallel and has robust compatibility with Unix as well as Windows systems, you will probably never have to write a shell script again.\r\n\r\nBecause it is written in Python and exposes a clean, extensible and easy to adapt design and architecture; contributing features to the project and fixing the bugs you might encounter during the journey is extremely easy. \r\n\r\nAt Ableton we love music and we love open-source. Ansible is an amazing tool which allows us to free more time for music by automating boring and repetitive tasks, and to contribute back to the open-source community with ease. Here's an opportunity to share our love for it, our experience with it, and our contributions to it with you. \r\n\r\nAutomate, contribute, repeat. " - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Open Source", - "Programming", - "DevOps" - ], - "emails": "tcr@ableton.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/automate-contribute-repeat", - "admin_type": "", - "companies": "Ableton" - }, - "476": { - "abstract_short": "A modern application has a lot of passwords and keys floating around. Encryptions keys, database passwords, and API credentials; often typed in to text files and forgotten. Fortunately a new wave of tools are emerging to help manage, update, and audit these secrets. Come learn how to avoid being the next TechCrunch headline. ", - "sub_title": "", - "timerange": "2016-07-18 16:00:00, 2016-07-18 16:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 476, - "speakers": "Noah Kantrowitz", - "title": "Behind Closed Doors: Managing Passwords in a Dangerous World", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Security", - "Configuration Management (Ansible/Fabric/Chef/...)", - "DevOps general" - ], - "abstract_long": [ - "Secrets come in many forms, passwords, keys, tokens. All crucial for the operation of an application, but each dangerous in its own way. In the past, many of us have pasted those secrets in to a text file and moved on, but in a world of config automation and ephemeral microservices these patterns are leaving our data at greater risk than ever before.\r\n\r\nNew tools, products, and libraries are being released all the time to try to cope with this massive rise in threats, both new and old-but-ignored. This talk will cover the major types of secrets in a normal web application, how to model their security properties, what tools are best for each situation, and how to use them with major web frameworks." - ], - "abstract_extra": "## Outline\r\n\r\n* Intros\r\n* Types of secrets\r\n * Passwords (internal control)\r\n * Key files (TLS, whole files)\r\n * Tokens (external control)\r\n * Other (PCI, etc)\r\n * Hot vs. cold access\r\n* Properties of a secrets management system\r\n * Audit trail\r\n * Least access\r\n * Integrations\r\n * Pre-encryption systems\r\n* The usual solutions, and why they are dangerous\r\n* Attack surfaces and threat modelling\r\n * Code leak\r\n * Backup leak\r\n * Directory traversal/transclude\r\n * RCE\r\n * Laptop theft\r\n * Higher power (gov, etc)\r\n* Identity Management\r\n * Tokens\r\n * Cloud Systems\r\n * HSMs\r\n* Tools\r\n * Text files\r\n * Chef encrypted bags\r\n * Ansible Vault\r\n * Chef Vault\r\n * Hashicorp Vault\r\n * KeyWhiz\r\n * AWS KMS\r\n * Sneaker\r\n * Confidant\r\n * Trousseau\r\n * Sops\r\n * Red October\r\n * Barbican\r\n * Conjur\r\n* Framework Integration\r\n * HVAC\r\n * KeywhizFS\r\n * Consul Template\r\n * botocore\r\n", - "tag_categories": [ - "Security", - "DevOps", - "DevOps" - ], - "emails": "coderanger@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/behind-closed-doors-managing-passwords-in-a-dangerous-world", - "admin_type": "", - "companies": "" - }, - "487": { - "abstract_short": "\r\nl\r\nThis talk show how a to create a simple, evolving, client server architecture combining zeromq, selenium and beautifulsoup, which allows you to scrape data even from variable dynamic sites like Sporcle and KhanAcademy. Once the page analysis has been implemented regular \"downloads\" can easily be deployed without cluttering your desktop, your headless server and/or anonymously.\r\n", - "sub_title": "Choosing the right combination of tools for getting data from the web can make your life easier", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 487, - "speakers": "Anthon van der Neut", - "title": "Beyond scraping, getting data from dynamic, heavily javascript driven, websites", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Tooling", - "Web Crawling", - "Web Track" - ], - "abstract_long": [ - "Scraping static websites can be done with `urllib2` from the standard library, or with some slightly more sophisticated packages like `requests`. \r\nHowever as soon as JavaScript comes into play on the website you want to download information from, for things like logging in via openid or constructing the pages content, you almost always have to fall back to driving a real browser.\r\nFor web sites with variable content this is can be time consuming and cumbersome process.\r\n\r\nThis talk show how a to create a simple, evolving, client server architecture combining zeromq, selenium and beautifulsoup, which allows you to scrape data from sites like Sporcle, StackOverflow and KhanAcademy. Once the page analysis has been implemented regular \"downloads\" can easily be deployed without cluttering your desktop, your headless server and/or anonymously.\r\n\r\nThe described client server setup allows you to restart your changed analysis program without having to redo all the previous steps of logging in and stepping through instructions to get back to the page where you got \"stuck\" earlier on. This often decreases the time between entering a possible fix in your HTML analysis code en testing it, down to less than a second from a few tens of seconds in case you have to restart a browser.\r\n\r\nUsing such a setup you have time to focus on writing robust code instead of code that breaks with every little change the sites designers make." - ], - "abstract_extra": "I have previously spoken at PyCon 2006 in Dallas and at other conferences, non-python related, in the Netherlands, when I still lived there.\r\nI will prepare some new and update some existing packages on PyPI so that attendees can easily reproduce the presented talk on their own.", - "tag_categories": [ - "Programming", - "Web", - ">>> Suggested Track" - ], - "emails": "a.van.der.neut@ruamel.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/beyond-scraping-getting-data-from-dynamic-heavily-javascript-driven-websites", - "admin_type": "", - "companies": "RUAMEL bvba" - }, - "392": { - "abstract_short": "This talk is about using our **Python** skills to explore the **secrets of our brains**. Using the Neurosky Mindwave as a bluetooth connected EEG device, I'll talk about new experiments I have performed inside the Jupyter notebook, for example \"Evoked Response Potentials\" and more about \"Neuro Feedback\" training. \r\n\r\n", - "sub_title": "Hacking the brain", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@BayesianHorse ", - "id": 392, - "speakers": "Andreas Klostermann", - "title": "Brainwaves for Hackers 3.0", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Visualization", - "Beginners", - "Other Hardware", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "Electroencephalography **(EEG)** measures potential waves originating within the brain. Billions of brain cells fire inside your brain, each sending out a minuscule wave. The summed potential waves can be measured, even with quite cheap and **portable devices**.\r\n\r\nBeing the third major version of this talk, I'll talk briefly about the Neurosky Mindwave and the Muse headset. I have also developed more interactive Jupyter experiments, which I'll demonstrate in the talk. For example **Evoked Response Potentials (ERP)** can be demonstrated with relatively simple means. Also I'll talk some more about experiments with **Neuro Feedback**.\r\n\r\n" - ], - "abstract_extra": "This is the third \"version\" and contains new and updated content. It requires no knowledge from the previous two major versions, but also contains mostly new material. So those who haven't seen the other talks yet will still understand it, those who have won't be bored. That's the plan, anyway.", - "tag_categories": [ - "Data Science", - "Educational", - "Hardware", - "Programming" - ], - "emails": "andreasklostermann@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/brainwaves-for-hackers-3", - "admin_type": "", - "companies": "" - }, - "735": { - "abstract_short": "During this talk you will see how to make a robot able to recognize people with a Raspberry Pi as main board and Python as language. The talk will cover the hardware and modules, discuss briefly the alternatives, and finally show a live demo.", - "sub_title": "", - "timerange": "2016-07-18 14:45:00, 2016-07-18 15:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@ilovelinux02", - "id": 735, - "speakers": "Antonio Spadaro", - "title": "Build and control a Python-powered robot.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Raspberry PI", - "Robotics", - "OpenCV" - ], - "abstract_long": [ - "During this talk you will see how to make a robot able to recognize people with a Raspberry Pi as main board and Python as language. The talk will cover the hardware and modules, discuss briefly the alternatives, and finally show a live demo.\r\n\r\nThe robot uses two main modules:\r\n\r\n - **OpenCV** (_Open Source Computer Vision Library_), an open-source library that includes several hundreds of computer vision algorithms. Usage ranges from interactive art, to mines inspection, stitching maps on the web or through advanced robotics.\r\n\r\n - **gpiozero**, a simple interface to everyday GPIO components used with Raspberry Pi.\r\n\r\nThe first is used to recognize the people and the object; the second to control the robot.\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Hardware", - "Hardware", - "Hardware" - ], - "emails": "antoniospadaro45@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/build-and-control-a-python-powered-robot", - "admin_type": "", - "companies": "" - }, - "618": { - "abstract_short": "Join this talk to learn about the OpenStack Python SDK and how to deploy your web app step by step using different components in OpenStack.", - "sub_title": "", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@vkmc", - "id": 618, - "speakers": "Victoria Martinez de la Cruz", - "title": "Build your first OpenStack application with OpenStack PythonSDK", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Open-Source" - ], - "abstract_long": [ - "How many times you heard about OpenStack and all the cool things it is being used for? Most of the use cases are big players that need to handle huge amounts of data and automate complex infrastructures. But what about actually using it, for you as a developer, to deploy a simple app? In my case, at least, that has not be an usual topic of discussion when talking about OpenStack. In this talk I'll introduce the OpenStack Python SDK, a project relatively new in the OpenStack ecosystem, and show you step by step how to deploy your own web app using different components in OpenStack." - ], - "abstract_extra": "", - "tag_categories": [ - "Open Source" - ], - "emails": "victoria@vmartinezdelacruz.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/build-your-first-openstack-application-with-openstack-pythonsdk", - "admin_type": "", - "companies": "Red Hat" - }, - "596": { - "abstract_short": "While microservices are rather commonly implemented using JSON over\r\nHTTP this is merely an implementation choice. This talk will cover\r\nthe reasons why you might want to choose ZeroMQ as communication\r\ntransport between your microservices instead. It will show how ZeroMQ\r\nis used from within Python and the common patterns which can simplify\r\nthe overal architecture while at the same time providing reliable and\r\nlow-latency communications between your services.", - "sub_title": "Low-latency communications for your backend architecture", - "timerange": "2016-07-20 14:00:00, 2016-07-20 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@flubdevork", - "id": 596, - "speakers": "Floris Bruynooghe", - "title": "Build your Microservices with ZeroMQ", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Software Design", - "System Architecture", - "Microservices" - ], - "abstract_long": [ - "Microservices is the popular term for the trend to build backend\r\narchitectures as a number of smaller independent processes. As an\r\nevolution from the Service Oriented Architecture the core aims are to\r\ncreate independent services which are easy to operate and even replace\r\nwhile all of them together compose into providing the business logic\r\nrequired for your application.\r\n\r\nWhile it is rather common for microservices to choose JSON over HTTP\r\nto communicate with each other, this is purely an implementation\r\nchoice. HTTP is a protocol using a strict request-response format,\r\nthis can become a little burdensome when needing to deal with\r\nasynchronous requests and forces some architectural descisions to be\r\nnot as ideal as they could be. ZeroMQ has more flexible communication\r\npatterns allowing for easier mapping of real-life interactions between\r\nservices. Coupled with an easy to use asynchronous user-level API and\r\nvery fast underlying communication on persistent TCP connections\r\nZeroMQ is a rather attractive transport to build your microservices\r\nbased applications in.\r\n\r\nThis talk will show how to use ZeroMQ within Python to build your\r\nmicroservices. It will show the benefits of ZeroMQ's asynchronous\r\nAPI, common usage patterns and how to handle backpressure.\r\nFurthermore different communication patterns will be explored and the\r\nimpact this has on how to simplify the overall architecture using\r\nthese patterns." - ], - "abstract_extra": "Previous talks I have given:\r\n- EuroPython 2011 - Exploring CPython's bytecode\r\n- PyConUK 2011 - Exploring CPython's bytecode\r\n- EuroPython 2012 - Using Sockets in Python\r\n- EuroPython 2013 - Taming greenlets using eventlet\r\n- FOSDEM 2014 - Introduction to py.test Fixtures\r\n- FOSDEM 2014 - Integrating Python and C using CFFI\r\n- EuroPython 2014 - Advanced Uses of py.test Fixtures\r\n- PyConUK 2014 - Advanced Uses of py.test Fixtures\r\n- EuroPython 2015 - The hook-based plugin architecture of py.test\r\n- PyConUK 2015 - Shipping your application using Conda", - "tag_categories": [ - "Programming", - "DevOps", - "Programming" - ], - "emails": "flub@devork.be", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/build-your-microservices-with-zeromq", - "admin_type": "", - "companies": "Cobe.io" - }, - "612": { - "abstract_short": "These are the lessons learned when scaling a SaaS web application which grew much faster than any one us could have ever expected.\r\n\r\n - Log and monitor from day one.\r\n - Things will fail, be sure you know when they do.\r\n - Choose components which allow language interoperability.\r\n - Horizontally scalable everything.\r\n - Plan for database downtime.\r\n - Have a way to share settings between backend and frontend.\r\n - Have a way to enter maintenance mode.\r\n - And more...\r\n\r\n", - "sub_title": "The things you knew you'd have to deal with, and some that you probably didn't.", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@eriknhj", - "id": 612, - "speakers": "Erik N\u00e4slund", - "title": "Building a reasonably popular web application for the first time.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Web Track", - "Case Study", - "RESTful", - "APIs", - "failures/mistakes" - ], - "abstract_long": [ - "My name is Erik N\u00e4slund - I\u2019m the co-founder and Head of Engineering at Hotjar.\r\n\r\nI'd love to share the lessons learned when scaling a SaaS web application which grew much faster than any one us could have ever expected.\r\n\r\nWords like \u201cbig\u201d and \u201cpopular\u201d carry very little meaning, so let me define how big Hotjar is right now using some numbers.\r\n\r\nWe onboard about 500 new users on a daily basis.\r\nWe process around 250 000 API requests every minute.\r\nOur CDN delivers about 10 TB of data per day.\r\nWe have roughly 3 TB of data in our primary data store (PostgreSQL), another 1 TB in our Elasticsearch cluster, and a LOT more on Amazon S3.\r\n\r\nThese are the key things we wish we knew when we started. They would have made our life so much easier!\r\n\r\n - Log and monitor from day one.\r\n - Have a way to profile your API calls.\r\n - Things will fail, be sure you know when they do.\r\n - Have a way to keep secrets.\r\n - Everything needs a limit (even if it's really big).\r\n - Be wary of hitting data type limits.\r\n - Don't get too attached to a framework.\r\n - Choose components which allow language interoperability.\r\n - Horizontally scalable everything.\r\n - Plan for database downtime.\r\n - Features are a great way to test things out before launching them to the public.\r\n - Have a way to share settings between back end and front end.\r\n - Have a way to enter maintenance mode.\r\n - Require different quality of code for different parts of your application." - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "Case Study", - "Web", - "Web", - "Best Practice and Use Cases" - ], - "emails": "erik@hotjar.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/building-a-reasonably-popular-web-application-for-the-first-time", - "admin_type": "", - "companies": "Hotjar Ltd" - }, - "606": { - "abstract_short": "This talk demonstrates a technique for developing RESTful APIs using Flask and Flask-Restplus. These tools automate common API tasks such as: validating input, serializing output, routing requests to methods, and turning Python exceptions into HTTP responses.\r\n\r\nThe final API comes with a Swagger interactive UI, which documents all endpoints and makes testing easy. The described tools tools provide just enough syntactic sugar to make your code readable, scalable and easy to maintain.", - "sub_title": "Using Flask-Restplus to easily develop an API documented by Swagger", - "timerange": "2016-07-22 14:00:00, 2016-07-22 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@postrational", - "id": 606, - "speakers": "Micha\u0142 Karzy\u0144ski", - "title": "Building beautiful RESTful APIs using Flask", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Open-Source", - "Web Track", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "Documentation", - "Development" - ], - "abstract_long": [ - "Modern software is powered by APIs. User facing apps may run in the browser or on mobile platforms, but they almost universally rely on data stored in the cloud. More often then not apps use a RESTful API to exchange data with the server.\r\n\r\nIn my talk I will demonstrate a technique for developing RESTful APIs using the [Flask][1] micro-framework and [Flask-Restplus][2]. These powerful tools automate most common tasks associated with API development: validating input, serializing output, routing requests to methods, and turning Python exceptions into machine-readable HTTP responses.\r\n\r\nA Flask-Restplus API is fully documented by [Swagger][3] which lists all defined endpoints, their query parameters and the format of input and output JSON objects. Swagger generates an [interactive UI][4] for selecting options and easily testing queries. Flask and Flask-Restplus provide just enough syntactic sugar to make your code readable, scalable and easy to maintain.\r\n\r\nMy presentation will give an overview of the features of Flask and Flask-Restplus; I will describe how easy it is to get started and discuss some best practices for building complex APIs using this approach. I will wrap up by briefly mentioning other components of the Flask ecosystem, which give this micro-framework power to match fully-loaded systems such as Django.\r\n\r\n [1]: http://flask.pocoo.org/\r\n [2]: http://flask-restplus.readthedocs.org/en/latest/\r\n [3]: http://swagger.io/\r\n [4]: http://petstore.swagger.io/#/pet\r\n" - ], - "abstract_extra": "Hi there, my name is Michal. I write a [blog][1], which you may have come across Googling for Django how-tos. I'm also an author of a [book on Linux server administration using Webmin][2]. I have spoken at a number of conferences, including a lightning talk at DjangoCon 2013, a talk at a Python users' group in Warsaw ([PyWaw][3]) and a talk at a DevCon meeting in Warsaw.\r\n\r\nI want to give a presentation about creating RESTful APIs using Flask. As a companion to this talk, I am in the process of writing a blog article which will describe the technique with code samples and working boilerplate code. Attendees who are interested in the topic will be able to use the article as a practical way to get started building APIs in this way.\r\n\r\nI don't have a YouTube video with a talk in English, but you can hear me speak if you take a look at this [short demo][4] for a proof-of-concept I was working on a few years ago.\r\n\r\n [1]: http://michal.karzynski.pl/\r\n [2]: https://www.packtpub.com/networking-and-servers/webmin-administrators-cookbook\r\n [3]: http://pywaw.org/27/\r\n [4]: https://youtu.be/5dxLyt6cfAA?t=47s\r\n", - "tag_categories": [ - "Open Source", - ">>> Suggested Track", - "Web", - "Programming", - "Programming" - ], - "emails": "europython@karzyn.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/building-beautiful-restful-apis-using-flask-1", - "admin_type": "", - "companies": "Intel Corporation" - }, - "682": { - "abstract_short": "Ever wondered how to keep track of all of your services and their APIs? I'm going to explore how to build your Python services with OpenAPI/Swagger and how it helps you solve problems like communication between services, request and response validation, and documentation of your API. I'll also discuss some challenges you might face, gathered from over a year of heavy usage at Yelp.", - "sub_title": "Document, validate and connect your Python services", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@s_jaensch", - "id": 682, - "speakers": "Stephan Jaensch", - "title": "Building Service interfaces with OpenAPI / Swagger", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Microservices", - "Best Practice", - "python", - "Pyramid" - ], - "abstract_long": [ - "Implementing a service-oriented architecture (SOA) is a proven way to split up large monolithic codebases and to scale development when your organization grows to hundreds or thousands of engineers. I'm going to explore how to build and document your services with OpenAPI (formerly known as Swagger). I\u2019ll discuss the benefits and why you should standardize on the API and protocols, but not on SDKs or client libraries. Find out how to make sure the caller as well as your service is conforming to the specification by using request and response validation, how to generate a beautiful HTML documentation for your API, and how you can effortlessly make calls to your services. I'll also discuss and tell you how to overcome challenges you might face, gathered from over a year of heavy usage at Yelp for hundreds of services. I'll present the OpenAPI tools and libraries available for the Python ecosystem for client and server development.\r\n\r\nThe OpenAPI initiative is a cross-vendor consortium focused on creating, evolving and promoting a vendor neutral description format. As an open governance structure under the Linux Foundation, its members include Google, IBM, Atlassian and PayPal.", - "", - "", - "" - ], - "abstract_extra": "I'm a tech lead at Yelp, working on the backend for our Business Owner apps amongst other things. I'm a long-time user of Swagger and recently started contributing to the Python tools for it like bravado. I gave a talk at last year's EuroPython and I had a blast doing it. This is the video: https://youtu.be/UUkyzCwgqPw\r\n\r\nIf possible (and if I'm accepted), I'd prefer a slot during the first half of EuroPython.", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - "", - "Application Frameworks" - ], - "emails": "sjaensch@yelp.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/building-service-interfaces-using-OpenAPI", - "admin_type": "", - "companies": "Yelp" - }, - "517": { - "abstract_short": "Hainbat zerbitzaritan dauden eta plataforma bakar batean oinarrituta dagoen plataforma baten mantentzea Buildout Django Fabric eta erabiliz. Kasu praktikoa euskarazko tokiko hedabideak.", - "sub_title": "", - "timerange": "2016-07-20 15:45:00, 2016-07-20 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@jatsu", - "id": 517, - "speakers": "Jatsu Argarate", - "title": "Buildout Django eta Fabric. Kasu praktikoa euskarazko tokiko hedabideetan", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Django" - ], - "abstract_long": [ - "Hainbat bezerorentzako neurrira egindako edukiak kudeatzeko plataforma bat garatu dugu Django Frameworka erabiliz. Guztia kudeatzeko eta erabilitako bertsioak kontrolatzeko zc.buildout erabiltzen dugu, baina plataforma hazten doa eta iada dozena bat instalazio ditugu hainbat zerbitzaritan zehar banatuta. Plataformaren oinarria berbera denez, instalazio guztietan eguneraketak argitaratzeko buildout eta fabric-en oinarritutako sistema erabiltzen dugu.\r\nHitzaldi honetan azalduko duguna.", - "", - "", - "" - ], - "abstract_extra": "Hainbat zerbitzaritan dauden eta plataforma bakar batean oinarrituta dagoen plataforma baten mantentzea Buildout Django Fabric eta erabiliz. Kasu praktikoa euskarazko tokiko hedabideak.", - "tag_categories": [ - "Application Frameworks" - ], - "emails": "jargarate@codesyntax.com", - "language": "Basque", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/buildout-django-eta-fabric-kasu-praktikoa-euskarazko-tokiko-hedabideetan", - "admin_type": "", - "companies": "CodeSyntax" - }, - "667": { - "abstract_short": "In this talk, we will see an intro to CFFI, an alternative to using the standard C API to extend Python. CFFI works on CPython and on PyPy. It\r\nis a possible solution to a problem that hits notably PyPy --- the\r\nCPython C API.\r\n\r\nThe CPython C API was great and contributed to the present-day success\r\nof Python, together with tools built on top of it like Cython and SWIG.\r\nI will argue that it may be time to look beyond it, and present CFFI as\r\nsuch an example.\r\n", - "sub_title": "CFFI, on CPython and PyPy, as a potentially better way to call C code", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 667, - "speakers": "Armin Rigo", - "title": "CFFI: calling C from Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "PyPy", - "C-Languages", - "CPython" - ], - "abstract_long": [ - "I will introduce CFFI, a way to call C libraries from Python.\r\n\r\n http://cffi.readthedocs.org/\r\n\r\nCFFI was designed in 2012 to get away from Python's C extension modules,\r\nwhich require hand-written CPython-specific C code. CFFI is arguably\r\nsimpler to use: you call C from Python directly, instead of going\r\nthrough an intermediate layer. It is not tied to CPython's internals,\r\nand works natively on two different Python implementations: CPython and\r\nPyPy. It could be ported to more implementations.\r\n\r\nIt is also a big success, according to the download statistics. Some\r\nhigh-visibility projects like Cryptography have switched to it.\r\n\r\nPart of the motivation for developing CFFI is that it is a minimal layer\r\nthat allows direct access to C from Python, with no fixed intermediate C\r\nAPI. It shares ideas from Cython, ctypes, and LuaJIT's ffi, but the\r\nnon-dependence on any fixed C API is a central point. \r\n\r\nIt is a possible solution to a problem that hits notably PyPy --- the CPython C API. The CPython C API was great and, we can argue, it contributed a lot to\r\nthe present-day success of Python, together with tools built on top of\r\nit like Cython and SWIG. However, it may be time to look\r\nbeyond it. This talk will thus present CFFI as such an example.\r\nThis independence is what lets CFFI work equally well on CPython and\r\non PyPy (and be very fast on the latter thanks to the JIT compiler).\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Other Programming Languages", - "Python" - ], - "emails": "armin.rigo@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/cffi-calling-c-from-python", - "admin_type": "", - "companies": "" - }, - "400": { - "abstract_short": "Introduction to the clean code principles applied to Python code. Let's honor the readable nature of the Python syntax so anyone can maintain our code: \"readability counts\".\r\n\r\nThis talk introduces general concepts of code quality and how they apply for Python. We analyse technical debt, refactoring, and unit testing in the context of a project striving for a better code base.", - "sub_title": "Achieving quality code in Python projects", - "timerange": "2016-07-20 15:45:00, 2016-07-20 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@rmarianoa", - "id": 400, - "speakers": "Mariano Anaya", - "title": "Clean code in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Education", - "Best Practice", - "Clean Code", - "Agile", - "Development" - ], - "abstract_long": [ - "Introduction to the clean code principles tailored for Python projects. The goal is to achieve better code quality and a more maintainable code base. Python has a nature of being clear, and easy to follow, so let's take advantage of it in our own code, in order to enforce the principle \"readability counts\" by writing pythonic code.\r\n\r\nThis talk introduces general concepts of code quality for Python developers, analyzing technical debt, with examples on how to achieve a more legible, maintainable and clean code base, by refactoring, writing unit tests and having good coding guidelines for the project. If you are giving your first steps with Python, you will gain insight on best practices for writing good software from the start. If you are a experienced developer, the ideas should work as food for thought, helping with recommendations for code reviews, best practices, etc." - ], - "abstract_extra": "", - "tag_categories": [ - "Educational", - "Best Practice and Use Cases", - "Educational", - "Development Methods", - "Programming" - ], - "emails": "marianoanaya@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/clean-code-in-python", - "admin_type": "", - "companies": "Onapsis" - }, - "420": { - "abstract_short": "Take POSIX, add capability-based security, then remove anything that conflicts. The result is CloudABI, available for BSD, Linux, OSX et al. \r\n\r\nA CloudABI process is incapable of any action that has a global impact It can only affect the file descriptors you provide. As a result even unknown binaries can safely be executed - without the need for containers, virtual machines, or other sandboxes. \r\n\r\nThis talk will introduce CloudABI, how to use it with Python, the benefits, and the trade-offs.", - "sub_title": "Why is my webapp doing `rm -rf $HOME`, and how can I prevent it?", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@moreati", - "id": 420, - "speakers": "Alex Willmer", - "title": "CloudABI: Capability based security on Linux/Unix", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Unix", - "Security", - "Web Track", - "System Architecture", - "Microservices" - ], - "abstract_long": [ - "[CloudABI](https://nuxi.nl/) is a new POSIX based computing environment that brings [capability-based security](https://en.wikipedia.org/wiki/Capability-based_security) to BSD, Linux, OSX et al.\r\n\r\nUnlike traditional Unix, if a CloudABI process goes rogue it _cannot_ execute random binaries, or read arbitrary files. This is achieved by removing `open()` & any other API able to acquire global resources. Instead a CloudABI process must be granted _capabilities_ to specific resources (e.g. directories, files, sockets) in the form of file descriptors. If a process only has a descriptor for `/var/www` then it's _incapable_ of affecting any file or folder outside that directory.\r\n\r\nThis talk will\r\n\r\n - Review the security & reusability problems of Linux & Unix processes\r\n - Introduce capability-based security\r\n - Summarize the design of CloudABI - its benefits & trade-offs\r\n - Demonstrate how to write Python software for CloudABI & run it\r\n - Point out the pitfalls & gotchas to be aware of\r\n - Discuss the current & future status of CloudABI\r\n \r\nCloudABI began life on FreeBSD. It also runs DragonFly BSD, NetBSD, PC-BSD, Arch Linux, Debian, Ubuntu, & OS X. The API & ABI are kernel agnostic - a CloudABI binary can run on any supported kernel. The design is evolved from [Capsicum](https://www.cl.cam.ac.uk/research/security/capsicum/), a library that allows processes to drop access to undesired syscalls at runtime. CloudABI applies this at build time to make testing & lock-down easier.", - "", - "", - "" - ], - "abstract_extra": "I can contract this talk to 30 minutes, or expand it to 60 minutes if you prefer.", - "tag_categories": [ - "Operating Systems", - "Security", - ">>> Suggested Track", - "DevOps", - "Programming" - ], - "emails": "alex@moreati.org.uk", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/capability-based-security-on-unix-with-cloudabi", - "admin_type": "", - "companies": "" - }, - "597": { - "abstract_short": "Learn about `conda`, the package installer from the scientific community. It offers very interesting features that can improve your installation experience considerably. The talk gives an overview of the basic usage of `conda`. It covers the topics installation and building of packages.\r\n`conda` can be combined with `pip` to use all PyPi packages. Its cross-platform and multi-languages features combined with power environments can help to improve your productivity. \r\n", - "sub_title": "A better solution to the packing problem!?", - "timerange": "2016-07-19 14:30:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@pyacademy", - "id": 597, - "speakers": "Mike M\u00fcller", - "title": "Conda - Easier Installs and Simpler Builds", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Python general", - "Packaging", - "Cross-Platform-Development" - ], - "abstract_long": [ - "The BSD license `conda` is a package installer for Python and other languages.\r\nWhile it originates form the scientific Python community, it can be really useful for\r\nall Python programmers.\r\n\r\nInstallation of Python packages has become much simpler over the last years.\r\nThe use of `pip` and `virtualenv` simplify the installation of Python packages a lot.\r\nHowever, they are specific to Python. The Python-agnostic `conda` has advantages\r\nfor packages with C or Fortran extension that are very common for scientific libraries. \r\n`conda` is cross-platform. According to different statistics, the most Python users work on Windows. Often is especially complicate to get extensions with many dependencies installer on this platform. `conda` facilities the installation for Windows considerably.\r\n\r\nThis talk introduces the basic usage of `conda` to install packages. This includes the basic commands for searching and installing of packages. Furthermore, the talk demonstrates the creation of environments for different Python versions and combinations of packages.\r\n\r\nThe building of a packages is simple. The talk shows how to build recipes that contain declarations of dependencies .\r\n\r\n`conda` can work together with `pip`. This allows to use all packages from the Python Package Index ( PyPI). The talk explains the concept of channels that allow to get packages from different sources.\r\n", - "", - "", - "" - ], - "abstract_extra": "This hands-on talk introduces a very useful tool to a new audience. While very well know in the scientific Python community, `conda` might not that well know outside this community. This talk can help to change this situation.", - "tag_categories": [ - "Python", - "Python", - "Python" - ], - "emails": "mmueller@python-academy.de", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/conda-easier-installs-and-simpler-builds", - "admin_type": "", - "companies": "Python Academy GmbH & Co. KG" - }, - "610": { - "abstract_short": "The purpose of this talk if pointing out that using Docker in production is perfectly valid, not just for develop and CI environments.\r\n\r\n", - "sub_title": "Security considerations and best practices", - "timerange": "2016-07-18 16:00:00, 2016-07-18 16:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@musghost", - "id": 610, - "speakers": "Andr\u00e9s Cidel", - "title": "Create secure production environment using Docker", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Virtualization", - "Security", - "Best Practice", - "Docker" - ], - "abstract_long": [ - "Docker is a relatively new technology platform that helps teams develop, deploy and scale applications with greater ease and speed. However, there are doubts about using Docker in production environments. One important reason is that containers don't provide the same security layer as hypervisors do.\r\n\r\nThe purpose of this talk is pointing out that using Docker in production is perfectly valid, not just for develop and CI environments.\r\n\r\nWe'll learn:\r\n\r\n - How Docker works.\r\n - Main risks.\r\n - How create and maintain secure images.\r\n - How defend containers.\r\n - How delimit security risks in containers.\r\n - Best practices for running containers.\r\n\r\n" - ], - "abstract_extra": "I'm the organizer of a Meetup about Docker and I've held some talks about it.\r\nThis is the meetup website: http://www.meetup.com/Mexico-City-Docker-friends/\r\nThese are my blogs, English and Spanish versions http://blog.cidel.com.mx/ and http://dockerfriends.mx/\r\n", - "tag_categories": [ - "DevOps", - "Security", - "Best Practice and Use Cases", - "DevOps" - ], - "emails": "andres@cidel.com.mx", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/create-secure-production-environment-using-docker", - "admin_type": "", - "companies": "Vinco Orbis" - }, - "746": { - "abstract_short": "please fill here", - "sub_title": "", - "timerange": "2016-07-22 16:15:00, 2016-07-22 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 746, - "speakers": "Miguel Reguero", - "title": "Cybersecurity in the financial sector with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Security" - ], - "abstract_long": [ - "please fill here" - ], - "abstract_extra": "", - "tag_categories": [ - "Security" - ], - "emails": "miguel.reguero@i4s.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/ciberseguridad-en-el-sector-financiero-con-python", - "admin_type": "", - "companies": "Innovation 4 Security" - }, - "666": { - "abstract_short": "The CSV is the most widely adopted data format. It used to \r\nstore and share *not-so-big* scientific data. However, this format is not particularly \r\nsuited in case data require any sort of internal\r\nhierarchical structure, or if data are too big. To this end, other data formats must be considered. \r\nIn this talk, the different data formats will be presented and compared w.r.t. their\r\nusage for scientific computations along with corresponding Python libraries.", - "sub_title": "Different format solutions for tiny and big data, beyond CSV and HDFS", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@leriomaggio", - "id": 666, - "speakers": "Valerio Maggio", - "title": "Data Formats for Data Science", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Physics", - "Big Data", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Databases" - ], - "abstract_long": [ - "The *plain text* is one of the simplest yet most intuitive format in which data could be stored. \r\nIt is easy to create, human and machine readable, \r\n*storage-friendly* (i.e. highly compressible), and quite fast to process.\r\nTextual data can also be easily *structured*; in fact to date the \r\nCSV (*Comma Separated Values*) is the most common data format among data scientists.\r\n\r\nHowever, this format is not properly suited in case data require any sort of internal\r\nhierarchical structure, or if data are too big to fit in a single disk. \r\n\r\nIn these cases other formats must be considered, according to the shape of data, and the \r\nspecific constraints imposed by the context. \r\nThese formats may leverage *general purpose* solutions, e.g. [No]SQL databases, HDFS (Hadoop File System); \r\nor may be specifically designed for scientific data, e.g. hdf5, ROOT, NetCDF.\r\n\r\nIn this talk, the strength and flaws of each solution will be discussed, focusing on their usage for scientific computations. The goal is to provide some practical guidelines for data scientists, derived from the the comparison of the different Pythonic solutions presented for the case study analysed. These will include\r\n`xarray`, \r\n`pyROOT` *vs* `rootpy`, `h5py` *vs* `PyTables`, `bcolz`, and `blaze`.\r\nFinally, few notes about the new trends for **columnar databases** (e.g. *MonetDB*) will be also presented, for very fast\r\nin-memory analytics." - ], - "abstract_extra": "", - "tag_categories": [ - "Sciences", - "Data Science", - "Data Science", - "Data Science", - "Databases" - ], - "emails": "valerio.maggio@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/data-science-formats-beyond-csv-and-hdfs", - "admin_type": "", - "companies": "" - }, - "693": { - "abstract_short": "Laburbilduz, kontsumo energetikoaren datuak modu sinple eta argi batean bistaratzen dituen web orrialde bat sortu da Django erabiliz.", - "sub_title": "", - "timerange": "2016-07-20 14:00:00, 2016-07-20 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 693, - "speakers": "Iker Martinez de Agirre Mendia", - "title": "Datu bistaratze soluzioen garapena Smartcity proiektuetan", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Web", - "General" - ], - "abstract_long": [ - "Mondragon Unibertsitateko inbestigazio taldea Smartcity-en aplikazio eta monitorizazioen inguruko proiektuetan lanean ari da, non herrialde ezberdinetako gune konkretuetan bizi diren pertsonen kontsumo energetikoa jaso eta aztertzen den. Proiektu hauetako bi CITyFiED eta ARROWHEAD dira. \r\n\r\nKontsumo hori eta horren harira ondorioztatutako aholku energetikoak erabiltzailearengana heltzeko, bistaratze soluzio bat garatu da, web orrialde bat alegia. \r\n\r\nErabiltzailean oinarritutako diseinua (User Centered Design) aplikatuz, gailu ezberdinetara moldatzen den (Responsive Web Design, Mobile-First) web bat sortu da, Django Web Framework tresnaren bitartez. REST API (Django Rest Framework) baten bidez, informazioa gordetzen den datu basea atzitzen da, kontsumoak eta beraien bilakaera bistaratze libreriak (D3.js) erabiliz irudikatuz. Horrez gain, Djangok eskaintzen dituen aukerak baliatuz, web orrialdea hizkuntza ezberdinetan bistaratu daiteke.\r\n\r\nLaburbilduz, kontsumo energetikoaren datuak modu sinple eta argi batean bistaratzen dituen web orrialde bat sortu da Django erabiliz.\"\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "Mondragon Unibertsitateko inbestigazio taldea Smartcity-en aplikazio eta monitorizazioen inguruko proiektuetan lanean ari da, non herrialde ezberdinetako gune konkretuetan bizi diren pertsonen kontsumo energetikoa jaso eta aztertzen den. Proiektu hauetako bi CITyFiED eta ARROWHEAD dira. \r\n\r\nKontsumo hori eta horren harira ondorioztatutako aholku energetikoak erabiltzailearengana heltzeko, bistaratze soluzio bat garatu da, web orrialde bat alegia. \r\n\r\nErabiltzailean oinarritutako diseinua (User Centered Design) aplikatuz, gailu ezberdinetara moldatzen den (Responsive Web Design, Mobile-First) web bat sortu da, Django Web Framework tresnaren bitartez. REST API (Django Rest Framework) baten bidez, informazioa gordetzen den datu basea atzitzen da, kontsumoak eta beraien bilakaera bistaratze libreriak (D3.js) erabiliz irudikatuz. Horrez gain, Djangok eskaintzen dituen aukerak baliatuz, web orrialdea hizkuntza ezberdinetan bistaratu daiteke.\r\n\r\nLaburbilduz, kontsumo energetikoaren datuak modu sinple eta argi batean bistaratzen dituen web orrialde bat sortu da Django erabiliz.\"", - "tag_categories": [ - "", - "" - ], - "emails": "iker.martinezm@alumni.mondragon.edu", - "language": "Basque", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/datu-bistaratze-soluzioen-garapena-smartcity-proiektuetan-1", - "admin_type": "", - "companies": "" - }, - "418": { - "abstract_short": "Python has lots of scientific, data analysis, and machine learning libraries. But there are many problems when starting out on a machine learning project. Which library do you use? How do they compare to each other? How can you use a model that has been trained in your production app? In this talk I will discuss how you can use TensorFlow to create Deep Learning applications. I will discuss how it compares to other Python machine learning libraries, and how to deploy into production.", - "sub_title": "Find out how TensorFlow compares to other Machine Learning libraries", - "timerange": "2016-07-22 14:00:00, 2016-07-22 15:00:00", - "sub_community": "pydata", - "duration": 60, - "twitters": "@IanMLewis", - "id": 418, - "speakers": "Ian Lewis", - "title": "Deep Learning with Python & TensorFlow", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Deep Learning", - "Science Track", - "Machine-Learning" - ], - "abstract_long": [ - "Python has lots of scientific, data analysis, and machine learning libraries. But there are many problems when starting out on a machine learning project. Which library do you use? How do they compare to each other? How can you use a model that has been trained in your production application?\r\n\r\nTensorFlow is a new Open-Source framework created at Google for building Deep Learning applications. Tensorflow allows you to construct easy to understand data flow graphs in Python which form a mathematical and logical pipeline. Creating data flow graphs allow easier visualization of complicated algorithms as well as running the training operations over multiple hardware GPUs in parallel.\r\n\r\nIn this talk I will discuss how you can use TensorFlow to create Deep Learning applications. I will discuss how it compares to other Python machine learning libraries like Theano or Chainer. Finally, I will discuss how trained TensorFlow models could be deployed into a production system using TensorFlow Serve.", - "", - "", - "" - ], - "abstract_extra": "Here is a high level outline of the talk:\r\n\r\nOutline\r\n\r\n - Overview of Machine Learning Problems\r\n - What is TensorFlow and How Does it Work?\r\n - Creating a Deep Learning Model with Tensorflow\r\n - Comparing Tensorflow to Theano & Chainer\r\n - Productionizing Deep Learning Models", - "tag_categories": [ - "Data Science", - ">>> Suggested Track", - "Data Science" - ], - "emails": "ianlewis@google.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/deep-learning-with-python-tensorflow", - "admin_type": "", - "companies": "Google" - }, - "388": { - "abstract_short": "This talk shares some insights into Aldryn, a platform used daily to execute hundreds of Django based website-deployments, and the various components that intervene to deploy a Django project from its git repository to the cloud.\r\n\r\nWe will discuss some of the problems we faced, and the solutions we adopted, to deploy Django projects at scale to the cloud, including topics like PyPI wheel proxies, dynamic traffic-rerouting, live data-center migrations, etc.", - "sub_title": "A journey through various challenges and solutions we adopted to deploy Django at scale on Aldryn", - "timerange": "2016-07-22 14:30:00, 2016-07-22 15:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@garet_jax", - "id": 388, - "speakers": "Jonathan Stoppani", - "title": "Deploying Django at scale: what happens inside the cloud", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Django Track", - "Configuration Management (Ansible/Fabric/Chef/...)", - "Django", - "Distributed Systems", - "Deployment/Continuous Integration and Delivery" - ], - "abstract_long": [ - "Aldryn is used daily to execute hundreds of Django based website-deployments. It consists of a control panel to help backend developers, frontend developers, project managers and content-editors collaborate to successfully build and maintain web apps, coupled to a scalable and highly available Docker-based build and deployment infrastructure currently used to host more than 6000 django-cms based websites.\r\n\r\nWhile the control panel is oriented mainly towards the Django/django-CMS match, the structure of the single projects and the deployment infrastructure allow to continuously deploy, upgrade and scale any type of HTTP service.\r\n\r\nThe goal of this talk is to share some insights into the various components that intervene to deploy a Django project from its git repository to the cloud.\r\n\r\nThis talk will discuss some of the problems we faced, and the solutions we adopted, to deploy Django projects at scale to the cloud. I'll share the lessons we learned and present the tools we built to reach our goal. I\u2019ll be covering topics like:\r\n - Using a PyPI proxy to both build platform-specific wheels, on order to both to withstand PyPI downtimes and cut on deployment times;\r\n - Dynamic traffic re-routing for zero-downtime deployments and horizontal scaling;\r\n - Massive TLS termination on a custom built Twisted/PyPy reverse proxy;\r\n - Live server and datacenter migrations for both apps and their data." - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "DevOps", - "Application Frameworks", - "DevOps", - "DevOps" - ], - "emails": "jonathan.stoppani@divio.ch", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/deploying-django-at-scale-what-happens-inside-the-cloud", - "admin_type": "", - "companies": "Divio" - }, - "593": { - "abstract_short": "When designing an abstraction for a complex system (an ORM-like library in our case) you face a lot of design decisions and challenges. This talk details how we chose to tackle those when designing elasticsearch-dsl.", - "sub_title": "Lessons learned while bulding elasticsearch-dsl", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@honzakral", - "id": 593, - "speakers": "Honza Kr\u00e1l", - "title": "Designing a Pythonic Interface", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Software Design", - "Best Practice", - "failures/mistakes" - ], - "abstract_long": [ - "The json query language for elasticsearch, as well as its other APIs, can be very daunting to new users and can be a bit cumbersome when working with python. That is why we created elasticsearch-dsl - a sort of ORM for elasticsearch.\r\n\r\nWe will go through the design philosophy and obstacles found during the development - trying to make a more pythonic interface for elasticsearch while maintaining access to all of the features of the underlying query language.\r\n\r\nThe focus of the talk is more on the library and interface design than on elasticsearch and its query language itself, that is used only to demonstrate the principles." - ], - "abstract_extra": "I just want to stress that this is not a talk about elasticsearch, but about designing a pythonic API, using elasticsearch-dsl as an example (since it's a practical \"lessons learned\" talk).", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - "Best Practice and Use Cases" - ], - "emails": "honza.kral@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/designing-a-pythonic-interface", - "admin_type": "", - "companies": "Elastic" - }, - "505": { - "abstract_short": "Nowadays Python is the perfect environment for developing a real-time automated trading tool. In this talk we will discuss the development of: a general-purpose multiagent-system module using Pyro and ZeroMQ; a platform, based on it, for developing automated trading strategies using Numpy, Numba, Theano, etc.; and a GUI for visualizing real-time market data using PyQtGraph and Qt.", - "sub_title": "", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 505, - "speakers": "Miguel S\u00e1nchez de Le\u00f3n Peque", - "title": "Developing a real-time automated trading platform with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Distributed Systems", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Machine-Learning" - ], - "abstract_long": [ - "In OpenSistemas we have developed a general-purpose multi-agent system which is written in pure Python: *osBrain*. Agents communicate with each other using ZeroMQ, allowing the user to define different communication patterns based on their needs.\r\n\r\nBased on this multi-agent system, we have also developed a broker-independent platform for real-time automated trading: *osMarkets*. This platform implements specialized agents:\r\n\r\n- **Feeder** is an agent which receives real-time data from the broker.\r\n- **Router** is an agent which receives data from feeders. It manages the historical data and distributes updates to all the subscribed agents in the network.\r\n- **Brain** is the most common agent. It receives data from router or from other brains and processes them, sending the results to other brains or sending orders to be executed. Brains can make use of many useful packages avilable in the Python ecosystem: NumPy, SciPy, Numba, Theano...\r\n- **Trader** is an agent which is designed to interact with the broker, just as the feeder, but to execute market orders.\r\n\r\n![system](http://i.imgur.com/A9vsWee.png)\r\n\r\nWhile it is still in its earliest stages, we are developing a tool for real-time visualization of trading strategies using PyQtGraph. This tool acts as an agent in the multi-agent system.\r\n\r\n![chart](http://i.imgur.com/5XS7oBQ.png)" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "msanchez@opensistemas.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/developing-a-real-time-automated-trading-platform-with-python", - "admin_type": "", - "companies": "OpenSistemas" - }, - "565": { - "abstract_short": "Nowadays, there is a lot of buzz about Go. In this talk we'll learn the basics and most important concepts of the language, we'll further discuss differences and similarities in Go and Python and dive into the cool features of Go. Finally we'll talk about why popularity of Go is raising so fast and try to answer the most important question: Do I need to switch to Go ?", - "sub_title": "An opinion on the topic after working with Go for 6 months", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 565, - "speakers": "Max Tepkeev", - "title": "Do I need to switch to Go(lang) ?", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Educational Track", - "Go-Lang" - ], - "abstract_long": [ - "Nowadays, there is a lot of buzz about Go. It happened so that for the last 6 months I've been mostly programming Go, and frankly speaking I fell in love with this language.\r\n\r\nWe'll first do a quick review of the language. Go doesn't have some language constructs, for example classes and exceptions and at first it may seem hard to write proper Go code, but in practice the language is so easy that I will try to teach you the basics and most important concepts of the language. We'll further discuss differences and similarities in Go and Python and dive into the cool features of Go.\r\n\r\nFinally we'll talk about why popularity of Go is raising so fast and try to answer the most important question: Do I need to switch to Go ?" - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "Other Programming Languages" - ], - "emails": "tepkeev@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/do-i-need-to-switch-to-golang", - "admin_type": "", - "companies": "Aidata" - }, - "563": { - "abstract_short": "This talk is about dynamic class generation in python: the practice of writing code that generates classes and their functionality at runtime. It will use boto3, the AWS SDK for Python, as a basis to dive into the basics, the benefits, and the drawbacks to dynamically generating classes.", - "sub_title": "", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 563, - "speakers": "Kyle Knapp", - "title": "Dynamic Class Generation in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Software Design", - "Python general", - "Use Case", - "APIs", - "Educational Track" - ], - "abstract_long": [ - "This talk is about the concept of dynamic class generation in python. The whole idea is writing code that generates classes and their functionality at runtime. You now may be asking yourself, \u201cThat sounds like a neat trick. Why would I ever generate my classes at runtime?\u201d Here are a few reasons why:\r\n\r\n\u2022\tIt can decrease the physical size of your code.\r\n\r\n\u2022\tIt can improve the workflow in adding new functionality.\r\n\r\n\u2022\tIt can improve reliability of your code.\r\n\r\nOne example where the power of this concept has really been leveraged is in boto3, the AWS SDK for Python. Dynamic class generation has allowed boto3 to become heavily data driven such that most of its classes and methods are generated based off JSON models representing aspects of an AWS service\u2019s API. For example, to add support for a new AWS service API in boto3, just plop in a JSON file into the library with no additional Python code required.\r\n\r\nUsing lessons and techniques drawn from developing boto3, this talk will dive into the following topics related to dynamic class generation:\r\n\r\n\u2022\tThe basics of dynamic class generation such as how to effectively dynamically generate classes.\r\n\r\n\u2022\tHow to overcome some of the challenges of dynamic class generation.\r\n\r\n\u2022\tThe tradeoffs in dynamically generating classes and discussion on when it is appropriate.\r\n\r\nBy the end of this talk, the hope is that you will have a better understanding of dynamic class generation and come away with helpful ideas for your next big project." - ], - "abstract_extra": "Talk from last EuroPython: https://ep2015.europython.eu/conference/talks/it-works-on-my-machine-writing-python-code-for-any-environment", - "tag_categories": [ - "Programming", - "Python", - "Best Practice and Use Cases", - "Web", - ">>> Suggested Track" - ], - "emails": "kyknapp1@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/dynamic-class-generation-in-python", - "admin_type": "", - "companies": "Amazon" - }, - "532": { - "abstract_short": "Developers usually state that finding defects is the primary motivation for doing code reviews. However, research has shown that the main benefits of code reviews are; knowledge transfer, team awareness and finding alternative solutions.\r\n\r\nCode reviews when done well are more than just finding defects; it should be a discussion and conversation with other developers about finding the best solutions. We will talk about re-framing code review to encourage open discussions.", - "sub_title": "Get the most out of code review. Learn best practices and avoid common pitfalls.", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@d0ugal", - "id": 532, - "speakers": "Dougal Matthews", - "title": "Effective Code Review", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Communication", - "Best Practice", - "Clean Code", - "Open-Source" - ], - "abstract_long": [ - "Developers usually state that finding defects is the primary motivation for doing code reviews. However, research has shown that the main benefits of code reviews are; knowledge transfer, team awareness and finding alternative solutions.\r\n\r\nCode reviews when done well are more than just finding defects; it should be a discussion and conversation with other developers about finding the best solutions. We will talk about re-framing code review to encourage open discussions.\r\n\r\nThis talk is for everyone that is already involved in regular code review and those hoping to start. I will talk through the code review process with the aim of making it a better and more useful experience for both the authors and the reviewers.\r\n\r\nThe talk will follow the following rough outline:\r\n\r\n- Introduction\r\n - Why do code reviews\r\n - What are we aiming to get out of it\r\n- Submitting code for review\r\n - How can you help reviewers?\r\n - What should you avoid doing?\r\n - Removing ownership of the code\r\n- Reviewing code\r\n - How should you give feedback?\r\n - What should you look for?\r\n - How can you encourage people to review more?\r\n - How to avoid and remove bike-shedding\r\n- Code review tools and how they impact on the process.\r\n- Wrap up and conclusion" - ], - "abstract_extra": "As a developer on the OpenStack project and the maintainer of multiple open source projects, doing code review is a big part of my day. I've been lucky enough to have worked in a strong code review culture for a number of years and given the subject a lot of thought.\r\n\r\nI have spoken at EuroPython previously a few times, last year I spoke about the MkDocs project which was well received albeit a somewhat niched topic.", - "tag_categories": [ - "Community", - "Best Practice and Use Cases", - "Educational", - "Open Source" - ], - "emails": "dougal@dougalmatthews.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/effective-code-review", - "admin_type": "", - "companies": "Red Hat" - }, - "611": { - "abstract_short": "We will explore the lessons learned on maintaining a Selenium test suite against a webapplication and how to leverage python tools to make this process easy and transparent.", - "sub_title": "Lessons learned from testing a webapplication with Selenium and python tools", - "timerange": "2016-07-18 16:30:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@festerc", - "id": 611, - "speakers": "Andrei Coman", - "title": "Effectively test your webapp with Python and Selenium", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Case Study", - "Test Libraries (pyTest/node/...)", - "Testing", - "failures/mistakes" - ], - "abstract_long": [ - "How often do you run your Selenium test suite? How fast do you get a result from it?\r\nWould you like to answer with: \"Whenever I feel like it\" and \"Well, about the time it takes me to finish a coffee\" ? This talk will try to get you closer to these answers.\r\n\r\nWe will have a look at the lessons learned and the challenges my team faced maintaining a Selenium test suite against a long-lived Django web application.\r\n\r\nWe will go over the pros and cons of:\r\n - test design approaches\r\n - technologies we used (nose, py.test, LiveServerTestCase)\r\n - reporting tools ", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Case Study", - "Testing", - "Testing", - "Best Practice and Use Cases" - ], - "emails": "comandrei@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/effectively-test-your-webapp-with-python-and-selenium", - "admin_type": "", - "companies": "3Pillar Global" - }, - "675": { - "abstract_short": "Does Django scale? How to manage traffic peaks? What happens when the database grows too big? How to find the bottlenecks?\r\n\r\nWe will overview the basics concepts on scalability and performance, and then see some tips and tricks. These statements will be backed up with experiments and numbers, to show the timing improvements.", - "sub_title": "Tips and best practices for avoiding scalability issues and performance bottlenecks in Django", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@DZPM", - "id": 675, - "speakers": "David Arcos", - "title": "Efficient Django", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Django Track", - "System Architecture", - "Performance", - "Django", - "Best Practice" - ], - "abstract_long": [ - "**Does Django scale?** How to manage traffic peaks? What happens when the database grows too big? How to find the bottlenecks?\r\n\r\nWe will overview the basics concepts on scalability and performance, and then see some tips and tricks. These statements will be backed up with experiments and numbers, to show the timing improvements.\r\n\r\nMain topics:\r\n\r\n- System architecture\r\n- Database performance\r\n- Queues and workers\r\n- Profiling with django-debug-toolbar\r\n- Caching queries and templates\r\n- Dealing with a slow admin\r\n- Optimizing the models\r\n- Faster tests\r\n\r\n" - ], - "abstract_extra": "I've given talks at EuroPython 2015, PySS, PyConES, PyBCN.", - "tag_categories": [ - ">>> Suggested Track", - "DevOps", - "Programming", - "Application Frameworks", - "Best Practice and Use Cases" - ], - "emails": "david.arcos@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/efficient-django", - "admin_type": "", - "companies": "Lead Ratings" - }, - "484": { - "abstract_short": "EITB Nahieran zerbitzuaren informazioa era erabilgarrian erakusteko APIaren nondik norakoak erakutsiko ditut hitzaldian.", - "sub_title": "EITB Nahieran datuak erabiltzeko API erabilterraz bat nola egin dudan azalduko dut", - "timerange": "2016-07-20 14:30:00, 2016-07-20 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@erralin", - "id": 484, - "speakers": "Mikel Larreategi", - "title": "EITB Nahieran: askatu bideoak API honen bidez", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "RESTful", - "APIs", - "Pyramid" - ], - "abstract_long": [ - "Iaz Raspberry PI bat erosi nuen eta ez nekien zer egin berarekin... Aurten Kodi softwarea erabiliz media-center bihurtu dut Raspberrya.\r\n\r\nKodirako 'tvalacarta' izeneko plugin bat zegoen berarekin EITB Nahieran ikusteko, baina ez zebilen. Saiatu nintzen EITB Nahieranen kodea funtzionarazten, eta asko kostata informazioa hiru era ezberdinetan ateratzea lortu nuen. Azkenean, funtzionamendua errazteko API bat prestatu dut EITB Nahieranen dagoen informazioa atzitzeko eta edozeinek erabili ahal dezan." - ], - "abstract_extra": "", - "tag_categories": [ - "Web", - "Web", - "Application Frameworks" - ], - "emails": "mlarreategi@codesyntax.com", - "language": "Basque", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/eitb-nahieran-askatu-bideoak-api-honen-bidez", - "admin_type": "", - "companies": "CodeSyntax" - }, - "604": { - "abstract_short": "Aurkezpen honetan Nao robotaren Choreographe programazio ingurumenaren sarrera bat egiten da, pythonek errobotikan duen erabilpena erakutsiz. Aurkezpen guztia aurkezleak orain arte egindako lanean oinarritzen da. Lehenik eta behin, programa baten estruktura erakutsiko da. Ondoren, liburutegi bat nola gehitu erakutsiko da, liburutegiaren instalazioak ekar ditzakeen arazoak aztertuz. Azkenik, Naoaren gorputz jarreran zein diskurtsoaren naturaltasunean egindako aurrerapenak azalduko dira. ", - "sub_title": "Pertsona-robot interakzioan lehenego pausuak Choreographe erabilita.", - "timerange": "2016-07-20 16:15:00, 2016-07-20 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 604, - "speakers": "Leire Ozaeta", - "title": "Endor, ipuinak kontatzen zituen Nao robota.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Beginners", - "Robotics", - "Human-Machine-Interaction" - ], - "abstract_long": [ - "Aurkezpen honetan Nao robotaren Choreographe programazio ingurumenaren sarrera bat egiten da, pythonek errobotikan duen erabilpena erakutsiz. Aurkezpen guztia aurkezleak orain arte egindako lanean oinarritzen da. Lehenik eta behin, programa baten estruktura erakutsiko da. Ondoren, liburutegi bat nola gehitu erakutsiko da, liburutegiaren instalazioak ekar ditzakeen arazoak aztertuz. Azkenik, Naoaren gorputz jarreran zein diskurtsoaren naturaltasunean egindako aurrerapenak azalduko dira. \r\nHonekin lortu nahi diren helburuak honako hauek dira: \r\n - Choreographeko proiektu baten estruktura ezagutzea.\r\n - Nao robot baten oinarrizko programa bat ikustea.\r\n - Chorepgraphek ematen dituen programazio blokeak eraldatzen jakitea, python erabiliz.\r\n - Choreographen eskaintzen diren tresnen bitartez, programan python liburutegi bat gehitzen ikastea.\r\nAurkezpen hau ulertzeko ez dago eskakizunik. Python pixka bat dakien edonork (\u201chello world\u201d bat egiten jakitearekin balio du) ulertzeko mailan emango da eta ez da konplexutasun tekniko handiko azalpenik emango. Printzipioz python ezagutzen ez duen edonor ere aurkezpen ia osoa ulertzeko gai izango da, programazio ingurumen bezala ez baita kodean gehiegi sartzen, pythonekin hasteko aukera ona izanez.\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Educational", - "Hardware", - "Hardware" - ], - "emails": "lozaeta001@gmail.com", - "language": "Basque", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/endor-ipuinak-kontatzen-zituen-nao-robota", - "admin_type": "", - "companies": "" - }, - "531": { - "abstract_short": "Charla que explica qu\u00e9 es Unicode y otros conceptos relacionados para poder usar esta tecnolog\u00eda", - "sub_title": "Cansados de los UnicodeDecodeEncodeErrors? Frenen ese desastre! Vengan y entiendan Unicode :)", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@facundobatista", - "id": 531, - "speakers": "Facundo Batista", - "title": "Entendiendo Unicode", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Python 3", - "Python general", - "Python 2" - ], - "abstract_long": [ - "La charla muestra de forma te\u00f3rica/pr\u00e1ctica qu\u00e9 son Unicode, las planillas de c\u00f3digos, los caracteres, y las codificaciones, entra en detalle en las distintas codificaciones, para saber c\u00f3mo usarlas, ejemplifica las reglas de oro para utilizar Unicode en nuestros programa, y termina mostrando algunas funciones \u00fatiles para el manejo de esa tecnolog\u00eda." - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Python", - "Python" - ], - "emails": "facundobatista@gmail.com", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/entendiendo-unicode", - "admin_type": "", - "companies": "Canonical" - }, - "442": { - "abstract_short": "Python, as well as offering an ecosystem of tools for testing security and application pentesting.Python offers a tool ecosystem for developing our own tools security for testing applications and the servers security,identifying information about servers and potential vulnerabilities.\r\n\r\nThe ultimate objective is show a pentesting tool integrating some of the modules commented and try a demo showing info about our domain target and find vulnerabilities in it,\r\n", - "sub_title": "", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@jmortegac", - "id": 442, - "speakers": "Jose Manuel Ortega", - "title": "Ethical hacking with Python tools", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Security", - "Tooling", - "Science Track", - "Development" - ], - "abstract_long": [ - "Nowdays, Python is the language more used for developing tools within the field of security. Many of the tools can be found today as port scanner, vulnerability analysis, brute force attacks and hacking of passwords are written in python. The goal of the talk would show the tools available within the Python API and third-party modules for developing our own pentesting and security tools and finally show a pentesting tool integrating some of the modules.\r\n\r\nThe main topics of the talk could include:\r\n\r\n**1.Enter Python language as platform for developing security tools**\r\n\r\nIntroduction about the main libraries we can use for introducing in development of security tools such as socket and requests.\r\n\r\n**2.Libraries for obtain servers information such as Shodan, pygeocoder,pythonwhois**\r\n\r\nShodan is a search engine that lets you find specific computers (routers, servers, etc.) and get information about ports and services that are opened.\r\n\r\n**3.Analysis and metadata extraction in Python for images and documents**\r\n\r\nShow tools for scraping web data and obtain metadata information in documents and images\r\n\r\n**4.Port scanning with tools like python-nmap**\r\n\r\nWith python-nmap module we can check ports open for a target ip or domain.\r\n\r\n**5.Check vulnerabilities in FTP and SSH servers**\r\n\r\nWith libraries like ftplib and paramiko we can check if the server is vulnerable to ftp and ssh anonymous connections.\r\n\r\n" - ], - "abstract_extra": "I will discuss some of the tools that can be found in\r\n\r\nhttp://www.pythonsecurity.org/libs\r\n\r\nand i will show a practice pentesting tool where we can found integrated all tools mentioned,this tool is available in my github repository \r\n\r\nhttps://github.com/jmortega/python-pentesting\r\n\r\nI have been speaker in some python conferences like europython and pycones in 2015.\r\n\r\nIn my speakerdeck space you can see my presentations,some relationed with python https://speakerdeck.com/jmortega", - "tag_categories": [ - "Security", - "Programming", - ">>> Suggested Track", - "Programming" - ], - "emails": "jmoc25@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/ethical-hacking-with-python-tools", - "admin_type": "", - "companies": "" - }, - "652": { - "abstract_short": "During the last CPython sprints at PyCon US (Montreal), I started to contribute to the CPython project and I\r\nwanted to understand the beast.\r\nIn this case, there is only one solution, trace the code from the beginning.\r\nFrom the command line to the interpreter, we will take part to an adventure. The idea behind is just to show how CPython works for a new contributor.", - "sub_title": "", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@matrixise", - "id": 652, - "speakers": "Stephane Wirtel", - "title": "Exploring our Python Interpreter", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python 3", - "CPython", - "Compiler and Interpreters" - ], - "abstract_long": [ - "During my last CPython sprint, I started to contribute to the CPython code and I\r\nwanted to understand the beast.\r\n\r\nIn this case, there is only one solution, trace the code from the beginning.\r\nFrom the command line to the interpreter, we will take part to an adventure\r\n\r\n* Overview of the structure of the project and the directories.\r\n* From the Py_Main function to the interpreter.\r\n* The used technics for the Lexer, Parser and the generation of the AST and of\r\ncourse of the Bytecodes.\r\n* We will see some bytecodes with the dis module.\r\n* How does VM works, it's a stack machine.\r\n* The interpreter and its main loop of the Virtual Machine.\r\n\r\nThe idea behind is just to show how CPython works for a new contributor to\r\nCPython.\r\n\r\nFrom the command line, we will learn that Python is a library and that we can\r\nembed it in a C project. In fact we will see the Py_Main function to the ceval.c\r\nfile of the interpreter.\r\n\r\nBut there is no magic in the CPython code, we will travel in the lexer and the\r\nparser of CPython, and why not, by the AST for one Python expression.\r\n\r\nAfter the AST, we will visit the Compiler and the Bytecodes for the\r\ninterpreter.\r\nOf course, we will learn there is the peepholer where some basic instructions\r\nare optimised by the this component.\r\n\r\nAnd of course, the interpreter, this virtual machine is really interesting for\r\nthe newbiew, because it's a big stack where the bytecodes are executed one by\r\none on the stack and the ceval.c file." - ], - "abstract_extra": "1. Intro (2 min)\r\n 1. Who am I?\r\n 2. Why we will visit the interpreter\r\n2. How to start ? (5 min)\r\n 1. The DevGuide\r\n 2. The Core Mentorship\r\n 3. Directories of Python \r\n3. What's the result of python -c \"x = 2 + 2\"? (20 min)\r\n 1. Command line \r\n 2. Lexer, Parser\r\n 3. Compiler \r\n 4. Bytecodes\r\n 5. Peepholer\r\n 4. Interpreter\r\n4. How to contribute (3min)\r\n\r\nAlready presented at PyCon Ireland 2015 and PyCon Canada 2015 at Toronto and PythonFOSDEM 2016 in Brussels.\r\nYou can find the slides at this address:\r\n\r\nhttps://speakerdeck.com/matrixise/exploring-our-python-interpreter", - "tag_categories": [ - "Python", - "Python", - "Python" - ], - "emails": "stephane@wirtel.be", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/exploring-our-python-interpreter", - "admin_type": "", - "companies": "Mgx.IO" - }, - "433": { - "abstract_short": "Do you ever wonder how your Python code looks to the interpreter? What those `.pyc` files are? Why one program outperforms another, even if the code is similar? Then let\u2019s dive into Python bytecode! Bytecode is the \"intermediate language\" that expresses your source code as machine instructions the interpreter can understand. In this talk we\u2019ll see what role it plays in executing Python programs, learn to read it with the `dis` module, and analyze it to better understand a program\u2019s performance.", - "sub_title": "What it is, how to read it, and why you should care", - "timerange": "2016-07-20 14:00:00, 2016-07-20 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@AnjanaVakil", - "id": 433, - "speakers": "Anjana Vakil", - "title": "Exploring Python Bytecode", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "CPython", - "Compiler and Interpreters" - ], - "abstract_long": [ - "Do you ever wonder what your simple, beautiful Python code looks like to the interpreter? Are you starting to get curious about those `.pyc` files that always pop up in your project, and you always ignore? Would you like to start investigating your Python code's performance, and learn why some programs you write run faster than others, even if the code looks more or less the same? Have you simply fallen so completely in love with Python that you're ready to peer deep inside its soul?\r\n\r\nIf you, like me, answered \"yes\" to any of these questions, join me in an illuminating adventure into the world of Python bytecode! Bytecode is the \"intermediate language\" that expresses your Python source code as machine instructions the interpreter (specifically CPython, the \"standard\" interpreter) can understand. Together we'll investigate what that means, and what role bytecode plays in the execution of a Python program. We'll discover how we simple humans can read this machine language using the `dis` module, and inspect the bytecode for some simple programs. We'll learn the meaning of a few instructions that often appear in our bytecode, and we'll find out how to learn the rest. Finally, we'll use bytecode to understand why a piece of Python code runs faster if we put it inside of a function.\r\n\r\nWhen you go home, you'll be able to use bytecode to get a deeper understanding of your Python code and its performance. The adventure simply starts here; where it ends is up to you!\r\n\r\n" - ], - "abstract_extra": "Approximate timeline (30 minute talk):\r\n\r\n - :00 - Hello: Speaker intro. Gauge audience experience with bytecode. (1 min.)\r\n - :01 - What does the interpreter do? What is bytecode? What are .pyc files? (5 min.)\r\n - :06 - The dis module: What is it for? What objects can it be used on? How? (3 min.)\r\n - :09 - Understanding bytecode: Examples. What does each column mean? What are some common opcodes? (10 min.)\r\n - :19 - Case study: Python code runs faster inside of a function; different operations in the bytecode let us understand the performance difference (5 min.)\r\n - :24 - Further resources (1 min.)\r\n - :25 - Q&A (5 min.)\r\n\r\nAs far as I can tell, the last time a talk on this subject was given at EuroPython, it was by Larry Hastings in 2013 [(abstract and video )][1]. My talk will differ from his in that:\r\n\r\n - It will be only a 30-minute introduction\r\n - It will be accessible even to beginners\r\n - It will provide motivation to learn about bytecode even if you\u2019re not (planning to be) a CPython core developer\r\n - It will only cover disassembling CPython bytecode using the `dis` module\r\n\r\nI haven't given a talk at EuroPython or another Python conference before, but I have public speaking experience in the form of several talks at academic conferences, on subjects related to software and research for computational linguistics. A list of my previous talks (with links to slides) is available at [ https://vakila.github.io/talks/][2]. \r\n\r\nIn December 2015 I gave a lightning talk on this subject to an audience of approximately 50 developers at the Recurse Center [(https://www.recurse.com/)][3]; unfortunately the talk was not recorded and did not use slides.\r\n\r\nIf you have any questions, need clarification, or have any other feedback on this proposal, please do get in touch. I\u2019m best reached by email, but I will be on holiday with limited internet access from February 29 to March 7.\r\n\r\n [1]: https://ep2013.europython.eu/conference/talks/all-singing-all-dancing-python-bytecode\r\n [2]: https://vakila.github.io/talks/\r\n [3]: https://www.recurse.com/", - "tag_categories": [ - "Python", - "Python" - ], - "emails": "anjanavakil@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/exploring-python-bytecode", - "admin_type": "", - "companies": "Mozilla" - }, - "494": { - "abstract_short": "Learn how to use the new async/await language feature to write asynchronous code in Python and [Cython][1]. See how to benefit from the excellent low-level features that Cython provides to speed up or parallelise your code, interface natively with external C/C++ code, and achieve better responsiveness and lower latency also in mostly I/O bound applications.\r\n\r\n [1]: http://cython.org/", - "sub_title": "How to simply get more out of your async applications with Cython", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 494, - "speakers": "Stefan Behnel", - "title": "Fast Async Code with Cython and AsyncIO", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Cython", - "ASYNC / Concurreny", - "Web Track", - "C-Languages", - "Compiler and Interpreters" - ], - "abstract_long": [ - "Python has recently seen a fresh development boost around asynchronous applications, triggered by the addition of the asyncio library and the new async/await language features in Python 3.5, but coming from a world of well established tools like [Twisted][2] and [Tornado][3]. The [Cython][1] compiler, which compiles Python code to C, has accompanied and influenced this development. It provides full language support for async/await under all Python versions starting from 2.6, as well as native interoperability with existing Python code and the new Python coroutines in Python 3.5.\r\n\r\nBenchmarks show that, while fully compatible, Cython compiled coroutines perform about 2-3x better than the same code executed in Python, but they additionally allow to interface natively with external C/C++ code, release the GIL, do parallel computation, and much more. All of this extends the applicable zone for asynchronous applications dramatically and can lead to better responsiveness and lower latency also for mostly I/O bound applications.\r\n\r\nThis joined talk by an async I/O expert and one of the Cython core developers explains how to write code with async/await in Python and Cython, and shows how to benefit from the excellent low-level features that Cython provides on top of Python.\r\n\r\n [1]: http://cython.org/\r\n [2]: https://twistedmatrix.com/\r\n [3]: http://www.tornadoweb.org/\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Programming", - ">>> Suggested Track", - "Other Programming Languages", - "Python" - ], - "emails": "pycon@behnel.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/fast-async-code-with-cython-and-asyncio", - "admin_type": "", - "companies": "Skoobe" - }, - "522": { - "abstract_short": "The Python language is hard to optimize. Let's see how guards checked at runtime allows to implement new optimizations without breaking the Python semantic.", - "sub_title": "New exciting optimizations projects are coming into the next 3.6 release of CPython!", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@VictorStinner", - "id": 522, - "speakers": "Victor Stinner", - "title": "FAT Python: a new static optimizer for Python 3.6", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Performance", - "Code Analysis", - "CPython", - "Compiler and Interpreters" - ], - "abstract_long": [ - "(Almost) everything in Python is mutable which makes Python a language very difficult to optimize. Most optimizations rely on assumptions, for example that builtin functions are not replaced. Optimizing Python requires a trigger to disable optimization when an assumption is no more true. FAT Python exactly does that with guards checked at runtime. For example, an optimization relying on the builtin len() function is disabled when the function is replaced.\r\n\r\nGuards allows to implement various optimizations. Examples: loop unrolling (duplicate the loop body), constant folding (propagates constants), copy builtins to constants, remove unused local variables, etc.\r\n\r\nFAT Python implements guards and an optimizer rewriting the Abstract Syntax Tree (AST). The optimizer is implemented in Python so it's easy to enhance it and implement new optimizations.\r\n\r\nFAT Python uses a static optimizer, it is less powerful than a JIT compiler like PyPy with tracing, but it was written to be integrated into CPython.\r\n\r\nI wrote 3 PEP (509, 510, 511) targeting Python 3.6. Some changes to support FAT Python have already been merged into Python 3.6.\r\n\r\nWe will also see other pending patches to optimize CPython core, and the bytecode project which allows to modify bytecode, it also includes a peephole optimizer written in pure Python.\r\n\r\nLinks:\r\n\r\n* http://faster-cpython.readthedocs.org/fat_python.html\r\n* http://fatoptimizer.readthedocs.org/\r\n* http://bytecode.readthedocs.org/", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Programming", - "Programming", - "Python", - "Python" - ], - "emails": "victor.stinner@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/fat-python-a-new-static-optimizer-for-python-36", - "admin_type": "", - "companies": "Red Hat" - }, - "718": { - "abstract_short": "FBTFTP: facebook's opensource framework for creating dynamic TFTP servers in Python3.", - "sub_title": "", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@pallotron", - "id": 718, - "speakers": "Angelo Failla", - "title": "FBTFTP: Facebook's open source python3 framework for dynamic TFTP servers.", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Python 3", - "System Architecture", - "Infrastructure", - "Open-Source", - "Scaling" - ], - "abstract_long": [ - "TFTP was first standardized in '81 (same year I was born!) and one of its primary uses is in the early stage of network booting. TFTP is very simple to implement, and one of the reasons it is still in use is that its small footprint allows engineers to fit the code into very low resource, single board computers, system-on-a-chip implementations and mainboard chipsets, in the case of modern hardware.\r\n\r\nIt is therefore a crucial protocol deployed in almost every data center environment. It is used, together with DHCP, to chain load Network Boot Programs (NBPs), like Grub2 and iPXE. They allow machines to bootstrap themselves and install operating systems off of the network, downloading kernels and initrds via HTTP and starting them up.\r\n\r\nAt Facebook, we have been using the standard in.tftpd daemon for years, however, we started to reach its limitations.\r\nLimitations that were partially due to our scale and the way TFTP was deployed in our infrastructure, but also to the protocol specifications based on requirements from the 80's.\r\n\r\nTo address those limitations we ended up writing our own framework for creating dynamic TFTP servers in Python3, and we decided to open source it.\r\n\r\nI will take you thru the framework and the features it offers. I'll discuss the specific problems that motivated us to create it. We will look at practical examples of how touse it, along with a little code, to build your own server that are tailored to your own infra needs.", - "", - "", - "" - ], - "abstract_extra": "Previous talks I have given can be found http://lanyrd.com/profile/pallotron/sessions/", - "tag_categories": [ - "Python", - "DevOps", - "DevOps", - "Open Source", - "DevOps" - ], - "emails": "pallotron@fb.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/fbtftp-facebooks-python3-framework-for-tftp-servers", - "admin_type": "", - "companies": "Facebook Ireland" - }, - "569": { - "abstract_short": "Sometimes it's hard to decide when a something is really done or cannot be improved further. \r\n**Game theory** can help you to make complicated decisions whenever you encounter flow problems.", - "sub_title": "Solving Flow Problems with Game Theory", - "timerange": "2016-07-20 14:00:00, 2016-07-20 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@hendorf", - "id": 569, - "speakers": "Alexander Hendorf", - "title": "Game Theory to the Rescue When Hard Decisions Are to Be Made", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Software Design", - "Use Case", - "Business Track" - ], - "abstract_long": [ - "Sometimes it's hard to decide when a something is really done or cannot be improved further. \r\n**Game theory** can help you to make complicated decisions whenever you encounter flow problems.\r\n\r\nGame theory is \"the study of mathematical models of conflict and cooperation between intelligent rational decision-makers.\" \r\n\r\nIn our use case we had to match data for accounting: - the data was not always clean but we had some extra tools at hand and a complex system to make good guesses. Nevertheless it was hard to decide when to give up, some records were just not processable.\r\nFinally we used Game theory to make the decision.\r\n\r\nhttps://en.wikipedia.org/wiki/Game_theory\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - ">>> Suggested Track" - ], - "emails": "hendorf@opotoc.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/game-theory-to-the-rescue-when-hard-decisions-are-to-be-made", - "admin_type": "", - "companies": "K\u00f6nigsweg GmbH" - }, - "499": { - "abstract_short": "Airflow (https://github.com/airbnb/airflow) is an open source Python package from Airbnb to control your workflows.\r\n\r\nThis talk will explain the concepts behind Airflow, demonstrating how to define your own workflows in Python code and how to extend the functionality with new task operators and UI blueprints by developing your own plugins. You'll also get to hear about our experiences at Blue Yonder, using this tool in real-world scenarios.", - "sub_title": "", - "timerange": "2016-07-20 15:45:00, 2016-07-20 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@ctrebing", - "id": 499, - "speakers": "Christian Trebing", - "title": "Get in control of your workflows with Airflow", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Architecture", - "Best Practice" - ], - "abstract_long": [ - "Whenever you work with data, sooner or later you stumble across the definition of your workflows. At what point should you process your customer's data? What subsequent steps are necessary? And what went wrong with your data processing last Saturday night?\r\n\r\nAt Blue Yonder we use Airflow (https://github.com/airbnb/airflow), an open source Python package from Airbnb to solve these problems. It can be extended with new functionality by developing plugins in Python, without the need to fork the repo. With Airflow, we define workflows as directed acyclic graphs and get a shiny UI for free. Airflow comes with some task operators which can be used out of the box to complete certain tasks. For more specific cases, tasks can be developed by the end user. Best of all: even the configuration is done completely in Python!\r\n\r\nThis talk will explain the concepts behind Airflow, demonstrating how to define your own workflows in Python code and how to extend the functionality with new task operators and UI blueprints. You'll also get to hear about our experiences using this tool in real-world scenarios." - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases" - ], - "emails": "christian.trebing@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/get-in-control-of-your-workflows-with-airflow", - "admin_type": "", - "companies": "Blue Yonder GmbH" - }, - "383": { - "abstract_short": "To get real time insight into your running applications you need to instrument them and collect metrics: count events, measure times, expose numbers. Sadly this important aspect of development was a patchwork of half-integrated solutions for years. Prometheus changed that and this talk will walk you through instrumenting your apps and servers, building dashboards, and monitoring using metrics.", - "sub_title": "How Prometheus Can Unify Your Metrics", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@hynek", - "id": 383, - "speakers": "Hynek Schlawack", - "title": "Get Instrumented!", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Performance", - "Best Practice", - "Operations", - "DevOps general", - "Use Case" - ], - "abstract_long": [ - "Metrics are highly superior to logging in regards of understanding the past, presence, and future of your applications and systems. They are cheap to gather (just increment a number!) but setting up a metrics system to collect and store them is a major task.\r\n\r\nYou may have heard of statsd, Riemann, Graphite, InfluxDB, or OpenTSB. They all look promising but on a closer look it\u2019s apparent that some of those solutions are straight-out flawed and others are hard to integrate with each other or even to get up and running.\r\n\r\nThen came Prometheus and gave us independence of UDP, no complex math in your application, multi-dimensional data by adding labels to values (no more server names in your metric names!), baked in monitoring capabilities, integration with many common systems, and official clients for all major programming languages. In short: a *unified* way to gather, process, and present metrics.\r\n\r\nThis talk will:\r\n\r\n1. explain why you want to collect metrics,\r\n1. give an overview of the problems with existing solutions,\r\n1. try to convince you that Prometheus may be what you\u2019ve been waiting for,\r\n1. teach how to impress your co-workers with beautiful graphs and intelligent monitoring by putting a fully instrumented Python application into production,\r\n1. and finally give you pointers on how to migrate an existing metrics infrastructure to Prometheus *or* how to integrate Prometheus therein.\r\n", - "", - "", - "" - ], - "abstract_extra": "# Notes\r\n\r\nLast year I spoke about metrics and logging in general. People approached me afterwards expressing interest in metrics but felt lost. And truth to be told, back then the metrics landscape was not very good.\r\n\r\nThe rise of [Prometheus](http://prometheus.io) with decent Python integration changed that considerably. It\u2019s possible to have one coherent metrics platform for both system and app metrics (in various programming languages) and even get monitoring for free.\r\n\r\nTherefore, as a follow-up, I want to do this kind-of case study on how I\u2019ve harmonized our metrics. The talk will **not** build on the older one though.\r\n\r\nThe key idea is to start from nothing and ending up with a well-instrumented system including monitoring. I don\u2019t believe there\u2019s ever been a comparable talk.\r\n\r\n# Technical Aptitude\r\n\r\nI\u2019ve implemented most of [Variomedia](http://www.variomedia.de)\u2019s metrics infrastructure using Graphite and later moved it to Prometheus. Therefore I know both sides of the coin. I\u2019m also working on the [asyncio/Twisted integration](https://github.com/hynek/prometheus_async/) for the Prometheus Python client.\r\n\r\nIn general OSS terms, I\u2019m a PSF fellow, a dormant CPython core dev, an active Twisted core dev, help out in way too many projects, and have a fair share of [own projects](https://github.com/hynek/) too.\r\n\r\n\r\n# Speaking Experience\r\n\r\nThis talk has been [accepted](https://us.pycon.org/2016/schedule/presentation/1601/) to PyCon US. People already [expressed their hopes](https://twitter.com/d0ugal/status/695678965529374720) that I submit it to EP too.\r\n\r\nOther than that, I\u2019ve spoken at the past three PyCon US ([deployments](https://hynek.me/talks/python-deployments/), [TLS](https://hynek.me/talks/tls/), and [Loggging/Metrics](https://hynek.me/talks/beyond-grep/)), the past three EuroPythons (same), PyCon Russia 2014 (TLS, invited speaker), PyCon PL 2014 (TLS, invited speaker), PiterPy 2015 (Logging/Metrics, invited speaker), PyCon JP 2015 (Logging/Metrics, keynote). From what I gather from the feedback and buzz, I think it\u2019s fair to say that my talks have been well-received so far. Especially because I try to make them both informative *and* entertaining at once.\r\n\r\nI put a *lot* of effort into my talks: I start at least three months prior to the conference and work, polish, and practice until EP. Therefore I\u2019m hopeful to deliver another popular talk. Of course, there will be a accompanying page again like in the previous years.\r\n\r\n# Preliminary Outline\r\n\r\n1. Prometheus\r\n\t- short history\r\n\t- philosophy\r\n\t\t- push vs. pull\r\n\t\t- simplest math in-app\r\n\t- why no statsd/Graphite?\r\n\t\t- UDP\r\n\t\t\t- more load = more packets\r\n\t\t\t- lots of load = lost packets\r\n\t\t- one-dimensional data (e.g. `app.server1.process5.request_time` instead of `app.request_time` with tags/labels with metadata)\r\n\t- presentation of result: beautiful dashboard & working monitoring\r\n1. System Metrics\r\n\t- `node_exporter` for native system metrics\r\n\t- examples of other popular exporters like nginx\r\n\t- `collectd_exporter` and `graphite_exporter` as bridges while transitioning\r\n1. Instrumenting Your App [*concrete* examples]\r\n\t- general considerations\r\n\t\t- what to measure\r\n\t\t- how to avoid code duplication\r\n\t\t- protecting your exposed metrics\r\n\t- example: long-running web app (simple pyramid or flask app with DB & caching)\r\n\t- example: batch job (e.g. a backup)\r\n\t- example: asyncio (simple echo server or something similar)\r\n\t- example: Twisted (same)\r\n\t- opaque cloud environments\r\n\t\t- how does heroku fit in?\r\n1. Visualisation\r\n\t- building queries in the integrated graph browser\r\n\t- Grafana\r\n\t\t- building beautiful and useful dashboards\r\n\t\t- correlating system metrics with app metrics\r\n1. Monitoring\r\n\t- defining alerts\r\n\t- integration with 3rd parties (e.g. PagerDuty, nagios)\r\n1. Next Steps\r\n\t- how to fully automate metrics endpoint discovery (e.g. consul)\r\n\t- long term metrics storage", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - "DevOps", - "DevOps", - "Best Practice and Use Cases" - ], - "emails": "schlawack@variomedia.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/get-instrumented", - "admin_type": "", - "companies": "Variomedia AG" - }, - "672": { - "abstract_short": "A side-by-side walkthrough of basic Go syntax and semantics compared to Python.", - "sub_title": "A side-by-side walkthrough of basic Go syntax and semantics compared to Python", - "timerange": "2016-07-19 14:30:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@STajbakhsh", - "id": 672, - "speakers": "Shahriar Tajbakhsh", - "title": "Go for Python Programmers", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python general", - "Data Structures", - "Programming", - "Go-Lang" - ], - "abstract_long": [ - "A side-by-side walkthrough of basic Go syntax and semantics compared to Python." - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Programming", - "Programming", - "Other Programming Languages" - ], - "emails": "sh.tajbakhsh@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/go-for-python-programmers", - "admin_type": "", - "companies": "Osper" - }, - "626": { - "abstract_short": "Grocker is a Docker build chain for Python. It transforms your Python package into a self-contained Docker image which can be easily deployed in a Docker infrastructure. Grocker also adds a Docker entry point to easily start your application.", - "sub_title": "", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 626, - "speakers": "Fabien Bochu", - "title": "Grocker, a Python build chain for Docker", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Docker" - ], - "abstract_long": [ - "At Polyconseil, we build Paris electric car sharing service: Autolib'. This system is based on many services developed using web technologies, Django and our own libraries to handle business logic.\r\n\r\nPackaging is already a difficult problem, deploying large Python projects is even more difficult. When deploying on a live and user-centric system like Autolib', you cannot rely on Pip and external PyPI servers which might become unavailable and are beyond your control. In the beginning we used classic Debian packaging: it was a maintenance hell. It took hours to build our packages and update their metadata to match our Python packages. So we switched to Docker.\r\n\r\nDocker allows us to have a unique item that is deployed in production systems: code updates are now atomic and deterministic! But before deploying the Docker image, you need to build it. That's where Grocker comes in.\r\n\r\nGrocker is a Docker build chain for Python. It will transform your Python package into a self-contained Docker image which can be easily deployed in a Docker Infrastructure. Grocker also adds a Docker entry point to easily start your application.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "DevOps" - ], - "emails": "fabien.bochu@polyconseil.fr", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/grocker-a-python-build-chain-for-docker", - "admin_type": "", - "companies": "Polyconseil" - }, - "463": { - "abstract_short": "El objetivo de la charla ser\u00eda mostrar las herramientas que disponemos dentro de la propia API de Python y librer\u00edas de terceros para desarrollar nuestras propias herramientas que permitan realizar pruebas de seguridad y de pentesting de las aplicaciones.", - "sub_title": "Pentesting con python", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@jmortegac", - "id": 463, - "speakers": "Jose Manuel Ortega", - "title": "Hacking \u00e9tico con herramientas Python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Security", - "Privacy", - "Science Track", - "Development", - "Cryptography" - ], - "abstract_long": [ - "Python se ha convertido en el lenguaje m\u00e1s usado para desarrollar herramientas dentro del \u00e1mbito de la seguridad.\r\nMuchas de las herramientas que podemos encontrar hoy en d\u00eda como esc\u00e1ner de puertos, an\u00e1lisis de vulnerabilidades, ataques por fuerza bruta y hacking de passwords, se han escrito en este lenguaje ,adem\u00e1s de ofrecer un ecosistema de herramientas para realizar pruebas de seguridad y de pentesting de aplicaciones. \r\n\r\nEntre los puntos a tratar podr\u00edamos destacar: \r\n\r\n - **Introducir Python como lenguaje de desarrollo de herramientas de seguridad**\r\n - **Introducir librer\u00edas para obtener informaci\u00f3n de nuestro objetivo como Shodan,pygeocoder,pygeoip**\r\n - **An\u00e1lisis y extracci\u00f3n de metadatos en Python en im\u00e1genes y documentos** \r\n - **An\u00e1lisis de puertos con herramientas como python-nmap**\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "Comentar\u00e9 algunas de las herramientas que podemos encontrar en http://www.pythonsecurity.org/libs y como demo pr\u00e1ctica mostrar\u00e9 una herramienta de pentesting creada desde cero con algunos de los m\u00f3dulos que comentar\u00e9. \r\n\r\nHe impartido algunas charlas sobre seguridad en algunas conferencias.\r\nLas presentaciones de las charlas que he impartido se pueden ver en:\r\nhttps://speakerdeck.com/jmortega", - "tag_categories": [ - "Security", - "Security", - ">>> Suggested Track", - "Programming", - "Security" - ], - "emails": "jmoc25@gmail.com", - "language": "Spanish", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/hacking-etico-con-herramientas-python", - "admin_type": "", - "companies": "" - }, - "456": { - "abstract_short": "If you have ever happened to need to deal with GPS data in Python you may have felt a bit lost. This talk presents libraries starting from basic reading and writing GPS tracks in the GPS Exchange Format to adding missing elevation information. Also visualisation of tracks on OpenStreetmap data with interactive plots in Jupyter notebooks is covered. Additionally common algorithms for GPS like Douglas-Peucker and Kalman filter are explained.", - "sub_title": "Reading, writing, handling and visualizing GPS data", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@FlorianWilhelm", - "id": 456, - "speakers": "Florian Wilhelm", - "title": "Handling GPS Data with Python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Visualization", - "Science", - "Jupyter/iPython Notebook", - "Sensors" - ], - "abstract_long": [ - "If you have ever happened to need to deal with GPS data in Python you may have felt a bit lost. There are many libraries at various states of maturity and scope. Finding a place to start and to actually work with the GPS data might not be as easy and obvious as you might expect from other Python domains. \r\nInspired from my own experiences of dealing with GPS data in Python, I want to give an overview of some useful libraries. From basic reading and writing GPS tracks in the GPS Exchange Format with the help of gpxpy to adding missing elevation information with srtm.py. Additionally, I will cover mapping and visualising tracks on OpenStreetmap with mplleaflet that even supports interactive plots in a Jupyter notebook.\r\nBesides the tooling, I will also demonstrate and explain common algorithms like Douglas-Peucker to simplify a track and the famous Kalman filters for smoothing. For both algorithms I will give an intuition about how they work as well as their basic mathematical concepts. Especially the Kalman filter that is used for all kinds of sensor, not only GPS, has the reputation of being hard to understand. Still, its concept is really easy and quite comprehensible as I will also demonstrate by presenting an implementation in Python with the help of Numpy and Scipy. My presentation will make heavy use of the Jupyter notebook which is a wonderful tool perfectly suited for experimenting and learning.\r\n", - "", - "", - "" - ], - "abstract_extra": "Hi there,\r\n\r\nyou can find more information about me on the [homepage][1]. There you can also find the talks I have held before at EuroPython 2015/2014 etc. I submitted this additional talk if you find my first talk [Kalman and Bayesian Filters][2] maybe too technical or too much focused on mathematics. This talk will be more practical and Python programming oriented.\r\nI am looking forward to EuroPython 2016 in Bilbao!\r\n\r\nBest regards from Cologne,\r\nFlorian\r\n\r\n [1]: http://www.florianwilhelm.info/\r\n [2]: https://ep2016.europython.eu/conference/talks/kalman-and-bayesian-filters-in-python\r\n", - "tag_categories": [ - "Data Science", - "Sciences", - "Python", - "Hardware" - ], - "emails": "florian.wilhelm@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/handling-gps-data-with-python", - "admin_type": "", - "companies": "inovex" - }, - "726": { - "abstract_short": "Scaling a project to a worldwide scale with the same performance and availability in every region using Python isn\u2019t easy, but with the right mindset and tools it\u2019s a very viable target.", - "sub_title": "", - "timerange": "2016-07-21 16:15:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 726, - "speakers": "John Kraal", - "title": "High Availability Scaling with Share Nothing Architecture", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Security", - "Data Structures", - "Architecture", - "Distributed Systems", - "Scaling" - ], - "abstract_long": [ - "Scaling a project to a worldwide scale with the same performance and availability in every region using Python isn\u2019t easy, but with the right mindset and tools it\u2019s a very viable target. We will discuss methods of delivering software, with automated scaling systems, building units out of your project to manage separately and how to reliably and securely distribute data to separate clusters, and how we have achieved this with the use of Celery, Redis, Databases, Protobuf and other modern tools, whilst making sure to highlight our pitfalls and successes" - ], - "abstract_extra": "", - "tag_categories": [ - "Security", - "Programming", - "Programming", - "DevOps", - "DevOps" - ], - "emails": "john@getbynder.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/high-availability-scaling-with-share-nothing-architecture", - "admin_type": "", - "companies": "Bynder" - }, - "546": { - "abstract_short": "The talk will cover new async/await syntax in Python, asyncio library and ecosystem around it, and ways to use them for creating high performance servers. It will explain how to build custom event loops for asyncio, with an example of using the libuv library with Cython to achieve 2-3x performance boost over vanilla asyncio. ", - "sub_title": "Boosting asyncio performance 2x", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@1st1", - "id": 546, - "speakers": "Yury Selivanov", - "title": "High Performance Networking in Python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python 3", - "Performance", - "Architecture", - "Web Track", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "The talk will start with an overview of async/await syntax introduced with PEP 492 in Python 3.5. We'll go through asynchronous context managers and iteration protocols it introduces. I'll briefly explain how the feature is implemented in CPython core.\r\n\r\nThen we'll explore asyncio design. I'll briefly cover event loop, policies, transports, protocols and streams abstractions. I'll explain that event loops are pluggable, which really makes asyncio a universal framework.\r\n\r\nWe'll cover libuv - a high performance networking library that drives NodeJS. I'll highlight where it's similar to asyncio and how it's different.\r\n\r\nIn the final part of the talk I'll explain how to make an asyncio compatible event loop on top of libuv. I'll showcase Cython, which is an amazing tool for tasks like this.\r\n\r\nFinally, I'll share some ideas on how we can further improve the performance of asyncio and networking in Python, and what are the challenges that we will face.\r\n\r\n\r\n**Objectives:**\r\n\r\n1. Deeper understanding of async/await in Python and why it's important. \r\n2. Deeper understanding of asyncio architecture and protocols. \r\n3. How to improve asyncio performance by implementing custom event loops.\r\n4. Show that it's easy to integrate existing complex & low level libraries with Cython. \r\n5. Some perspective on how Python may evolve wrt networking.\r\n\r\n" - ], - "abstract_extra": "I'm an active maintainer of asyncio module (along with Guido van Rossum and Victor Stinner). I think I have a rather unique inner-view at how asyncio works and where it will evolve in the coming years.\r\n\r\nI'm also the author and implementor of PEP 492 -- async/await syntax in Python 3.5. I'm also working on a new PEP to add asynchronous generators in CPython 3.6. I think it might be interesting for people to ask me some interesting questions about async/await and asynchronous Python programming in general.", - "tag_categories": [ - "Python", - "Programming", - "Programming", - ">>> Suggested Track", - "Programming" - ], - "emails": "yury@magic.io", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/high-performance-networking-in-python", - "admin_type": "", - "companies": "MagicStack" - }, - "744": { - "abstract_short": "This talk will give an overview about the Intel\u00ae Distribution for Python which delivers high performance acceleration of Python code on Intel processors for scientific computing, data analytics, and machine learning.\r\n", - "sub_title": "Development of high performance Python code for machine learning, analytics and HPC", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 744, - "speakers": "Ralph de Wargny", - "title": "High Performance Python on Intel Many-Core Architecture", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Machine-Learning" - ], - "abstract_long": [ - "This talk will give an overview about the Intel\u00ae Distribution for Python which delivers high performance acceleration of Python code on Intel processors for scientific computing, data analytics, and machine learning. \r\nIn the first part of the talk, we'll look at the architecture of the latest Intel processors, including the brand new Intel Xeon Phi, also known as Knights Landing, a many-core processor, which was just released end of June 2016. \r\nIn the second part, we will see which tools and libraries are available from Intel Software to enable high performance Python code on multi-core and many-core processors.", - "", - "", - "" - ], - "abstract_extra": "...", - "tag_categories": [ - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "ralph.wargny@intel.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/high-performance-python-on-intel-architecture", - "admin_type": "", - "companies": "Intel Software" - }, - "738": { - "abstract_short": "This talk is a case-study of how Python (Pandas, NumPy, SciKit-learn) can be implemented to identify the influence of the potential drivers of a decline in size of Atlantic herring populations using Gradient Boosting Regression Trees. \r\n\r\n", - "sub_title": "Predicting drivers of change with Gradient Boosting Regression Trees", - "timerange": "2016-07-22 14:30:00, 2016-07-22 15:00:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@", - "id": 738, - "speakers": "Olga Lyashevska", - "title": "How can machine learning help to predict changes in size of Atlantic herring ?", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Science", - "Predictions", - "Case Study", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Machine-Learning" - ], - "abstract_long": [ - "A decline in size and weight of Atlantic herring in the Celtic Sea has been observed since the mid-1980\u2019s. The cause of the decline remains largely unexplained but is likely to be driven by the interactive effect of various endogenous and exogenous factors. The goal of this study is to interrogate a long time-series of biological data obtained from commercial fisheries from 1959 to 2012. We use gradient boosting regression trees to identify important variables underlying changes in growth from various potential drivers, such as: \r\n- Atlantic multidecadal oscillation;\r\n- sea surface temperature;\r\n- salinity;\r\n- wind;\r\n- zooplankton abundance;\r\n- fishing pressure.\r\nThis learning algorithm allows to quantify the influence of the potential drivers of change with the test error lower when compared to other supervised learning techniques. The predictor variables importance spectrum (feature importance) helps to identify the underlying patterns and potential tipping points while resolving the external mechanisms underlying observed changes in size and weight of herring. This analysis is a useful case-study of how Python can be implemented in academia. The outputs of the analysis are of relevance to conservation efforts and sustainable fisheries management which promotes species resistance and resilience." - ], - "abstract_extra": "This research will be presented at International Statistical Ecology Conference in Seattle on June 28 - July 1st 2016 (http://depts.washington.edu/uwconf/wordpress/isec2016/). \r\nWhereas in Seattle I will mostly focus on statistical model and ecological meaning of the findings, at EuroPython I would like to demonstrate the implementation of the analysis with Scikit-learn using IPython notebook. \r\n\r\n", - "tag_categories": [ - "Sciences", - "Data Science", - "Case Study", - "Data Science", - "Data Science" - ], - "emails": "olga.lyashevska@gmit.ie", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/how-can-machine-learning-help-to-predict-changes-in-size-of-atlantic-herring", - "admin_type": "", - "companies": "Galway-Mayo Institute of Technology" - }, - "496": { - "abstract_short": "OpenStack is an infrastructure stack mostly developed in Python. In this talk, Thierry Carrez and Doug Hellmann, both Python Software Foundation fellows and OpenStack Technical Committee members, will look at the symbiotic relationship between OpenStack and Python.", - "sub_title": "", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@tcarrez, @doughellmann", - "id": 496, - "speakers": "Thierry Carrez, Doug Hellmann", - "title": "How OpenStack makes Python better (and vice-versa)", - "have_tickets": [ - true, - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Best Practice", - "failures/mistakes", - "Test Driven Development (TDD)", - "Development", - "OpenStack" - ], - "abstract_long": [ - "OpenStack is an open source stack that can be deployed on raw computing resources to privately or publicly present Infrastructure as a Service. It now consists of more than 4.5 million lines of code, 85% of which is Python. In this talk, Thierry Carrez and Doug Hellmann, both Python Software Foundation fellows and OpenStack Technical Committee members, will look at the symbiotic relationship between OpenStack and Python.\r\n\r\nWe'll go back in history and explain why OpenStack originally picked Python as its main language 6 years ago, and explore what does Python bring to OpenStack. We'll dive into examples of OpenStack pushing Python libraries to their limits and exposing new bugs. We'll look into the massive cloud-based continuous integration system that OpenStack uses and explain how it exposes bugs in Python libraries in the minutes after they are published to PyPI. We'll look into Python libraries that were created by the OpenStack community and libraries that the OpenStack community took over. Finally we'll expose a few best practices that Python developers can follow to get the most of this symbiotic relationship.", - "", - "", - "" - ], - "abstract_extra": "This 45-min talk would be created for EuroPython and could be made to last 30 or 60 min if that would be your preference. If selected, this talk would be co-presented by Thierry Carrez (see bio above) and Doug Hellmann.\r\n\r\nDoug has been employed to work on OpenStack full time for three years. He is a member of the Python Software Foundation, and served as its Communications Director from 2010-2012. After a year as a regular columnist for Python Magazine, he served as Editor-in-Chief from 2008-2009. Between 2007 and 2011, Doug published the popular \"Python Module of the Week\" series on his blog, and that material served as the basis for his book \"The Python Standard Library By Example\". He lives in Athens, Georgia.\r\n\r\nDoug presented at various Python conferences in the past, including PyCon in 2013 [https://us.pycon.org/2013/speaker/profile/297/][1].\r\n\r\nThierry presented OpenStack at EuroPython, back in 2011 [https://ep2013.europython.eu/conference/talks/snakes-on-a-cloud-a-presentation-of-the-openstack-project][2].\r\n\r\n [1]: https://us.pycon.org/2013/speaker/profile/297/\r\n [2]: https://ep2013.europython.eu/conference/talks/snakes-on-a-cloud-a-presentation-of-the-openstack-project\r\n", - "tag_categories": [ - "Best Practice and Use Cases", - "Best Practice and Use Cases", - "Testing", - "Programming", - "DevOps" - ], - "emails": "thierry.carrez@gmail.com, doug@doughellmann.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/how-openstack-makes-python-better-and-vice-versa", - "admin_type": "", - "companies": "OpenStack Foundation, Red Hat" - }, - "435": { - "abstract_short": "The popular board game of Risk has many fans around the world. \r\nUsing a Python-based simulation of the game, we try to answer several questions that went through the minds of many players:\r\n- Which missions are easiest to attain?\r\n- Does your starting position influence your chances?\r\n- Which regions are easiest to defend?", - "sub_title": "analyzing the game of Risk with Python", - "timerange": "2016-07-22 12:00:00, 2016-07-22 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 435, - "speakers": "Rogier van der Geer", - "title": "How to conquer the world", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Visualization", - "Algorithms", - "Predictions", - "Performance", - "Programming" - ], - "abstract_long": [ - "The popular board game of Risk has many fans around the world. \r\nUsing a Python-based simulation of the game, we try to answer several questions that went through the minds of many players;\r\n\r\n- Which missions are easiest to attain?\r\n- Does your starting position influence your chances?\r\n- Which regions are easiest to defend?\r\n\r\nDuring this talk we'll explain what genetic algorithms are and we'll explain an entertaining use-case: how to win at popular board games. During the talk we'll demo how object oriented patterns help with the design and implementation of these algorithms. We'll also demonstrate a library that allows users to push their own risk bots into a game and battle it out on.", - "", - "", - "" - ], - "abstract_extra": "Before joining GoDataDriven, Rogier obtained a PhD in particle physics. Rogier gained hands-on experience with handling enormous quantities of data and processing, or 'charming', them into a manageable format before performing complicated analyses. After his PhD he exchanged physical science for data science at GoDataDriven, where he is now putting his skills to use on more business-driven problems. He likes applying data science to anything; be it his daily commute, improving his photography skills or the contents of his lunch box.", - "tag_categories": [ - "Data Science", - "Data Science", - "Data Science", - "Programming", - "Programming" - ], - "emails": "rogiervandergeer@godatadriven.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/a-genetic-algorithm-to-play-the-game-of-risk", - "admin_type": "", - "companies": "GoDataDriven" - }, - "633": { - "abstract_short": "Optimization in Python (also known as mathematical programming) can be performed by minimization (or maximization) of an objective function within a model that can include discrete variables subject to a set of constrains. At this talk, chemical engineering students of the University of Alicante will introduce the audience to the possibilities of optimization, presenting Pyomo and showing real world examples such as how to improve your diet and save money at fast food restaurants.\r\n\r\n", - "sub_title": "Mathematical optimization with Pyomo or how to solve LP, NLP and MILP problems with Python", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@zuriich92, @DanielDomeneL", - "id": 633, - "speakers": "Zuria Bauer, Daniel Domene L\u00f3pez", - "title": "How to improve your diet and save money with Python", - "have_tickets": [ - true, - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Science", - "Beginners", - "Jupyter/iPython Notebook", - "Engineering", - "Science Track" - ], - "abstract_long": [ - "Process optimization in industry has become essential in order to maximize the resources available and reduce energy consumption. \r\nOptimization problems become interesting when dealing with restrictions (linear or nonlinear) and integer variables (modeling the discrete decisions). Python ecosystem presents different libraries to solve optimization problems, some of them are CVXOpt, CVXPy, PulP, OpenOpt, or Pyomo. \r\nAmong them, Pyomo results interesting because:\r\n\r\n- It can be used for Mathematical modeling in Python similarly to AMPL (and GAMS)\r\n- It communicates with the main solvers used in this field such as GLPK, Gurobi, CPLEX, CBC and PICO\r\n- It's free and open source Python library (BSD license), being developed by Sandia National Laboratories, USA.\r\n- It supports Python 3 and it is easy to install.\r\n\r\nThe talk will be divided in three parts:\r\n\r\n1. _Introduction to Mathematical Programming/Optimization (15 min):_ visual introduction to optimization concepts including restrictions and non linearties (linear Programming, Nonlinear Programming, ILP, MIP, MINLP). \r\n\r\n2. _Introduction to the Pyomo sintax and a quick note for the installation (20 min):_ showing how to improve their diet and save money when ordering food in fast food restaurants.\r\n\t\r\n3. _Optimization problems in engineering (10 min):_ showing more advanced optimization examples that include decision variables.\r\n\r\n ", - "", - "", - "" - ], - "abstract_extra": "The talk will be oriented to _beginners_ and will be given by _Chemical Engineering students_. Slides, Jupyter Notebooks will be available on [GitHub][1]\r\n\r\n [1]: https://github.com/CAChemE/Mathematical-Optimization/\r\n", - "tag_categories": [ - "Sciences", - "Educational", - "Python", - "Everything Else", - ">>> Suggested Track" - ], - "emails": "zuriich92@gmail.com, daniel.domene.lopez2@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/how-to-improve-your-diet-and-save-money-with-python", - "admin_type": "", - "companies": ", CAChemE" - }, - "401": { - "abstract_short": "This talk is for people who have a lot of floating numbers inside\r\nPostgreSQL tables. I will bring as an example my personal experience\r\nwith a scientific project that used PostgreSQL as storage for a rather\r\ncomplex set of composite multidimensional arrays and ran into all\r\nsorts of performances issues, both in reading and writing the data. I\r\nwill explain how I solved all that by dropping the database in favor\r\nof an HDF5 file, while keeping the application running and the users\r\nhappy.\r\n", - "sub_title": "Refactoring a distributed parallel earthquake simulation engine", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:00:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@", - "id": 401, - "speakers": "Michele Simionato", - "title": "How to migrate from PostgreSQL to HDF5 and live happily ever after", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Algorithms", - "Big Data", - "Architecture", - "Science Track", - "Testing" - ], - "abstract_long": [ - "This talk is for people who have a lot of floating numbers inside\r\nPostgreSQL tables and have problems with that. I will narrate my\r\nexperience with a scientific project that used PostgreSQL as storage\r\nfor a rather complex set of composite multidimensional arrays and ran\r\ninto all sorts of performances issues, both in reading and writing the\r\ndata. I will discuss the issues and the approach that was taken first\r\nto mitigate them (unsuccessfully) and then to remove them\r\n(successfully) by a complete rethinking of the underlying architecture\r\nand eventually the removal of the database. I will talk about the\r\nmigration strategies that were employed in the transition period and\r\nhow to live with a mixed environment of metadata in PostgreSQL and\r\ndata in an HDF5 file. I will also talk about concurrency, since the\r\nunderlying application is distributed and massively parallel, and\r\nstill it uses the purely sequential version of HDF5. Questions from\r\nthe audience are expected and welcome.\r\nThe talk is of interest to a large public, since it is mostly about\r\nmeasuring things, monitoring and testing a legacy system,\r\nmaking sure that the changes do not break the previous behavior\r\nand keeping the users happy, while internally rewriting\r\nall of the original code. And doing that in a small enough number of years!\r\n" - ], - "abstract_extra": "I am a well known Pythonista since 2002, I have spoken at the EuroPython conference several times in the past and I am also the author of the decorator module : https://pypi.python.org/pypi/decorator", - "tag_categories": [ - "Data Science", - "Data Science", - "Programming", - ">>> Suggested Track", - "Testing" - ], - "emails": "michele.simionato@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/how-to-migrate-from-postgresql-to-hdf5-and-live-happily-ever-after", - "admin_type": "", - "companies": "GEM" - }, - "737": { - "abstract_short": "This presentation show how to deploy **[Wendelin][1]**, the free software platform for Big Data & Machine Learning, using **[SlapOS][2]** , the free software hyperconverged Operating System (hOS). Written in 100% in Python, SlapOS and Wendelin, can create a complete Big Data Infraestruture with out-of-core capabilities ready to use and operate in just few hours.\r\n\r\n [1]: http://www.wedelin.io\r\n [2]: http://community.slapos.org\r\n", - "sub_title": "Provisioning from sensors to out-of-core-pydata in few minutes", - "timerange": "2016-07-18 14:45:00, 2016-07-18 15:30:00", - "sub_community": "", - "duration": 45, - "twitters": "@ramonnerat", - "id": 737, - "speakers": "Rafael Monnerat", - "title": "Hyperconvergence meets BigData", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Big Data", - "Use Case", - "Open-Source", - "Deployment/Continuous Integration and Delivery", - "Configuration Management (Ansible/Fabric/Chef/...)" - ], - "abstract_long": [ - "This presentation aims to demonstrate how to use [SlapOS][1] (Hyperconverged OS) to deploy an entire Big Data Infrastrucure and show how \"data life cycle\" can be managed with [Wendelin][2] - covering ingestion, analysis, visualization and weaving it into an application.\r\n\r\nWe'll show how Wendelin and SlapOS could handle acquisition, analysis and exploitation of data, making it a potential solution for IOT scenarios where data is available and needs some logic applied before being presented as web application, possibly on a commercial basis.\r\n\r\nThe agenda of the presentation includes an introduction on SlapOS, as a tool used to deploy a wide range of different services and an introduction of Wendelin, as a tool in order to make out-of-core python applications.\r\n\r\nAfter a short introduction, we progress to show the steps to deploy SlapOS infrastructure and later to deploy Wendelin on the just deployed SlapOS, including an use case which shows SlapOS deploying a fluentd instance to ingest data to the Wendelin Database.\r\n\r\nTo conclude, we make a live demo with an Jupiter using out-of-core python to handle wav files stored on Wendelin, and a second short demo on handle computer resources consumption data.\r\n\r\n [1]: http://community.slapos.org\r\n [2]: http://www.wendelin.io/\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Data Science", - "Best Practice and Use Cases", - "Open Source", - "DevOps", - "DevOps" - ], - "emails": "rafael@nexedi.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/hyperconvergence-meets-bigdata", - "admin_type": "", - "companies": "Nexedi" - }, - "408": { - "abstract_short": "In an era of almost-unlimited textual data, accurate sentiment analysis can be the key for determining if our products, services and communities are delighting or aggravating others. We'll take a look at the sentiment analysis landscape in Python: touching on simple libraries and approaches to try as well as more complex systems based on machine learning.", - "sub_title": "A Survey of Python Sentiment Analysis Tools", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:15:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@kjam", - "id": 408, - "speakers": "Katharine Jarmul", - "title": "I Hate You, NLP... ;)", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Natural Language Processing", - "Algorithms", - "failures/mistakes", - "Data Science", - "Machine-Learning" - ], - "abstract_long": [ - "Overview\r\n-------------\r\n\r\nThis talk aims to introduce the audience to the wide array of tools available in Python focused on sentiment analysis. It will cover basic semantic mapping, emoticon mapping as well as some of the more recent developments in applying neural networks, machine learning and deep learning to natural language processing. Participants will also learn some of the pitfalls of the different approaches and see some hands-on code for sentiment analysis.\r\n\r\nOutline\r\n-----------\r\n* NLP: then and now\r\n* Why Emotions Are Hard\r\n* Simple Analysis\r\n * TextBlob (& other available libraries)\r\n * Bag of Words\r\n * Naive Bayes\r\n* Complex Analysis\r\n * Preprocessing with word2vec\r\n * Metamind & RNLN\r\n * Optimus & CNN\r\n * TensorFlow\r\n * Watson\r\n* Live Demo\r\n* Q&A\r\n", - "", - "", - "" - ], - "abstract_extra": "I've spoken at numerous conferences in the US about Python, and have written a book on data analysis with Python for O'Reilly. NLP has always been a side / passion project for me and I've recently been able to spend more time learning about the new tools available using deep learning and neural networks. I'm hoping to share what I've learned with others from a \"survey style\" perspective (rather than as an author of one of the libraries). I hope this perspective can add a bit of fun and humor to the talk as well :D", - "tag_categories": [ - "Data Science", - "Data Science", - "Best Practice and Use Cases", - "Data Science", - "Data Science" - ], - "emails": "kjarmul@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/i-hate-you-nlp", - "admin_type": "", - "companies": "kjamistan" - }, - "458": { - "abstract_short": "El tema que nos ocupa es como implementar un identificador de sonido tipo Shazam usando t\u00e9cnicas DSP. Los puntos a seguir ser\u00e1n, implementaci\u00f3n, retos y pasos adicionales. El proyecto que nos ocupa se encuentra todav\u00eda en proceso de desarrollo (el c\u00f3digo [subido en GitHub][1]) y fue inspirado despu\u00e9s la conferencia, [Over-the-Air Audio Identification][2] en FOSDEM 2016.\r\n\r\n [1]: https://github.com/notexactlyawe/abracadabra\r\n [2]: https://fosdem.org/2016/schedule/event/audio_identification/", - "sub_title": "", - "timerange": "2016-07-19 14:00:00, 2016-07-19 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@notexactlyawe", - "id": 458, - "speakers": "Cameron Macleod", - "title": "Implementaci\u00f3n de un Identificador de Sonido en Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Case Study", - "failures/mistakes", - "Open-Source", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Databases" - ], - "abstract_long": [ - "El tema que nos ocupa es como implementar un identificador de sonido tipo Shazam usando t\u00e9cnicas DSP con ayuda de unas fant\u00e1sticas bibliotecas. Los puntos a seguir ser\u00e1n, implementaci\u00f3n, retos y pasos adicionales. El proyecto que nos ocupa se encuentra todav\u00eda en proceso de desarrollo (el c\u00f3digo [subido en GitHub][1]) y fue inspirado despu\u00e9s la conferencia, [Over-the-Air Audio Identification][2] en FOSDEM 2016.\r\n\r\nLa estructura b\u00e1sica del proyecto consiste en un clasificador y un reconocedor. El clasificador toma huellas del sonido y las procesa en una forma investigable para el reconocedor que usa estas huellas para la identificaci\u00f3n y b\u00fasqueda de archivos almacenados con el fin de encontrar la semejanza mas probable. El reconocedor estar\u00e1 expuesto en un entorno API.\r\n\r\nLa conferencia intentar\u00e1 introducir el \u00e1rea de DSP a la audiencia y los conceptos que est\u00e1n detr\u00e1s aplicaciones como Shazam. Explicar\u00e9 todos las nociones incluidas en una manera sencilla.\r\n\r\n [1]: https://github.com/notexactlyawe/abracadabra\r\n [2]: https://fosdem.org/2016/schedule/event/audio_identification/" - ], - "abstract_extra": "El tema es sobre un proyecto a\u00fan en curso y como resultado puede convertirse antes que lo doy en una charla sobre los fracasos del proyecto y sus lecci\u00f3nes. Preferir\u00eda dar el tema en ingl\u00e9s pero estoy dispuesto darlo en espa\u00f1ol tambi\u00e9n.", - "tag_categories": [ - "Case Study", - "Best Practice and Use Cases", - "Open Source", - "Data Science", - "Databases" - ], - "emails": "cmacleod170@gmail.com", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/implementacion-de-un-identificador-de-sonido-en-python", - "admin_type": "", - "companies": "Cambridge Consultants Ltd" - }, - "457": { - "abstract_short": "The talk will go over implementing a Shazam-style sound recogniser using DSP techniques and some fantastic libraries. It will cover implementation, challenges and further steps. The project is still a work in progress and the code is [available on GitHub][1]. It was inspired by the [Over-the-Air Audio Identification talk][2] at FOSDEM 2016.\r\n\r\n [1]: https://github.com/notexactlyawe/abracadabra\r\n [2]: https://fosdem.org/2016/schedule/event/audio_identification/\r\n", - "sub_title": "", - "timerange": "2016-07-18 16:30:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@notexactlyawe", - "id": 457, - "speakers": "Cameron Macleod", - "title": "Implementing a Sound Identifier in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Case Study", - "failures/mistakes", - "Open-Source", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Databases" - ], - "abstract_long": [ - "The talk will go over the journey of implementing a Shazam-style sound recogniser using DSP techniques and some fantastic libraries. It will cover implementation, challenges and further steps. The project is still a work in progress at the time of proposal and the code is [available on GitHub][1]. It was inspired by the [Over-the-Air Audio Identification talk][2] at FOSDEM 2016.\r\n\r\nThe basic structure of the project consists a classifier that fingerprints audio and stores it in a searchable form and a recogniser that fingerprints a smaller chunk of audio and then searches the stored records to find the most suitable fit for it. The recogniser will be exposed as an API to allow for different front-ends.\r\n\r\nI will aim to introduce both the field of DSP and concepts behind applications like Shazam in a simple easy-to-understand manner. The audience will not need any prior experience in anything except Python.\r\n\r\n [1]: https://github.com/notexactlyawe/abracadabra\r\n [2]: https://fosdem.org/2016/schedule/event/audio_identification/" - ], - "abstract_extra": "As stated in the abstract, the project is still very much a work in progress and a lot has to be done. As such, the focus of the talk may turn more towards lessons learned as opposed to actual implementation closer to the time if the project turns out less successful than hoped.", - "tag_categories": [ - "Case Study", - "Best Practice and Use Cases", - "Open Source", - "Data Science", - "Databases" - ], - "emails": "cmacleod170@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/implementing-a-sound-identifier-in-python", - "admin_type": "", - "companies": "Cambridge Consultants Ltd" - }, - "654": { - "abstract_short": "EFL (Embedded Flexible Language), a deterministic parallel programming tool, may be embedded in any host language. Two versions of the EFL pre-compiler for Python were implemented. One translates EFL blocks into Python's Multiprocessing code, and the other one into DTM/MPI4PY code. EFL implementations of Parallel Programming Design Patterns will be shown, generated parallel code compared, and differences discussed. Visit flexcomp.jct.ac.il for further information. \r\n", - "sub_title": "", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@, @", - "id": 654, - "speakers": "Moshe Goldstein, david dayan", - "title": "Implementing Parallel Programming Design Patterns using EFL for Python", - "have_tickets": [ - true, - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Tooling", - "Multi-Processing", - "Development", - "Programming", - "Compiler and Interpreters" - ], - "abstract_long": [ - "Multi-core CPUs are abundant and utilizing them effectively requires programmers to parallelize CPU-intensive code. To facilitate this, we have developed EFL (Embedded Flexible Language), a deterministic parallel programming tool. \r\nThe parallel parts of a program are written as EFL-blocks, which are embedded into a sequential host language program. The sequential parts of the program are written in the host language, outside the EFL blocks. \r\nEFL may be embedded in any host language by writing an appropriate EFL pre-compiler. At the moment, we implemented two versions of the EFL pre-compiler. Both pre-compilers translate EFL blocks into parallel Python code - one of them generates parallel code based on Python's Multiprocessing module, and the other one generates parallel code based on the DTM/MPI4PY Python module.\r\nWe will present the principles upon which EFL is built. We will show the implementation of Parallel Programming Design Patterns using EFL's parallel programming constructs (such as parallel assignments, parallel for-loops, etc.). Using our two EFL pre-compilers we will show their translation to Python parallel code according to the Multiprocessing module as well as the DTM/MPI4PY module. The differences between code versions produced by the EFL pre-compilers will be discussed. \r\nFor further information about the EFL project and our Flexible Computation Research Laboratory, visit http://flexcomp.jct.ac.il\r\n", - "", - "", - "" - ], - "abstract_extra": "A poster titled \"EFL: An Embedded Language for Safe and Efficient Parallel Execution\" was presented at EuroPython 2014, Berlin, Germany.\r\nA poster titled \"Parallel Programming Constructs and Techniques using and Embedded Flexible Language (EFL) for Python\" was presented at EuroPython 2015, Bilbao, The Basque Country, Spain. \r\nA talk titled \"EFL: An Embedded Language for Safe and Efficient Parallel Execution\" was presented at the Intel Compiler, Architecture and Tools Conference (CATC), Haifa, Israel, 2014.\r\nA paper titled \"Flexible Algorithms: Enabling Well-defined Order-Independet Execution with an Imperative Programming Style\" was presented at the ECBS-EERC 2015, Brno, The Czech Republic, 2015 (available at pp 75-82 of the proceedings of the conference).\r\nA paper title \"EFL: Implementing and Testing an Embedded Language Which Provides Safe and Efficient Parallel Execution \" was presented at the ECBS-EERC 2015, Brno, The Czech Republic, 2015 (available at pp 83-90 of the proceedings of the conference). \r\nFor further material, including unpublished papers and technical reports, visit the website of our research lab. Also, from there you will be able to download the installation kit of our two EFL pre-compilers. \r\n", - "tag_categories": [ - "Programming", - "Programming", - "Programming", - "Programming", - "Python" - ], - "emails": "goldmosh@g.jct.ac.il, dayandav@g.jct.ac.il", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/implementing-parallel-programming-design-patterns-using-efl-for-python", - "admin_type": "", - "companies": ", Jerusalem College of Technology, HebrewUniversity" - }, - "628": { - "abstract_short": "One of the biggest differences, in the Python community, is its effort to improve diversity. I was fortunate enough to take part in nine different PyCon's. I always took note of experiences on how to improve diversity, that could be useful and replicable in my local community and would like to share at EuroPython. There are other reports, that also I would like to share, which are only beautiful stories of how Python reaches the most distant people and places you may never have imagined.", - "sub_title": "Nine Different PyCon's in Two Year's: Lessons on Diversity that I Learned", - "timerange": "2016-07-20 16:15:00, 2016-07-20 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@fmasanori, @pk_pacheco, @KatiaNakamura", - "id": 628, - "speakers": "Fernando Masanori Ashikaga, Paola Katherine Pacheco, K\u00e1tia Nakamura", - "title": "import community", - "have_tickets": [ - true, - true, - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Community" - ], - "abstract_long": [ - "One of the biggest differences, in the Python community, in relation to other communities, is its effort to improve diversity. There is even a Diversity Statement at PSF: \"We have created this diversity statement because we believe that a diverse Python community is stronger and more vibrant. A diverse community where people treat each other with respect has more potential contributors and more sources for ideas.\" In last two years I was fortunate enough to take part in nine PyCon's in ten different countries: Namibia, UK, Japan, Brazil, Italy, Argentina, Uruguay, Germany, Canada and Spain. Some were not national conferences, but were EuroPython or PyConUS. I was coach in three Django Girls at PyCon Namibia, Argentina and Brazil. I always took note of experiences on how to improve diversity, that could be useful and replicable in my local community and would like to share at EuroPython. There are other reports that I also would like to share, which are only beautiful stories of how Python reaches the most distant people and places you may never have imagined.", - "", - "", - "" - ], - "abstract_extra": "-", - "tag_categories": [ - "Community" - ], - "emails": "fmasanori@gmail.com, pkcpweb@gmail.com, katia@kiwi.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/import-community", - "admin_type": "", - "companies": "FATEC S\u00e3o Jos\u00e9 dos Campos, Hadrons, Kiwi.com" - }, - "497": { - "abstract_short": "In this talk I will show how to build your own infrastructure-as-a-service on the example of \"Postgraas\", an open source postgres-as-a-service I wrote in python just for fun. With a simple curl request you can get your very own database, just like RDS on AWS. You will learn how easy it is to create such a remarkably useful service with hardly three hundred lines of flask, docker and some glue-code, a project for a rainy Sunday.", - "sub_title": "or how to write your very own database-as-a-service", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@sebineubauer", - "id": 497, - "speakers": "Sebastian Neubauer", - "title": "Infrastructure as Code: \"pip install\" your environment", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "PostgreSQL", - "Deployment/Continuous Integration and Delivery", - "Infrastructure", - "Docker", - "DevOps general" - ], - "abstract_long": [ - "Continuous Delivery, DevOps, Lean - all those movements have one thing in common: extending the process of software development along the whole value stream, ultimately to the customer. This simple requirement causes surprising serious difficulties on traditional operations workflows. All of a sudden, a single manual ticket to the operations team is a critical blocker in the delivery process. Therefore all parts of the infrastructure, storage, databases, identities, compute resources must be provided as a self service for the developers in order to be able to achieve this goal. What one may call \"the cloud\" (including self hosted ones like open stack) is such a successful model not least because they offer exactly this \"ticket-less\" self-service. But why should we wait for \"the cloud\" to offer what we really need? We are python developers, we are hackers!\r\n\r\nIn this talk I will show how to build your own infrastructure-as-a-service on the example of \"Postgraas\", an open source postgres-as-a-service I wrote in python just for fun. With a simple curl request you can get your very own database, just like RDS on AWS. You will learn how easy it is to create such a remarkably useful service with hardly three hundred lines of flask, docker and some glue-code, a project for a rainy Sunday. After the talk you will know how to amaze your colleagues by eliminating an annoying ticket or manual workflow with a simple flask app and some creativity.", - "", - "", - "" - ], - "abstract_extra": "My talk on last years EP:\r\nhttps://ep2015.europython.eu/conference/talks/a-pythonic-approach-to-continuous-delivery\r\n\r\nAnd maybe it wasn't even that bad, at least according to a review of that talk:\r\nhttps://tesarek.me/europython-2015\r\n\r\n> A Pythonic Approach to Continuous Delivery.\r\n> Sebastian presented CI and CD as one process of delivering value to the customer. He showed the whole process from beginning (the idea of a feature) to the end (the customer using the feature). He presented lots of useful tools that you can use but the basic idea is to start with the most lightweight but fully functional version and build on it.\r\n> We should automate as much as possible and continuously improve our automated processes.\r\n> This was the best presentation of Ci&CD I've ever seen. As to the topic, it was very explanatory and contained lots of useful tips and tricks.\r\n\r\n", - "tag_categories": [ - "Databases", - "DevOps", - "DevOps", - "DevOps", - "DevOps" - ], - "emails": "sebastian.neubauer@blue-yonder.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/infrastructure-as-code-pip-install-your-environment", - "admin_type": "", - "companies": "Blue Yonder GmbH" - }, - "513": { - "abstract_short": "This talk covers the distributed architecture that Skyscanner built to solve the data challenges involved in the generation of images of all hotels in the world. Putting together a distributed system in Python, based on queues, surfing on the AWS Cloud.", - "sub_title": "How Skyscanner hotels built its image processing pipeline.", - "timerange": "2016-07-19 16:15:00, 2016-07-19 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@alevinval", - "id": 513, - "speakers": "Alex Vinyals", - "title": "Ingesting 35 million hotel images with python in the cloud.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "System Architecture", - "Big Data", - "Use Case", - "Distributed Systems" - ], - "abstract_long": [ - "This talk covers the distributed architecture that Skyscanner built to solve the data challenges involved in the generation of images of all hotels in the world. Putting together a distributed system in Python, based on queues, surfing on the AWS Cloud.\r\n\r\nOur goal? To build an incremental image processing pipeline that discards poor quality and duplicated images, scaling the final images to several sizes to optimise for mobile devices.\r\n\r\nAmong the challenges:\r\n\r\n1. Ingest all the input images that partners provide us.\r\n2. Detect and remove bad quality + duplicated images from reaching production.\r\n3. Resize all the generated images to optimise for mobile devices.\r\n4. Ensure the process scales and behaves in an incremental way.\r\n5. Ensure the whole process fits in a time constrained window.\r\n\r\nAmong the tools we used? Pillow, ImageHash, Kombu and Boto.\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "Any feedback welcome if you think something is missing or could be improved. I can also answer any question you guys have.\r\n\r\nThanks.", - "tag_categories": [ - "DevOps", - "Data Science", - "Best Practice and Use Cases", - "DevOps" - ], - "emails": "alexandre.vinyals@skyscanner.net", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/ingesting-35-million-hotel-images-with-python-in-the-cloud", - "admin_type": "", - "companies": "Skyscanner" - }, - "739": { - "abstract_short": " \u201cNotebooks come alive when interactive widgets are used\u201d, but programming complex applications that rely entirely on widgets may end up being a painful and frustrating process. Shaolin is a new python project that aims to provide a framework for building interactive complex dashboards.", - "sub_title": "Introducing a new framework for interactive dashboards programming.", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@miau_db", - "id": 739, - "speakers": "Guillem Duran", - "title": "Interactive data Kung Fu with Shaolin", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Visualization", - "Jupyter/iPython Notebook", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Analytics" - ], - "abstract_long": [ - "You can read in The Project Jupyter web page that \u201cNotebooks come alive when interactive widgets are used\u201d, but programming complex applications that rely entirely on widgets may end up being a painful and frustrating process. Shaolin is a new python project that aims to provide a framework for building interactive complex dashboards.\r\n\r\nShaolin provides all the basic tools for building complex interactive data analysis applications using the pydata ecosystem. Arbitrary code can be embedded into a Dashboard -a class that works as a \u201cblack box\u201d that allows to easily define a GUI based on the ipywidgets package- to process any data in any form and then let you interactively define how to plot it using automatically generated widgets. Hierarchical combinations of Dashboards can be arranged then to build more complex applications.\r\n\r\nThe talk is divided in two sections. First one introduce the framework and its main features:\r\n\r\n - Custom syntax for defining widgets in a simplified way.\r\n - Dashboards: Syntax rules and capabilities.\r\n - Combining Dashboards to build complex applications.\r\n - Interactive plot creation.\r\n - Integration with pydata.\r\n\r\nSecond section will show how this framework can be used to analyse real data using Dashboards without writing any code. I will show how to transform market data time series into graphs using pandas and networkx, then plot it interactively using bokeh and Vpython.\r\n\r\n" - ], - "abstract_extra": "I think that here you will be able to find all the information related to my framework. https://github.com/HCsoft-RD/shaolin A detailed description of its main features can be found in the examples folder. The notebooks you will find there are self-explanatory.\r\n\r\n This is currently in alpha version. Everything there is online works, but I'm still testing like half of the Dashboards I have programmed, before uploading them. Expect thie beta version to be finished by the date of the talk.\r\n\r\n\r\nThere are no recordings of the talks I have already given, but you can find some info about the R&D work we are doing at HCSoft in this blog http://entropicai.blogspot.com.es/", - "tag_categories": [ - "Data Science", - "Python", - "Data Science", - "Data Science" - ], - "emails": "guillem.db@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/interactive-data-kung-fu-with-shaolin", - "admin_type": "", - "companies": "HCSoft programaci\u00f3n S.L." - }, - "450": { - "abstract_short": "aiohttp is asynchronous HTTP client and server library built on top of asyncio.\r\n\r\nThe intro describes basic programming patterns for both client\r\nand server API as well as more advanced techniques. \r\n\r\nThe main target of the talk is displaying an alternative to\r\npeople who want to avoid classic WSGI\r\nframeworks (Django/Flask/Pyramid etc) limitations but found\r\nTwisted and Tornado too cumbersome.", - "sub_title": "asyncio-based web programming fundamentals in 30 minutes", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@andrew_svetlov", - "id": 450, - "speakers": "Andrew Svetlov", - "title": "Introduction to aiohttp", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python 3", - "Best Practice", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "HTTP" - ], - "abstract_long": [ - "aiohttp is asynchronous HTTP client and server library built on top of asyncio.\r\n\r\nThe library allows to write user friendly code which looks like well-known\r\nlinear one (requests library for client and Django/Flask/Pyramid for\r\nserver) but utilizes the power of non-blocking sockets and\r\nsupports websockets natively.\r\n\r\nThe intro describes basic programming patterns for both client\r\nand server API as well as more advanced techniques. \r\nTips and tricks for writing asyncio-based code are included as well.\r\n\r\nThe main target of the talk is displaying an alternative to\r\npeople who want to avoid classic WSGI\r\nframeworks (Django/Flask/Pyramid etc) limitations but found\r\nTwisted and Tornado too cumbersome.\r\n\r\nDive into aiohttp usage with the library author." - ], - "abstract_extra": "I made similar talks in Caribbean PyCon and PyCon Hong Kong plus several times on several Russian-speaking conferences.", - "tag_categories": [ - "Python", - "Best Practice and Use Cases", - "Web", - "Web" - ], - "emails": "andrew.svetlov@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/introduction-to-aiohttp", - "admin_type": "", - "companies": "DataRobot" - }, - "427": { - "abstract_short": "Beginning programmers or Python beginners may find it overwhelming to implement a machine learning algorithm. Increasingly machine learning is becoming more applicable to many areas. This talk introduces key concepts and ideas and uses Python to build a basic classifier - a common type of machine learning problem. Providing some jargon to help those that may be self-educated or currently learning ", - "sub_title": "A novice's inquiry into classification.", - "timerange": "2016-07-18 16:00:00, 2016-07-18 16:30:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@loooorenanicole", - "id": 427, - "speakers": "Lorena Mesa", - "title": "Is that spam in my ham?", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Education", - "Beginners", - "Case Study", - "Machine-Learning" - ], - "abstract_long": [ - "Supervised learning, machine learning, classifiers, big data! What in the world are all of these things? As a beginning programmer the questions described as \"machine learning\" questions can be mystifying at best.\r\n\r\nIn this talk I will define the scope of a machine learning problem, identifying an email as ham or spam, from the perspective of a beginner (non master of all things \"machine learning\") and show how Python can help us simply learn how to classify a piece of email.\r\n\r\nTo begin we must ask, what is spam? How do I know it \"when I see it\"? From previous experience of course! We will provide human labeled examples of spam to our model for it to understand the likelihood of spam or ham. This approach, using examples and data we already know to determine the most likely label for a new example, uses the Naive Bayes classifier.\r\n\r\nOur model will look at the words in the body of an email, finding the frequency of words in both spam and ham emails and the frequency of spam and ham. Once we know the prior likelihood of spam and what makes something spam, we can try applying a label to a new example.\r\n\r\nThrough this exercise we will see at a basic level what types of questions machine learning asks, learn to model \"learning\" with Python, and understand how learning can be measured." - ], - "abstract_extra": "This topic arose from a talk about a Naive Bayes white paper I did in Chicago (Papers We Love Chicago - May 2015 http://www.meetup.com/Papers-We-Love-Chicago/events/222024292/) that discussed the efficacy of Naive Bayes as well as what types of problems Naive Bayes performs well on. The learning curve was steep when reading this white paper, it was heavy on math and jargon for those that are not from the machine learning world. In fact I am a policy analyst who turned programmer just over two years ago (at the time of PyCon 2016). Most of my learning is self-taught or self-guided thus I find it important to be curious and use that curiosity to provide content in accessible formats to all.\r\n\r\nThis talk is not meant to be an exhaustive understanding of Naive Bayes but a focused talk on what machine learning questions look like and how Python can answer it.\r\n\r\nPast speaking experience:\r\n\r\nI performed this talk at PyOhio 2015 (http://www.pyvideo.org/video/3690/is-that-spam-in-my-ham-a-novices-inquiry-into-c) and received a good amount of feedback as well as additional questions to help me better direct the talk. \r\n\r\nI've taught quite a bit with the Girl Develop It Chicago chapter and as an original (and current) co-organizer and co-founder of PyLadies Chicago I've taught several of our workshops. For a listing of the workshops I've taught and the talks I've given can be found at - http://lorenamesa.com/pages/speaking.html. \r\n\r\nI spoke at PyTennessee in Feb 2016 on a similar beginner data collection and modeling exercise with some basic machine learning analysis. The talk had amazing feedback and I am now building out smaller workshops around it. I find that many beginner programmers have an overwhelming fear of trying to take on such topics and think that this would be a great talk for beginners to start learning.\r\n", - "tag_categories": [ - "Educational", - "Educational", - "Case Study", - "Data Science" - ], - "emails": "me@lorenamesa.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/is-that-spam-in-my-ham", - "admin_type": "", - "companies": "Sprout Social, Inc." - }, - "539": { - "abstract_short": "This talk shows the Python Descriptors, detailing their behaviour with a detailed practical example, so we can understand the power and flexibility they give. As a bonus track, class decorators are explained.", - "sub_title": "Get to know in the intimacy one of the most powerful and elegant corners of Python: Descriptors!", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@facundobatista", - "id": 539, - "speakers": "Facundo Batista", - "title": "It's not magic: descriptors exposed", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Python general" - ], - "abstract_long": [ - "This talk presents, using a detailed practical example, the Python Descriptos.\r\n\r\nThe behaviour of descriptors mechanisms is detailed, showing their power and flexibility.\r\n\r\nFinally, as a bonus track and to complete the used practical example, class descriptors are explained.\r\n\r\n" - ], - "abstract_extra": "I gave this talk in last PyCon Argentina, the result was awesome.\r\n\r\nAlso note that I created (and gave) this talk together with Joaquin Sorianello, but I can give it myself without any problem.", - "tag_categories": [ - "Python" - ], - "emails": "facundobatista@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/its-not-magic-descriptors-exposed", - "admin_type": "", - "companies": "Canonical" - }, - "545": { - "abstract_short": "There should be something for everyone in this whistle\u2013stop tour of iteration in Python setting off from `for`\u2013loops, and riding cross\u2013country to multiplexing coroutines!\r\n\r\nSee and hear the amazing sights and sounds of list comprehensions, and generators. Take in the amazing vistas from `itertools`, and be amazed at the magnificent `yield`!", - "sub_title": "A whistle\u2013stop tour of iteration in Python", - "timerange": "2016-07-22 16:15:00, 2016-07-22 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@sneeu", - "id": 545, - "speakers": "John Sutherland", - "title": "Iteration, iteration, iteration", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Beginners", - "Python general", - "Programming", - "Functional Programming" - ], - "abstract_long": [ - "There should be something for everyone in this whistle\u2013stop tour of iteration in Python setting off from `for`\u2013loops, and riding cross\u2013country to multiplexing coroutines!\r\n\r\nSee and hear the amazing sights and sounds of list comprehensions, and generators. Take in the amazing vistas from `itertools`, and be amazed at the magnificent `yield`!\r\n\r\nWe\u2019ll take detours to higher\u2013order functions, closures, and decorators. And cover the FP inspired builtins `map`, `filter`, and `reduce`, as well as the epitome of Pythonic programming, `enumerate`." - ], - "abstract_extra": "This talk was given at the \u201cPython Edinburgh Mini Conference\u201d in 2011 (http://sneeu.com/talks/pemc-2011/iteration/), but my plan is to completely rewrite the talk from scratch. Examples will be in Python 3.", - "tag_categories": [ - "Educational", - "Python", - "Programming", - "Programming" - ], - "emails": "john@sneeu.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/iteration-iteration-iteration", - "admin_type": "", - "companies": "FanDuel" - }, - "423": { - "abstract_short": "Sure you can do a chunk of scientific exploration and stuff in Jupyter in your choice of language supplemented with visuals and that's already awesome !\r\n\r\nBut let's head off the beaten track a little to look at other uses, especially command-line.\r\n\r\nWe'll look at some alternate uses of Jupyter ...\r\n", - "sub_title": "Sure you can do science, data analysis - but also CLI, tutorials, cheat sheats, blog, presentations", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@mjbright", - "id": 423, - "speakers": "Mike BRIGHT", - "title": "Jupyter for everything else", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Visualization", - "Use Case", - "Jupyter/iPython Notebook", - "Docker", - "Command-Line" - ], - "abstract_long": [ - "Sure you can do a chunk of scientific exploration and stuff in Jupyter in your choice of language supplemented with visuals and that's already awesome !\r\n\r\nBut let's head off the beaten track a little to look at other uses, especially command-line.\r\n\r\nWe'll look at some alternate uses of Jupyter ...\r\n\r\n - Write command-line tutorials, cheat sheets in an easy to maintain format.\r\n - Perform visualization tasks for command-line tools\r\n - Write blog posts\r\n - Create interactive presentations (thanks Damian !)\r\n - Publish interactive books, articles and blog posts\r\n - HTML/js/css experimentation\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "**45 min version**\r\n\r\nI regularly use Jupyter to document my own creations\r\n\r\n - Command-line cheat sheets\r\n - Presentations via RISE\r\n - \"Command-line\" demos of any utility\r\n - I do Docker demos this way\r\n - I do Docker Build labs this way\r\n - PyMongo\r\n - HTML/JS/CSS experiments\r\n\r\nIt ain't rocket science, but it works for me .. .and maybe for you too.\r\n\r\nHere's my repo of past workshops.\r\n https://github.com/mjbright/jupyter_notebooks/\r\n\r\nObviously all talk (and lab) materials will be available on github as well as on your site.\r\n\r\n", - "tag_categories": [ - "Data Science", - "Best Practice and Use Cases", - "Python", - "DevOps", - "Programming" - ], - "emails": "europython@mjbright.net", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/jupyter-for-everything-else", - "admin_type": "", - "companies": "HPE" - }, - "662": { - "abstract_short": "We are using Python to help the National Grid in the UK to balance electricity production and usage. We do this by installing Python powered devices at customers sites that allow us to monitor and set control criteria to automatically turn on and off power consuming and producing devices when there is a mismatch between electricity supply and demand. \r\nIn this talk we will be talking about how and why we have used Python, as well as where in our system we would like to use Python.", - "sub_title": "Balancing the National Grid with Python and IoT", - "timerange": "2016-07-19 16:15:00, 2016-07-19 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 662, - "speakers": "Scott Reeve", - "title": "Keeping the Lights on with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Hardware/IoT Track", - "Case Study", - "Internet of Things (IoT)" - ], - "abstract_long": [ - "We are using Python to help the National Grid in the UK to balance electricity production and usage. We do this by installing Python powered devices at customers sites that allow us to monitor and set control criteria to automatically turn on and off power consuming and producing devices when there is a mismatch between electricity supply and demand. These devices talk to our Python powered cloud based system using the 3g network, giving us near real-time monitoring of our customers assets.\r\nOur entire infrastructure is written in Python, from our billing systems, data analytics systems and customer portal all the way through to our on site industrial system interfaces. In this talk we will be talking about how and why we have used Python, where we have had problems, as well as where in our system we would like to use Python and why we cannot. We will also be talking about what we are going to do next, moving our system from near real time monitoring to near real-time control, using Python for both system modelling and control. We will discuss how we are using Python to creating a system that monitors the balance between electricity supply and demand many times per second and is able to provide a corrective control based on the sum of the output of a dynamic set of our customer sites and the challenges that presents." - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "Case Study", - "Hardware" - ], - "emails": "scott.reeve@limejump.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keeping-the-lights-on-with-python", - "admin_type": "", - "companies": "Limejump Ltd" - }, - "488": { - "abstract_short": "El m\u00f3dulo itertools es una de las piedras angulares de la programaci\u00f3n avanzada en Python. Esta charla proporciona consejos pr\u00e1cticos del \u00e1lgebra de iteradores que pueden aplicarse de forma inmediata. Descubrir el m\u00f3dulo itertools supone arrancar el velo de nuestros ojos, y una vez usadas funciones como `repeat()`, `takewhile()`, `dropwhile()` o `product()` no hay marcha atr\u00e1s \u2014 es imposible volver al mundo de los meros mortales donde las soluciones son m\u00e1s complejas y necesitan m\u00e1s memoria.", - "sub_title": "Aumentando la letalidad y elegancia de nuestro c\u00f3digo gracias al m\u00f3dulo itertools.", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@pyctor", - "id": 488, - "speakers": "V\u00edctor Terr\u00f3n", - "title": "Kung Fu al amanecer con itertools", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Clean Code", - "Best Practice", - "Functional Programming" - ], - "abstract_long": [ - "El m\u00f3dulo itertools es una de las piedras angulares de la programaci\u00f3n avanzada en Python. Parte de la biblioteca est\u00e1ndar, nos ofrece un \u00e1lgebra de iteradores que permite encadenar abstracciones de forma elegante, haciendo posibles soluciones sencillas a la par que m\u00e1s eficientes en su consumo de memoria.\r\n\r\nEl objetivo de esta charla es el de, ante todo, proporcionar consejos y lecciones claras que puedan aplicarse de forma inmediata. Ilustr\u00e1ndolo con numerosos ejemplos, los asistentes abandonar\u00e1n la charla habiendo asimilado como m\u00ednimo varios conceptos que mejorar\u00e1n indiscutible e irremediablemente su c\u00f3digo. El \u00e9nfasis se har\u00e1 en mostrar casos espec\u00edficos en los que una soluci\u00f3n tradicional puede ser mejorada una y otra vez con funciones del m\u00f3dulo itertools. \r\n\r\nSupongamos, por ejemplo, que queremos alternar indefinidamente entre dos valores: -1 y 1. El reci\u00e9n iniciado utilizar\u00eda una variable cuyo valor ir\u00eda modificando a cada paso y el usuario medio quiz\u00e1s optar\u00eda por un generador infinito. Ambas soluciones dignas y honorables, pero que palidecen ante la maestr\u00eda del artista marcial que que tan s\u00f3lo necesita `itertools.cycle()`. Porque el m\u00f3dulo itertools es as\u00ed: una vez ca\u00eddo el velo de nuestros ojos y descubiertas funciones como `repeat()`, `takewhile()`, `dropwhile()` o `product()`, no hay marcha atr\u00e1s. En esta charla vamos a aprender a reconocer cu\u00e1ndo pueden ser usadas, proporcion\u00e1ndonos en una \u00fanica l\u00ednea lo que para los meros mortales supone mucho m\u00e1s trabajo." - ], - "abstract_extra": "Tengo una enemistad personal con los ponentes aburridos, as\u00ed que me tomo muy en serio que mis charlas sean amenas y todo lo divertidas posibles \u2014 y por el momento, cruzo los dedos, parece que lo he logrado. Mis charlas en las PyConES se encuentran todos los a\u00f1os entre las que m\u00e1s reproducciones tienen en YouTube, si es que eso significa algo:\r\n\r\n- 2013: [https://www.youtube.com/watch?v=QZiX75rbkuI][1]\r\n- 2014: [https://www.youtube.com/watch?v=MgRdg3s8n3E][2]\r\n- 2015: [https://www.youtube.com/watch?v=8TDZsaATmqQ][3] [charla de clausura]\r\n\r\nEn ingl\u00e9s tan s\u00f3lo he dado una charla hasta la fecha, en 2015:\r\n[https://www.youtube.com/watch?v=oSOco7qQujU][4]\r\n\r\n [1]: https://www.youtube.com/watch?v=QZiX75rbkuI\r\n [2]: https://www.youtube.com/watch?v=MgRdg3s8n3E\r\n [3]: https://www.youtube.com/watch?v=8TDZsaATmqQ\r\n [4]: https://www.youtube.com/watch?v=oSOco7qQujU\r\n", - "tag_categories": [ - "Educational", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "quintanar@gmail.com", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/kung-fu-al-amanecer-con-itertools", - "admin_type": "", - "companies": "Google" - }, - "635": { - "abstract_short": "The itertools module is one of the cornerstones of advanced programming in Python. This talk offers practical advice about iterator algebra that can be put into practice immediately. Discovering the itertools module means taking the veil from our eyes, and once we use functions such as repeat(), takewhile(), dropwhile() or product(), there is no return \u2014 it is impossible to come back to the world of the mere mortals, where solutions are more complex and need more memory.", - "sub_title": "Increasing the lethality and elegance of our code with the itertools module.", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@pyctor", - "id": 635, - "speakers": "V\u00edctor Terr\u00f3n", - "title": "Kung Fu at Dawn with Itertools", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Clean Code", - "Best Practice", - "Functional Programming" - ], - "abstract_long": [ - "The itertools module is one of the cornerstones of advanced programming in Python. Part of the standard library, it provides an iterator algebra that allows us to elegantly chain abstractions, enabling solutions that are both simpler and more memory efficient.\r\n\r\nThe goal of this talk is to offer practical advice and clear lessons that can be immediately put into practice. Illustrating it with numerous examples, attendees will leave having assimilated at least several concepts that will improve their code undeniably and irremediably. Emphasis will be on showing specific cases where a traditional solution can be overhauled over and over with functions from the itertools module.\r\n\r\nLet\u2019s say, for example, that we want to alternate indefinitely between two values: -1 and 1. The novice would use a variable, updating its value at each step, and the average user would maybe opt for an endless generator. Both are worthy and honorable solutions, but they pale before the mastery of the martial artist who only needs itertools.cycle(). Because that is the nature of the itertools module: once the veil falls from our eyes and we come across functions such as repeat(), takewhile(), dropwhile() or product(), there is no return. In this talk we will learn to identify when they can be used, accomplishing with a single line of code what for the mere mortals takes much more effort." - ], - "abstract_extra": "I have a personal feud with boring speakers, so I do my best trying to make my talks as entertaining and funny as possible \u2014 and so far, I am crossing my fingers, it seems that I have succeeded. My talks at PyCon Spain are every year among the most viewed on YouTube, if that means anything:\r\n\r\n- 2013: [https://www.youtube.com/watch?v=QZiX75rbkuI][1] [Spanish]\r\n- 2014: [https://www.youtube.com/watch?v=MgRdg3s8n3E][2] [Spanish]\r\n- 2015: [https://www.youtube.com/watch?v=8TDZsaATmqQ][3] [closing keynote, Spanish]\r\n\r\nI have only given one talk in English so far, in 2015:\r\n[https://www.youtube.com/watch?v=oSOco7qQujU][4]\r\n\r\n [1]: https://www.youtube.com/watch?v=QZiX75rbkuI\r\n [2]: https://www.youtube.com/watch?v=MgRdg3s8n3E\r\n [3]: https://www.youtube.com/watch?v=8TDZsaATmqQ\r\n [4]: https://www.youtube.com/watch?v=oSOco7qQujU\r\n", - "tag_categories": [ - "Educational", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "quintanar@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/kung-fu-at-dawn-with-itertools", - "admin_type": "", - "companies": "Google" - }, - "588": { - "abstract_short": "Programming is one of the most important 21st-century skills and tons of different online and offline resources can help you to master it.\r\n\r\nOn the other hand, playing games is really effective way for us to learn and it's also the most fun.\r\n\r\nBut is it possible to learn real programming language like Python by playing a game? \r\n\r\nIn this talk I'll show you some projects that allow you to achieve that. I also want to inspire you to help such projects and to suggest ideas how to do that.", - "sub_title": "", - "timerange": "2016-07-18 16:30:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 588, - "speakers": "Liana Bakradze", - "title": "Learn Python The Fun Way", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Educational Track" - ], - "abstract_long": [ - "Programming is one of the most important 21st-century skills. It doesn't only provide promising career opportunities but teaches how to reason logically, systematically and creatively. \r\n\r\nCode readability, rich standard library, straightforward syntax and other features make Python a great language for teaching beginners how to program. Python community is very supportive and friendly to newcomers and does awesome work to make Python available to everyone. Tons of different online and offline resources can help you to master Python programming. Problem solving is the classical way of learning how to code. But it can be boring for some people, especially for kids.\r\n\r\nOn the other hand, playing games is really effective way for us to learn and it's also the most fun. You can find different games designed to teach basics of programming, but most of them use special visual environments and don't teach real text based languages. \r\n\r\nBut is it possible to learn programming language like Python by playing a game? \r\n\r\nIn this talk I'll show you a few projects for different age and levels that allow you to achieve that. I'll pay attention on methods that are used to teach programming.\r\n\r\nI also want to inspire you to help such projects and to suggest ideas how to do that." - ], - "abstract_extra": "", - "tag_categories": [ - "Educational", - ">>> Suggested Track" - ], - "emails": "liana.bakradze@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/learn-python-the-fun-way", - "admin_type": "", - "companies": "JetBrains" - }, - "716": { - "abstract_short": "What we learned along the way - processes, organization, technology and people - from 0 to 11 million students, 40 thousand courses and 20 thousand teachers.", - "sub_title": "", - "timerange": "2016-07-20 16:15:00, 2016-07-20 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@rbanffy", - "id": 716, - "speakers": "Ricardo B\u00e1nffy", - "title": "Lessons Learned after 190 Million Lessons Served", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Management", - "Django", - "Scaling" - ], - "abstract_long": [ - "What we learned along the way - processes, organization, technology and people - from 0 to 11 million students, 40 thousand courses and 20 thousand teachers.", - "", - "", - "" - ], - "abstract_extra": "-", - "tag_categories": [ - "Development Methods", - "Application Frameworks", - "DevOps" - ], - "emails": "rbanffy@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/lessons-learned-after-190-million-lessons-served", - "admin_type": "", - "companies": "Udemy" - }, - "523": { - "abstract_short": "Web APIs that are easier to understand, develop, test and use, is a popular subject. \"An API is only as good as its documentation\". We decided to play with this proverb and leverage the power of documentation. We propose to use the code documentation and the type system to provide lots of free features: explorable APIs, better error messages, automatic testing. \r\n\r\nPython is perfect to explore code and documentation dynamically. We'll demonstrate what we came up to and the lessons we've learned.", - "sub_title": "The day you'll prefer writing documentation over code: automatic UI/API and tests from documentation", - "timerange": "2016-07-21 16:15:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 523, - "speakers": "Rudy Sicard", - "title": "Leveraging documentation power for better web APIs", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Django", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "APIs" - ], - "abstract_long": [ - "'Rich' web APIs that are easier to understand, develop, test and use, is a popular subject. There are a lot of new specification languages (e.g. swagger, apiblueprint ...) and libraries (django-rest-framework, drf ...) that provide features in this direction. Following the old proverb \"An API is only as good as its documentation\", we decided to play with these ideas and focus on leveraging the power of documentation. We propose to use the code documentation and the type system to provide: \r\n - browsable APIs, that are easy to interact with and visualize, reducing the need to provide custom UIs \r\n - verification of inputs/outputs along with precise error message if needed \r\n - automatic [de]-serialization of inputs/ouputs outside of the domain code\r\n - smart exception handling, e.g. exceptions that are not documented are automatically converted into internal errors\r\n - automatic testing, e.g. input, output and result including exceptions are tested ensuring the code works and the documentation is up-to-date. \r\n\r\n\r\nThis use case is one of the rare situation where introspection is desirable and unavoidable. And Python is a good language to explore/exploit code and documentation dynamically. The perfect excuse to spend some time on meta coding a first implementation while being at work. We'll demonstrate what we came up to, the advantages and limitations compared to other approaches. And we'll share the lessons we learned from this experiment.\r\n\r\n" - ], - "abstract_extra": "In my previous compagny I worked (design & implementation) on a functional language dedicated to web programming. I wrote one of the blog entry of the company.\r\nhttp://blog.opalang.org/2012/09/programming-tools-ux-when-statically.html\r\n\r\nI have written two articles in machine learning journals:\r\n* Rudy Sicard, T. Arti\u00e8res, E. Petit, Learning iteratively a classifier using the Bayesian Model Averaging Principle, Pattern Recognition, http://www.sciencedirect.com/science/article/pii/S0031320308004895\r\n* Rudy Sicard, Thierry Arti\u00e8res, Modelling sequences using pairwise relational features, to appear in Pattern Recognition, http://www.sciencedirect.com/science/article/pii/S0031320308004895\r\n\r\nand give several speech in machine learning conferences:\r\n* R. Sicard, Th. Arti\u00e8res, E. Petit : \u201cModeling On-line Handwriting Using Pairwise Relational Features\u201d, International Workshop on Frontiers in Handwriting Recognition, La Baule, France, pp. 267-274 (2006)\r\n* R. Sicard, Th. Arti\u00e8res, E. Petit : \u201cMod\u00e8lisation de l\u2019\u00e9crit en ligne \u00e0 l\u2019aide de reseaux bay\u00e9siens et de caract\u00e9ristiques relationnelles\u201d, Colloque International Francophone sur l'Ecrit et le Document (CIFED'06), Fribourg, Suisse (2006)\r\n* R. Sicard, Th. Arti\u00e8res : \u201cPatch Learning for Incremental Classifier Design\u201d, European Conference on Artificial Intelligence (ECAI 2006), Riva del Garda, Italie, pp. 807-808 (2006)\r\n* R. Sicard, Th. Arti\u00e8res : \u201cAn application of bayesian model averaging to histograms\u201d, Grenoble, France (2007)", - "tag_categories": [ - "Application Frameworks", - "Web", - "Web" - ], - "emails": "polux.moon@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/leveraging-documentation-power-for-better-web-apis", - "admin_type": "", - "companies": "Criteo" - }, - "590": { - "abstract_short": "Many times these logs are thrown away or just sit uselessly somewhere on disk. I would like to show you how you can make sense of all that data, how to collect and clean them, store them in a scalable fashion and, finally, explore and search across various systems.", - "sub_title": "Centralised logging for fun and profit.", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@honzakral", - "id": 590, - "speakers": "Honza Kr\u00e1l", - "title": "Log all the things!", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Tooling", - "Infrastructure", - "Operations", - "DevOps general" - ], - "abstract_long": [ - "Centralized logging (and the ELK stack) is proving itself to be a very useful tool in managing a production infrastructure. When combined with other data sources (application logging, business data, ...) it can provide even more insight.\r\n\r\nThis talk is an introduction into the area with some overview of the motivation, tools and techniques that can prove useful. We will show how the open source ELK (Elasticsearch Logstash and Kibana) stack can be used to implement this.\r\n\r\nIt is geared towards people familiar with the DevOps concept that are looking to improve their lives by introducing smarter tools.", - "", - "", - "" - ], - "abstract_extra": "I have spoken at EuroPython before, including last year. This talk is an updated version of my talk from PyCon Australia since I assume there will be minimum overlap in audiences. Video of the talk: https://www.youtube.com/watch?v=i3rH5cU-Uz4", - "tag_categories": [ - "Programming", - "DevOps", - "DevOps", - "DevOps" - ], - "emails": "honza.kral@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/log-all-the-things", - "admin_type": "", - "companies": "Elastic" - }, - "415": { - "abstract_short": "Machine Learning is the next big thing. If you are a dummy in terms of Machine Learning, but want to get started with it... there are options.\r\n\r\nStill, thanks to the Web, Python and OpenSource libraries, we can overcome this situation and do some interesting stuff with Machine Learning.", - "sub_title": "If you're a Machine Learning dummy but are interested in the topic, this is for you.", - "timerange": "2016-07-18 16:30:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 415, - "speakers": "Javier Arias Losada", - "title": "Machine Learning for dummies with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Cython", - "Predictions", - "Deep Learning", - "Open-Source", - "Machine-Learning" - ], - "abstract_long": [ - "Have you heard that Machine Learning is the next big thing?\r\n\r\nAre you a dummy in terms of Machine Learning, and think that is a topic for mathematicians with black-magic skills?\r\n\r\nIf your response to both questions is 'Yes', we are in the same position.\r\n\r\nStill, thanks to the Web, Python and OpenSource libraries, we can overcome this situation and do some interesting stuff with Machine Learning." - ], - "abstract_extra": "I regularly speak at different venues:\r\n- Telefonica Developers conference\r\n- Python and Javascript meetups in Barcelona\r\n- Oscon amsterdam 2015: http://conferences.oreilly.com/oscon/open-source-eu-2015/public/schedule/detail/44008\r\n- NoSQL matters 2013 : https://2013.nosql-matters.org/bcn/index.html%3Fp=2344.html#abstract_266016455\r\n- MediterraneaJS 2015 - http://mediterraneajs.eu/people/javier_arias.html\r\n\r\nSome of my presentations: http://www.slideshare.net/javierarilos\r\n", - "tag_categories": [ - "Python", - "Data Science", - "Data Science", - "Open Source", - "Data Science" - ], - "emails": "javier.arilos@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/machine-learning-for-dummies-with-python", - "admin_type": "", - "companies": "Telefonica I+D" - }, - "642": { - "abstract_short": "In Machine Learning, the power of combining many models have proven to successfully provide better results than single models. \r\n\r\nThe primary goal of the talk is to answer the following questions:\r\n1) Why and How ensembles produce better output?\r\n2) When data scales, what's the impact? What are the trade-offs to consider? \r\n3) Can ensemble models eliminate expert domain knowledge?", - "sub_title": "United we stand, divided we fall", - "timerange": "2016-07-22 14:00:00, 2016-07-22 14:30:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@bargava", - "id": 642, - "speakers": "Bargava Subramanian", - "title": "Machine Learning: Power of Ensembles", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Predictions", - "Machine-Learning", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Analytics" - ], - "abstract_long": [ - "It is relatively easy to build a first-cut machine learning model. But what does it take to build a reasonably good model, or even a state-of-art model ?\r\n\r\nEnsemble models. They are our best friends. They help us exploit the power of computing. Ensemble methods aren't new. They form the basis for some extremely powerful machine learning algorithms like random forests and gradient boosting machines. The key point about ensemble is that consensus from diverse models are more reliable than a single source. This talk will cover how we can combine model outputs from various base models(logistic regression, support vector machines, decision trees, neural networks, etc) to create a stronger/better model output.\r\n\r\nThis talk will cover various strategies to create ensemble models.\r\n\r\nUsing third-party Python libraries along with scikit-learn, this talk will demonstrate the following ensemble methodologies:\r\n1) Bagging\r\n2) Boosting\r\n3) Stacking\r\n\r\nReal-life examples from the enterprise world will be show-cased where ensemble models produced better results consistently when compared against single best-performing models.\r\n\r\nThere will also be emphasis on the following: Feature engineering, model selection, importance of bias-variance and generalization.\r\n\r\nCreating better models is the critical component of building a good data science product. \r\n\r\nA preliminary version of the slides is available [here](https://speakerdeck.com/bargava/power-of-ensembles)", - "", - "", - "" - ], - "abstract_extra": "**Previous Presentations**\r\n\r\nOne version of the talk was previously presented at \r\n* [PyCon Ireland -2015 - Machine Learning - Power of Ensembles](http://lanyrd.com/2015/pyconie/sdrpqd/)\r\n\r\nThe speaker has presented at a number of conferences. Some of them are:\r\n\r\n* [PyCon Ireland 2015 - Workshop on Deep Learning](http://lanyrd.com/2015/pyconie/sdrpqd/)\r\n* [Pycon Poland 2015 - Workshop on Deep Learning](http://pl.pycon.org/2015/agenda_en.html)\r\n* [Fifth Elephant 2015, Bangalore India. India's largest data analytics conference -workshop on Deep Learning](https://fifthelephant.talkfunnel.com/2015/10-introduction-to-deep-learning)\r\n [talk](https://fifthelephant.talkfunnel.com/2015/11-visualising-multi-dimensional-data)\r\n* [IEEE International Conference on Cloud Computing for Emerging Markets - Tutorial on Deep Learning](http://conferences.computer.org/ccem/program.html)\r\n* [Bangalore Python Users Meetup Sep 2015 - Data Analysis workshop](http://www.meetup.com/BangPypers/events/210041222/)\r\n* [Scipy India 2015 - Workshop on Data Analysis](http://scipy.in/2015)\r\n( [PyCon India 2015 - Workshop on Statistics](https://in.pycon.org/2015/)", - "tag_categories": [ - "Data Science", - "Data Science", - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "bargava@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/machine-learning-power-of-ensembles", - "admin_type": "", - "companies": "Cisco" - }, - "384": { - "abstract_short": "You will see several different walking robots controlled with Python in different ways, and learn how they were built and programmed.", - "sub_title": "Making Python run on robots", - "timerange": "2016-07-19 14:00:00, 2016-07-19 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 384, - "speakers": "Radomir Dopieralski", - "title": "Making robots walk with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Algorithms", - "Gadgets", - "Engineering", - "Hardware/IoT Track", - "Cross-Platform-Development" - ], - "abstract_long": [ - "Making a robot walk is not easy, especially when all it has for brains is a small microcontroller which you have to program in C. During this talk you will see different ways in which such a robot can be controlled in Python, either by using remote control, with the Python program running on a stationary computer, by putting a small computer, such as a Raspberry Pi on it, or by programming it with Micropython, a version of the Python language designed for microcontrollers. I will also explain the basic problems with walking robots and how Python can be used to overcome them. Finally, I will show some of the robots I have built.", - "", - "", - "" - ], - "abstract_extra": "I have shown those robots on several conferences already:\r\n\r\nA poster session at PyCon.US: https://us.pycon.org/2015/schedule/presentation/448/\r\nA talk at PyCon.PL: https://www.youtube.com/watch?v=-PisXGVe-lE\r\nA talk at DevConf.cz: http://sched.co/2BkO\r\n\r\nSince then I have made considerable progress, and things became even easier for hobbyists. There are more Micropython boards available, the Micropython language itself became better, there is a new, smaller, Raspberry Pi board, and there are lots of other innovations popping up constantly. We live in the future, and I will talk about some of the exciting new things too.\r\n\r\n", - "tag_categories": [ - "Data Science", - "Hardware", - "Everything Else", - ">>> Suggested Track", - "Python" - ], - "emails": "ep2016@sheep.art.pl", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/making-robots-walk-with-python", - "admin_type": "", - "companies": "" - }, - "734": { - "abstract_short": "Kubernetes is the Google Borg inspired control plane for Docker containers. It has a great API but needs a load of HTTP client code and JSON processing to use it from Python. This talk introduces Kube, a Python wrapper around the Kubernetes API that enables you to manage your Kubernetes cluster in a pythonic way while avoiding any Kubernetes API peculiarities. Programmers and operations folk who are interested in interacting with the Kubernetes API using Python.", - "sub_title": "Manage Kubernetes with Python using the open source, pythononic API wrapper we developed called Kube", - "timerange": "2016-07-18 14:15:00, 2016-07-18 14:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@cobecto", - "id": 734, - "speakers": "David Charles", - "title": "Managing Kubernetes from Python using Kube", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Operations", - "Infrastructure", - "Open-Source", - "python", - "System Administration" - ], - "abstract_long": [ - "## Abstract\r\nDocker has had a transformative influence on the way we deploy software and Kubernetes, the Google Borg inspired control plane for Docker-container- hosting-clusters, is gaining similar momentum. Being able to easily interact with this technology from Python will become an increasingly important capability in many organisations. I'll discuss what the motivations behind writing Kube. We'll dive into Kube using the Python interactive interpreter, getting connected to the API, and simple viewing and label update operations. Finally I'll discuss more advanced resource management activities like Kube's 'watch' API capability.\r\n\r\n## Objectives\r\nAttendees will learn about the key concepts in getting resource information out of their Kubernetes cluster using Kube.\r\n\r\n## Outline\r\n1. Setting the scene (3 minutes)\r\n1. Other Python kubernetes wrappers (2 minutes)\r\n1. Kubernetes concepts quick recap (5 minutes)\r\n1. Dive into Kube in the Python interactive interpreter (10 minutes)\r\n * Outline prerequisites\r\n * The entry point - a Cluster instance\r\n * Views and Items - two important Kube concepts\r\n * Item meta data: labels and versions\r\n1. More Kube features (5 minutes)\r\n * Creating and deleting resources\r\n * Using Kube's Watch API support\r\n * The cluster proxy attribute for when you need to get at the actual API.\r\n1. Q&A (5 minutes)" - ], - "abstract_extra": "## Additional\r\nThe Kubernetes interactions will be performed against a single node k-machine instance installed on a laptop. The talk essentially presents the quick-start portion of the Kube documentation.\r\n\r\n## Speaking experience\r\nThis would be the first time I have given a talk at a major conference but I regularly deliver talks at tech meet-ups. As CTO at Cobe.io, one of the EP2016 conference sponsors, a significant part of my job is delivering talks to prospective customers, clients and investors. A portion of the talk will be delivered performing simple operations in the python interactive shell and on the command line, but there's no complicated live coding.\r\n\r\nSome blog articles I've written:\r\nhttps://cobe.io/blog/authors/dave-charles/\r\n\r\nTech Tran Network video about monitoring: \r\nhttp://www.thettn.tv/headlines/a-brief-history-of-monitoring-david-charles.aspx", - "tag_categories": [ - "DevOps", - "DevOps", - "Open Source", - "", - "DevOps" - ], - "emails": "dave@cobe.io", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/managing-kubernetes-from-python-using-kube", - "admin_type": "", - "companies": "Cobe.io" - }, - "406": { - "abstract_short": "Mocking is a valuable technique for writing tests but mocking effectively is often a stumbling block for many developers and can raise questions about its overall value as a technique.\r\n\r\nThere will be a brief introduction to mocking, then a look at features and techniques of Python\u2019s unittest.mock library and cover some useful tips and common scenarios, so this will be useful to those who have some experience mocking but would like to do so more effectively.", - "sub_title": "Better mocking with Python", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@helenst", - "id": 406, - "speakers": "Helen Sherwood-Taylor", - "title": "Managing Mocks", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Test Driven Development (TDD)", - "Testing" - ], - "abstract_long": [ - "Mocking is a valuable technique for writing tests but mocking effectively is often a stumbling block for many developers and can raise questions about its overall value as a technique.\r\n\r\nThe audience will have some familiarity with unit testing and may have tried mocking before, but some introduction will be provided for those who haven\u2019t. We will look at some features and techniques of Python\u2019s unittest.mock library and cover some useful tips and common scenarios, so this will be useful to those who have some experience mocking but would like to do so more effectively.\r\n\r\nSummary of proposed content:\r\n\r\n1. A short introduction to what mocking is and why it is useful.\r\n2. Tour of Python\u2019s mock library and how to make the most of it\r\n * Creating and manipulating Mock objects\r\n * Setting up return values and side effects to control test environment\r\n * Inspecting mocks - different ways to examine a mock object and find out what happened during the test\r\n * How and where to patch\r\n3. Common mocking situations - scenarios where mocking is particularly useful and/or tricky to get right. For example - date/time, filesystem, read only properties\r\n4. Some discussion of when mocking is and isn't helpful.\r\n\r\nFocus will be mainly on Python's unittest.mock module but we will also have a brief look at some other useful libraries." - ], - "abstract_extra": "I gave this talk previously at PyCon UK last year (https://www.youtube.com/watch?v=haXUaGTp8Bc) which was my first speaking experience.\r\n\r\nI received some encouraging feedback and some interesting suggestions for improvement. I'd like to combine this with my own learnings over the last few months so I can bring a better talk to a wide audience.", - "tag_categories": [ - "Testing", - "Testing" - ], - "emails": "helen@rrdlabs.co.uk", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/managing-mocks", - "admin_type": "", - "companies": "" - }, - "527": { - "abstract_short": "When standard Python syntax doesn't cut it, apply metaclasses to make it do what you want. Here I present our metaclass-based implementation of a declarative GUI layout syntax to inspire ideas for what to do when your goals don't fit the Python syntax.", - "sub_title": "Use the power of metaclasses to bend Python to your needs", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@sm6xmm", - "id": 527, - "speakers": "Anders Hammarquist", - "title": "Metaclasses for fun and profit: Making a declarative GUI implementation", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Meta Classes", - "Use Case" - ], - "abstract_long": [ - "When overhauling the user interface of Autolabel's labeling printers, \r\nwe wanted a clean way to describe the layout of the settings widgets.\r\nThe structure we came up with was a declarative class layout that\r\nleverages Python's metaclass concept to build the underlying GTK\r\nwidget structure.\r\n\r\nI will present the implementation to hopefully inspire you to apply\r\nmetaclass techniques to problems that standard Python syntax can't\r\nquite solve. If that fails, you will at least have a way to\r\ndeclaratively construct GTK GUIs.\r\n\r\nA short, non-exaustive, summary of concepts I will mention includes\r\nmetaclasses (obviously), class hierarchies, method resolution\r\norder, super(), and anecdotes of dealing with GTK.\r\n\r\nYou may find some similarities with my talk on Python as a domain\r\nspecific language at Europython 2006\r\nhttp://indico.cern.ch/event/44/session/41/contribution/35" - ], - "abstract_extra": "Previous talks:\r\n\r\nPython as a domain specific language, Europython 2006\r\nhttp://indico.cern.ch/event/44/session/41/contribution/35\r\n\r\nMulti-document concistency with MondoDB, Europython 2012\r\nhttps://ep2013.europython.eu/conference/talks/multi-document-consistency-with-mongodb", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases" - ], - "emails": "sm6xmm@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/metaclasses-for-fun-and-profit-making-a-declarative-gui-implementation", - "admin_type": "", - "companies": "Open End AB" - }, - "453": { - "abstract_short": "The BBC micro:bit is a \"moon-shot\" project to provide an open programmable device for kids. The PSF were a partner in the project: the device runs MicroPython ~ a full reimplementation of Python 3. \r\n\r\nThis practical demonstration will show what the device does, how to program it, and how to contribute and/or set the appropriate wheels in motion to adopt and adapt the project for their own purposes.\r\n\r\nA practical demo-led presentation... what could possibly go wrong? ;-)", - "sub_title": "A practical demonstration that can't possibly go wrong. What's the worst that could happen?", - "timerange": "2016-07-18 14:15:00, 2016-07-18 14:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@ntoll", - "id": 453, - "speakers": "Nicholas Tollervey", - "title": "MicroPython on the BBC micro:bit", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Gadgets", - "Educational Track", - "MicroPython", - "Internet of Things (IoT)" - ], - "abstract_long": [ - "The BBC micro:bit is a small programmable device for children. A million of them have been handed out to the UK's 11 and 12 years olds. The Python Software Foundation was a partner in this moon-shot scheme and, thanks to the efforts of Damien George, MicroPython (a full reimplementation of Python 3) runs on the device. All the assets needed to recreate this project have been release under open-source licenses.\r\n\r\nThis practical demonstration shows what can be done with the device and how to program it. I'll provide advice on how best to introduce the device to children and teachers in your own locale.\r\n\r\nThe only prerequisite you need is a passion for Python, education and playing with a cool IoT gizmo. My goal is simply to give attendees enough information to have fun and make cool things with a micro:bit." - ], - "abstract_extra": "I regularly speak at conferences and other tech-related events (including PyconUK, PyConUS, Europython, O'Reilly's EdFoo, OpenTech, Techhub and various \"open source\" related meet-ups). In the past year I have been a keynote speaker at PyCon India (https://www.youtube.com/watch?v=Q3kXXtlviiM) and PyCon Slovakia.\r\n\r\nI created PyCon UK's education track in 2012 and have been the organiser ever since although I stepped down last year so I couldn't become a single point of failure. I also created and have organised the London Python Code Dojo since 2009.\r\n\r\nI blog at http://ntoll.org/ and a large number of my Python related demos created during the development of the BBC micro:bit can be found here: https://www.youtube.com/channel/UC9FMO_qG2eE9I1rMaCEZu7A\r\n\r\nI've written three books for O'Reilly (most recently \"Python in Education\" - http://www.oreilly.com/programming/free/python-in-education.csp) and have also written articles for Computer Shopper, O'Reilly Radar and The Guardian.\r\n\r\nI am a fellow of the Python Software Foundation.", - "tag_categories": [ - "Educational", - "Hardware", - ">>> Suggested Track", - "Python", - "Hardware" - ], - "emails": "ntollervey@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/micropython-on-the-bbc-microbit", - "admin_type": "", - "companies": "" - }, - "730": { - "abstract_short": "Are we looking in the wrong direction for artificial intelligence and machine learning?\r\n\r\nI'll discuss an older but perhaps more satisfying approach, that has been neglected in recent years.\r\n\r\nIt begins with questions in logic and language, and can be explored using easy techniques. I'll use simple Python programs to explore three key notions in this AI research: **loops**, **self-reference** and **tangled hierarchies**, themselves directly reflected in important programming concepts.", - "sub_title": "Approaching artificial intelligence from another direction", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@EvilDMP", - "id": 730, - "speakers": "Daniele Procida", - "title": "Minds, machines and Python", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "The Answer to Life the Universe and Everything Else", - "Machine-Learning" - ], - "abstract_long": [ - "In recent years, we've seen interesting and spectacular successes in artificial intelligence and machine learning, made possible by leaps in computing power and techniques able to harvest vast quantities of data.\r\n\r\nThe results are uncanny. We see them everywhere, from the personal assistants built into smartphones to the neural networks that do an astounding job of recognising images. However, they're also susceptible to the criticism that they represent not intelligence but a mere simulation of it, and that producing a convincing simulacrum has become more important than a genuine search for intelligence or learning.\r\n\r\nAt the same time, another, perhaps deeper, approach has become neglected in recent decades, along with the questions it asks about the nature of mind, intelligence and learning. This approach begins with fundamental questions in logic and language, and can be explored using some of the simplest programming techniques.\r\n\r\nIn this talk, I'll use simple Python programs to explore three key notions in this strand of artificial intelligence research: *loops*, *self-reference* and *tangled hierarchies*. The way these concepts directly reflect important concepts in programming suggests that for the programmer, this approach could be more interesting and satisfying, and simply more **fun,** than using huge ontologies and big data to create mere simulacra of intelligence.\r\n\r\nThe examples I use will be concrete and easy to understand, even for novice programmers." - ], - "abstract_extra": "I'm very excited by this talk - after many years I feel I am succeeding in bringing together a number of questions in the subject together in a way that works extremely well for programmers, and can use insights from programming itself to illuminate questions about the nature of intelligence.\r\n\r\nI'll be drawing upon multiple sources and work in a range of fields. They include the work of Douglas Hofstadter, language theorists, programmers, even poets and artists.\r\n\r\nMy own academic background is in philosophy, and I've presented some of this material to different audiences, including to mathematicians. This talk however will be aimed firmly at the general Python audience of EuroPython.\r\n\r\nAbout me\r\n===========\r\n\r\nI am a member of the Django core team and the board of the Django Software Foundation.\r\n\r\nI was the chair of the organising committee of DjangoCon Europe in Cardiff in 2014, and have been involved in several other international community conferences, including PyCon Namibia.\r\n\r\nI've previously spoken at events including DjangoCon US, DjangoCon Europe, PyCon Ireland, PyCon UK, PyCon Slovakia and PyCon Italia.", - "tag_categories": [ - "Everything Else", - "Data Science" - ], - "emails": "daniele.procida@divio.ch", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/minds-machines-and-python", - "admin_type": "", - "companies": "Divio" - }, - "503": { - "abstract_short": "Dutch startup MiniBrew intends to disrupt the beer market by introducing an easy-to-use beer brewing machine controlled by a mobile app and communicating with a Python backend. Users want real-time insights in their brewing process, which presented some challenges in terms of architectural design. In this talk Elements Interactive's Chesco discusses best practices and pitfalls of the IoT architecture of MiniBrew by diving into message queues, protocol buffers and full-session logging.", - "sub_title": "A use case of Python as the driver of an IoT architecture for MiniBrew", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@chescales", - "id": 503, - "speakers": "Francisco Igual", - "title": "MiniBrew: Brewing beer with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Hardware/IoT Track", - "Architecture", - "Internet of Things (IoT)", - "APIs", - "RESTful" - ], - "abstract_long": [ - "The number one alcoholic drink in the world is undoubtedly beer. With the rise of craft beers, also homebrewing has become very popular in recent years, although it is still a complex and expensive hobby. Dutch startup MiniBrew intends to change that with their revolutionary beer brewing machine, which is controlled by a mobile app and communicates with a Python API backend. \r\n \r\nIn this talk Chesco will share his ideas and experiences in utilizing Python in the backend architecture for the MiniBrew project he and his team are working on at MiniBrew's development partner Elements Interactive. \r\n \r\nAs many IoT projects, the ingredients for MiniBrew are a device with a limited chipset and internet connection, a backend to store the data acting as the mastermind and a mobile app to allow end users to control the brewing process. \r\n \r\nThe fact that we want users to know in real-time how their beer brewing process is doing presented some challenges which required us to come up with a competitive architecture that would both give real-time status updates and not saturate the server with continuous calls. \r\n \r\nChesco discusses best practices and pitfalls in designing and developing IoT architecture by diving into the RabbitMQ message broker, the MQTT protocol and protocol buffers. He will focus on the REST API and CMS site written in Python, elaborating on high frequency data in the apps, scalability, full-session logging and overcoming common architectural challenges.", - "", - "", - "" - ], - "abstract_extra": "For more information on Elements Interactive, please visit: https://www.elements.nl/\r\nFor more information on MiniBrew, please visit: http://www.minibrew.io/", - "tag_categories": [ - ">>> Suggested Track", - "Programming", - "Hardware", - "Web", - "Web" - ], - "emails": "chesco@elements.nl", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/minibrew-brewing-beer-with-python", - "admin_type": "", - "companies": "Elements Interactive" - }, - "414": { - "abstract_short": "The OpenGL api is one of the oldest (and most used) graphics library in both the gaming and simulations world. In latest years the api has been extremely re-designed to support modern hardware features available in GPUs. \r\nCan we build realtime graphics application with Python using OpenGL ? Well, obviously Yes !", - "sub_title": "Learn how to use OpenGL to build your game or simulations using latest versions of the API", - "timerange": "2016-07-20 14:00:00, 2016-07-20 15:00:00", - "sub_community": "", - "duration": 60, - "twitters": "@unbit", - "id": 414, - "speakers": "Roberto De Ioris", - "title": "Modern OpenGL with Python", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Game-Development" - ], - "abstract_long": [ - "The OpenGL api is one of the oldest (and most used) graphics library in both the gaming and simulations world. In latest years the api has been extremely re-designed to support modern hardware features available in GPUs. \r\nCan we build realtime graphics application with Python using OpenGL ? Well, obviously Yes !\r\n\r\nThe talk will introduce how 2D and 3D graphics works, which math is required for mastering them and why strong hardware cooperation and heavy optimizations have been required since the very beginning of gaming development history.\r\n\r\nOnce the theory is \"almost\" clear, we can start talking about OpenGL, which problems tries to solve and how it evolved in more than 20 years.\r\n\r\nThe last (and the biggest) part of the talk will show how to interface Python with OpenGL, how to draw simple 2D sprites and how to load and show 3D models using simple lighting models. \r\n\r\nWarning: OpenGL shaders (the custom code you upload in the GPU) are written in GLSL, a pseudo-c dialect, so expect a bit of lower-level programming\r\n", - "", - "", - "" - ], - "abstract_extra": "The talk will be very focused on coding and a bit of CG theory. Very few slides will be produced (mainly to explain some graphics pattern or pipeline). The vast majority of time will be in the IDE/editor.", - "tag_categories": [ - "Everything Else" - ], - "emails": "roberto@20tab.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/modern-opengl-with-python", - "admin_type": "", - "companies": "20tab" - }, - "625": { - "abstract_short": "Monkey-patching is a dynamic modification of a class or a module at runtime.\r\n\r\nThe Python gives developers a great opportunity to use monkey-patching almost everywhere. But should developers do it? Is it a magic trick or a powerful tool? In this talk we will try to give the answers to these questions and try to figure out pros and cons of using monkey-patching.", - "sub_title": "Pros and cons of using monkey-patching in projects", - "timerange": "2016-07-22 15:45:00, 2016-07-22 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@itsmyprototype", - "id": 625, - "speakers": "Elizaveta Shashkova", - "title": "Monkey-patching: a magic trick or a powerful tool?", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Debugging", - "Python general", - "Best Practice", - "Development", - "Programming" - ], - "abstract_long": [ - "Monkey-patching is a dynamic modification of a class or a module at runtime.\r\n\r\nThe Python gives developers a great opportunity to use monkey-patching almost everywhere. But should developers do it? Is it a magic trick or a powerful tool? In this talk we will try to give the answers to these questions and try to figure out pros and cons of using monkey-patching.\r\n\r\nFirst of all we will learn what is monkey-patching in Python and consider some basic examples of using it.\r\n\r\nOf course, monkey-patching may cause some problems in the code. We will consider bad ways to use it and try to learn different types of problems monkey-patching may lead to.\r\n\r\nDespite of some bugs that may appear in a patched program, monkey-patching is used in a real life rather often. There are some reasons and motives to do it. We will consider the examples of using monkey-patching in real projects like `gevent`, in some other libraries and in testing. Also we will learn some monkey-patch tricks that helps to solve real-life problems in the Python debugger which is a part of the PyCharm and the PyDev.\r\n\r\nAfter that we will compare using of monkey-patching in Python to using it in an another dynamic language Ruby. Are there any differences between them? Is our reasoning correct for Ruby? \r\n\r\nFinally we will conclude all our thoughts and examples and try to give the answer to the question from title." - ], - "abstract_extra": "", - "tag_categories": [ - "Testing", - "Python", - "Best Practice and Use Cases", - "Programming", - "Programming" - ], - "emails": "elizabeth.shashkova@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/monkey-patching-a-magic-trick-or-a-powerful-tool", - "admin_type": "", - "companies": "JetBrains" - }, - "386": { - "abstract_short": "The talk covers the complexity of managing an asset transformation pipeline through tools like Grunt and NodeJS, especially during deploy, test suites or when a new development environment has to be configured from scratch, and showcase how this complexity can be dodged by using tools like WebAssets and DukPy.\r\n\r\nNo more need to keep around two languages, two package management systems and manage your dependencies between them by youself. Just pip install your app and have it working.", - "sub_title": "How your CoffeScript, TypeScript, LESS or SASS can be compiled without using nodejs at all", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@__amol__", - "id": 386, - "speakers": "Alessandro Molina", - "title": "Moving away from NodeJS to a pure python solution for assets", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Deployment/Continuous Integration and Delivery", - "Operations", - "Infrastructure", - "NodeJS", - "Testing" - ], - "abstract_long": [ - "When working with WebApplications it is common to rely on an asset management pipeline to compile scripts, minify css or preprocess images.\r\n\r\nMost of the tools available today rely on JavaScript to perform those steps and always forced Python developers to rely on NodeJS to have grunt perform the pipeline tasks, coffee-script to compile their CoffeeScript or lessc to build their css. This causes longer setup times for projects newcomers, complex development environment, working with two package managers and dependencies that you use once a week but still need to be there.\r\n\r\nThe talk will showcase the DukPy project and focus on how it is possible to build a pure python asset pipeline relying on DukPy to run javascript tools and WebAssets framework to perform the most common tasks that usually Nodejs and tools like Grunt handle for us, greatly reducing the development environment complexity and making its setup as simple as \u2018pip install\u2019.\r\n\r\nThe talk aims at explaining the complexity of managing an asset transformation pipeline through tools like Grunt, especially during deploy, test suites or when a new development environment has to be created, and showcase how this complexity can be dodged by using tools like WebAssets and DukPy.\r\n\r\nNo more need to keep around two languages, two package management systems and manage your dependencies between them by youself. Just pip install your app and have it working.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "DevOps", - "DevOps", - "DevOps", - "Web", - "Testing" - ], - "emails": "alessandro.molina@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/moving-away-from-nodejs-to-a-pure-python-solution-for-assets", - "admin_type": "", - "companies": "AXANT" - }, - "676": { - "abstract_short": "Music transcription allows to convert an audio recording to musical notation through mathematical analysis. In the talk we will focus on transcribing a monophonic audio input and see how we can modify it on the fly. To achieve that, we need to determine pitch and duration of each note, and then use these parameters to create a sequence of MIDI events.", - "sub_title": "", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@aniawsz", - "id": 676, - "speakers": "Anna Wszeborowska", - "title": "Music transcription with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Algorithms", - "Use Case", - "Science Track", - "Scientific Libraries (Numpy/Pandas/SciKit/...)" - ], - "abstract_long": [ - "Music transcription allows to convert an audio recording to musical notation through mathematical analysis. It is a very complex problem, especially for polyphonic music - currently existing solutions yield results with approx. 70% or less accuracy.\r\n\r\nIn the talk we will focus on transcribing a monophonic audio input and see how we can modify it on the fly.\r\nTo achieve that, we need to determine pitch and duration of each note, and then use these parameters to create a sequence of MIDI events. MIDI stands for _Musical Instrument Digital Interface_ and it encodes commands used to generate sounds by musical hardware or software.\r\n\r\nLet's see how to play around with sounds using Python and a handful of its powerful libraries. And let's do it in real-time!" - ], - "abstract_extra": "I have led a couple of workshops at conferences, such as:\r\nPolyConf 2014 - A polyglot approach to building applications\r\nPyconPL 2014 - Web scraping\r\nPolyConf 2015 - Tandems. Workshops for mothers and children\r\nPyconPL 2015 - Introduction to TDD\r\n\r\nand presented PyLadies Poland organization at Lightning Talks on varied conferences as well as during discussion panels or interviews.\r\n\r\nI have also led a series of workshops under the shield of PyLadies Poland (which I am a founder of), Geek Girls Carrots as well as mentored for DjangoGirls.\r\n\r\nI happen to talk a lot, especially about the stuff I am deeply involved with :)", - "tag_categories": [ - "Data Science", - "Best Practice and Use Cases", - ">>> Suggested Track", - "Data Science" - ], - "emails": "anna.wszeborowska@ableton.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/music-transcription-with-python", - "admin_type": "", - "companies": "Ableton" - }, - "502": { - "abstract_short": "Visual data exploration, e.g. of social networks, can be ugly manual work. The talk will be an introduction for the combined usage of NetworkX and Bokeh in a Jupyter Notebook to show how easy interactive network visualization can be.", - "sub_title": "Network Manipulation Meets Interactive Visualization", - "timerange": "2016-07-22 16:15:00, 2016-07-22 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 502, - "speakers": "Bj\u00f6rn Meier", - "title": "NetworkX Visualization Powered by Bokeh", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Visualization", - "Web General" - ], - "abstract_long": [ - "During some work with social network analysis my favoured tool to study the networks was NetworkX. It provides a wide set of features and algorithms for network analysis, all in Python. But the functionality to visualize networks is not very strong and not to mention the missing interactive manipulation. However during the exploration of data: exporting, feeding an extra tool for visualization and then manipulating data manually was a tedious workflow.\r\n\r\nAs I also had the optional target of presenting networks in a browser, I improved this workflow by creating a Flask web application providing interfaces to my networks. On the browser side I created a javascript client based on D3.js. In retrospective the required programming effort in Python and also in Javascript was too much for such a task. And exactly this target, interactive visualization in a browser (and as bonus in a Jupyter Notebook), can be achieved quiet easy now with Bokeh.\r\n\r\nThe talk will be a step by step introduction, starting with the basic visualization of a network using Bokeh, NetworkX and a Jupyter Notebook. Next, how to create interactions with your network which will be used to change a network structure, e.g. a leaving person. As we want to see directly the impact of these changes in a network I will finally show how to update networks and visualize directly how the importance of the remaining people changes. And all this can be achieved with Python and maybe a bit of Javascript.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Data Science", - "Web" - ], - "emails": "bjoern@opentrash.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/networkx-visualization-powered-by-bokeh", - "admin_type": "", - "companies": "Blue Yonder GmbH" - }, - "685": { - "abstract_short": "This is an introductory talk to modern brain image analysis tools.\r\nI will show how to use nipy tools to process one resting-state fMRI subject, perform intra-subject registration, ICA analysis to extract and visualize resting-state networks.\r\nIf the time allows me I will introduce an anatomical brain atlas and how to perform non-linear registration to do atlas-based segmentation.\r\n", - "sub_title": "", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@alex_savio", - "id": 685, - "speakers": "Alexandre Savio", - "title": "Nipy on functional brain MRI", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Science" - ], - "abstract_long": [ - "This is an introductory talk to modern brain image analysis tools.\r\nI will show how to use nipy tools to process one resting-state fMRI subject, perform intra-subject registration, ICA analysis to extract and visualize resting-state networks.\r\nIf the time allows me I will introduce how to perform non-linear registration to to atlas-based segmentation.\r\n\r\nThe outline of the talk:\r\n1. Present the COBRE dataset and show its characteristics.\r\n2. Use nibabel to open a NifTI file and see the matrix/volume parameters.\r\n3. Use nilearn.plotting to show the anatomical image.\r\n4. Use nipy to co-register the anatomical image to the fMRI image.\r\n5. Use nilearn to perform CanICA and plot ICA spatial segmentations.\r\n\r\nIf time allows:\r\n7. Present a brain anatomical atlas and its template.\r\n8. Present the tools needed for non-linear registration.\r\n9. Show the result of an atlas-based segmentation result.\r\n10. Use nilearn to calculate the resting-state functional connectivity matrix of the subject.\r\n11. Plot it with Bokeh.\r\n", - "", - "", - "" - ], - "abstract_extra": "-", - "tag_categories": [ - "Sciences" - ], - "emails": "alexsavio@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/nipy-on-functional-brain-mri", - "admin_type": "", - "companies": "TUM, ACPySS" - }, - "601": { - "abstract_short": "Bokeh is a unique library in its genre that lets users create beautiful and complex visualizations from Python. \r\n\r\nThe talks shows a comprehensive overview of the most powerful and popular Bokeh features, like: the optimized websocket based server for performant python callbacks from actions on the browser, Javascript callbacks written in Python (YES!!), bokeh command that lets target different outputs from the same input, JS transforms from Python, high-level charts, Geo support, ...", - "sub_title": "From how to look into billions of points to writing JS callbacks.. we'll look at Bokeh power!", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@b_smoke", - "id": 601, - "speakers": "Fabio Pliger", - "title": "OMG, Bokeh is better than ever!", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Visualization", - "Big Data", - "Use Case", - "Open-Source", - "HTML5" - ], - "abstract_long": [ - "Bokeh is a unique library in its genre that lets users create beautiful and complex visualizations from Python (and other languages) to the browser without actually writing Javascript or HTML. \r\n\r\nIn the last year the Bokeh team have added a large number of unique features that are extremely powerful. Fully optimized websocket based server that enables performant python callbacks from actions on the browser, Javascript callbacks written in Python (YES!!), bokeh command that lets target different outputs from the same input, JS transforms from Python, high-level charts, Geo support, ...\r\n\r\nAnyone interested in powerful and easy visualizations should take a look at it. :)", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Data Science", - "Data Science", - "Best Practice and Use Cases", - "Open Source", - "Web" - ], - "emails": "fabio.pliger@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/omg-bokeh-is-better-then-ever", - "admin_type": "", - "companies": "Continuum Analytics" - }, - "422": { - "abstract_short": "ZeroDB is an end-to-end encrypted database that lets users operate on encrypted data without exposing encryption keys to the database server. The familiar client-server architecture is unchanged, but query logic and encryption keys are pushed client-side. Since the server has no insight into the nature of the data, the risk of data being exposed via a server-side data breach is eliminated.", - "sub_title": "Search, sort, query, and share ciphertext without exposing encryption keys to the database serve", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@https://twitter.com/newmichwill", - "id": 422, - "speakers": "Michael Egorov", - "title": "Operating on Encrypted Data with ZeroDB", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Security", - "Infrastructure", - "Open-Source", - "Cryptography", - "Databases" - ], - "abstract_long": [ - "ZeroDB is an open-source end-to-end encrypted database that enables clients to operate on (search, sort, query, and share) encrypted data without exposing encryption keys or cleartext data to the database server. The familiar client-server architecture is unchanged, but query logic and encryption keys are pushed client-side. Since the server has no insight into the nature of the data, the risk of data being exposed via a server-side data breach is eliminated. Even if the server is successfully infiltrated, adversaries would not have access to the cleartext data and cannot derive anything useful out of disk or RAM snapshots. \r\n\r\nZeroDB provides end-to-end encryption while maintaining much of the functionality expected of a modern database, such as full-text search, sort, and range queries. Additionally, ZeroDB uses proxy re-encryption and/or delta key technology to enable secure, granular sharing of encrypted data without exposing keys to the server and without sharing the same encryption key between users of the database.\r\n\r\nZeroDB can be used by enterprises to securely outsource on-premise database and storage infrastructure to cloud environments. Enterprises can encrypt client-side and keep keys on-premise, so that they're only pushing encrypted data to the cloud.\r\n\r\nAdditionally, developers can easily write end-to-end encrypted applications with strong security and privacy guarantees." - ], - "abstract_extra": "Interview on The Changelog: https://changelog.com/190/\r\n\r\nBlog: https://medium.com/@ZeroDB_/\r\n\r\nWhite paper: http://arxiv.org/abs/1602.07168\r\n\r\nGitHub org: https://github.com/zero-db\r\n", - "tag_categories": [ - "Security", - "DevOps", - "Open Source", - "Security", - "Databases" - ], - "emails": "michwill@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/operating-on-encrypted-data-with-zerodb", - "admin_type": "", - "companies": "ZeroDB" - }, - "551": { - "abstract_short": "There's a ton of digital ink spent on the subject of productivity. Choosing the right tools, the right editor, plugins, the right OS, keyboard shortcuts, mouse gestures, etc.\r\n\r\nWell, this is not what this talk is about! It's about everything else around your computer that can boost your productivity. It's about communication, getting things done, working less while doing more, sleeping good, and ultimately, staying healthy. ", - "sub_title": "Staying productive beyond your keyboard", - "timerange": "2016-07-22 15:45:00, 2016-07-22 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@nzupan", - "id": 551, - "speakers": "Nejc Zupan", - "title": "Optimize Thyself", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Tooling", - "Python general", - "Development", - "Programming" - ], - "abstract_long": [ - "There's a ton of digital ink spent on the subject of productivity. Choosing the right tools, the right editor, the right plugins, the right OS, mapping keyboard shortcuts, using mouse gestures, the list goes on and on.\r\n\r\nThis is not what this talk is about! It's about everything else around your computer that can boost or kill your productivity. It's about efficient communication, getting things done, working less while doing more, sleeping good, keeping your blood sugar at optimal levels, and ultimately, staying healthy. \r\n\r\nHow should I know? I'm juggling my time between my lifetime addiction to windsurfing , being a father and running a successful Python shop. My working time is very limited and I need to make the most of it. In this talk I'll go through what works for me and point to research on the subject.\r\n" - ], - "abstract_extra": "I've been giving talks (and an occasional keynote) regularly on various (mostly Plone related) events since around 2010:\r\n* https://vimeo.com/110423315\r\n* https://www.youtube.com/watch?v=HsGLLGeXFOU\r\n* https://www.youtube.com/watch?v=egwnZUmR6CE\r\n* https://plone.org/events/regional/past-events/pssa/2012\r\n* http://www.slideshare.net/zupo", - "tag_categories": [ - "Programming", - "Python", - "Programming", - "Programming" - ], - "emails": "nejc.zupan@niteoweb.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/optimize-thyself", - "admin_type": "", - "companies": "NiteoWeb Ltd." - }, - "603": { - "abstract_short": "Ever wondered how Python works under the hood? One way to learn about Python-the-C-program is by exploring the C API for writing Python bindings to native C libraries. In this talk, we will walk through a simple example of making a C library callable from Python code and vice versa. Along the way, we will encounter some essential features of Python: reference counting, memory management, and the inner-workings of objects and modules.", - "sub_title": "A Beginner's Guide to C Extensions for Python", - "timerange": "2016-07-22 14:30:00, 2016-07-22 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 603, - "speakers": "Sophia Davis", - "title": "Peeking into Python\u2019s C API", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Data Structures", - "CPython" - ], - "abstract_long": [ - "We all love Python. It\u2019s so elegant and easy to use as a programming language that we forget about the giant, complicated C program executing our strings of white-space sensitive code. For many Python programmers, this side of Python is just a big black box. It works well, so thankfully we don\u2019t *need* to go messing around inside... but what if you *want* to look into the inner workings of this powerful tool? One way to dive into the C-program-side of Python is by exploring the C API for writing Python bindings to native C libraries. In this talk I will explore the basics of this API as I recount my journey to make a simple C library callable from Python code, and allow C code to invoke objects defined in pure Python. Along the way, we will encounter some essential features of Python: reference counting, memory management, and the inner-workings of objects and modules. ", - "", - "", - "" - ], - "abstract_extra": "This talk was originally presented at the Amsterdam Python Meetup in February 2016.", - "tag_categories": [ - "Programming", - "Python" - ], - "emails": "scdgrapefruit@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/peeking-into-pythons-c-api", - "admin_type": "", - "companies": "Optiver Services B.V." - }, - "743": { - "abstract_short": "In the intersection of mechanics, mathematics and \"cool stuff that travels through space\" lies Astrodynamics, a beautiful branch of physics that studies the motion of spacecraft. In this talk we will describe poliastro, a pure Python library we can use to compute orbital maneuvers, plot trajectories and much more. The role of JIT compiling (using numba) to drop the previously used FORTRAN algorithms will also be discussed, as well as the importance of open source in scientific discoveries.", - "sub_title": "Python for Astrodynamics or how to compute complicated orbits using open source", - "timerange": "2016-07-20 14:30:00, 2016-07-20 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@astrojuanlu", - "id": 743, - "speakers": "Juan Luis Cano", - "title": "Per Python ad Astra", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Science", - "Algorithms", - "Open-Source", - "Physics" - ], - "abstract_long": [ - "In the intersection of mechanics, mathematics and \"cool stuff that travels through space\" lies Astrodynamics, a beautiful branch of physics that studies the motion of spacecraft. Rocket launches have never been so popular thanks to companies like Space X, more and more investors pay attention to aerospace startups and amazing missions explore our planet and our Solar System every day. In this talk we will describe poliastro, a pure Python library we can use to compute orbital maneuvers, plot trajectories and much more. The role of JIT compiling (using numba) to drop the previously used FORTRAN algorithms will also be discussed, as well as the importance of open source in scientific discoveries." - ], - "abstract_extra": "Versions of this talk already delivered in SciPy Latin America 2015 and 6th International Conference on Astrodynamics Tools and Techniques:\r\n\r\n- https://speakerdeck.com/pybonacci/per-python-ad-astra\r\n- https://indico.esa.int/indico/event/111/session/32/contribution/5\r\n", - "tag_categories": [ - "Sciences", - "Data Science", - "Open Source", - "Sciences" - ], - "emails": "juanlu001@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/per-python-ad-astra", - "admin_type": "", - "companies": "Indizen" - }, - "657": { - "abstract_short": "Python is a great language. Easy to learn, friendly to use, widely used.\r\n\r\nIt is not, however, renowned for being fast. In a lot of situations that does not matter. Sometimes it really does. This talk will introduce you to some tools and techniques for making sure your Python code becomes fast enough \u2013 without turning into a maintenance nightmare. Warning: may contain small bits of other languages.", - "sub_title": "how to write good, fast, pythonic code", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 657, - "speakers": "Burkhard Kloss", - "title": "Performant Python", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Beginners", - "Clean Code", - "Science Track", - "Best Practice", - "Educational Track" - ], - "abstract_long": [ - "Python is a great language. Easy to learn, friendly to use, widely used.\r\n\r\nIt is not, however, renowned for being fast. In a lot of situations that does not matter. Sometimes it really does. This talk will introduce you to some tools and techniques for making sure your Python code becomes fast enough \u2013 without turning into a maintenance nightmare. Fast code does not have to be unreadable - and when you're writing Python, it really pays of to think \"pythonically\".\r\n\r\nThat does mean using the included batteries, and utilising the ecosystem of tools around the language, too.\r\n\r\n Warning: may contain small bits of other languages." - ], - "abstract_extra": "Speaking experience: \r\nI have given talks at Nordevcon (http://www.nordevcon.com/) and the ACCU Conference (http://accu.org/index.php/conferences) over the last few years.\r\n\r\nThis talk is an extended and revised version of the presentation I gave at Nordevcon in February this year, with additional material.", - "tag_categories": [ - "Educational", - "Educational", - ">>> Suggested Track", - "Best Practice and Use Cases", - ">>> Suggested Track" - ], - "emails": "burkhard.kloss@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/performant-python", - "admin_type": "", - "companies": "" - }, - "474": { - "abstract_short": "When a program is not fast enough, we call on the profiler to save us. But what happens when the program is hard to profile, like for instance the Python Debugger? In this talk we're going dive deep into Vmprof, a Python profiler, and see how it helps us find out why a debugger can be slow. Once we find the culprit, we'll use Cython to optimise things. \r\n", - "sub_title": "Using Vmprof to profile a Python debugger and then optimise it with Cython", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@https://twitter.com/DmitryTrofimov", - "id": 474, - "speakers": "Dmitry Trofimov", - "title": "Profiling the unprofilable", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Cython", - "Best Practice", - "Performance", - "Case Study", - "Open-Source" - ], - "abstract_long": [ - "Profile is the main way to find slow parts of your application, and it's often the first approach to performance optimisation. While there are quite a few profilers, many of them have limitations. In this talk we're going to learn about the new statistical profiler for Python called Vmprof that is actively being developed by the PyPy team. We'll see how it is implemented and how to use it effectively. We will apply it to an open source project, the Pydev.Debugger, a popular debugger used in IDE's such as Pydev and PyCharm, and with the help of Cython which we'll also dig into, we'll work on optimising the issues we find.\r\n\r\nWhether it's a Python debugger, a Web Application or any other kind of Python development you're doing, you'll learn how to effectively profile and resolve many performance issues.\r\n\r\n\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "**Outline**\r\n\r\n - INTRODUCTION (1 MINUTE)\r\n - About myself\r\n - How am I related to the topic and why is it important\r\n - THE PROBLEM WITH PERFORMANCE (3 MINUTES)\r\n - Introducing Pydev.Debugger, a Python debugger\r\n - Why is it slow? Seems that we need to use a profiler\r\n - FIRST PROFILING ATTEMPT (7 MINUTES)\r\n - Python profilers overview: CProfile, yappi, line_profiler (4 minutes)\r\n - Using CProfile to profile the debugger (2 minute)\r\n - Why doesn't it work? (1 minute)\r\n - SECOND PROFILING ATTEMPT (10 MINUTES)\r\n - Statistical profilers (1 minute)\r\n - Introducing Vmprof profiler (3 minutes)\r\n - Profiling the debugger with Vmprof (6 minutes)\r\n - OPTIMIZATION (15 MINUTES) \r\n - What is Cython (5 minutes)\r\n - Using Cython to optimize the slowest parts of the debugger (6 minutes)\r\n - Profiling Cython-optimized code (2 minutes)\r\n - Making Cython optional to support wider range of Python versions (2 minutes)\r\n - CONCLUSION (2 MINUTES)\r\n - Q & A (5 MINUTES)\r\n\r\n*Note*: the talk length can be reduced to 30 minutes. That will mean having no questions, and very limited introduction about into technologies used (Cython and Vmprof profiler). \r\n\r\n*My knowledge about the topic*\r\nThe project used as an example: Pydev.Debugger.\r\nI am one of the maintainers of the project in collaboration with Fabio Zadrozny. The Cython optimization shown in talk is a real optimization performed recently to make the debugger faster and was our collaborative effort.\r\nThe profiler introduced in the talk: Vmprof.\r\nI am not a direct committer to the project, but I have collaborated with the PyPy team for the last half of a year on making it available on Windows and Mac OSX. I am quite aware of the tool usage limitations as well as it's implementation details.\r\n\r\n*Audience*\r\nThe talk is supposed to be also intelligible for novice developers as they can get out of it some general concepts about profiling and optimization. While developers with intermediate experience will know about implementation details and learn some best practices.\r\n\r\n*Slides*\r\nWhile the main example in the talk will be a real Python debugger, I will avoid showing the real code on my slides. Instead there will be simplified snippets that are able to express the main idea of the optimization needed to perform and the resulting outcome. I tried this approach in my past talk 'Python Debugger Uncovered' and it proved to be a good approach.\r\nThe real project will be visible only during profiling phase in the form of visual call tree and probably other diagrams.\r\n\r\n*Past speaking experience*\r\nI gave a 30 minutes talk called \"Python Debugger Uncovered\" about implementation details of Python debugger at Europython 2014 in Berlin and at PyCon APAC 2015 in Taipei. There are video recordings of this talk: https://www.youtube.com/watch?v=DHf-6gW3-qs https://www.youtube.com/watch?v=HfzdM7rsKbU\r\nI gave a 30-minute talk 'Can Rust make your Python shine?' about Rust programming language and Python profiling at Europython 2015 in Bilbao: https://www.youtube.com/watch?v=weAxEoEfl0M&feature=youtu.be\r\nI presented a 45-minute live-demo about features of PyCharm IDE at Python Unconference 2015 in Hamburg\r\nI presented a 30-minute talk about PyCharm at PyCon Ukraine 2011\r\nI gave several lightning talks about PyCharm and other open-source projects at difference conference including PyCon and DjangoCon Europe.\r\n\r\n", - "tag_categories": [ - "Python", - "Best Practice and Use Cases", - "Programming", - "Case Study", - "Open Source" - ], - "emails": "trofimov.dmitry@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/profiling-the-unprofilable", - "admin_type": "", - "companies": "JetBrains" - }, - "613": { - "abstract_short": "Failures are the bane of scaling a modern web service and can cause serious pain for end users! Lucky for us, there are techniques that can help protect your product handle failures in subsystems gracefully. This talk will dive into one of these in depth, the Circuit Breaker pattern, and explore the options it gives us for keeping all our users safe. We will be focusing on several real-world problems and options for how to implement your circuit breaker setup in nice, readable python code.", - "sub_title": "Handling errors in production with shocking ease", - "timerange": "2016-07-19 14:00:00, 2016-07-19 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@scott_triglia", - "id": 613, - "speakers": "Scott Triglia", - "title": "Protect your users with Circuit Breakers", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Web General", - "Distributed Systems", - "Web Track" - ], - "abstract_long": [ - "The inevitability of failures is the bane of scaling any modern web service and can cause serious pain for end users! Lucky for us, there are techniques that can help protect your product handle failures in subsystems gracefully. This talk will dive into one of these in depth, the Circuit Breaker pattern, and explore the options it gives us for keeping our users safe.\r\n\r\nWe will be focusing on several real-world problems and how they can be addressed by circuit breakers. You should expect to leave the talk with details on simple circuit breakers as well as understanding how they can be adapted for more complex situations. We\u2019ll also discuss some options for how to implement your circuit breaker in readable python.\r\n\r\n\r\n**Contrived FAQ time!**\r\n\r\n**I don\u2019t know what Circuit Breakers are, should I come?**\r\nDefinitely! We\u2019re going to start from scratch and work our way up. Only requirement is basic familiarity with backend services receiving and making HTTP requests.\r\n\r\n**I totally know what Circuit Breakers are, should I come?**\r\nDefinitely! After the intro, the main meat of the talk will be working through a series of more advanced situations and talking about how we can alter the basic circuit breaker setup to address them. \r\n\r\n**I want real-world advice, not made up hypotheticals!**\r\nWell that\u2019s not really a question, but you\u2019ll be happy to know that the examples we\u2019ll discuss come straight from my experience at Yelp. They should be very realistic and broadly applicable.\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "I spoke at Europython, PyDX, PyconCA, and PyconAU in 2015. Videos are Europython (https://www.youtube.com/watch?v=z3_HorshzJ4), PyconAU (http://www.pyvideo.org/video/3964/arrested-development), and PyconCA (https://www.youtube.com/watch?v=RMt43wyg-zg).\r\n\r\nMy team at Yelp is focused on customer-to-business transactions, so we have a ton of experience with applying these types of patterns to safely minimize costly failures in production. I\u2019m excited to get a chance to share this specific technique with the EuroPython audience :)\r\n\r\nNot requirements, but ideal preferences for the talk time.\r\n* early in the conference schedule\r\n* not in the last session of any day", - "tag_categories": [ - "Web", - "DevOps", - ">>> Suggested Track" - ], - "emails": "scott.triglia@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/protect-your-users-with-circuit-breakers", - "admin_type": "", - "companies": "Yelp" - }, - "395": { - "abstract_short": "As developers we all love well-documented, well-tested packages. If we do the same for our code it is easier for others to re-use our hard work, and maybe even contribute. We will take a quick look on how to do this using popular tools and only a small investment of time. With Github and some simple tools, setting up a well-groomed package doesn't have to be difficult.", - "sub_title": "", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 395, - "speakers": "Marko Samastur", - "title": "Publish your code so others can use it in 5 easy steps", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Beginners", - "Best Practice", - "PyPi", - "Open-Source", - "Community" - ], - "abstract_long": [ - "Every Python open-source developer wants their software to be used. As developers, we trust software that is tested and well-documented.\r\n\r\nIn this talk we'll go through 5 steps for how to do this for your own packages.\r\n\r\nWe will take a quick look on how to do this using popular tools and small investment of time:\r\n\r\n- Write a setup.py script for a pure Python package\r\n- Set up py.test, tox and coverage to test our package with multiple versions of Python\r\n- Configure Github to use Travis CI & coveralls.io to automatically test our package every time we commit\r\n- Register and publish our package to PyPI\r\n- Setup our documentation on ReadTheDocs\r\n\r\n" - ], - "abstract_extra": "**Objectives**\r\n\r\nMy goal is to inspire a newcomer to PyPI and the Github ecosystem with enough knowledge to get them off the ground in creating pure Python package. Using py.test, tox, and coverage combined with Travis CI and coveralls for solid testing with published results. Also show how easy it is to publish a package to PyPI, check requirements are up-to-date using requires.io, publish documentation on RTFD. \r\n\r\n\r\n**Talk outline**\r\n\r\nIntroduction (1min / 1min)\r\n\r\n- why you\u2019d want this\r\n- tools to use\r\n- there\u2019s a github repo with details (notes not necessary)\r\n\r\nBasics of setup.py (5min / 6min)\r\n\r\n- anatomy of a pure Python setup.py\r\n- setting requirements\r\n- specifying packages to include\r\n- maybe: quick overview of Trove identifiers\r\n- maybe: dealing with versions (have one place to set it)\r\n\r\nTesting locally (5 min / 11min)\r\n\r\n- py.test setup\r\n- checking test coverage\r\n- testing with various Python versions with tox\r\n\r\nCI with Travis (5min / 16min)\r\n\r\n- registering account on travis-ci.org and adding project\r\n- basic .travis.yml configuration\r\n\r\nAdding coverage check with coveralls.io (3min / 19min)\r\n\r\n- registering account and adding project\r\n- changes to .travis.yml (install coveralls package; publish with coveralls command)\r\n\r\nPublishing on PyPI (3min / 22min)\r\n\r\n- registering package\r\n- pushing changes\r\n\r\nPublishing on ReadTheDocs (5min / 27min)\r\n\r\n- registering Github project\r\n- Sphinx and sphinx-quickstart; RTD configuration tweaks\r\n- just some pointers to some docs on how to write reStructuredText\r\n\r\nConclusion (2min / 29min)\r\n\r\n- what wasn\u2019t covered (documentation, mixed packages\u2026)\r\n- where to get more information (cookie cutter package)\r\n\r\n**Previous experience**\r\nI've attended few EuroPythons, a number of DjangoCons and many local Python Meetups. I have presented to large audiences (500+) before, including on technical subjects (Web 2.0 Expo Europe 2008).\r\n\r\nBecause talk itself covers a lot of information that cannot be adequately presented in 30 minutes (or 45) it will be supported with a template repository on Github including cookiecutter script to produce a documented working setup for covered (and not covered) services.\r\n\r\nI have also already published a few packages on PyPI.\r\n\r\n", - "tag_categories": [ - "Educational", - "Best Practice and Use Cases", - "Python", - "Open Source", - "Community" - ], - "emails": "markos@gaivo.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/publish-your-code-so-others-can-use-it-in-5-easy-steps", - "admin_type": "", - "companies": "" - }, - "661": { - "abstract_short": "Pygame Zero is a new game engine for education, built on top of Pygame. It makes writing your first games extremely simple, while saving beginners from certain potential pitfalls. Daniel will introduce Pygame Zero, walk through creating a simple game, and discuss the background for Python in education and the design philosophy behind Pygame Zero.", - "sub_title": "A zero-boilerplate game framework", - "timerange": "2016-07-18 16:00:00, 2016-07-18 16:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@lordmauve", - "id": 661, - "speakers": "Daniel Pope", - "title": "Pygame Zero", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Educational Track", - "Game-Development" - ], - "abstract_long": [ - "Pygame Zero is a new game engine for education, built on top of Pygame. It makes writing your first games extremely simple, while saving beginners from certain potential pitfalls. This talk will introduce Pygame Zero, walk through creating a simple game, and discuss the background for Python in education and the design philosophy behind Pygame Zero.\r\n\r\nPygame is a powerful set of libraries for graphics, sound, input and more. But it is just a library: each program needs to import and set up the libraries, implement a game loop and load resources among numerous other concerns. While seasoned Pythonistas have no trouble with this, teachers told us that they found it difficult to teach with Pygame. There is simply too much boilerplate involved, and getting students to reproduce the boilerplate perfectly before useful lessons can begin takes too much time out of a 40-minute lesson.\r\n\r\nPygame Zero is simple enough that a lesson can be broken down into bitesize steps where meaningful progress can be made with just a couple of lines of code at a time." - ], - "abstract_extra": "This talk will be a revised version of a talk I've already given at the Raspberry Pi Birthday weekend and which has also been accepted for Pycon US.\r\n\r\nI gave a brief lightning talk at Europython 2015 and this will be an extended version that introduces several of the features of Pygame Zero\r\n\r\nI have spoken at various Python conferences including Europython, Pycon UK and lightning talks at Pycon US and the London Python Dojo. I am a two-time winner of the Pyweek games programming contest.", - "tag_categories": [ - "Educational", - ">>> Suggested Track", - "Everything Else" - ], - "emails": "lord.mauve@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pygame-zero", - "admin_type": "", - "companies": "Mauve Internet" - }, - "741": { - "abstract_short": "\r\n\r\n - New features of pytest's upcoming major version 3.0\r\n - Breaking changes and other important information\r\n - Recap of the first developer sprint in June, 2016\r\n - Thank you notes to all who have contributed to the fundraiser\r\n\r\n", - "sub_title": "Demonstration, New Features, Important Bugfixes & Sprint Recap", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@hackebrot", - "id": 741, - "speakers": "Raphael Pierzina", - "title": "Pytest 3.0", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Open-Source", - "Documentation", - "Testing", - "Community" - ], - "abstract_long": [ - "Pytest is a mature testing framework for Python that is developed by a thriving and ever-growing community of volunteers. Following the principle of \"no API is the best API\" it uses plain assert statements and regular Python comparisons. Writing tests with pytest requires little to no boilerplate code and powerful features allow easy parametrization and intelligent test selection.\r\n\r\nIn this talk we will have an in-depth look at new features of pytest 3.0 and live demo possible use cases. We will also learn about important bugfixes and other enhancements of the upcoming major release. Backwards-incompatible changes will be addressed and changes made to the documentation will be highlighted.\r\n\r\nIf you are already familiar with pytest, you will be happy to hear about significant improvements of the fixture and hook system but also what's in store for a better integration with tox, an important tool that allows testing across different Python versions.\r\n\r\nIn June, 2016 more than 25 Pythonistas from around the globe gather in Freiburg, Germany to work on the release and set the path for future developments of the core framework. This is a big step forward for the project made posssible by a fundraiser that reached 108% of it's initial goal.\r\n\r\nI will share our experiences from the developer sprint while they are still fresh and explain why these events are incredibly important for a community and give advice on how to organize your own." - ], - "abstract_extra": "For more information on the sprint see: https://www.indiegogo.com/projects/python-testing-sprint-mid-2016\r\n\r\nIf there are no more 45 min slots available, I can skip over live demos of new features to reduce the talks duration to 30 min.", - "tag_categories": [ - "Open Source", - "Programming", - "Testing", - "Community" - ], - "emails": "raphael.pierzina@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pytest-30", - "admin_type": "", - "companies": "FanDuel" - }, - "607": { - "abstract_short": "Todo programador tiene inter\u00e9s para que su software sea fiable y estable. Haremos una sencilla introducci\u00f3n a pytest con el caso de uso de un site internacional para el que generamos cientos de tests y redujimos dr\u00e1sticamente los errores en producci\u00f3n. Con este simple ejemplo demostraremos que no siempre necesitamos hacer TDD para disfrutar de las ventajas de un framework de testing.", - "sub_title": "O como un framework de testing puede substituir las p\u00edldoras para dormir", - "timerange": "2016-07-19 14:30:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@paurullan", - "id": 607, - "speakers": "Pau Ru\u0140lan Ferragut", - "title": "Pytest desde las trincheras", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Best Practice", - "Tooling", - "Case Study", - "Test Libraries (pyTest/node/...)", - "Testing" - ], - "abstract_long": [ - "Las metodolog\u00edas de desarrollo que incorporan la escritura de pruebas desde el momento cero tienden a generar c\u00f3digo m\u00e1s estable y fiable pero la realidad es que muchas veces no gozamos del privilegio ni del presupuesto para escribir tests para todas las caracter\u00edsticas de nuestro producto. Pero si tenemos a nuestra disposici\u00f3n herramientas de testing que nos permitan eliminar los errores evitables como romper enlaces en la p\u00e1gina de inicio nos quitaremos el miedo a hacer pases a producci\u00f3n y generaremos m\u00e1s valor al negocio.\r\n\r\nLa charla no tiene pretensi\u00f3n de ser ni una introducci\u00f3n al test driven development ni de las complejidades de qu\u00e9 es un buen o mal test. El objetivo es animar a todo aquel que todav\u00eda pruebe sus proyectos manualmente a intentar alg\u00fan grado de automatizaci\u00f3n. Para ello la estructura ser\u00e1 una presentaci\u00f3n de pytest, exponer algunos plugins altamente recomendados y centrarse en el caso de uso de una p\u00e1gina con presencia en ocho pa\u00edses donde automatizamos un mont\u00f3n de comprovaciones simples que nos permitieron reducir los errores evitables.\r\n" - ], - "abstract_extra": "Este charla tambi\u00e9n la he propuesto en ingl\u00e9s con el t\u00edtulo \u00abPytest from the trenches\u00bb", - "tag_categories": [ - "Best Practice and Use Cases", - "Programming", - "Case Study", - "Testing", - "Testing" - ], - "emails": "paurullan@gmail.com", - "language": "Spanish", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pytest-desde-las-trincheras", - "admin_type": "", - "companies": "APSL" - }, - "580": { - "abstract_short": "How does the experienced python programmer fair when faced with python's \"new\" way of doing async programming for the first time? \r\n\r\nThis talk details the different ways python provides for attacking the problem of asynchronous programming and focuses on the best practices for the future (as of python 3.4 and 3.5)", - "sub_title": "Do you need to be a wizard to use it?", - "timerange": "2016-07-18 14:15:00, 2016-07-18 14:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 580, - "speakers": "Nicolas Lara", - "title": "Python and Async programming", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python 3", - "Best Practice", - "Go-Lang", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "How does the experienced python programmer fair when faced with python's \"new\" way of doing async programing in for the first time? Do we all know how and when to use Futures, yield from, asyncio, coroutines, the async and await keywords, eventloops, and others?\r\n\r\nA lot has changed in recent versions of Python when it comes to async programming, concurrency, and parallelism. We still have very different ways of approaching the problem in each version, but they are finally (as of python 3.4/3.5) converging to a standard. \r\n\r\nThis talk explores, from the perspective of an experienced python programmer with little to no experience in async programming, what the \"one obvious way\" to do async programming in Python is supposed to be. It does so but analysing examples of different categories of async problems we may want to solve and what the correct way to solve them with the latest versions of Python would be (along with the trade offs of different approaches).\r\n\r\nThe examples include generic CPU-bound problems, IO-bound problems, and \"both-bound\" problems; along with common tasks as building a simple server, scraping, deferring a web response, and traversing graphs.\r\n\r\nWhen useful, I compare the solutions with the approach we would take in languages that have been design for- and are known to be good at async programming like Javascript and Go. " - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Best Practice and Use Cases", - "Other Programming Languages", - "Programming" - ], - "emails": "nicolaslara@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/python-and-async-programming", - "admin_type": "", - "companies": "Lincoln Loop" - }, - "647": { - "abstract_short": "This talk explains how Ableton\u2019s developers use Python to build and test C, C++ and Objective-C code. Our \"build-system\" is a collection of Python scripts that simplify our workflows, and help us write better software. The top-level scripts share a common design which makes them easy to use, maintain and extend. This talk describes the essence of that design, so you can apply it to your own project.", - "sub_title": "", - "timerange": "2016-07-18 14:45:00, 2016-07-18 15:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 647, - "speakers": "Alain Martin", - "title": "Python as the keystone of building and testing C++ applications", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Software Design", - "Tooling", - "Case Study", - "C-Languages", - "Command-Line" - ], - "abstract_long": [ - "At Ableton, we make [Live][1], [Push][2] and [Link][3], unique software and hardware for music creation and performance. Live is a C++ desktop application built from a 15-year old code base. Push is an instrument embedding a multicolor display which renders a [Qt Quick][4] scene powered by [Qt][5]. Link is a technology that keeps music devices in time and is available to app developers as [LinkKit][6], an iOS SDK. \"But what does all that have to do with Python?\", you might ask. \r\n\r\nThis talk answers that question by explaining how our developers use Python to build and test C, C++ and Objective-C source code. Based on [GYP][7], what we call \"build-system\" is a collection of Python scripts that simplify our workflows, and help us write better software. The three top-level scripts, \"configure.py\", \"build.py\" and \"run.py\", share a common design which makes them easy to use by developers, as well as easy to maintain and extend. This talk describes the essence of that design, so you can apply it to your own project.\r\n\r\n[1]: https://www.ableton.com/live/\r\n[2]: https://www.ableton.com/push/\r\n[3]: https://www.ableton.com/link/\r\n[4]: https://www.qt.io/qt-quick/\r\n[5]: http://www.qt.io/\r\n[6]: https://ableton.github.io/linkkit/\r\n[7]: https://gyp.gsrc.io/", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Programming", - "Programming", - "Case Study", - "Other Programming Languages", - "Programming" - ], - "emails": "alain.martin@ableton.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/python-as-the-keystone-of-building-and-testing-c-applications", - "admin_type": "", - "companies": "Ableton" - }, - "536": { - "abstract_short": "Have you ever wondered how Django models work? I'll present a story of data structure transformation. I will talk about ideas from Django models that I used and how I rediscovered descriptor API. I will talk about printing, serializing, comparing data structures and some other examples, where descriptors excel at making declarative code easier to write.", - "sub_title": "How to use Python descriptor API and let testers skip the boring work", - "timerange": "2016-07-18 14:15:00, 2016-07-18 14:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 536, - "speakers": "Adrian Dziubek", - "title": "Python Descriptors for Better Data Structures", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Django", - "Case Study", - "Testing" - ], - "abstract_long": [ - "I worked as a developer of a testing framework for a C++ server. The framework tested binary protocol implemented by the server.\r\n\r\nMost of the work involved testers preparing test cases. The data format was primitive structures -- hard to read and easy to break. Field order and all the data had to be entered manually.\r\n\r\nAt the time, I have already seen the better world -- the models from Django. Have you ever wondered how those work? Step by step, I used the ideas from there to make the structures more friendly and on my way I rediscovered descriptors.\r\n\r\nI'll show in incremental steps, how:\r\n\r\n - used keyword arguments to lower signal to noise ratio,\r\n - order of definition for sorting the fields,\r\n - realized that `__call__` is used instead of assignment,\r\n - used `__setattribute__` as first step to extend primitive fields,\r\n - discovered that I'm actually reimplementing descriptors,\r\n\r\nand how it lead me to:\r\n \r\n - implement printing in a way that is friendly to regression testing,\r\n - use diff library for less code and better results,\r\n - implement more readable validation.\r\n\r\nI want to show how descriptors work in Python and how they enable declarative style of programming. By the end of the talk I want you to understand what is at the core of the magic behind field types used by object relational mappers like Django.\r\n\r\n" - ], - "abstract_extra": "That would be my first talk for a bigger audience. I have some experience from presenting at the university courses and playing guitar at school, so I'm hopeful about my stage fright. I'll be training with presenting this subject at my company's lightning talks and a local Python group.", - "tag_categories": [ - "Application Frameworks", - "Case Study", - "Testing" - ], - "emails": "adrian.dziubek+europython@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/python-descriptors-for-better-data-structures", - "admin_type": "", - "companies": "STX Next" - }, - "455": { - "abstract_short": "I would like to talk about modern Astronomy where I would give a brief history of Astronomy. I will answer some question: \r\nWhat do we use computers for today in astronomy? \r\nWhere is Python\u2019s place in today\u2019s science? \r\nIs Python is the best language for scientific computation? \r\nI would like to give a short introduction into AstroPy module. Finally I would like presents some result of my research where Python was used to create data.\r\n", - "sub_title": "", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 455, - "speakers": "S\u0142awomir Piasecki", - "title": "Python in Astronomy", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Visualization", - "Science", - "Python general", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Physics" - ], - "abstract_long": [ - "For ages people have been watching the sky, and tried to learn something about all those mysterious lights. In ancient times, scientist used mostly their naked eyes to watch what happened in the night sky. Astronomy is one of the oldest fields in science. \r\nEverything changed when Galileo invented his lunette. Thanks to thi, we were able to proof Copernicus\u2019 new model of the solar system with the sun in the center. \r\n\r\nThe next big step in Astronomy was using computers. Where there are computers and Astronomy, there is a place for programming. For many years astronomers were mostly using Fortran and C/C++. Both are suited to numeric computation and scientific computing. Since they are structured programming language, that makes them very valuable for science.\r\n\r\nOver the past decade, Python has started to be used by more and more people in astronomy. But is there a place in Astronomy for Python, as it is not as fast as Fortran or C/C++? In Python there is a module called AstroPy which helps astronomers in their work. \r\n\r\nMatPlotLib is one of the most popular library use in astronomy. This tool helps created very sophisticated plots and graphs.\r\n\r\nFinally I would like talk about some research I did using Python. For research, we decided to use AUTO. It is a hybrid of Fortran and Python, to compute bifurcation points in mathematical models. In Python we introduce mathematical model, ODE and initial parameters. Fortran does all the computation.\r\n", - "", - "", - "" - ], - "abstract_extra": "I have been giving talk during my education career in Spain and USA. \r\nLast year (2015) I gave my first presentations about python in Polish PyCon. Since I got positive feedback I would like to try now in bigger event.", - "tag_categories": [ - "Data Science", - "Sciences", - "Python", - "Data Science", - "Sciences" - ], - "emails": "slawomir.piasecki@stxnext.pl", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/python-in-astronomy", - "admin_type": "", - "companies": "STX Next" - }, - "619": { - "abstract_short": "On February 11th 2016 Ligo-Virgo collaboration gave the announce of the discovery of Gravitational Waves, just 100 years after the Einstein\u2019s paper on their prediction.\r\nA brief introdutcion to data analysis methods used in Gravitational Waves (GW) communities \r\nPython notebook describing how to analyze the GW event detected on 14 September 2015. \r\n\r\n", - "sub_title": "", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@ElenaCuoco", - "id": 619, - "speakers": "Elena Cuoco", - "title": "Python in Gravitational Waves Research Communities", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Jupyter/iPython Notebook", - "Data Science" - ], - "abstract_long": [ - "On February 11th 2016 Ligo-Virgo collaboration gave the announce of the discovery of Gravitational Waves, just 100 years after the Einstein\u2019s paper on their prediction.\r\nAfter an introduction on Gravitational Waves, on Virgo Interferometric detector, I will go through the data analysis methods used in Gravitational Waves (GW) communities either for the detector characterization and data condition or for the signal detection pipelines, showing the use of python we make.\r\nAs practical example I will introduce a python notebook describing the GW event detected on 14 September 2015 and I will show a few of signal processing techniques.\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Python", - "Data Science" - ], - "emails": "elena.cuoco@ego-gw.it", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pyhton-in-gravitational-waves-research-communities", - "admin_type": "", - "companies": "European Gravitational Observatory" - }, - "570": { - "abstract_short": "Approach to topics, evolution, correlations through the lyrics of some of the greatests rock bands of all times. We will talk about the different phases of this personal project, in which I approach to a passion through a scientific method. \r\n\r\nThis is a project that combine different techniques: \r\n- web crawling\r\n- NoSQL \r\n- Natural Language Processing \r\n- Data visualization", - "sub_title": "Analysing the lyrics of the greatest rock bands of all time", - "timerange": "2016-07-22 15:45:00, 2016-07-22 16:15:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@claudiaguirao", - "id": 570, - "speakers": "Claudia Guirao Fern\u00e1ndez", - "title": "Python, Data & Rock'n'Roll", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Visualization", - "Natural Language Processing", - "MongoDB", - "Data Science", - "Beginners" - ], - "abstract_long": [ - "Have you ever wonder how David Bowie has evolved into the theme of his songs throughout their studio albums? Want to find out in what looks like Nirvana and Pink Floyd?\r\n\r\nApproach to topics, evolution, correlations through the lyrics of some of the greatests rock bands of all times. We will talk about the different phases of this personal project, in which I approach to a passion through a scientific method. \r\n\r\nThis is a project that combine different techniques: \r\n- Web crawling\r\n- NoSQL \r\n- Natural Language Processing \r\n- Data visualization\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Data Science", - "Data Science", - "Databases", - "Data Science", - "Educational" - ], - "emails": "guirao.claudia@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/python-data-rocknroll", - "admin_type": "", - "companies": "Kernel Analytics" - }, - "736": { - "abstract_short": "Query Embeddings is an unsupervised deep learning based system, built using Python and open source libraries (Annoy, keyvi etc.) which recognizes similarity between queries and their vector representations, for a web scale search engine integrated within Cliqz browser [https://cliqz.com/en]. It improves recall for previously unseen queries and is one of the many key components of our search stack. The framework be utilized by other low latency systems involving vector representations.\r\n", - "sub_title": "Web Scale Search powered by Deep Learning and Python", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@codekee", - "id": 736, - "speakers": "Ankit Bahuguna", - "title": "Query Embeddings: Web Scale Search powered by Deep Learning and Python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Natural Language Processing", - "Deep Learning", - "Open-Source", - "Data", - "Machine-Learning" - ], - "abstract_long": [ - "A web search engine allows a user to type few words of query and it presents list of potential relevant results within fraction of a second. Traditionally, keywords in the user query were fuzzy-matched in realtime with the keywords within different pages of the index and they didn't really focus on understanding meaning of query. Recently, Deep Learning + NLP techniques try to _represent sentences or documents as fixed dimensional vectors in high dimensional space_. These special vectors inherit semantics of the document.\r\n\r\nQuery embeddings is an unsupervised deep learning based system, built using Python, Word2Vec, Annoy and Keyvi (https://github.com/cliqz-oss/keyvi) which recognizes similarity between queries and their vectors for a web scale search engine within Cliqz browser. (https://cliqz.com/en)\r\n\r\n![][1]\r\n\r\nThe goal is to describe how query embeddings contribute to our existing python search stack at scale and latency issues prevailing in real time search system. Also is a preview of separate vector index for queries, utilized by retrieval system at runtime via ANNs to get closest queries to user query, which is one of the many key components of our search stack.\r\n\r\n![][2]\r\n\r\nPrerequisites: Basic experience in NLP, ML, Deep Learning, Web search and Vector Algebra. Libraries: Annoy. \r\n \r\n[1]: https://sites.google.com/site/netankit/1.png\r\n[2]: https://sites.google.com/site/netankit/3.png" - ], - "abstract_extra": "**Talks:**\r\n - \"Deep Dive into Tensorflow\" as an Invited speaker at TensorFlow and Open AI Meetup, Stylight GmbH, Munich, March 2016. [https://www.youtube.com/watch?v=T0H6zF3K1mc]\r\n - \"Sentiment Analysis: Machine learning using Python Scikit-Learn\", delivered at FOSS-ASIA. March 2015 at NUS, Singapore. [https://speakerdeck.com/netankit/sentiment-analysis-machine-learning-with-python-scikit-learn]\r\n- \"Breaking the Wall of Building Effective Communities\" at Falling Walls Lab, Berlin, November 2014 [[https://www.youtube.com/watch?v=y6y-10BQg9o][1]]\r\n\r\n**Master Thesis / IDP :** \r\n- \"Deep Learning Methods for Sentiment Analysis\", conducted jointly at TU Munich and LMU Munich, Germany. October 2015\r\n\r\n**Publications [ACL Anthology]:**\r\n - Facilitating multi-lingual sense annotation: Human mediated lemmatizer, Estonia (GWC) 2014\r\n - HinMA: Distributed Morphology based Hindi Morphological Analyzer, India (ICON) 2014\r\n\r\n**Others:** \r\nOfficial contributor, Mozilla Project: www.mozilla.org/credits/\r\nMozilla Reps (REMO) Profile: https://reps.mozilla.org/u/netankit/\r\n\r\n [1]: https://www.youtube.com/watch?v=y6y-10BQg9o\r\n", - "tag_categories": [ - "Data Science", - "Data Science", - "Open Source", - "", - "Data Science" - ], - "emails": "ANKITBAHUGUNA@outlook.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/query-embeddings", - "admin_type": "", - "companies": "Cliqz GmbH" - }, - "614": { - "abstract_short": "GPIO Zero is a new friendly API for physical computing with Raspberry Pi. Like PyGame Zero, it's a minimal boilerplate module that lets you dive straight in and build things with physical components. The Pythonic API was designed for use in education, and was tried and tested with teachers. This talk is the story of how the library came about, how it was developed and I provide a close look at some of its cleverest features.", - "sub_title": "Developing a new friendly Python API for physical computing with Raspberry Pi", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@https://twitter.com/ben_nuttall", - "id": 614, - "speakers": "Ben Nuttall", - "title": "Raspberry Pi GPIO Zero", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Raspberry PI", - "Open-Source", - "Internet of Things (IoT)", - "Community" - ], - "abstract_long": [ - "I work at the Raspberry Pi Foundation and regularly give workshops on physical computing with Python to kids and teachers and we always found the existing GPIO library difficult to teach with due to its broad scope and verbose nature. Although technically possible to do all sorts of projects, it had a difficult learning curve and even the most basic of examples required explanation of code and electronics concepts.\r\n\r\nGPIO Zero is a new friendly API for physical computing with Raspberry Pi. Like PyGame Zero, it's a minimal boilerplate module that lets you dive straight in and build things with physical components. Simple interfaces are provided for everyday components with obvious features provided with guessable method names. The Pythonic API was designed for use in education, and was tried and tested with teachers. This talk is the story of how the library came about, how it was developed and I provide a close look at some of its cleverest features. The initial batch of work on the library was done by two people in different cities, with all features and changes discussed in length in a series of about 100 GitHub issues over 2 months, and additional features and expansions have been implemented since launch.\r\n\r\nGPIO Zero is now the Foundation's recommended method of interfacing with physical components, and comes pre-installed in the Raspbian Jessie image.\r\n\r\nDocumentation is provided at http://gpiozero.readthedocs.org/" - ], - "abstract_extra": "I wrote a blog post on this topic: http://bennuttall.com/gpio-zero-developing-a-new-friendly-python-api-for-physical-computing/\r\n\r\nI have given a number of talks on this subject to a range of audiences. At EuroPython, this will be the developer focused version of the talk, based on: https://speakerdeck.com/bennuttall/gpio-zero-developing-a-friendly-python-api-for-physical-computing-campug\r\n\r\nI spoke at EuroPython 2014 and 2015, PyConUK 2014 and 2015, PyCon Ireland 2014, and gave keynotes at PySS 2014 and EuroSciPy 2014.\r\n\r\nMy talks are documented at http://bennuttall.com/talks/\r\n\r\nNote: although this talk is related to Education, it's more focused at developers.", - "tag_categories": [ - "Educational", - "Hardware", - "Open Source", - "Hardware", - "Community" - ], - "emails": "ben@raspberrypi.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/raspberry-pi-gpio-zero", - "admin_type": "", - "companies": "Raspberry Pi Foundation" - }, - "640": { - "abstract_short": "As Armin Ronacher pointed out in a recent blog post, there is more to Python's regular expression module than meets the eye. His post made me wonder what other \u201chidden gems\u201d are stashed away in Python\u2019s `re`. In the talk I share what I\u2019ve learned about the inner workings of this extremely popular and heavily used module.", - "sub_title": "A look at the inner workings of the `re` module.", - "timerange": "2016-07-19 14:30:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 640, - "speakers": "Ilia Kurenkov", - "title": "re-Discovering Python's Regular Expressions", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Python general", - "CPython" - ], - "abstract_long": [ - "Anyone who has used Python to search text for substring patterns has at least heard of the regular expression module. Many of us use it extensively for parsers and lexers, extracting information .\r\nAnd yet we know surprisingly little about its inner workings, as Armin Ronacher demonstrated in his recent blog post, \u201cPython's Hidden Regular Expression Gems\u201d. Inspired by this, I want to dive deeper into Python\u2019s `re` module and share what I find with folks at EuroPython. My goal is that at the end of the day most of us walk away from this talk with a better understanding of this extremely useful module.\r\n\r\nHere are a few examples of the kinds of things I would like to cover:\r\n\r\n - A clear presentation of `re`\u2019s overall structure.\r\n - What actually happens behind the scenes when you \u201ccompile\u201d a regular expression with `re.compile`?\r\n - What are the speed implications of using a callable as the replacement argument to `re.sub`?\r\n - re.MatchObject interface: `group` vs. `groups` vs `groupdict`\r\n\r\nTo keep the talk entertaining as well as educational I plan to pepper it with whatever interesting and/or funny trivia I find about the module\u2019s history and structure.\r\n\r\nPrerequisites:\r\nIf you've ever used the `re` module, you should be fine :)\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Python" - ], - "emails": "ilia.kurenkov@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/rediscovering-pythons-regular-expressions", - "admin_type": "", - "companies": "eGym" - }, - "677": { - "abstract_short": "Virtualenv is a great tool for the development environment but it's definitely not suitable for every use case. Also, Docker is great for running the application in production, but not everyone that use it in production tried to use it in the development environment. Why not use the same tool from the beginning of the project and until it hits the production in a uniform stack of tooling? This talk will show use cases of using Docker in the process of development as well.", - "sub_title": "Building real, immutable, and portable virtual environments using Docker", - "timerange": "2016-07-21 16:15:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@mishunika", - "id": 677, - "speakers": "Mihai Iachimovschi", - "title": "Real virtual environments without virtualenv", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Web General", - "Python general", - "Open-Source", - "Docker", - "Deployment/Continuous Integration and Delivery" - ], - "abstract_long": [ - "The process of developing using Python is very straightforward and easy. Still, each and every developer has his own style of developing and building his entire dev environment. Most of us use virtualenvs which are reliable and comfortable to use. But there are some issues. For instance, the repeatability and immutability of the built environment are not guaranteed. \r\n\r\nVirtualenv does a lot of work that targets the direction of somehow isolated and independent environments. They are *almost* *fully* repeatable. In any team, we can hear the notorious expression \"It works for me!\".\r\n\r\nFor some time now, I am using Docker instead of virtualenv for building custom and really-virtual environments that are entirely isolated. The containers are immutable and consistent, so this workflow guarantees repeatability. Using such technique, not only enables the user to have unique and immutable environments, it also allows de developer to create full app architecture that can then be tested and deployed as is. So the production version will be in identical conditions as the one from the development environment. These features are not provided by virtualenv at all.\r\n\r\nThe goal of this exercise is to try to use totally different tooling for building the application from its first line of code until the production. " - ], - "abstract_extra": "", - "tag_categories": [ - "Web", - "Python", - "Open Source", - "DevOps", - "DevOps" - ], - "emails": "mihai.iachimovschi@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/real-virtual-environments-without-virtualenv", - "admin_type": "", - "companies": "" - }, - "621": { - "abstract_short": "It is important to understand from the beginning how model API should look like.\r\nDo not repeat your friends\u2019 mistakes and make developers upset!\r\nThere are some simple rules that can make your API cooler - clean, safe and efficient.\r\n\r\nBased on both bad and good examples of REST APIs (I had to deal with) we will learn about best practices.", - "sub_title": "", - "timerange": "2016-07-22 14:30:00, 2016-07-22 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 621, - "speakers": "Malwina Nowakowska", - "title": "RESTful API - Best Practices.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Best Practice", - "RESTful", - "APIs" - ], - "abstract_long": [ - "Nowadays building and integrating with Representational State Transfer web services is a very common thing. It seems that creating RESTful API is trivial - nothing could be more wrong.\r\nIn my previous projects I had to integrate with lots of APIs. Unfortunately only some of them were easy to work with. Most of the APIs did not follow the main rules of model API.\r\n\r\nIt is really important to understand how model REST API should look like.\r\nTo make developers happy we will learn best practices of creating REST API from the beginning.\r\n\r\nWe will start with quick introduction what REST is, why principle of REST is so amazing, talk about identifires and explain some key terms.\r\nWe will discuss about architectall constraints and properties.\r\n\r\nMistakes and best practices are based on my experience of developing and maintaining the projects. After this talk you will be able to create model RESTful API developers will be happy to work with.\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Best Practice and Use Cases", - "Web", - "Web" - ], - "emails": "malwina.nowakowskaa@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/restful-api-best-practises", - "admin_type": "", - "companies": "STX Next" - }, - "543": { - "abstract_short": "Microservices offer an efficient way to only scale those parts of your application which are performance bottlenecks.\r\n\r\nWe will demo and explain open source tech which allows the easy scaling out across distributed devices. The audience will be able to donate processor cycles from their devices to our demo application (and win a hardware prize).\r\n\r\nThe demo uses [Crossbar.io][1], an open souce application router (written in Python), and all demo code is open source.\r\n\r\n [1]: http://crossbar.io", - "sub_title": "Easy distributed systems from mobiles to servers", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 543, - "speakers": "Tobias Oberstein", - "title": "Scaling Microservices with Crossbar.io", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Scaling", - "Architecture", - "Distributed Systems", - "Internet of Things (IoT)", - "Microservices" - ], - "abstract_long": [ - "Microservices offer an efficient way to only scale parts of your applications which are hotspots. Instead of running multiple instances of a monolithic application, with all the complexity and operational run-time overhead that entails, you can scale only the functionality which is a bottleneck. Today that increasingly means scaling out, not up.\r\n\r\nWe will go over open source technologies which allow the easy scaling out across distributed devices.\r\n\r\nA live demo will allow the audience to participate with its devices (including mobile phones) in an application. (There will be prizes for the donors.)\r\n\r\nThe demo uses [Crossbar.io,][1] an open source router for the open [Web Application Messaging Protocol (WAMP) ][2] written in Python. WAMP supports routed Remote Procedure Calls, and Crossbar.io uses these to implement various load-balancing strategies across endpoints which register a particular procedure.\r\n\r\nWAMP has a first-class library for Python ([Autobahn|Python][3]), but is cross-language, with support for a total of 11 languages. This allows you to implement polyglot and heterogenos microservices applications, from Python to Node.js to C# right into the browser. Microservices can run anywhere, since the outgoing connections to the router which WAMP uses avoid NAT problems.\r\n\r\nAll software used is open source, and all demo code is provided on GitHub under the MIT license.\r\n\r\n [1]: http://crossbar.io\r\n [2]: http://wamp-proto.org\r\n [3]: http://autobahn.ws/python", - "", - "", - "" - ], - "abstract_extra": "The talk will give a very brief overview of the advantages of microservices as a modern architectural approach, and then focus on the specific problem of scaling individual microservices. There will be a quick look at some established communication mechanisms and their disadvantages in this context, and an overview of the router Remote Procedure Calls that WAMP provides, their advantages and how Crossbar.io uses these to achieve simple scaling.\r\n\r\nThe demo will allow participants to connect with their own devices (laptops, tablets, mobile phones, remote servers) and donate processor cylces. The simplest way to do so is to call up a Web page in a browser which will connect to the application and provide a JavaScript implementation of the microservice to scale. (This also provides realtime feedback about audience participation.) We will also provide a Python client, and potentially clients in other languages for participants to run on their laptops.\r\n\r\nParticipation will be possible via conference wi-fi, a local dedicated wi-fi network or a mobile network - so problems with the conference wi-fi network (always a possibility) will not impact the demo.", - "tag_categories": [ - "DevOps", - "Programming", - "DevOps", - "Hardware", - "Programming" - ], - "emails": "tobias.oberstein@tavendo.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/scaling-microservices-with-crossbario", - "admin_type": "", - "companies": "Tavendo GmbH" - }, - "405": { - "abstract_short": "The server is developed in Python 3.4, using MySQL5.6 \r\nThe mobile device application is developed using Kivy.\r\nThe application in the IoT device is developed in C. \r\nThe IoT device is a hardware device using ATSAMD21 from Atmel, and wifi is made using ESP8266. The security used is sha256, standard in Python. And the IoT device using the crypto device ATECC508A, that generate also sha256.\r\n\r\n\r\n", - "sub_title": "Server for Communication of IoT devices and Mobile Devices using Wifi Network", - "timerange": "2016-07-22 14:00:00, 2016-07-22 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 405, - "speakers": "Joaquin Berenguer", - "title": "Server for IoT devices and Mobile devices using Wifi Network,", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Algorithms", - "Beginners", - "Agile", - "APIs", - "Analytics" - ], - "abstract_long": [ - "The server is developed in Python 3.4, the information is stored in a MySQL 5.6 database. \r\nAll IoT devices, Mobile Devices and Windows or Linux Desktop are registered in the database.\r\nAll type of messages that are understood by every type of device, is also registered.\r\nA map between which device could access which device is also stored in the database.\r\nWith this info, any mobile registered could send a message to a device. The message arrives to the server that resend the message to the IoT device, receive the answer and resend to the Mobile device. \r\nThe Mobile device and the IoT device, could be anywhere, as the server is public, have the registration of every device connected.\r\nThe mobile device application is developed using Kivy.\r\nThe application in the IoT device is developed in C. \r\nThe IoT device is a hardware device using ATSAMD21 from Atmel, and wifi is made using ESP8266. The security used is sha256, standard in Python. And the IoT device using the crypto device ATECC508A, that generate also sha256.\r\nThe server start a thread for every device connected, the communication between thread is made using queues. \r\nDuring the presentation, the server is going to be presented, and IoT device is shown, no demo is going to be made.\r\nA library to manage the database, is used for easy access to the database, and have database independence, also will be shown.\r\nPrerequites: Python 3.4, sha256, threading, queue, mysql.connector, relational database.\r\n", - "", - "", - "" - ], - "abstract_extra": "Owner of the company Berentec, from 2014\r\nExperience during many year in Database Environment, working at Sybase during 19 years.\r\n", - "tag_categories": [ - "Data Science", - "Educational", - "Development Methods", - "Web", - "Data Science" - ], - "emails": "chimo.berenguer@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/server-for-iot-devices-and-mobile-devices-using-wifi-network", - "admin_type": "", - "companies": "Berentec" - }, - "454": { - "abstract_short": "The Processing project demonstrated that computer art can attract a wider audience to programming. Python has a robust catalog of libraries, including two interfaces to OpenGL. However, none of these libraries replicate Processing\u2019s simplicity when drawing to the screen. I will present my solution to this problem: a re-implementation of VPython\u2019s visual module purely in python called PygletHelper.", - "sub_title": "", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@femion", - "id": 454, - "speakers": "Catherine Holloway", - "title": "Simplifying Computer Art in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Visualization", - "Teaching", - "Game-Development" - ], - "abstract_long": [ - "Processing is a programming language originally developed by the MIT media lab with the goal of allowing artists, educators, and many others develop striking computer generated or assisted projects without requiring deep knowledge of software engineering or computer graphics. Like Processing, Python has become a favourite language of users from diverse backgrounds, such as web development, education, and science. Unlike Processing, python lacks a simple and easy to use library for drawing shapes. Python\u2019s existing libraries for scientific computing and data analysis could be made even more awesome when combined with a simple drawing library.\r\n\r\nVPython contains a module called visual that established a simple API and convention for drawing shapes, however it was written in C++, prior to the development of pyglet, and thus is not entirely cross-platform. In this talk, I will demonstrate my solution to this problem: a re-implementation of visual purely in Python called PygletHelper. Pyglet, an existing python library, provides a python interface to OpenGL. PygletHelper is built on pyglet but obscures all of the OpenGL calls, such that the user can draw simple geometric shapes to the screen and animate them without needing to know about computer graphics terminology, memory usage, or C data types.\r\n\r\nI will also show some need visualizations of science and music in my talk, as well as the graphical glitches encountered implementing the library. " - ], - "abstract_extra": "PygletHelper is open source, and available at: https://github.com/CatherineH/pyglet_helper\r\nI have given many talks in the past about robotics or quantum computing, but this would be my second talk on python if accepted. In 2015 I gave a talk on the Robotics Operating System and Python at PyCon Canada:\r\n\r\nhttps://www.youtube.com/watch?v=oX294t9UYSw", - "tag_categories": [ - "Data Science", - "Everything Else", - "Everything Else" - ], - "emails": "milankie@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/simplifying-computer-art-in-python", - "admin_type": "", - "companies": "Qubitekk" - }, - "577": { - "abstract_short": "This talk is based on a recent consulting project the speaker ran to support the valuation of a Python startup company in the due diligence phase.\r\n\r\nBy following some of the advice from this talk, you should be possible to improve the valuation of your Python startup or consulting business in preparation for investment rounds or an acquisition.", - "sub_title": "Designing valuable software for fun and profit", - "timerange": "2016-07-19 16:15:00, 2016-07-19 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@malemburg", - "id": 577, - "speakers": "Marc-Andre Lemburg", - "title": "So you think your Python startup is worth $10 million...", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Databases", - "Use Case", - "Best Practice", - "Business Track", - "Software Design" - ], - "abstract_long": [ - "This talk is based on the speaker's experience running a Python focused software company for more than 15 years and a recent consulting project to support the valuation of a Python startup company in the due diligence phase.\r\n\r\nFor the valuation we had to come up with metrics, a catalog of criteria analyzing risks, potential and benefits of the startup's solution, as well as an estimate for how much effort it would take to reimplement the solution from scratch.\r\n\r\nIn the talk, I am going to show the metrics we used, how they can be applied to Python code, the importance of addressing risk factors, well designed code and data(base) structures.\r\n\r\nBy following some of the advice from this talk, you should be able to improve the valuation of your startup or consulting business in preparation for investment rounds or an acquisition.\r\n", - "", - "", - "" - ], - "abstract_extra": "Marc-Andre Lemburg is a regular speaker at Python conferences and has been giving Python talks ever since the first European Python Meeting in 2001.\r\n\r\nThe following page includes some of the talk he has given over the years:\r\n\r\nhttp://www.egenix.com/library/presentations/\r\n\r\nMarc-Andre also runs a local user group in D\u00fcsseldorf, together with Charlie Clark, where he regularly gives shorter or longer talks on various topics in German:\r\n\r\nhttp://www.egenix.com/library/pyddf/videos.html\r\n", - "tag_categories": [ - "Databases", - "Best Practice and Use Cases", - "Best Practice and Use Cases", - ">>> Suggested Track", - "Programming" - ], - "emails": "mal@europython.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/so-you-think-your-startup-is-worth-10-million", - "admin_type": "", - "companies": "eGenix.com Software GmbH" - }, - "501": { - "abstract_short": "Having to deal with a monolith, an application which became far to big over the time, can be quite bothersome. On the other hand if you split it up and have to deal with lots of smaller components, you might end up in dependency hell. But not only the splitting of the monolith and the management of the dependencies afterwards can be a problem, but also the packaging of you python components itself. \r\n ", - "sub_title": "", - "timerange": "2016-07-22 12:00:00, 2016-07-22 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@tmuxbee", - "id": 501, - "speakers": "Patrick M\u00fchlbauer", - "title": "Split Up! Fighting the Monolith", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "System Architecture", - "Best Practice", - "Testing", - "Packaging" - ], - "abstract_long": [ - "Do you know this situation, where you and your team are facing this big monolith? An application which has grown far too\r\nbig over the years. Every time when you make a change, you have to fear the code might break at a totally different place, because lots of things\r\nare closely intertwined. But what to do if you are at such a point? Maybe you start thinking about microservices but then questions like\r\n\"Are they really the right thing for us?\" and \"How do we get there?\" arise.\r\n\r\nIn my talk I will show you how we are dealing with our monolith. A collection of multiple python packages without clear boundaries, forming the\r\nactual application - all living in a single monorepo.\r\n\r\nI will talk about how we split up the whole thing, making it more flexible for us and also easier to use individual components by other teams.\r\nAll this, of course, comes with a price: You have to think more about the dependencies between you components. You have to think about how\r\nyou can efficiently test everything, making sure your final application is still working correctly.\r\nDon't loosing yourself in dependency hell and packaging all components correctly becomes quite a challenge.\r\n\r\nThis talk will:\r\n\r\n - show you bad patterns to avoid, so that you don't end up in the above situation in the first place\r\n - give you ideas what to consider when tackling your monolith\r\n - explain how to package your python components and how to mange your dependencies\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Best Practice and Use Cases", - "Testing", - "Python" - ], - "emails": "tmuxbiene@googlemail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/split-up-fighting-the-monolith", - "admin_type": "", - "companies": "Blue Yonder " - }, - "748": { - "abstract_short": "a", - "sub_title": "", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 748, - "speakers": "Solomon Bisker", - "title": "Sponsored talk: Hired", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "python" - ], - "abstract_long": [ - "a" - ], - "abstract_extra": "", - "tag_categories": [ - "" - ], - "emails": "solomon@hired.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/sponsored-talk-hired", - "admin_type": "", - "companies": "" - }, - "524": { - "abstract_short": "In times of NoSQL databases and Map Reduce Algorithms it's surprising how far\r\nyou can scale the relational data model. At [Blue Yonder](http://blue-yonder.com)\r\nwe use SQLAlchemy in all stages of our data science workflows and handle tenth\r\nof billions of records to feed our predictive algorithms. This talk will dive\r\ninto SQLAlchemy beyond the Object Relational Mapping (ORM) parts and conentrate\r\non the SQLAlchemy Core API, the Expression Language and Database Migrations\r\nwith Alembic.", - "sub_title": "", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@peterhoffmann", - "id": 524, - "speakers": "Peter Hoffmann", - "title": "SQLAlchemy as the backbone of a Data Science company", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Big Data", - "SQL Alchemy", - "Data Science", - "Databases" - ], - "abstract_long": [ - "In times of NoSQL databases and Map Reduce Algorithms it's surprising how far\r\nyou can scale the relational data model. At [Blue Yonder](http://blue-yonder.com)\r\nwe use SQLAlchemy in all stages of our data science workflows and handle tenth\r\nof billions of records to feed our predictive algorithms. This talk will dive\r\ninto SQLAlchemy beyond the Object Relational Mapping (ORM) parts and conentrate\r\non the SQLAlchemy Core API and the Expression Language:\r\n\r\n- **Database Abstraction**: Statements are generated properly for different\r\n database vendor and type without you having to think about it.\r\n\r\n- **Security**: Database input is escaped and sanitized prior to beeing commited \r\n to the database. This prevents against common SQL injection attacks.\r\n\r\n- **Composability and Reuse**: Common building blocks of queries are expressed\r\n as SQLAlchemy selectables and can be reuesd in other queries.\r\n\r\n- **Testability**: SQLAlchemy allows you to perform functional tests against a database\r\n or mock out queries and connections.\r\n\r\n- **Reflection**: Reflection is a technique that allows you to generate a\r\n SQLAlchemy repesentation from an existing database. You can reflect tables,\r\n views, indexes, and foreign keys.\r\n\r\nAs a result of the usage of SQLAlchemy in Blue Yonder, we have implemented and\r\nopen sourced a SQLAlchemy dialect for the in memory, column-oriented database\r\nsystem [EXASolution](https://github.com/blue-yonder/sqlalchemy_exasol)" - ], - "abstract_extra": "", - "tag_categories": [ - "Data Science", - "Databases", - "Data Science", - "Databases" - ], - "emails": "peter.hoffmann@blue-yonder.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/sqlalchemy-as-the-backbone-of-a-data-science-company", - "admin_type": "", - "companies": "Blue Yonder" - }, - "477": { - "abstract_short": "System tests are an invaluable tool for verifying correctness of large scale online services. This talk will discuss best practices and tooling (pytest and docker-py) for writing maintainable system tests.\r\n\r\nDemonware has used System tests to verify online services for some of the biggest AAA video game launches as well as internal operational tools.\r\n\r\nMany folks who write software are familiar with unit testing, but far fewer with system testing.", - "sub_title": "", - "timerange": "2016-07-20 14:30:00, 2016-07-20 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@bobcatwilson, @mtomwing", - "id": 477, - "speakers": "Christie Wilson, Michael Tom-Wing", - "title": "System Testing with pytest and docker-py", - "have_tickets": [ - true, - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Best Practice", - "Distributed Systems", - "Test Libraries (pyTest/node/...)", - "Docker", - "Testing" - ], - "abstract_long": [ - "System testing a microservice architecture is challenging. As we move away from monolithic architectures, system testing becomes more important but also more complicated.\r\n\r\nIn the video game industry, if a game doesn\u2019t work properly immediately after launch, it will heavily impact game success. We have found system testing to be an important tool for pre launch testing of game services and operational tools, to guarantee quality of these services at launch.\r\n\r\nWe want to share with you best practices for system testing: when to write system tests, what to test and what not to, and common pitfalls to avoid. Using python\u2019s pytest tool and docker-py for setting up services and their dependencies has made it easier than ever to write complex but maintainable system tests and we\u2019ll share with you how we\u2019ve made use of them.\r\n\r\nDevelopers (senior and junior) and ops folks can walk away from this talk with practical tips they can use to apply system testing to their software.", - "", - "", - "" - ], - "abstract_extra": "Please note that I would be presenting with my colleague Michael Tom-Wing\r\n\r\nI founded and run PyLadies Vancouver, where I regularly speak at meetups.\r\n\r\nMichael Tom-Wing and I have together presented tutorials on unit testing at pydx (http://pydx.org/) and at several PyLadies Vancouver meetups (www.meetup.com/PyLadies-Vancouver/). We will be delivering this tutorial at PyCon this year as well. The content of the tutorial is available on github: https://github.com/keeppythonweird/catinabox#catinabox---intro-to-testing-and-test-automation-in-python", - "tag_categories": [ - "Best Practice and Use Cases", - "DevOps", - "Testing", - "DevOps", - "Testing" - ], - "emails": "bobcatfish@gmail.com, mtomwing@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/system-testing-with-pytest-and-docker-py", - "admin_type": "", - "companies": "Demonware" - }, - "648": { - "abstract_short": "A framework-agnostic approach to creating Python microservices with a tests-first approach.\r\nI'll show how to utilize Docker and Swagger to create service and contract tests that run your service as an independent process, as if it was running in production, giving you and your team a higher degree of confidence when introducing changes.\r\n\r\nA little bit of a broader microservice, TDD and work management context will also be given.", - "sub_title": "Docker, Swagger and Pytest to the rescue", - "timerange": "2016-07-22 12:00:00, 2016-07-22 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 648, - "speakers": "Micha\u0142 Bultrowicz", - "title": "TDD of Python microservices", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Test Driven Development (TDD)", - "Docker", - "RESTful", - "Web Track" - ], - "abstract_long": [ - "These will be my ideas on how to help a microservice-based (HTTP) project by integrating testing into the development process (TDD).\r\nI'll approach the testing pyramid presented in Martin Fowler's \"Microservice Testing\" as well as the test variants in \"Building Microservices\" (O'Reilly) and I'll show a way of how they can be translated to real-life Python.\r\n\r\nThe main focus will be on \"service tests\" (aka. out-of-process component tests) and contract tests. They both can be run relatively fast on a development machine and can give fast feedback to the developer, preventing many kinds of problems.\r\n\r\nService tests run the whole application process without any internal modifications, but have to present the service with a fake \"outside world\". I'll show how to fake external HTTP services with Mountebank (similar to WireMock). Instead of faking other systems (like databases) we can quickly spin up the real deal as a Docker container from within the tests.\r\n\r\nContract tests check if the contract (interface) of your service with the outside world is kept, so no external services should be broken by the changes you are introducing. It can also work the other way around, proving that your collaborators are keeping their part of the deal. In both cases, Swagger (a RESTful API description scheme) and a few clever tricks can be used for significant advantage." - ], - "abstract_extra": "I've worked as developer and then a technical team leader on one of the teams working on Intel's Trusted Analytics Platform - a solution based on microservices and PaaS.\r\n\r\nI've presented once before, during EuroPython 2015 . My talk title was \"Python microservices on PaaS done right\". This is a continuation of this talk, focusing more on testing and the experiences I had for the past year.", - "tag_categories": [ - "Testing", - "DevOps", - "Web", - ">>> Suggested Track" - ], - "emails": "michalbultrowicz@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/tdd-of-python-microservices", - "admin_type": "", - "companies": "N/A" - }, - "519": { - "abstract_short": "We will present the test-driven reuse (TDR) development strategy, a natural extension of test-driven development (TDD), and how to execute it with [pytest-nodev][1] a test-driven search engine for Python code.\r\n\r\n [1]: http://pytest-nodev.readthedocs.io/en/stable/quickstart.html\r\n\r\nPytest-nodev and the other nodev tools that helps implement TDR for Python are rather new, in spite of that we will present several successful applications of the technique to more and more complex examples.", - "sub_title": "Its like test-driven development... without the development bit.", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@alexamici", - "id": 519, - "speakers": "Alessandro Amici", - "title": "Test-driven code search and reuse coming to Python with pytest-nodev", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Test Driven Development (TDD)", - "Educational Track", - "Test Libraries (pyTest/node/...)", - "Testing", - "Best Practice" - ], - "abstract_long": [ - "We will present the test-driven reuse (TDR) development strategy, a natural extension of test-driven development (TDD), and how to execute it with [pytest-nodev](http://pytest-nodev.readthedocs.io/en/stable/quickstart.html) an Open Source test-driven search engine for Python code.\r\n\r\nWhen developing new functionalities developers spend significant efforts searching for code to reuse, mainly via keyword-based searches, e.g. on StackOverflow and Google. Keyword-based search is effective in finding code that is explicitly designed and documented to be reused, e.g. libraries and frameworks, but typically fails to identify reusable functions and classes in the large corpus of auxiliary code of software projects.\r\n\r\nTDR aims to address the limits of keyword-based search with test-driven code search that focuses instead on code behaviour and semantics. Developing a new feature in TDR starts with the developer writing the tests that will validate candidate implementations of the desired functionality. Before writing any functional code the tests are run against all functions and classes of available projects. Any code passing the tests is presented to the developer as a candidate implementation for the target feature.\r\n\r\n[Pytest-nodev](https://github.com/nodev-io/pytest-nodev) and other nodev tools that help implement TDR for Python are newer than the JAVA counterparts, in spite of that we will present several applications of the technique to more and more complex examples." - ], - "abstract_extra": "Two open source projects will be demonstrated:\r\n\r\n- https://github.com/nodev-io/pytest-nodev\r\n- https://github.com/nodev-io/nodev.specs\r\n\r\nWe would love to announce the beta of an on-line test-driven code search service at EuroPython. No promises, though.", - "tag_categories": [ - "Testing", - ">>> Suggested Track", - "Testing", - "Testing", - "Best Practice and Use Cases" - ], - "emails": "a.amici@bopen.eu", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/test-driven-source-code-search-for-python-with-pytest-nodev", - "admin_type": "", - "companies": "B-Open Solutions srl" - }, - "486": { - "abstract_short": "In this session you will learn your way around Python 3\u2019s unittest.mock package through examples. You\u2019ll learn about the Mock class, sentinels and patching. You will see the benefits that mocks can bring and learn to avoid the pitfalls. Along the way I\u2019ll fill you in on some of the bewildering terminology surrounding mocks such as \u201cSUT\u201d, \u201cStub\u201d, \u201cDouble\u201d, \u201cDummy\u201d , \u201cmockist\u201d and more and I\u2019ll give a brief plug for my own mockextras package that can enhance your mock experience.", - "sub_title": "", - "timerange": "2016-07-22 15:45:00, 2016-07-22 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@andrewburrows", - "id": 486, - "speakers": "Andrew Burrows", - "title": "Testing the untestable: a beginner\u2019s guide to mock objects", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Beginners", - "Testing" - ], - "abstract_long": [ - "Mock objects can be a powerful tool to write easy, reliable tests for the most difficult to test code. In this session you will learn your way around Python 3\u2019s unittest.mock package starting at the simplest examples and working through progressively more problematic code. You\u2019ll learn about the Mock class, sentinels and patching and how and when to use each of them. You will see the benefits that mocks can bring and learn to avoid the pitfalls. Along the way I\u2019ll fill you in on some of the bewildering terminology surrounding mocks such as \u201cSUT\u201d, \u201cStub\u201d, \u201cDouble\u201d, \u201cDummy\u201d , \u201cmockist\u201d and more and I\u2019ll give a brief plug for my own mockextras package that can enhance your mock experience." - ], - "abstract_extra": "I have given many presentations within my organisation to audiences of up to 100+ people but have no publicly referenceable examples. \r\n\r\nI am testing mentor for all Man AHL developers, especially new hires. I have given variants of this presentation numerous times within my workplace.\r\n\r\nI am the developer and maintainer of the mockextras library, which I will give a small plug for in the talk.\r\n\r\nhttp://mockextras.readthedocs.org/\r\nhttps://github.com/manahl/mockextras\r\nhttps://pypi.python.org/pypi/mockextras", - "tag_categories": [ - "Educational", - "Testing" - ], - "emails": "aburrows@ahl.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/testing-the-untestable-a-beginners-guide-to-mock-objects", - "admin_type": "", - "companies": "Man AHL" - }, - "745": { - "abstract_short": "CPython's GIL means your Python code can only run on one CPU core at a time. Can we remove it? Yes, we can... in fact we already have! But is it worth the cost?", - "sub_title": "Removing CPython's GIL", - "timerange": "2016-07-20 14:30:00, 2016-07-20 15:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@larryhastings", - "id": 745, - "speakers": "Larry Hastings", - "title": "The Gilectomy", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Performance", - "Multi-Threading", - "CPython" - ], - "abstract_long": [ - "CPython's \"Global Interpreter Lock\", or \"GIL\", was added in 1992. It was an excellent design decision. But 24 years is a long time--today it prevents Python from capitalizing on multiple CPUs. Many people want us to remove the GIL.\r\n\r\nIt turns out, removing the GIL isn't actually that hard. In fact, I already removed it, in my experimental \"gilectomy\" branch. But the GIL is one reason CPython is so fast! The \"gilectomy\" makes CPython shockingly slow.\r\n\r\nThis talk will discuss the history of the GIL, how the GIL helps make CPython fast, how the \"gilectomy\" removed the GIL, and some ways we might be able to make the \"gilectomy\" version fast enough to be useful." - ], - "abstract_extra": "I gave a version of this talk at PyCon 2016. The room was full five minutes before starting and many, many people were turned away at the door.", - "tag_categories": [ - "Programming", - "Programming", - "Python" - ], - "emails": "larry@hastings.org", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/the-gilectomy", - "admin_type": "", - "companies": "Python CoreDev" - }, - "683": { - "abstract_short": "I would like to indicate main keys to success, factors and features that help a developer to find himself on an independent career path.\r\nHow to create employee-friendly work environment for Python developers?\r\nWhich business model gives a chance to attract and keep more than 100 Python enthusiast?\r\nI will also gladly share some lessons learned working with dozens of clients, dozens of Python frameworks, and lots, lots of great developers.", - "sub_title": "", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@mdziergwa", - "id": 683, - "speakers": "Maciej Dziergwa", - "title": "The Journey from Python Developer to Python Company Owner", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Business Track", - "Community" - ], - "abstract_long": [ - "Ten years ago I became a big Python fan, but at the time there were no jobs for Python developers in Poland. So, I decided to start my own Python company. Today, ten years later, this company employs more than 100 Python Developers in four cities.\r\n\r\nThere are a lot of Python enthusiasts in the world, many of them more skilled than I was at that time, but clearly not anyone can become a \u201ePython Business Developer\u201d. In this talk I would like to indicate main keys to success, factors and features that help a developer to find himself on an independent career path.\r\n\r\nMy goal is to answear these questions:\r\n\r\nHow to create employee-friendly work environment for Python developers?\r\n\r\nWhich business model gives a chance to attract and keep more than 100 Python enthusiast?\r\n\r\nI will also gladly share some lessons learned while working with dozens of clients, dozens of Python frameworks, and lots, lots of great developers. " - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "Community" - ], - "emails": "mdziergwa@stxnext.pl", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/the-journey-from-python-developer-to-python-company-owner", - "admin_type": "", - "companies": "STX Next" - }, - "398": { - "abstract_short": "In this talk discusses some joyful exercises in simulation. I'll demonstrate it's usefulness but moreover I'll discuss the sheer joy. I'll discuss how to generate song lyrics, I'll discuss how to get better at casino games, how to avoid math, how to play monopoly or even how to invest in lego minifigures. No maths required; just a random number generator. ", - "sub_title": "Make a living selling lego mini-figures on ebay.", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@fishnets88", - "id": 398, - "speakers": "vincent warmerdam", - "title": "The Joy of Simulation: for Fun and Profit", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Beginners", - "Algorithms", - "Data Science", - "Science" - ], - "abstract_long": [ - "In this talk discusses some joyful exercises in simulation. I'll demonstrate it's usefulness but moreover I'll discuss the sheer joy you can experience. \r\n\r\nI'll go over the following points (the short list):\r\n\r\n- I'll show how you can avoid math by simulating; I'll calculate the probability that two people in the live room have the same birthday. \r\n- I'll show how simulation can help you get better at many games. I'll start with simple card games and with the game of roulette. Most prominently I'll discuss how to determine the value of buying an asset in the game of monopoly (See blogpost: http://koaning.io/monopoly-simulations.html). \r\n- I'll demonstrate how you can simulate Red Hot Chilli Pepper lyrics. Or any other band. Or legalese. \r\n- I'll demonstrate the results of a scraping exercise which helped me to determine the value of investing in Lego Minifigures (See blogpost: http://koaning.io/lego-minifigs-stochastics-profit.html). \r\n\r\nDepending on the level of the audience I might also discuss how biased simulation can help you solve optimisation problems or even introduce bayesian statistics via sampling. I'll gladly leave this decision to the EuroPython committee. ", - "", - "", - "" - ], - "abstract_extra": "I am the founding committee member of PyData Amsterdam and I've spoken before at PyData events as well as EuroPython. You can find me on twitter or at my blog over at koaning.io. ", - "tag_categories": [ - "Educational", - "Educational", - "Data Science", - "Data Science", - "Sciences" - ], - "emails": "vincentwarmerdam@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/the-joy-of-simulation-for-fun-and-profit", - "admin_type": "", - "companies": "GoDataDriven" - }, - "599": { - "abstract_short": "This talk will teach you how Twisted or Tornado supplement asyncio, how asyncio can/is integrated with these frameworks, and makes a case for the continued development of new and existing selector-loop based frameworks. It will also paint a picture of the future direction of Twisted, why the original plan of asyncio as a standard API has not come to complete fruition, and what can be done about it. ", - "sub_title": "Why Twisted and Tornado Are Relevant In The Asyncio Age", - "timerange": "2016-07-18 14:45:00, 2016-07-18 15:30:00", - "sub_community": "", - "duration": 45, - "twitters": "@hawkieowl", - "id": 599, - "speakers": "Amber Brown", - "title": "The Report Of Twisted\u2019s Death", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Performance", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "- Introduction (3 min)\r\n - I\u2019m Amber Brown, Twisted Release Manager\r\n - 3 years contributing to the Twisted Project\r\n- What is asynchronous I/O? (5 min)\r\n- How can it be implemented? (5 min)\r\n- The options (5 min)\r\n - Twisted, Tornado, asyncio\r\n- Asynchronous I/O on Python 3, in 2012 (2 min)\r\n - Tornado was only just ported\r\n - twisted, gevent, eventlet, etc were not ported\r\n- asyncio (7 min)\r\n - Designed as both a \u201ccommon API\u201d for async I/O frameworks, much like WSGI was for web servers\r\n - Built using ideas from Twisted\r\n- asyncio exists, so Twisted and Tornado can go away, right? (5 min)\r\n - asyncio is an \u201casync I/O thing\u201d, and twisted/tornado are \u201casync I/O things\u201d, so Twisted and Tornado aren\u2019t required now, right?\r\n- Twisted\u2019s Renaissance (5 min)\r\n - 450,000 LoC, fifteen years of legacy, supports many many major protocols\r\n - Twisted hits 50% on the port to Python 3\r\n - Pressure from asyncio providing renewed competition\r\n - The very existence of asyncio means we no longer need to have the \u201cwhy is asynchronous I/O a good idea\u201d\r\n- But It\u2019s Not Over Yet (5 min)\r\n - Twisted does not implement nor use the asyncio standard APIs, Twisted needs help and developer support to do this\r\n - Support on Windows is still subpar, as the asyncio IOCP proactor does not support UDP\r\n- The Future (8 min)\r\n - A Twisted You Can Use\r\n - WSGI 2\r\n - asyncio standardisation\r\n- Questions (5 min)\r\n", - "", - "", - "" - ], - "abstract_extra": "This is a talk which has been accepted for PyCon US 2016. The full abstract, as submitted to PyCon US, is available at https://dl.dropboxusercontent.com/u/14290114/Twisted%20and%20Tornado%20in%20The%20Age%20of%20Asyncio.pdf .\r\n\r\nI've previously given talks at DjangoCon AU (keynote 2015), PyCon AU (2014, 2015), PyCon CZ (keynote 2015), and Django Under The Hood (2015).", - "tag_categories": [ - "Programming", - "Programming" - ], - "emails": "hawkowl@atleastfornow.net", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/the-report-of-twisteds-death", - "admin_type": "", - "companies": "" - }, - "651": { - "abstract_short": "Mindfulness has proven to be a foundational skill that started as a pure buddhist practice. Nowadays mindfulness serves as the core technique of several western programs ranging from curing stress-induced medical problems to curricula for teaching successful business leadership, such as the Search Inside Yourself program developed at Google. \r\n\r\nThe aim of this seminar is to provide a practical experience of mindfulness with a short introduction to how it can be applied by digital workers.", - "sub_title": "", - "timerange": "2016-07-22 16:15:00, 2016-07-22 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@https://twitter.com/ralhei", - "id": 651, - "speakers": "Ralph Heinkel", - "title": "The value of mindfulness and how it has arrived at Google", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [], - "abstract_long": [ - "Mindfulness has proven to be a foundational skill that started as a pure buddhist practice. Nowadays mindfulness serves as the core technique of several western programs ranging from curing stress-induced medical problems to curricula for teaching successful business leadership, such as the Search Inside Yourself (SIY) program developed at Google in 2002. \r\n\r\nMind is the root of all things. Neuroscience shows that attention is a fundamental function of the mind. Being able to direct attention to the present moment - and keep it there while performing daily tasks - is a great tool to navigate through life and its challenges with more engagement, more happiness, and more resilience. Focusing attention in a relaxed way enables us to disconnect from the overall noise found in a high-speed environment and get things done without feeling too overwhelmed by them. But being effective is not only about checking off more tasks - it is about how we are in resonance with our environment, how we interact with others, and how we face the increasing complexity in our professional life. \r\n\r\nThe aim of this seminar is to provide a practical experience of mindfulness with a short introduction to how it can be applied in a technology driven world as experience by digital workers." - ], - "abstract_extra": "", - "tag_categories": [], - "emails": "rh@ralph-heinkel.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/the-value-of-mindfulness-and-how-it-has-arrived-at-google", - "admin_type": "", - "companies": "Freelance Python Developer" - }, - "576": { - "abstract_short": "In recent years one of the ways people get introduced into Python is through its scientific stack. Although this is not bad, it may lead to learn solely one aspect of the language, while overlooking other idioms and functionality included in Python as well as some basic software development good practices. I will share some useful tricks, tools and techniques and software design and development principles that I find beneficial when working on a data processing / science project.", - "sub_title": "", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@mfcabrera", - "id": 576, - "speakers": "Miguel Cabrera", - "title": "Things I wish I knew before starting using Python for Data Processing", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Software Design", - "Python general", - "Best Practice", - "Data Science" - ], - "abstract_long": [ - "In recent years of the ways people get introduced into Python is through its scientific stack. Most people that learned Python this way are not trained software developers and many times it is the first contact with a programming language.\r\nAlthough this is not bad, it may lead to learn solely one aspect of the language while overlooking other idioms, standard and common libraries included in Python as well as some basic software development good practices. This may become a problem when a data science project is moved from an experimentation phase to an integration with technical environment. \r\n\r\nIn this talk I share some useful tricks, tools and techniques and as well as some software design and development principles that I find beneficial when working on a data processing / science project.\r\n\r\nThe talk is divided into two parts, one is Python centered, where I will talk about some powerful Python construct that are useful in data processing tasks. This include some parts collections module, generators and iterators among others. The other I will describe some general software development concepts including SOLID, DRY, and KISS that are important to understand the rationale behind software design decisions. \r\n" - ], - "abstract_extra": "I am been thinking in the idea for this talk for some time already . I gave a lighting talk on this subject during the [PyData Meetup in Berlin in 2015][1].\r\n\r\nAs speaker experience I have spoken in some meetups and talks including Munich Data Geeks, PyData Meetup, PyData Berlin 2015. I also gave a lighting talk at Europython 2015. \r\n\r\nSome of my slides can be found here: https://speakerdeck.com/mfcabrera\r\n\r\n [1]: https://speakerdeck.com/mfcabrera/pydata-berlin-meetup-nov-2015-some-of-the-things-i-wish-i-knew-before-starting-using-python-for-data-science\r\n", - "tag_categories": [ - "Programming", - "Python", - "Best Practice and Use Cases", - "Data Science" - ], - "emails": "mfcabrera@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/things-i-wish-i-knew-before-starting-using-python-for-data-processing", - "admin_type": "", - "companies": "TrustYou" - }, - "617": { - "abstract_short": "What systems and tools are useful for encrypting and securing email today? After discussing attack vectors we'll explore two user-side techniques for establishing end-to-end encryption, GPG and S/MIME. We then look at two projects which aim to provide ready-made email-server provisioning, Mail-in-a-box and LEAP and conclude with spotlights on ongoing EU-research projects aiming to improve email. ", - "sub_title": "", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@, @", - "id": 617, - "speakers": "holger krekel, Kali Kaneko", - "title": "Towards More Secure Emailing", - "have_tickets": [ - true, - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Security", - "Infrastructure", - "Best Practice" - ], - "abstract_long": [ - "Email has been declared dead several times but refuses to die. It remains the backbone of the web and remains the largest federated open social network to date. However, most people and organisations rely on a few big email operators which fund their operations through advertisements and user tracking. But is it neccessary to hand off email messaging operations to large operators? Is dealing with unsolicited email (SPAM) still too maintenance intensive to deploy it by yourself? Is handling secret keys to unlock encrypted mails still a nightmare? Are there somewhat secure email hosting solutions?\r\n\r\nIn recent years there have been renewed efforts to renovate the state of world wide email infrastructure with initiatives such as the \"Dark Mail Alliance\", \"FreedomBox\", \"Mailpile\", \"Mail-in-a-box\" and the \"LEAP encryption access project\". Some of them are using Python to provide security to users both from criminal, corporate and state level attacks and could use help from experienced python programmers.\r\n\r\nThe talk concludes with highlighting current ongoing research (Panoramix and NEXTLEAP) funded by the European Union over the next couple years. They try to ease and automate key management and provide \"encryption by default\" among other goals. After this talk you'll end up having a better understanding of how you can use existing technologies for yourself or your organisation and how you can possibly help to improve them and make life for users and activists safer world-wide.", - "", - "", - "" - ], - "abstract_extra": "I intend to give this talk with Kali Kaneko from Guatemala but didn't see a way to add him as co-speaker. ", - "tag_categories": [ - "Security", - "DevOps", - "Best Practice and Use Cases" - ], - "emails": "holger@merlinux.eu, bennomadic@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/towards-more-secure-emailing", - "admin_type": "", - "companies": "LEAP Encrypted Access Project, merlinux GmbH" - }, - "644": { - "abstract_short": "El ecosistema cient\u00edfico de python es extraordinario y saca m\u00fasculo con las \u00faltimas aportaciones de la comunidad cient\u00edfica. Revisaremos nuevas aproximaciones a la representaci\u00f3n de texto. \u00a1Tus cadenas de texto merecen algo m\u00e1s que una m\u00edsera bolsa de palabras! Veremos c\u00f3mo se aplica la representaci\u00f3n distribuida (word embeddings) en un caso pr\u00e1ctico de aprendizaje autom\u00e1tico, y daremos consejos para hacer experimentos replicables y obtener datos significativos.", - "sub_title": "\u201cNuevas\u201d aproximaciones a la representaci\u00f3n de texto para el procesamiento del lenguaje natural", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@maidotgimenez", - "id": 644, - "speakers": "Mai Gim\u00e9nez", - "title": "Un vector por tu palabra", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Educational Track", - "Science Track", - "PyLadies", - "Data Science", - "Deep Learning" - ], - "abstract_long": [ - "\u201cDime con quien andas y te dir\u00e9 c\u00f3mo eres\u201d Este dicho es una de las ideas m\u00e1s revolucionarias en PLN. Podemos saber muchas cosas de una palabra por su contexto. No es lo mismo un adorable gato que un gato mec\u00e1nico, pero por el contexto diferenciamos esta palabra polis\u00e9mica.\r\nHasta ahora la mayor parte de los modelos representan una frase como una bolsa de palabras. Por ejemplo, si queremos representar este conjunto de frases: [\u201cI love Python\u201d, \u201cI love NLP\u201d, \u201cPyladies are cool\u201d] tenemos un vocabulario de siete palabras: [\u201cI\u201d, \u201clove\u201d, \u201cPython\u201d, \u201cNLP\u201d, \u201cPyladies\u201d, \u201care\u201d, \u201ccool\u201d] esta representaci\u00f3n crea un vector de tama\u00f1o del vocabulario para cada frase, y pone a 1 si la palabra aparece y a 0 en el caso contrario : [[1,1,1,0,0,0,0], [1,1,0,1,0,0,],[0,0,0,0,1,1,1]] \u00a1Pero,se pierde el contexto y los vectores pueden ser gigantes y con much\u00edsimos 0s!\r\nRecientemente, hemos encontrado una forma mucho mejor de representar las palabras: La representaci\u00f3n distribuida -word2vec, por ejemplo- \r\nEn esta charla exploramos esta representaci\u00f3n y c\u00f3mo aplicarla en problemas de clasificaci\u00f3n utilizando textos de redes sociales. \r\nNavegaremos por el rico ecosistema cient\u00edfico en python, veremos c\u00f3mo crear gr\u00e1ficas significativas y hablaremos de la importancia de escribir experimentos bien dise\u00f1ados, replicables y con c\u00f3digo elegante y por supuesto de la importancia de difundir el conocimiento. Debemos inspirar a la siguiente generaci\u00f3n de cient\u00edficos y cient\u00edficas \u00a1Seamos extraordinarios!" - ], - "abstract_extra": "He dado charlas en la PyConES 2013 (https://youtu.be/8MRG6SixmeM), PyConES 2014 (https://youtu.be/k5-50FFCifw) y estuve en la sesi\u00f3n de posters de la PyCon 2014(https://us.pycon.org/2014/schedule/presentation/94/). He formado parte del equipo organizador de la PyConEs 2015.\r\nDoy charlas en Python Valencia, Betabeers y en pr\u00e1cticamente en cualquier evento que me dejen predicar sobre lo mol\u00f3n que es python, lo importante que es la diversidad en la comunidad y en definitiva compartir conocimiento. \r\n", - "tag_categories": [ - ">>> Suggested Track", - ">>> Suggested Track", - "Community", - "Data Science", - "Data Science" - ], - "emails": "mai@immutable.es", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/un-vector-por-tu-palabra", - "admin_type": "", - "companies": "" - }, - "703": { - "abstract_short": "I will describe a scientific application of python in the field of Astrophysics and Cosmology. How the publicly available package Monte Python is used to compare data from space satellite missions with theoretical models that attempt to describe the evolution and content of the Universe. The result is surprising, as it points towards a Universe which is mainly dark.", - "sub_title": "", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@vpettorino", - "id": 703, - "speakers": "Valeria Pettorino", - "title": "Unveiling the Universe with python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Visualization", - "Science", - "Python general", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Physics" - ], - "abstract_long": [ - "Python is widely used in Cosmology, which is the study of the Universe and all forms of energy in it. A large amount of data has been recently obtained through space satellite missions, such as Planck, financed by ESA/NASA. Planck has observed the radiation emitted about 13 billion years ago (the Cosmic Microwave Background, CMB), which gives us information on the content and space-time geometry of the Universe. Many competitive theoretical models have been proposed that aim at describing the evolution of the species contained in the Universe: therefore, cosmologists need a method to identify which theoretical model better fits the data. In order to compare data with theoretical predictions, cosmologists use Bayesian statistics and Monte Carlo simulations. Among the tools developed for the analysis, the package \u2018Monte Python\u2019 is publicly available and uses python to perform Monte Carlo simulations: this allows to determine the theoretical model that maximizes the likelihood to obtain the observed data. Such model is now the standard cosmological model and reveals a Universe that is very different from what scientists had ever expected. A Universe in which the atoms we are made of, constitute only 5% of the total energy budget. The rest is the so-called \u2018Dark Universe\u2019.\r\n\r\nI will illustrate the story of how cosmologists used python to analyse the data of the CMB and unveil the Dark Universe.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Data Science", - "Sciences", - "Python", - "Data Science", - "Sciences" - ], - "emails": "valeria.pettorino@me.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/unveiling-the-universe-with-python", - "admin_type": "", - "companies": "University of Heidelberg" - }, - "434": { - "abstract_short": "Python\u2019s double-underscore ('`__`') methods and attributes go by many names, including \u201cspecial\u201d, \u201cdunder\u201d, and \u201cmagic\u201d. You already use some, like `__init__`, but there are many more! \r\n\r\nIn this talk, we\u2019ll see how dunders can be useful, silly, dangerous, and fun! We\u2019ll trick Python\u2019s arithmetic and comparison operators. We\u2019ll make objects behave like dictionaries and containers. We\u2019ll reduce an object\u2019s memory usage, and speed up membership tests. We\u2019ll even try some naughty function hacks!\r\n", - "sub_title": "The world of special dunder magic", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@AnjanaVakil", - "id": 434, - "speakers": "Anjana Vakil", - "title": "Using and abusing Python\u2019s double-underscore methods and attributes", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Python 3", - "Python general", - "Programming" - ], - "abstract_long": [ - "The curious Python methods and attributes surrounded by double underscores ('`__`') go by many names, including \u201cspecial\u201d, \u201cdunder\u201d, and \u201cmagic\u201d. You probably use some of them, like `__init__`, every day. But that\u2019s just the tip of the iceberg! \r\n\r\nIn this talk, we\u2019ll explore the weird and wonderful world of the double-underscore, and find out how dunders can be useful, silly, dangerous, and just fun! We\u2019ll play pranks on Python\u2019s builtin operators for arithmetic and comparison. We\u2019ll make arbitrary objects behave like dictionaries and containers. We\u2019ll reduce an object\u2019s memory usage, and speed up tests for membership. We\u2019ll even try some naughty function hacks that we should never use in real life!\r\n\r\nYou'll get the most out of this talk if you're already comfortable writing object-oriented Python code. If you already use special dunder magic in your own code, that's excellent! You\u2019ll have a chance to share your tips & tricks with the rest of the audience at the end of the talk.\r\n" - ], - "abstract_extra": "Approximate timeline (30 minute talk):\r\n\r\n - :00 - Hello, who I am, gauge audience experience with dunders (1 min.)\r\n - :01 - Intro, familiar dunders (e.g. `__init__`, `__str__`) (2 min.)\r\n - :03 - Arithmetic and comparisons: (e.g. `__mod__`, `__eq__`) (4 min.)\r\n - :07 - Emulating dictionaries (`__getitem__`, etc.) and collections (`__len__`, `__contains__`) (5 min.)\r\n - :12 - Optimizations: `__contains__`, `__slots__` (4 min.)\r\n - :16 - Function hacks: implementing `__call__` on non-functions, replacing a function\u2019s `__defaults__` and `__code__` (4 min.)\r\n - :20 - Links to further reading; Audience members share their dunder tricks (5 min.)\r\n - :25 - Q&A (5 min.)\r\n\r\nI\u2019m submitting this as a standard 30-minute talk, but I think it\u2019s possible the topic could also work for an interactive session, with the audience participating in coding through the examples and coming up with ideas for fun and interesting hacks using these methods/variables. If you think it would work better in that format, please let me know.\r\n\r\nEven in the 30-minute talk format, I\u2019d really like to have an interactive tip-sharing session at the end of the talk, as mentioned in the long abstract and timeline. I imagine that this will probably merge with the Q&A and become a 10-minute discussion at the end of the talk. I hope this fits in nicely with the enhanced focus on interactivity for this year\u2019s conference, but if it\u2019s not desirable for whatever reason, I can easily replace the tip-sharing session with additional content (e.g. context managers with `__enter__` and `__exit__`) or examples. \r\n\r\nI haven't given a talk at EuroPython or another Python conference before, but I have public speaking experience in the form of several talks at academic conferences, on software and research for computational linguistics. A list of my previous talks is available at [https://vakila.github.io/talks/ ][1](links to slides are provided).\r\n\r\nIf you have any questions, need clarification, or have any other feedback on this proposal, please do get in touch! I\u2019m best reached by email, but I will be on holiday with limited internet access from February 29 to March 7.\r\n\r\n [1]: https://vakila.github.io/talks/ \r\n", - "tag_categories": [ - "Python", - "Python", - "Programming" - ], - "emails": "anjanavakil@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/using-and-abusing-pythons-double-underscore-methods-and-attributes", - "admin_type": "", - "companies": "Mozilla" - }, - "504": { - "abstract_short": "Let's compare the usage of three major **service discovery** technologies to build a dynamic and distributed python application !\r\n\r\nThis talk will be about **consul**, **etcd** and **zookeeper** and their python bindings and will feature code along with a live demo.", - "sub_title": "Concrete python usage of three Service Discovery technologies", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@ultrabug", - "id": 504, - "speakers": "Alexys Jacob", - "title": "Using Service Discovery to build dynamic python applications", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "System Architecture", - "Infrastructure", - "Distributed Systems", - "Scaling", - "DevOps general" - ], - "abstract_long": [ - "This talk will **showcase and compare** three Service Discovery technologies and their usage to **build a dynamic and distributed python application** :\r\n\r\n- consul\r\n- etcd\r\n- zookeeper\r\n\r\nAfter a short introduction to service discovery, we will **iterate and compare** how we can address the concrete and somewhat complex design of our python application using each technology.\r\n\r\nWe'll then be able to discuss their strengths, weaknesses and python bindings and finally showcase the application in a demo.\r\n\r\nAll the source code will of course be made available for the audience to benefit and start from for their own use !" - ], - "abstract_extra": "Yes, I'm crazy enough to sell a live demo. I have faith in you and... it worked well last year !", - "tag_categories": [ - "DevOps", - "DevOps", - "DevOps", - "DevOps", - "DevOps" - ], - "emails": "ultrabug@ultrabug.net", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/service-discovery-for-dynamic-python-applications", - "admin_type": "", - "companies": "Numberly" - }, - "404": { - "abstract_short": "Compare full text search engines for Python.\r\n", - "sub_title": "", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:45:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@a_soldatenko", - "id": 404, - "speakers": "Andrii Soldatenko", - "title": "What is the best full text search engine for Python?", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "PostgreSQL", - "Python 3", - "Elastic Search", - "Documentation" - ], - "abstract_long": [ - "Nowadays we can see lot\u2019s of benchmarks and performance tests of different web frameworks and Python tools. Regarding to search engines, it\u2019s difficult to find useful information especially benchmarks or comparing between different search engines. It\u2019s difficult to manage what search engine you should select for instance, ElasticSearch, Postgres Full Text Search or may be Sphinx or Whoosh. You face a difficult choice, that\u2019s why I am pleased to share with you my acquired experience and benchmarks and focus on how to compare full text search engines for Python.\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Databases", - "Python", - "Databases", - "Programming" - ], - "emails": "andrii.soldatenko@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/what-is-the-best-full-text-search-engine-for-python", - "admin_type": "", - "companies": "Toptal" - }, - "557": { - "abstract_short": "Haskell community has made lots of small important improvements to packaging in 2015. What can Python community learn from it and how are we different?", - "sub_title": "A subtle introduction into Haskell packaging and differences to Python ecosystem", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 557, - "speakers": "Domen Ko\u017ear", - "title": "What Python can learn from Haskell packaging", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "DevOps general", - "System Administration" - ], - "abstract_long": [ - "Haskell community has been living in \"Cabal hell\" for decades, but Stack tool and Nix language have been a great game changer for Haskell in 2015.\r\n\r\nPython packaging has evolved since they very beginning of distutils in 1999. We'll take a look what Haskell community has been doing in their playground and what they've done better or worse.\r\n\r\nThe talk is inspired by Peter Simons talk given at Nix conference: [Peter Simons: Inside of the Nixpkgs Haskell Infrastructure][1]\r\n\r\n [1]: https://www.youtube.com/watch?v=TDnZsBxqeBM&list=PL_IxoDz1Nq2Y7mIxMZ28mVtjRbbnlVdmy&index=4\r\n\r\nOutline:\r\n\r\n- Cabal (packaging) interesting features overview \r\n - Cabal file specification overview\r\n - Interesting Cabal features not seen in Python packaging\r\n - Lack of features (introduction into next section)\r\n- Cabal hell \r\n - Quick overview of Haskell community frustration over Cabal tooling\r\n- Stack tool overview \r\n - What problem Stack solves\r\n - How Stack works\r\n - Comparing Stack to pip requirements\r\n- Using Nix language to automate packaging \r\n - how packaging is automated for Haskell\r\n - how it could be done for Python" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "DevOps" - ], - "emails": "domen@dev.si", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/what-python-can-learn-from-haskell-packaging", - "admin_type": "", - "companies": "" - }, - "426": { - "abstract_short": "This talk covers the basics of what Object Orientation (OO) is really about. It focusses on the problem OO is aimed at solving and shows where the OO mechanisms of Python fit into this picture. This material can serve as an introduction to OO for beginners, but also as a homing signal for experienced programmers who are doubting whether they are reaping the benefits OO promises.", - "sub_title": "", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@reahl", - "id": 426, - "speakers": "Iwan Vosloo", - "title": "What's the point of Object Orientation?", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Software Design", - "Programming", - "Abstractions", - "Best Practice" - ], - "abstract_long": [ - "Object Orientation (OO) is often introduced in terms of how it is implemented by a specific language. However, understanding the theory underlying OO is not quite the same as understanding how OO concepts are supported by a particular language. It is insightful to understand the simple OO fundamentals and how these map to the particular implementation provided by Python.\r\n\r\nIn this talk I will first explain the very basics of OO from a language-neutral point of view with the aim of showing what OO can offer you and to give a glimpse of the simple mathematical theory underlying OO. I hope to give you enough information to help you distinguish between better and worse designs and to detect whether you\u2019re using OO as it was intended. I will also very briefly show how these fundamentals map to Python.\r\n\r\nThis talk is for anyone: whether you\u2019re new at Object Orientation, or a practitioner wondering whether OO is worth the effort you\u2019ve spent trying to use it." - ], - "abstract_extra": "Hi, I have given versions of this talk before at PyCon Namibia (not recorded) and [PyConZA (http://youtu.be/M1XL65qj2dU)][1]. People found it useful there, so I thought it may be worthwhile for people at EuroPython too.\r\n\r\nI am the main author of [Reahl (http://www.reahl.org)][2] and gave presentation on it last year at [EuroPython (https://ep2015.europython.eu/conference/talks/reahl-the-python-only-web-framework)][3]\r\n\r\n [1]: http://youtu.be/M1XL65qj2dU\r\n [2]: http://www.reahl.org\r\n [3]: https://ep2015.europython.eu/conference/talks/reahl-the-python-only-web-framework", - "tag_categories": [ - "Programming", - "Programming", - "Everything Else", - "Best Practice and Use Cases" - ], - "emails": "iwan@reahl.org", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/whats-the-point-of-object-orientation", - "admin_type": "", - "companies": "Reahl Software Services (Pty) Ltd" - }, - "521": { - "abstract_short": "We all know Python strength does not rely on its performance and speed when running programs. This plus the flexibility of it, can lead to build real slow and bad quality software.\r\n\r\nIn this talk you will discover a set of useful tools for diagnosing where the bottleneck is in your programs along with trips for quickly realizing which is the most needed resource.", - "sub_title": "", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 521, - "speakers": "Manuel Miranda", - "title": "Where is the bottleneck?", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Performance", - "Best Practice", - "Code Analysis" - ], - "abstract_long": [ - "Have you ever felt like your software is eating your resources and you have no clue why? Have you reviewed all the lines, debugged and printed everything but you still don't know what's wrong?\r\n\r\nIn this talk I will conduct a fast intro of a basic set of tools you can use to diagnose your software's performance and then we will go through a simple piece of code with different problems and solve them one by one, using those previously presented tools ending up with a decent and acceptable piece of code.\r\n\r\nThis set of tools will include basic ones given by the OS itself like `htop`, `lsof`, `ps` and more advanced ones that let you plot the memory usage for given functions like `memory_profiler`, check CPU usage and the call graph between functions like `cprofile` and `kcachegrind` and others.\r\n\r\nAlso, you will discover some bad practices and \"don't dos\" with python language that can slow you down.\r\n\r\nBy the end of the talk, you should have an idea of which are the most typical causes that can make your program slow and you will have a list of tools to search for and identify the source of the problems.\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "manu.mirandad@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/where-is-the-bottleneck", - "admin_type": "", - "companies": "Skyscanner" - }, - "485": { - "abstract_short": "The LLVM Project provides an intermediate representation (LLVM-IR) that can be compiled on many platforms. LLVM-IR is used by analytical frameworks to achieve language and platform independence. What if we could add Python to the long list of languages that can be translated to LLVM-IR? This talk will go through the steps of wrestling Python into LLVM-IR with a simple, static one-pass compiler.", - "sub_title": "", - "timerange": "2016-07-22 12:00:00, 2016-07-22 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 485, - "speakers": "Anna Herlihy", - "title": "Wrestling Python into LLVM Intermediate Representation", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Cross-Platform-Development", - "Compiler and Interpreters", - "Open-Source", - "Data Science", - "Analytics" - ], - "abstract_long": [ - "What is LLVM-IR?\r\n\r\nThe LLVM Compiler Infrastructure Project provides a transportable intermediate representation (LLVM-IR) that can be compiled and linked into multiple types of assembly code. What is great about LLVM-IR is that you can take any language and distill it into a form that can be run on many different machines. Once the code gets into IR it doesn\u2019t matter what platform it was originally written on, and it doesn\u2019t matter that Python can be slow. It doesn\u2019t matter if you have weird CPUs - if they\u2019re supported by LLVM it will run.\r\n\r\nWhat is Tupleware?\r\n\r\nTupleWare is an analytical framework built at Brown University that allows users to compile functions into distributed programs that are automatically deployed. TupleWare is unique because it uses LLVM-IR to be language and platform independent.\r\n\r\nWhat is PyLLVM?\r\n\r\nThis is the heart of the talk. PyLLVM is a simple, easy to extend, one-pass static compiler that takes in the subset of Python most likely to be used by Tupleware. PyLLVM is based on an existing project called py2llvm that was abandoned around 2011. \r\n\r\nThis talk will go through some basic compiler design and talk about how some LLVM-IR features make our lives easier, and some much harder. It will cover types, scoping, memory management, and other implementation details. To conclude, it will compare PyLLVM to Numba, a Python-to-LLVM compiler from Continuum Analytics and touch on what the future has in store for PyLLVM.", - "", - "", - "" - ], - "abstract_extra": "Hello!\r\n\r\nI am extremely excited to submit a proposal for EuroPython 2016! I\u2019ve been getting to know the Python community over the past year and a half and have been completely charmed. I\u2019m in my second year out of school and pretty new to speaking but I\u2019ve found the Python community to be supportive and welcoming.\r\n\r\nExperience with this talk\r\n====================\r\nThis talk was accepted at [PyCon 2016](https://us.pycon.org/2016/schedule/presentation/1420) in Portland, Oregon. When I submitted the talk proposal I was living in New York City, however now I live in Stockholm and am looking forward to meeting the European Python community! I don\u2019t think there will be too much audience overlap between the two conferences.\r\n\r\nI gave a version of this talk at PyGotham in August 2015. It was well received on Twitter (and another speaker, Eric Schles, mentioned in his talk that he thought everyone should watch the video!). I\u2019ve taken the feedback I got from this presentation and incorporated it into my new talk.\r\n\r\nThere were some technical difficulties with the A/V so I had to restart a few slides in, but the talk is almost fully recorded: \r\n\r\n[**Link to PyGotham video**](https://www.youtube.com/watch?v=_HdfEqSqI2M).\r\n\r\n[**Link to PyGotham slides**](https://github.com/aherlihy/PythonLLVM/blob/master/PyGotham%20Slides.pdf)\r\n\r\n[**Link to the paper that this talk is based on**](https://github.com/aherlihy/PythonLLVM/blob/master/Thesis.pdf)\r\n\r\nAnd if you\u2019re curious, the source code for the project itself is in the same repo!\r\n\r\nI also gave a much more technical version of this talk to the Brown University Computer Science department in 2014.\r\n\r\nOther Speaking Experience\r\n======================\r\nMost recently, I was invited to be a part of a panel organized by PyLadies and WriteSpeakCode called \u201cTales of Open Source: Five Contributors, Five Stories\u201d along with Ben Darnell, David Turner, Julian Berman, and Maia McCormick in October 2015 in NYC.\r\n[**Link to event page**](http://www.meetup.com/NYC-PyLadies/events/225696976)\r\n\r\nI spoke at OpenDataSciCon in Boston May 2015. I spoke about Monary, a fast, specialized MongoDB driver written in C and Python that copies data directly from MongoDB documents into NumPy arrays. \r\n[**Link to OpenDataSciCon talk**](http://bos2015.opendatascicon.com/schedule/monary-really-fast-analysis-with-mongodb-and-numpy). I tried to access this site just now (3/3) and it seems not to be working, but I'll leave the link there in case it is just temporarily down.\r\n\r\nI gave my first industry conference talk *ever* at PyData in NYC in November of 2014. I gave a talk similar to the OpenDataSciCon talk about Monary.\r\n[**Link to PyData video**](https://www.youtube.com/watch?v=E70AO8r5sMs)\r\n\r\nOpen Source Experience\r\n====================\r\nI am a contributor to PyMongo, Monary, MongoDB, and the MongoDB Ruby, C++, and C drivers. I currently maintain Mongo-Connector.", - "tag_categories": [ - "Python", - "Python", - "Open Source", - "Data Science", - "Data Science" - ], - "emails": "herlihyap@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/wrestling-python-into-llvm-intermediate-representation", - "admin_type": "", - "companies": "MongoDB, Inc" - }, - "483": { - "abstract_short": "Presentation on how you can write faster Python in your daily work. I will briefly explain ways of profiling the code, discuss different code structures and show how they can be improved. You will see what is the fastest way to remove duplicates from a list, what is faster than a _for_ loop or how \u201casking for permission\u201d is slower than \u201cbegging for forgiveness\u201d.\r\n\r\n", - "sub_title": "", - "timerange": "2016-07-19 14:00:00, 2016-07-19 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@SebaWitowski", - "id": 483, - "speakers": "Sebastian Witowski", - "title": "Writing faster Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Beginners", - "Performance", - "Best Practice" - ], - "abstract_long": [ - "Did you know that Python preallocates integers from -5 to 257 ? Reusing them 1000 times, instead of allocating memory for a bigger integer, can save you a couple of milliseconds of code\u2019s execution time. If you want to learn more about this kind of optimizations then, \u2026 well, probably this presentation is not for you :) Instead of going into such small details, I will talk about more _\"sane\"_ ideas for writing faster code.\r\nAfter a very brief overview of how to optimize Python code (rule 1: don\u2019t do this, rule 2: don\u2019t do this yet, rule 3: ok, but what if I really want to do this ?), I will show simple and fast ways of measuring the execution time and finally, discuss examples of how some code structures could be improved.\r\nYou will see:\r\n\r\n - What is the fastest way of removing duplicates from a list\r\n - How much faster your code is when you reuse the built-in functions instead of trying to reinvent the wheel\r\n - What is faster than the good ol\u2019 _for_ loop\r\n - If the lookup is faster in a list or a set (and when it makes sense to use each)\r\n - How the \u201cIt's better to beg for forgiveness than to ask for permission\u201d rule works in practice\r\n\r\nI will NOT go into details of _\"serious\"_ optimization, like using different Python implementation or rewriting critical code in C, etc.\r\n\r\n" - ], - "abstract_extra": "This is an extended and improved version of a presentation that I gave some time ago, as a part of Lightning Talks at CERN (slides and a link to the video are available here: [https://github.com/switowski/PythonPerformancePresentation][1]).\r\nThis time, less Dragon Ball pictures though :)\r\n\r\n [1]: https://github.com/switowski/PythonPerformancePresentation\r\n", - "tag_categories": [ - "Educational", - "Programming", - "Best Practice and Use Cases" - ], - "emails": "sebastian.witowski@cern.ch", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/writing-faster-python", - "admin_type": "", - "companies": "CERN" - }, - "649": { - "abstract_short": "In this talk, I'll show you how to write redis using asyncio. You'll see how you can create a real world application using asyncio by creating a python port of redis.", - "sub_title": "", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@jsaryer", - "id": 649, - "speakers": "James Saryerwinnie", - "title": "Writing Redis in Python with asyncio", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "NoSQL", - "ASYNC / Concurreny", - "Databases" - ], - "abstract_long": [ - "Python has been adding more and more async features to the language. Starting with asyncio in python 3.4 and including the new async/await keywords in python 3.5, it's difficult to understand how all these pieces fit together. More importantly, it's hard to envision how to use these new language features in a real world application. In this talk we're going to move beyond the basic examples of TCP echo servers and example servers that can add number together. Instead I'll show you a realistic asyncio application. This application is a port of redis, a popular data structure server, written in python using asyncio. In addition to basic topics such as handling simple redis commands (GET, SET, APPEND, etc), we'll look at notifications using pub/sub, how to implement the MONITOR command, and persistence. Come learn how to apply the asyncio library to real world applications. " - ], - "abstract_extra": "This is an idea I started about a year ago. I wrote an initial blog post on the basic of writing redis in asyncio here: [Writing Redis in Python][1]\r\n\r\nHowever, this was all before the async/await keywords were added to the language and I found myself updating the code to reflect the latest changes to the python language and asyncio library.\r\n\r\nAt this point I think asyncio is at a nice and stable point where I can show the remaining work I've done for writing redis using asyncio.\r\n\r\nHere's a few places I've spoken in the past:\r\n\r\n* re:Invent 2015: https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=1423&tclass=popup\r\n* OSCON: http://conferences.oreilly.com/oscon/open-source-2015/public/schedule/detail/42218\r\n* Pycon Canada: http://2013.pycon.ca/en/schedule/presentation/34/\r\n\r\n\r\n [1]: http://jamesls.com/writing-redis-in-python-with-asyncio-part-1.html", - "tag_categories": [ - "Databases", - "Programming", - "Databases" - ], - "emails": "js@jamesls.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/writing-redis-in-python-with-asyncio", - "admin_type": "", - "companies": "AWS" - }, - "656": { - "abstract_short": "There are many unit testing frameworks for C out there, but most of them require you to write your tests in C (or C++). While there might be good reasons to keep your implementation in C, those hardly apply to the tests. So wouldn't it be nice to use all the power of Python and its unit testing capabilities also for your C code? This talk will show you how.", - "sub_title": "", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 656, - "speakers": "Alexander Steffen", - "title": "Writing unit tests for C code in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Programming", - "C-Languages", - "Testing" - ], - "abstract_long": [ - "There are many unit testing frameworks for C out there, but most of them require you to write your tests in C (or C++). While there might be good reasons to keep your implementation in C (for example execution speed or resource consumption), those hardly apply to the tests. So wouldn't it be nice to use all the power of Python and its unit testing capabilities also for your C code?\r\n\r\nThis talk will show you how to combine CFFI and pycparser to easily create Python unit tests for C code, without a single line of C anywhere in the test cases. It will also cover creating mock functions in Python, that can be used by the C code under test to hide external dependencies. Finally, we will look at some of the challenges you might face when trying to mix Python and C and what to do about them." - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Other Programming Languages", - "Testing" - ], - "emails": "Alexander.Steffen@infineon.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/writing-unit-tests-for-c-code-in-python", - "admin_type": "", - "companies": "Infineon Technologies AG" - } - } -} diff --git a/ep2017/static/data/clean-talks.json b/ep2017/static/data/clean-talks.json deleted file mode 100644 index 2f2e323..0000000 --- a/ep2017/static/data/clean-talks.json +++ /dev/null @@ -1 +0,0 @@ -{"Poster sessions": {"287": {"id": 287, "abstracts": ["We learn best when we are relaxed, curious and enjoying ourselves. Without knowing a lot of Python, making a fun-to-play game is an achievable goal. Without knowing anything about programming, playing a game can be an accessible way to understand how programs work. The poster will invite people to consider the role of play in adult learning. (Much of it will also be relevent to teachers of younger people.) It will frame success and failure in the context of taking part, winning and losing.\r\n\r\nThe poster will give examples of games that are within the reach of a beginner programmer to design and build. It will explore what makes a well-designed game and how to develop good design elements simply. The goal is for people to identify resources for learning and developing Python skills based around building games. This will include: practice opportunities, Python libraries for game-building, and useful programming concepts.\r\n\r\nIf there are the facilities (small table and access to power) I will demonstrate **one** game during the poster session. The goal will be to illustrate the concepts, of good design and developing learning, introduced in my poster. It will have input and output interaction using a **Raspberry Pi** and basic electronics.\r\n\r\n"], "have_tickets": [false], "title": "Perceptions of Play: learning Python through games", "speakers": "Corinne Welsh", "track_title": "", "timerange": "", "duration": 90, "tags": ["Beginners", "pygame", "pyglet", "education", "games", "projects", "raspberrypi", "teaching", "learning", "fun", "Best Practice"]}, "141": {"id": 141, "abstracts": ["Inside [Aldebaran][1] company the goal of our team is to explore all the domains required for natural and efficient human-robot interaction. We mainly use python stack (scipy, numpy, scikit-learn) in our daily work as it provides a fast and efficient workflow to create and tune our robot behaviors.\r\n\r\nIn this presentation we will describe and demonstrate how we achieve real time sound event recognition on humanoids robots using python and scikit-learn. This work is funded by european project EARS in which our study case is a groom hotel robot that help customers : Two robots are waiting in a hotel lobby. They welcome people and give them relevant information. The robots detect and recognize sounds type such as: Door bell, phone ring, fire alarm, etc. New sounds could be easily learned by the robots.\r\n\r\nThe talk will be done by two human speakers followed by a live demonstration with NAO robots on the stage. Code and data will be published so everyone can experiments with sound recorded on the robots.", "Inside [Aldebaran][1] company the goal of our team is to explore all the domains required for natural and efficient human-robot interaction. We mainly use python stack (scipy, numpy, scikit-learn) in our daily work as it provides a fast and efficient workflow to create and tune our robot behaviors.\r\n\r\nIn this presentation we will describe and demonstrate how we achieve real time sound event recognition on humanoids robots using python and scikit-learn. This work is funded by european project EARS in which our study case is a groom hotel robot that help customers : Two robots are waiting in a hotel lobby. They welcome people and give them relevant information. The robots detect and recognize sounds type such as: Door bell, phone ring, fire alarm, etc. New sounds could be easily learned by the robots.\r\n\r\nThe talk will be done by two human speakers followed by a live demonstration with NAO robots on the stage. Code and data will be published so everyone can experiments with sound recorded on the robots.\r\n\r\nThe second speaker is [Alexandre Mazel][2].\r\n\r\n![][3]\r\n\r\n [1]: https://www.aldebaran.com/en\r\n [2]: https://ep2015.europython.eu/conference/p/alexandre-mazel\r\n [3]: http://studio.aldebaran-robotics.com/amazel/ears__sound_event_recognition/ears__sound_event_recognition.jpg\r\n", ""], "have_tickets": [false], "title": "Sound event recognition using python : application to humanoid robots with limited cpu", "speakers": "Laurent George", "track_title": "", "timerange": "", "duration": 90, "tags": ["robotics", "sound", "machine-learning", "scipy", "numpy", "sklearn"]}, "190": {"id": 190, "abstracts": ["We propose a web BI dashboard system developed for companies operating in the big market composed by several point of sales (POS) and providing services as stocking, distribution logistics, commercial support and promotional actions. \r\n\r\nWe have endowed the infrastructure with a set of statistical machine learning tools typical of high throughput bioinformatics, e.g., clustering procedures for time-series. Machine learning functionalities are actionable from on-line graphs, such as biclustering panels in which subset of retails and sales categories can be interactively selected. Currently 250 million entries are managed from the sales stream within the system. Network analysis (detection of community structure and co-occurrence patterns) combined with geospatial and socio-economic data are being developed as strategic tools.\r\n\r\nThe system is implemented as a web-based Django framework deployed on a AWS machine, using Celery and Redis to distribute tasks. This scalable framework can be accessed through a web interface from the strategic marketing and R&D departments and other directive figures; a similar and leaner interface is available for the individual POS owners. The web interface integrates Javascript libraries to obtain interactive displays connecting machine learning and data exploration (D3js, Highcharts, Sigma.js, Heatmap.js, leaflet, InCHlib). In particular we fork the django-highchart repository to improve functionalities available for the Django framework. Actionable dendrogram structures and sunburst plots allow the handling of big taxonomies typical of the category managment reference structures. Internally, the statistical machine learning methods are deployed as stored procedures for a PostgreSQL/PostGIS database, powered by the PL/R and PL/Python extensions. "], "have_tickets": [true], "title": "Actionable data analytics in retail marketing analysis", "speakers": "Ernesto Arbitrio", "track_title": "", "timerange": "", "duration": 90, "tags": ["python", "R", "data-science", "machine-learning", "visualization", "postgresql", "predictions", "django"]}, "125": {"id": 125, "abstracts": ["GR is an universal framework for cross-platform visualization applications. It offers developers a compact, portable and consistent graphics library for their programs. Its procedural graphics backend allows the presentation of continuous data streams. For object oriented environments such as graphical user interfaces a high level API has been implemented.\r\n\r\nIn this poster session, I will present PyGR, a companion module for GR that provides convenience functions for the interactive handling of real-time data, e.g. by zooming or panning. Using the QtGR module it is possible to easily integrate GR into GUI toolkits like Qt. It provides powerful widgets for 2D plotting and methods for embedding graphics into user interfaces based on PySide or PyQt.\r\n\r\nHowever, PyGR is not limited to a specific toolkit. The system\u2019s capabilities will be illustrated using concrete examples, e.g. NICOS, a network-based experiment and instrument control system used for neutron scattering experiments at FRM II in Munich.", "", ""], "have_tickets": [true], "title": "Embedding Visualization Applications with PyGR", "speakers": "Christian Felder", "track_title": "", "timerange": "", "duration": 90, "tags": ["visualization", "python"]}, "83": {"id": 83, "abstracts": ["Mongo-Board is a project focused on offering/building a graphical user interface to MongoDB replica set management and core-processes operations. The functionality is provided in two forms: a **standalone** core library that provides automation over MongoDB administrative operations and the **Mongo-Board UI**. A showcase in the form of an educational tool of its underlying library's possible usage where users can interact with a MongoDB cluster to perform various actions and view a log of all commands executed.\r\n\r\nCore features includes:\r\n\r\n-**MongoDB Instance Management** - connect to multiple remote servers, start/stop database instances, import/export database data\r\n\r\n -**Replica Set Management** - deploy, configure and maintain replica sets\r\n\r\nFirst, we developed a solution completely in PHP and currently we are in the middle of porting the back-end library into Python. I want to present our experience with MongoDB and discuss the architecture, challenges, solutions and open questions. \r\n\r\nThe poster will pose an interest to people passionate about client-server architecture, MongoDB management, administration and monitoring of processes, automation, as well as educational tools.\r\n\r\n [Article detailing some aspects of our initial project][1]\r\n\r\n[Video showcase][2]\r\n\r\n [1]: https://eastvisionsystems.com/mongoboard-replica-set-manager/\r\n [2]: https://eastvisionsystems.com/projects/#player4\r\n"], "have_tickets": [true], "title": "MongoBoard - A MongoDB replica set manager", "speakers": "Alex Porcescu", "track_title": "", "timerange": "", "duration": 90, "tags": ["automation", "mongodb", "learning", "linux", "system-administration"]}, "350": {"id": 350, "abstracts": ["DTOcean is a European collaborative project funded by the European Commission under the 7th Framework Programme for Research and Development. DTOcean that stands for Optimal Design Tools for Ocean Energy Arrays aims at at accelerating the industrial development of ocean energy power generation knowledge, and providing design tools for deploying the first generation of wave and tidal energy converter arrays. It gathers 18 partners from 11 countries (Ireland, Spain, United Kingdom, Germany, Portugal, France, Norway, Denmark, Sweden, Belgium and United States of America) under the coordination of the University of Edinburgh.\r\n\r\nDTOcean is developing an open source numerical tool using Python and many of the libraries developed for use with Python. This talk will discuss both the academic challenges of meeting the goals of the project and the technical challenges of organising and structuring a project consisting of many geographically dispersed partners with distinct tasks, but requiring close integration to solve the global optimisation problem.", "", ""], "have_tickets": [false], "title": "DTOcean: Optimal Design Tools for Ocean Energy Arrays", "speakers": "Mathew Topper", "track_title": "", "timerange": "", "duration": 90, "tags": ["science", "python", "data"]}, "68": {"id": 68, "abstracts": ["Parallel Programming Constructs and Techniques\r\nUsing an Embedded Flexible Language (EFL) for Python\r\n\r\nM. Goldstein , D. Dayan, D. Berlowitz, O. Berlowitz, Max Rabin, M. Nagar, D. Soudry, R. B. Yehezkael\r\n\r\nMulti-core CPUs are abundant and utilizing them effectively requires programmers to parallelize CPU-intensive code. To facilitate this, we have developed EFL, a deterministic parallel programming tool. \r\nThe parallel parts of a program are written as EFL-blocks, which are embedded into a sequential host language program. The sequential parts of the program are written in the host language, outside the EFL blocks. \r\nAn EFL pre-compiler translates EFL blocks into parallel Python code. EFL may be embedded in any host language by writing an appropriate pre-compiler. The EFL pre-compiler is being developed for other host programming languages (C++, Java, C#, Fortran, etc) as well as for other parallel platforms (DTM/MPI4PY, etc. ).\r\nHere we present the parallel programming constructs of EFL, such as parallel assignments, parallel for-loops, etc., and some examples of using EFL to implement Parallel Programming Design Patterns. \r\n", "", ""], "have_tickets": [true], "title": "Parallel Programming Constructs and Techniques Using an Embedded Flexible Language (EFL) for Python", "speakers": "Moshe Goldstein", "track_title": "", "timerange": "", "duration": 90, "tags": ["python", "Tooling", "Programming", "concurrency"]}, "337": {"id": 337, "abstracts": ["Rust is a new programming language from Mozilla, it has been announced as the successor of C and C++. \r\n\r\nIn this talk, I will show how to use Rust to extend Python via CFFI or ctypes because you want to optimize your code. But do you know we can integrate Python in Rust.\r\n\r\n* Brief introduction to Rust\r\n* Why Rust is a good candidate for the replacement of C\r\n* How to extend Python with Rust\r\n* How to interact with Python from Rust.", "", ""], "have_tickets": [true], "title": "Python, Rust, who extend who ?", "speakers": "Stephane Wirtel", "track_title": "", "timerange": "", "duration": 90, "tags": ["extending", "rust", "cpython"]}, "280": {"id": 280, "abstracts": ["Via several examples, this poster will present you how to handle quickly AsyncIO and how to build applications with [toolbox libraries][1] around AsyncIO.\r\n\r\nYou can create HTTP servers with AsyncIO, but also you can mixin several others server protocols like WebSockets, SSH, IRC, FastAGI or SIP.\r\n\r\nThis poster will show you that it can be easier to do than you think, AsyncIO ecosystem is beginner friendly.\r\n\r\n [1]: https://github.com/python/asyncio/wiki/ThirdParty"], "have_tickets": [false], "title": "AsyncIO ecosystem", "speakers": "Ludovic Gasc", "track_title": "", "timerange": "", "duration": 90, "tags": ["redis", "HTTP", "servers", "multi-processing", "aiohttp", "aiopg", "websockets", "python3", "asyncio"]}, "145": {"id": 145, "abstracts": ["Over the last fourteen years, Plone has had a remarkable journey: from just a wild idea by a few people to create a CMS which would combine the best technology with a vision of beauty and power to the reality of today: Plone is actively used by companies, governments, universities, nonprofits and other organizations of all sizes around the world.\r\n\r\nYet the vision behind it has stayed consistent. The Plone community chooses technology not for the sake of technology, but because it best solves the problems at hand. We value reliability, security and long-term stability, yet the community is agile enough to adapt where needed.\r\n\r\nThe poster will showcase Plone 5, a major new release which is a solid foundation for the challenges of today, while providing a good upgrade path for earlier versions. It can be used right away for installations of all sizes, but it is also flexible enough to serve as basis for specialized use cases. \r\nBut we do not stop there; the Plone community is already looking further into the future. In spring 2015, we have developed our roadmap forward into a future where themes like mobile-first play a much more important role. Plone will open up it's core strengths like rock-solid workflows, security, standards-compliance and multilingual support to modern ways of presenting these. And with Mosaic and other advances we put power - and fun! -, firmly into the hands of the users that want to create beautiful sites and applications.", "", ""], "have_tickets": [true], "title": "The current state & the future of Plone", "speakers": "Paul Roeland", "track_title": "", "timerange": "", "duration": 90, "tags": ["web", "Plone"]}, "82": {"id": 82, "abstracts": ["Creating a large-scale event processing system can be a daunting task. Especially if you want it \u201cstupid simple\u201d and wrapped around each client\u2019s needs. We built a straightforward solution for this using Python 3 and other open-source tools.\r\n\r\nMain issues to solve for a system that needs to be both performant and scalable:\r\n\r\n - handling a throughput of 1 million events per minute in a 4 cores AWS instance;\r\n\r\n - following the principle of least astonishment;\r\n\r\n - data aggregation and how Python's standard libraries and data structures can help;\r\n\r\n - failsafe and profiling mechanisms that can be applied to any Linux service in production;\r\n\r\n - addressing unexpected behaviors of Python\u2019s Standard Library; like reading from a file while it is written;\r\n\r\n - tackling a sudden spectacular cloud instance failure;\r\n\r\nThe alternative to this system would be to adopt existing technology stacks that might be too general, add more complexity, bloat, costs and which need extensive work to solve your specific problem. Moreover, our approach resulted in over 85% drop on hardware utilisation.\r\n\r\n[Context: Production Software \u2013 II (where good coding reduces the client\u2019s bill)][1]\r\n\r\n [1]: https://eastvisionsystems.com/production-software-part-ii-good-coding-reduces-clients-bill/\r\n", "", ""], "have_tickets": [true], "title": "Use Python to process 12mil events per minute and still keep it simple (Poster Session)", "speakers": "Teodor Dima", "track_title": "", "timerange": "", "duration": 90, "tags": ["bigdata", "performance", "architecture", "Development"]}, "219": {"id": 219, "abstracts": ["Python is a popular and widely used programming language but its use is limited in certain cases. Concurrency is one of those cases when people look for an alternative. It's actually what happened at the start-up I work at before I joined. The co-founders looked for a solution in a functional programming language and chose to use Clojure. Functional programming is now implemented in most programming languages and functional languages are getting more and more popular. For a junior developer learning a functional language as her/his second programming language completely make sense and I was up for the challenge! Clojure is not so different from Python in its readability and might be one of the easiest functional languages to learn for a Pythonista. I would like to share my tips and tools I used for learning and contributing to a code base in Clojure.\r\n\r\nThere are several online resources to understand the paradigm of functional programming. The same can be said regarding Clojure but a good way to learn aside from diving into a codebase is to take part in a community. The Clojurians are much fewer than the Pythonistas but they are equally friendly. They are looking forward to grow their community and their meetups and dojos are well suited to beginners. At some point you have to throw yourself into this sea of parentheses so you'd better be well equipped! In that aim Emacs is by far the best suited text editor. After customising it with the right tools you shall fear no orphan parens!\r\nThis experience will help you progress and focus on writing more concise code with short and clear functions. You will be more comfortable and curious about implementing the functional features of the Python language. Getting always closer to the Zen of Python: \" Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. .... \" "], "have_tickets": [true], "title": "From Python to Clojure", "speakers": "Eleonore Mayola", "track_title": "", "timerange": "", "duration": 90, "tags": ["python", "Lisp", "Clojure", "Functional Programming"]}, "263": {"id": 263, "abstracts": ["In this poster session I'm going to introduce Scrapinghub's new open source framework [Frontera][1]. Frontera allows to build real-time distributed web crawlers and website focused ones. \r\n\r\nOffering:\r\n\r\n - customizable URL metadata storage (RDBMS or Key-Value based),\r\n - crawling strategies management,\r\n - transport layer abstraction.\r\n - fetcher abstraction.\r\n\r\nAlong with framework description I'll demonstrate how to build a distributed crawler using [Scrapy][2], Kafka and HBase, and hopefully present some statistics of Spanish internet collected with newly built crawler. Happy EuroPythoning!\r\n\r\n [1]: https://github.com/scrapinghub/frontera\r\n [2]: http://scrapy.org/\r\n", "", ""], "have_tickets": [true], "title": "Frontera: open source large-scale web crawling framework", "speakers": "Alexander Sibiryakov", "track_title": "", "timerange": "", "duration": 90, "tags": ["scrapy", "kafka", "hbase", "webcrawling", "distributed-systems"]}}, "EuroPython sessions": {"367": {"id": 367, "abstracts": ["We need help with organizing and running EuroPython 2016.\r\n\r\nIn this session, we will explain how the EuroPython workgroup model works and where you could help.\r\n", "", ""], "have_tickets": [true, true], "title": "EuroPython 2016: Help us build the next edition!", "speakers": "Fabio Pliger, Marc-Andre Lemburg", "track_title": "Barria1 Room", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["conference", "EuroPython", "eps"]}, "368": {"id": 368, "abstracts": ["The EuroPython General Assembly.\r\n\r\nThis is where we give our reports and the EPS members can vote in a new EPS board.", "", ""], "have_tickets": [true, true], "title": "EPS General Assembly", "speakers": "Fabio Pliger, Marc-Andre Lemburg", "track_title": "Barria1 Room", "timerange": "2015-07-22 15:15:00, 2015-07-22 16:15:00", "duration": 60, "tags": ["GA", "EuroPython", "eps", "assembly"]}}, "Talks": {"298": {"id": 298, "abstracts": ["The hook-based plugin system used by py.test and being made available\r\nas a stand alone package allows easy extensibility based on defined\r\nextension points which can be implemented using hook functions in the\r\nplugins. Plugins can themselves call these hooks as well as define\r\nfuture extension points allowing for a very flexible design.\r\n\r\npy.test itself uses this plugin system from the ground up with the\r\nentire application being implemented by built-in plugins. This\r\narchitecture has proven powerful and flexible over the years, on both\r\ncommand line tools as well as long running daemons. This talks will\r\ndescribe how the plugin system works and how it deals with passing\r\narguments and return values 1:N hook calls. It will also describe how\r\nto design an application consisting entirely of plugins. While not\r\nspecifically talking about py.test it will also give a solid\r\nunderstanding on how plugins work in py.test."], "have_tickets": [true], "title": "The hook-based plugin architecture of py.test", "speakers": "Floris Bruynooghe", "track_title": "A2 Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:15:00", "duration": 30, "tags": ["software-design", "architecture", "plugin"]}, "218": {"id": 218, "abstracts": ["The potential upside of microservices is significant and exciting. So much so that Yelp's Transaction Platform committed from the start to an architecture of small, cooperative microservices. This talk explores the inevitable complications that arise for Python developers in as the services grow larger and stretch both their own architecture and the developers responsible for them. Come hear tales of terror (tight coupling! low test coverage!), stories which will warm your heart (agility! strong interfaces!), and everything in between as we follow the adventures of our plucky team.\r\n\r\nThe talk will be focused on the functional, cultural, and reliability challenges which occur as a microservices-based project evolves and expands over time. Particular attention will be paid to where these diverge from the utopian way microservices are often described, and to the particular difficulties faced by Python developers trying to implement such systems. My goal is to share with attendees some mistakes we've made, some successful methods for growing gracefully, and Python-specific tools/libraries which can help with these problems.\r\n\r\nTo enjoy this talk, you should be aware of the basic vocabulary and concepts of HTTP-based services. Any additional awareness of distributed systems (and their failure modes) will be helpful."], "have_tickets": [true], "title": "Arrested Development - surviving the awkward adolescence of a microservices-based application", "speakers": "Scott Triglia", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["services", "distributed-systems", "HTTP"]}, "340": {"id": 340, "abstracts": ["An introduction to the devops culture by sharing our experience in a successfully French start-up.\r\n\r\nThe salt route talk presents some best practices and common mistakes that arise in everyday teamwork between developers and sysadmins using SaltStack for configuration management, server provisioning, orchestration and Django web applications deployment.\r\n\r\nAs an introductory talk there is no prerequisites required.\r\n\r\nThis talk will be presented by the dynamic duo Natal Ng\u00e9tal and Pablo Seminario, 2 co-workers at PeopleDoc Inc.", "", ""], "have_tickets": [true], "title": "The Salt Route", "speakers": "Pablo SEMINARIO", "track_title": "A2 Room", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["architecture", "ConfigurationManagement", "DevOps", "saltstack", "automation", "django", "deployment", "Best Practice"]}, "43": {"id": 43, "abstracts": ["gitfs is an open-source[1] filesystem which was designed to bring the full powers of Git to everyone, no matter how little they know about versioning. A user can mount any repository and all the his changes will be automatically converted into commits. gitfs will also expose the history of the branch you\u2019re currently working on by simulating snapshots of every commit.\r\n\r\ngitfs is useful in places where you want to keep track of all your files, but at the same time you don\u2019t have the possibility of organizing everything into commits yourself. A FUSE filesystem for git repositories, with local cache.\r\n\r\nIn this talk we will take a look at some of the crucial aspects involved in building a reliable FUSE filesystem, the steps that we took in building gitfs, especially in handling the git objects (http://git-scm.com/book/en/v2/Git-Internals-Git-Objects), what testing methods we have used for it and also we will share the most important lessons learned while building it.\r\n\r\nThe prerequisites for this talk are:\r\nA good understanding of how Git works\r\nBasic understaning of Operating Systems concepts\r\n\r\n[1] You can get the source here - https://github.com/PressLabs/gitfs; you cand find more details here - http://www.presslabs.com/gitfs/."], "have_tickets": [true], "title": "gitfs - building a filesystem in Python", "speakers": "Vlad Temian", "track_title": "Google Room", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["low-level", "FOSS", "cpython", "DevOps", "concurrency", "open-source", "linux", "fun", "pytest"]}, "208": {"id": 208, "abstracts": ["NumPy is the fundamental Python package for scientific computing. However, being efficient with NumPy might require slightly changing how you write Python code. \r\n\r\nI\u2019m going to show you the basic idioms essential for fast numerical computations in Python with NumPy. We'll see why Python loops are slow and why vectorizing these operations with NumPy can often be good. \r\n\r\nTopics covered in this talk will be array creation, broadcasting, universal functions, aggregations, slicing and indexing.\r\nEven if you're not using NumPy you'll benefit from this talk."], "have_tickets": [false], "title": "NumPy: vectorize your brain", "speakers": "Ekaterina Tuzova", "track_title": "Google Room", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:15:00", "duration": 45, "tags": ["numpy", "machine-learning"]}, "46": {"id": 46, "abstracts": ["CityBikes [1] started on 2010 as a FOSS alternative endpoint (and Android client) to gather information for Barcelona's Bicing bike sharing service. Later evolved as an open API [2] providing bike sharing data of any (mostly) service worldwide.\r\n\r\nFast forward today and after some C&D letters, there's support for more than 200 cities, more than 170M historical entries have been gathered for analysis (in approx. a year) and the CityBikes API is the main source for open bike share data worldwide. This talk will tour about how we got there with the help of python and the community [3].\r\n\r\nPS: We have a realtime map, it is awesome [4].\r\n\r\n [1]: http://citybik.es\r\n [2]: http://api.citybik.es\r\n [3]: http://github.com/eskerda/pybikes\r\n [4]: http://upcoming.citybik.es\r\n\r\n"], "have_tickets": [true], "title": "CityBikes: bike sharing networks around the world", "speakers": "Llu\u00eds Esquerda", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["redis", "nosql", "api", "data-science", "visualization", "bigdata", "mongodb", "flask", "open-source", "linux", "fun", "FOSS", "internationalization"]}, "224": {"id": 224, "abstracts": ["Lately, there's a lot of talk about microservices but not enough concrete examples and case studies. I want to change that by showing:\r\n\r\n - how thinking in PaaS terms can lead to robust and scalable designs;\r\n\r\n - what infrastructure and automation you need to set up to go along smoothly;\r\n\r\n - how to get real time metrics of your apps; \r\n\r\n - what makes Python good for microservices;\r\n\r\n - what is Python's performance relative to some alternatives.\r\n\r\n**Prerequisites for the talk:**\r\n\r\n - some experience with web development in Python;\r\n\r\n - basic knowledge of RESTful web services.\r\n\r\n"], "have_tickets": [true], "title": "Python microservices on PaaS done right", "speakers": "Micha\u0142 Bultrowicz", "track_title": "A2 Room", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["automation", "performance", "cloud", "metrics", "PaaS"]}, "93": {"id": 93, "abstracts": ["Finding a good structure for number-crunching code can be a problem, this especially applies to routines preceding the core algorithms: transformations such as data processing and cleanup, as well as feature construction.\r\n\r\nWith such code, the programmer faces the problem, that their code easily turns into a sequence of highly interdependent operations, which are hard to separate. It can be challenging to test, maintain and reuse such \"Data Science Spaghetti code\".\r\n\r\nScikit-Learn offers a simple yet powerful interface for data science algorithms: the estimator and composite classes (called meta-estimators). By example, I show how clever usage of meta-estimators can encapsulate elaborate machine learning models into a maintainable tree of objects that is both handy to use and simple to test.\r\n\r\nLooking at examples, I will show how this approach simplifies model development, testing and validation and how this brings together best practices from software engineering as well as data science.\r\n\r\n_Knowledge of Scikit-Learn is handy but not necessary to follow this talk._"], "have_tickets": [true], "title": "Using Scikit-Learn's interface for turning Spaghetti Data Science into Maintainable Software", "speakers": "Holger Peters", "track_title": "Barria1 Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:15:00", "duration": 30, "tags": ["python", "data-science", "machine-learning", "cleancode", "sklearn", "Best Practice", "Testing"]}, "159": {"id": 159, "abstracts": ["Scrapy is a fast high-level screen scraping and web crawling framework, used to crawl websites and extract structured data from their pages. It can be used for a wide range of purposes, from data mining to monitoring and automated testing.\r\n\r\nIn this talk some advanced techniques will be shown based on how Scrapy is used at Scrapinghub.\r\n\r\nGoals:\r\n\r\n - Understand why its necessary to _Scrapy-ify_ early on.\r\n - Anatomy of a Scrapy Spider.\r\n - Using the interactive shell.\r\n - What are items and how to use item loaders.\r\n - Examples of pipelines and middlewares.\r\n - Techniques to avoid getting banned.\r\n - How to deploy Scrapy projects.\r\n\r\n\r\n"], "have_tickets": [true], "title": "Dive into Scrapy", "speakers": "Juan Riaza", "track_title": "Google Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["scrapy", "python", "open-source", "scraping"]}, "206": {"id": 206, "abstracts": ["From september 2015 Aarhus School of Engineering will offer the education Bachelor of Electronic Engineering, as a combined online and on campus education. In the talk I will describe the technical and pedagogical setup, we are working at to meet the challenges of having both on-site and remote students.\r\n\r\nI will also touch on how IPython Notebook, will be part of the technical setup, and how it can be incorporated into the teaching."], "have_tickets": [true], "title": "Online Education: challenges and opportunities for Staff and Students", "speakers": "Anders Lehmann", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:00:00", "duration": 30, "tags": ["education", "ipython"]}, "293": {"id": 293, "abstracts": ["Do you know how a spreadsheet works? Can you imagine building one, from scratch, in Python? This talk will be a whirlwind overview of how to do just that. Based on the source code of Dirigible, a short-lived experiment in building a cloud-based Pythonic spreadsheet (now [open-sourced](https://github.com/pythonanywhere/dirigible-spreadsheet), for the curious).\r\n\r\nWe'll start from scratch, with a simple data representation for a two-by-two grid, and then gradually build up the functionality of our spreadsheet:\r\n- Cell objects, and the formula/value distinction\r\n- Evaluating cells, from simple arithmetic up to an Excel-like dialect\r\n- Building up the dependency graph, and the ensuing fun times with recursion (arg!)\r\n- Integrating custom functions and user-defined code.\r\n\r\nShowing and explaining code examples, and alternating with live demos (don't worry, I've done this before!)\r\n\r\nAnd it's all in Python! You'll be surprised at how easy it turns out to be, when you go step-by-step, each building on the last... And I promise you'll be at least a couple of moderately mind-blowing moments :)", "", ""], "have_tickets": [true], "title": "How to build a spreadsheet with Python", "speakers": "Harry Percival", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["Beginners", "data", "demo", "spreadsheet", "data-science"]}, "245": {"id": 245, "abstracts": ["You need to download data from lots and lots of URLs stored in a text file and then save them on your machine. Sure, you could write a loop and get each URL in sequence, but imagine that there are so many URLs that the sun may burn out before that loop is finished; or, you're just too impatient.\r\n\r\nFor the sake of making this instructive, pretend you can only use one box. So, what do you do? Here are some typical solutions: Use a single process that creates lots of threads. Use many processes. Use a single process and a library like asyncio, gevent or eventlet to yield between coroutines when the OS blocks on IO.\r\n\r\nThe talk will walk through the mechanics of each approach, and then show benchmarks of the three different approaches.\r\n", "", ""], "have_tickets": [true], "title": "Parallelism Shootout: threads vs asyncio vs multiple processes", "speakers": "Shahriar Tajbakhsh", "track_title": "A2 Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:00:00", "duration": 30, "tags": ["Parallelism"]}, "97": {"id": 97, "abstracts": ["\u00bfY si pudieras centrarte en la funcionalidad de tus\r\nservicios en lugar de programar la integraci\u00f3n entre ellos?\r\n\r\nlymph es un framework con personalidad propia para escribir\r\nservicios en Python que te permite hacer justo eso. Incluye\r\ndescubrimiento de servicios extensible, comunicaci\u00f3n v\u00eda\r\npetici\u00f3n-respuesta, comunicaci\u00f3n v\u00eda publicaci\u00f3n-subscripci\u00f3n\r\nextensible y gesti\u00f3n de procesos.\r\n\r\nA medida que crecen nuestros equipos de desarrollo, nos alejamos\r\ncada vez m\u00e1s de una arquitectura monol\u00edtica. Queremos empezar a\r\nescribir servicios sin tener que preocuparnos de los requisitos de\r\ninfraestructura. Queremos desarrollar de forma r\u00e1pida, centr\u00e1ndonos\r\nen nuestro trabajo.\r\n\r\nEn esta charla os ense\u00f1aremos lo f\u00e1cil que es desarrollar y\r\nejecutar servicios con lymph.\r\n\r\nEchad un ojo a http://lymph.io. Esperamos vuestros pull requests."], "have_tickets": [true], "title": "Deja de pegarte con tus servicios; import lymph", "speakers": "Alejandro Castillo", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["services", "zeromq", "events", "gevent", "web", "rpc", "open-source", "zookeeper", "rabbitmq", "framework"]}, "210": {"id": 210, "abstracts": ["\u201cCode shortening\u201d is the \u201csport\u201d where participants strive to achieve the shortest possible source code that solves a programming problem by exploiting all the tricks and quirks of the language.\r\n\r\nThe [SIZECON on SPOJ][1] is one of the oldest and most popular code shortening problems on the web with a bizarre twist, only character above ASCII value 32 are counted for the penalty. During the talk we will take a journey into some frightening depths of the Python language in order to write shorter and shorter solutions to SIZECON until, exploiting a number of truly mind-blowing tricks, we will reach the current record solution of 28 characters (above ASCII 32!).\r\n\r\nI promise I\u2019ll show you the most obfuscated, contrived and sick python code you have ever seen and (hopefully!) will ever see. I invite participants to give [SIZECON][1] a try and check their score against the [Python2][2] and [Python3][3] SPOJ rankings.\r\n\r\n [1]: http://www.spoj.com/problems/SIZECON/\r\n [2]: http://www.spoj.com/ranks/SIZECON/lang=PYTH%202.7\r\n [3]: http://www.spoj.com/ranks/SIZECON/lang=PYTH%203.2.3\r\n", "", ""], "have_tickets": [true], "title": "Solving the web most popular code shortening competition in Python.", "speakers": "Alessandro Amici", "track_title": "Barria2 Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["competitions"]}, "288": {"id": 288, "abstracts": ["The talk would aim to introduce cryptography and security from the developer point of view, showing ways to encrypt information with Python scripts and more sensitive information in web applications using django.\r\n\r\nI will introduce to security in python ,showing some libraries that allow encryption and decryption like PyCrypto or M2Crypto,comparing theses libraries with the cryptography module.At the same time,I will show the main ciphers and hashing algorithms used in these libraries like AES,DES,RSA and some examples illustrating each case.I wil show other techniques like steganography for hiding information in files(images,documents,programs) with some libraries like Stepic or ezPyCrypto. \r\n\r\nFinally,I will comment OWASP Python Security Project where we can find some useful practices\r\nand secure coding guidelines for detecting potential security vulnerabilities in our applications like SQL injection or Cross-site scripting.\r\n"], "have_tickets": [true], "title": "Python Security & Cryptography", "speakers": "Jose Ortega", "track_title": "Barria1 Room", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["python", "algorithm", "best-practices", "django", "security", "cryptography"]}, "131": {"id": 131, "abstracts": ["At Blue Yonder, we've built a platform that can accept and process bulk amounts of data for multiple business domains (e.g. handling retail store location and sales data) using SQLAlchemy as a database abstraction layer.\r\nWe wanted to use as much of SQLAlchemy as possible, but we quickly found that the ORM (Object Relational Mapper) is not suitable for handling large amounts of data at once. At the same time, we did not want each team of developers working on individual business domains to have to handcraft their own SQL statements. To solve this problem, we built an application configuration that closely resembles an SQLAlchemy model, but also contains application-specific logic settings.\r\n\r\nIn this talk I will demonstrate:\r\n\r\n - an application architecture for multiple business domains\r\n\r\n - the structure of the domain configuration utilized in the generation of the SQLAlchemy model, SQLAlchemy core statements, and other application functionality\r\n\r\n - how the domain configuration is used throughout the application (consuming and parsing incoming data, storing it in a database and ensuring data quality)"], "have_tickets": [true], "title": "Building a multi-purpose platform for bulk data using sqlalchemy", "speakers": "Christian Trebing", "track_title": "Barria1 Room", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["bigdata", "SQLAlchemy"]}, "109": {"id": 109, "abstracts": ["This talk is about how python is used in cloud computing as well as used while configuring cloud infrastructure. It also gives brief about tools and technologies/libraries can be used for number of tasks while cloud development/execution. Developers and all python lovers are the perfect audience for this talk. They will get the brief about reliable stack of python based tools used in cloud development and also will be sharing the experience with python.\r\n\r\nSummary:\r\nPython in cloud. \r\nKind of services can be build with python.\r\nPython based tools used in deployment and configuration management for the cloud.\r\nFor every python lovers - How to create a python friendly cloud infrastructure with great reliable combination of many stable tools.\r\nStability.\r\nExperience sharing. "], "have_tickets": [true], "title": "Python for Cloud Services and Infrastructure Management", "speakers": "Bhaumik Shukla", "track_title": "Barria2 Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 15:45:00", "duration": 30, "tags": ["nosql", "python", "infrastructure", "REST", "mongodb", "DevOps", "configuration", "django", "deployment", "cloud", "fabric", "rabbitmq"]}, "281": {"id": 281, "abstracts": ["It is always tough to test a complex API comprehensively. The additional level of complexity brings us to the question \"How can we validate that our API is working as intended?\"\r\n\r\nIn this talk I will explain how to use test driven development for APIs to solve this problem and even further how TDD can drive an API Design towards a more usable design.\r\nI will outline my practical approach with an implementation example based on django. And finally I will give you a brief summary of my lessons learned using this approach in customer projects.\r\n\r\n"], "have_tickets": [true], "title": "TDD for APIs", "speakers": "Michael Kuehne", "track_title": "Barria1 Room", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["pytest", "django", "agile", "api", "tdd"]}, "60": {"id": 60, "abstracts": ["TDD is great, we all know that. But why is it so, and under which circumstances is it ineffective or even harmful?\r\n\r\nIn this talk I want to delve into the deeper meaning of testing to derive how to do it best.\r\nAll of this from the point of view of somebody who has profited but also struggled with testing and TDD.\r\n\r\nFor every experience level from beginner to advanced there is something to learn or ponder.\r\n"], "have_tickets": [true], "title": "TDD - the why, the how and the when not", "speakers": "Fabian Kreutz", "track_title": "Google Room", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["tdd", "Development", "Testing", "py.test"]}, "8": {"id": 8, "abstracts": ["Beginner's guide to Python code quality. I'll talk about the tools for code analysis, differences between them, extending them with new features and ways to running them automatically. In the end, I'll talk about reasons behind all of these tools and try to convince you to using them in your projects (but if you are against it - I'll gladly listen to your arguments).", "", ""], "have_tickets": [true], "title": "Code Quality in Python - tools and reasons", "speakers": "Rados\u0142aw Jan Ganczarek", "track_title": "Barria2 Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:15:00", "duration": 30, "tags": ["automation", "python", "metrics"]}, "274": {"id": 274, "abstracts": ["Bring the continuous integration to a new level, through a platform/project independent framework able to give you unittest-like reports. Argus is a scenario-based application written in Python, driven by custom recipes under configurable environments, that can be used for testing a wide variety of small and big projects, with the ability of querying live data from the in-test application.\r\n\r\nUntil now, it's successfully used with [cloudbase-init][1] (a robust cloud initialization service for instances) under OpenStack and not only, due to its extensiveness and the ability to mimic different infrastructures. More details can be found on the package page: https://github.com/PCManticore/argus-ci.\r\n\r\nThe goals of this talk are to show its generic scalability, how simple is to create such kind of recipes, the relationship between scenarios, introspection and tests and, but not last, the unlimited freedom of creating very custom aspects of these entities which lead to relevant and in-depth ready for analysis logs. There are no major prerequisites to understand it, just to be familiar with Python and optionally have a focus on cloud infrastructures.\r\n\r\n[1]: https://github.com/stackforge/cloudbase-init"], "have_tickets": [true], "title": "Argus - the omniscient CI", "speakers": "Cosmin Poieana", "track_title": "A2 Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:00:00", "duration": 30, "tags": ["cloudbase-init", "continuous-integration", "argus", "devstack", "OpenStack", "open-source", "linux", "windows", "cloud", "Testing"]}, "117": {"id": 117, "abstracts": ["Defining a natural hierarchy of classes in Python can be challenging. Features like multiple inheritance, metaclasses, and classmethods can make such hierarchies significantly more powerful. However, these language features are complex and easy to use incorrectly. This talk will cover the best way to put the capabilities of classes to work so you can write Python programs more effectively.\r\n\r\nSpecifically, I'll cover these pieces of advice that I think you should follow:\r\n\r\n1. Initialize Parent Classes with `super`\r\n1. Use Multiple Inheritance Only for Mix-in Utility Classes\r\n1. Validate Subclasses with Metaclasses\r\n1. Register Class Existence with Metaclasses\r\n1. Use `@classmethod` Polymorphism to Construct Objects Generically\r\n\r\nWith each suggestion I'll use code examples to demonstrate why this is the best choice. When there are differences between Python 2 and Python 3, I'll highlight what's different. The goal is that intermediate programmers will learn some Python best practices, experienced programmers will gain confidence in their full use of Python's features."], "have_tickets": [true], "title": "How to Be More Effective with Classes", "speakers": "Brett Slatkin", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:15:00", "duration": 45, "tags": ["Practice", "Best"]}, "32": {"id": 32, "abstracts": ["One of the key aspect to keep in mind when developing a scalable application is its faculty to grow easily. But while we're used to take advantage of scalable backend technologies such as mongodb or couchbase, **scaling automatically our own application** core is usually another story.\r\n\r\nIn this talk I will **explain and showcase** a distributed web application design based on **consul** and **uWSGI** and its consul plugin. This design will cover the key components of a distributed and scalable application:\r\n\r\n - **Automatic service registration and discovery** will allow your application to grow itself automatically.\r\n\r\n - **Health checking and service unregistration** will allow your application to be fault tolerant, highly available and to shrink itself automatically.\r\n\r\n - A **distributed Key/Value storage** will allow you to (re)configure your distributed application nodes at once.\r\n\r\n - **Multi-Datacenter awareness** will allow your application to scale around the world easily.\r\n\r\n", "", ""], "have_tickets": [true], "title": "Designing a scalable and distributed application", "speakers": "Alexys Jacob", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 15:15:00, 2015-07-22 16:15:00", "duration": 60, "tags": ["technologies", "gevent", "management", "performance", "flask", "DevOps", "web", "automation", "configuration"]}, "269": {"id": 269, "abstracts": ["Bokeh is a Python interactive visualization library for large datasets that natively uses the latest web technologies. Its goal is to provide elegant, concise construction of novel graphics in the style of Protovis/D3, while delivering high-performance interactivity over large data to thin clients.\r\n\r\nThe talk will go through it\u2019s design providing details of the different API layers (bottom to top) concluding with a comprehensive showcase of examples to expose many of the features that make Bokeh so powerful and easy.", "", ""], "have_tickets": [true], "title": "Big data beautiful visualization on the browser with Bokeh", "speakers": "Fabio Pliger", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 16:15:00", "duration": 60, "tags": ["data-science", "visualization", "bigdata", "flask", "web", "django", "data", "html5"]}, "126": {"id": 126, "abstracts": ["Data Science is a hot topic, and most data scientist use either Python or R to do their jobs as main scripting language. \r\nBeing import.io data scientist for the last 2 years, all of them using Python, I've come across many different problems and needs on how to wrangle data, clean data, report on it and make predictions.\r\nIn this talk I will cover all main analytics and data science needs of a start-up using Python, numpy, pandas, and sklearn. For every use case I will show snippets of code using IPython notebooks and run some of them as live demos. "], "have_tickets": [true], "title": "Everyone can do Data Science in Python", "speakers": "Ignacio Elola", "track_title": "Google Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:15:00", "duration": 45, "tags": ["data-science", "machine-learning", "analytics", "pandas", "scipy", "sklearn"]}, "160": {"id": 160, "abstracts": ["Writing a Python script from scratch is fairly easy and you get on with very little boilerplate code in general. However starting a new Python project can be tiring if you decide to stick to best practices and plan on submitting it to PyPI. It requires great diligence and occasionally gets pretty cumbersome if you start new tools on a regular basis.\r\n\r\nWhy not just use a template for it? Cookiecutter is a CLI tool written in pure Python that enables you to do so. Not only is it working for Python code, but also markdown formats and even other programming languages. We will talk about the ideas behind Cookiecutter and go over how you can create your very own template, so you and others can benefit from your experience.\r\n\r\n\r\nGitHub: [https://github.com/hackebrot][1]\r\n\r\nTwitter: [https://twitter.com/hackebrot][2]\r\n\r\nBlog: [http://www.hackebrot.de/][3]", "", ""], "have_tickets": [true], "title": "Come to the Dark Side! We have a whole bunch of Cookiecutters!", "speakers": "Raphael Pierzina", "track_title": "Google Room", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["Cookiecutter", "Best Practice", "CLI", "community", "open-source", "Click", "pytest", "Kivy", "Jinja2", "cross-platform"]}, "66": {"id": 66, "abstracts": ["Seg\u00fan wikipedia:\r\n\"La metaprogramaci\u00f3n consiste en escribir programas que escriben o manipulan otros programas (o a s\u00ed mismos) como datos, o que hacen en tiempo de compilaci\u00f3n parte del trabajo que, de otra forma, se har\u00eda en tiempo de ejecuci\u00f3n. Esto permite al programador ahorrar tiempo en la producci\u00f3n de c\u00f3digo.\"\r\nEn esta charla veremos diferentes mecanismos que Python proporciona como:\r\n - Decoradores\r\n - Metaclasses\r\n - Descriptors\r\nA trav\u00e9s de varios ejemplos veremos como reutilizar c\u00f3digo en varias funciones y clases, como modificar como nuestras clases se generan, como se genera una clase (que funciones se llaman cuando una clase se crea) o como se genera una instancia.\r\nVeremos tambi\u00e9n que f\u00e1cilmente se nos puede ir de las manos y como utilizar con cuidado las herramientas que Python nos proporciona.", "", ""], "have_tickets": [true], "title": "Metaprogramaci\u00f3n en Python", "speakers": "Ra\u00fal Cumplido", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["metaclass", "metaprogramming", "python"]}, "42": {"id": 42, "abstracts": ["Using the automated documentation feature of Sphinx, you can make with ease the extensive documentation of Python program.\r\nYou just write python function documents (docstrings), Sphinx organizes them into the document, can be converted to a variety of formats.\r\nIn this session, I'll explain a documentation procedure that uses with sphinx autodoc and autosummary extensions.\r\n\r\nIn this session, I'll explain a documentation procedure that uses with sphinx autodoc, autosummary, coverage and doctest extensions.", "Abstract:\r\n\r\nUsing the automated documentation feature of Sphinx, you can make with ease the extensive documentation of Python program.\r\nYou just write python function documents (docstrings), Sphinx organizes them into the document, can be converted to a variety of formats.\r\nIn this session, I'll explain a documentation procedure that uses with sphinx autodoc and autosummary extensions.\r\n\r\nDescription:\r\n\r\nSphinx provides autodoc feature that generate document from docstring in your python sources.\r\nThe docstring that contains description and example of the use of function written near the program, makes doc easy to update.\r\nIn addition, the output of the Sphinx will make you understand what to write in docstring. As a result, this will improve your motivation of doc writing.\r\n\r\nTo use the autodoc, you must specify python modules to automodule directive one by one. This is a tedious task, hoswever autosummary extension automate this task.\r\nIn most cases, once developers have developed the API, you only need to run the make html of Sphinx, you get a nicely formatted document.\r\n\r\nSphinx also has coverage and doctest extentions.\r\nThese support writing the documentation to work with autodoc.\r\nThis allow you to check the APIs that have not been documented or you can verify each doctest part is correct or not.\r\n\r\nIf you use such autodoc-related extensions, you can create a Sphinx API documentation in the following procedure.\r\n\r\n1. make coverage; you can get the APIs that have not been documented.\r\n2. Write docstrings that includes the doctest format how to use the API.\r\n3. make doctest; you can verify each doctest part is correct or not.\r\n4. make html; you can generate the HTML or your favorite format.\r\n\r\nIn this session, I'll explain a documentation procedure that uses with sphinx autodoc, autosummary, coverage and doctest extensions.\r\n\r\n\r\nTarget:\r\n\r\n- Python programmer who is struggling with documentation.\r\n- Python library author who want to generate API docs automatically.\r\n- Python library author who want to create a clear documentation which contains python snippets.\r\n\r\nOutline:\r\n\r\n* Self introduction (2 min)\r\n\r\n* Sphinx introduction (2 min)\r\n\r\n * What is Sphinx?\r\n * Sphinx examples\r\n\r\n* Have you written API docs for your code? (2 min)\r\n\r\n * I don't know what/where should I write.\r\n * Docstrings is needed? Are there some specific format?\r\n\r\n* Getting start Sphinx (2 min)\r\n\r\n * How to install Sphinx\r\n * How to start a Sphinx project\r\n\r\n* Generate API docs from your python code (5 min)\r\n\r\n * setup autodoc extension\r\n * write docstrings for yuor python module\r\n * \"automodule & make html\" will generate API docs from python code\r\n * autodoc pros & cons: docs for many modules\r\n\r\n* Listing APIs automatically (5 mins)\r\n\r\n * setup autosummary extension\r\n * how to use autosummary directive\r\n * no more autodoc directive\r\n\r\n* Discovering undocumented APIs (5 min)\r\n\r\n * setup coverage extension\r\n * make coverage\r\n\r\n* Detect deviations of the impl and doc (5 min)\r\n\r\n * setup doctest extension\r\n * make doctest\r\n\r\n* Overall picture, tips, Q&A (10 min)\r\n\r\n * Overall picture of the process\r\n * Options for autodoc\r\n * translate them into other langs\r\n", ""], "have_tickets": [true], "title": "Sphinx autodoc: automated API documentation", "speakers": "Takayuki SHIMIZUKAWA", "track_title": "Google Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["automation", "autodoc", "documentation", "Sphinx"]}, "64": {"id": 64, "abstracts": ["A perspective of the impact of the PyconUK education track from the point of view of teachers and educators. \r\n\r\nHaving attended the education track at Pycon UK 2014 as a teacher, my talk will share both my experiences and those of other teachers attending. The education track bought educators and developers together in a way that allowed the teachers to get support and advice whilst developers get to support teachers in developing exciting & real applications for teaching computing. \r\n\r\nThe talk will focus on two aspects of the education track. The workshops delivered for teachers by python developers and how this helps build teachers confidence. But also the breakout sessions where educators and developers with common interests can work together to develop something. This might be a program / library or a teaching resource, some developers gave a hands on and bespoke training session to a group of teachers.\r\n\r\nIf we are to get more young people programming or at least having a positive experience of programming then we need to minimize obstacles to that experience. By having educators and developers working together we can identify those obstacles and eliminate them!", "", ""], "have_tickets": [false], "title": "Pycon - A teacher's perspective", "speakers": "James Robinson", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["education", "pyconuk", "raspberrypi", "teaching", "learning", "computing", "python3"]}, "339": {"id": 339, "abstracts": ["Microservices are popping up everywhere. This talk will explain what this fashionable new architecture is, including the pros and cons of adopting it, and then discuss an open-source framework that can help you do so -- [https://nameko.readthedocs.org][1].\r\n\r\nNameko assists you in writing services with well-defined boundaries that are easy to test. By leveraging some neat design patterns and providing test helpers, it also encourages good service structure and clean code.\r\n\r\n [1]: https://nameko.readthedocs.org"], "have_tickets": [true], "title": "Nameko for Microservices", "speakers": "Matt Bennett", "track_title": "Google Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:15:00", "duration": 45, "tags": ["architecture", "open-source", "Microservices"]}, "255": {"id": 255, "abstracts": ["Ever feel like your open source project could be better tested? Lack of tests holding you back from contributors but you don\u2019t know where to start? You\u2019re not alone.\r\n\r\n[\u201cAdopt pytest month\u201d][1] was held in April 2015. [Pytest][2] volunteers were paired with open source software projects, to find a path to better testing with pytest. Projects varied from libraries/command line utilities, to a browser, to a complex Django app. In some cases converting existing tests was necessary, in others writing the first tests in existence for non-trivial amounts of code. Two projects were open sourced specifically to take part in \u201cadopt pytest month\u201d. What began as an experiment in increasing software audience proved to be an interesting exercise in strengthening community and most valuable of all, provided a newcomer\u2019s perspective to veteran contributors.\r\n\r\nThis talk will discuss what worked well with \u201cadopt pytest month\u201d, what didn\u2019t, what we learned about pytest and what you could take away for your open source project, be it an improved testing environment or an improved contributor community. A basic knowledge of testing and pytest will be useful.\r\n\r\n [1]: http://pytest.org/latest/adopt.html\r\n [2]: http://pytest.org/latest/\r\n"], "have_tickets": [true], "title": "The realities of open source testing: lessons learned from \u201cAdopt pytest month\u201d", "speakers": "Brianna Laugher", "track_title": "Barria1 Room", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["tdd", "open source", "community", "open-source", "Testing", "pytest", "py.test"]}, "115": {"id": 115, "abstracts": ["At Yelp, we ship code multiple times a day and have maintained this pace as our team has grown to 300+ and our codebase to several million lines of Python code. This talk explores the pain points we experienced along the ways, how our service-oriented architecture alleviates them, and the infrastructure we built to develop, test, and deploy in this highly-distributed environment. As a case study, we\u2019ll be looking at the backend powering the new Yelp Business Owner Android and iOS apps.\r\n\r\nAt the start, most of the development at Yelp occurred in a single, monolithic web application, creatively named \u201cyelp-main\u201d (naming is hard!). As the company grew, our developers were spending increasing amounts of time trying to ship code. After recognizing this pain point, we started experimenting with a service oriented architecture to scale the development process, and so far it\u2019s been a resounding success. Over the course of the last three years, we\u2019ve gone from writing our first service to having over seventy production services. Along the way, we\u2019ve dabbled with Docker containers, Pyramid, SQLAlchemy, uWSGI, gevent, and virtualenv in an effort to build the next-generation service platform for our engineers."], "have_tickets": [true], "title": "Building mobile APIs with services at Yelp", "speakers": "Stephan Jaensch", "track_title": "Barria2 Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["services", "distributed-systems", "REST", "docker", "swagger", "pytest", "Pyramid"]}, "67": {"id": 67, "abstracts": ["Do you deploy your Python services to Amazon EC2, or to Openstack, or even to HP cloud, joyent or Azure? Do you want to - without being tied into any one of them? What about local full stack deployments with lxc or kvm containers?\r\n\r\nEven if you're convinced you don't need \"the cloud\" because you manage your own servers, amazing technologies like Private clouds and MaaS, for dynamic server management on bare metal, may change your mind.\r\n\r\nFed up with the cloud hype? Let us rehabilitate the buzzword! (A bit anyway.)\r\n\r\nA fully automated cloud deployment system is essential for rapid scaling, but it's also invaluable for full stack testing on continuous integration systems. Even better, your service deployment and infrastructure can be managed with Python code? (Devops distilled)\r\n\r\nTreat your servers as cattle not as pets, for service oriented repeatable deployments on your choice of back-end. Learn how service orchestration is a powerful new approach to deployment management, and do it with Python! If any of this sounds interesting then Juju maybe for you!\r\n\r\nIn this talk we'll see a demo deployment for a Django application and related infrastructure. We'll be looking at the key benefits of cloud deployments and how service orchestration is different from the \"machine provisioning\" approach of most existing cloud deployment solutions."], "have_tickets": [true], "title": "To the Clouds: Why you should deploy to the cloud even if you don't want to", "speakers": "Michael Foord", "track_title": "Barria1 Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["OpenStack", "DevOps", "linux", "go", "cloud", "ec2"]}, "233": {"id": 233, "abstracts": ["How to write a test so you would remember what it does in a year from now? How to write selective tests with different inputs? What is test? How to subclass tests cases and yet maintain control on which tests would run? How to extend or to filter inputs used in parent classes? Are you a tiny bit intrigued now? :)\r\n\r\nThis is not another talk about how to test, but how to organize your tests so they were maintainable. I will be using nose framework as an example, however main ideas should be applicable to any other framework you choose. Explaining how some parts of code works I would have to briefly touch some advanced python topics, although I will provide need-to-know basics there, so people with any level of python knowledge could enjoy the ride.\r\n"], "have_tickets": [true], "title": "Sustainable way of testing your code", "speakers": "Eugene Amirov", "track_title": "Google Room", "timerange": "2015-07-20 15:45:00, 2015-07-20 16:15:00", "duration": 30, "tags": ["nose", "unit-testing", "maintainability", "readability"]}, "196": {"id": 196, "abstracts": ["In static unit testing, the output of a function is compared to a precomputed result. Even though such unit tests may apparently cover all the code in a function, they might cover only a small subset of behaviours of the function. This potentially allows bugs such as heartbleed to stay undetected. Dynamic unit tests using fuzzing, which allows you to specify a data generation template, can make your test suite more robust.\r\n\r\nIn this talk, we demonstrate fuzzing using the hypothesis library.\r\nHypothesis is a Python library to automatically generate test data based on a template.\r\nData is generated using a strategy. A strategy specifies how data is generated, and how falsifying examples can be simplified. Hypothesis provides strategies for Python's built-in data types, and is easily customizable.Since test data is generated automatically, we can not compare against pre-computed results. Instead, tests are usually done on invariants of functions. We give an overview of such invariants.\r\n\r\nFinally, we demonstrate how we use fuzzing to test machine learning algorithms at Blue Yonder."], "have_tickets": [true], "title": "What's the fuzz all about? Randomized data generation for robust unit testing", "speakers": "Moritz Gronbach", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:15:00", "duration": 45, "tags": ["fuzzing", "hypothesis", "unit-testing"]}, "106": {"id": 106, "abstracts": ["Do you like visiting Python conferences like the EuroPython? Does it\r\nmake you to want something similar where you live too? This talk looks\r\ninto the effort, practical things and some good tips on how to\r\nbootstrap your own Python community where you live!\r\n\r\nIf you already run a local Python community, join this talk to share\r\nyour views and give your comments to those interested in building\r\ntheir first Python community.\r\n\r\nAfter the talk you have a good idea of what it takes to run your local\r\nPython community (spoiler: not much!) and how can you take it even further!"], "have_tickets": [true], "title": "How-To: Build a local Python community", "speakers": "Jyrki Pulliainen", "track_title": "Google Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 15:45:00", "duration": 30, "tags": ["conferences", "organizer", "meetup", "community"]}, "336": {"id": 336, "abstracts": ["One point usually underestimated or omitted when dealing with \r\nmachine learning algorithms is how to write *good quality* code.\r\nThe obvious way to face this issue is to apply automated testing, which aims at implementing (likely) less-buggy and higher quality code.\r\n\r\nHowever, testing machine learning code introduces additional concerns that has to be considered. On the one hand, some constraints are imposed by the domain, and the risks intrinsically related to machine learning methods, such as handling unstable data, or avoid under/overfitting. On the other hand, testing scientific code requires additional testing tools (e.g., `numpy.testing`), specifically suited to handle numerical data.\r\n\r\nIn this talk, some of the most famous machine learning techniques will be discudded and analysed from the `testing` point of view, emphasizing that testing would also allow for a better understanding of how the whole learning model works under the hood.\r\n\r\nThe talk is intended for an *intermediate* audience.\r\nThe content of the talk is intended to be mostly practical, and code\r\noriented. Thus a good proficiency with the Python language is **required**.\r\nConversely, **no prior knowledge** about testing nor Machine Learning \r\nalgorithms is necessary to attend this talk.", "", ""], "have_tickets": [true], "title": "Machine Learning Under Test", "speakers": "Valerio Maggio", "track_title": "A2 Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["data-science", "machine-learning", "nose", "py.test", "sklearn", "scipy", "numpy", "Testing"]}, "55": {"id": 55, "abstracts": ["When you see users starting to use your feature, you feel very proud and fulfilled. So why feel this only once every few weeks, why not feel it every day? In this talk I will show how we changed our workflow to automate deployment of code changes to production every time a feature is ready - sometimes even few times per day. I will present how to successfully combine open-source tools like Git, Jenkins, Buildout, Fabric, uWSGI, and South, in order to simplify the process and make it more reliable. I will discuss challenges that we faced implementing this workflow in a real project based on Django and how we resolved them. During this talk you will gain the knowledge required to implement Continuous Deployment in your own project."], "have_tickets": [false], "title": "Continuous Deployment for webapps based on Django", "speakers": "Wojciech Lichota", "track_title": "A2 Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["case study", "Tooling", "django", "Best Practice", "deployment"]}, "372": {"id": 372, "abstracts": ["Scalability is a big problem for everyone who wants to grow. In order to handle the demand, appropriate infrastructure both in terms of software and hardware should be met. What if hardware was as dynamic as a service where CPU and RAM could have been acquired when only it's needed. Is there such an environment? How can you work with it? What you should be careful of? How your applications should evolve?\r\n", "", ""], "have_tickets": [true], "title": "Preparing Apps for Dynamic Scaling", "speakers": "roy simkes", "track_title": "Barria1 Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:00:00", "duration": 30, "tags": ["Scalability"]}, "45": {"id": 45, "abstracts": ["[Cython][1] is not only an excellent and widely used tool to speed up computational Python code, it's also a very comfortable way to talk to native code and libraries. The Cython compiler translates Python code to C or C++ code, and supports static type annotations to allow direct use of C/C++ data types and functions. The tight integration of all three languages makes it possible to freely mix Python features like generators and comprehensions with C/C++ features like native data types, pointer arithmetic or manually tuned memory management in the same code.\r\n\r\nThis talk by a core developer introduces the Cython compiler by interactive code examples and presents recent enhancements in the language that continue to make Cython the best choice for the development of fast and portable Python extensions.\r\n\r\n [1]: http://cython.org/\r\n"], "have_tickets": [true], "title": "Get native with Cython", "speakers": "Stefan Behnel", "track_title": "Barria1 Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["Cython", "python", "c++", "ipython"]}, "231": {"id": 231, "abstracts": ["The terminal emulators we run so many of our programming tools in are more powerful than we remember to give them credit for, and the key to that power is understanding the interface. This talk will cover terminal colors and styles, writing to arbitrary portions of the screen, handling signals from the terminal, determining the terminal's dimensions and scrollback buffer behavior.\r\n\r\nTerminal programming can get hairy; along the way we'll deal with encoding issues, consider cross platform concerns, acknowledge 4 decades' worth of standards for terminal communication, and consider that humans at interactive terminals may not be the only users of our interfaces. By gaining an understanding of these issues, we'll be able choose from the abstractions over them offered by Python libraries Urwid, Blessings, and Python Prompt Toolkit.\r\n\r\nThis talk requires minimal Python knowledge, but does assume familiarity with command line tools in a unix environment.\r\n\r\nAn abbreviated version of this talk was presented at PyCon 2015 in Montr\u00e9al: https://www.youtube.com/watch?v=WAitSilLDUA With the additional time I'd hope to present more code examples, a more in-depth tour of existing libraries and more practical advice about writing programs that use the terminal, and an additional example of a difficult terminal details: dealing with reflowing of text in modern terminal emulators like GNOME Terminal and iTerm."], "have_tickets": [true], "title": "Terminal Whispering", "speakers": "Thomas Ballinger", "track_title": "Barria1 Room", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["terminal", "Urwid", "Blessings", "command-line", "REPL", "unix", "curses"]}, "352": {"id": 352, "abstracts": ["You've heard about Python's GIL. But what is it really? What does it do, both good and bad?\r\n\r\nCome learn all about the Python GIL. You'll learn about its history, all the problems it solves, all the problems it causes (that we know about!), and what it would take to remove the GIL.\r\n\r\nAttendees should be familiar with the terrors inherent in multithreaded programming, and be comfortable with a little C code in the slides.", "", ""], "have_tickets": [true], "title": "Python's Infamous GIL", "speakers": "Larry Hastings", "track_title": "Google Room", "timerange": "2015-07-23 15:45:00, 2015-07-23 16:15:00", "duration": 30, "tags": ["GIL", "cpython"]}, "63": {"id": 63, "abstracts": ["Python is the language of choice for the orchestration part of MySQL 5.6. \r\n\r\nAfter a brief introduction of MySQL replication architecture, the talk [Slides here][1] presents the python utilities released by MySQL: a set of drivers in pure-python, mysql-utilites for replication, management and failover, and fabric, a tool for scaling, sharding and provisioning new servers.\r\n\r\nYou will see how to create resilient configurations in minutes and use mysql-fabric to create high available infrastructures.\r\n\r\nAs a plus, we'll show how we implemented a fabric provider for provisioning new databases via docker\r\n\r\nPrerequisites: basic database knowledge, transactions, replication. MySQL specific concepts (eg: binary logs) are briefly introduced in the talk.\r\n\r\n [1]: http://www.slideshare.net/ioggstream/scaling-mysql-with-python", "Python is the language of choice for the orchestration part of MySQL 5.6. \r\n\r\nAfter a brief introduction of MySQL replication architecture, the talk [Slides here][1] presents the python utilities released by MySQL:\r\n\r\n - a set of drivers in pure-python \r\n - mysql-utilites for replication, management and failover\r\n - fabric, a tool for scaling, sharding and provisioning new servers\r\n\r\nYou will see how to:\r\n\r\n - create resilient configurations in minutes\r\n - use mysql-fabric to create high available infrastructures\r\n\r\nAs a plus, we'll show how we:\r\n\r\n - implemented a fabric provider for provisioning new databases via docker\r\n\r\n\r\n# Prerequisites\r\n\r\nBasic database knowledge, transactions, replication. \r\n\r\nMySQL specific concepts (eg: binary logs) are briefly introduced in the talk.\r\n\r\n\r\n [1]: http://www.slideshare.net/ioggstream/scaling-mysql-with-python", ""], "have_tickets": [true], "title": "Scaling MySQL with Python", "speakers": "Roberto Polli", "track_title": "Barria1 Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["Database", "mysql", "case study", "docker", "linux"]}, "108": {"id": 108, "abstracts": ["My talk is meant to provide an overview of our current set of tools for storing data and how we arrived to these. Then, in the light of the current bottlenecks, and how hardware and software are evolving, provide a brief overview of the emerging technologies that will be important for handling Big Data within Python. Although I expect my talk to be a bit prospective, I won't certainly be trying to predict the future, but rather showing a glimpse on what I expect we would be doing in the next couple of years for properly leveraging modern architectures (bar unexpected revolutions ;).\r\n\r\nAs an example of library adapting to recent trends in hardware, I will be showing bcolz (https://github.com/Blosc/bcolz), which implements a couple of data containers (and specially a chunked, columnar 'ctable') meant for storing large datasets efficiently.\r\n"], "have_tickets": [true], "title": "New Trends In Storing Large Data Silos With Python", "speakers": "Francesc Alted", "track_title": "Barria1 Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["Database", "bigdata", "python", "open-source", "data-science"]}, "272": {"id": 272, "abstracts": ["The popularity of Single Page Applications build with modern JavaScript frameworks is increasing, and more and more teams work on projects with separate frontend and backend components communicating over the network. At the same time, complex projects are evolving their architecture towards containerized microservices. However, most traditional batteries-included web frameworks are not designed for this paradigm.\r\n\r\nThis talk covers some best practices for building REST APIs for private use (in contrast to public ones), focusing on issues like authentication, error handling, validation, and serialization. It will also try to convince you that this might be a good moment to reconsider microframeworks like Flask instead of your favourite opinionated web framework."], "have_tickets": [true], "title": "Killer REST APIs for rich JS applications", "speakers": "Adam Byrtek", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["web", "flask", "HTTP", "api", "REST"]}, "65": {"id": 65, "abstracts": ["The Raspberry Pi weather station project introduces young people to using python programming to solve real and technical problems. The weather station consists of a range of sensors including:\r\nAnemometer\r\nRain gauge\r\nWind Vane\r\nTemperature Probe\r\nBarometer\r\nAir Quality Sensor\r\nHygrometer\r\n\r\n1000 kits are being given away to schools to take part in the project by following our schemes of work which will involve.\r\nProgramming basic interrupt based sensors\r\nAdvanced Sensors using ADC chips\r\nCreate a pygame based UI\r\nLogging data to MySQL and Oracle Apex\r\nPresenting data to a web app\r\nDeploying the weather station\r\nIntegrating Apex database\r\n\r\nWe would love feedback on the project from Python Developers and support in updating some libraries from python 2 to 3.", "", ""], "have_tickets": [false], "title": "Raspberry Pi Weather Station", "speakers": "James Robinson", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 15:15:00, 2015-07-23 15:45:00", "duration": 30, "tags": ["education", "python3", "weather", "python2"]}, "265": {"id": 265, "abstracts": ["Kotti is a high-level, Pythonic web application framework based on Pyramid, SQLAlchemy and Bootstrap 3. It includes an extensible Content Management System called the Kotti CMS. Kotti is particularly well suited for building custom applications with object level security. It comes with complete user and group management and supports the concepts of global and local roles providing management views for each of those. \r\n\r\nThe talk will give an overview on Kotti, its philosophy, history and future. Target audience are people who want to learn what it is and can be used for. Because Kotti is just a rather small layer on top of its foundations, the talk might also give some interesting insights on how to build a solid (web) framework that suits your personal preferences.\r\n\r\nReferences:\r\n\r\n - http://kotti.pylonsproject.org/\r\n - http://kotti.readthedocs.org/en/latest/\r\n\r\n"], "have_tickets": [true], "title": "Standing on the Shoulders of Giants: The Kotti Web Application Framework", "speakers": "Andreas Kaiser", "track_title": "Barria1 Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 15:45:00", "duration": 30, "tags": ["wsgi", "web", "open-source", "SQLAlchemy", "Kotti", "Pyramid"]}, "271": {"id": 271, "abstracts": ["Generar documentaci\u00f3n de forma din\u00e1mica es relevante para los ingenieros de software porque ellos interact\u00faan con la data en el mismo donde est\u00e1 localizada. Es tambi\u00e9n relevante para los clientes porque la documentaci\u00f3n se puede presentar en un formato organizado y claro. En esta presentaci\u00f3n, hablaremos de c\u00f3mo usar un proceso unificado para generar din\u00e1micamente la documentaci\u00f3n de diversas fuentes de data incluyendo los wikis y los sistemas de rastreo de incidencias. \r\n\r\nIdealmente, nosotros como ingenieros deber\u00edamos interactuar solamente con una Fuente de informaci\u00f3n que nos dara como resultado una documentaci\u00f3n vigente y correspondiente al estado actual de un sistema. En el Presente, el cliente recibe documentos incompletos y sin actualizaci\u00f3n dando una incorrecta impresi\u00f3n del estado vigente de un Sistema. Usando un proceso unificado para generar documentaci\u00f3n de solo una Fuente de data permite presentar al cliente lo que se merece: artefactos actualizados y completos dando el real y mas reciente estado de un Sistema. El resto de esta presentaci\u00f3n se enfocara en c\u00f3mo lograr este Sistema.", "Generar documentaci\u00f3n de forma din\u00e1mica es relevante para los ingenieros de software porque ellos interact\u00faan con la data en el mismo donde est\u00e1 localizada. Es tambi\u00e9n relevante para los clientes porque la documentaci\u00f3n se puede presentar en un formato organizado y claro. En esta presentaci\u00f3n, hablaremos de c\u00f3mo usar un proceso unificado para generar din\u00e1micamente la documentaci\u00f3n de diversas fuentes de data incluyendo los wikis y los sistemas de rastreo de incidencias. \r\n\r\nLa documentaci\u00f3n especifica (documentos requeridos, documentos de dise\u00f1o, etc.) es un punto cr\u00edtico para el desarrollo de un Sistema. Desafortunadamente, desde el momento de su creaci\u00f3n los documentos quedan desactualizados a causa del r\u00e1pido desarrollo y mejoras de c\u00f3digo que ocurren actualmente en la industria. Con frecuencia, estas mejoras no son anotados en la documentaci\u00f3n. El resultado de esto son documentos que no sirven o que son creados con mucha prisa resultando en documentos mediocres. Adicionalmente hay diversas fuentes de data sin actualizar que causan tener distintas versiones de estado actual de un Sistema.\r\n\r\nIdealmente, nosotros como ingenieros deber\u00edamos interactuar solamente con una Fuente de informaci\u00f3n que nos dara como resultado una documentaci\u00f3n vigente y correspondiente al estado actual de un sistema. En el Presente, el cliente recibe documentos incompletos y sin actualizaci\u00f3n dando una incorrecta impresi\u00f3n del estado vigente de un Sistema. Usando un proceso unificado para generar documentaci\u00f3n de solo una Fuente de data permite presentar al cliente lo que se merece: artefactos actualizados y completos dando el real y mas reciente estado de un Sistema. El resto de esta presentaci\u00f3n se enfocara en c\u00f3mo lograr este Sistema.", ""], "have_tickets": [true], "title": "Incorporando administrado repositorios de informaci\u00f3n para generar documentaci\u00f3n on-demand", "speakers": "Todd Waits", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:00:00", "duration": 30, "tags": ["process", "teams", "knowledge", "management", "documentation", "DevOps", "automation", "workflow"]}, "200": {"id": 200, "abstracts": ["This presentation introduces Flowy, a library for building and running distributed, asynchronous workflows built on top of different backends (such as Amazon\u2019s SWF). Flowy deals away with the spaghetti code that often crops up from orchestrating complex workflows. It is ideal for applications that do multi-phased batch processing, media encoding, long-running tasks, and/or background processing.\r\n\r\nWe'll start by discussing Flowy's unique execution model and see how different execution topologies can be implemented on top of it. During the talk we'll run and visualize workflows using a local backend. We'll then take a look at what it takes to scale beyond a single machine by using an external service like SWF."], "have_tickets": [true], "title": "Distributed Workflows with Flowy", "speakers": "Sever Banesiu", "track_title": "Barria2 Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["SWF", "workflow", "AWS", "distributed-computing"]}, "316": {"id": 316, "abstracts": ["At some previous EuroPythons, I have taken advantage of people, while eating their food at the conference dinner, to extract money. But don't worry, it's all been in a good cause: in aid of the [Python Software Foundation][1], which defends the intellectual property of the Python language, and supports Python conferences. We are well represented in the list of the [top PSF donors][2]:\r\n\r\n- 53. EuroPython 2013 Sponsored Massage\r\n- 278. EuroPython 2012 Sponsored Massage\r\n- 499. EuroPython 2011 Sponsored Massage\r\n- 572. EuroPython 2010 Sponsored Massage\r\n- 1331. EuroPython Conference Dinner (sponsored massage)\r\n\r\nIn the early days, I could reasonably visit most tables, offering a shoulder massage in return for a donation. But now, there are too many diners, and not enough hands to do this on my own! **_I need lots of help_**:\r\n\r\n - Doing neck and shoulder massage\r\n - Collecting money in a wine bucket\r\n - Counting and bagging the money\r\n - Exchanging multiple currencies and getting it into the PSF account\r\n - Feeling good that you're doing something for the Python community\r\n\r\n**What do you need to join in?** For everything apart from the massage, common sense, honesty and a sense of humour! Given these, I will be running a short massage workshop. Learn how to relax your own neck and shoulders, with fewer headaches, and less stress from hours spent crouching over a laptop. Then find out the essentials of massaging someone else's neck, shoulders and back for three to four minutes. Become a more valuable member of your work team back home. Help others to relax!\r\n\r\n### Requirements:\r\n\r\n1. Please attend the workshop only if you are actually coming to the conference dinner.\r\n1. You don't need to have particularly strong thumbs and fingers (elbows make a good substitute). But you do need to be not afraid of touching people. Massage is not tickling!\r\n1. Lack of embarrassment about asking for money. More people will pay not to have a massage, than to be massaged -- and that's OK!\r\n1. Join in!\r\n\r\nIf you'd rather not give a massage to diners/donors, no problem: there are lots of other ways to help. But at least you need to join fully in the workshop, so that you experience something of what we'll be asking money for. **A workshop means no onlookers -- all participants!**\r\n\r\n [1]: https://www.python.org/psf/\r\n [2]: http://legacy.python.org/psf/donations/\r\n", "", ""], "have_tickets": [true], "title": "Sponsored massage training, in aid of the Python Software Foundation", "speakers": "Rob Collins", "track_title": "Exhibition Hall / Helpdesk ", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:30:00", "duration": 45, "tags": ["PSF", "massage", "relax", "REST"]}, "170": {"id": 170, "abstracts": ["Devpi is an open source PyPi-compatible package server. Its versatile features make it the Swiss Army knife of Python package and release management, enabling anyone to shape a custom release workflow.\r\n\r\nIn this talk, I will detail how we use our company-wide Devpi installation in order to share a large set of packages across teams, deploy binary packages to our application servers, and mix and mash open source packages with our own. With Devpi being a critical part of our release and deployment infrastructure, I will also cover our high-availability setup and how we perform major version updates with minimal downtime.\r\n\r\nWhile this talk is not meant to be an exhaustive introduction of all available Devpi features, it can offer insights on how Devpi can be used at a larger scale.", "", ""], "have_tickets": [true], "title": "Release Management with Devpi", "speakers": "Stephan Erb", "track_title": "Barria1 Room", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:00:00", "duration": 30, "tags": ["case study", "deployment", "packaging", "Devpi"]}, "48": {"id": 48, "abstracts": ["Trying to find a good place to eat has become much easier and democratic with online reviews, but on the other hand, that creates new problems. Can you trust that 5 star review of fast food chain as much as the 1 star of a fancy restaurant because \"Toast arrived far too early, and too thin\"?\r\n\r\nWe all like enjoy things differently. Starting of on the assumption that the \"best pizza\" is not the same for everyone. Can we group users into people that has similar tastes? Can we identify reviews and restaurants to make sense of it? Can that lead us to a better way to find restaurants that you like?\r\n\r\nUsing some data handling techniques I walk you through my process and results that I've got from that idea. There are no requisites for this talk except basic python and math knowledge (matrices exist)\r\n\r\n "], "have_tickets": [true], "title": "Yak shaving a good place to eat using non negative matrix factorization", "speakers": "Adriano Petrich", "track_title": "Barria1 Room", "timerange": "2015-07-23 15:45:00, 2015-07-23 16:15:00", "duration": 30, "tags": ["visualization", "fun", "data-science"]}, "204": {"id": 204, "abstracts": ["There is a lot buzz about the Internet of things and how it's going to be the next big thing in computing. Python can power \"things\" and is used extensively in network applications, however there isn't much information out there about where Python can be used to build end-to-end IoT products.\r\n\r\nGoals :\r\nTo put into perspective the usefulness of Python in building IoT products.\r\nSpread awareness on possibilities of using Python on embedded hardware."], "have_tickets": [true], "title": "Python & Internet of Things", "speakers": "Ravi Vagadia", "track_title": "A2 Room", "timerange": "2015-07-20 15:45:00, 2015-07-20 16:15:00", "duration": 30, "tags": ["wearables", "BlE", "IoT", "distributed-computing"]}, "349": {"id": 349, "abstracts": ["Python is a fantastic language for writing web scrapers. There is a large ecosystem of useful projects and a great developer community. However, it can be confusing once you go beyond the simpler scrapers typically covered in tutorials.\r\n\r\nIn this talk, we will explore some common real-world scraping tasks. You will learn best practises and get a deeper understanding of what tools and techniques can be used.\r\n\r\nTopics covered will include:\r\n- Crawling - single pages, websites, focussed crawlers, etc.\r\n- Data extraction - techniques for \u201cscraping\u201d data from from web pages (e.g. regular expressions, xpath, machine learning).\r\n- Deployment - how to run and maintain different kinds of web scrapers\r\n- Real world examples\r\n", "", ""], "have_tickets": [true], "title": "Advanced Web Scraping", "speakers": "Shane Evans", "track_title": "Google Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["scrapy", "scraping"]}, "289": {"id": 289, "abstracts": ["This case study show how to start from a simple distance search on elasticsearch and haystack and implement a production ready search like airbnb. \r\nThe talk will explain decay functions works with the different curves (linear, exponential, gauss) and how to send them with query scores to elasticsearch. With that you will be able to mix the distance, the price, the user activity, the number of picture and whatever you want. \r\n\r\n\r\nAdditionally I will show how to write a custom ElasticsearchSearchQuery and ElasticsearchSearchBackend because this is not yet supported by haybtacksearch.\r\n\r\nAll the code will be available on github soon\r\n\r\n"], "have_tickets": [true], "title": "From basic distance search to a complex multi criteria search", "speakers": "Antonin Lacombe", "track_title": "A2 Room", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:00:00", "duration": 30, "tags": ["web", "haystacksearch", "django", "elasticsearch"]}, "122": {"id": 122, "abstracts": ["Software development is all about writing code that delivers additional value to a customer. Following the agile and lean approach this value created by code changes should be continuously delivered as fast, as early and as often as possible without any compromise on the quality. \r\nRemarkably, there is a huge gap between the development of the application code and the reliable and scalable operation of the application. As an example, most of the tutorials about web development with Flask or Django end by starting a local \u201cdummy\u201d server, missing out all the steps needed for production ready operation of the web service. Furthermore, as there is no \u201crocket science\u201d in-between, many proposals to bridge that gap from both sides, operations and developers start with sentences like: \u201cyou just have to...\u201d, a clear indication that it will cause problems later on and also a symptom of a cultural gap between developers and operations staff.\r\nIn this talk I will go through the complete delivery pipeline from application development to the industrial grade operation, clearly biased towards the \u201cDevOps\u201d mindset. Instead of presenting a sophisticated enterprise solution, I will outline the necessary building blocks for continuous delivery and fill them up with simple but working poor man's solutions, so that it is equally useful for professional and non-professional developers and operations engineers. After the talk you will know how to build such a continuous delivery pipeline with open-source tools like \u201cAnsible\u201d, \u201cDevpi\u201d and \u201cJenkins\u201d and I will share some of my day-to-day experiences with automation in general. Although many of the concepts are language agnostic I will focus on the ins and outs in a python universe and outline the pythonic way of \u201cget this thing running\u201d.\r\n"], "have_tickets": [true], "title": "A Pythonic Approach to Continuous Delivery", "speakers": "Sebastian Neubauer", "track_title": "A2 Room", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["Operations", "ApplicationLifecycle", "ConfigurationManagement", "Devpi", "ContinuousDelivery", "Jenkins", "DevOps", "ansible"]}, "324": {"id": 324, "abstracts": ["Do you know what happens every time you use the **@** symbol in Python?\r\n\r\nIn this talk we will see the magic behind the _syntactic sugar_ of the decorators. To understand how they internally work we will see in detail Python's **scopes**, **namespaces** and **closures**, and finally we will manually apply our own handcrafted decorator.\r\n\r\nThis talk is an improved version (in English) of the talk I delivered at PyConES 2013 (the feedback was pretty positive): [https://www.youtube.com/watch?v=d9-yTnJgcg4 ][1]\r\n\r\nLevel:\r\nIntermediate. Attendees must have previous knowledge of Python and should be somehow familiar with the **'@'** notation to decorate a function.\r\n\r\n [1]: https://www.youtube.com/watch?v=d9-yTnJgcg4\r\n"], "have_tickets": [true], "title": "Decorators demystified", "speakers": "Pablo Enfedaque", "track_title": "A2 Room", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["namespaces", "scopes", "decorators", "closures"]}, "230": {"id": 230, "abstracts": ["OpenCV Python bindings provide several ready to use tools for camera calibration, image recognition and camera position estimation. This talk will show how to recognize a picture, from a library of known paintings, and compute the camera position with respect to the recognized picture using OpenCV and numpy. This is applied to a tourist guide application for Google Glass through the recognition of the paintings exposed in the museum.\r\n"], "have_tickets": [true], "title": "Image recognition and camera positioning with OpenCV. A tourist guide application.", "speakers": "Francesco Nazzaro", "track_title": "Barria1 Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:00:00", "duration": 30, "tags": ["python", "Google Glass", "ipython notebook", "image recognition", "numpy", "OpenCV"]}, "23": {"id": 23, "abstracts": ["In this talk I will describe how to use Apache Spark (PySpark) with some data from the World of Warcraft API from an iPython notebook. Spark is interesting because it speeds up iterative processes on your hadoop cluster as well as your local machine. \r\n\r\nI will give basic benchmarks (comparing it to numpy/pandas/scikit), explain the architecture/performance behind the technology and will give a live demo on how I used Spark to analyse an interesting dataset. I'll explain why you might want to use Spark and I'll also go in and explain when you don't want to use it. \r\n\r\nThe dataset I will be using is a 22Gb json blob containing auction house data from all world of warcraft servers over a period of time. The goal of the analysis will be to determine when and if basic economics still applies in a massively online game. \r\n\r\nI will assume that the everyone knows what the ipython notebook is and I will assume a basic knowledge of numpy/pandas but nothing fancy. The dataset has been chosen such that people who are less interested in Spark can still enjoy the analysis part of the talk. If you know very little about data science but if you love video games then you should like this talk.", "", ""], "have_tickets": [true], "title": "PySpark and Warcraft Data", "speakers": "vincent warmerdam", "track_title": "A2 Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["data-science", "machine-learning", "bigdata", "analytics", "pandas", "numpy"]}, "59": {"id": 59, "abstracts": ["The author shows how to use the [SleekXMPP][1] library in order to write a small chatbot that connects to Google Hangouts and reminds you or someone else to take medication for instance. The secure and recommended OAuth2 protocol is used to authorize the bot application in the [Google Developers Console][2] in order to access the Google+ Hangouts API. The author will elaborate then on how to use an event-driven library to write a bot that sends scheduled messages, waits for a proper reply and repeats the question if need be. Thereby, a primer on event-driven architectures will be given.\r\n\r\n [1]: http://sleekxmpp.readthedocs.org/\r\n [2]: https://console.developers.google.com/\r\n"], "have_tickets": [true], "title": "\"It's about time to take your medication!\" or how to write a friendly reminder bot ;-)", "speakers": "Florian Wilhelm", "track_title": "Barria2 Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["automation", "xmpp", "oauth2", "bot", "network", "hangouts"]}, "318": {"id": 318, "abstracts": ["Odoo is used by 2 millions of users, although relatively unknown in the python community, it has a vibrant community and is one of the most active python open source project.\r\n\r\nI will present you the Odoo framework and how it can help to be more productive when building web based business apps. I will highlight its advantages compared to more popular framework such as django.", "", ""], "have_tickets": [true], "title": "Odoo the underdog python killer app. A python framework for web based business apps.", "speakers": "Antony Lesuisse", "track_title": "Google Room", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:15:00", "duration": 45, "tags": ["werkzeug", "HTTP.", "python", "javascript", "postgresql", "wsgi", "web", "django"]}, "213": {"id": 213, "abstracts": ["Have you ever developed a nice, well-working python program on one environment, only to have it blow up with exceptions and tracebacks when you run it on a different environment? Have no fear! This talk will show you how to write and maintain python code that is compatible across environments that may differ by python versions and/or operating systems.\r\n\r\nTechniques and tips will be drawn from lessons and experiences gained from making the AWS CLI, a python-based command line tool to manage AWS resources, compatible across a wide range of environments. In a case-study-like format, real-life compatibility issues encountered while developing the AWS CLI will be presented along with how we resolved each of them. These real-life examples will encompass, but will not be limited to, the following topics:\r\n\r\n\u2022 How to use functions and classes that may differ across python versions and/or operating systems\r\n\r\n\u2022 How to handle version-specific bugs\r\n\r\n\u2022 How to handle strings, bytes, and Unicode across python versions\r\n\r\n\u2022 How to handle differing locale settings\r\n\r\n\u2022 How to handle file operations across operating systems\r\n\r\n\u2022 How and when to vendor dependencies\r\n\r\n\u2022 How to write tests that are compatible across python versions and operating systems\r\n\r\n\u2022 How to create a testing environment that monitors compatibility of code across various environments\r\n\r\nUltimately, the goal of these examples is introduce to you some effective, real-world programming practices to overcome your current or next compatibility issue.\r\n"], "have_tickets": [true], "title": "It Works on My Machine: Writing Python Code for Any Environment", "speakers": "Kyle Knapp", "track_title": "Barria2 Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:00:00", "duration": 30, "tags": ["CLI", "packaging", "python2", "python3", "Best Practice", "Development", "Testing"]}, "294": {"id": 294, "abstracts": ["Docker has introduced a new model of deployment solving the infamous \"Deployment Matrix from Hell\" by using containers.\r\nBut this also brought the spotlight back on the Operating System side, and following the trails of CoreOS and Atomic Host, a new generation of Cloud Servers are born by using containers instead of traditional RPM/DPKG/tarball/whaterver packages model to deploy services. CoreOS/Atomic Host/Snappy Ubuntu and now VMWare Photon also provides transactional image-based OS focusing on security and built-in cluster management.\r\n\r\nDuring this talk, we'll present these next-gen OS, and their components and how they fit in. ", "", ""], "have_tickets": [true], "title": "The Lightweight Cloud Servers War Begins", "speakers": "Haikel Guemar", "track_title": "Barria1 Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["Photon", "Snappy", "atomic", "cloud", "Virtualization", "community", "docker", "infrastructure", "Best Practice", "CoreOS", "rocket"]}, "302": {"id": 302, "abstracts": ["The MongoDB aggregation framework provides a means to calculate aggregated values without having to use map-reduce. While map-reduce is powerful, it is often more difficult than necessary for many simple aggregation tasks, such as totaling or averaging field values.\r\n\r\nSee how to use the build-in data-aggregation-pipelines for averages, summation, grouping, reshaping. See how to work with documents, sub-documents, grouping by year, month, day, etc. \r\n\r\nThis talk will give many (live) examples how to make the most of your data with pymongo with a few lines of code.", "", ""], "have_tickets": [true], "title": "Data Analysis and Map-Reduce with mongoDB and pymongo", "speakers": "Alexander Hendorf", "track_title": "Google Room", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["pymongo", "bigdata", "python", "mongodb", "analytics"]}, "214": {"id": 214, "abstracts": ["A few months ago, Guido unfolded PEP 484, which was highlighted at PyCon 2015 as a keynote presentation. This proposal would introduce type hints for Python 3.5. While the debate is still roaring and without taking a side, I believe that there is much to learn from static type-checking systems.\r\n\r\nThe purpose of this talk is to introduce ways that could be used to fully take over the amazing power that comes with static types, inside a dynamic type language such as Python. The talk will go over what exactly a static type system is, and what kind of problem it tries to solve. We will also review Guido's proposal of type hinting, and what it could mean to you. Finally, I will present a few libraries that are available, such as Hypothesis or various QuickCheck-inspired library that tries to build more robust tests, how they achieve it and their limitations. Throughout the talk, a lot of examples will used to fully illustrate the ideas being explained. \r\n\r\nAt the end of this talk, you should have a better understanding of the wonderful world of type systems, and what it really means to you. It should help you decide wether using type hints will be helpful to you and also if an external library trying to fuzz your tests has its place inside your project "], "have_tickets": [true], "title": "Static type-checking is dead, long live static type-checking in Python!", "speakers": "Jean-Philippe Caissy", "track_title": "Google Room", "timerange": "2015-07-24 15:45:00, 2015-07-24 16:15:00", "duration": 30, "tags": ["python3", "type-hinting", "library", "static-analysis", "Testing"]}, "6": {"id": 6, "abstracts": ["Microservices are a fresh architecture trend. In this talk I will explain what a microservice is. I will answer WHY and HOW to build microservices using tooling from Python ecosystem. We will take a look at components that power microservices: web frameworks, task queues, databases, reporting & monitoring tools and also integration technologies.\r\n\r\nI will start from design & planning, go through implementation and deployment process and briefly cover internal communcation and MDM (master data management).\r\n\r\nFinally, I will present a brief overview of patterns and anti-patterns of microservice architectures, as well as cover few use cases and success stories.\r\n\r\nPrerequisites: be familiarized with at least one python web framework and have a general understanding of web stack."], "have_tickets": [true], "title": "Why should You consider microservices ?", "speakers": "Jacek Nosal", "track_title": "Barria2 Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 15:45:00", "duration": 30, "tags": ["HTTP.", "DevOps", "automation", "docker", "ansible", "Tooling"]}, "239": {"id": 239, "abstracts": ["Un proyecto hecho en Django durante dos a\u00f1os da para muchas an\u00e9cdotas y mucho aprendizaje. Esta charla es un repaso por las decisiones sobre lo humano y lo t\u00e9cnico que fuimos tomando durante el desarrollo del proyecto.\r\n\r\nSe\u00f1alar\u00e9 las buenas decisiones que tomamos en el equipo, y tambi\u00e9n las que no nos salieron bien y nos hicieron aprender por las malas. \r\n\r\nTanto las buenas como las malas decisiones nos ense\u00f1aron much\u00edsimo y aqu\u00ed las compilo junto con unos cuantos tips que pueden divertir y, ojal\u00e1, inspirar a la audiencia, especialmente a aquellas personas que se enfrentan por primera vez a un proyecto grande.\r\n", "", ""], "have_tickets": [true], "title": "Lecciones aprendidas en un proyecto grande de Django", "speakers": "Yamila Moreno", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["postgresql", "python", "django", "open-source", "Beginners"]}, "90": {"id": 90, "abstracts": ["At the beginning of this year I started working at Lyst and I was tasked with helping to replace their old and outdated web API with a modern RESTful replacement. \r\n\t\r\nAlong the way we encountered some interesting design decisions and now I\u2019m going to share what we learned about building a real RESTful API with Django and Django REST framework.\t\r\n\r\nI've been talking about how to build great RESTful APIs for the past year at various Python and Django conferences in Europe. Now I'd like to take some real world experiences from creating Lyst's new web API and share what I've learned along the way.\r\n"], "have_tickets": [true], "title": "What it's really like building RESTful APIs with Django", "speakers": "Paul Hallett", "track_title": "Google Room", "timerange": "2015-07-23 15:15:00, 2015-07-23 15:45:00", "duration": 30, "tags": ["HTTP.", "django", "api", "REST"]}, "184": {"id": 184, "abstracts": ["One of the problems programmers are most often faced with is the parsing and validation of command-line arguments. If you're new to Python or programming in general, you might start by parsing sys.argv. Or perhaps you might've already come across standard library solutions such as getopt, optparse or argparse in the official documentation. \r\nWhile these modules are probably preferable to parsing sys.argv yourself, you might wonder if there are more satisfactory solutions outside of the standard library. Well, yes there are!\r\n\r\nThis talk will give you an overview of some popular alternatives to the standard library solutions (e.g. click, docopt and cliff), explain their basic concepts and differences and show how you can test your CLIs."], "have_tickets": [true], "title": "Building nice command line interfaces - a look beyond the stdlib", "speakers": "Patrick M\u00fchlbauer", "track_title": "Google Room", "timerange": "2015-07-22 15:45:00, 2015-07-22 16:15:00", "duration": 30, "tags": ["docopt", "cliff", "Click", "CLI"]}, "71": {"id": 71, "abstracts": ["with modern_peripherals: \r\n Python and Flask\r\n\r\nAuto-scrolling sites, glance-following ads, and gesture friendly web pages are coming!\r\n\r\nOver the last few years three products emerged that enable interaction with computer in a new way: Myo Armband, Leap Motion Controller and EyeTribe. The Myo Armband is a device that uses the electrical activity in your muscles to wirelessly control your computer, phone, and tablet, which is especially useful when your hands are \"tied\" or dirty. This device will be used to navigate through the presentation. The Leap Motion Controller tracks both hands in front of the screen. From a web developer\u2019s perspective, both devices allows us to use gestures, previously restricted to touch devices, on desktops. EyeTribe is an affordable eye-tracking device. \r\n\r\nThe talk will briefly cover setting up SDKs and python wrappers, and then focus on possible uses in daily life, business and, of course, web app development. Code examples will be included. In addition, the trade-offs between processing this new type of input data in the client versus processing input on the server will be discussed.\r\n"], "have_tickets": [true], "title": "with modern_peripherals: Python and Flask", "speakers": "Piotr Dyba", "track_title": "A2 Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["Beginners", "python", "technologies", "flask", "web", "python3", "socket", "communication"]}, "222": {"id": 222, "abstracts": ["Have you ever worried that your tests aren't as good because they're running against a fake or mock instead of the real thing?\r\nVerified fakes solve this problem.\r\nVerified fakes allow for simplified testing using fakes while still providing the assurance that code tested using a fake implementation will behave the same way when used with a real implementation.\r\n\r\nThe talk will begin with a case-study, demonstrating what it means to write a \"verified fake\" implementation of a public API.\r\nI will show how to write tests that verify a fake implementation of a well defined API\r\nand I will show how those same tests can be re-used to verify and test real implementations of the same API.", "Have you ever worried that your tests aren't as good because they're running against a fake or mock instead of the real thing?\r\nVerified fakes solve this problem.\r\nVerified fakes allow for simplified testing using fakes while still providing the assurance that code tested using a fake implementation will behave the same way when used with a real implementation.\r\n\r\nThe talk will begin with a case-study, demonstrating what it means to write a \"verified fake\" implementation of a public API.\r\nI will show how to write tests that verify a fake implementation of a well defined API\r\nand I will show how those same tests can be re-used to verify and test real implementations of the same API.\r\n\r\nThe talk will end with a proposal that more libraries should include verified fakes.\r\nI will show, with real-world examples, how verified fakes can be used by integrators\r\nand discuss how they are superior to ad-hoc, unverified, mocking.\r\n\r\nDuring the talk I will refer to various real world, Open Source examples. Including:\r\n\r\n* Flocker's Pluggable \"Block Device Backend\" [1]\r\n\r\n This API allows Flocker to manipulate file systems on OpenStack Cinder Blocks and AWS EBS devices.\r\n It also makes it easy for third parties to implement their own Flocker block device backends.\r\n\r\n* Eliot's Memory Logger - and its use in testing and verifying logged messages.\r\n* LibCloud's DummyNodeDriver - and its limitations.\r\n* Boto - as an example of a library that could benefit from a verified, introspectable fake.\r\n* Docker-py - as an example of a library for which we have written a verified fake.\r\n\r\nThere will be at least 5 minutes for discussion at the end of the talk.\r\n\r\n[1] Flocker is an Open Source Docker orchestration system written in Python by ClusterHQ\r\n", ""], "have_tickets": [false], "title": "Faking It - The Art of Testing Using Verified Fakes", "speakers": "Richard Wall", "track_title": "A2 Room", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:00:00", "duration": 30, "tags": ["tdd", "AWS", "OpenStack", "docker", "api", "cloud", "Best Practice", "Testing", "linux"]}, "81": {"id": 81, "abstracts": ["Creating a large-scale event processing system can be a daunting task. Especially if you want it \u201cstupid simple\u201d and wrapped around each client\u2019s needs. We built a straightforward solution for this using Python 3 and other open-source tools.\r\n\r\nMain issues to solve for a system that needs to be both performant and scalable:\r\n\r\n - handling a throughput of 1 million events per minute in a 4 cores AWS instance;\r\n\r\n - following the principle of least astonishment;\r\n\r\n - data aggregation and how Python's standard libraries and data structures can help;\r\n\r\n - failsafe and profiling mechanisms that can be applied to any Linux service in production;\r\n\r\n - addressing unexpected behaviors of Python\u2019s Standard Library; like reading from a file while it is written;\r\n\r\n - tackling a sudden spectacular cloud instance failure;\r\n\r\nThe alternative to this system would be to adopt existing technology stacks that might be too general, add more complexity, bloat, costs and which need extensive work to solve your specific problem. Moreover, our approach resulted in over 85% drop on hardware utilisation.\r\n\r\n[Context: Production Software \u2013 II (where good coding reduces the client\u2019s bill)][1]\r\n\r\n [1]: https://eastvisionsystems.com/production-software-part-ii-good-coding-reduces-clients-bill/\r\n", "", ""], "have_tickets": [true], "title": "Use Python to process 12mil events per minute and still keep it simple (Talk)", "speakers": "Teodor Dima", "track_title": "Barria1 Room", "timerange": "2015-07-21 15:45:00, 2015-07-21 16:15:00", "duration": 30, "tags": ["bigdata", "performance", "architecture", "Development"]}, "267": {"id": 267, "abstracts": ["As an engineer working on any web stack, you may have heard about Blocking and Non-Blocking IO. You may as well have used any framework or library that supports Non-Blocking IO. After all, they are very useful as you don't want to block execution of other tasks while one task is waiting to complete a network call to another service (like HTTP call to an API or may be a TCP call to your database). Non-Blocking IO while doing tasks and not wait for IO. This also helps us handle a lot many connections than we possibly could with Blocking IO. Python supports Non-Blocking IO, but we always use some existing 3rd party library that hides all the gory details and makes it all look like black magic to the uninitiated. But there is nothing like black magic.\r\n\r\nThis presentation will be an introductory talk focused at explaining how Non-Blocking IO works, which is the basis of libraries like Gevent, Tornado and Twisted. We will learn about how Non-Blocking IO can be implemented using the most basic modules that form the base for the above mentioned libraries. Hopefully after this talk, Non-Blocking IO will not be an unsolved mystery for you anymore."], "have_tickets": [false], "title": "Understanding Non-blocking IO", "speakers": "Vaidik Kapoor", "track_title": "Google Room", "timerange": "2015-07-21 15:45:00, 2015-07-21 16:15:00", "duration": 30, "tags": ["web", "asyncronous", "networking"]}, "4": {"id": 4, "abstracts": ["Knowing that your application is up and running is great. However in order to make informed decisions about the future, you also need to know in what state your application currently is and how its state is developing over time.\r\n\r\nThis talk combines two topics that are usually discussed separately. However I do believe that they have a lot of overlap and ultimately a similar goal: giving you vital insights about your system in production.\r\n\r\nWe'll have a look at their commonalities, differences, popular tools, and how to apply everything in your own systems while avoiding some common pitfalls.", "", ""], "have_tickets": [true], "title": "Beyond grep: Practical Logging and Metrics", "speakers": "Hynek Schlawack", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["logging", "metrics", "errors", "DevOps"]}, "261": {"id": 261, "abstracts": ["Elasticsearch has many use cases, some of them fairly obvious and widely used, like plain searching through documents or analytics. In this talk I would like to go through some of the more advanced scenarios we have seen in the wild. Some examples of what we will cover:\r\n\r\nTrend detection - how you can use the aggregation framework to go beyond simple \"counting\" and make use of the full-text properties of Elasticsearch.\r\n\r\nPercolator - percolator is reversed search and many people use it as such to drive alerts or \"stored search\" functionality for their website, let's look at how we can use it to detect languages, geo locations or drive live search.\r\n\r\nIf we end up with some time to spare we can explore some other ideas about how we can utilize the features of a search engine to drive non-trivial data analysis including Geo-enabled search with relevancy.\r\n", "", ""], "have_tickets": [true], "title": "Beyond the basics with Elasticsearch", "speakers": "Honza Kr\u00e1l", "track_title": "Google Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:15:00", "duration": 45, "tags": ["search", "bigdata", "open-source", "elasticsearch", "analytics"]}, "189": {"id": 189, "abstracts": ["Continuous Integration is a software development practice where members of a team integrate their work frequently, leading to multiple integrations per day. Each integration is verified by an automated process (including tests) to detect integration errors as quickly as possible.\r\n\r\nThis talk will introduce the basic principles for building an effective Continuous Integration system for Python-based projects. It will present the lessons learned from building a Jenkins-based CI system for an Open Source project with a distributed team of more than 340 core developers that ranks among the top 2% of all open source projects worldwide (Plone). "], "have_tickets": [true], "title": "The Butler and the Snake - Continuous Integration for Python", "speakers": "Timo Stollenwerk", "track_title": "Barria2 Room", "timerange": "2015-07-20 15:45:00, 2015-07-20 16:15:00", "duration": 30, "tags": ["python", "ContinuousIntegration", "tdd", "ContinuousDelivery", "Testing"]}, "314": {"id": 314, "abstracts": ["With the Raspberry Pi, it's easy to do physical computing directly from Python code - rather than usual embedded hardware engineering in C or Assembler. \r\n\r\nIn this talk I'll show examples of physical computing projects that use Python on Raspberry Pi and demonstrate the sort of code used in such projects.\r\n\r\nPhysical computing with Python is very popular in education - as it's so engaging, and more interesting than printing to the screen.\r\n\r\nThis will be an informative session with learning possibilities to give those new to physical computing a change to get started.", "", ""], "have_tickets": [true], "title": "Physical computing with Python and Raspberry Pi", "speakers": "Ben Nuttall", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["education", "raspberrypi"]}, "216": {"id": 216, "abstracts": ["As Python programmers we're used to program without taking care about allocating\r\nmemory for our objects and later on freeing them, Python garbage collector\r\ntakes care of this task automatically for us.\r\n\r\nGarbage collection is one of the most challenging topics in computer science,\r\nthere are a lot of research around the topic and different ways to tackle\r\nthe problem.\r\n\r\nKnowing how our language does this process give us a better understanding\r\nof underlying interpreter and allow us to know why problems like cycles\r\ncan happen in CPython interpreters.\r\n\r\nSo, this talk aims to be and introduction to the topic and a walkaround\r\nthrough different approaches followed in CPython and PyPy:\r\n\r\n* Generational Reference counting with cycles detector on CPython.\r\n* Incremental version of the MiniMark GC on PyPy.\r\n"], "have_tickets": [true], "title": "Knowing your garbage collector", "speakers": "Francisco Fern\u00e1ndez Casta\u00f1o", "track_title": "Barria2 Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["collection", "counting", "reference", "garbage", "cpython", "PyPy"]}, "14": {"id": 14, "abstracts": ["The Python compiler Nuitka has evolved from an absurdly compatible Python to C++ translator into a **statically optimizing Python compiler**. The mere peephole optimization is now accompanied by full function/module level optimization, with more to come, and only increased compatibility.\r\n\r\nWitness local and module **variable value propagation**, **function in-lining** with suitable code, and graceful degradation with code that uses the full Python power. (This is considered kind of the break through for Nuitka, to be finished for EP.) No compromises need to be made, full language support, all modules work, including extension modules, e.g. PyQt just works.\r\n\r\nAlso new is a plugin framework that allows the user to provide workarounds for the standalone mode (create self contained distributions), do his own type hinting to Nuitka based on e.g. coding conventions, provide his own optimization based on specific knowledge.\r\n\r\nUltimately, Nuitka is intended to grow the Python base into fields, where performance is an issue, it will need your help. Scientific Python could largely benefit from future Nuitka. Join us now.\r\n", "", ""], "have_tickets": [true], "title": "The Python Compiler", "speakers": "Kay Hayen", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["FOSS", "python", "performance", "scipy", "numpy"]}, "139": {"id": 139, "abstracts": [" **Stop doing the same thing but expecting different results**\r\n\r\nAs developers we put considerable effort into optimisation. We are always tinkering, trying to make things better, and striving to remove antipatterns from our code and our development processes. \r\n\r\nYet for some reason we have not been as good at applying this spirit of optimisation to the problem of increasing diversity, even though most people these days agree that, like good tests, agile methodologies, and virtual environments, diversity is a \"good thing\".\r\n\r\nMy position is that just as there is no single easy way to write good code there is no single easy way to increasing diversity. There are, however, several things that companies and organisations do which actually work against diversity. This talk will explore these antipatterns for diversity, including uncritical belief in meritocracy, lack of understanding of the realities of marginalisation, null processes, misunderstanding of \"culture fit\", and an unwillingness to change, as well as some ways that teams, companies, and organisations might work to combat them.\r\n\r\n"], "have_tickets": [true], "title": "Antipatterns for Diversity", "speakers": "Naomi Ceder", "track_title": "A2 Room", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["diversity", "inclusion", "Best Practice", "community"]}, "128": {"id": 128, "abstracts": ["The asyncio module introduced in Python 3.4 is a game-changer for I/O management and event-driven network programming in Python. Aiming to be a lower-level implementation of an asynchronous event loop, it intends that higher level frameworks like Tornado, Twisted or Gevent will build on top of it, taking advantage of the shared interface for writing concurrent event-driven code across different Python frameworks.\r\n\r\nThis talk connects theory with practice, presenting how Tornado can run in the asyncio event loop and take advantage of the subgenerator delegation syntax (yield from) to provide a high degree of concurrency while keeping the simplicity of sequential code. It explains the concept of coroutines, futures and ioloop, exposing Python 3 code for sample web tasks. The talk completes with a basic demo of running this code on Tornado, comparing its syntax and performance with popular asynchronous frameworks from other languages."], "have_tickets": [true], "title": "Better asynchronous code with Tornado and Python 3", "speakers": "Anton Caceres", "track_title": "Barria1 Room", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["web", "python3", "tornado", "asyncio"]}, "98": {"id": 98, "abstracts": ["One day our software will go in production, and so shortly we will pay dearly for our youthful mistakes. Without regression tests, we will be in deep trouble. If we have regression tests, but we did not have performed TDD, we should probably increase the effort in bug fixing and\r\nmaintenance, since we do not have enough code coverage and our tests come out complex.\r\n\r\nBy retracing the author youthful mistakes, we will see a complete development workflow, from the user story to the low-level tests, in order to highlight the differences between functional, integration and unit tests, the best practices, and the lessons learned by the author during the development of the [Sardinia Radio Telescope][1] control software.\r\n\r\n [1]: https://www.youtube.com/watch?v=zCL_tSMqsRg\r\n", "", ""], "have_tickets": [true], "title": "Lessons learned about testing and TDD", "speakers": "Marco Buttu", "track_title": "A2 Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["unit-te", "tdd", "Testing"]}, "238": {"id": 238, "abstracts": ["A Django project, developed for 2 years is a valuable source of anecdotes and wisdom. This talk is a review on the decissions, about human and tech, that my team took during the project. I'll point out the good decissions as well as the bad ones, those which made us learn \"the hard way\".\r\n\r\nBoth good and bad decissions taught us a lot, and here I compile them, together with a handful of tips which can amuse and, hopefully, inspire the audience, specially those who are facing for the first time a big project."], "have_tickets": [true], "title": "Learnt lessons in a big Django Project", "speakers": "Yamila Moreno", "track_title": "Barria1 Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 15:45:00", "duration": 30, "tags": ["postgresql", "python", "django", "open-source", "Beginners"]}, "169": {"id": 169, "abstracts": ["In this talk, people will get introduced to python threading and multiprocessing packages. This talk will cover multiprocessing/threaded development best practices, problems occurs in development, things to know before multiprocessing/multi-threading. After this talk attendees will be able to develop multiprocessing/threaded applications. \r\n\r\nThis talk will cover threads, global interpreter lock, thread pool, processes, process pool, synchronization locks - Lock & RLock , semaphores, events, condition, timer, pipes, queue, shared memory. This talk will also cover best practices and problems in multiprocessing and threaded application development. \r\n"], "have_tickets": [true], "title": "Python Multithreading and Multiprocessing: Concurrency and Parallelism", "speakers": "Hitul Mistry", "track_title": "Barria2 Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["concurrency", "multi-processing", "Parallelism", "multi-threading", "linux", "Best Practice"]}, "127": {"id": 127, "abstracts": ["Traditional Python profiling tools have limitations. Standard tools like **cProfile** and most all third party tools (like **Python Tools** plugin for Microsoft Visual Studio) suffer from common flaws. First, the profiling overhead is high (up to 50%). Second, the information provided is \u201cfunction-level\u201d i.e. the tool shows how much time was spent within a function, but not actionable \u201cline-level\u201d information to show which exact lines are _the bottleneck_ in a function. Adding \u201cline-level\u201d information to most tools causes the application to run even slower. Third, some tools require modification of the application source code to enable profiling thus disrupting development.\r\n\r\nThis talk presents an experimental Python profiler. It typically has less than 15% overhead, shows line-level information and does not require modification of application source code. Experiments using it resulted in performance gains of 2x and more. Of course results vary by application, but in a typical application there may be quick optimizations easily identified by this type of profiler.\r\n\r\nThe talk will briefly describe the basics of what, why and how to profile. The profiler\u2018s use and results will be shown in the presentation with examples based on real-life applications. Previous experience of working with profilers and trying to optimize an application is a plus, but not required, to gain a better appreciation of the work presented.", "", ""], "have_tickets": [true], "title": "Tuning Python applications can dramatically increase performance", "speakers": "Vasilij Litvinov", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["python", "visualization", "performance", "profiling", "metrics", "cpython", "Tooling", "Development"]}, "134": {"id": 134, "abstracts": ["Removing UneXploded Ordnance (UXO) from minefields at the end of a conflict is a very time-consuming and expensive operation. Advanced satellite image processing can detect changes and activities on the ground and represent them on a map that can be used by operators to classify more dangerous zones and safer areas, potentially reducing the time spent on field surveys.\r\n\r\nWe exploit space-borne radar Earth images together with thematic data for mapping activities on the ground using numpy, scipy and gdal. The Activity Map generation process to be shown will be implemented using IPython Notebook.", "", ""], "have_tickets": [true], "title": "Activity Map from space: supporting mine clearance with Python", "speakers": "Giuseppe Cammarota", "track_title": "A2 Room", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["visualization", "scipy", "ipython", "geodata", "numpy"]}, "11": {"id": 11, "abstracts": ["Python is an expressive general purpose programming language. Its syntax provides many ways to represent structure and minimise code repetition and boilerplate.\r\n\r\nBut Python not always expressible enough. Perhaps when you've built a complicated enough system with hard-to-express inter-relationships, the code required to construct or operate on it can become complicated, repetitive and unreadable. Or perhaps you have users unfamiliar with Python who need to understand or edit a system. In cases like these, stepping beyond the syntax and semantics of basic Python can be an advantage.\r\n\r\nDaniel will describe various ways you can implement your own Domain Specific Languages, languages perhaps completely unlike Python that can succinctly describe more complicated Python systems.\r\n\r\nThis talk will cover:\r\n\r\n* What and why of DSLs\r\n* Metaprogramming tricks\r\n* Writing simple parsers\r\n* The libraries PLY and PyParsing\r\n* Building tooling around your new DSLs"], "have_tickets": [true], "title": "The unabridged guide to Domain Specific Languages in Python", "speakers": "Daniel Pope", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 16:15:00", "duration": 60, "tags": ["python", "technologies", "Tooling"]}, "34": {"id": 34, "abstracts": ["Does your open source project need better documentation? Do you wish that new users could get started with your software more easily? Do you feel that your code contribution workflow isn't documented well enough, or that contributors are discouraged from documenting their code? How can you give your project docs the love they deserve?\r\n\r\nThis high-level talk aims to introduce the main principles of technical communication in the context of FOSS projects. It is intended for anyone who interacts with docs, whether your project is fresh off the dev environment or has been around since the dawn of Git. Topics include tone, style, process management, structure, and contribution workflow.", "", ""], "have_tickets": [true], "title": "FOSS DOCS 101 (keep it simple, present!)", "speakers": "Mikey Ariel", "track_title": "Google Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["FOSS", "documentation", "community", "open-source", "Sphinx", "communication", "Best Practice", "sphinxdocumentation"]}, "300": {"id": 300, "abstracts": ["NumPy and Pandas have revolutionized data processing and munging in the Python ecosystem. As data and systems grow more complex, moving and querying becomes more difficult. Python already has excellent tools for in-memory datasets, but we inevitably want to scale this processing and take advantage of additional hardware. This is where Blaze comes in handy by providing a uniform interface to a variety of technologies and abstractions for migrating and analyzing data. Supported backends include databases like Postgres or MongoDB, disk storage systems like PyTables, BColz, and HDF5, or distributed systems like Hadoop and Spark. \r\n\r\nThis talk will introduce the Blaze ecosystem, which includes: Blaze (data querying), Odo (data migration), Dask (task scheduler), DyND (dynamic, multidimensional arrays) and Datashape (data description).\r\n\r\nAttendees will get the most out of this talk if they are familiar with NumPy and Pandas, have intermediate Python programming skills, and/or experience with large datasets.", "NumPy and Pandas have revolutionized data processing and munging in the Python ecosystem. As data and systems grow more complex, moving and querying becomes more difficult. Python already has excellent tools for in-memory datasets, but we inevitably want to scale this processing and take advantage of additional hardware. This is where Blaze comes in handy by providing a uniform interface to a variety of technologies and abstractions for migrating and analyzing data. Supported backends include databases like Postgres or MongoDB, disk storage systems like PyTables, BColz, and HDF5, or distributed systems like Hadoop and Spark. \r\n\r\nThis talk will introduce the Blaze ecosystem, which includes:\r\n\r\n- Blaze (data querying): [http://blaze.pydata.org/en/latest/][1]\r\n\r\n- Odo (data migration): [http://odo.readthedocs.org/en/latest/][2]\r\n\r\n- Dask (task scheduler): [http://dask.pydata.org/en/latest/][3]\r\n\r\n- DyND (dynamic, multidimensional arrays): [https://github.com/libdynd/dynd-python][4]\r\n\r\n- Datashape (data description): [http://datashape.pydata.org/][5]\r\n\r\nAttendees will get the most out of this talk if they are familiar with NumPy and Pandas, have intermediate Python programming skills, and/or experience with large datasets.\r\n\r\n [1]: http://blaze.pydata.org/en/latest/\r\n [2]: http://odo.readthedocs.org/en/latest/\r\n [3]: http://dask.pydata.org/en/latest/\r\n [4]: https://github.com/libdynd/dynd-python\r\n [5]: http://datashape.pydata.org/\r\n", ""], "have_tickets": [true], "title": "Scale your data, not your process: Welcome to the Blaze ecosystem", "speakers": "Christine Doig", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:15:00", "duration": 45, "tags": ["Abstractions", "distributed-systems", "analytics", "bigdata", "dynd", "blaze", "odo", "spark", "dask", "open-source", "pydata", "datashape", "databases", "data", "numpy"]}, "278": {"id": 278, "abstracts": ["Do you know what your application did last night? Python logging can help you.\r\n\r\nThis talk you will show you how to implement a systematic logging approach without boilerplate code and how to set up the Python logging module for different needs in production systems. We will see how to work with log files and other logging endpoints. We will address the data protection concerns that come up when logging from application with personal information. We will also look at the performance implications of logging. We will then cover best practices - how to structure logging, what to include in a log message, and how to configure logging for different use cases.\r\n\r\nWe will use the Python standard logging module to implement logging. This talk is useful to beginners with some experience. An understanding of decorators is useful, but not required. Some experience in web programming is a plus."], "have_tickets": [true], "title": "A Deep Look at Logging", "speakers": "Stefan Baerisch", "track_title": "A2 Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 15:45:00", "duration": 30, "tags": ["web", "BestPractices", "logging"]}, "198": {"id": 198, "abstracts": ["The asyncio project was officially launched with the release of Python 3.4 in March 2014. The project was public before that under the name \"tulip\". asyncio is just a core network library, it requires third party library to be usable for common protocols. One year later, asyncio has a strong community writing libraries on top of it.\r\n\r\nThe most advanced library is aiohttp which includes a complete HTTP client but also a HTTP server. There are also libraries to access asynchronously the file system, resolve names with DNS, have variables local to tasks, read-write locks, etc. There are clients for AMQP, Asterisk, ElasticSearch, IRC, XMPP (Jabber), etc. (and even an IRC server!). There are asynchronous drivers for all common databases, and even for some ORMs. As expected, there are tons of new web frameworks based on asyncio. It's also possible to plug asyncio into Gtk, Qt, gevent, eventlet, gunicorn, tornado, etc.\r\n\r\nI will also discuss use cases of asyncio in production and benchmarks. Spoiler: asyncio is not slow.\r\n\r\nThe asyncio library also evolved to become more usable: it has a better documentation, is easier to debug and has a few new functions. There is also a port to Python 2: trollius.", "", ""], "have_tickets": [true], "title": "asyncio community, one year later", "speakers": "Victor Stinner", "track_title": "A2 Room", "timerange": "2015-07-22 15:45:00, 2015-07-22 16:15:00", "duration": 30, "tags": ["python3", "asyncio", "aiohttp", "networking"]}, "305": {"id": 305, "abstracts": ["The past few years, we have made large strides to welcome more diverse people into our community. You see better gender ratios in attendance numbers at Python conferences, the billed speakers, the amount of women-centric programs. We can see the benefits of outreach. But we're not done yet.\r\n\r\nWhile a lot of the Python community embraces the importance of being diverse, we haven't taken that mindset to our workplace. From recruiting, we still hear, \"sure, we wanted to recruit women, but we couldn't find them\" and \"we only focus on quality here, not gender!\" Within company cultures, we hear \"gender equality isn't a problem here!\" or \"women don't ask for a higher salary\" and to \"just lean in!\"\r\n\r\nThis talk will recount the diversity efforts of the past few years and quantify the effects on the Python community. But this talk will also address the not-so-low-hanging fruit; the deeper-rooted problems that still plague the community from inside where we work. And it will talk the audience through actionable items to improve one's work place that welcomes more diversity."], "have_tickets": [true], "title": "Diversity: We are not done yet", "speakers": "Lynn Root", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["social", "diversity", "equality", "community"]}, "77": {"id": 77, "abstracts": ["A d\u00eda de hoy usamos un enorme conjunto de bibliotecas y frameworks, adem\u00e1s los usamos con cierta libertad dentro de nuestro c\u00f3digo, y pasado el tiempo nos damos cuenta de que esa biblioteca, no cubre mis necesidades, o tiene alg\u00fan fallo, o no escala bien en proyectos m\u00e1s grandes... en resumen, hemos ca\u00eddo en una trampa. No se puede evitar caer en estas trampas, porque depende de nuestras necesidades y las bibliotecas que utilizamos, por lo tanto, solo podemos estar lo mejor preparados posibles para salir de ellas tan pronto como nos demos cuenta.\r\n\r\nComo soluci\u00f3n a esto, plantear\u00e9 varias v\u00edas (nada innovadoras, pero menos usadas de lo que deber\u00edan). Unit testing (TDD idealmente), arquitectura hexagonal, y algunas reglas b\u00e1sicas de clean code.", "", ""], "have_tickets": [true], "title": "Todo es una trampa", "speakers": "Jes\u00fas Espino", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["python", "architecture", "tdd", "cleancode", "unit-testing"]}, "236": {"id": 236, "abstracts": ["Using an SQL database offers a bunch of advantages; first of all its maturity and that it is understood by almost every software developer. But it has at least one main disadvantage. As the data is structured, if you want to modify the structure, for example on a long-running project, you need a migration and therefore almost for sure, a downtime.\r\n\r\nWhen you have to make a migration, to modify the structure of data for a small amount of records, it is so fast that it never gets problematic. But if you think to modify the structure of tables containing millions or billions of records, the time required to simply apply the structural change is problematic.\r\n\r\nHere are some changes we are working on at orderbird to go towards zero downtime migrations using some of the latest improvements of PostgreSQL 9.4, mainly logical replication and mixing in a little magic of some python scripting with psycopg."], "have_tickets": [false], "title": "Bringing PostgreSQL towards zero downtime migration with Python", "speakers": "Matthieu Rigal", "track_title": "A2 Room", "timerange": "2015-07-24 15:45:00, 2015-07-24 16:15:00", "duration": 30, "tags": ["Database", "postgresql", "psycopg"]}, "84": {"id": 84, "abstracts": ["The Baserock project is about creating system images from source code in a clean, reproducible way. All of the tooling is written in Python.\r\n\r\nIn this talk I'll explain a bit about the core idea of Baserock: declarative system definitions (expressed in YAML) that can be built and deployed in various ways.\r\n\r\nThen I'll go into more detail about the tools available, and some of the cool things that they can do: distributed building, atomic system updates, creating custom container images, and more.\r\n\r\nFind out more about the Baserock project at http://www.baserock.org/", "", ""], "have_tickets": [true], "title": "Introduction to Baserock", "speakers": "Sam Thursfield", "track_title": "Barria2 Room", "timerange": "2015-07-21 14:30:00, 2015-07-21 15:15:00", "duration": 45, "tags": ["python", "DevOps", "system-administration", "unix", "open-source", "docker", "linux"]}, "225": {"id": 225, "abstracts": ["While Python supports procedural, object-oriented, and functional programming, its functional features are not fully developed. Mochi is a Python-like functional language that compiles to Python 3 and PyPy 3 bytecode. It can use Python libraries and can be used from Python.\r\n\r\nMochi adds functional features such as tail recursion optimization, no re-assignments in function definitions, persistent data structures, pattern matching, algebraic data types, a pipeline operator, better anonymous functions, Erlang-style actors, Lisp-style macros as well as many useful builtin functions.\r\n\r\nThis talk presents what Mochi is, how it works, and what you can do with it. Functional programming can help to solve certain kind of problems elegantly. Done right, functional programs can be easily tested and provide more confidence that you program is really doing what you want. Mochi could be another tool in your toolbox. Functional programming can expand your horizon and can be a lot of fun. Mochi offers easy access to this new world because you can leverage your existing Python knowledge and libraries whenever needed. "], "have_tickets": [true], "title": "Functional Python with Mochi", "speakers": "Mike M\u00fcller", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:15:00", "duration": 30, "tags": ["Programming", "functional"]}, "96": {"id": 96, "abstracts": ["Given the dynamic nature of Python, some bugs tend to creep in our codebases. Innocents NameErrors or hard-to-find bugs with variables used in a closure, but defined in a loop, they all stand no chance in front of Pylint (http://pylint.org/).\r\nIn this talk, I'll present one of the oldest static analysis tools for Python, with emphasis on what it can do to understand your Python code. Pylint is both a style checker, enforcing PEP 8 rules, as well as a code checker in the vein of pyflakes and the likes, but its true power isn't always obvious to the eye of beholder. It can detect simple bugs such as unused variables and imports, but it can also detect more complicated cases such as invalid arguments passed to functions, it understands the method resolution order of your classes and what special methods aren't implemented correctly. Starting from abstract syntax trees, we'll go through its inference engine and we'll see how Pylint understands the logical flow of your program and what sort of type hinting techniques are used to improve its inference, including PEP 484 type hints. As a bonus, I'll show how it can be used to help you port your long-forgotten library to Python 3, using its new --py3k mode."], "have_tickets": [true], "title": "12 years of Pylint (or How I learned to stop worrying about bugs)", "speakers": "Claudiu Popa", "track_title": "Google Room", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["ast", "static-analysis", "lint", "typehinting"]}, "52": {"id": 52, "abstracts": ["Python has a great versatile ecosystem but the competition is getting better, this talk is about how Python can keep up with these new languages and where PyPy fits into this.\r\n\r\nRecently we've seen the rise of new technologies like Go, Node.js and Julia, those have the ability to build an ecosystem on a clean slate and thus be better than Python in some aspects. What would it take to be as good as those technologies on those aspects without loosing all the things we love about Python ? This talk will describe my perfect future where Python keeps getting better, gets to keep it's great set of libraries and where PyPy fits in that future.", "", ""], "have_tickets": [true], "title": "PyPy and the future of the Python ecosystem", "speakers": "Romain Guillebert", "track_title": "A2 Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 15:45:00", "duration": 30, "tags": ["PyPy"]}, "345": {"id": 345, "abstracts": ["Case study of an In-Flight Entertainment system, built using Python.\r\n\r\nThis talk will show the basic requirements for the system and the architecture decisions we took.\r\n\r\nBesides, running software at 10.000 feet implies new unexpected challenges, different from the ones we encounter day-to-day. We'll focus on how we solved them."], "have_tickets": [true], "title": "Python in the Sky: In-Flight Entertainment with Python", "speakers": "David Arcos", "track_title": "A2 Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["redis", "python", "distributed-systems", "postgresql", "aviation", "django", "api", "fabric", "celery"]}, "161": {"id": 161, "abstracts": ["pip is certainly one of the most used package in the Python ecosystem, but what actualy happens when you pip install foo ?\r\n\r\n - - how does it perform an installation and resolve dependencies ?\r\n - - how does pip find installation candidates and select the 'best' ?\r\n - - Some sneak peek on the (possible) plans for the future of pip (wheel caching, setup_requires control, etc)\r\n\r\n"], "have_tickets": [true], "title": "PIP Internals", "speakers": "Xavier Fernandez", "track_title": "Barria1 Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:00:00", "duration": 30, "tags": ["packaging", "internals"]}, "221": {"id": 221, "abstracts": ["This talk will be a general introduction to Numba. Numba is an open source just\u00ad-in-\u00adtime Python compiler that allows you to speed up numerical algorithms for which fast linear algebra (i.e. Numpy array operations) is not enough. It has backends for the CPU and for NVidia GPUs. After the talk, the audience should be able to understand for which use cases Numba is adequate, what level of performance to expect, and have a general notion of its inner working.\r\n\r\nA bit of familiarity with scientific computing and/or Numpy is recommended for optimal understanding, but the talk should otherwise be accessible to the average Python programmer. It should also be of interest to people who are curious about attempts at high-\u00adperformance Python.", "", ""], "have_tickets": [true], "title": "Numba, a JIT compiler for fast numerical code", "speakers": "Antoine Pitrou", "track_title": "Google Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["python", "data-science", "analytics", "performance", "JIT", "numpy"]}, "5": {"id": 5, "abstracts": ["Traditional methods of coping with concurrent programming problems are well-known and described in literature. Many programming languages, including Python, contain in their standard libraries tools and primitives such as semaphores and can spawn threads or subprocesses.\r\n\r\nHowever, in the face of increasing interest in service oriented architecture and building distributed systems, that span across many independent server nodes, emerges a need to adapt traditional solutions, so they can be applied in the new environment.\r\n\r\nIn this talk I will share my experiences gathered during building a modern contact center - highly concurrent system, which requires certain resources to be accessed exclusively by several self-contained components.\r\n"], "have_tickets": [true], "title": "Distributed locks with Python and Redis", "speakers": "Sebastian Buczy\u0144ski", "track_title": "Google Room", "timerange": "2015-07-22 15:15:00, 2015-07-22 15:45:00", "duration": 30, "tags": ["redis", "twisted", "concurrency"]}, "86": {"id": 86, "abstracts": ["Braintree is a Ruby shop. By default, we use Ruby and Rails for projects. We also use Ruby-based projects for much of our tooling, including puppet, capistrano, and rake. However, we strongly believe in using the right tool for the job. What that means has evolved over ti\r\nme, and I'll discuss what solutions we chose in the past as well as our current choices.\r\n\r\nSo what's it like doing Python at a Ruby shop? You get lots of jokes about language features Ruby has but Python lacks and lots of disbelief that Python will survive the 2/3 split. People also tend to apply the best practices and conventions of Ruby to Python code as if t\r\nhey were the same. Python's major inroad at Braintree has been, surprisingly enough, as a platform for high-concurrency situations. This is a direct result of the power of Tornado as a platform for asynchronous I/O. It also helps that many Python is very approachable and \r\nmany developers have at least some experience with it.\r\n\r\nBraintree has three pieces of our infrastructure using Python and Tornado -- an incoming request proxy; an outgoing request proxy; and a webook delivery service. They've served us well for 3+ years but all suffer from a number of problems. The outdated concurrency feature\r\ns of CPython / Python 2 as well as our lack of experience with and commitment to Tornado have always been an issue. As the meat of the talk, I'll speak in depth about the other issues we've encountered with each of the three applications and our short- and long- term solu\r\ntions to the problems.\r\n\r\nThe state as of the end of 2014 appeared dire for Python at Braintree. All the old Python code in our stack is on the way out, and Python has been specifically recommended agaist for new projects. Our Python client library is used by some of our largest merchants, and is \r\nready for the future by supporting Python 2.6+ and Python 3.3+ in a single codebase. We also have a vibrant Python community at Venmo, our sister company. Both Braintree and Venmo support Python by attending, hosting, sponsoring, and speaking at meetups, conferences, and \r\nother events in Chicago, New York, and elsewhere. At Braintree, our Data Science team uses Python almost exclusively and they're becoming a bigger part of our business every day. We also use Collings and custom tooling written in Python to manage our infrastructure.\r\n"], "have_tickets": [true], "title": "Python Not Recommended", "speakers": "Adam Forsyth", "track_title": "Barria1 Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 15:45:00", "duration": 30, "tags": ["data-science", "pandas", "tornado", "collins", "case study", "pika", "sklearn"]}, "212": {"id": 212, "abstracts": ["PEP 484 introduces type hints for Python 3. Type hints can increase readability of our code for both humans and tools and lead to better and safer outcomes. And we'll prove it in this talk!\r\n\r\nWe're going to take a closer look at type hints, see practical examples of where they can be used and the value they provide. We'll see that simple class types and built-in collection types are often enough for our public API's. We'll also discuss how you can benefit from type hinting stubs for third-party libraries and briefly cover more advanced scenarios like generic types."], "have_tickets": [false], "title": "How you can benefit from type hints", "speakers": "Andrey Vlasovskikh", "track_title": "A2 Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["type-hinting", "python", "static-analysis"]}, "150": {"id": 150, "abstracts": ["Orain dela urte batzuk asi genuen bidea azalduko dut, Python San Sebastian elkartea nola sotu genuen eta hortik pixkanaka pixkanaka nola sortzen joan den EuroPython sortzeko grina. \r\n\r\nGendeari nahi izan eskero eta lan egin eskero EuroPython bezelako kongresu bat antolatzea posible dela erakustea du helburu hitzaldi honek."], "have_tickets": [true], "title": "Karakate magaletik EuroPythoneko tontorrera", "speakers": "oier etxaniz", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 15:45:00, 2015-07-22 16:15:00", "duration": 30, "tags": ["python", "MAL", "Euskara", "EuroPython", "Inspirational", "PySS"]}, "162": {"id": 162, "abstracts": ["Coding dojos are a very good way to share coding knowledge among members in a community, and, at the same time, introduce people into the language and community.\r\nSometimes, though, the typical approach to set coding dojos may prevent expert coders to join the session. This is the story of the pyBCN's dojos, so far.\r\n", "", ""], "have_tickets": [true, true], "title": "What dojos are and how we run these at pyBCN", "speakers": "N\u00faria Pujol, Ignasi Fosch", "track_title": "Barria1 Room", "timerange": "2015-07-20 15:45:00, 2015-07-20 16:15:00", "duration": 30, "tags": ["Beginners", "python", "tdd", "Functional Programming", "unit-testing", "learning", "fun"]}, "180": {"id": 180, "abstracts": ["Python is a language of choice for developers with wide range of experience, for some it is a first programming language, others switch to Python after years of experience. Python provides friendly syntax and smooth learning curve. This sometimes leads to developers lacking comprehension of some more advanced constructs. \r\n\r\nIt happens that experienced developers jump into using Python and sometimes miss less known Python language constructs. On the other hands people who purposefully learned Python sometimes lack practical ideas for how to apply those constructs.\r\n\r\nThis talk will be specifically focused on the practical usages of advanced Python constructs like iterators, generators, decorators and context managers. Goal of the talk is to share ideas about how those constructs can be used for practical purposes in real projects. Prior knowledge is not required, there will be a brief introduction to every construct being presented."], "have_tickets": [true], "title": "Practical usage of advanced Python constructs", "speakers": "Andrey Syschikov", "track_title": "Barria1 Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["python", "core"]}, "309": {"id": 309, "abstracts": ["Python and PostgreSQL, two tools we like to use for our projects but do you know everything about them?\r\n\r\nThe talk will give an overview of psycopg2, Peewee, SQLAlchemy, Alembic and multicorn, PL/Python, these libraries can be used with PostgreSQL.\r\n\r\n- psycopg2, the well known connector, this basic component is really useful, well documented and battle-tested and used by the most famous toolkits of the Python ecosystem.\r\n- Peewee, a minimalist ORM for Python, clear and brief, this ORM can be used if you want create a software with a minimalist ORM.\r\n- SQLAlchemy, a Python SQL toolkit and Object Relational Mapper, you can use this library to create your models and interact with them.\r\n- Alembic, a lightweight database migration tool for usage with SQLAlchemy, allows to create some migration scripts for your project.\r\n- multicorn is a Python wrapper over the Foreign Data Wrapper of PostgreSQL\r\n- PL/Python, a procedural language for PostgreSQL, allows to write functions in the Python language.\r\n\r\nYou can find this talk on https://speakerdeck.com/matrixise/python-and-postgresql-a-wonderful-wedding-english"], "have_tickets": [true], "title": "Python and PostgreSQL, a wonderful wedding", "speakers": "Stephane Wirtel", "track_title": "A2 Room", "timerange": "2015-07-21 15:45:00, 2015-07-21 16:15:00", "duration": 30, "tags": ["python", "SQLAlchemy", "postgresql", "multicorn", "peewee", "dbapi"]}, "95": {"id": 95, "abstracts": ["What if you could focus on functionality rather than the glue code between services?\r\n \r\nLymph is an opinionated framework for writing services in Python. It features pluggable service discovery, request-reply messaging and pluggable pub-sub messaging. \r\n \r\nAs our development teams are growing, we're moving away from our monolithic architecture. We want to write services and not worry about the infrastructure's needs. We want development to be fast, quick and simply work.\r\n \r\nIn this talk we will show you how easy it is to write and run services with lymph.\r\nGo check http://lymph.io - we are accepting pull requests."], "have_tickets": [true], "title": "Stop trying to glue your services together; import lymph", "speakers": "Max Brauer", "track_title": "Google Room", "timerange": "2015-07-21 14:30:00, 2015-07-21 15:15:00", "duration": 45, "tags": ["werkzeug", "services", "zeromq", "events", "gevent", "web", "rpc", "open-source", "zookeeper", "rabbitmq", "framework"]}, "78": {"id": 78, "abstracts": ["MkDocs is a Python library for creating documentation with\r\nMarkdown. The primary goal of the project is to lower the barrier\r\nfor documentation writers and to help enable high quality prose\r\nbased documentation.\r\n\r\nThe primary maintainer of MkDocs will cover the following topics:\r\n\r\n- An introduction to MkDocs and the project goals.\r\n - How and why did the project start?\r\n - Who uses MkDocs today?\r\n\r\n- Discuss what we need to do to create great documentation and\r\n how MkDocs can help.\r\n\r\n- A tour of the key features currently in MkDocs\r\n - Adding MkDocs to your project.\r\n - Using themes in the documentation and making customisations\r\n - Publishing your documentation with ReadTheDocs and GitHub\r\n pages.\r\n\r\n- A look at the up and coming features in MkDocs and how you can\r\n help make these happen.\r\n\r\n- A comparison with Sphinx and why you should consider MkDocs."], "have_tickets": [true], "title": "MkDocs: Documenting projects with Markdown", "speakers": "Dougal Matthews", "track_title": "Barria1 Room", "timerange": "2015-07-23 15:15:00, 2015-07-23 15:45:00", "duration": 30, "tags": ["markdown", "open-source", "documentation", "mkdocs"]}, "53": {"id": 53, "abstracts": ["Locality sensitive hashing (LSH) is a technique for reducing complex data down to a simple hash code. If two hash codes are similar than the original data is similar. Typically, they are used for speeding up search and other similarity comparisons. \r\n\r\nIn this presentation I will discuss two ways of implementing LSH in python; the first method is completely stateless but only works on certain forms of data; the second is stateful but does not make any assumptions about the distribution of the underlying data. I will conclude the presentation by describing how we apply LSH to search at Lyst.\r\n", "", ""], "have_tickets": [true], "title": "Speeding up search with locality sensitive hashing", "speakers": "Maciej Kula", "track_title": "Barria2 Room", "timerange": "2015-07-24 15:45:00, 2015-07-24 16:15:00", "duration": 30, "tags": ["data-science", "machine-learning", "bigdata", "search", "numpy", "sklearn"]}, "362": {"id": 362, "abstracts": ["PEP 484, \"Type Hints\", was accepted in time for inclusion in Python 3.5 beta 1. This introduces an optional standard for specifying types in function signatures. This concept was previously discussed as \"optional static typing\" and I similar to the way TypeScript adds optional type declarations to JavaScript.\r\n\r\nIn this talk I will discuss the motivation for this work and show the key elements of the DSL for describing types (which, by the way is backward compatible with Python 3.2, 3.3 and 3.4). Note: *Python will remain a dynamically\r\ntyped language, and I have no desire to ever make type hints\r\nmandatory, even by convention!*", "", ""], "have_tickets": [true], "title": "Type Hints for Python 3.5", "speakers": "Guido van Rossum", "track_title": "Google Room", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["python"]}, "155": {"id": 155, "abstracts": ["RinohType is a document processor inspired by [LaTeX][1] and written in Python. It renders [reStructuredText][2] and [Sphinx][3] documents to PDF based on a document template and a style sheet. RinohType already implements many of the features that make LaTeX so great. Not stopping there, RinohType also tries to fix LaTeX's weaknesses; it should not only be easy to use, but easy to _customize_ and _extend_ as well. To minimize frustration when things go wrong, care is taken to provide descriptive warning and error messages. The powerful layout engine makes it easy to define custom page layouts. And the CSS-inspired stylesheets simplify the styling of document elements. At a lower level, Python makes the writing of extensions much more accessible when compared to TeX's rather arcane macro language.\r\n\r\nIn the talk, I would like to introduce RinohType to the Python community. No special prerequisite knowledge is required. \r\nReference: https://pypi.python.org/pypi/RinohType", "RinohType is a document processor inspired by [LaTeX][1] and written in Python. It renders [reStructuredText][2] and [Sphinx][3] documents to PDF based on a document template and a style sheet. RinohType already implements many of the features that make LaTeX so great. Not stopping there, RinohType also tries to fix LaTeX's weaknesses; it should not only be easy to use, but easy to _customize_ and _extend_ as well. To minimize frustration when things go wrong, care is taken to provide descriptive warning and error messages. The powerful layout engine makes it easy to define custom page layouts. And the CSS-inspired stylesheets simplify the styling of document elements. At a lower level, Python makes the writing of extensions much more accessible when compared to TeX's rather arcane macro language.\r\n\r\nIn the talk, I would like to introduce RinohType to the Python community. No special prerequisite knowledge is required. I will start off by discussing my motivation for starting RinohType development, its design goals and the currently available features. This will be followed by an example of how you can use RinohType to render a reStructuredText document to a neat PDF document, highlighting some of the features along the way. Next, we'll explore some of RinohType's internals such as the page layout engine and the style sheet system. We will explore how these can be used in a Python application to create a document from scratch.\r\n\r\nA first RinohType release was recently created. While this preview release is of alpha quality, it should be able to render most reStructuredText documents. It also includes a preliminary Sphinx builder. Please find more details in the package's description at [PyPI][4].\r\n\r\n [1]: http://en.wikipedia.org/wiki/LaTeX\r\n [2]: http://docutils.sourceforge.net/rst.html\r\n [3]: http://sphinx-doc.org\r\n [4]: https://pypi.python.org/pypi/RinohType", ""], "have_tickets": [true], "title": "RinohType, a document processor inspired by LaTeX", "speakers": "Brecht Machiels", "track_title": "Google Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["LaTeX", "reStructuredText", "PDF", "typesetting"]}, "227": {"id": 227, "abstracts": ["What if I told you that we\u2019ve built an open source \u201cWhatsApp\u201d-like RESTful API on the top of Pyramid? We've developed MAX: a real-time messaging service and activity stream that has become the key feature for a social intranet at the BarcelonaTech University\r\n\r\nWe will show how we designed and built MAX with performance in mind using state of the art Python technologies like Gevent, WSGI, and multi-threaded queue processing. We will also show you how we've managed to design a simple architecture guaranteeing both high scalability and performance, achieving connecting ratios over 30.000 students, teachers, and university staff.\r\n\r\nThe API is secured using oAuth 2.0 resource owner password credentials flow powered by our own oAuth server implementation (Osiris) also Pyramid-based. We are using MongoDB as general storage backend and RabbitMQ over websockets to support realtime and messaging."], "have_tickets": [true], "title": "MAX: Realtime messaging and activity stream engine", "speakers": "Carles Bruguera", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["python", "restfull", "gevent", "REST", "open source", "mongodb", "wsgi", "web", "websockets", "api", "rabbitmq"]}, "135": {"id": 135, "abstracts": ["This talk is a sequel to \"Brainwaves for Hackers\" and illustrates some experiments you can do with a Neurosky Mindwave headset, a bluetooth enabled EEG device.\r\n \r\nI'll also talk some more about how to integrate the device with the IPython\r\nNotebook for real time viewing and how to use the Mindwave with the Raspberry Pi."], "have_tickets": [true], "title": "Brainwaves for Hackers 2.0", "speakers": "Andreas Klostermann", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["visualization", "biology", "Health-Science", "machine-learning"]}, "124": {"id": 124, "abstracts": ["When applications get deployed in enterprise environment or in large organizations, they need to support user accounts and groups that are managed externally, in existing directory services like FreeIPA or Active Directory, or federated via protocols like SAML. While it is possible to add support for these individual setups and protocols directly to application code or to Web frameworks or libraries, often it is better to delegate the authentication and identity operations to a frontend server and just assume that the application has to be able to consume results of the external authentication and identity lookups.\r\n\r\nIn this talk, we will look at Django Web framework and how with few small changes to the framework and to the application we can extend the functionality of existing RemoteUserMiddleware and RemoteUserBackend to consume users coming from enterprise identity management systems. We will focus on using proven OS-level components such as SSSD for Web applications, but will also show setup using federation.", "", ""], "have_tickets": [false], "title": "External authentication for Django projects", "speakers": "Jan Pazdziora", "track_title": "Barria2 Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["django", "FreeIPA", "HTTP", "web", "Apache", "authentication", "sssd"]}, "229": {"id": 229, "abstracts": ["The quality of written code is an important factor in a final success of a software project.\r\nPerhaps there is no universal definition of high quality code, however usually it's characterized as clear and readable, well-designed, well tested and documented, easier to debug, maintain and extend, etc.\r\n\r\nPython was designed to be a highly readable language that would make it easier to develop high quality code. Nevertheless, programming language is only a tool in a software development process and in the end the quality of code depends mostly on its author's concept and decisions he make. \r\n\r\nIn this talk I would like to present some of ideas, techniques and tools for improving the quality of written code, tried out with a good result in everyday work on developing software in Python."], "have_tickets": [true], "title": "Writing quality code", "speakers": "Rados\u0142aw Jankiewicz", "track_title": "Google Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["python", "BestPractices", "Programming", "Coding"]}, "353": {"id": 353, "abstracts": ["Testing with purely random data on it's own doesn't get you very far. But\r\ntwo approaches that have been around for a while have new libraries that\r\nhelp you generate random input, that homes in on failing testcases.\r\n\r\nFirst **[Hypothesis][1]**, a Python implementation and update of the Haskell library\r\nQuickCheck. Known as property based testing, you specify a property of your\r\ncode that must hold, and Hypothesis does its best to find a counterexample.\r\nIt then shrinks this to find the minimal input that contradicts your\r\nproperty.\r\n\r\nSecond, **[American fuzzy lop][2]** (AFL), is a young fuzzing library that's already\r\nachieved an impressive trophy case of bug discoveries. Using\r\ninstrumentation and genetic algorithms, it generates test input that\r\ncarefully searches out as many code paths as it can find, seeking greater\r\nfunctional coverage and ultimately locating crashes and hangs that no other\r\nmethod has found. I'll be showing how with **[Python-AFL][3]** we can apply this\r\ntool to our Python code.\r\n\r\n [1]: https://hypothesis.readthedocs.org/en/latest/\r\n [2]: http://lcamtuf.coredump.cx/afl/\r\n [3]: http://jwilk.net/software/python-afl\r\n"], "have_tickets": [true], "title": "Testing with two failure seeking missiles: fuzzing and property based testing", "speakers": "Tom Viner", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["fuzzing", "Testing"]}, "304": {"id": 304, "abstracts": ["The talk will show the architecture and inners of a cloud hosting service we are developing in the University of Cambridge based on python technologies, mainly django, ansible, and celery.\r\n\r\nThe users manage their hosts using a web panel, developed in django, with common options: ability to create a vhost, associate domain names to vhosts, install packages, recover from backups, make snapshots, etc. Interaction between the panel and the hosts are made using ansible playbooks launched asynchronously by celery tasks. The VM architecture has been designed to be VM platform agnostic and to provide disk replication and high availability.\r\n\r\nThe University of Cambridge central IT services (http://www.ucs.cam.ac.uk/) also provides other services to the rest of the university like domain name registration, authentication, authorisation, TLS certificates, etc. We link all these other services with the hosting service by using APIs while keeping a microservices architecture approach. Thus, enabling the use/link of other services within the same hosting service web application. "], "have_tickets": [false], "title": "Architecture of a cloud hosting service using python technologies: django, ansible and celery", "speakers": "Dr A. Martin-Campillo", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["hosting", "django", "cloud", "ansible", "celery"]}, "201": {"id": 201, "abstracts": ["2000 urtean CodeSyntax sortu zenetik Python erabili dugu gure lan ia guztiak egiteko. Lan horiek egitean izandako (r)eboluzioa azalduko dugu hitzaldi honetan: python script arruntetatik, Zope aplikazioen zerbitzarian nabigatzaile baten programatzetik, fitxategi sisteman programatzera pasatu gara, Turbogears ere ikutu dugu eta orain Plone, Django eta Pyramid darabilgu.\r\n\r\nSince the beginning of our company in year 2000 we have been using Python to do our work. We will explain the (r)evolution we faced working with python during this 15 years: small python scripts, browser-based-development using Zope Application Server, we touched Turbogears and now Plone, Django and Pyramid applications."], "have_tickets": [true], "title": "Python gure etxean: (r)eboluzioa atzo, gaur eta bihar", "speakers": "Mikel Larreategi", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 15:15:00, 2015-07-22 15:45:00", "duration": 30, "tags": ["web", "Plone", "django", "open-source"]}, "185": {"id": 185, "abstracts": ["Users and developers especially, hate waiting. Computing has adapted and we almost never wait for the computer for more then 10 seconds. One big exception is runnig a test suite which takes MINUTES on many projects. That is incredibly distracting, frustrating and dragging the whole concept of automated tests down. \r\n\r\nI present a technique and a tool (py.test plugin called \"testmon\") which automatically selects only tests affected by recent changes. Does it sound too good to be true? Python developers rightfully have a suspecting attitude towards any tool which tries to be too clever about their source code. Code completion and symbol searching doesn't need to be 100% reliable but messing with the test suite execution? I show that we can cut test suite execution time significantly but maintain it's reliability."], "have_tickets": [true], "title": "Mashing up py.test, coverage.py and ast.py to take TDD to a new level", "speakers": "Tibor Arpas", "track_title": "Barria2 Room", "timerange": "2015-07-21 15:45:00, 2015-07-21 16:15:00", "duration": 30, "tags": ["py.test", "Testing"]}, "228": {"id": 228, "abstracts": ["Passwords are a pain for us all - programmers, users and admins alike. How can we reduce that pain, or eliminate it entirely?\r\n\r\nThis talk will\r\n\r\n - Review research into techniques that improve the usability of password systems, and mitigate shortcomings\r\n - Introduce the new standards Universal Authentication Framework (UAF) & Universal Second Factor (U2F)\r\n - Describe how they streamline authentication, even eliminate passwords entirely\r\n - Show how to integrate UAF/U2F in Django and other Python frameworks\r\n - Summarize the state of support for UAF & U2F in browsers, devices, and the wider world\r\n - Introduce Sonipass - a project to replace passwords, even on existing websites\r\n"], "have_tickets": [true], "title": "Taking the pain out of passwords and authentication", "speakers": "Alex Willmer", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 15:15:00, 2015-07-23 16:15:00", "duration": 60, "tags": ["experience", "u2f", "web", "authentication", "2fa", "passwords", "security", "fido", "2-factor", "uaf"]}, "308": {"id": 308, "abstracts": ["Whatever you need to do with Python, you can probably import a library for it. But what exactly happens when you use that import statement? How does a source file that you've installed or written become a Python module\r\nobject, providing functions or classes for you to play with?\r\n\r\nWhile the import mechanism is relatively well-documented in the reference and dozens of PEPs, sometimes even Python veterans are caught by surprise. And some details are little-known: did you know you can import from zip archives? Write CPython modules in C, or even a dialect of Lisp? Or import from URLs (which might not be a good idea)?\r\n\r\nThis talk explains exactly what can happen when you use the import statement \u2013 from the mundane machinery of searching PYTHONPATH through subtle details of packages and import loops, to deep internals of custom importers and C extension loading.", "", ""], "have_tickets": [true], "title": "Import Deep Dive", "speakers": "Petr Viktorin", "track_title": "Barria1 Room", "timerange": "2015-07-24 15:45:00, 2015-07-24 16:15:00", "duration": 30, "tags": ["import", "core"]}, "211": {"id": 211, "abstracts": ["CeleraOne tries to bring its vision to Big Data by developing a unique platform for real-time Big Data processing. The platform is capable of personalizing multi-channel user flows, right-in time targeting and analytics while seamlessly scaling to billions of page impression. It is currently tailored to the needs of content providers, but of course not limited to.\r\n\r\n - The platform\u2019s architecture is based on four main layers:\r\n - Proxy/Distribution -- OpenResty/LUA for dynamic request forwarding\r\n - RESTful API -- several Python applications written using Pyramid web framework running under uWSGI server, which serve as an integration point for third party systems;\r\n - Analytics -- Python API for Big Data querying and distributed workers performing heavy data collection.\r\n - In-memory Engine -- CeleraOne\u2019s NoSql database which provides both data storage and fast business logic.\r\n\r\nIn the talk I would like to give insights on how we use Python in the architecture, which tools and technologies were chosen, and share experiences deploying and running the system in production.\r\n\r\n"], "have_tickets": [true], "title": "Building a RESTful real-time analytics system with Pyramid", "speakers": "Andrii Chaichenko", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["bigdata", "Pyramid", "highload", "real-time", "analytics"]}, "188": {"id": 188, "abstracts": ["In this talk, Software Engineer Joao Santos will describe how the engineering team at Zalando has been migrating to local Git hooks to ensure that engineers can work autonomously and flexibly. Zalando---Europe\u2019s leading online fashion platform for men, women and children-- began shifting from SVN to Git in late 2013. Santos and his colleagues used Python to create a Git update hook that enabled the team to reject changes to a branch while still allowing changes to other branches. He\u2019ll explain why his team chose Python for this job instead of a bash script, point out mistakes made during the process (and solutions his team used to fix them), and the benefits generated by this migration. He\u2019ll also talk about turnstile: a set of open-source, configurable, optional local Git hooks, created by the Zalando team, that enables engineers to abide by internal rules for committing code while following their own coding style and workflow preferences."], "have_tickets": [false], "title": "Using Git Hooks to Help Your Engineering Teams Work Autonomously", "speakers": "Jo\u00e3o Santos", "track_title": "Barria2 Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:00:00", "duration": 30, "tags": ["yaml", "git-hooks", "FOSS", "agile", "Git", "CLI", "open-source", "Development"]}, "100": {"id": 100, "abstracts": ["Take a big, non-multithreaded program, and run in on multiple cores!\r\n\r\nPyPy, the Python implementation written in Python, experimentally\r\nsupports Software Transactional Memory (STM). It runs without the\r\nGlobal Interpreter Lock (GIL).\r\n\r\nThe strength of STM is not only to remove the GIL, but to also enable\r\na novel use of multithreading, inheritently safe, and more useful in\r\nthe general case than other approaches like OpenMP. The main news\r\nfrom last year's presentation is that there is now a way to get\r\nreports about the \"STM conflicts\", which is essential to go past toy\r\nexamples. With it, you can incrementally remove conflicts from large\r\ncode bases until you see a benefit from PyPy-STM. The goal of the\r\ntalk is to give several concrete examples of doing that."], "have_tickets": [true], "title": "The GIL is dead: PyPy-STM", "speakers": "Armin Rigo", "track_title": "Google Room", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["PyPy", "GIL", "concurrency"]}, "7": {"id": 7, "abstracts": ["SaltStack is a thriving configuration management system written in Python that leverages YAML and Jinja2 which, by now, probably needs no introduction.\r\n\r\nThis talk will cover a brief summary of why we need configuration management tools, followed by a full dive into SaltStack, its features, pros and cons, how to use it and how to extend it. By the end of this talk you will have gone from knowing little or nothing about SaltStack, to being able to deploy your own setup.\r\n\r\nThis talk will be targeted to either seasoned Python developers who are taking their first steps in the system administration world, or established system administrators who secretly love Python and prefer to stay away of configuration management systems based on other languages.\r\nIts advisable that attendees have some familiarity with Python as well as with system administration concepts. Also, this presentation will be focused on GNU/Linux systems, so it is expected that attendees are comfortable with some of its concepts.", "", ""], "have_tickets": [true], "title": "Salting things up in the sysadmin's world", "speakers": "Juan Manuel Santos", "track_title": "Barria1 Room", "timerange": "2015-07-21 14:30:00, 2015-07-21 15:15:00", "duration": 45, "tags": ["saltstack", "management", "python", "configuration", "linux"]}, "21": {"id": 21, "abstracts": ["TDD is not about tests!\r\nWell, actually, it\u2019s not **just** about writing tests, or writing them before the code. This talk will show you how to use tests to really drive development by transforming business requirements into tests, and allowing your code to come as their natural consequence.\r\n\r\nToo often this key aspect is neglected and the result is that tests and code are somehow \u201cdisconnected\u201d. The code is not as short and efficient as it could be, and the tests are not as effective. Refactoring is not always easy, and over time all sorts of issues start to come out of the surface.\r\n\r\nHowever, we will show that when TDD is done properly, tests and code merge beautifully into an organic whole that fulfills the business requirements, and provides all sorts of advantages: your code is minimal, easy to amend and extend, readable, clean. Your tests will be effective, short and focused, and allow for light-hearted refactoring and excellent coverage.\r\n\r\nWe will provide enough information and examples to spark the curiosity of the novice, and satisfy the need of a deeper insight for the intermediate, and help you immediately benefit from this transformative technique that is still often underestimated and misunderstood."], "have_tickets": [true], "title": "TDD is not about tests!", "speakers": "Fabrizio Romano", "track_title": "A2 Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["python", "tdd", "agile", "Best Practice", "Development", "Testing", "Coding"]}, "348": {"id": 348, "abstracts": ["Python focuses a lot on writing readable code and also tries to make solutions obvious, but this doesn't necessarily mean that you cannot write unreadable code or design your code in ways which makes it hard to extend or maintain.\r\n\r\nThis talk will show some useful idioms to use when writing Python code, how to structure your modules and also goes into details on which techniques to use and which to think about twice, based on 20 years of experience writing Python."], "have_tickets": [true], "title": "Python idioms to help you write good code", "speakers": "Marc-Andre Lemburg", "track_title": "Google Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 15:45:00", "duration": 30, "tags": ["python", "design", "idioms", "experience", "Best Practice", "Coding"]}, "286": {"id": 286, "abstracts": ["Meta classes are an advanced feature in python, in this talk i will try to explain what they are, how they work and i will show some code as well. \r\nThis talk is for anyone who would like to see what happens under the hood when you create a class in Python and how to intercept the class creation process and modify it.\r\n", "", ""], "have_tickets": [false], "title": "Python Advanced Basics (Meta Classes)", "speakers": "Nimrod Wandera", "track_title": "Barria1 Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["python"]}, "75": {"id": 75, "abstracts": ["I will explain how CPython objects are built, from simple objects\r\nlike int or None to complex ones like dict. To make it funnier, I\r\nwill play to change instance data directly using ctypes and do\r\n\"really bad things\" like truncating tuples."], "have_tickets": [true], "title": "Playing with CPython Objects Internals", "speakers": "Jes\u00fas Espino", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["low-level", "python", "cpython"]}, "133": {"id": 133, "abstracts": ["The talk discusses the challenges of implementing a Citizen Science Paradigm in a Python-centric platform, and the solutions devised for the System for observation and monitoring of Marine Alien Species, currently used by the italian Institute for Environmental Protection and Research (ISPRA). \"Alien\" Species means species introduced into a natural environment where they are not normally found.\r\nTopics includes strategies for crowd-friendly forms, work-flow definition for collected data, choice of the best technologies for its components: app for android devices, web application for citizens and experts, webGIS for data browsing and web services for data exporting."], "have_tickets": [true], "title": "Citizen Science: Tracking Aliens with Python!", "speakers": "Alessio Siniscalchi", "track_title": "Barria2 Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 15:45:00", "duration": 30, "tags": ["Plone", "postgresql", "webGIS", "citizen-science"]}, "111": {"id": 111, "abstracts": ["Before its first major version, Elasticsearch was only used as a \"secondary\" database, and search engine.\r\nThe releases added a snapshort/restore feature, making it a great full featured database\r\n\r\nThis talk will focus on how we integrate Elasticsearch into our stack, and the multiple usage we make of it: from storing business events to IOT devices metrics."], "have_tickets": [true], "title": "Python and elasticsearch 101", "speakers": "Beno\u00eet Calvez", "track_title": "A2 Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["databases", "development-process", "elasticsearch"]}, "129": {"id": 129, "abstracts": ["[Apache Spark][1] is a computational engine for large-scale data processing. It\r\nis responsible for scheduling, distribution and monitoring applications which\r\nconsist of many computational task across many worker machines on a computing\r\ncluster.\r\n\r\nThis Talk will give an overview of PySpark with a focus on Resilient\r\nDistributed Datasets and the DataFrame API. While Spark Core itself is written\r\nin Scala and runs on the JVM, PySpark exposes the Spark programming model to\r\nPython. It defines an API for Resilient Distributed Datasets (RDDs). RDDs are a\r\ndistributed memory abstraction that lets programmers perform in-memory\r\ncomputations on large clusters in a fault-tolerant manner. RDDs are immutable,\r\npartitioned collections of objects. Transformations construct a new RDD from a\r\nprevious one. Actions compute a result based on an RDD. Multiple computation steps\r\nare expressed as directed acyclic graph (DAG). The DAG execution model is \r\na generalization of the Hadoop MapReduce computation model.\r\n\r\nThe Spark DataFrame API was introduced in Spark 1.3. DataFrames envolve Spark's\r\nRDD model and are inspired by Pandas and R data frames. The API provides\r\nsimplified operators for filtering, aggregating, and projecting over large\r\ndatasets. The DataFrame API supports diffferent data sources like JSON\r\ndatasources, Parquet files, Hive tables and JDBC database connections.\r\n\r\nResources:\r\n\r\n- [An Architecture for Fast and General Data Processing on Large Clusters][2] Matei Zaharia\r\n- [Spark][6] Cluster Computing with Working Sets - Matei Zaharia et al.\r\n- [Resilient Distributed Datasets][5] A Fault-Tolerant Abstraction for In-Memory Cluster Computing -Matei Zaharia et al.\r\n- [Learning Spark][3] Lightning Fast Big Data Analysis - Oreilly\r\n- [Advanced Analytics with Spark][4] Patterns for Learning from Data at Scale - Oreilly\r\n\r\n [1]: https://spark.apache.org\r\n[2]: http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-12.pdf\r\n[3]: http://shop.oreilly.com/product/0636920028512.do\r\n[4]: http://shop.oreilly.com/product/0636920035091.do\r\n[5]: https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf\r\n[6]: http://www.cs.berkeley.edu/~matei/papers/2010/hotcloud_spark.pdf\r\n\r\n"], "have_tickets": [false], "title": "PySpark - Data processing in Python on top of Apache Spark.", "speakers": "Peter Hoffmann", "track_title": "Google Room", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["bigdata", "distributed-systems", "data-science", "analytics"]}, "18": {"id": 18, "abstracts": ["An overview of the currently available Python game development libraries and frameworks and how is Python currently being used in the videogame industry.\r\n\r\nPresentation of Kobra, a modern open source Python game development framework with ECS (Entity Component System) architecture and C++ bindings."], "have_tickets": [true], "title": "Python Gamedev MLG", "speakers": "Alejandro Garcia", "track_title": "A2 Room", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["gamedev", "python", "OpenGL", "c++"]}, "80": {"id": 80, "abstracts": ["Mixins are a great way to keep an application decoupled. This talk is about building mixins and dissecting what's behing the mixin \"magic\" and that, in fact, there is no magic involved at all. The main focus will be on Django framework while digging into mixins. When using Django class-based views, mixins feel very natural.\r\n\r\n**Goal**: by the end of this talk, every developer should be confident about creating his or her own custom mixins.\r\n\r\n**Prerequisites:**\r\n - basic understanding of OOP principles and their application in Python\r\n - Django web framework\r\n\r\nGenerally mixins in Python are pretty straight-forward, easy to create and use. Nevertheless a lot of developers stay away from them. I think attendees of this talk will be interested to learn that mixins are not that complex and their benefit is tremendous."], "have_tickets": [true], "title": "Demystifying Mixins with Django", "speakers": "Ana Balica", "track_title": "Barria2 Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:00:00", "duration": 30, "tags": ["mixins", "OOP", "django"]}, "232": {"id": 232, "abstracts": ["So often, we've been encouraged to be smart in our development. \"Work smarter not harder!\" say the encouraging posters. But the desire to be smart, and be seen to be smart, is hurting. The design suffers, the code suffers, and it's hard to recruit developers smart enough to cope with the problems caused.\r\n\r\nIn this talk, I'm proposing an alternative to being smart: **_DumbDev_**. Let's use our brains for enjoyable, interesting things, rather than wrestling with code written for smart developers.\r\n\r\n**So what do I mean by _dumb_?**\r\n\r\nWell, I don't mean 'ignorant'. A clever person can be ignorant of some important information, and learn it. With ignorance, there is hope. I'm also not talking about its opposite, 'stupidity'. This occurs when someone is given the information or advice, and chooses to ignore it. Dumb isn't stupid. Nor is it silent, as in someone who can't speak.\r\n\r\nInstead, the picture I have is of one of the early computers: very small RAM, disk space measured in KB, and a woefully inadequate CPU. In other words, slow, with very little working memory and limited persistent storage. Hey, this describes my brain -- and I realise that's an asset! I will write better software if I take this into account.\r\n\r\nHere's the first **_DumbDev_** rule, putting a sensible limit on complexity:\r\n\r\n> **1. All diagrams must fit on a Noughts and Crosses (Tic-tac-toe) board**.\r\n\r\n> _One central class/concept and up to eight things linked. Larger structures need to be subdivided._\r\n\r\n [1]: http://www.phyast.pitt.edu/~micheles/python/plone-hierarchy.png\r\n [2]: http://www.artima.com/weblogs/viewpost.jsp?thread=246341\r\n", "So often, we've been encouraged to be smart in our development. \"Work smarter not harder!\" say the encouraging posters. But the desire to be smart, and be seen to be smart, is hurting. The design suffers, the code suffers, and it's hard to recruit developers smart enough to cope with the problems caused.\r\n\r\nIn this talk, I'm proposing an alternative to being smart: **_DumbDev_**. Let's use our brains for enjoyable, interesting things, rather than wrestling with code written for smart developers.\r\n\r\n**So what do I mean by _dumb_?**\r\n\r\nWell, I don't mean 'ignorant'. A clever person can be ignorant of some important information, and learn it. With ignorance, there is hope. I'm also not talking about its opposite, 'stupidity'. This occurs when someone is given the information or advice, and chooses to ignore it. Dumb isn't stupid. Nor is it silent, as in someone who can't speak.\r\n\r\nInstead, the picture I have is of one of the early computers: very small RAM, disk space measured in KB, and a woefully inadequate CPU. In other words, slow, with very little working memory and limited persistent storage. Hey, this describes my brain -- and I realise that's an asset! I will write better software if I take this into account.\r\n\r\nSo, I'm a **_DumbDev_**, which means I can't hold in my mind the infamous [Plone Site class hierarchy][1] (see [Michele Simionato's article][2]). Rather than beat myself up about this, I can say, \"Hold on, maybe deep inheritance is a bad idea...\" There is some debate about the number of things we can think about simultaneously: it may be 7, 9, 5, 4 or even only 3. We can learn some tricks to appear to cope with more, but most of us can't easily do 38. \r\n\r\nHere's the first **_DumbDev_** rule, putting a sensible limit on complexity:\r\n\r\n> **1. All diagrams must fit on a Noughts and Crosses (Tic-tac-toe) board**.\r\n\r\n> _One central class/concept and up to eight things linked. Larger structures need to be subdivided._\r\n\r\nThere are seven further rules for me to explain in this talk. I will demonstrate the benefits of the **_DumbDev_** approach, with good and bad examples. At the end of the presentation, I hope you will realise that you're a better developer than you thought at the start. The next time it takes you two hours to debug a simple exception, you'll know that it's not you. It's because the system wasn't written using **_DumbDev_** rules.\r\n\r\nLet's free our brains for more interesting things, like having ideas and solving problems. \r\n\r\nLet's do **_DumbDev_**.\r\n\r\n [1]: http://www.phyast.pitt.edu/~micheles/python/plone-hierarchy.png\r\n [2]: http://www.artima.com/weblogs/viewpost.jsp?thread=246341\r\n", ""], "have_tickets": [true], "title": "DumbDev -- eight rules for dumb development", "speakers": "Rob Collins", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["massage", "best-practices", "dumbdev", "unit-testing", "rules", "community", "software-design"]}, "39": {"id": 39, "abstracts": ["Reahl is a full-featured web framework with a twist: with Reahl you write a web application purely in Python. HTML, JavaScript, CSS and all those cumbersome web technologies (and a few other lower level concerns) are hidden away from you. As far as web frameworks go this is truly a paradigm shift: away from the cobwebs of all the different web technologies, template languages and low-level details -- towards being able to focus on the goals at hand instead, using a single language.\r\n\r\nIn this talk I will give you a brief idea of what Reahl is all about: why it is worthwhile doing, how it works, where we are and what still needs to be done. I hope to convince you that this is an important direction for web frameworks, and of how unique Reahl is. Developing such an abstract framework is an ambitious goal. I'd like to convey the message that what we have achieved so far, and the strategy lessons learnt along the way demonstrate this goal to be realistic and practical.\r\n\r\n"], "have_tickets": [true], "title": "Reahl: The Python-only web framework", "speakers": "Iwan Vosloo", "track_title": "Barria1 Room", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["web", "open-source"]}, "41": {"id": 41, "abstracts": ["[Ansible ][1]is the _new cool kid in town_ in the configuration management world. It is easy to learn, fast to setup and works great! In the first part of the talk, I will do a super-fast introduction to Ansible for the newcomers.\r\n\r\nIf you are a Pythonista, you can hack and leverage Ansible in many ways. In the second part of the talk, I will describe some options to extend and embed Ansible with Python:\r\n\r\n - Embedding Ansible with the Python API\r\n - Extending Ansible: creating modules, plugins and callbacks\r\n\r\nPrevious experience with Ansible is advised in order to get the most of this talk, but beginners to the tool will also get an overview of the capabilities of this kind of integration.\r\n\r\n [1]: http://www.ansible.com/home\r\n"], "have_tickets": [true], "title": "Extending and embedding Ansible with Python", "speakers": "Alejandro Guirao Rodr\u00edguez", "track_title": "A2 Room", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["management", "Tooling", "configuration", "DevOps", "ansible"]}, "70": {"id": 70, "abstracts": ["The talk is about the implementation of multibody simulation in the scientific python world on the way to a stage usefull for engineering and educational purposes.\r\nMultibody simulation (MBS) requires two major steps: first the formulation of the specific mechanical problem. Second step is the integration of the resulting equations.\r\nFor the first step we use the package sympy which is on a very advanced level to perform symbolic calculation and which supports already Lagrange's and Kane's formalism. The extensions we made are such that a complex mechanical setup can be formulated easily with several lines of python code. The functionality is analogous to well known MBS-tools, with that you can assemble bodies, joints, forces and constraints. Also external forces even in a cosimulation model can be added on top. The second step, the integration is done via ode-integrators implemented in scipy.\r\nFinally for visual validation the results are visualized with the vpython package and for further analytics with matplotlib.\r\n\r\nConclusion: not only highly constrained pendulums with many rods and springs but also driving simulation of passenger cars an be performed with our new extension using python packages off the shelf."], "have_tickets": [true], "title": "Multibody Simulation using sympy, scipy and vpython", "speakers": "Oliver Braun", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["Mechanics", "sympy", "Engineering", "vpython", "Physics", "visualization", "education", "scipy"]}, "19": {"id": 19, "abstracts": ["Times changed, with introducing asyncio to Python standard library many and many developers think about switching from previous solutions to aio stack. Talk will introduce aiohttp, aioredis & aiopg - cornerstones for building modern Python backends and show common problems & solutions while switching to aio stack.\r\n\r\nBut not only Python changed. In second part, I'll talk about what new happened in frontend development, how new ES6 features modified JavaScript, and what React.js & Flux means for Python developers. \r\n\r\nTalk will cover real-world web application, which used aio stack on backend and React.js & Flux approach on frontend and provide useful observations for other developers interested in these topics."], "have_tickets": [true], "title": "Asyncio Stack & React.js or Development on the Edge", "speakers": "Igor Davydenko", "track_title": "Google Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["es6", "aiohttp", "aiopg", "react.js", "flux", "api", "aioredis", "python3", "asyncio"]}, "99": {"id": 99, "abstracts": ["In this talk I'm going to introduce Scrapinghub's new open source framework [Frontera][1]. Frontera allows to build real-time distributed web crawlers and website focused ones. \r\n\r\nOffering:\r\n\r\n - customizable URL metadata storage (RDBMS or Key-Value based),\r\n - crawling strategies management,\r\n - transport layer abstraction.\r\n - fetcher abstraction.\r\n\r\nAlong with framework description I'll demonstrate how to build a distributed crawler using [Scrapy][2], Kafka and HBase, and hopefully present some statistics of Spanish internet collected with newly built crawler. Happy EuroPythoning!\r\n\r\n [1]: https://github.com/scrapinghub/frontera\r\n [2]: http://scrapy.org/\r\n"], "have_tickets": [true], "title": "Frontera: open source large-scale web crawling framework", "speakers": "Alexander Sibiryakov", "track_title": "A2 Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 15:45:00", "duration": 30, "tags": ["scrapy", "kafka", "hbase", "webcrawling", "distributed-systems"]}, "279": {"id": 279, "abstracts": ["This talks is about automation and the use of Python scripts to speed up repetitive tasks.\r\n\r\nIt's for developers, sysops, devops, but also any kind of user that want improve his daily routine.\r\n\r\nI will talk about the use of Python with different tools for different platforms: Keyboard Maestro/Alfred/Hazel on OsX and Synapse/Kupfer/AutoKey on Linux.\r\n\r\nThere will be presented some sample script to give an idea of the potentiality of Python mixed with great tools, and these are some of the topics that I will cover:\r\n\r\n - text manipulation;\r\n - document template management;\r\n - clipboard management;\r\n - stuff internet activities (url shortening, web scraping, etc.);\r\n - list management.\r\n - etc.\r\n\r\n"], "have_tickets": [true], "title": "Python for IT specialists' tasks automation", "speakers": "Gianluca Nieri", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["automation", "development-tools", "DevOps", "system-administration"]}, "101": {"id": 101, "abstracts": ["DEPOT ( http://depot.readthedocs.org/en/latest/ ) is a file storage framework born from the experience on a project that saved a lot of files on disk, until the day it went online and the customer system engineering team decided to switch to Heroku, which doesn't support storing files on disk.\r\n\r\nThe talk will cover the facets of a feature \"saving files\" which has always been considered straightforward but that can become complex in the era of cloud deployment and when infrastructure migration happens. \r\n\r\nAfter exposing the major drawbacks and issues that big projects might face on short and long terms with file storage the talk will introduce DEPOT and how it tried to solve most of the issues while providing a super-easy-to-use interface for developers. We will see how to use DEPOT to provide attachments on SQLAlchemy or MongoDB and how to handle problems like migration to a different storage backend and long term evolution.\r\n\r\nLike SQLAlchemy makes possible to switch your storage on the fly without touching code, DEPOT aims at making so possible for files and even use multiple different storages together."], "have_tickets": [true], "title": "Why storing files for the web is not as straightforward as you might think.", "speakers": "Alessandro Molina", "track_title": "Barria2 Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["web", "HTTP.", "mongodb", "cloud", "SQLAlchemy"]}, "147": {"id": 147, "abstracts": ["Haskell is very different from Python, and provide different tools to library and framework designers. As a result, its ecosystem is filled with libraries and frameworks that solve the same problems we try to solve in our favorite programming languages, but with a very different approach.\r\n\r\nThis talk is an exploration of the Haskell ecosystem, from the point of view of a Python developer. \r\nWe will review various popular Haskell libraries and frameworks, focusing on the library design. The goal is to provide the audience a sneak peak of some different ways to tackle problems, and hopefully to inspire library authors to explore some design space that we don't usually explore in Python.\r\n\r\nThis talk should be interesting to any intermediate Python programmer who is curious about other ways to solve problems. No Haskell knowledge is required from the audience."], "have_tickets": [true], "title": "Through the lens of Haskell: exploring new ideas for library design", "speakers": "Georges Dubus", "track_title": "A2 Room", "timerange": "2015-07-23 15:45:00, 2015-07-23 16:15:00", "duration": 30, "tags": ["design", "library", "Haskell"]}, "165": {"id": 165, "abstracts": ["As a web developer, I find myself being asked to make increasing numbers of data visualizations, interactive infographics, and more. d3.js is great, as are many other javascript toolkits that are out there. But if I can write more Python and less JavaScript... well, that makes me happy! \r\n\r\nBokeh is a new Python library for interactive visualization. Its origins are in the data science community, but it has a lot to offer web developers. In this mini-tutorial, I'll run through how to build a data visualization in Bokeh and how to hook it into your web application. This will be a real-world example, that was previously built in d3.js. \r\n\r\nAlong the way, I'll provide tips and tricks that I've discovered in my experience including how Bokeh works wonderfully with the iPython notebook which I use to prototype my visualizations, and many data science people use as their native way to explore data.\r\n\r\nFor those of you who already know a little Bokeh, I'll be covering the new \"actions framework\" that lets you write JS callbacks in your python code so you can do lots of interactions all on the client side.\r\n"], "have_tickets": [true], "title": "Getting started with Bokeh / Let's build an interactive data visualization for the web..in Python!", "speakers": "Sarah Bird", "track_title": "Barria2 Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["open-data", "data-science", "javascript", "visualization", "bigdata", "bokeh", "pandas", "web", "django", "open-source", "canvas", "data", "graphics"]}, "247": {"id": 247, "abstracts": ["Wrappers are an essential tool for interacting with web APIs. They reduce the amount of work needed to make requests and sometimes, only sometimes prevent the developer from dealing with extensive documentations. It\u2019s common to encounter libs that require not only the study of their own documentation, but also the APIs one, duplicating the needed work. This is caused because wrappers do not follow a design pattern, each developer creates it\u2019s own design, coding style and use their preferred tools. \r\n\r\n[Tapioca][1] is what can be called: \"a wrapper generator\u201d. Creating API wrappers with Tapioca is extremely easy and fast. For example, it took 1 hour to write the full wrapper for the [Parse.com][2] REST API. But this is not the more important thing, Tapioca libs have a similar interface so once understood how they work, developers can work with any other without the need to learn a new interface. \r\n\r\nTapioca is also thought to comply with REST features and takes HATEOAS (Hypermedia as the engine of application state) seriously, so \u201cfollowing\u201d links and pagination are natively supported. Explorability is also a key concept and developers are encouraged to play with Tapioca packages and find their way through APIs before writing their final code. Although there are some production ready [Tapioca wrappers][3], it is a work in progress, there are still many features to be explored.\r\n\r\n [1]: https://github.com/vintasoftware/tapioca-wrapper\r\n [2]: http://parse.com\r\n [3]: https://github.com/vintasoftware/tapioca-wrapper#tapioca-comes-in-many-flavours"], "have_tickets": [true], "title": "What is wrong with API wrappers and how can we do better", "speakers": "Filipe Ximenes", "track_title": "A2 Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:00:00", "duration": 30, "tags": ["HTTP", "ipython", "web", "api", "requests", "wrapper"]}, "195": {"id": 195, "abstracts": ["In this talk I will present some tools for working with Geographic Information Systems in Python.\r\n\r\nGeographic information Systems are widely used for managing geographic (map) data. As an example I will present how to use Open Street Map data (http://openstreetmap.org/), in routing, traffic planning and estimation of pollution emission.\r\n\r\nFor the purpose of the project EcoSense (http://ecosense.au.dk), GPS data from users smartphones are mapped to OSM roads. The map matching algorithm is written in Python and uses data from the database PostgreSQL, with the PostGIS extension. \r\n\r\nOne of the goals of the EcoSense project is to devise methods to improve the estimation of air quality in urban environments.\r\n"], "have_tickets": [true], "title": "How to GIS with Python", "speakers": "Anders Lehmann", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["GIS", "bigdata", "Mapmatching", "PostGIS", "postgresql"]}, "296": {"id": 296, "abstracts": ["To accompany an upcoming O'Reilly book 'Data-visualisation with Python and Javascript: crafting a dataviz toolchain for the web' (see [here][1]) this talk aims to sketch out the toolchain by transforming some dry Wikipedia data (Nobel prize-winners) into a far more engaging and insightful web-visualisation. This transformative cycle uses Python big-hitters such as Scrapy, Pandas and Flask, the latter delivering data to Javascript's D3.\r\n\r\nWhile Python is fast becoming the goto language for data-processing/science, the visual fruits of that labour hit the wall of the web, where there is only one first-class language, Javascript. To develop a data-viz toolchain for the modern world, where web-presentation is increasingly mandated, making Python and Javascript play nicely is fundamental. This talk aims to show that the perceived wall between the two languages is actually a thin, permeable membrane and that, with a bare minimum of web-dev, one can get on with programming seamlessly in both.\r\n\r\n [1]: http://kyrandale.com/blog/data-visualization-python-javascript/\r\n"], "have_tickets": [true], "title": "Data-visualisation with Python and Javascript: crafting a data-viz toolchain for the web", "speakers": "Kyran Dale", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 14:30:00, 2015-07-21 15:15:00", "duration": 45, "tags": ["d3", "visualization", "matplotlib", "flask", "pandas", "web", "javascript", "scrapy"]}, "199": {"id": 199, "abstracts": ["Today, we almost exclusively think of code in software projects as a collection of text files. The tools that we use (version control systems, IDEs, code analyzers) also use text as the primary storage format for code. In fact, the belief that \"code is text\" is so deeply ingrained in our heads that we never question its validity or even become aware of the fact that there are other ways to look at code.\r\n\r\nIn my talk I will explain why treating code as text is a very bad idea which actively holds back our understanding and creates a range of problems in large software projects. I will then show how we can overcome (some of) these problems by treating and storing code as data, and more specifically as a graph. I will show specific examples of how we can use this approach to improve our understanding of large code bases, increase code quality and automate certain aspects of software development.\r\n\r\nFinally, I will outline my personal vision of the future of programming, which is a future where we no longer primarily interact with code bases using simple text editors. I will also give some ideas on how we might get to that future.\r\n\r\nMore information about me:\r\n\r\n- Github: https://github.com/adewes\r\n- Twitter: https://twitter.com/japh44\r\n- Website: http://www.andreas-dewes.de/en", "Today, we almost exclusively think of code in software projects as a collection of text files. The tools that we use (version control systems, IDEs, code analyzers) also use text as the primary storage format for code. In fact, the belief that \"code is text\" is so deeply ingrained in our heads that we never question its validity or even become aware of the fact that there are other ways to look at code.\r\n\r\nIn my talk I will explain why treating code as text is a very bad idea which actively holds back our understanding and creates a range of problems in large software projects. I will then show how we can overcome (some of) these problems by treating and storing code as data, and more specifically as a graph. I will show specific examples of how we can use this approach to improve our understanding of large code bases, increase code quality and automate certain aspects of software development.\r\n\r\nFinally, I will outline my personal vision of the future of programming, which is a future where we no longer primarily interact with code bases using simple text editors. I will also give some ideas on how we might get to that future.\r\n\r\nGoals:\r\n\r\n- Convince people that treating code primarily as text is a really bad idea.\r\n- Show which insights we can gain when treating code as data and storing it in a format that allows us to analyze and process it algorithmically.\r\n- Give people a vision on how the future of programming might look like and how we might get there.\r\n\r\nPrerequisites:\r\n\r\n- A basic understanding of programming concepts (files, compilers / interpreters, version control [not really necessary though]).\r\n- An interest in best practices and writing good code.\r\n\r\nOutline:\r\n\r\n- Introduction (who am I, why I'm here) - 3 mins\r\n- Short history of code storage formats - wires, punch cards, text, graphs and back to text (5 mins)\r\n- Why storing code as text is a bad idea - motivation and examples (5 mins)\r\n- Alternative ways to think about code - graphs and trees (5 mins)\r\n- Building a graph storage engine for Python code - principles and use cases (5 mins)\r\n- Demo time - visualizing the graph, tracking the evolution of code, finding duplicates and problems, automatically refactoring the graph (5 mins)\r\n- The future of programming - increase automation, decrease errors (5 mins) \r\n- Building the future - what we need and how to build it (5 mins)\r\n- Ending remarks (2 mins)\r\n\r\n(40 minutes total [probably less] + 5 minutes of Q&A)\r\n\r\nMy motivation:\r\n\r\nI talked about data-driven code analysis at the PyCon Montreal 2015, and many people said that they really enjoyed my talk and would like to learn more about data-driven code analysis and treating code as a graph. I'm happy to oblige and give a talk about this at the EuroPython!\r\n\r\nOther events I spoke at (selection):\r\n\r\n- 31C3 (Chaos Communication Congress) Hamburg: I gave a talk on quantum computing in front of 1.800 people, which received very positive feedback (https://www.youtube.com/watch?v=aXtE0Zeszho)\r\n- PyCon Montreal - I spoke about data-driven code analysis in front of 1.000 people. The talk received great interest and very positive feedback (https://us.pycon.org/2015/schedule/presentation/341/)\r\n\r\nMore information about me:\r\n\r\n- Github: https://github.com/adewes\r\n- Twitter: https://twitter.com/japh44\r\n- Website: http://www.andreas-dewes.de/en", ""], "have_tickets": [true], "title": "Code is not text! How graph technologies can help us to understand our code better.", "speakers": "Andreas Dewes", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["python", "visualization", "bigdata", "Programming", "code", "graphdatabases", "futureofcoding", "Best Practice"]}, "343": {"id": 343, "abstracts": ["This is a talk for mediocre Python programmers by a mediocre programmer. PyPy\r\nis an alternative implementation of Python. It is notorious for being fast, but\r\nalso for using clever algorithms pertaining to advanced concepts such as type\r\ninference, garbage collection, just-in-time compilation, etc. So, can we,\r\nmediocre programmers, realistically use PyPy?\r\n\r\nYes, absolutely. In fact, PyPy developers did all that hard work so that we\r\nwouldn't have to. As we'll see, it runs most Python code exactly like CPython\r\ndoes, save that it magically makes it faster.\r\n\r\nPorting existing applications is always more involved than running a simple\r\nscript, so we'll also examine likely difficulties such as code relying on\r\nCPython implementation details, and dependencies on C extensions, and explore\r\nsimple principles to let PyPy run your code even faster.\r\n\r\nFinally, we'll have a glimpse of the future by looking at what's brewing in \r\nthe PyPy lair, such as software transactional memory, new speed optimisations,\r\nbetter support for Python 3 and NumPy, ...\r\n\r\n\r\n"], "have_tickets": [true], "title": "PyPy for mediocre programmers", "speakers": "Ronan Lamy", "track_title": "Barria1 Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["PyPy"]}, "156": {"id": 156, "abstracts": ["This talk introduces the asyncio module. I'll cover what it's for, how it works and describe how I used it to write a real-world networked application (a distributed hash table). We'll explore the event loop, coroutines, futures and networking with examples from my code. This won't be an exhaustive exposition. Rather, attendees will grasp enough of asyncio to continue with their own studies.\r\n\r\nBy the end of this introductory talk I hope attendees will want to learn more about asyncio and perhaps give it a try in their own projects."], "have_tickets": [false], "title": "Lessons learned with asyncio (\"Look ma, I wrote a distributed hash table!\")", "speakers": "Nicholas Tollervey", "track_title": "A2 Room", "timerange": "2015-07-22 15:15:00, 2015-07-22 15:45:00", "duration": 30, "tags": ["asyncio", "introduction"]}, "317": {"id": 317, "abstracts": ["Talk about mistakes we made and best practises we have elaborated while implementation Behave Driven Development into one of the projects. Great idea to coverage whole application with functional tests fall down in development chaos and reborn on new better foundations.\r\n\r\nProject referred is web-based big data management which main features are transcoding and file sharing. Thanks to Django and many Python frameworks we have web interface for it and we are able to run automation tests with Selenium.", "", ""], "have_tickets": [true], "title": "BDD: You\u2019re doing it wrong!", "speakers": "Rafa\u0142 Nowicki", "track_title": "Barria1 Room", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:00:00", "duration": 30, "tags": ["test", "selenium", "django", "bdd"]}, "244": {"id": 244, "abstracts": ["You've been making packages for a while now. Everything works almost fine, however, lots of new features and tools have been developed recently. Some are really obscure. And there's a chance they can save you time and help you avoid _packaging-induced-pain_. I'm willing to bet couple of beers you haven't seen these features and/or tools before.\r\n\r\nThis talk is going to show you:\r\n\r\n- Patterns and tricks you can use in your `setup.py`.\r\n- Obscure pip/setuptools/virtualenv/python features you can use to improve your packaging experience (be it as a user of packages or a package author).\r\n- Fledgeling alternative tools.", "", ""], "have_tickets": [true], "title": "Less known packaging features and tricks", "speakers": "Ionel Cristian M\u0103rie\u0219", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:15:00", "duration": 45, "tags": ["virtualenv", "setuptools", "python", "packaging", "pip"]}, "29": {"id": 29, "abstracts": ["Data Structures is traditionally a \u201cbogeyman\u201d discipline in Computer Science courses and has a high degree of failure. In FATEC S\u00e3o Jos\u00e9 dos Campos we are adopting a hybrid approach, with C and Python languages. The failure rate decreased from 85% (2008) to 12% (2014). The talk will be extensively illustrated with code in C and Python, addressing the various concepts taught in this course: recursion, linked lists, queues, stacks, sorting algorithms.", "", ""], "have_tickets": [true], "title": "Data Structures with Python", "speakers": "Fernando Masanori Ashikaga", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 15:45:00, 2015-07-23 16:15:00", "duration": 30, "tags": ["education"]}, "333": {"id": 333, "abstracts": ["During this talk we will discuss how to manage your full stack development life cycle using python technologies plus Docker. \r\n\r\nWe will cover from, the project creation (using Pyramid web framework), to maintaining a consistent deployment infrastructure using buildout and docker containers. ", "Durante esta presentaci\u00f3n discutiremos como administrar el ciclo de vida de tu desarrollo usando tecnolog\u00edas Python m\u00e1s Docker.\r\n\r\nVamos a cubrir desde la creaci\u00f3n de tu proyecto (usando el framework Pyramid), hasta la mantenci\u00f3n de infraestructuras consistentes de instalaci\u00f3n usando buildout y contenedores docker. ", ""], "have_tickets": [true], "title": "Easy FullStack Deployments", "speakers": "Alvaro Aguirre", "track_title": "A2 Room", "timerange": "2015-07-23 15:15:00, 2015-07-23 15:45:00", "duration": 30, "tags": ["Buildout", "DevOps", "docker", "ansible", "fabric", "Pyramid"]}, "16": {"id": 16, "abstracts": ["Big Data - these two words are heard so often nowadays. But what exactly is Big Data ? Can we, Pythonistas, enter the wonder world of Big Data ? The answer is definitely \"Yes\".\r\n\r\nThis talk is an introduction to the big data processing using Apache Hadoop and Python. We'll talk about Apache Hadoop, it's concepts, infrastructure and how one can use Python with it. We'll compare the speed of Python jobs under different Python implementations, including CPython, PyPy and Jython and also discuss what Python libraries are available out there to work with Apache Hadoop.\r\n\r\nThis talk is intended for beginners who want to know about Hadoop and Python or those who are already working with Hadoop but are wondering how to use it with Python or how to speed up their Python jobs."], "have_tickets": [true], "title": "Big Data with Python & Hadoop", "speakers": "Max Tepkeev", "track_title": "Google Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["bigdata", "jython", "hadoop", "cpython", "etl", "PyPy"]}, "94": {"id": 94, "abstracts": ["Python is a powerful language that provides many tools for creating highly dynamic programs. It offers tools all across the complexity spectrum that library authors can use to make their libraries seem convenient to use for users.\r\n\r\nWhile it's true that there are a wealth of techniques with huge positive benefits, there are a number of common antipatterns which can deceptively cause a net-loss in flexibility, readability, and predictability for users.\r\n\r\nWe'll explore a few specific commonalities in this area of library and object API design, and talk about the ramifications they have on each of these programmer concerns."], "have_tickets": [true], "title": "Just Because You Can, Doesn't Mean You Should", "speakers": "Julian Berman", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:15:00", "duration": 45, "tags": ["case study", "Best Practice"]}, "306": {"id": 306, "abstracts": ["At Spotify, my team struggled to be awesome. We had a very loose understanding of what product/service our squad was responsible for, and even less so of the expectations our internal and external customers had for those services. Other than \u201cdoes our Facebook login work?\u201d, we had no understanding of how our services we\u2019re responsible for were doing. How many users actually sign up or log in with Facebook? How many users have connected their Spotify account with their Uber account? Do folks even use Spotify with Uber? \r\n\r\nWith a 2-month challenge period, my squad and I focused inward to establish those unanswered questions and to establish feedback loops and always-on dashboards. This talk will tell the story of how we chose which metrics are important for us to focus on, what technologies we have used and are using, and how we\u2019ve iterated over our feedback loops to fine-tune what metrics we care about. "], "have_tickets": [true], "title": "Metrics-driven development", "speakers": "Lynn Root", "track_title": "Google Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 15:45:00", "duration": 30, "tags": ["servers", "metrics", "technologies", "real-time", "logging"]}, "164": {"id": 164, "abstracts": ["Rust is a new programming language from Mozilla. It is fast, safe and beautiful. It is also a very good option when needing performance. In this talk we're going to look at Rust and see what it offers and how we can leverage it as Python developers. And we'll do it with a case study: a statistical profiler for Python."], "have_tickets": [true], "title": "Can Rust make Python shine?", "speakers": "Dmitry Trofimov", "track_title": "Barria1 Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["performance", "profiling", "rust"]}, "140": {"id": 140, "abstracts": ["In this talk we would like to have a short introduction on how Python\r\nprograms are compiled and executed, with a special attention towards\r\njust in time compilation done by PyPy. PyPy is the most advanced Python\r\ninterpreter around and while it should generally just speed up your programs\r\nthere is a wide range of performance that you can get out of PyPy, ranging from\r\nslightly faster than CPython to C speeds, depending on how you write your\r\nprograms.\r\n\r\nWe will split the talk in two parts. In the first part we will explain\r\nhow things work and what can and what cannot be optimized as well as describe\r\nthe basic heuristics of JIT compiler and optimizer. In the next part we will\r\ndo a survey of existing tools for looking at performance of Python programs\r\nwith specific focus on PyPy.\r\n\r\nAs a result of this talk, an audience member should be better equipped with\r\ntools how to write new software and improve existing software with performance\r\nin mind.\r\n\r\nThe talk will be given by Antonio Cuni and Maciej Fijalkowski,\r\nboth long time PyPy core developers and expert in the area of\r\nPython performance.", "", ""], "have_tickets": [true], "title": "Python and PyPy performance (not) for dummies", "speakers": "Antonio Cuni", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 16:15:00", "duration": 60, "tags": ["profiling", "performance", "PyPy", "JIT"]}}, "Trainings": {"262": {"id": 262, "abstracts": ["The value that search functionality can add to a website is often underestimated, and many people fear that it is too complex or complicated. At the same time, it\u2019s not clear to many developers what a good search implementation should do.\r\n\r\nIn short, many developers - and the users of their websites - are missing out on important benefits.\r\n\r\nThis workshop will help them over the first hurdles to a solid search implementation using Django and Elasticsearch. It will cover basic steps like syncing the models to a search engine and setting up search views, as well as more advanced functionality such as faceted navigation.\r\n\r\nHonza will explain how search works and guide people through the process of customising their search and setting up analytics based on the data in their apps.", "", ""], "have_tickets": [true], "title": "Don't be afraid to search", "speakers": "Honza Kr\u00e1l", "track_title": "", "timerange": "2015-07-23 14:30:00, 2015-07-23 17:30:00", "duration": 180, "tags": ["search", "django", "elasticsearch", "databases"]}, "323": {"id": 323, "abstracts": ["If you want to get data from the web, and there are no APIs available, then you need to use web scraping! Scrapy is the most effective and popular choice for web scraping and is used in many areas such as data science, journalism, business intelligence, web development, etc.\r\n\r\nThis workshop will provide an overview of Scrapy, starting from the fundamentals and working through each new topic with hands-on examples.\r\n\r\nParticipants will come away with a good understanding of Scrapy, the principles behind its design, and how to apply the best practices encouraged by Scrapy to any scraping task.\r\n\r\nGoals:\r\n\r\n - Set up a python environment.\r\n - Learn basic concepts of the Scrapy framework.\r\n\r\n", "", ""], "have_tickets": [true], "title": "Scrapy Workshop", "speakers": "Juan Riaza", "track_title": "", "timerange": "2015-07-24 14:30:00, 2015-07-24 17:30:00", "duration": 180, "tags": ["scrapy", "python", "open-source", "scraping"]}, "207": {"id": 207, "abstracts": ["Optimization can often help to make Python programs faster or use less memory.\r\nDeveloping a strategy, establishing solid measuring and visualization techniques\r\nas well as knowing about algorithmic basics and datastructures are the foundation\r\nfor a successful optimization. The tutorial will cover these topics.\r\nExamples will give you a hands-on experience on how to approach efficiently.\r\n\r\n*Audience*: Programmers with good basic Python knowledge. No previous\r\nknowledge in the field of optimization is required.\r\n\r\n*Objectives*: This tutorial will help you to get the most out of your optimization work.\r\nYou will learn useful techniques for details combined with an overall strategy\r\nfor the big picture.\r\n\r\n*Detailed Abstract*: Python is a great language. But it can be slow compared to other languages for certain types of tasks. If applied appropriately, optimization may reduce program runtime or memory consumption considerably. But this often comes at a price. Optimization can be time consuming and the optimized program may be more complicated. This, in turn, means more maintenance effort. How do you find out if it is worthwhile to optimize your program? Where should you start?\r\nThis tutorial will help you to answer these questions. You will learn how to find an optimization strategy based on quantitative and objective criteria.\r\nYou will experience that one's gut feeling what to optimize is often wrong.\r\n\r\nThe solution to this problem is: \u201eMeasure, Measure, and Measure!\u201c. You will\r\nlearn how to measure program run times as well as profile CPU and memory.\r\nThere are great tools available. You will learn how to use some of them.\r\nMeasuring is not easy because, by definition, as soon as you start to measure,\r\nyou influence your system. Keeping this impact as small as possible is\r\nimportant. Therefore, we will cover different measuring techniques.\r\n\r\nFurthermore, we will look at algorithmic improvements. You will see that the\r\nright data structure for the job can make a big difference. Finally, you will\r\nlearn about different caching techniques.\r\n\r\n*More Info*: You will need Python 2.7 or 3.4 installed on your laptop. Python 2.6 or 3.3 should also work. Very detailed installation instructions will be given to all participants well before the course.", "Optimization can often help to make Python programs faster or use less memory.\r\nDeveloping a strategy, establishing solid measuring and visualization techniques\r\nas well as knowing about algorithmic basics and datastructures are the foundation\r\nfor a successful optimization. The tutorial will cover these topics.\r\nExamples will give you a hands-on experience on how to approach efficiently.\r\n\r\n### Audience\r\n\r\nProgrammers with good basic Python knowledge. No previous\r\nknowledge in the field of optimization is required.\r\n\r\n### Objectives\r\n\r\nThis tutorial will help you to get the most out of your optimization work.\r\nYou will learn useful techniques for details combined with an overall strategy\r\nfor the big picture.\r\n\r\n### Detailed Abstract\r\n\r\nPython is a great language. But it can be slow compared to other languages\r\nfor certain types of tasks. If applied appropriately, optimization may reduce\r\nprogram runtime or memory consumption considerably. But this often comes at a\r\nprice. Optimization can be time consuming and the optimized program may be more\r\ncomplicated. This, in turn, means more maintenance effort. How do you find\r\nout if it is worthwhile to optimize your program? Where should you start?\r\nThis tutorial will help you to answer these questions. You will learn how\r\nto find an optimization strategy based on quantitative and objective criteria.\r\nYou will experience that one's gut feeling what to optimize is often wrong.\r\n\r\nThe solution to this problem is: \u201eMeasure, Measure, and Measure!\u201c. You will\r\nlearn how to measure program run times as well as profile CPU and memory.\r\nThere are great tools available. You will learn how to use some of them.\r\nMeasuring is not easy because, by definition, as soon as you start to measure,\r\nyou influence your system. Keeping this impact as small as possible is\r\nimportant. Therefore, we will cover different measuring techniques.\r\n\r\nFurthermore, we will look at algorithmic improvements. You will see that the\r\nright data structure for the job can make a big difference. Finally, you will\r\nlearn about different caching techniques.\r\n\r\n\r\n### Outline\r\n\r\n* How Fast is Fast Enough? (5 min)\r\n* Optimization Guidelines and Strategy (10 min)\r\n* Measuring run time\r\n * ``time``, ``timeit``, decorators for timing (5 min)\r\n * Wall Clock vs. CPU Time (2 min)\r\n* Profiling CPU Usage\r\n * cProfile (10 min)\r\n * A Picture is Worth a Thousand Words\r\n * RunSnakeRun (5 min)\r\n * SnakeViz (5 min)\r\n * Cachegrind (5 min)\r\n * Going Line-by-Line (5 min)\r\n * Exercise (10 min)\r\n* Profiling Memory Usage\r\n * Heapy (5 min)\r\n * Pympler (5 min)\r\n * Memory Usage Line-by-Line with memory_profiler (5 min)\r\n * Exercise (10 min)\r\n* Algorithms and Anti-patterns\r\n * String Concatenation (3 min)\r\n * List and Generator Comprehensions (5 min)\r\n * Think Global buy Local (5 min)\r\n * Exercise (5 min)\r\n* The Right Data Structure\r\n * Use built-in Data Types (2 min)\r\n * ``list`` vs. ``set`` (3 min)\r\n * ``list`` vs. ``deque`` (5 min)\r\n * ``dict`` vs. ``defaultdict`` (5 min)\r\n * Big-O notation and Data Structures (5 min)\r\n * O(1) vs. O(n) vs. O(n) (5 min)\r\n * Exercise (15 min)\r\n* Caching\r\n * Reuse before You Recalculate (5 min)\r\n * Deterministic caching (5 min)\r\n * Non-deterministic caching (5 min)\r\n * Least Recently Used Cache (5 min)\r\n * Memcached (5 min)\r\n * Exercise (10 min)\r\n\r\n### More Info\r\n\r\nYou will need Python 2.7 or 3.4 installed on your laptop. Python 2.6 or 3.3\r\nshould also work. Very detailed installation instructions will be given to all participants well before the course.\r\n", ""], "have_tickets": [true], "title": "Faster Python Programs - Measure, don't Guess", "speakers": "Mike M\u00fcller", "track_title": "", "timerange": "2015-07-24 14:30:00, 2015-07-24 17:30:00", "duration": 180, "tags": ["optimization", "profiling"]}, "28": {"id": 28, "abstracts": ["Tutorial interactivo, en *espa\u00f1ol*, y muy divertido para la gente, con los conceptos b\u00e1sicos de programaci\u00f3n en alguna otra lenguaje, y que no saben nada de Python. Vamos a hackear fotos de amigos de Facebook y tambi\u00e9n hackear m\u00f3dulos b\u00e1sicos y clases para obtener la \"respuesta a la \u00faltima pregunta de la vida, el universo, y todo\". Este tutorial asume que usted tiene algunos pocos conceptos b\u00e1sicos (entrada de dados, salida de dados, operadores booleanos, control de flujo, funciones, repeticiones). Vamos a cubrir, en Python 3.x: 1. El modo interactivo de Python 2. Variaciones en el juego de adivinar un n\u00famero aleat\u00f3rio 3. Hackear m\u00f3dulos b\u00e1sicos y clases para obtener la \"respuesta a la \u00faltima pregunta de la vida, el universo, y todo\". 4. Hacking de las fotos de los amigos de Facebook sin OAuth 5. Chuck Norris Nerd chistes y partidos de la Copa Mundial en seis l\u00edneas de c\u00f3digo. 6. Prueba selectiva del Hackaton Facebook en una l\u00ednea de c\u00f3digo. Nota importante: No soy un gur\u00fa de Python, s\u00f3lo un maestro apasionado!"], "have_tickets": [true], "title": "Python para Iniciantes (ESPA\u00d1OL)", "speakers": "Fernando Masanori Ashikaga", "track_title": "", "timerange": "2015-07-21 11:00:00, 2015-07-21 13:30:00", "duration": 150, "tags": ["iniciante", "programaci\u00f3n", "divertido"]}, "110": {"id": 110, "abstracts": ["Many programming paradigms are reaching us nowadays bringing the promise of being faster by leveraging more cores and more machines (and more system administration headaches, but this is rarely stated). Reality is that many times these paradigms do not take in account the increasing mismatch between memory speed and CPUs (see http://www.blosc.org/docs/StarvingCPUs-CISE-2010.pdf), and this is becoming utterly critical so as to get maximum performance out of your data handling applications.\r\n\r\nDuring my tutorial, I will introduce different data containers for handling different kind of data and will propose experimenting with them while explaining why some adapts better to the task at hand. I will start with a quick introduction for Python data containers (lists, dicts, arrays...), continuing with well-known in-memory NumPy and Pandas containers as well as on-disk HDF5/PyTables and ending with bcolz (https://github.com/Blosc/bcolz), a novel way to store and quickly retrieve data which uses chunking and compression techniques so as to leverage the memory hierarchy of modern computer architectures.\r\n\r\nPeople attending will need a working Python setup with IPython notebook, NumPy, pandas, PyTables and bcolz installed. Anaconda or Enthought Canopy distributions are recommended, but any other means of installing (e.g. pip) will do.", "", ""], "have_tickets": [true], "title": "Efficient Memory/Disk Data Containers With Python", "speakers": "Francesc Alted", "track_title": "", "timerange": "2015-07-22 11:00:00, 2015-07-22 13:30:00", "duration": 150, "tags": ["python", "data-science", "bigdata", "ipython", "open-source", "databases", "data"]}, "299": {"id": 299, "abstracts": ["This tutorial will offer a hands-on introduction to machine learning and the process of applying these concepts in a Kaggle competition. We will introduce attendees to machine learning concepts, examples and flows, while building up their skills to solve an actual problem. At the end of the tutorial attendees will be familiar with a real data science flow: feature preparation, modeling, optimization and validation. \r\n\r\nPackages used in the tutorial will include: IPython notebook, scikit-learn, pandas and nltk. We'll use IPython notebook for interactive exploration and visualization, in order to gain a basic understanding of what's in the data. From there, we'll extract features and train a model using scikit-learn. This will bring us to our first submission. We'll then learn how to structure the problem for offline evaluation and use scikit-learn's clean model API to train many models simultaneously and perform feature selection and hyperparameter optimization.\r\n\r\nAt the end of session, attendees will have time to work on their own to improve their models and make multiple submissions to get to the top of the leaderboard, just like in a real competition. Hopefully attendees will not only leave the tutorial having learned the core data science concepts and flow, but also having had a great time doing it.\r\n"], "have_tickets": [true], "title": "Beginner's Guide to Machine Learning Competitions", "speakers": "Christine Doig", "track_title": "", "timerange": "2015-07-20 14:30:00, 2015-07-20 17:30:00", "duration": 180, "tags": ["python", "competitions", "data-science", "machine-learning", "nltk", "predictions", "ipython-notebook", "ipython", "pandas", "natural-language-processing", "open-source", "sklearn"]}, "320": {"id": 320, "abstracts": ["[asyncio][1] is relative new library for asynchronous network programming.\r\n\r\n\r\n\r\nOn training session newcomers will learn how to:\r\n\r\n* develop asyncio-based WEB applications with help of aiohttp library and siblings\r\n* write tests for asynchronous code\r\n* make tiny but revealing asyncio library which shows all design concepts required for making good product for asyncio code\r\n\r\nA lot of tips and tricks will be explained. Development for asyncio is really easy (much easier than [Tornado][2] and [Twisted][3] coding) but requires to change you mind a bit.\r\n\r\n [1]: http://docs.python.org/3/library/asyncio.html\r\n [2]: http://www.tornadoweb.org/\r\n [3]: http://twistedmatrix.com"], "have_tickets": [true], "title": "Mastering asyncio applications", "speakers": "Andrew Svetlov", "track_title": "", "timerange": "2015-07-21 14:30:00, 2015-07-21 17:30:00", "duration": 180, "tags": ["HTTP", "aiohttp", "aiopg", "aioredis", "asyncio", "network"]}, "9": {"id": 9, "abstracts": ["Do you like playing lego? Do you want to know how Scrum works? Why not to combine having fun & learning? \r\n\r\nDuring my workshops you will get familiar with Scrum ceremonies by building a Lego city. In your team you will have a Scrum Master who should help you with a demanding Product Owner who will be me. \r\n\r\nCan you manage my requirements? Can you finish the sprint? Can you build the city I'm dreaming about? Try yourself and get Scrum experience!", "", ""], "have_tickets": [true], "title": "Lego for Scrum", "speakers": "Anna Kierczy\u0144ska", "track_title": "", "timerange": "2015-07-22 14:30:00, 2015-07-22 17:30:00", "duration": 180, "tags": ["lego", "management", "agile", "fun", "scrum"]}, "291": {"id": 291, "abstracts": ["**Description:** Over the course of the 2.5 hours of this workshop you will learn how to leverage both Python and MongoDB to build highly scalable, asynchronous applications based on microservices architecture. We will be building from scratch several different \"exotic\" services, using a variety of datasets, that together we can mashup into a consolidated application using our own laptops. \r\n\r\nWe will start by introducing several technologies that we will be using (e.g. Python, Flask, MongoDB, AngularJS) and take a ten-thousand foot overview of micro services architecture.\r\nIn the second half of the workshop, we will break into teams that will each take charge in implementing a microservice that will comprise our final application. \r\n\r\nThis a fully hands-on workshop.\r\n\r\n**Learning objectives:** \r\n\r\n - Benefits of microservice architectures\r\n\r\n - MongoDB schema design \r\n\r\n - MongoDB query optimization and profiling \r\n\r\n - Basic understanding of AngularJS \r\n\r\n - Flask as REST API platform\r\n\r\n**Target Audience:**\r\nThis workshop is recommended to software developers eager to understand more about MongoDB and how to build async calls. Coding skills and basic understanding of Python is required. Prior experience with AngularJS and Flask is welcomed.\r\n\r\n**Technical Requirement:**\r\nThe attendee should bring their own laptop with MongoDB and Python (>2.7) installed. One should have administration grants over their system because we will need to expose ports and other communications to the network. The datasets and project instructions will be provided on site.\r\n\r\n"], "have_tickets": [true], "title": "Building Async Microservices", "speakers": "Norberto Leite", "track_title": "", "timerange": "2015-07-22 11:00:00, 2015-07-22 13:30:00", "duration": 150, "tags": ["AngularJS", "mongodb", "flask", "api", "Microservices"]}, "292": {"id": 292, "abstracts": ["The aim is to cover the basics of setting up a simple Django site, but using full, rigorous TDD at every step along the way.\r\n\r\nThe tutorial is based on the first few chapters of my book, which is available (for free!) online for you to follow up with after the session, so that you can embed what you've learned. [www.obeythetestinggoat.com](http://www.obeythetestinggoat.com)\r\n\r\nWe'll learn:\r\n\r\n - how to set up functional tests with Selenium\r\n - how to set up Django\r\n - how to run Django unit tests\r\n - how TDD actually works in practice: the unit test / code cycle where we re-run the tests after each tiny, incremental change to the code\r\n - all the basics of Django like views, models and templates.\r\n\r\nWe'll talk about what to test, what not to test, what the point of all this testing is anyway, you'll get a real hands-on feeling for how it works, and I promise to make it all at least moderately entertaining!\r\n\r\nAnd it's all in Python 3 :)\r\n\r\n**Please come prepared!** you'll need:\r\n\r\n- Python 3.4\r\n- Firefox\r\n- Django 1.8\r\n- Selenium\r\n\r\nYou'll find full instructions [here](http://chimera.labs.oreilly.com/books/1234000000754/pr02.html) -- do email me if you have any problems, I'm happy to help. obeythetestinggoat@gmail.com", "", ""], "have_tickets": [true], "title": "TDD for web development, from scratch", "speakers": "Harry Percival", "track_title": "", "timerange": "2015-07-24 11:00:00, 2015-07-24 13:30:00", "duration": 150, "tags": ["tdd", "unit-testing", "selenium", "django", "python3", "Testing"]}, "326": {"id": 326, "abstracts": ["Do you know what happens every time you use the **@** symbol in Python? Do you know how to implement a decorator to be customisable at _decoration time_ or to internally store a state? \r\n\r\nAfter attending this training you will be able to answer _yes_ to all the previous questions!\r\n\r\nThe content of the session can be split in 3 main blocks:\r\n\r\n - 1/ Some Python basic concepts\r\n - Scopes\r\n - Namespaces\r\n - Closures\r\n - 2/ Implement and understand a basic decorator\r\n - 3/ Advanced decorators\r\n - Generators of decorators\r\n - Classes as decorators\r\n - Decoration of classes\r\n\r\nRequirements:\r\n\r\n - **Intermediate Python level**. Attendees must have previous knowledge of Python and should be somehow familiar with the notation @ to decorate a function or class.\r\n - Bring **your own laptop** with Python installed and ready to solve some coding exercises.\r\n\r\nPS: I also submitted a talk proposal which partially covers the first part of the training: [https://ep2015.europython.eu/conference/talks/decorators-demystified][1]\r\n\r\n [1]: https://ep2015.europython.eu/conference/talks/decorators-demystified\r\n", "", ""], "have_tickets": [true], "title": "Python decorators in detail", "speakers": "Pablo Enfedaque", "track_title": "", "timerange": "2015-07-24 11:00:00, 2015-07-24 13:30:00", "duration": 150, "tags": ["namespaces", "training", "python", "scopes", "decorators", "closures"]}, "373": {"id": 373, "abstracts": ["New to Python? Come along to the beginners' day! It\u2019s designed to give you a crash-course in Python, and the ecosystem around it, to give you the context you need to get the most out of EuroPython. Suitable for total beginners, as well as people who already know a little programming. Bring your laptop, as a large part of the day will be devoted to learning Python on your own PC.\r\n\r\n*This session will be presented in English (although a few of the coaches do speak basic Spanish, French and Italian). Note there are also some Spanish-language Beginner sessions scheduled for day 2 of the conference.*\r\n\r\n**Morning:**\r\n\r\n - 11AM-11:30AM Intro to Python and programming.\r\n - 11:30AM-1PM Self-directed learning with coaches. Tutorials provided for beginner and experienced programmers.\r\n - 1PM-1:30PM Q&A and recap\r\n\r\n**Afternoon:**\r\n\r\n - 3:15PM: Intro to the Python ecosystem: some topics and bits of jargon that are bound to come up this week: open source, free software, github, packages, pip, pypi, scientific computing, scipy, numpy, pandas, ipython notebook, web frameworks, django, flask, asyncio, the BDFL, the Zen of Python, etc etc. What are the tools, areas of interest, in-jokes, people of note.\r\n - 4:30PM: More self-directed learning with coaches.\r\n - 5PM: \"How to get the best out of the conference\" session -- suggested talks, tips on asking questions, FAQs like what are open spaces / sprints / birds-of-a-feather sessions, etc.\r\n\r\nWe need to get an idea of numbers for this session, so if you are interested in attending, please drop a quick email to obeythetestinggoat@gmail.com\r\n\r\n"], "have_tickets": [true], "title": "Beginners' Day", "speakers": "Harry Percival", "track_title": "Room B Terrace", "timerange": "2015-07-20 11:00:00, 2015-07-20 13:30:00", "duration": 180, "tags": ["python", "introduction"]}, "243": {"id": 243, "abstracts": ["Learn how to use docker-compose and docker to create a development environment that you can use to mimic your production environment. \r\n\r\nLearn how to:\r\n\r\n* create a Dockerfile\r\n * What is a Docker File\r\n * How to utilize Docker's caching to optimize docker build\r\n * How to abstract common components to other docker images\r\n* use Docker-Hub\r\n * create auto builds\r\n * use web-hooks\r\n* use docker-compose\r\n * When to use a prebuilt image vs building from scratch\r\n* deploy your container to a VM\r\n\r\nClass will be mostly informational. BUT you are encouraged to play along. \r\n\r\nHardware requirements: \r\n\r\n* Computer that can run VirtualBox. \r\n\r\nSoftware requirements:\r\n\r\n* Docker CLI 1.6+\r\n* Docker Machine (latest)\r\n* Docker Compose 1.2+\r\n\r\nIf you plan on playing along, please make sure that you have all these installed already. "], "have_tickets": [true], "title": "Intro to Web Development with Docker", "speakers": "Nick Lang", "track_title": "", "timerange": "2015-07-20 11:00:00, 2015-07-20 13:30:00", "duration": 150, "tags": ["web", "development-process", "docker", "Development"]}, "376": {"id": 376, "abstracts": ["Workshop time: 2:00pm - 7:00pm\r\n\r\nThis is a half-day version of the SRE Classroom event that has been run successfully at Google offices and conferences around the world. We expect this event to appeal to senior and experienced engineers.\r\n\r\nThe workshop problem will be a real-world large-scale engineering problem that requires some distributed-systems knowhow to tackle. Attendees will work in groups with Googlers on the problem, trying to come up with:\r\n\r\n - A high-level design that scales horizontally\r\n - Initial SLIs, SLOs\r\n - Estimates for hardware required to run each component\r\n - If time permits, monitoring design and disaster testing scenarios\r\n\r\nAttendees will be provided with a workbook that guides them through tackling a problem like this, with some worked examples, so junior attendees should be able to make progress and learn too. \r\n\r\nSign-up here (seats are limited.)", "", ""], "have_tickets": [true], "title": "SRE Classroom", "speakers": "Sidnei da Silva", "track_title": "Room B Terrace", "timerange": "2015-07-21 14:00:00, 2015-07-21 17:00:00", "duration": 180, "tags": ["cloud", "google", "class"]}, "105": {"id": 105, "abstracts": ["Become a data wrangler with Python! This course will introduce you to the core concepts of data analysis with Python. We'll cover libraries that allow you to easily clean and set up your initial dataset, importing data from all different file types and standards. We'll introduce some basic libraries to help with statistics and analysis and then cover how to document and explore your findings. \r\n\r\nIt's assumed you have a working understanding of Python and it's data types and structures, and that you've used and understand Python for basic scripting. It's also assumed you haven't done much in terms of data analysis, and you'd like to learn more. If this is you, welcome! ", "", ""], "have_tickets": [true], "title": "Introduction to Data Analysis", "speakers": "Katharine Jarmul", "track_title": "", "timerange": "2015-07-23 11:00:00, 2015-07-23 13:30:00", "duration": 150, "tags": ["Beginners", "scraping", "data-science", "analytics", "Database", "e-gov", "pandas", "api", "oauth2", "data", "Coding"]}, "130": {"id": 130, "abstracts": ["Transducers \u2013 a portmanteau of \u2018transform reducers\u2019 \u2013 are a new functional programming concept, which were first introduced into the Clojure programming language. Although transducers are actually pretty straightforward in retrospect, wrapping your brain around them can be challenging. \r\n\r\nTransducers allow us to fuse multiple data processing operations together so they can be applied in a single pass over a data series \u2013 similar to how Python generator functions allow us to process iterable series. However, unlike generator functions they are completely decoupled from the data series abstraction and can be used on eager sequences, lazy iterables, coroutine-based push events and events such as those modelled by Reactive Extensions for Python (RxPy). \r\n\r\nIn this workshop, we introduce transducers by implementing them from scratch in Python 3. We\u2019ll start with the familiar staples of functional programming, map(), filter() and reduce(), and derive transducers from first principles. We\u2019ll work towards a set of general tools which works with eager collections, lazy \u2018pull\u2019 sequences, and coroutine \u2018push\u2019 event streams and RxPy. Along the way we\u2019ll cover stateful transducers and transducer composition, demonstrating that transducers are both more general, and more fundamental, than the functional programming tools baked into Python and many other languages.\r\n\r\nThere are no prerequisites for this workshop as we stick to core Python 3 language features although an enthusiasm for a functional programming style will be sure to help attendees get the most out of this session.", "", ""], "have_tickets": [true], "title": "Functional Programming with Transducers in Python", "speakers": "Austin Bingham", "track_title": "Room A4", "timerange": "2015-07-23 14:30:00, 2015-07-23 17:30:00", "duration": 180, "tags": ["python", "functional", "fun", "Functional Programming"]}, "331": {"id": 331, "abstracts": ["It is very hard to be a scientist without knowing how to write code, \r\nand nowadays **Python** is probably the programming language of \r\nchoice in many research fields.\r\nThis is mainly because the Python ecosystem includes a lot of tools and libraries \r\nfor many research tasks: `pandas` for *data analysis* , \r\n`networkx` for *social network analysis*, `nltk` for *natural language processing*,\r\n`scikit-learn` for *machine learning*, and so on.\r\n\r\nMost of these libraries relies (or are built on top of) `numpy`.\r\nTherefore, `numpy` is a crucial component of the common Python\r\nstack used for numerical analysis and data science.\r\n\r\nOn the one hand, NumPy code tends to be much cleaner (and faster) than \r\n\"straight\" Python code that tries to accomplish the same task. \r\nMoreover, the underlying algorithms have \r\nbeen designed with high performance in mind.\r\n\r\nThis training will be organised in two parts: the first part is \r\nintended to provide most of the essential concepts \r\nneeded to become confident with NumPy data structures and functions.\r\n\r\nIn the second part, some examples of data analysis libraries and code\r\nwill be presented, where NumPy takes a central role.\r\n\r\nHere is a list of software used to develop and test the code examples presented\r\nduring the training:\r\n\r\n* Python 3.x (2.x would work as well)\r\n* iPython 2.3+ (with **notebook support**): `pip install ipython[notebook]`\r\n* numpy 1.9+\r\n* scipy 0.14+\r\n* scikit-learn 0.15+\r\n* pandas 0.8+\r\n\r\nThe training is meant to be mostly introductory, thus it is perfectly suited\r\nfor **beginners**. However, a good proficiency in Python programming is (at least)\r\nrequired."], "have_tickets": [true], "title": "Numpy arrays: the weapons of a data scientist", "speakers": "Valerio Maggio", "track_title": "", "timerange": "2015-07-21 11:00:00, 2015-07-21 13:30:00", "duration": 150, "tags": ["scipy", "numpy", "data-science", "analytics"]}, "175": {"id": 175, "abstracts": ["The py.test tool presents a rapid and simple way to write tests for your Python code. This training gives a quick introduction with exercises into some distinguishing features. We'll do exercises where we get existing non-pytest test suites to run with pytest and discuss migration strategies. We'll finish with discussing topics and questions of participants related to their own test suites and usages.\r\n\r\nThis is the planned outline:\r\n\r\n- (30 minutes) pytest feature walkthrough: automatic test discovery, assert\r\n statement, modular parametrizable fixtures, 150 plugins\r\n\r\n- (60 minutes) pytest fixture mechanism: dependency injection, declaring\r\n and using function/module/session scoped fixtures, using fixtures\r\n from fixture functions, parametrizing fixtures. Exercises.\r\n\r\n- (30 minutes): running nose/unittest/trial/Django suites with pytest.\r\n Discussing advantages and limitations. Exercise with a select\r\n existing real-life open source project.\r\n\r\n- (30 minutes): Strategies for a) migrating to pytest b) using\r\n \"autouse\" fixtures in conjunction with XUnit-based\r\n setup/tearodwn methods. Exercise.\r\n\r\n- (30 minutes): open space for questions and interactively solving\r\n pytest/unittest integration problems on real-life problems\r\n as time permits.\r\n", "", ""], "have_tickets": [true], "title": "pytest - simple, rapid and fun testing with Python", "speakers": "Florian Bruhin", "track_title": "", "timerange": "2015-07-20 14:30:00, 2015-07-20 17:30:00", "duration": 180, "tags": ["automation", "test", "pytest"]}, "120": {"id": 120, "abstracts": ["[OpenStack][1] es un conjunto de herramientas de software que permiten la construcci\u00f3n y mantenimiento de plataformas de _cloud computing_ para nubes p\u00fablicas y privadas. Permite a sus usuarios desplegar m\u00e1quinas virtuales y otras instancias que manejan diferentes tareas para la administraci\u00f3n de un entorno de _cloud computing_ _on the fly_. Considerando la complejidad de la arquitectura del c\u00f3digo que hace de esto una realidad, establecer el entorno de desarrollo y comenzar a contribuir puede ser una tarea agobiante.\r\n\r\nPero empezar a ser un contribuyente no deber\u00eda ser un proceso dif\u00edcil si comienzas con el pie derecho. Hay algunos detalles que, si los pudieras conocer de antemano, har\u00edan que dar tus primeros pasos no sea una tarea tan complicada.\r\n\r\nEn esta presentaci\u00f3n daremos una explicaci\u00f3n breve de cu\u00e1les son las herramientas usadas por la comunidad de OpenStack y c\u00f3mo debes configurarlas para empezar a contribuir. Adem\u00e1s cubriremos c\u00f3mo el proceso de desarrollo funciona, incluyendo c\u00f3mo encontrar y arreglar un _bug_, c\u00f3mo hacer una nueva propuesta de desarrollo, c\u00f3mo probar tus cambios antes de enviar un parche y c\u00f3mo funciona el proceso de revisi\u00f3n.\r\n\r\nHaremos todo esto usando un _script_ que automatiza el despliege del entorno de desarrollo llamado [DevStack][2]. Mientras que el _script_ es ejecutado y descarga/configura todas las dependencias, explicaremos cada uno de los pasos para empezar a contribuir. Finalmente, con el entorno de desarrollo listo, repasaremos las listas de bugs y empezaremos a analizar el c\u00f3digo.\r\n\r\nPara el final del taller, tendr\u00e1s todos las herramientas y conocimientos necesarios para poder comenzar a contribuir a un proyecto de OpenStack.\r\n\r\nRequerimientos m\u00ednimos: Procesador de 1 gigahertz (GHz) o m\u00e1s 32-bit (x86) o 64-bit (x64), 4GB RAM, 10GB HD\r\nRequerimientos recomendados: Procesador de 1 gigahertz (GHz) o m\u00e1s 32-bit (x86) o 64-bit (x64), 8GB RAM, 20GB HD\r\n\r\nTambi\u00e9n aconsejamos que los participantes tengan una herramienta de virtualizaci\u00f3n preinstalada y, si es posible, que inicien una instancia con Ubuntu 14.04 LTS.\r\n\r\n [1]: https://www.openstack.org/\r\n [2]: http://docs.openstack.org/developer/devstack/", "", ""], "have_tickets": [true], "title": "Manos a la obra con OpenStack: La gu\u00eda paso a paso para comenzar a contribuir a OpenStack", "speakers": "Victoria Martinez de la Cruz", "track_title": "", "timerange": "2015-07-21 14:30:00, 2015-07-21 17:30:00", "duration": 180, "tags": ["python", "cloud", "open-source", "linux", "OpenStack"]}, "202": {"id": 202, "abstracts": ["A workshop introducing participants to physical computing with Python and Raspberry Pi.\r\n\r\nLearn how to build applications with Python that interact with the physical world - using the Pi's GPIO (general purpose input & output) pins and its camera module and their respective Python libraries.\r\n\r\nWe'll start simple - flashing LEDs, using push buttons, basic use of the camera module, then introduce sensors such as infra-red motion detectors, temperature sensors and light sensors, then we'll build interactive applications (embedded apps, desktop apps and web apps) using the sensors and camera module for a variety of different purposes.\r\n\r\nEmbedded or physical computing is not just for C programmers or hardcore Linux engineers - I'll show you how to get up and running with your first physical world application and show how easy it is to control GPIOs and the camera module from the language you know and love (and can read). This will prepare you for making your own hardware project idea a reality - build a security system, a robot or a home automation system.\r\n\r\nThis workshop is well suited to beginners with a basic understanding of Python code, but is also suitable for those more experienced with Python but with little or no experience with physical computing.", "", ""], "have_tickets": [true], "title": "Explore physical computing with Python and Raspberry Pi", "speakers": "Ben Nuttall", "track_title": "", "timerange": "2015-07-23 14:30:00, 2015-07-23 17:30:00", "duration": 180, "tags": ["education", "raspberrypi"]}, "171": {"id": 171, "abstracts": ["This tutorial explores some real-world solutions to make your Python code run on different processes, possibly on different computers. \r\n\r\nTools like Pyro, Celery, Python-RQ will be discussed. Ways to run your Python code on a supercomputer/cluster using a batch job scheduler and packages for local parallelism such as multiprocessing and concurrent.futures will be touched upon as well. \r\n\r\nThe emphasis is on practical examples and lessons learned. The assumption is that the attendee is familiar with Python and basic OOP concepts.", "", ""], "have_tickets": [true], "title": "Distributed Programming With Python", "speakers": "Francesco Pierfederici", "track_title": "", "timerange": "2015-07-23 11:00:00, 2015-07-23 13:30:00", "duration": 150, "tags": ["redis", "amqp", "distributed-systems", "performance", "concurrency", "computing", "cloud", "rabbitmq", "celery"]}, "153": {"id": 153, "abstracts": ["Highly-constrained, large-dimensional, and non-linear optimizations are found at the root of most of today\u2019s forefront problems in statistics, quantitative finance, risk, operations research, materials design, and other predictive sciences. Tools for optimization, however, have not changed much in the past 40 years -- until very recently. The abundance of parallel computing resources has stimulated a shift away from using reduced models to solve statistical and predictive problems, and toward more direct methods for solving high-dimensional nonlinear optimization problems.\r\n\r\nThis tutorial will introduce modern tools for solving optimization problems -- beginning with traditional methods, and extending to solving high-dimensional non-convex optimization problems with highly nonlinear constraints. We will start by introducing the cost function, and it\u2019s use in local and global optimization. We will then address how to monitor and diagnose your optimization convergence and results, tune your optimizer, and utilize compound termination conditions. This tutorial will discuss building and applying box constraints, penalty functions, and symbolic constraints. We will then demonstrate methods to efficiently reduce search space through the use of robust optimization constraints. Real-world inverse problems can be expensive, thus we will show how to enable your optimization to seamlessly leverage parallel computing. Large-scale optimizations also can greatly benefit from efficient solver restarts and the saving of state. This tutorial will cover using asynchronous computing for results caching and archiving, dynamic real-time optimization, and dimensional reduction. Next we will discuss new optimization methods that leverage parallel computing to perform blazingly-fast global optimizations and n-dimensional global searches. Finally, we will close with applications of global optimization in statistics and quantitative finance.\r\n\r\nThe audience need not be an expert in optimization, but should have interest in solving hard real-world optimization problems. We will introduce the [_mystic_][1] optimization framework -- then begin with a walk through some introductory optimizations, learning how to build confidence in understanding your results. By the end of the tutorial, participants will have working knowledge of how to use modern constrained optimization tools, how to enable their solvers to leverage high-performance parallel computing, and how to utilize legacy data and surrogate models in statistical and predictive risk modeling.\r\n\r\n*PREREQUISITES*: This tutorial will assume attendees have basic knowledge of _python_ and _numpy_, and is intended for scientific developers who are interested in utilizing optimization to solve real-world problems in statistics, quantitative finance, and predictive sciences. The tutorial will require _python_, _numpy_, and _mystic_ to be installed, and optionally installs of _matplotlib_, _scipy_, _pathos_, and _klepto_. All packages can be installed under _Anaconda_ or _Canopy_, or with _setuptools_ or _pip_.\r\n\r\n [1]: https://github.com/uqfoundation\r\n", "Highly-constrained, large-dimensional, and non-linear optimizations are found at the root of most of today\u2019s forefront problems in statistics, quantitative finance, risk, operations research, materials design, and other predictive sciences. Tools for optimization, however, have not changed much in the past 40 years -- until very recently. The abundance of parallel computing resources has stimulated a shift away from using reduced models to solve statistical and predictive problems, and toward more direct methods for solving high-dimensional nonlinear optimization problems.\r\n\r\nThis tutorial will introduce modern tools for solving optimization problems -- beginning with traditional methods, and extending to solving high-dimensional non-convex optimization problems with highly nonlinear constraints. We will start by introducing the cost function, and it\u2019s use in local and global optimization. We will then address how to monitor and diagnose your optimization convergence and results, tune your optimizer, and utilize compound termination conditions. This tutorial will discuss building and applying box constraints, penalty functions, and symbolic constraints. We will then demonstrate methods to efficiently reduce search space through the use of robust optimization constraints. Real-world inverse problems can be expensive, thus we will show how to enable your optimization to seamlessly leverage parallel computing. Large-scale optimizations also can greatly benefit from efficient solver restarts and the saving of state. This tutorial will cover using asynchronous computing for results caching and archiving, dynamic real-time optimization, and dimensional reduction. Next we will discuss new optimization methods that leverage parallel computing to perform blazingly-fast global optimizations and n-dimensional global searches. Finally, we will close with applications of global optimization in statistics and quantitative finance.\r\n\r\nThe audience need not be an expert in optimization, but should have interest in solving hard real-world optimization problems. We will introduce the [_mystic_][1] optimization framework -- then begin with a walk through some introductory optimizations, learning how to build confidence in understanding your results. By the end of the tutorial, participants will have working knowledge of how to use modern constrained optimization tools, how to enable their solvers to leverage high-performance parallel computing, and how to utilize legacy data and surrogate models in statistical and predictive risk modeling.\r\n\r\nintroduction to optimization (30 min)\r\n-------------------------------------\r\n - the cost function\r\n - local and global optimization\r\n - monitoring and diagnosing convergence and optimization results\r\n - solver tuning and compound termination conditions\r\n - Exercise(s)\r\n\r\npenalty functions and constraints (30 min)\r\n------------------------------------------\r\n - box constraints\r\n - applying penalty functions\r\n - reducing search space with constraints\r\n - applying symbolic constraints\r\n - Exercise(s)\r\n\r\nleverage asynchronous and parallel computing (30 min)\r\n-----------------------------------------------------\r\n - parallel function evaluations and solver iterations \r\n - solver restarts and saving state\r\n - dynamic real-time optimization\r\n - automated dimensional reduction\r\n - Exercise(s)\r\n\r\nensemble optimization and global searches (30 min)\r\n--------------------------------------------------\r\n - blazingly-fast global optimization\r\n - using global search to find all minima, maxima, and turning points\r\n - building a surrogate model through optimal surface interpolation\r\n - Exercise(s)\r\n\r\noptimization in parameter sensitivity, statistics, and risk modeling (30 min)\r\n-----------------------------------------------------------------------------\r\n - the cost metric\r\n - statistical and probabilistic constraints\r\n - information constraints from surrogate models and legacy data\r\n - application to quantitative finance and statistics\r\n - Exercise(s)\r\n\r\nPREREQUISITES:\r\nThis tutorial will assume attendees have basic knowledge of _python_ and _numpy_, and is intended for scientific developers who are interested in utilizing optimization to solve real-world problems in statistics, quantitative finance, and predictive sciences. The tutorial will require _python_, _numpy_, and _mystic_ to be installed, and optionally installs of _matplotlib_, _scipy_, _pathos_, and _klepto_. All packages can be installed under _Anaconda_ or _Canopy_, or with _setuptools_ or _pip_.\r\n\r\n [1]: https://github.com/uqfoundation", ""], "have_tickets": [true], "title": "Modern optimization methods in Python", "speakers": "Michael McKerns", "track_title": "", "timerange": "2015-07-20 11:00:00, 2015-07-20 13:30:00", "duration": 150, "tags": ["optimization", "predictions", "framework", "data-science", "analytics"]}, "374": {"id": 374, "abstracts": ["Django Girls is a free, one-day workshop for women who are new to programming. During the workshop, our participants will learn how to build their first Web application using Python, Django, HTML, and CSS. Participants were selected in advance for the workshop, and our coaches are all EuroPython attendees who volunteered to mentor the participants through the process.\r\n\r\nThis year's workshop is organized by [Mikey Ariel][1] and [Petr Viktorin][2], with support from the [Django Girls][3] global organization. Since the first Django Girls workshop was held at EuroPython 2014, this workshop also marks our first birthday! After the workshop, we will operate a booth in collaboration with PyLadiesES throughout the conference, so come say hello!\r\n\r\nOfficial website: [http://djangogirls.org/europython2015/][4]\r\n\r\nTwitter: [@DjangoGirlsEP15][5]\r\n\r\n [1]: https://twitter.com/thatdocslady\r\n [2]: https://twitter.com/EnCuKou\r\n [3]: http://djangogirls.org/\r\n [4]: http://djangogirls.org/europython2015/\r\n [5]: https://twitter.com/DjangoGirlsEP15\r\n"], "have_tickets": [true], "title": "Django Girls Workshop", "speakers": "Mikey Ariel", "track_title": "Room C1", "timerange": "2015-07-20 11:00:00, 2015-07-20 13:30:00", "duration": 180, "tags": ["workshop", "django-girls"]}, "166": {"id": 166, "abstracts": ["This training is about how to keep all your software stack under control using mainly Python technologies.\r\n\r\nWe will run some full stack deployment examples using things like Pyramid, Buildout, Ansible and Docker. \r\n\r\nWe will try to apply the Zen of Python into our DevOps infrastructure in order to make happy all stakeholders in your company/organization.\r\n\r\nThe session is divided in two sections, the first one we will cover full stack development strategies, and we will discuss subjects like design patterns, code organization and web servers, among others. We will compare how other \u201cde facto\u201d or \u201centerprise\u201d technologies in the industry are doing. \r\n\r\nIn the second part we will see how to prepare your application and power your deployments using Docker containers (www.docker.com) and Buildout (www.buildout.org).\r\n\r\nEach part of the training session is accompanied by runnable source code and documentation.", "Este curso es acerca de como mantener tu stack de software bajo control usando principalmente tecnolog\u00edas Python.\r\n\r\nVamos a ejecutar algunos ejemplos completos de c\u00f3digo que abarquen todas las capas de desarrollo e instalaci\u00f3n usando cosas como Pyramid, Buildout, Ansible y Docker.\r\n\r\nVamos a tratar de aplicar de aplicar el Zen de Python en nuestra infraestructura DevOps con el fin the hacer felices a todos los involucrados en tu empresa/organizaci\u00f3n.\r\n\r\nLa sesi\u00f3n se divide en dos secciones, la primera abarcar\u00e1 estrategias de desarrollo 'full stack' y discuteremos temas como patrones de dise\u00f1o, organizaci\u00f3n de c\u00f3digo, y servidores web, entre otros. Vamos a comparar como otras tecnolog\u00edas \"de facto\" o \"empresariales\" lo est\u00e1n haciendo en la industria.\r\n\r\nEn la segunda parte vamos a ver como preparar tu aplicaci\u00f3n y tus instalaciones usando contenedores docker (www.docker.com) y buildout (www.buildout.org)\r\n\r\nCada parte del entrenamiento es acompa\u00f1ada por c\u00f3digo ejecutable y documentaci\u00f3n.", ""], "have_tickets": [true], "title": "Full Stack + DevOps using Pyramid, Buildout and Docker", "speakers": "Alvaro Aguirre", "track_title": "", "timerange": "2015-07-22 14:30:00, 2015-07-22 17:30:00", "duration": 180, "tags": ["redis", "ansible", "Buildout", "Virtualization", "Enterprise", "DevOps", "docker", "SQLAlchemy", "fabric", "elasticsearch", "Pyramid"]}}, "Keynotes": {"365": {"id": 365, "abstracts": ["In this keynote, Ola and Ola will take you on a fantastic journey to the magical world of little Liz, who is totally enchanted by technology. The story of Liz will show that with a little bit of magic, curiosity, courage and hard work, you can defeat all the obstacles standing in your way. You'll discover with her that making big and scary things is easier when you're not doing them alone. Because sometimes, one magical spell, the helpful hand of a friend or this shiny sparkle is all it takes to make a dent in one's universe.", "", ""], "have_tickets": [true, true], "title": "Keynote: It's Dangerous To Go Alone, Take This: The Power of a Community", "speakers": "Ola Sitarska, Ola Sendecka", "track_title": "Google Room", "timerange": "2015-07-20 09:30:00, 2015-07-20 10:30:00", "duration": 60, "tags": ["diversity", "python", "community"]}, "366": {"id": 366, "abstracts": ["You've solved the issue of process-level reproducibility by packaging up\r\nyour apps and execution environments into a number of Docker containers.\r\nBut once you have a lot of containers running, you'll probably need to\r\ncoordinate them across a cluster of machines while keeping them healthy and\r\nmaking sure they can find each other. Trying to do this imperatively can\r\nquickly turn into an unmanageable mess! Wouldn't it be helpful if you could\r\ndeclare to your cluster what you want it to do, and then have the cluster\r\nassign the resources to get it done and to recover from failures and scale\r\non demand?\r\n>\r\nKubernetes (http://kubernetes.io) is an open source, cross platform cluster\r\nmanagement and container orchestration platform that simplifies the complex\r\ntasks of deploying and managing your applications in Docker containers. You\r\ndeclare a desired state, and Kubernetes does all the work needed to create\r\nand maintain it. In this talk, we\u2019ll look at the basics of Kubernetes and\r\nat how to map common applications to these concepts. This will include a\r\nhands-on demonstration and visualization of the steps involved in getting\r\nan application up and running on Kubernetes.", "", ""], "have_tickets": [true], "title": "Keynote: So, I have all these Docker containers, now what?", "speakers": "Mandy Waite", "track_title": "", "timerange": "", "duration": 60, "tags": ["python", "cloud", "docker"]}, "361": {"id": 361, "abstracts": ["This is *your* keynote! I will have some prepared remarks on the state of the Python community and Python's future directions, but first and foremost this will be an interactive Q&A session.", "", ""], "have_tickets": [true], "title": "Keynote: Python now and in the future", "speakers": "Guido van Rossum", "track_title": "Google Room", "timerange": "2015-07-21 09:30:00, 2015-07-21 10:30:00", "duration": 60, "tags": ["python"]}, "364": {"id": 364, "abstracts": ["The problem of introducing children to programming and computer science has\r\nseen growing attention in the past few years. Initiatives like Raspberry\r\nPi, Code Club, code.org, (and many more) have been created to help solve\r\nthis problem. With the introduction of a national computing curriculum in\r\nthe UK, teachers have been searching for a text based programming language\r\nto help teach computational thinking as a follow on from visual languages\r\nlike Scratch.\r\n\r\nThe educational community has been served well by Python, benefiting from\r\nits straight-forward syntax, large selection of libraries, and supportive\r\ncommunity. Education-focused summits are now a major part of most major\r\nPython Conferences. Assistance in terms of documentation and training is\r\ninvaluable, but perhaps there are technical means of improving the\r\nexperience of those using Python in education. Clearly the needs of\r\nteachers and their students are different to those of the seasoned\r\nprogrammer. Children are unlikely to come to their teachers with\r\nfrustrations about the Global Interpreter Lock! But issues such as\r\nusability of IDEs or comprehensibility of error messages are of utmost\r\nimportance.\r\n\r\nIn this keynote, Carrie Anne will discuss existing barriers to Python\r\nbecoming the premier language of choice for teaching computer science, and\r\nhow learning Python could be helped immensely through tooling and further\r\nsupport from the Python developer community.\r\n", "", ""], "have_tickets": [true], "title": "Keynote: Designed for Education: A Python Solution", "speakers": "Carrie Anne Philbin", "track_title": "Google Room", "timerange": "2015-07-23 09:30:00, 2015-07-23 10:30:00", "duration": 60, "tags": ["python"]}, "363": {"id": 363, "abstracts": ["In this talk, I'll discuss the recent rise of immutable state concepts in languages and network protocols. And how the advent of hash-based data structures and replication strategies are shaking the client/server web service paradigm which rests on managing mutable state through http. By contrast, building on git, bittorrent and other content addressed data structures provides for a more secure, efficient decentralized communication topology. There are projects, thoughts and talk to create new web standards to bring such technologies to mass deployment and fuel a new wave of decentralization. What can Python bring to the table? ", "", ""], "have_tickets": [true], "title": "Keynote: Towards a more effective, decentralized web", "speakers": "Holger Krekel", "track_title": "", "timerange": "", "duration": 60, "tags": ["python"]}}, "Other sessions": {"371": {"id": 371, "abstracts": ["Recruiting sponsors presentation.", "", ""], "have_tickets": [false], "title": "Recruiting sponsors presentation", "speakers": "To be announced", "track_title": "Google Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:30:00", "duration": 45, "tags": ["recruiting"]}}, "Help desks": {"334": {"id": 334, "abstracts": ["Scrapy is an open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way.\r\n\r\nThis helpdesk is run by members of Scrapinghub, where Scrapy was built and designed.", "", ""], "have_tickets": [true], "title": "Scrapy Helpdesk", "speakers": "Juan Riaza", "track_title": "", "timerange": "2015-07-21 10:00:00, 2015-07-21 13:00:00", "duration": 180, "tags": ["scrapy", "python", "scraping"]}, "248": {"id": 248, "abstracts": ["For this helpdesk session, I will be here to help people on ansible, be it for beginner usage or more advanced use cases ( or even bug reporting/fixing ).\r\n\r\nPrerequisite are simply to have a computer ( if needed by the question ) and familliarity with command line on a unix system ( but the more, the better )."], "have_tickets": [true], "title": "Ansible helpdesk", "speakers": "Michael Scherer", "track_title": "", "timerange": "2015-07-23 10:00:00, 2015-07-23 13:00:00", "duration": 180, "tags": ["yaml", "Operations", "CLI", "system-administration", "open-source", "linux", "ansible"]}, "369": {"id": 369, "abstracts": ["Plone help desk", "", ""], "have_tickets": [true], "title": "Plone help desk", "speakers": "Paul Roeland", "track_title": "", "timerange": "2015-07-21 10:00:00, 2015-07-21 13:00:00", "duration": 180, "tags": ["web", "Plone", "CMS"]}, "47": {"id": 47, "abstracts": ["Bring us your broken README files, your cryptic API references, and your disheveled Wiki projects! Or, just come and chat with us about life, the universe, and everything docs. \r\n\r\nOur doc(tor)s are happy to assist with all things docs: from proofreading and restructuring content, optimizing contribution workflows, to automating API docs and L10N, implementing scalable and testable markup languages, and more! \r\n\r\nThe clinic will be staffed by:\r\n\r\n* [Mikey Ariel][1] , senior technical writer at Red Hat, community lead at Write the Docs EU, documentation evangelist, agile coach, has coffee - will travel.\r\n\r\n* [Maciej Szlosarczyk][2], senior technical writer at Symantec, Linux user in rehab, experiments with Django, Swagger, and Ember.js, can talk craft beer for hours.\r\n\r\n* [Paul Roeland][3] , open source and non-profit activist, fluent in Plone and conversational in Sphinx and Robot-screenshots, mixes a mean Martini.\r\n\r\n [1]: https://twitter.com/thatdocslady\r\n [2]: https://twitter.com/icejam_\r\n [3]: https://twitter.com/polyester"], "have_tickets": [true], "title": "The doc(tor)s are in! (Documentation Helpdesk)", "speakers": "Mikey Ariel", "track_title": "", "timerange": "2015-07-22 10:00:00, 2015-07-22 13:00:00", "duration": 180, "tags": ["Plone", "api", "autodoc", "education", "Best Practice", "agile", "documentation", "community", "communication", "django", "fun", "Sphinx", "translation", "internationalization", "i18n", "sphinxdocumentation"]}}} \ No newline at end of file diff --git a/ep2017/static/index.js b/ep2017/static/index.js deleted file mode 100644 index 746739c..0000000 --- a/ep2017/static/index.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - * jQuery scrollintoview() plugin and :scrollable selector filter - * - * Version 1.8 (14 Jul 2011) - * Requires jQuery 1.4 or newer - * - * Copyright (c) 2011 Robert Koritnik - * Licensed under the terms of the MIT license - * http://www.opensource.org/licenses/mit-license.php - */ -(function(f){var c={vertical:{x:false,y:true},horizontal:{x:true,y:false},both:{x:true,y:true},x:{x:true,y:false},y:{x:false,y:true}};var b={duration:"fast",direction:"both"};var e=/^(?:html)$/i;var g=function(k,j){j=j||(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(k,null):k.currentStyle);var i=document.defaultView&&document.defaultView.getComputedStyle?true:false;var h={top:(parseFloat(i?j.borderTopWidth:f.css(k,"borderTopWidth"))||0),left:(parseFloat(i?j.borderLeftWidth:f.css(k,"borderLeftWidth"))||0),bottom:(parseFloat(i?j.borderBottomWidth:f.css(k,"borderBottomWidth"))||0),right:(parseFloat(i?j.borderRightWidth:f.css(k,"borderRightWidth"))||0)};return{top:h.top,left:h.left,bottom:h.bottom,right:h.right,vertical:h.top+h.bottom,horizontal:h.left+h.right}};var d=function(h){var j=f(window);var i=e.test(h[0].nodeName);return{border:i?{top:0,left:0,bottom:0,right:0}:g(h[0]),scroll:{top:(i?j:h).scrollTop(),left:(i?j:h).scrollLeft()},scrollbar:{right:i?0:h.innerWidth()-h[0].clientWidth,bottom:i?0:h.innerHeight()-h[0].clientHeight},rect:(function(){var k=h[0].getBoundingClientRect();return{top:i?0:k.top,left:i?0:k.left,bottom:i?h[0].clientHeight:k.bottom,right:i?h[0].clientWidth:k.right}})()}};f.fn.extend({scrollintoview:function(j){j=f.extend({},b,j);j.direction=c[typeof(j.direction)==="string"&&j.direction.toLowerCase()]||c.both;var n="";if(j.direction.x===true){n="horizontal"}if(j.direction.y===true){n=n?"both":"vertical"}var l=this.eq(0);var i=l.closest(":scrollable("+n+")");if(i.length>0){i=i.eq(0);var m={e:d(l),s:d(i)};var h={top:m.e.rect.top-(m.s.rect.top+m.s.border.top),bottom:m.s.rect.bottom-m.s.border.bottom-m.s.scrollbar.bottom-m.e.rect.bottom,left:m.e.rect.left-(m.s.rect.left+m.s.border.left),right:m.s.rect.right-m.s.border.right-m.s.scrollbar.right-m.e.rect.right};var k={};if(j.direction.y===true){if(h.top<0){k.scrollTop=m.s.scroll.top+h.top}else{if(h.top>0&&h.bottom<0){k.scrollTop=m.s.scroll.top+Math.min(h.top,-h.bottom)}}}if(j.direction.x===true){if(h.left<0){k.scrollLeft=m.s.scroll.left+h.left}else{if(h.left>0&&h.right<0){k.scrollLeft=m.s.scroll.left+Math.min(h.left,-h.right)}}}if(!f.isEmptyObject(k)){if(e.test(i[0].nodeName)){i=f("html,body")}i.animate(k,j.duration).eq(0).queue(function(o){f.isFunction(j.complete)&&j.complete.call(i[0]);o()})}else{f.isFunction(j.complete)&&j.complete.call(i[0])}}return this}});var a={auto:true,scroll:true,visible:false,hidden:false};f.extend(f.expr[":"],{scrollable:function(k,i,n,h){var m=c[typeof(n[3])==="string"&&n[3].toLowerCase()]||c.both;var l=(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(k,null):k.currentStyle);var o={x:a[l.overflowX.toLowerCase()]||false,y:a[l.overflowY.toLowerCase()]||false,isRoot:e.test(k.nodeName)};if(!o.x&&!o.y&&!o.isRoot){return false}var j={height:{scroll:k.scrollHeight,client:k.clientHeight},width:{scroll:k.scrollWidth,client:k.clientWidth},scrollableX:function(){return(o.x||o.isRoot)&&this.width.scroll>this.width.client},scrollableY:function(){return(o.y||o.isRoot)&&this.height.scroll>this.height.client}};return m.y&&j.scrollableY()||m.x&&j.scrollableX()}})})(jQuery); - -$(function() { - var current = 0; - - var $sponsors = $('footer ul.sponsors li'); - - window.setInterval(function() { - if (current < $sponsors.length) { - current += 1; - } else { - current = 0; - } - - $sponsors.eq(current).scrollintoview({ - duration: 500, - direction: "vertical", - }); - }, 4000); -}); diff --git a/ep2017/static/jquery-2.1.4.min.js b/ep2017/static/jquery-2.1.4.min.js deleted file mode 100644 index 49990d6..0000000 --- a/ep2017/static/jquery-2.1.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n(" --> - - - - diff --git a/ep2017/templates/index.html b/ep2017/templates/index.html deleted file mode 100644 index d7ebc13..0000000 --- a/ep2017/templates/index.html +++ /dev/null @@ -1,255 +0,0 @@ - Talk Schedule - - - - - - - - - - - - - - - - - - - - - - - -
-

Logo

- - {# {{momentjs(timestamp).format('YYYY-MM-DD')}} #} -
- - -
- -

Current Talk:

- {% if next_talk[0] %} -

{{ next_talk[0].start }}

- {% endif %} -
- {% if next_talk[0] %} -

{{ next_talk[0].title }}

- {% else %} -

There is no actual talk, see when its going to be the next one...

- {% endif %} -
- -
-
-
-
Room
-
{{ room_name }}
-
-
-
-
-
Speaker
- {% if next_talk[0] %} -
{{ next_talk[0].speakers }}
- {% else %} -
No Speaker
- {% endif %} -
-
-
- -
- -
-
-
-

Upcoming talk

- {% if talks %} - {% for t in talks %} -

{{ t.end }}

-

: {{ t.title }} by {{ t.speakers }} ( {{ t.talk_type }} )

-
- {% endfor %} - {% else %} -

No next talks in the next hours... come tomorrow.

- {% endif %} -
-
- -
    -
  • -
  • -
  • -
  • -
-
- - - {#
-
- - -

INFORMATION

-
- - - - {% if talks_list %} -

WHATS HAPPENING IN EUROPYTHON 2015

- - - - - - - - - - - - - {% for track in talks_list %} - {% for t in talks_list[track]["current"] %} - - - - - - - - - {% endfor %} - {% endfor %} - -
TrackTalk titleSpeakersTalk typeFinish
{{ t.track_title }}{{ t.title }}{{ t.speakers }}{{ t.talk_type }}{{ t.end }}
- {% endif %} - - -
-#} - - - - - - diff --git a/ep2017/templates/menu.html b/ep2017/templates/menu.html deleted file mode 100644 index a46b480..0000000 --- a/ep2017/templates/menu.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - -

Available rooms:

-{% for i in options %} - -{% if "Hall" in i %} - {{ i }}
-{% else %} - {{ i }}
-{% endif %} - -{% endfor %} - - \ No newline at end of file diff --git a/ep2017/templates/multi_index.html b/ep2017/templates/multi_index.html deleted file mode 100644 index 445a1e8..0000000 --- a/ep2017/templates/multi_index.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - Talk Schedule - - - - - - - - - - - - - - - - - - - -
-

Logo

-
-
- -
-
- {# {{momentjs(timestamp).format('YYYY-MM-DD')}} #} -
-
-
- {% if not empty %} - {% for track in talks_list %} - {% for t in talks_list[track]["current"] %} -
-
-
-

{{t.start_hour}}

: {{ t.title }} ({{ t.talk_type }})

-
- -
-
-
-
-
Room
-
{{ t.track_title }}
-
-
- -
-
-
Speaker
-
{{ t.speakers }}
-
-
-
-
-
-
- {% endfor %} - {% endfor %} - {% else %} -
-
-
-

No talks at this time

-
-
-
- {% endif %} -
-
- -
- -
-
-
-
-
-
- {% if not empty %} -

Upcoming talk

- -
- {% for track in talks_list %} - {% for t in talks_list[track]["current"] %} -

{{ t.title }}

- {% endfor %} - {% endfor %} -
- {% endif %} -
-
-
- -
-
-
    -
  • -
  • -
  • -
  • -
  • -
  • - -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • - -
-
-
-
- - - - diff --git a/ep2018/__init__.py b/ep2018/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/ep2018/static/data/accepted_talks.json b/ep2018/static/data/accepted_talks.json deleted file mode 100644 index ae18508..0000000 --- a/ep2018/static/data/accepted_talks.json +++ /dev/null @@ -1,8195 +0,0 @@ -{ - "Closing session": { - "699": { - "abstract_short": "Closing Session", - "sub_title": "", - "timerange": "2016-07-22 17:30:00, 2016-07-22 18:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 699, - "speakers": "To be announced", - "title": "Closing Session", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Communication", - "Conferences and Meet-Ups", - "Euro Python and EPS" - ], - "abstract_long": [ - "Closing Session", - "", - "", - "" - ], - "abstract_extra": "Closing Session", - "tag_categories": [ - "Community", - "Community", - "Community" - ], - "emails": "alex@hendorf.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/closing-session", - "admin_type": "Closing session", - "companies": "" - } - }, - "Keynote": { - "711": { - "abstract_short": "Have you ever wondered how you could be your own boss? or how you could make money from your side project? or build the next Facebook or Uber.\r\n\r\nTo be a coder in today's world of work is to have amazing opportunities to design the business life you want.\r\n\r\nI've enjoyed the last 20 years without a 'real job', as company founder, freelancer and side-project-hacker.\r\n\r\nNow I am bootstrapping my current company to profitability. Listen to my stories and learn from my mistakes and successes.", - "sub_title": "How I used my technical skills to design the business life I want; and how you can too", - "timerange": "2016-07-18 09:15:00, 2016-07-18 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@rwillmer", - "id": 711, - "speakers": "Rachel Willmer", - "title": "20 years without a 'proper job'", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Track", - "Business" - ], - "abstract_long": [ - "Have you ever wondered how you could be your own boss? If so, then this talk is for you.\r\n\r\nMaybe you're working on a sideproject and wonder how you could make some money from it? Or maybe you have the idea for the next Facebook or Uber?\r\n\r\nTo be a coder in today's world of work is to have amazing opportunities to design the business life you want. You can work remotely; you can write books, or teach, or consult, with anyone anywhere. \r\n\r\nYou can have a crazy idea on Friday and have it running by Monday. Design your architecture to use cloud computing, so your tiny team can scale up your huge ideas. \r\n\r\nOr keep it small, and just earn some extra money with a Wordpress plugin, or a training course.\r\n\r\nIt has been 21 years since I last had a 'real job' and a regular income. \r\n\r\nI survived creating and running a company through the madness of the dotcom years. I made money from sideprojects, that I had started just for fun and for learning. I have freelanced without needing to use an agency to find the work.\r\n\r\nAnd now I'm bootstrapping my current business to profitability. Listen to my stories and learn from my mistakes and successes.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "", - "" - ], - "emails": "rachel@willmer.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-20-years-without-a-proper-job", - "admin_type": "Keynote", - "companies": "Luzme" - }, - "714": { - "abstract_short": "The BBC micro:bit is a small programmable device for children. A million of them have been handed out to the UK's 11 and 12 years olds. The Python Software Foundation was a partner in this moon-shot scheme and, thanks to the efforts of Damien George, MicroPython runs on the device.\r\n\r\nMy talk will tell the story of the project, describe Python's role in it and explain how the wider Python community can become involved. It may involve demonstrations, live coding and audience participation.", - "sub_title": "A million UK kids have been given a device that runs MicroPython. What could possibly go wrong?", - "timerange": "2016-07-18 13:45:00, 2016-07-18 14:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@ntoll", - "id": 714, - "speakers": "Nicholas Tollervey", - "title": "A Million Children (and MicroPython)", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "MicroPython", - "Fun and Humor", - "Internet of Things (IoT)", - "python" - ], - "abstract_long": [ - "The BBC micro:bit is a small programmable device for children. A million of them have been handed out to the UK's 11 and 12 years olds. The Python Software Foundation was a partner in this moon-shot scheme and, thanks to the efforts of Damien George, MicroPython (a full reimplementation of Python 3) runs on the device.\r\n\r\nMy talk will tell the story of the project, describe Python's role in it and explain how the wider Python community can become involved. It may involve demonstrations, live coding and audience participation.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Educational", - "Python", - "Everything Else", - "Hardware", - "" - ], - "emails": "ntollervey@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-a-million-children-and-micropython", - "admin_type": "Keynote", - "companies": "" - }, - "702": { - "abstract_short": "While Python the language is wonderful, the Python community and the personal, social, and professional benefits that flow from involvement in a community like ours are often more compelling. \r\n\r\nLearn about the goals of the Python Software Foundation and how everyone can take part to help build even better Python communities locally, regionally, and globally. I will also discuss some of our strengths as a community, and also look at some of the challenges we face going forward.\r\n", - "sub_title": "From Community Import Python", - "timerange": "2016-07-21 09:15:00, 2016-07-21 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@NaomiCeder", - "id": 702, - "speakers": "Naomi Ceder", - "title": "Come for the Language, Stay for the Community", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "python", - "Community" - ], - "abstract_long": [ - "Python is a powerful and flexible tool that many of us love and use in many ways. And yet, as wonderful as the language is, many would say that the community is even more attractive. This talk will focus on involvement in the Python community and what that means - in particular the many personal, social, and professional benefits that flow from involvement in a community like ours.\r\n\r\nI will also discuss what the Python Software Foundation does, what its goals and purpose are, and how everyone in the community can take part in the PSF to help build even better Python communities. This will include specific explanations of the membership model and how active contributors (both in terms of code and community organisation) can and should become full voting members of the PSF.\r\n\r\nI will also touch on our strengths, like our commitment to safe and inclusive spaces and our devotion to education, and also look at some of the challenges we face as a community going forward.", - "", - "", - "" - ], - "abstract_extra": "-", - "tag_categories": [ - "", - "Community" - ], - "emails": "naomi.ceder@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-stay-for-the-community", - "admin_type": "Keynote", - "companies": "Trans*Code" - }, - "710": { - "abstract_short": "Paul will take you through the process of making of a Disney movie. He will use examples from Zootopia to explain and illustrate the steps in making a movie and explain where technology, specifically Python, is involved. This is an updated talk from one given years ago with more information. \r\n\r\n*This talk won't be recorded.*", - "sub_title": "", - "timerange": "2016-07-19 09:15:00, 2016-07-19 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@paulhildebrandt", - "id": 710, - "speakers": "Paul Hildebrandt", - "title": "Inside the Hat: Python @ Walt Disney Animation Studios", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Case Study" - ], - "abstract_long": [ - "The Walt Disney Animation Studios has a long history of creating acclaimed animated films and continues to be an industry leader with regards to artistic achievements, storytelling excellence, and cutting-edge innovations. Since the 1923 release of Snow White they\u2019ve been pushing forward technology in the art of movie making. This push continues in the modern day with classics such as Oscar winning box office hits \"Big Hero 6\" and \u201cFrozen\u201d and Oscar nominated hits \u201cWreck-It Ralph\u201d, \u201cTangled\u201d, \u201cBolt\u201d, \u201cTreasure Planet\u201d, and \u201cDinosaur\u201d.\r\n\r\nOne of the most common questions we get when attending PyCon is \u201cWhy are you here?\u201d People seem confused that technology, especially Python is used in the making of animated films. \r\n\r\nTo dive into exactly where Python is used without context would be confusing so Paul will give the audience some background on the Walt Disney Animation Studios. He will talk about what we\u2019ve done and what we are currently working on.\r\n\r\nThe main part of the talk is describing the production process whilst imparting this information he will interject where technology and specifically Python comes into play. He will describe the tools in each area and the tech stack used to create them.\r\n\r\nHe will then dive more deeply into the products he owns and discuss python in general at Disney.\r\n\r\n*This talk won't be recorded.*", - "", - "", - "" - ], - "abstract_extra": "The Walt Disney Animation Studios has a long history of creating acclaimed animated films and continues to be an industry leader with regards to artistic achievements, storytelling excellence, and cutting-edge innovations. Since the 1923 release of Snow White they\u2019ve been pushing forward technology in the art of movie making. This push continues in the modern day with classics such as Oscar winning box office hits \"Big Hero 6\" and \u201cFrozen\u201d and Oscar nominated hits \u201cWreck-It Ralph\u201d, \u201cTangled\u201d, \u201cBolt\u201d, \u201cTreasure Planet\u201d, and \u201cDinosaur\u201d.\r\n\r\nOne of the most common questions we get when attending PyCon is \u201cWhy are you here?\u201d People seem confused that technology, especially Python is used in the making of animated films. \r\n\r\nTo dive into exactly where Python is used without context would be confusing so Paul will give the audience some background on the Walt Disney Animation Studios. He will talk about what we\u2019ve done and what we are currently working on.\r\n\r\nThe main part of the talk is describing the production process whilst imparting this information he will interject where technology and specifically Python comes into play. He will describe the tools in each area and the tech stack used to create them.\r\n\r\nHe will then dive more deeply into the products he owns and discuss python in general at Disney.\r\n\r\n*This talk won't be recorded.*", - "tag_categories": [ - "Case Study" - ], - "emails": "paul.hildebrandt@disney.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-inside-the-hat-python-at-alt-disney-animation", - "admin_type": "Keynote", - "companies": "Walt Disney Animation Studios" - }, - "705": { - "abstract_short": "Scientists have been searching for the elusive gravitational wave for more than half a century. Hear how they finally found them, and the role that Python played in the discovery.\r\n\r\n", - "sub_title": "The epic hunt for the elusive gravitational-wave, and Python's pivital role in the discovery", - "timerange": "2016-07-20 09:15:00, 2016-07-20 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 705, - "speakers": "Jameson Rollins", - "title": "LIGO: The Dawn of Gravitational Wave Astronomy", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Science", - "The Answer to Life the Universe and Everything Else", - "Machine-Learning", - "Human-Machine-Interaction", - "Analytics" - ], - "abstract_long": [ - "Scientists have been searching for the elusive gravitational wave for more than half a century. On September 14, 2015, the Laser Interferometer Gravitational-wave Observatory (LIGO) finally observed the gravitational wave signature from the merger of two black holes. This detection marks the dawn of a new age of _gravitational wave astronomy_, where we routinely hear the sounds emanating from deep within the most energetic events in the Universe. This talk will cover the events leading up to one of the most important discoveries of the last century, and the myriad of ways in which Python enabled the effort.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Sciences", - "Everything Else", - "Data Science", - "Hardware", - "Data Science" - ], - "emails": "jrollins@finestructure.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-ligo", - "admin_type": "Keynote", - "companies": "LIGO Caltech" - }, - "709": { - "abstract_short": "Data science is a hot topic and Python has emerged as an ideal language for it.\r\nIts strength for data analysis come from the cultural mix between the scientific Python community, and more conventional software usage, such as web development or system administration. I'll show how and why Python is a easy and powerful tool for data science.", - "sub_title": "", - "timerange": "2016-07-22 09:15:00, 2016-07-22 10:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@GaelVaroquaux", - "id": 709, - "speakers": "Ga\u00ebl Varoquaux", - "title": "Scientist meets web dev: how Python became the language of data", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Science", - "Data" - ], - "abstract_long": [ - "Python started as a scripting language, but now it is the new trend everywhere and in particular for data science, the latest rage of computing. It didn't get there by chance: tools and concepts built by nerdy scientists and geek sysadmins provide foundations for what is said to be the sexiest job: data scientist.\r\n\r\nIn my talk I'll give a personal perspective, historical and technical, on the progress of the scientific Python ecosystem, from numerical physics to data mining. What made Python suitable for science; How could scipy grow to challenge commercial giants such as Matlab; Why the cultural gap between scientific Python and the broader Python community turned out to be a gold mine; How scikit-learn was born, what technical decisions enabled it to grow; And last but not least, how we are addressing a wider and wider public, lowering the bar and empowering people.\r\n\r\nThe talk will discuss low-level technical aspects, such as how the Python world makes it easy to move large chunks of number across code. It will touch upon current exciting developments in scikit-learn and joblib. But it will also talk about softer topics, such as project dynamics or documentation, as software's success is determined by people.", - "", - "", - "" - ], - "abstract_extra": ".", - "tag_categories": [ - "Sciences", - "" - ], - "emails": "gael.varoquaux@normalesup.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keynote-science-web-dev", - "admin_type": "Keynote", - "companies": "INRIA" - } - }, - "EPS session": { - "695": { - "abstract_short": "This is where the EuroPython Society (EPS) board gives its reports, resolutions are passed and the EPS members can vote in a new EPS board.", - "sub_title": "", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:30:00", - "sub_community": "", - "duration": 60, - "twitters": "@b_smoke, @malemburg", - "id": 695, - "speakers": "Fabio Pliger, Marc-Andre Lemburg", - "title": "EPS General Assembly", - "have_tickets": [ - true, - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Communication", - "Conferences and Meet-Ups", - "Euro Python and EPS", - "Community" - ], - "abstract_long": [ - "This is where the EuroPython Society (EPS) board gives its reports, resolutions are passed and the EPS members can vote in a new EPS board.", - "", - "", - "" - ], - "abstract_extra": "This is where the EuroPython Society (EPS) board gives its reports, resolutions are passed and the EPS members can vote in a new EPS board.", - "tag_categories": [ - "Community", - "Community", - "Community", - "Community" - ], - "emails": "fabio.pliger@gmail.com, mal@europython.eu", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/eps-general-assembly", - "admin_type": "EPS session", - "companies": "Continuum Analytics, eGenix.com Software GmbH" - }, - "696": { - "abstract_short": "We need help with organizing and running EuroPython 2017.\r\n\r\nIn this session, we will explain how the EuroPython workgroup model works and where you could help.", - "sub_title": "", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@b_smoke, @malemburg", - "id": 696, - "speakers": "Fabio Pliger, Marc-Andre Lemburg", - "title": "EuroPython 2017: Help us build the next edition!", - "have_tickets": [ - true, - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Communication", - "Conferences and Meet-Ups", - "Euro Python and EPS" - ], - "abstract_long": [ - "We need help with organizing and running EuroPython 2017\r\n\r\nIn this session, we will explain how the EuroPython workgroup model works and where you could help.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Community", - "Community", - "Community" - ], - "emails": "fabio.pliger@gmail.com, mal@europython.eu", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/europython-2017-help-us-build-the-next-edition", - "admin_type": "EPS session", - "companies": "Continuum Analytics, eGenix.com Software GmbH" - } - }, - "Lightning talk": { - "469": { - "abstract_short": "The LightingTalkShow is the time for new and exceptional ideas to shine.", - "sub_title": "", - "timerange": "2016-07-18 17:15:00, 2016-07-18 18:15:00", - "sub_community": "", - "duration": 60, - "twitters": "@mcltm", - "id": 469, - "speakers": "Harald Armin Massa", - "title": "The LightningTalkShow", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Communication", - "Conferences and Meet-Ups", - "Best Practice" - ], - "abstract_long": [ - "At the LightningTalkShow, there is script, there are no trained actors. Just the regular attendants, delivering interesting, diverse or crazy presentation about all things Python and computer.\r\n\r\nTo encourage the delivery, the LightningTalkMan shall conduct this ceromny, finding words when Laptops do not find the projector; allways honouring the motto of the original Python: the show must go on.\r\n", - "", - "", - "" - ], - "abstract_extra": "of course those 60 or whatever amount of minutes are allocated will be filled by participants who give LightningTalks.", - "tag_categories": [ - "Community", - "Community", - "Best Practice and Use Cases" - ], - "emails": "chef@ghum.de", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/the-lightningtalkshow", - "admin_type": "Lightning talk", - "companies": "2ndQuadrant Deutschland GmbH" - } - }, - "Recruiting session": { - "717": { - "abstract_short": "The recruiting sponsors will present their companies and their job offers in short talks.", - "sub_title": "", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:30:00", - "sub_community": "", - "duration": 45, - "twitters": "@b_smoke", - "id": 717, - "speakers": "Fabio Pliger", - "title": "Recruiting session", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "workforce" - ], - "abstract_long": [ - "The recruiting sponsors will present their companies and their job offers in short talks.", - "", - "", - "" - ], - "abstract_extra": "The recruiting sponsors will present their companies and their job offers in short talks.", - "tag_categories": [ - "Business" - ], - "emails": "fabio.pliger@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/recruiting-session", - "admin_type": "Recruiting session", - "companies": "Continuum Analytics" - } - }, - "Reserved slot": { - "706": { - "abstract_short": "June 4th we will open a second Call for Proposals, limited to hot topics and most recent developments in software and technology. Read our blog post here: http://blog.europython.eu/post/143625007372/europython-2016-extra-hot-topics-call-for", - "sub_title": "reserved for hot topics", - "timerange": "", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 706, - "speakers": "To be announced", - "title": "Reserved for 2nd Call for Proposals", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "", - "tags": [ - "General", - "python" - ], - "abstract_long": [ - "June 4th we will open a second Call for Proposals, limited to hot topics and most recent developments in software and technology. Read our blog post here: http://blog.europython.eu/post/143625007372/europython-2016-extra-hot-topics-call-for", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "", - "" - ], - "emails": "alex@hendorf.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/reserved-for-2nd-call-for-proposals", - "admin_type": "Reserved slot", - "companies": "" - }, - "707": { - "abstract_short": "June 4th we will open a second Call for Proposals, limited to hot topics and most recent developments in software and technology. Read our blog post here: http://blog.europython.eu/post/143625007372/europython-2016-extra-hot-topics-call-for", - "sub_title": "reserved for hot topics", - "timerange": "", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 707, - "speakers": "To be announced", - "title": "Reserved for 2nd Call for Proposals", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "", - "tags": [ - "General", - "python" - ], - "abstract_long": [ - "June 4th we will open a second Call for Proposals, limited to hot topics and most recent developments in software and technology. Read our blog post here: http://blog.europython.eu/post/143625007372/europython-2016-extra-hot-topics-call-for", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "", - "" - ], - "emails": "alex@hendorf.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/reserved-for-2nd-call-for-proposals-1", - "admin_type": "Reserved slot", - "companies": "" - } - }, - "training": { - "490": { - "abstract_short": "Chinese is a fascinating but also dauntingly complex language. So let's use Python to make learning it easier! In this tutorial, we will use Python's powerful data analysis capabilities to accelerate our understanding of the Chinese language, boosting both our Chinese and our Python skills:\r\n\r\nSpeech analysis will help us to cut through our pronunciation problems, image recognition will make Chinese characters look less foreign to us and statistics will tell us what to learn, and what not.", - "sub_title": "Using Python to become better at language learning.", - "timerange": "2016-07-21 14:00:00, 2016-07-21 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@japh44", - "id": 490, - "speakers": "Andreas Dewes", - "title": "(Machine-)Learning Chinese, with Python!", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4 [PyData Track]", - "tags": [ - "Visualization", - "Natural Language Processing", - "Educational Track", - "Algorithms", - "Machine-Learning" - ], - "abstract_long": [ - "#(Machine-)Learning Chinese, with Python!\r\n\r\nLearning a new language is hard work. Especially if it is Chinese, which is a tonal language that is written using more than 10.000 different characters. Finding our way around in this linguistic labyrinth is a daunting task. But do not fear, for we have the power of Python at our side, and with its help we will **machine-learn Chinese**!\r\n\r\n## Mom scolds the horse \r\n\r\nChinese is a tonal language, which means that pronouncing a syllable differently will usually change its meaning. And while this can be very funny, it can also be rather embarrassing for language learners. So, to keep us from getting into linguistic trouble, we'll write a little Python tool that helps us to improve our pronunciation.\r\n\r\n## Seeing the trees and the forest, but still being lost\r\n\r\nReading the morning newspaper while having a nice cup of tea doesn't sound so complicated, does it? Well, if that newspaper is printed in Chinese we will have to know about 2.500 characters just to make it through the first pages. Again, machine-learning will come to our rescue!\r\n\r\n## Low-hanging fruits, high-flying dragons\r\n\r\nPronunciation and characters mastered, we'll still have to learn a large amount of words and phrases, so where to begin? To answer this, we'll make use of Bayesian techniques to identify the low-hanging fruits of the Chinese language.\r\n\r\nCongratulations, you should now be fluent in Chinese (or at least Machine-Learning)." - ], - "abstract_extra": "After speaking about a fairly scientific topic at the last EuroPython, I want to do something more applied this year! \r\n\r\nAs I'm currently learning Chinese, I thought applying machine-learning to this could be a very good use case for showing off some Python libraries for data analysis and visualization. Also, Chinese is a fascinating topic by itself and something that many people can relate to as Chinese culture becomes more pervasive around the world.\r\n\r\nMy idea is therefore to do a tutorial in which people can apply different machine learning methods to problems that we encounter in language learning. I selected three specific problems (voice recognition, image classification, text processing) for this, which in my opinion are very well suited to a machine-learning approach and produce interesting and relevant results while being easy to explain and understand on a basic level.\r\n\r\nI also would like to give a talk about the material that we cover in the tutorial such that a wider audience can enjoy it, I therefore also submitted a proposal for a summary talk (with the same title). \r\n\r\nI already spoke at many IT & scientific conferences and usually received very good audience feedback for my talks (but maybe people are just very polite :D ), a selection of my talks and publications can be found on my website: http://www.andreas-dewes.de/talks.html\r\n\r\nI also have more than 7 years of experience in using Python for data analysis and I really enjoy teaching, which I have done both at University and professionally in my job.", - "tag_categories": [ - "Data Science", - "Data Science", - ">>> Suggested Track", - "Data Science", - "Data Science" - ], - "emails": "andreas.dewes@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/machine-learning-chinese-with-python", - "admin_type": "", - "companies": "7scientists UG" - }, - "396": { - "abstract_short": "In this short tutorial session you'll learn how easy it is to build 3d objects with python code in blender. We begin with constructing 3d objects with cubes and we finish by rendering a small video/gif with mini explosions! It is meant to be very beginner friendly and will be a fun exercise to show how flexible python can be. ", - "sub_title": "From python code to 3d GIF animations.", - "timerange": "2016-07-22 10:15:00, 2016-07-22 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@fishnets88", - "id": 396, - "speakers": "vincent warmerdam", - "title": "Blender: much visual, very 3d, many python.", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Visualization", - "Blender" - ], - "abstract_long": [ - "In this short tutorial session you'll learn how easy it is to build 3d objects with python code in blender. We begin with constructing 3d objects with cubes and we finish by rendering a small video/gif with mini explosions! It is meant to be very beginner friendly and will be a fun exercise to show how flexible python can be. \r\n\r\nThese two blogposts of mine will give an impression of what people can do at the end of the day. \r\n- http://koaning.io/python-blender-gif.html\r\n- http://koaning.io/python-cubes-in-blender.html\r\n\r\nIf customs allow it: I'll consider bringing an oculus rift such that people can walk in their own creations." - ], - "abstract_extra": "This is my blog: http://koaning.io/. \r\n\r\nI've done many talks in the past. Both at PyData events and EuroPython. If you type my name into youtube, you should find example videos of me. ", - "tag_categories": [ - "Data Science", - "Everything Else" - ], - "emails": "vincentwarmerdam@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/blender-much-visual-very-3d-many-python", - "admin_type": "", - "companies": "GoDataDriven" - }, - "573": { - "abstract_short": "This tutorial is targeted at the intermediate-to-advanced Python user who wants to extend Python into High-Performance Computing. The tutorial will provide hands-on examples and essential performance tips every developer should know for writing effective parallel Python. The result will be a clear sense of possibilities and best practices using Python in HPC environments.\r\n", - "sub_title": "", - "timerange": "2016-07-19 10:15:00, 2016-07-19 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 573, - "speakers": "Michael McKerns", - "title": "Efficient Python for High-Performance Parallel Computing", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Multi-Threading", - "Python general", - "Abstractions", - "Multi-Processing", - "Performance" - ], - "abstract_long": [ - "Many of the examples you often find on parallel Python focus on the mechanics of getting the parallel infrastructure working with your code, and not on actually building good portable parallel Python. This tutorial is intended to be a broad introduction to writing high-performance parallel Python that is well suited to both the beginner and the veteran developer. Parallel efficiency starts with the speed of the target code itself, so we will start with how to evolve code from for-loops to Python looping constructs and vector programming. We will also discuss tools and techniques to optimize your code for speed and memory performance.\r\n\r\nThe tutorial will overview working with the common parallel communication technologies (threading, multiprocessing, MPI) and introduce the use of parallel programming models such as blocking and non-blocking pipes, asynchronous and iterative conditional maps, and map-reduce. We will discuss strategies for extending parallel workflow to utilize hierarchical and heterogeneous computing, distributed parallel computing, and job schedulers. We then return our focus to the speeding up our target code by leveraging parallelism within compiled code using Cython.\r\n\r\nAt the end of the tutorial, participants should be able to write simple parallel Python scripts, make use of effective parallel programming techniques, and have a framework in place to leverage the power of Python in High-Performance Computing.", - "", - "", - "" - ], - "abstract_extra": "An earlier version of the tutorial is available at: http://www.pyvideo.org/video/1345/efficient-parallel-python-for-high-performance-co while a preliminary version of the tutorial is at https://github.com/mmckerns/tuthpc.\r\n", - "tag_categories": [ - "Programming", - "Python", - "Everything Else", - "Programming", - "Programming" - ], - "emails": "mmckerns@uqfoundation.org", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/efficient-python-for-high-performance-parallel-computing", - "admin_type": "", - "companies": "the UQ Foundation" - }, - "592": { - "abstract_short": "Optimization can often help to make Python programs faster or use less memory.\r\nDeveloping a strategy, establishing solid measuring and visualization techniques\r\nas well as knowing about algorithmic basics and datastructures are the foundation\r\nfor a successful optimization. The tutorial will cover these topics.\r\nExamples will give you a hands-on experience on how to approach efficiently.", - "sub_title": "", - "timerange": "2016-07-20 10:15:00, 2016-07-20 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@pyacademy", - "id": 592, - "speakers": "Mike M\u00fcller", - "title": "Faster Python Programs - Measure, don't Guess", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Algorithms", - "Tooling", - "Data Structures", - "Best Practice", - "Performance" - ], - "abstract_long": [ - "Python is a great language. But it can be slow compared to other languages\r\nfor certain types of tasks. If applied appropriately, optimization may reduce\r\nprogram runtime or memory consumption considerably. But this often comes at a\r\nprice. Optimization can be time consuming and the optimized program may be more\r\ncomplicated. This, in turn, means more maintenance effort. How do you find\r\nout if it is worthwhile to optimize your program? Where should you start?\r\nThis tutorial will help you to answer these questions. You will learn how\r\nto find an optimization strategy based on quantitative and objective criteria.\r\nYou will experience that one's gut feeling what to optimize is often wrong.\r\n\r\nThe solution to this problem is: \u201eMeasure, Measure, and Measure!\u201c. You will\r\nlearn how to measure program run times as well as profile CPU and memory.\r\nThere are great tools available. You will learn how to use some of them.\r\nMeasuring is not easy because, by definition, as soon as you start to measure,\r\nyou influence your system. Keeping this impact as small as possible is\r\nimportant. Therefore, we will cover different measuring techniques.\r\n\r\nFurthermore, we will look at algorithmic improvements. You will see that the\r\nright data structure for the job can make a big difference. Finally, you will\r\nlearn about different caching techniques.\r\n" - ], - "abstract_extra": "## Outline\r\n\r\n* How Fast is Fast Enough? (5 min)\r\n* Optimization Guidelines and Strategy (10 min)\r\n* Measuring run time\r\n * ``time``, ``timeit``, decorators for timing (5 min)\r\n * Wall Clock vs. CPU Time (2 min)\r\n* Profiling CPU Usage\r\n * cProfile (10 min)\r\n * A Picture is Worth a Thousand Words\r\n * SnakeViz (10 min)\r\n * Going Line-by-Line (5 min)\r\n * Exercise (15 min)\r\n* Profiling Memory Usage\r\n * Pympler (5 min)\r\n * Memory Usage Line-by-Line with memory_profiler (5 min)\r\n * Roll your own (5 min)\r\n * Exercise (10 min)\r\n* Algorithms and Anti-patterns\r\n * String Concatenation (3 min)\r\n * List and Generator Comprehensions (5 min)\r\n * Think Global buy Local (5 min)\r\n * Exercise (5 min)\r\n* The Right Data Structure\r\n * Use built-in Data Types (2 min)\r\n * ``list`` vs. ``set`` (3 min)\r\n * ``list`` vs. ``deque`` (5 min)\r\n * ``dict`` vs. ``defaultdict`` (5 min)\r\n * Big-O notation and Data Structures (5 min)\r\n * O(1) vs. O(n) vs. O(n) (5 min)\r\n * Exercise (15 min)\r\n* Caching\r\n * Reuse before You Recalculate (5 min)\r\n * Deterministic caching (5 min)\r\n * Non-deterministic caching (5 min)\r\n * Least Recently Used Cache (5 min)\r\n * Memcached (5 min)\r\n * Exercise (10 min)\r\n\r\n## Software Requirements\r\n\r\nYou will need Python 2.7 or 3.5 installed on your laptop. Python 2.6 or 3.3/3.4\r\nshould also work. Python 3.x is strongly preferred.\r\n\r\n\r\n### IPython Notebook\r\n\r\nI will use an IPython Notebook for the tutorial because it makes a very good\r\nteaching tool. You are welcome to use the setup you prefer, i.e editor, IDE,\r\nREPL. If you also like to use an IPython Notebook, I recommend `conda` for\r\neasy installation. Similarly to `virtualenv`, `conda` allows creating isolated\r\nenvironments but allows binary installs for all platforms.\r\n\r\nThere are two ways to install`IPython` via `conda`:\r\n\r\n1. Use [Minconda][1]. This is a small install and (after you installed it)\r\n you can use the command `conda` to create an environment:\r\n `conda create -n pycon2016 python=3.5`\r\n Now you can change into this environment:\r\n `source activate pycon2016`. The prompt should change to `(pycon2016)`.\r\n Now you can install IPython: `conda install IPython`.\r\n\r\n2. Install [Anaconda][2] and you are ready to go if you don't mind installing\r\n lots of packages from the scientific field.\r\n\r\n\r\nThe second option also gives you `conda` and you can create more environments\r\njust as with Miniconda (see 1.).\r\n\r\n### Working witch ``conda`` environments\r\n\r\nAfter creating a new environment, the system might still work with some\r\nstale settings. Even when the command ``which`` tells you that you are using an\r\nexecutable from your environment, this might actually not be the case.\r\nIf you see strange behavior using a command line tool in your environment,\r\nuse ``hash -r`` and try again. Please install ``pip`` inside this environment:\r\n\r\n conda install pip\r\n\r\n\r\n### Tools\r\n\r\nYou can install these with ``pip`` (in the active ``conda`` environment):\r\n\r\n* [SnakeViz][3]\r\n* [line_profiler][4]\r\n* [Pympler][6]\r\n* [memory_profiler][7]\r\n* [pyprof2calltree][9]\r\n\r\n\r\n\r\n#### Linux\r\n\r\nUsing the package manager of your OS should be the best option.\r\n\r\n\r\n[1]: http://conda.pydata.org/miniconda.html\r\n[2]: http://continuum.io/downloads\r\n[3]: http://jiffyclub.github.io/snakeviz/\r\n[4]: https://pypi.python.org/pypi/line_profiler/\r\n[6]: https://pypi.python.org/pypi/Pympler\r\n[7]: https://pypi.python.org/pypi/memory_profiler\r\n[8]: http://kcachegrind.sourceforge.net/html/Home.html\r\n[9]: https://github.com/pwaller/pyprof2calltree/\r\n\r\n## About the trainer\r\n\r\nI've been teaching Python courses since 2004. According to my statistics,\r\nI taught about 250 Python courses totaling over 600 teaching day.\r\nThis includes 16 tutorials at PyCon as well as numerous tutorials at\r\nEuroPython, EuroSciPy, PyCon DE, PyCon PL, PyCon IE, PyCon AsiaPacific\r\nas well as at PyData London and Berlin.\r\n\r\nI've been teaching tutorials about this topic every year at PyCon US from 2007\r\nthrough 2014 as well at PyData Berlin 2015 and at EuroPython 2015 in Bilbao.\r\nThis version has been revised **based on the feedback from the last tutorial\r\ndeliveries**.\r\n\r\nFirst, the tutorial covers fewer topics. I cut out tools that do not support\r\nPython 3 such as SnakeRunSnake and Heapy.\r\n\r\nSecond, I added more exercises. This should allow more focus on the core of the\r\ntutorial and also include more hands-on work by the participants. This \u201eLess is\r\nMore\u201c approach is additionally justified because the content of the tutorial\r\ngrew over time as more very useful tools became available. I think more\r\ndepths and less range makes sense for this topic.\r\n\r\nThere is a 60-page PDF handout that is rather comprehensive and can serve for\r\nself-study after the tutorial.\r\n", - "tag_categories": [ - "Data Science", - "Programming", - "Programming", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "mmueller@python-academy.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/faster-python-programs-measure-dont-guess-1", - "admin_type": "", - "companies": "Python Academy GmbH & Co. KG" - }, - "556": { - "abstract_short": "During this workshop, you will be guided to make an open source contribution to the [coala][1] project. You will learn about quality restrictions and code review as well as the necessary tools to rework your patches to get them accepted. With the knowledge from this course you should easily be able to go out and help any open source project!\r\n\r\n [1]: http://coala-analyzer.org\r\n", - "sub_title": "Qualifies attendees for contribution to coala and other open source projects.", - "timerange": "2016-07-22 14:00:00, 2016-07-22 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@tushar_rishav", - "id": 556, - "speakers": "Tushar Gautam", - "title": "Guide to make a real contribution to an open source project for novice", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Python 3", - "Beginners", - "Git", - "Open-Source", - "Development" - ], - "abstract_long": [ - "Goal\r\n----\r\nYou will be guided to make a real contribution to an open source project ([_coala_][1]). The skills you learn are generally applicable. \r\n\r\nPrerequisite\r\n------------\r\n1. Eager to contribute to open source.\r\n2. Willingness to do great things in python\r\n3. GitHub account\r\n4. Git and Python installed\r\n5. A laptop\r\n\r\n\r\nOverview\r\n--------\r\n- Talk about version control (specifically Git). Basic stuffs like setup git and commands like `fork/clone, pull/fetch, push, commit/ammend, squash` etc. We'll be following **learning by doing** paradigm. Approx 15 minutes.\r\n- Introduce people to [_coala_][1] in general, brief about its codebase and how to use Github to contribute to coala. Approx 15 minutes.\r\n- Get started to write some code. We'll have bunch of unassigned issues, specifically created for \r\nthe purpose of workshop, show people how developers collaborate, cover git commands in more detail and the pull requests from attendees. Approx 1.30 hrs.\r\nWe'll also talk in brief about quality/testing tools like Travis Ci, CircleCi, Gitmate etc. In the meantime we'll start reviewing the PRs. Approx 20 minutes.\r\n- Finally, reworking the code phase and get every attendees merge their contributions to master branch.\r\n\r\n \r\n[1]: http://coala-analyzer.org/" - ], - "abstract_extra": "We've been using git and programming in Python since a fair amount of time. We've also conducted workshops regarding the contribution to open source in University. We'll be glad to share what we've learnt so far with the community. We also look forward to learn a lot from this conference. \r\nThe workshop shall be conducted by [_Tushar Gautam_][1] and [_Vishal Agarwal_][2] ,the two contributors to coala :\r\n [1]: https://github.com/tushar-rishav\r\n [2]: https://github.com/charizard42", - "tag_categories": [ - "Python", - "Educational", - "DevOps", - "Open Source", - "Programming" - ], - "emails": "tushar.rishav@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/guid-to-make-a-real-contribution-to-an-open-source-project-for-novice", - "admin_type": "", - "companies": "" - }, - "407": { - "abstract_short": "Want to learn how to clean, investigate, explore and analyze your data using Python? This workshop will take you from using Python as a developer into the basics of using Python as a data wrangler. We will cover an introduction to several data science libraries including Pandas, as well as some basic charting and reporting libraries.", - "sub_title": "Solving problems through data cleaning, analysis and reporting", - "timerange": "2016-07-21 10:15:00, 2016-07-21 13:15:00", - "sub_community": "pydata", - "duration": 180, - "twitters": "@kjam", - "id": 407, - "speakers": "Katharine Jarmul", - "title": "Introduction to Data Wrangling", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4 [PyData Track]", - "tags": [ - "Visualization", - "Jupyter/iPython Notebook", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "APIs" - ], - "abstract_long": [ - "Overview \r\n------------------ \r\nIn this tutorial, we'll be taking an exploratory look at how to perform data wrangling using Python. It's assumed the audience has a working understanding of Python and some basic data analysis exposure. Participants will leave the class with a better understanding of useful Python libraries for data analysis, as well as some hands-on scripts built throughout the tutorial. With these initial first steps, they should feel comfortable integrating data analysis into their current Python projects. \r\n\r\nOutline \r\n------------------ \r\n* Introduction to Data Wrangling with Python \r\n** How to ask questions \r\n** Where to find data \r\n** Why Python? \r\n\r\n* Initial setup\r\n** IPython Notebook \r\n** Getting the data \r\n\r\n* Importing data\r\n** Working with easy formats \r\n** Working with hard formats \r\n** APIs \r\n\r\n* Exploring data \r\n** Using pandas \r\n** Asking simple questions \r\n** Joining datasets \r\n\r\n* Analysing data \r\n** What is the data saying \r\n** Standardization and normalization \r\n** Making conlusion \r\n\r\n* Reporting your findings \r\n** Who is your audience \r\n** Charting data \r\n** Interactive charts and graphs \r\n\r\n* Next steps \r\n** Where to go from here \r\n** Q&A \r\n** \"Homework\" " - ], - "abstract_extra": "This tutorial will be based on work for my recently completed O'Reilly book, (Data Wrangling with Python)[http://shop.oreilly.com/product/0636920032861.do]. I've spoken at several US PyCon and other Python conferences and led classes for PyLadies in Los Angeles and Berlin. \r\n\r\nI've presented a version of this tutorial at EuroPycon last year, and, despite WiFi issues, received some great feedback and reviews. I've modified it and updated it to be more on-point with the audience in mind. ", - "tag_categories": [ - "Data Science", - "Python", - "Data Science", - "Web" - ], - "emails": "kjarmul@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/introduction-to-data-wrangling", - "admin_type": "", - "companies": "kjamistan" - }, - "629": { - "abstract_short": "**Objectives:**\r\n\r\n1) What is deep learning and why is it the current rage? \r\n2) How to implement a deep learning algorithm from scratch? \r\n3) Python library for deep learning - Keras\r\n4) Leverage deep learning for natural language processing \r\n5) Impact of GPU for deep learning \r\n\r\nThis workshop covers some of the common deep learning architectures for NLP with hands-on implementation of them using the latest deep learning libraries. The main topics would be MLP, RNN and word2vec.\r\n\r\n", - "sub_title": "A single neuron to a civilization", - "timerange": "2016-07-20 10:15:00, 2016-07-20 13:15:00", - "sub_community": "pydata", - "duration": 180, - "twitters": "@bargava, @nischalhp, @raghothams", - "id": 629, - "speakers": "Bargava Subramanian, Nischal HP, Raghotham Sripadraj", - "title": "Introduction to Deep Learning for Natural Language Processing", - "have_tickets": [ - true, - false, - false - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Natural Language Processing", - "Machine-Learning", - "Deep Learning", - "Data Science", - "Analytics" - ], - "abstract_long": [ - "Ever wondered how Google Translate works so well? Do you know how the auto-captioning works on Youtube? How to mine the sentiments of tweets on twitter? And there's a host of successful natural language processing examples out there. What's the underlying theme? They all use Deep Learning.\r\n\r\nThis workshop introduces artificial neural networks and deep learning. The building blocks of neural networks are discussed in detail. Attendees are introduced to learning using ANN with backpropagation algorithm.\r\n\r\nA preliminary model using multi-layer perceptron is implemented to get a feel for deep learning model structure and the library keras.\r\n\r\nThe state-of-art recurrent neural networks is introduced. Two approaches are shown - 0ne using Long Short-Term Memory models and another one leveraging Word2Vec. Some ways to overcome overfitting are explored. \r\n\r\nWe'll also show how GPU's affect the computation.\r\n\r\nWe'll also implement a RNN to do text-generation.\r\n\r\n\r\n**Ideal Background of the attendee**\r\n\r\nSome knowledge of machine learning. \r\n - Bias and Variance\r\n - Train, Validation, and Test sets\r\n - Cross-validation\r\n - hyperparameter optimization\r\n - Measuring model accuracy \r\n - Supervised and Unsupervised learning\r\n - Overfitting \r\n - Basic Python constructs\r\n\r\nThe repository for the tutorial is [here][1]\r\n\r\nThe repository has instructions on what packages to install and the data we would be using for the workshop.\r\n\r\n [1]: https://github.com/rouseguy/intro2deeplearning\r\n", - "", - "", - "" - ], - "abstract_extra": "This tutorial will be conducted along with Raghotham S(raghotham.s@gmail.com) and Nischal HP(nischalhp@gmail.com)\r\n\r\nWe have conducted this workshop at the following places\r\n[PyCon Ireland 2015][5]\r\n[PyCon Poland 2015][4]\r\n[Fifth Elephant 2015(India's largest Data Science Conference)][3]\r\n[IEEE Conference on Cloud Computing for Emerging Markets][2]\r\n[PyCon Czech 2015][1]\r\n\r\n [1]: https://cz.pycon.org/2015/workshops/\r\n [2]: http://conferences.computer.org/ccem/program.html\r\n [3]: https://fifthelephant.talkfunnel.com/2015/10-introduction-to-deep-learning\r\n [4]: http://pl.pycon.org/2015/agenda_en.html\r\n [5]: http://lanyrd.com/2015/pyconie/sdrpqd/\r\n\r\nIn addition to this, the speakers have organized workshops at the following places\r\nPyCon India 2015 - Introduction to Statistics\r\nBangalore Python User Group: \r\n- Machine Learning (June 2015)\r\n- Data Analysis(August 2015)\r\n- Optimization (February 2016) ", - "tag_categories": [ - "Data Science", - "Data Science", - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "bargava@gmail.com, nischal.hp@gmail.com, raghotham.s@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/introduction-to-deep-learning-for-natural-language-processing", - "admin_type": "", - "companies": "Cisco, Unnati Data Labs" - }, - "425": { - "abstract_short": "We will run through a fork of the publicly available ipython-in-depth tutorial \r\n [https://github.com/mjbright/ipython-in-depth][1]\r\nto discover many of the capabilities of Jupyter and IPython.\r\n\r\n [1]: https://github.com/mjbright/ipython-in-depth\r\n", - "sub_title": "Discover IPython/Jupyter through hands-on exercises with this time tested (evolving) tutorial", - "timerange": "2016-07-18 14:15:00, 2016-07-18 17:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@mjbright", - "id": 425, - "speakers": "Mike BRIGHT", - "title": "IPython in Depth", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Notebook", - "Jupyter/iPython" - ], - "abstract_long": [ - "We will run through a fork of the publicly available ipython-in-depth tutorial \r\n - [https://github.com/mjbright/ipython-in-depth][1]\r\n\r\nto discover many of the capabilities of Jupyter and IPython.\r\n\r\nPlease bring your own PC with Jupyter already installed.\r\nI recommend to have the Anaconda distribution, see here for suggested installation methods:\r\n - [http://jupyter.readthedocs.org/en/latest/install.html][2]\r\n\r\nI will work through at least the following tutorial sections:\r\n\r\n - Notebook Basics + beyond plain python\r\n - Markdown Cells\r\n - Rich Display System\r\n - Introduction to Interactive Javascript Widgets\r\n\r\nWe will spend roughly 45 mins on each section\r\n\r\nThis is a beginners Jupyter/IPython session.\r\nNevertheless, there's no problem for people to jump ahead, or to perform other exercises container within that repo.\r\n\r\nI've created a gitter channel for dissemination of information and to allow participants to chat and help each other. Feel free to post before/after the session.\r\nYou can join the channel here:\r\n[https://gitter.im/mjbright/ipython-in-depth][3]\r\n\r\n [1]: https://github.com/mjbright/ipython-in-depth\r\n [2]: http://jupyter.readthedocs.org/en/latest/install.html\r\n [3]: https://gitter.im/mjbright/ipython-in-depth\r\n", - "", - "", - "" - ], - "abstract_extra": "The tutorial will be run on attendee PCs.\r\n\r\nTutorial will be based on the publicly available tutorials on the github IPython and Jupyter repositories.\r\n\r\nCan be adapted if particular requirements are suggested.\r\n\r\nI am more than open to participating with other speakers on this lab.\r\n", - "tag_categories": [ - "", - "" - ], - "emails": "europython@mjbright.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/ipython-in-depth", - "admin_type": "", - "companies": "HPE" - }, - "615": { - "abstract_short": "The open source devpi private packaging system is used in many organisations and in this course you learn how to make the best use of it. Devpi helps with packaging and uploading python packages, documentation and test results to private indexes. In this course you'll also learn how to setup the server and client-side of devpi and how to implement staging and custom work flows. ", - "sub_title": "", - "timerange": "2016-07-20 14:00:00, 2016-07-20 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 615, - "speakers": "holger krekel", - "title": "Manage your Python packages professionally with devpi", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Infrastructure", - "Testing", - "Packaging" - ], - "abstract_long": [ - "The devpi server can manage all your private python packages and documentation and you can use well-known python tools like pip, tox, twine and sphinx to work with it. It also serves as a caching proxy for pypi.python.org and indexes can be configured to work as an \"overlay\" where your private packages appear in addition to public python ones. The server provides a web interface which integrates search and sphinx-generated documentation. All of this will be demonstrated and learned through little exercises during the course.\r\n\r\nThe devpi client side provides help for creating users, indexes, uploading packages, documentation and performing package-defined tests. In the course you'll learn the basics of command line usage with devpi and how to use it to implement custom work flows.\r\n\r\nMore info on the devpi system at doc.devpi.net" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Testing", - "Python" - ], - "emails": "holger@merlinux.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/manage-your-python-packages-professionally-with-devpi", - "admin_type": "", - "companies": "merlinux GmbH" - }, - "650": { - "abstract_short": "Learn how to use the [Cython][1] compiler to bring complex array computations to the speed of C without resorting to low level languages.\r\n\r\n [1]: http://cython.org/\r\n", - "sub_title": "Learn how to speed up complex array computations with Cython", - "timerange": "2016-07-20 14:00:00, 2016-07-20 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 650, - "speakers": "Stefan Behnel", - "title": "NumPy with Cython", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Cython", - "Big Data", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Compiler and Interpreters" - ], - "abstract_long": [ - "The [Cython][1] compiler is an excellent and widely used tool for speeding up computational code and talking to native libraries. It translates Python code to C or C++ code and supports static type annotations to allow direct use of C/C++ data types, native functions and complex array types. The tight integration of all three languages makes it possible to freely mix Python features like generators and comprehensions with C/C++ features like native data types, pointer arithmetic or manually tuned memory management in the same code. Cython has direct support for NumPy arrays and other buffer objects, which allows for efficient and even parallel (OpenMP) processing of large arrays.\r\n\r\nThis tutorial by a Cython core developer introduces the Cython programming language and its compiler and leads the participants all the way from their first Python extension to an efficient integration with NumPy arrays.\r\n\r\nNote that participants are expected to have a good understanding of the Python language, at least some basic knowledge about NumPy and C or C++, and are able to use a C compiler on their computers to build native CPython modules from sources (e.g. install source packages from PyPI that contain C extensions). No deep C programming knowledge is required, nor is any prior knowledge needed about writing extension modules for the CPython runtime. The Cython compiler handles most of these low-level issues itself.\r\n\r\n [1]: http://cython.org/\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Data Science", - "Data Science", - "Data Science", - "Python" - ], - "emails": "pycon@behnel.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/numpy-with-cython", - "admin_type": "", - "companies": "Skoobe" - }, - "549": { - "abstract_short": "Learn the use of python SDKs to deploy your first cloud native application atop OpenStack. Deploying applications in a cloud environment can be very different from deploying them in a traditional IT environment. This workshop will teach you how to deploy applications on OpenStack and some best practices for cloud application development. ", - "sub_title": "Using Python SDKs to Deploy your first Cloud Native Application atop OpenStack", - "timerange": "2016-07-21 14:00:00, 2016-07-21 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 549, - "speakers": "David Flanders", - "title": "OpenStack Cloud Native Deployment for Application Developers", - "have_tickets": [ - false - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Visualization", - "Education", - "OpenStack", - "DevOps general", - "Deep Learning" - ], - "abstract_long": [ - "Did you miss the first wave of job opportunities to be an OpenStack operator? Fear not, the second wave commeth! Learn the latest in Application Development atop OpenStack. Both DevOpps and AppDev are invited to this hands-on training. This training will provide an overview of the most popular Python SDKs and their use with OpenStack (and other clouds: why be locked in?). \r\n\r\nBy the end of the workshop you will have learned: \r\na.) The basic componets of an open collaborative cloud infrastructure, \r\nb.) Simple architectures for building an application to scale accross several cloud compute nodes\r\nc.) Cloud data storage techniques and how to auto-orchestrate your data and compute\r\nd.) About the future upcoming application development paradigms: containers, 12 factor and mobile/IoT and much more. \r\n\r\nThe future is open, might as well get started. \r\n\r\nThe OpenStack foundation is now a not-for-profit organisation which is now 5 years of age and still innovatively growing. If you've not been to an OpenStack summit you are missing one of the best open events of the year. The OpenStack summit will be in Barcelona late October, hope to see you there. " - ], - "abstract_extra": "", - "tag_categories": [ - "Data Science", - "Educational", - "DevOps", - "DevOps", - "Data Science" - ], - "emails": "denise@openstack.org", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/openstack-cloud-native-deployment-for-application-developers", - "admin_type": "", - "companies": "OpenStack Foundation" - }, - "475": { - "abstract_short": "_Try major async web frameworks in playful use-cases, learn which tool works best for which task_\r\n\r\nWorkshop reveals Python capabilities for async web development, focusing on production-ready tools for the time being. It contains an overview and sample tasks for most established Python solutions:\r\n\r\n- AsyncIO\r\n- Tornado\r\n- Twisted\r\n\r\nWorkshop does not promote any particular framework; we try each option to build the personal preference mapping of project requirements and corresponding tools.", - "sub_title": "Try major async web frameworks in playful use-cases, learn which tool works best for which task", - "timerange": "2016-07-19 10:15:00, 2016-07-19 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@PyMunich", - "id": 475, - "speakers": "Anton Caceres", - "title": "Present-day Async Web development training: from Twisted to Tornado and AsyncIO", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Use Case", - "Web Track", - "Best Practice", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "**Objective**\r\n\r\nGet hands-on experience with async Python frameworks, learn which tool works best for which task.\r\n\r\n**Description**\r\n\r\nThis beginner-friendly workshop contains an overview, code tasks and a benchmark for production-ready Python async tools for the time being:\r\n\r\n- AsyncIO\r\n- Tornado\r\n- Twisted\r\n\r\nWorkshop does not promote any particular framework; we practically try each option and develop personal preferences.\r\n\r\n**Plan**\r\n\r\n 1. Introduction to async web servers and frameworks (15 min)\r\n 2. Formulating typical web tasks that need async design (10 min)\r\n 3. for task in tasks: (1 h)\r\n - implement with Twisted\r\n - Tornado\r\n - AsyncIO\r\n 4. Take a realistic parallel requests use-case and use LAN to experiment (30 min)\r\n 4. Discuss peculiarities of implementations (10 min)\r\n 5. Run same task on different platforms with a benchmark (10 min)\r\n 6. Integrate frameworks: (15 min)\r\n - run Tornado on AsyncIO loop\r\n - convert Future objects\r\n7. Q & A (10 min)\r\n\r\n**Practical part**\r\n\r\nWe try different frameworks to implement typical web tasks: handling requests, fetching data from external APIs and proxying connections. In case of reliable LAN we will use laptops of each other as services to call asynchronously. This part is interactive, everyone is a creator of own service. Then we will put some service down and do error handling, try to integrate future objects of different frameworks, run a benchmark.\r\n\r\n**Pre-requirements**\r\n\r\n- Laptop with Python 3.4+" - ], - "abstract_extra": " - This workshop is an evolution of my talk series, eg last _[EuroPython talk][1]_\r\n - I also had similar but more AsyncIO-focused workshops at _[PyCon.es][2]_ and _[PyCon Sette][3]_.\r\n - Current workshop will be presented for the first time\r\n - I'm the organiser and tutor of _[PyMunich][4]_\r\n\r\n [1]: https://www.youtube.com/watch?v=NKPHP5p0WXA\r\n [2]: http://2015.es.pycon.org/en/schedule/\r\n [3]: https://www.pycon.it/conference/talks/beautiful-async-code-in-python-3\r\n [4]: http://www.pymunich.com", - "tag_categories": [ - "Best Practice and Use Cases", - ">>> Suggested Track", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "anton@caceres.me", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/present-day-async-web-development-training-from-twisted-to-tornado-and-asyncio", - "admin_type": "", - "companies": "Skoobe" - }, - "631": { - "abstract_short": "Modern Python development is sophisticated: large code bases with many libraries, multiple developers, and rich frontend stacks for web development. Better tooling can be a big help, including an integrated development environment (IDE). This tutorial introduces PyCharm, covers its major features, and shows a web development workflow in a hands-on environment.", - "sub_title": "", - "timerange": "2016-07-19 14:00:00, 2016-07-19 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@paulweveritt", - "id": 631, - "speakers": "Paul Everitt", - "title": "Productive Coding with PyCharm", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Programming" - ], - "abstract_long": [ - "PyCharm is a powerful development environment for Python and web programming, with many tools and features to boost productivity. This tutorial covers a broad selection of these features, in the context of hands-on development. The outline focuses on Python, but includes a treatment of the HTML/JS/CSS features PyCharm inherits from its IntelliJ/WebStorm foundation.\r\n\r\nDuring this tutorial we'll also take a look on how good code practices can help the IDE to assist you on Python coding: writing docstrings, type hints with Python 3.5 latest standards, etc.\r\n\r\nAfter this tutorial, attendees should part with a basic understanding of the myriad of PyCharm features: what they are, why they help, how to use them, and how to find more information.\r\n\r\nAttendees should arrive at the tutorial with an installation of Python and and installation of the latest PyCharm. A list of required packages will be provide the week before, to help minimize the network impact of PyPI access. (An attempt will be made to run a local mirror.)" - ], - "abstract_extra": "##Tutorial format\r\n\r\nHands-on environment with multiple people from the PyCharm team to walk around and help. The approach is based on how I taught my \u201cPython 3 Web Development with Pyramid\u201d at two previous PyCons, a format that received strong feedback scores. The tutorial is broken into 10-12 sections. Each section begins with some talking, then has the students do hands-on work, then finishes with a wrap-up.\r\n\r\n## Class Size\r\n\r\nWe can handle a large class (I have a lot of experience over the years teaching Python in larger settings.)\r\n\r\n## Previous Experience\r\n\r\nI have conducted two PyCon tutorials in the past 3 years, plus a tutorial at PyCon Brasil. Before that, my tutorial work goes back to teaching CGI at the Python workshop in 1995.", - "tag_categories": [ - "Programming" - ], - "emails": "pauleveritt@me.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/productive-coding-with-pycharm", - "admin_type": "", - "companies": "JetBrains s.r.o." - }, - "587": { - "abstract_short": "Learn to test your code more effectively with Hypothesis.", - "sub_title": "Let your testing do more of your work for you", - "timerange": "2016-07-18 10:15:00, 2016-07-18 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@DRMacIver", - "id": 587, - "speakers": "David MacIver", - "title": "Property-based testing with Hypothesis", - "have_tickets": [ - false - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Test Libraries (pyTest/node/...)", - "Testing" - ], - "abstract_long": [ - "Hypothesis is a library for writing smarter tests.\r\n\r\nInstead of hand-writing every example in your tests, you describe what sorts of examples you need and let it fill in the blanks. It uses this to actively go looking for bugs in your code.\r\n\r\nIt's proven very effective, and is being used by an ever growing number of open source projects (including pypy, cryptography, and mercurial), but people sometimes struggle to get started.\r\n\r\nIn this session we'll help you overcome that by going through a number of illustrative examples that will help you understand this style of testing better.\r\n\r\nThe first two hours will be spent on these, start with a discussion of the problem, a sample test to start you off, and then people will work through it at their own pace, with me there to answer questions and help people when they get stuck. After people have had some time on a given problem, I'll go over some possible tests for the example and why they are useful, and give people time to try anything they like out before moving on to the next problem.\r\n\r\nFor the final hour, people will work on testing some more substantial code. You should feel free to bring your own, but I will provide some interesting projects for people to work on for anyone who doesn't have anything specific.\r\n\r\nAt the end of this you should feel much more comfortable with the general concepts of property based testing, and be able to use Hypothesis effectively to test your own code." - ], - "abstract_extra": "I'm the primary author of Hypothesis.\r\n\r\nI've previously given a few talks about it, including this one at PyCon UK (https://www.youtube.com/watch?v=62ubHXzD8tM) and a more recent one at PyCon Namibia (No video, unfortunately, but here are the slides: https://bit.ly/how-do-i-know-1).\r\n\r\nI've run similar trainings before, both at PyCon Namibia and for companies.\r\n\r\nLast year's EuroPython had a number of talks about Hypothesis ( https://ep2015.europython.eu/conference/talks/whats-the-fuzz-all-about-randomized-data-generation-for-robust-unit-testing, https://ep2015.europython.eu/conference/talks/testing-with-two-failure-seeking-missiles-fuzzing-and-property-based-testing and somewhat https://ep2015.europython.eu/conference/talks/static-type-checking-is-dead-long-live-static-type-checking-in-python) , although I wasn't able to attend myself.", - "tag_categories": [ - "Testing", - "Testing" - ], - "emails": "david.maciver@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/property-based-testing-with-hypothesis", - "admin_type": "", - "companies": "" - }, - "622": { - "abstract_short": "The py.test tool presents a rapid and simple way to write tests for your Python code. This training gives a quick introduction with exercises into some distinguishing features. We\u2019ll do exercises where we get existing non-pytest test suites to run with pytest and discuss migration strategies. We\u2019ll finish with discussing topics and questions of participants related to their own test suites and usages.", - "sub_title": "", - "timerange": "2016-07-22 10:15:00, 2016-07-22 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@the_compiler", - "id": 622, - "speakers": "Florian Bruhin", - "title": "pytest - simple, rapid and fun testing with Python", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Test Driven Development (TDD)", - "Test Libraries (pyTest/node/...)", - "Testing" - ], - "abstract_long": [ - "The py.test tool presents a rapid and simple way to write tests for your Python code. This training gives a quick introduction with exercises into some distinguishing features. We\u2019ll do exercises where we get existing non-pytest test suites to run with pytest and discuss migration strategies. We\u2019ll finish with discussing topics and questions of participants related to their own test suites and usages.\r\n\r\nThis is the planned outline:\r\n\r\n- (30 minutes) pytest feature walkthrough: automatic test discovery, assert statement, modular parametrizable fixtures, 150 plugins\r\n\r\n- (60 minutes) pytest fixture mechanism: dependency injection, declaring and using function/module/session scoped fixtures, using fixtures from fixture functions, parametrizing fixtures. Exercises.\r\n\r\n- (30 minutes): running nose/unittest/trial/Django suites with pytest. Discussing advantages and limitations. Exercise with a select existing real-life open source project.\r\n\r\n- (30 minutes): Strategies for a) migrating to pytest b) using \u201cautouse\u201d fixtures in conjunction with XUnit-based setup/tearodwn methods. Exercise.\r\n\r\n- (30 minutes): open space for questions and interactively solving pytest/unittest integration problems on real-life problems as time permits." - ], - "abstract_extra": "I did the pytest training at EuroPython last year and it was quite popular with good feedback, so I thought I'd submit it again.", - "tag_categories": [ - "Testing", - "Testing", - "Testing" - ], - "emails": "europython.eu@the-compiler.org", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/pytest-simple-rapid-and-fun-testing-with-python-1", - "admin_type": "", - "companies": "" - }, - "439": { - "abstract_short": "Python allows system administrators to replace a wide set of tools like awk, perl and gnuplot.\r\n\r\nThe students will learn - thru various examples presented in ipython notebook - to speed up their everyday work and trasform their scripts in reusable libraries. Moreover they will see a large showcase of libraries and their usage.\r\n\r\nA Test Driven Deployment approach using Ansible will be shown.\r\n", - "sub_title": "One language to rule them all.", - "timerange": "2016-07-19 14:00:00, 2016-07-19 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@ioggstream", - "id": 439, - "speakers": "Roberto Polli", - "title": "Python for System Administrators", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "DevOps general", - "System Administration" - ], - "abstract_long": [ - "##Goal\r\nUse python to replace sysadmin tools like awk, perl and gnuplot and:\r\n\r\n - gather system data on different platforms (Linux, Windows, Mac);\r\n - parse them efficiently (\u00b5-benchmarks, defaultdict, re.compile, dstat plugins); \r\n - basic statistics and data visualization (distributions, correlation, scatter);\r\n - showcase of useful libraries (smtplib, ansible, mysql-utilities);\r\n - plan test driven deployments with Ansible\r\n\r\nTimings are [in the **draft** slides][2] \r\n\r\n## Methodology\r\nThe training is interactive, [jupyter notebooks stubs here][6] with [sources][1] and a [Docker image][4].\r\nStudents will be driven performing the exercises and sharing their results. A couple of volunteers will be prepared to support the students.\r\n\r\n## Prerequisites\r\nThe training is multi-platform, though focused on Linux + Python2.7:\r\n\r\n - Linux, Windows, Mac\r\n\r\nFeel free to contact me for any issue or question!\r\n\r\n \r\n [1]: https://github.com/ioggstream/python-course/tree/master/python-for-sysadmin\r\n \u00a0\r\n [2]: http://www.slideshare.net/ioggstream/python-for-system-administrators-59499282\r\n \u00a0\r\n [3]: https://github.com/ioggstream/python-course/tree/master/python-for-sysadmin/requirements.txt\r\n \u00a0\r\n [4]: https://registry.hub.docker.com/u/ioggstream/python-course/\r\n \u00a0\r\n [5]: https://github.com/ioggstream/python-course/tree/master/python-basic\r\n\r\n [6]: http://nbviewer.jupyter.org/github/ioggstream/python-course/tree/corso-interno/python-for-sysadmin/notebooks/" - ], - "abstract_extra": "EuroPython speaker since 2012.\r\nRed Hat Opensource Days Italy: 2011, 2015", - "tag_categories": [ - "DevOps", - "DevOps" - ], - "emails": "robipolli@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/python-for-system-administrators", - "admin_type": "", - "companies": "Par-Tec Spa" - }, - "643": { - "abstract_short": "Our cloud platform, Aldryn, is probably the world\u2019s biggest host of Docker-powered Django websites. \r\n\r\nWe work with Docker every day, and also with less-technical users of the platform, so we have built up a good understanding of how to introduce and explain the technology for practical purposes, and of the numerous and multiple difficulties that users of it can stumble across.\r\n\r\nWe want to share that experience, and help people take advantage of Docker from a Python/Django perspective.\r\n", - "sub_title": "A hands-on workshop to familiarise Django developers with key Docker concepts and techniques", - "timerange": "2016-07-22 14:00:00, 2016-07-22 17:00:00", - "sub_community": "", - "duration": 180, - "twitters": "@EvilDMP, @stefanfoulis", - "id": 643, - "speakers": "Daniele Procida, Stefan Foulis", - "title": "So, what's all the fuss about Docker?", - "have_tickets": [ - false, - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Django", - "Docker" - ], - "abstract_long": [ - "Ou cloud platform, Aldryn, is probably the world\u2019s biggest host of Docker-powered Django websites. \r\n\r\nWe work with Docker every day, and also with less-technical users of the platform, so we have built up a good understanding of how to introduce and explain the technology for practical purposes, and of the numerous and multiple difficulties that users of it can stumble across.\r\n\r\nWe want to share that experience, and help people take advantage of Docker from a Python/Django perspective.\r\n\r\nWhat does Docker offer you, the Django developer? Even if you already know a bit about Docker, you\u2019re probably more familiar with it as a deployment tool, but in fact it offers some powerful advantages for the Python/Django developer too.\r\n\r\nThis is a hands-on workshop that also aims to clarify some key questions for the Django developer:\r\n\r\n- Why is Docker such a big deal?\r\n- What problems can Docker solve for me?\r\n- How does it work?\r\n- How can it enhance my development experience?\r\n\r\nIn the workshop we\u2019ll help install and configure Docker on your laptop (Linux/OS X/Windows), to have it working in a clear and manageable way.\r\n\r\nThen we\u2019ll step through setting up a Django project with Docker.\r\n\r\nIf we have time, we\u2019ll go on to show how Docker can help you move your project from development to deployment with minimum friction.\r\n", - "", - "", - "" - ], - "abstract_extra": "I will be running this training workshop together with a colleague or two from Divio.", - "tag_categories": [ - "Application Frameworks", - "DevOps" - ], - "emails": "daniele.procida@divio.ch, stefan@foulis.ch", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/so-whats-all-the-fuss-about-docker", - "admin_type": "", - "companies": "Divio" - }, - "616": { - "abstract_short": "Practice writing implementation-agnostic tests and using the test-driven reuse (TDR) development strategy, a natural extension of test-driven development (TDD), with [pytest-nodev][2] an Open Source test-driven search engine for Python code.\r\n\r\n[2]: http://pytest-nodev.readthedocs.org/en/stable/quickstart.html\r\n\r\nIncluding:\r\n\r\n- test-driven code search of functions and classes\r\n- test-suite validation, identification of weak tests\r\n- implementation-agnostic tests resilient to code refactoring", - "sub_title": "Writing good tests is more challenging and more rewarding than writing good code.", - "timerange": "2016-07-18 14:15:00, 2016-07-18 17:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@alexamici", - "id": 616, - "speakers": "Alessandro Amici", - "title": "Test-driven code search and the art of writing implementation-agnostic tests", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "A4", - "tags": [ - "Test Driven Development (TDD)", - "Educational Track", - "Test Libraries (pyTest/node/...)", - "Testing", - "Best Practice" - ], - "abstract_long": [ - "This is the hands-on counterpart of the regular talk \"Test-driven code search and reuse coming to Python with pytest-nodev\", it is suggested to attend it first.\r\n\r\nWe will practice writing implementation-agnostic tests and using the test-driven reuse (TDR) development strategy, a natural extension of test-driven development (TDD), with [pytest-nodev][2] an Open Source test-driven search engine for Python code.\r\n\r\n[2]: http://pytest-nodev.readthedocs.org/en/stable/quickstart.html\r\n\r\nTDR aims to address the limits of usual keyword-based search by focusing on code behaviour and semantics instead. Developing a new feature in TDR starts with the developer writing the tests that will validate candidate implementations of the desired functionality. Before writing any functional code the tests are run against all functions and classes of all available projects. Any code passing the tests is presented to the developer as a candidate implementation for the feature.\r\n\r\nApplications will include:\r\n\r\n- test-driven code search of auxiliary functions and classes\r\n - full code reuse by adding dependencies\r\n - full code reuse by forking code samples\r\n - partial code reuse by integrating features and identifying problem corner cases\r\n- test-suite validation, identification of weak tests\r\n- using implementation-agnostic tests to make regular test-suites more resilient to code refactoring." - ], - "abstract_extra": "This is the hands-on counterpart of the regular talk [\"Test-driven code search and reuse coming to Python with pytest-nodev\"][1], it is suggested to attend it first, but it is not strictly needed.\r\n\r\n[1]: http://ep2016.europython.eu/conference/talks/test-driven-source-code-search-for-python-with-pytest-nodev\r\n", - "tag_categories": [ - "Testing", - ">>> Suggested Track", - "Testing", - "Testing", - "Best Practice and Use Cases" - ], - "emails": "a.amici@bopen.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/test-driven-code-search-and-the-art-of-writing-implementation-agnostic-tests", - "admin_type": "", - "companies": "B-Open Solutions srl" - }, - "397": { - "abstract_short": "Spend time using and abusing advanced features of Python for fun, with little\r\nconsideration of what is a good or bad idea.\r\n\r\nPython has fun and powerful language features: operator overriding, decorators,\r\nmagic methods, and metaclasses. Developers steer away\r\nfrom using these features to avoid creating code that is difficult to\r\nunderstand. *Don't be one of those developers!* Come on an adventure to push\r\nPython syntax to its limits. (We will also cover what each feature is *really* for.)", - "sub_title": "Learn advanced Python features by writing code that would get you fired.", - "timerange": "2016-07-21 10:15:00, 2016-07-21 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@judy2k", - "id": 397, - "speakers": "Mark Smith", - "title": "The Stupid Python Workshop", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "Meta Classes", - "Python general", - "Educational Track", - "Mind Bending", - "Fun and Humor" - ], - "abstract_long": [ - "Spend time using and abusing advanced features of Python, for\r\nfun, with little consideration of what is a good or bad idea.\r\n\r\nDevelopers avoid using advanced language features because they don't want to\r\nwrite code that is difficult to understand. *Don't be one of those developers!*\r\nCome on an adventure to push Python syntax to its limits.\r\n\r\nThis workshop is aimed at intermediate Python developers. Attendees should be\r\ncomfortable with Python's syntax and should be intrigued or confused by:\r\nmagic methods; how `@property` works; and *what on Earth* a metaclass is.\r\nAttendees will learn how these things work, starting with the more\r\nstraightforward features. I'll introduce each concept assuming the attendees\r\nhave never used them before.\r\n\r\nWe'll be writing *silly* and *bad* things. We aim to understand how they work,\r\nnot whether they are a good idea, but in each case there will be a brief\r\ndiscussion of what each feature was really designed for. The exact contents are\r\nnot confirmed, but should include some or all of the following:\r\n\r\n* Override operators for more flexible syntax.\r\n* Using `__new__` for fun and profit.\r\n* Functions that behave differently depending on the values in the\r\n caller's scope.\r\n* Tacking extra methods on to classes we don't own.\r\n* Abuse of the descriptor protocol.\r\n* Messing with imports.\r\n* Decorators that do things decorators were never meant to do.\r\n* Write a metaclass and see if the world ends." - ], - "abstract_extra": "This workshop is based on a bunch of experiments I've partly published in my\r\n[GitHub Repo][stupid-python-tricks-repo]. It's basically a ridiculously\r\nexpanded, hands-on version of my [Lightning Talk][stupid-python-tricks-lightning-talk]\r\nat last year's EuroPython.\r\n\r\nI'm an experienced trainer and speaker. Two years ago I gave a talk on\r\n[command line programming][command-line-talk] at EuroPython, which has now been\r\nviewed 20000 times and seems to have been well received.\r\n\r\n[command-line-talk]: https://youtu.be/gR73nLbbgqY\r\n[stupid-python-tricks-repo]: https://github.com/judy2k/stupid-python-tricks\r\n[stupid-python-tricks-lightning-talk]: https://youtu.be/LQSWi3QJV8s?t=55m10s", - "tag_categories": [ - "Programming", - "Python", - ">>> Suggested Track", - "Everything Else", - "Everything Else" - ], - "emails": "pornbypost@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/the-stupid-python-workshop", - "admin_type": "", - "companies": "FanDuel" - }, - "511": { - "abstract_short": "uWSGI application server training from a simple web application hosting to an asynchronous task runner.", - "sub_title": "Learn to use and leverage the uWSGI power", - "timerange": "2016-07-18 10:15:00, 2016-07-18 13:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@ultrabug", - "id": 511, - "speakers": "Alexys Jacob", - "title": "uWSGI: the full stack application server", - "have_tickets": [ - true - ], - "type": "Training (180 mins)", - "status": "accepted", - "track_title": "E", - "tags": [ - "System Architecture", - "Infrastructure", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "ASYNC / Concurreny", - "System Administration" - ], - "abstract_long": [ - "Come and **learn how to use the uWSGI application server stack** with us.\r\n\r\nWe'll start from the basics to some more advanced usages :\r\n\r\n- what is uWSGI and why it can help you\r\n- what is the dynamic emperor mode and how it works\r\n- 1: run a simple Flask web application\r\n- 2: run a gevent based Flask web application\r\n- 3: run an external daemon using uWSGI\r\n- 4: create and run a task deferral application\r\n\r\nNote : we will provide and open source the Flask web application code we'll start from and iterate from there" - ], - "abstract_extra": "We at Numberly propose this training and propose that 2 of us run it.", - "tag_categories": [ - "DevOps", - "DevOps", - "Web", - "Programming", - "DevOps" - ], - "emails": "ultrabug@ultrabug.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/uwsgi-the-full-stack-application-server", - "admin_type": "", - "companies": "Numberly" - } - }, - "poster": { - "555": { - "abstract_short": "The EDARA code, currently in FORTRAN 77, is used at CERN to assess the environmental impact of airborne releases of radioactivity and will be significantly upgraded in the next years. Therefore a python prototype has been developed using the numba just-in-time compiler for the Monte Carlo simulation core routines and the pandas library for data analysis. This prototype lead to a much cleaner code base with comparable performance and increased flexibility, ensuring its long-term maintainability.", - "sub_title": "Leveraging powerful data analysis libraries with just-in-time compilation techniques", - "timerange": "2016-07-19 11:30:00, 2016-07-19 13:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 555, - "speakers": "Robert Froeschl", - "title": "A case study of porting a Fortran77 Monte Carlo simulation code to python&numba", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "All Other Programming Languages", - "Science Track", - "Case Study", - "Physics" - ], - "abstract_long": [ - "The EDARA code is used at CERN (European Council for Nuclear Research) to assess the environmental impact of airborne releases of radioactivity. Its development has started in the 1990ies and the code is written in FORTRAN 77.\r\nThe EDARA code will be significantly upgraded in the next years to meet the future legal requirement of including additional age groups in the impact assessments, to have the capability of choosing among several different atmospheric dispersion models and to be interfaced from other software packages.\r\nTherefore it has been decided to port the EDARA code to python and a prototype has been developed with the following characteristics:\r\n - The numba just-in-time compiler has been used for the computationally demanding Monte Carlo simulation core routines. Closures over just-in-time compiled functions have been used to implement function pointer like features for the atmospheric dispersion model selection.\r\n - The data analysis and reporting features have been implemented using the pandas library.\r\n - implementation.\r\n - An API is provided for scripting and interfacing from other codes.\r\nThis prototype demonstrates that the python/numba/pandas implementation leads to a much smaller and cleaner code base that the FORTRAN 77 implementation without incurring a significant performance penalty for the computationally demanding parts. It has substantially increased the flexibility and extensibility of the code and will ensure its long-term maintainability.\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Other Programming Languages", - ">>> Suggested Track", - "Case Study", - "Sciences" - ], - "emails": "robert.froeschl@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/a-case-study-of-porting-a-fortran77-monte-carlo-simulation-code-to-pythonnumba", - "admin_type": "", - "companies": "CERN, Geneva, Switzerland" - }, - "725": { - "abstract_short": "Shiv is Facebook layer 4 load balancer control plane built in Python, it is responsible for handling healthchecks, and configuration changes amongst other things and configure Linux IPVS to properly handle IP traffic.", - "sub_title": "", - "timerange": "2016-07-18 11:30:00, 2016-07-18 13:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@chantr4", - "id": 725, - "speakers": "Emmanuel Bretelle", - "title": "Building a billion user load balancer", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "System Architecture", - "Distributed Systems", - "Infrastructure", - "Open-Source", - "Scaling" - ], - "abstract_long": [ - "At Facebook, we make intensive use of Python in our infrastructure. Back in mid-2012, our engineers started to work on replacing the hardware load balancers that were powering Facebook with an in-house brew that would leverage Linux IPVS. Python was naturally chosen as the language to control, configure and manage the load balancers. By mid-2013, the whole of Facebook layer 4 load balancers in our datacenters had been replaced with Shiv and have been handling traffic ever since.\r\n\r\nAt the core of Shiv, we use libraries open-sourced by Facebook like Sparts [0], to set up a Thrift service, run and manage tasks, and gnlpy [1], to control IPVS via netlink. Add some python-fu to the mix and you can get a layer 4 load balancer that serves traffic for 1.65 billion people.\r\n\r\nIn this poster I will explain how our L4 load balancers are architected and how we use Python to leverage IPVS, setup individual VIPs and manage their backends, and make those load balancers operate in a fully automated way.\r\n\r\n\r\n[0] https://github.com/facebook/sparts\r\n\r\n[1] https://github.com/facebook/gnlpy\r\n\r\n[2] https://www.youtube.com/watch?v=MKgJeqF1DHw\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "DevOps", - "DevOps", - "Open Source", - "DevOps" - ], - "emails": "chantra@fb.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/building-a-billion-user-load-balancer", - "admin_type": "", - "companies": "Facebook" - }, - "732": { - "abstract_short": "TBD", - "sub_title": "An EEG-Based Control of a simulated four-wheeled Rover using ROS and Gazebo", - "timerange": "2016-07-18 10:30:00, 2016-07-18 12:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 732, - "speakers": "Enrico Carbognani", - "title": "Driving a Rover on the Moon with the Power of your Mind", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Robotics", - "Human-Machine-Interaction" - ], - "abstract_long": [ - "Humans have been dreaming for centuries about controlling their surroundings solely by the power of their minds. Nowadays, these dreams are slowly becoming reality due to a variety of inexpensive brain-computer interfaces (BCI) that detect neural activation patterns and support the control of devices by brain signals.\r\nIn this experimental setup, we intend to evaluate the performance of a commercial electroencephalographic (EEG) headset (Emotiv EPOC) in combination with a robotic simulation environment based on the Robot Operating System (ROS) and the Gazebo 3D simulator, and highlight the advantages and limitations of this approach. \r\nThe user will able to control one degree of freedom (yaw) of a four-wheeled rover (the CLEARPATH Robotics Husky) via the EPOC EEG and drive it trough simulated Moon terrains constructed using images and topographic (elevation) satellite data and integrated into Gazebo. \r\nWe are also planning to extend the experimental setup to include the use of Virtual Reality for the 3D visualization (this is subject to the successful integration of the Oculus Rift DK2 headset support in Gazebo which we are currently testing).\r\n" - ], - "abstract_extra": "In this simulation we will evaluate the performance of a commercial electroencephalographic (EEG) headset (Emotiv EPOC) in combination with a robotic simulation environment based on ROS and the Gazebo 3D simulator, and highlight the advantages and limitations of this approach. \r\nThe user will able to control one degree of freedom (yaw) of a four-wheeled rover via the EEG and drive it trough simulated Moon terrains.\r\nWe are also planning to possibly extend the experimental setup to include the use of Virtual Reality for the 3D visualization.", - "tag_categories": [ - "Hardware", - "Hardware" - ], - "emails": "enrico.carbognani@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/driving-a-rover-on-the-moon-with-the-power-of-your-mind", - "admin_type": "", - "companies": "" - }, - "550": { - "abstract_short": "Plone has, for the last 15 years, pushed the boundaries of Python-based CMSs. \r\nNow, in a world where JS frontends and delivery to multiple devices is key, we use the knowledge gained to get the **good** parts of this in a sensible, secure, developer- and integrator friendly, reliable Python backend.\r\n\r\n", - "sub_title": "Secure, social, responsive and scalable.", - "timerange": "2016-07-20 11:30:00, 2016-07-20 13:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@polyester", - "id": 550, - "speakers": "Paul Roeland", - "title": "Plone, the premier Python CMS and intranet", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Web General", - "Plone", - "Open-Source", - "CMS", - "Community" - ], - "abstract_long": [ - "Plone 5.1 brings more ways to integrate all that is needed for a modern website and intranet:\r\n\r\n - rapid theming independent of the backend, so designers can do what they do best\r\n - testable, standard ways of integrating JavaScript widgets and frameworks\r\n - integrate best-of-breed search\r\n - all with a solid, secure, Python backend\r\n - flexibility and TTW rapid prototyping, combined with CI and controlled development techniques\r\n\r\nPlone, now in its 15th year, has evolved together with Python. As shown in one of this year's [keynotes at PyCon][1], the relationship is still going strong, and there is much we can learn from one another.\r\n\r\n [1]: https://us.pycon.org/2016/events/keynotes/\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Web", - "Application Frameworks", - "Open Source", - "Web", - "Community" - ], - "emails": "paul.roeland@plone.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/plone-the-premier-python-cms-and-intranet", - "admin_type": "", - "companies": "Plone" - }, - "720": { - "abstract_short": "Many problems in statistics, finance, biology, pharmacology, physics, mathematics, economics, and chemistry involve the determination of the global minimum of multidimensional functions. The PyGenSA python module has been developed for generalized simulated annealing to process complicated non-linear objective functions with a large number of local minima.\r\n\r\n", - "sub_title": "An Efficient Global Optimization Python Module based on Generalized Simulated Annealing", - "timerange": "2016-07-19 10:30:00, 2016-07-19 12:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 720, - "speakers": "St\u00e9phane Cano", - "title": "PyGenSA: An Efficient Global Optimization for Generalized Simulated Annealing", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Science", - "Algorithms", - "Science Track", - "Open-Source", - "Scientific Libraries (Numpy/Pandas/SciKit/...)" - ], - "abstract_long": [ - "Many problems in statistics, finance, biology, pharmacology, physics, mathematics, economics, and chemistry involve the determination of the global minimum of multidimensional functions. Python modules from SciPy and PyPI for the implementation of different stochastic methods (i.e.: pyEvolve, SciPy optimize) have been developed and successfully used in the Python scientific community. Based on Tsallis statistics, the PyGenSA python module has been developed for generalized simulated annealing to process complicated non-linear objective functions with a large number of local minima. Testing PyGenSA, basinhopping and differential evolution (SciPy) on many standard test functions used in optimization problems shows that PyGenSA is more reliable in general and very efficient in particular for high dimension problems." - ], - "abstract_extra": "Pull request submitted to SciPy: \r\nhttps://github.com/scipy/scipy/pull/6197\r\n\r\nBranch corresponding to the pull request:\r\nhttps://github.com/sgubianpm/scipy.git\r\n", - "tag_categories": [ - "Sciences", - "Data Science", - ">>> Suggested Track", - "Open Source", - "Data Science" - ], - "emails": "stephane.john.cano@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pygensa-an-efficient-global-optimization-for-generalized-simulated-annealing", - "admin_type": "", - "companies": "Philip Morris R&D" - }, - "713": { - "abstract_short": "The IntelliCage\u2122 is a system for long-term behavioural experiments on cohorts of mice in social context. The robustness of IntelliCage data analysis may be improved with computer programs analysing the data in batch mode.\r\n\r\nTo simplify development of such programs, we developed the PyMICE library (RRID:nlx_158570). The library provides an user-friendly and intuitive API to access IntelliCage data, encouraging programming according to object-oriented and functional programming paradigms.", - "sub_title": "Facilitating reproducible research on mice behaviour.", - "timerange": "2016-07-20 10:30:00, 2016-07-20 12:10:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 713, - "speakers": "Jakub Kowalski", - "title": "PyMICE - a library for analysis of IntelliCage\u2122 data", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Science", - "Python general", - "Science Track", - "Open-Source", - "Scientific Libraries (Numpy/Pandas/SciKit/...)" - ], - "abstract_long": [ - "Life sciences are suffering badly from a \"research reproducibility crisis\". One of possible countermeasures is automation of data acquisition and analysis. \r\n\r\nAutomated data acquisition systems facilitate standardization of conditions and measurements by minimization of human disturbance. One of such systems is IntelliCage\u2122, dedicated for long-term behavioural experiments on cohorts of mice in social context.\r\n\r\nThe robustness of data analysis may be improved with automated data analysis workflows (ADAWs): computer programs analysing the data in batch mode. Also, the source code of such program is an unequivocal, formal specification of the performed analysis. The only drawback of such approach is a significant effort and technical knowledge necessary to define an ADAW.\r\n\r\nOur goal was to simplify development of ADAWs and to shift the developer's focus from technical details (like data format) to the analysis itself. To meet the goal, we developed the PyMICE library (resource identifier: RRID:nlx_158570). The library provides an user-friendly and intuitive API to access IntelliCage data, encouraging development of ADAWs according to object-oriented and functional programming paradigms.\r\n\r\n**Acknowledgements**\r\nProject sponsored by Symfonia NCN grant: UMO-2013/08/W/NZ4/00691\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "My experience is mostly from presenting posters at neuroscientific conferences.", - "tag_categories": [ - "Sciences", - "Python", - ">>> Suggested Track", - "Open Source", - "Data Science" - ], - "emails": "j.kowalski@nencki.gov.pl", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pymice-library", - "admin_type": "", - "companies": "" - }, - "733": { - "abstract_short": "Python is the most used language by production engineers , and the second most used by Facebook infrastructure teams. We use it in domains such as infrastructure management (network/server provisioning, service turnup, auto-remediation of server and services failures), platform services (package deployment, job scheduling, TFTP and kernel upgrades), service configuration management or operational tooling.\r\n", - "sub_title": "", - "timerange": "2016-07-19 14:45:00, 2016-07-19 16:25:00", - "sub_community": "", - "duration": 180, - "twitters": "@chantr4", - "id": 733, - "speakers": "Emmanuel Bretelle", - "title": "Python in Production Engineering", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Operations", - "Infrastructure", - "Distributed Systems", - "Scaling" - ], - "abstract_long": [ - "Python is the most used language by production engineers [0], and the second most used by Facebook infrastructure teams. We use it in domains such as infrastructure management (network/server provisioning, service turnup, auto-remediation [1] of server and services failures), platform services (package deployment, job scheduling, TFTP [2] and kernel upgrades), service configuration management [3] or operational tooling.\r\n\r\nProduction engineers working on those services will be attending Europython 16 and happy to answer your questions on how Python helps us build service quickly and enables us to move fast and scale.\r\n\r\n\r\n[0] https://code.facebook.com/posts/1040181199381023/python-in-production-engineering/\r\n\r\n[1] https://www.facebook.com/notes/facebook-engineering/making-facebook-self-healing/10150275248698920/\r\n\r\n[2] https://ep2016.europython.eu/conference/talks/fbtftp-facebooks-python3-framework-for-tftp-servers\r\n\r\n[3] https://us.pycon.org/2016/schedule/presentation/2059/" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "DevOps", - "DevOps", - "DevOps" - ], - "emails": "chantra@fb.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/python-in-production-engineering", - "admin_type": "", - "companies": "Facebook" - }, - "694": { - "abstract_short": "Juju is a devops tool for automated deployments, with full stack\r\nservice modelling and orchestration, in the cloud. Fully\r\ncontrollable with Python through \"charms\".", - "sub_title": "Devops distilled: deploy and orchestrate your services with Juju and Python", - "timerange": "2016-07-20 14:45:00, 2016-07-20 16:25:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 694, - "speakers": "Michael Foord", - "title": "To the Clouds: Service Orchestration and Cloud Deployment with Juju", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Public Cloud (AWS/Google/...)", - "Go-Lang", - "Linux", - "DevOps general", - "OpenStack" - ], - "abstract_long": [ - "Juju is a devops tool for automated deployments, with full stack\r\nservice modelling and orchestration, in the cloud. Fully\r\ncontrollable with Python through \"charms\".\r\n\r\nAbstract\r\n\r\nDo you deploy your Python services to Amazon EC2, or to Openstack,\r\nor even to HP cloud, joyent or Azure? Do you want to - without being\r\ntied into any one of them? What about local full stack deployments\r\nwith lxc or kvm containers?\r\n\r\nEven if you're convinced you don't need \"the cloud\" because you\r\nmanage your own servers, amazing technologies like Private clouds\r\nand MaaS, for dynamic server management on bare metal, may change\r\nyour mind.\r\n\r\nFed up with the cloud hype? Let me rehabilitate the buzzword! (A bit\r\nanyway.)\r\n\r\nA fully automated cloud deployment system is essential for rapid\r\nscaling, but it's also invaluable for full stack testing on\r\ncontinuous integration systems. Even better, your service deployment\r\nand infrastructure can be managed with Python code? (Devops distilled)\r\n\r\nTreat your servers as cattle not as pets, for service oriented\r\nrepeatable deployments on your choice of back-end. Learn how service\r\norchestration is a powerful new approach to deployment management,\r\nand do it with Python! If any of this sounds interesting then Juju\r\nmaybe for you!\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Other Programming Languages", - "Operating Systems", - "DevOps", - "DevOps" - ], - "emails": "fuzzyman@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/juju", - "admin_type": "", - "companies": "Canonical" - }, - "627": { - "abstract_short": "The BBC micro:bit is a small programmable device. It is being given, this year, to every 11 to 12-year-old child in the UK. One of the programming languages available for the micro:bit is Python. This poster will look at using Python, on the micro:bit, in informal learning environments. It is based on a six-month, in residence, project at a library.", - "sub_title": "Introducing Python and the Internet of Things, to the next generation, through libraries and clubs.", - "timerange": "2016-07-18 14:45:00, 2016-07-18 16:25:00", - "sub_community": "", - "duration": 180, - "twitters": "@corinnewelsh", - "id": 627, - "speakers": "Corinne Welsh", - "title": "Using Python on the BBC micro:bit in informal learning environments", - "have_tickets": [ - true - ], - "type": "Poster session (180 mins)", - "status": "accepted", - "track_title": "Poster Session", - "tags": [ - "Education", - "Teaching", - "MicroPython", - "Internet of Things (IoT)", - "Community" - ], - "abstract_long": [ - "This year, in an aspirational project led by the BBC, every 11 to 12-year-old child in the UK is being given a small programmable device. The BBC micro:bit has LEDs, input buttons, an accelerometer, a compass, input/output pins, power supply pins, and Bluetooth connectivity. It is supported by four different programming languages, one of which is Python.\r\n\r\nSchools are central in delivering the project: the micro:bits are being distributed, through schools, to Year 7 pupils. However, the vision of the micro:bit project is that the devices are given directly to children. They are owned by the children themselves to do with as they wish.\r\n\r\nI am involved in a six-month project based in a London borough library. The project's aim is to develop support to use Python, on the micro:bit, in the context of informal learning spaces. These include extra-curricular STEM clubs, libraries, and Saturday coding clubs.\r\n\r\nMy poster will be a reportage of the project. It will cover the challenges of introducing Python for the micro:bit and the benefits Python brings. I will also consider some wider issues, such as the role of gender, in the roll-out of the micro:bit." - ], - "abstract_extra": "I will bring a couple of micro:bits, with me, to accompany the poster presentation and discussion with a demonstration.", - "tag_categories": [ - "Educational", - "Everything Else", - "Python", - "Hardware", - "Community" - ], - "emails": "corinne@lilycat.co.uk", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/using-python-on-the-bbc-microbit-in-informal-learning-environments", - "admin_type": "", - "companies": "JustOutsource.it" - } - }, - "helpdesk": { - "731": { - "abstract_short": "We'll try to help everybody, especially new comers in Python, to understand better the asynchronous pattern, and AsyncIO in general.\r\n\r\nDon't hesitate to ask us any question, especially if you think it's a stupid question: No stupid questions, only stupid answers.", - "sub_title": "If you're curious to write code with AsyncIO but you don't know how to start or you have issues", - "timerange": "2016-07-18 10:30:00, 2016-07-18 12:00:00, 2016-07-18 14:15:00, 2016-07-18 17:15:00", - "sub_community": "", - "duration": 180, - "twitters": "@GMLudo", - "id": 731, - "speakers": "Ludovic Gasc", - "title": "AsyncIO support for new comers", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 2", - "tags": [ - "Python 3", - "Databases", - "Architecture", - "APIs", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "We'll try to help everybody, especially new comers in Python, to understand better the asynchronous pattern, and AsyncIO in general.\r\n\r\nDon't hesitate to ask us any question, especially if you think it's a stupid question: No stupid questions, only stupid answers.\r\n\r\nExample of questions we'll try to answer, it's a compilation of questions we'll already received:\r\n\r\n- Where is the 101 of AsyncIO ?\r\n- When I can use AsyncIO ?\r\n- Why to add async/await keywords ? It's only aliases of @asyncio.coroutine/yield from ?\r\n- I don't understand the difference between a task and a coroutine, could you explain me ?\r\n- When I need to add await before a call function ?\r\n- How to spot quickly the code can be asynchronous with synchronous code ?\r\n- How I can use synchronous libraries in my asynchronous code ?\r\n- How to architecture my source code with AsyncIO ?\r\n- I don't understand the internals of AsyncIO with event loop and how yield from works internally. (Spoiler alert: To start to code with Python itself, did you understand before the CPython's internals ?)\r\n - Why another asynchronous network framework ? Need already covered by Twisted/Tornado/Gevent/...\r\n- Why some libraries need to be reimplemented, like aiohttp or aiopg ?\r\n- Now that Django channels exist, AsyncIO is useless, isn't it ?\r\n- What's the difference between AsyncIO and curio ?" - ], - "abstract_extra": "We'll try to be the most pedagogical as possible with some concrete examples of source code with a laptop.", - "tag_categories": [ - "Python", - "Databases", - "Programming", - "Web", - "Programming" - ], - "emails": "gmludo@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/asyncio-support-for-new-comers", - "admin_type": "", - "companies": "Eyepea/ALLOcloud" - }, - "721": { - "abstract_short": "Helpdesk will help people to know more about code analysis tools that they should be using in their projects for better, clean code. The aim is to get people familiar with static code analysis tool and how to use coala to make linting and other analysis super easy in their projects. ", - "sub_title": "Our goal is to make code analysis easy while remaining completely modular, extensible and language i", - "timerange": "2016-07-20 10:30:00, 2016-07-20 12:00:00, 2016-07-20 14:00:00, 2016-07-20 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@karansharma1295", - "id": 721, - "speakers": "Karan Sharma", - "title": "Code analysis made super easy.", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 2", - "tags": [ - "Beginners", - "Clean Code", - "Open-Source", - "Static Analysis", - "Python Software Foundation (PSF)" - ], - "abstract_long": [ - "The helpdesk will get the audience acquainted with code analysis tools and how coala helps to make this whole process of static code analysis easier. The goal of the helpdesk will be to get the user setup coala and demonstrate live on how to use it on projects etc, configure it, how to be able to customise it. coala helps to manage a lot of different tools together in one single configuration file. Also, as coala is an ever growing community of happy developers, I will assist them to get acquainted with how to contribute to coala and solve baby issues at Github to mark their first Open source contribution if they are interested in doing that. \r\n" - ], - "abstract_extra": "I've been contributing to coala since March 2016 and I am a Google Summer of Code student, working with them this year. \r\n\r\nMy code commits which have been accepted at upstream repo at coala are https://github.com/coala-analyzer/coala-bears/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Amr-karan+", - "tag_categories": [ - "Educational", - "Educational", - "Open Source", - "Everything Else", - "Community" - ], - "emails": "karansharma1295@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/code-analysis-made-super-easy", - "admin_type": "", - "companies": "coala" - }, - "668": { - "abstract_short": "Chat with the core developers about how to extend django CMS, integrate your own apps seamlessly or brainstorm a hard-to-solve problem.", - "sub_title": "Talk about your django CMS project with the core devs", - "timerange": "2016-07-21 10:30:00, 2016-07-21 12:00:00, 2016-07-21 14:00:00, 2016-07-21 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@stefanfoulis", - "id": 668, - "speakers": "Stefan Foulis", - "title": "django CMS", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "Web General", - "Django", - "CMS" - ], - "abstract_long": [ - "Chat with the core developers about how to extend django CMS or how to integrate your own apps seamlessly. Lets talk about your plugins, apphooks, toolbar extensions, content-creation wizards, menu extensions or anything else django CMS related.\r\nWe can brainstorm a hard-to-solve problem you've encountered. Maybe you have the nagging feeling there ought to be simpler way to solve something you've done in a project. We're also happy to discuss feedback or ideas for something that could be added to django CMS.\r\nBring your code. Lets chat!" - ], - "abstract_extra": "My colleague has also submitted a matching training which I'll be part of: https://ep2016.europython.eu/conference/talks/application-integration-with-django-cms\r\n\r\nStefan Foulis' previous talk stuff:\r\n- various talks at local meetups in Z\u00fcrich, Switzerland\r\n- \"Local development with docker\" talk at DjangoCon 2015 (http://2015.djangocon.eu/talks/ https://vimeo.com/133154447 )\r\n- \"Advanced django CMS\" workshop at DjangoCon 2015 (http://2015.djangocon.eu/event/advanced-django-cms/)\r\n", - "tag_categories": [ - "Web", - "Application Frameworks", - "Web" - ], - "emails": "stefan@foulis.ch", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/django-cms", - "admin_type": "", - "companies": "Divio" - }, - "553": { - "abstract_short": "Tips, best practices, health check and a general good workout for your documentation. There is both science, and art, to writing and maintaining good docs. And, as your docs are your first point of contact for new community members, there is every reason to make it the best you can.\r\n\r\nWhile this helpdesk won't *write* docs for you, we will give you a solid headstart in making them better. ", - "sub_title": "A health-check and excercise session for your docs", - "timerange": "2016-07-18 10:30:00, 2016-07-18 12:00:00, 2016-07-18 14:15:00, 2016-07-18 15:45:00", - "sub_community": "", - "duration": 180, - "twitters": "@polyester", - "id": 553, - "speakers": "Paul Roeland", - "title": "DOCtors are in!", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "Communication", - "Teaching", - "Documentation", - "DevOps general", - "Community" - ], - "abstract_long": [ - "There's a whole community, and a wealth of experience, that aim to bring the science, the art, and the fun of documentation to a higher level. Come learn some best practices on how to keep your docs maintainable, testable, deployable and up to date.\r\n\r\n\"Give me your tired, your poor,\r\nYour huddled docs yearning to breathe free,\r\nThe wretched refuse of your teeming shore.\r\nSend these, the homeless, tempest-tost to me,\r\nI lift my lamp beside the golden door!\"" - ], - "abstract_extra": "We (Mikey Ariel, Maciej Szlosarczyk and me) held a similar session last year in Bilbao, which was well visited and fun to do.\r\n\r\nAs I'm traveling I haven't had time to contact them to see if they had already submitted a Helpdesk proposal. So there may be a double proposal; just wanted to get it in before the deadline.", - "tag_categories": [ - "Community", - "Everything Else", - "Programming", - "DevOps", - "Community" - ], - "emails": "paul.roeland@plone.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/doctors-are-in", - "admin_type": "", - "companies": "Plone" - }, - "594": { - "abstract_short": "Come ask me anything about Elasticsearch or associated technologies. We can talk design/use cases/integrations and/or try and debug your problems.", - "sub_title": "Ask Me Anything about deploying/architecting/scaling", - "timerange": "2016-07-20 10:30:00, 2016-07-20 12:00:00, 2016-07-20 14:00:00, 2016-07-20 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@honzakral", - "id": 594, - "speakers": "Honza Kr\u00e1l", - "title": "Elasticsearch and the Elastic Stack", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "Debugging", - "Architecture", - "Best Practice", - "Scaling", - "Elastic Search" - ], - "abstract_long": [ - "Elasticsearch and other parts of the Elastic stac (beats, logstash and kibana) are becoming more popular for many different use cases - from pure search all the way to log storage and analysis.\r\n\r\nIn case you have any questions, problems or suggestions, come talk to me." - ], - "abstract_extra": "I have been working for the company behind elasticsearch for over three years, mostly developing the Python client but also doing support, training and consulting for our paying customers. I would love to help the members of the Python community to be successful when using elasticsearch.", - "tag_categories": [ - "Testing", - "Programming", - "Best Practice and Use Cases", - "DevOps", - "Databases" - ], - "emails": "honza.kral@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/elasticsearch-and-the-elastic-stack", - "admin_type": "", - "companies": "Elastic" - }, - "740": { - "abstract_short": "> \u201cMake things as simple as possible, but not simpler.\u201d \u2014 Albert Einstein\r\n> \u201cPremature optimization is the root of all evil.\u201d \u2014 Donald E. Knuth\r\n\r\nWe've all heard that Python is slow and that we have to use a compiled language to get the maximum performance. While this is true to a certain extent, it is also true that we can work out certain bits of our Python code and gain some microseconds. Bring your code and let's try to make it as fast as possible together!", - "sub_title": "Use profiling techniques and certain Python libraries to optimize your code", - "timerange": "2016-07-19 10:30:00, 2016-07-19 12:00:00, 2016-07-19 14:00:00, 2016-07-19 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@astrojuanlu", - "id": 740, - "speakers": "Juan Luis Cano", - "title": "Make Python as fast as possible, but not faster", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 2", - "tags": [ - "Performance", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Code Analysis" - ], - "abstract_long": [ - "> \u201cMake things as simple as possible, but not simpler.\u201d \u2014 Albert Einstein\r\n> \u201cPremature optimization is the root of all evil.\u201d \u2014 Donald E. Knuth\r\n\r\nIt's often said that Python is necessarily slow and that we have to write the critical parts of our program in a compiled language to get the maximum performance. While this is true to a certain extent, it is also true that we can work out certain bits of our Python code and gain some microseconds, leaving the rewriting of our program in C++ or Fortran as a last resource.\r\n\r\nBring your slow Python algorithm and we will use profiling, memory profiling, numba and a bit of common sense to try and make it run as fast as possible! Sometimes we will be able to make some suggestions of new algorithms or architectures, other times we will be able to spot the single line that consumes 90 % of our running time, but either way we will both learn about software performance a lot.\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Data Science", - "Programming" - ], - "emails": "juanlu001@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/make-python-as-fast-as-possible-but-not-faster", - "admin_type": "", - "companies": "Indizen" - }, - "514": { - "abstract_short": "Design or usage questions of mongoDB from python ? Come over and ask !", - "sub_title": "Use cases and pymongo helpdesk", - "timerange": "2016-07-19 10:30:00, 2016-07-19 12:00:00, 2016-07-19 14:00:00, 2016-07-19 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@ultrabug", - "id": 514, - "speakers": "Alexys Jacob", - "title": "Python and mongoDB", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "NoSQL", - "Use Case", - "MongoDB", - "Best Practice" - ], - "abstract_long": [ - "The Numberly DevOps team members will help and share their experience in using mongoDB on python applications.\r\n\r\nCome with your code or design questions and we'll do our best to help you find the best answers and test them live !\r\n\r\n_The Numberly team has been running mongoDB in production for more than 5 years now and used it on various use cases, from simple web applications to real time analytics serving thousands transactions per second._\r\n\r\n" - ], - "abstract_extra": "This is not a personal proposal but a team one from Numberly, at least 2 of us will be made available for this helpdesk (myself not included).", - "tag_categories": [ - "Databases", - "Best Practice and Use Cases", - "Databases", - "Best Practice and Use Cases" - ], - "emails": "ultrabug@ultrabug.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/python-and-mongodb", - "admin_type": "", - "companies": "Numberly" - }, - "416": { - "abstract_short": "I", - "sub_title": "YAML libraries are not always the most developer friendly, stop by if you have any questions.", - "timerange": "2016-07-22 10:30:00, 2016-07-22 12:00:00, 2016-07-22 14:00:00, 2016-07-22 15:30:00", - "sub_community": "", - "duration": 180, - "twitters": "@", - "id": 416, - "speakers": "Anthon van der Neut", - "title": "YAML is one of the more human friendly data serialisation formats", - "have_tickets": [ - true - ], - "type": "Help desk (180 mins)", - "status": "accepted", - "track_title": "Help Desk 1", - "tags": [ - "Data", - "Structures" - ], - "abstract_long": [ - "There are several human parsable data serialisation possibilities but there are only a handful that are human friendly. Arbitrarily human friendly means that:\r\n - you can include comments in your format to explain things to other readers\r\n - it means what you think that it means\r\n - no need to quote things that are clear without\r\n - visual nesting through indentation, not through lisp like ( (( (()()))) or \r\n- easy to edit without breaking things (trailing comma's anyone).\r\n\r\nYAML supports most of the above, but the \"standard\" YAML library would \r\n- rearrange mapping (dictionary) entries on dumping making comparison using diff difficult\r\n- drop comments when reading data to YAML, so dumping leads to data loss for humans\r\n- was not updated for YAML 1.2 published in 2009\r\nby upgrading the standard library to deal with these issues in the increasingly often used ruamel.yaml round-trip library, in-dept knowledge was built up both on how to effectively use YAML as well on how to do some unplanned for things in YAML. \r\nPlease stop by with any questions you have beginner, or advanced on how to make the use of YAML in you project not only more human-friendly, but also more developer friendly. \r\n(You're also welcome if you don't understand how someone can like to work with JSON)\r\n\r\n" - ], - "abstract_extra": "I have professionally supported many developers that worked (in)directly for me or for other departments in the organisation I was employed.\r\n\r\nI like helping out people and online I do so both on StackOverflow (primarily\r\nanswering [YAML related questions][1], on [Unix&Linux][2] and [Ebooks][3] StackExchange\r\n\r\n [1]: http://stackoverflow.com/search?q=user%3A1307905+[yaml]+is%3Aanswer\r\n [2]: http://unix.stackexchange.com/users?tab=Reputation&filter=all\r\n [3]: http://ebooks.stackexchange.com/users?tab=Reputation&filter=all\r\n", - "tag_categories": [ - "", - "" - ], - "emails": "a.van.der.neut@ruamel.eu", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/yaml-is-one-of-the-more-human-friendly-data-serialisation-format", - "admin_type": "", - "companies": "RUAMEL bvba" - } - }, - "interactive": { - "572": { - "abstract_short": "Technical debt lives among us regardless if we are in the services business or building products. \r\nWe discuss about it, we try to fix it or live with it, but can we actually prevent it? \r\nMy reason for discussing this openly is because once it is there you do not only deal with the technical debt itself but also with the interest you must pay.\r\nWhat qualifies as debt? What qualifies as interest? How do we manage it? Is it really unavoidable?", - "sub_title": "", - "timerange": "2016-07-18 14:15:00, 2016-07-18 15:15:00", - "sub_community": "", - "duration": 60, - "twitters": "@mircea_zetea", - "id": 572, - "speakers": "Mircea Zetea", - "title": "Managing technical debt", - "have_tickets": [ - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Management", - "Best Practice", - "Business Track" - ], - "abstract_long": [ - "Technical debt lives among us regardless if we are in the services business or building products. \r\nWe discuss about it, we try to fix it or live with it, but can we actually prevent it? \r\nMy reason for discussing this openly is because once it is there you do not only deal with the technical debt itself but also with the interest you must pay.\r\nMy reason for discussing this openly is because once it is there you do not only deal with the technical debt itself but also with the interest you must pay. Comparing the two, probably the highest cost that we see is with the interest.\r\n As our code base grows and our deadlines get tougher we tend to forget about the cost our project will have to pay for every functionality that we implement in a hurry, for which we \u201cforget\u201d about tests or for which we write in a comment \u201cthis needs to be refactored\u201d or \u201cthis is a temporary solution. refactor later\u201d.\r\nWhat qualifies as debt? What qualifies as interest? How do we manage it? At what levels in our projects can we see the debt and the interest? Is it really unavoidable? " - ], - "abstract_extra": "", - "tag_categories": [ - "Development Methods", - "Best Practice and Use Cases", - ">>> Suggested Track" - ], - "emails": "mircea@zetea.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/managing-technical-debt", - "admin_type": "", - "companies": "Spyhce" - }, - "510": { - "abstract_short": "Sharing our worst production experiences and the tricks, good practices and code we developed to address them.", - "sub_title": "Let's share our worst experiences and tricks we used to avoid them", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 60, - "twitters": "@ultrabug, @r4mnes", - "id": 510, - "speakers": "Alexys Jacob, Guillaume Gelin", - "title": "Planning for the worst", - "have_tickets": [ - true, - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "The Answer to Life the Universe and Everything Else", - "Use Case", - "Best Practice", - "Mind Bending", - "failures/mistakes" - ], - "abstract_long": [ - "This talk is about sharing our experience about how we handled production problems on all levels of our applications.\r\n\r\nWe'll begin with common problems, errors and failures and dig on to more obscure ones while sharing concrete tips, good practices and code to address them !\r\n\r\nThis talk will make you feel the warmth of not being alone facing a problem :)", - "", - "", - "" - ], - "abstract_extra": "Can also be a \"standard\" talk, I just wanted to try the idea of having it more interactive with the audience because a lot of people can relate to quick a lot of problems.\r\n\r\nThere will be slides to guide the conversation but it will be open to everyone to share their experience.", - "tag_categories": [ - "Everything Else", - "Best Practice and Use Cases", - "Best Practice and Use Cases", - "Everything Else", - "Best Practice and Use Cases" - ], - "emails": "ultrabug@ultrabug.net, ramnes@1000mercis.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/planning-for-the-worst", - "admin_type": "", - "companies": "Numberly" - }, - "712": { - "abstract_short": "First we will talk about coding interviews: How to prepare and\r\nwhat to expect. Then, we will cover software engineering resumes, typical coding\r\nquestions and tasks that companies usually give to candidates.\r\n\r\nWe end with a discussion on long-term career paths\r\nof software engineers. The hypothesis is that true engineering careers\r\nexist at maybe Google but normal firms unfortunately only allow growth by\r\nforcing engineers into management.", - "sub_title": "Going from junior to senior and from interviewee to interviewer", - "timerange": "2016-07-19 14:00:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 60, - "twitters": "@", - "id": 712, - "speakers": "Iwan Gulenko", - "title": "Programming interviews and careers", - "have_tickets": [ - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "General", - "Use Case", - "Business", - "Best Practice", - "failures/mistakes" - ], - "abstract_long": [ - "First we will talk about coding interviews: How to prepare and\r\nwhat to expect. Then, we will cover software engineering resumes, typical coding\r\nquestions and tasks that companies usually give to candidates.\r\n\r\nWe end with a discussion on long-term career paths\r\nof software engineers. The hypothesis is that true engineering careers\r\nexist at maybe Google but normal firms unfortunately only allow growth by\r\nforcing engineers into management." - ], - "abstract_extra": "", - "tag_categories": [ - "", - "Best Practice and Use Cases", - "", - "Best Practice and Use Cases", - "Best Practice and Use Cases" - ], - "emails": "iwan@gulenko.ch", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/coding-interviews-what-to-expect-and-how-to-prepare", - "admin_type": "", - "companies": "" - }, - "697": { - "abstract_short": "EuroPython Meeting of the Python Software Foundation\r\n\r\nMembers and non-members are invited to this EuroPython meeting of the PSF! Please join us for some updates from the PSF board.", - "sub_title": "", - "timerange": "2016-07-20 15:45:00, 2016-07-20 16:45:00", - "sub_community": "", - "duration": 60, - "twitters": "@NaomiCeder", - "id": 697, - "speakers": "Naomi Ceder", - "title": "PSF Meeting", - "have_tickets": [ - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Conferences and Meet-Ups", - "Python Software Foundation (PSF)", - "Community" - ], - "abstract_long": [ - "EuroPython Meeting of the Python Software Foundation\r\n\r\nMembers and non-members are invited to this EuroPython meeting of the PSF! Please join us for some updates from the PSF board.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Community", - "Community", - "Community" - ], - "emails": "naomi.ceder@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/psf-meeting-2016", - "admin_type": "", - "companies": "Trans*Code" - }, - "639": { - "abstract_short": "This interactive game teaches the basic of ip and ethernet protocol using just paper and pens, and become very popular with our interns and in our LUG meetings. \r\n\r\nParticipants are divided in teams, simulating simple network infrastructures (eg. computers connected by an hub and a switch).\r\n", - "sub_title": "Learn IP protocol basics with an interactive game.", - "timerange": "2016-07-18 16:00:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 60, - "twitters": "@ioggstream", - "id": 639, - "speakers": "Roberto Polli", - "title": "The Router Game", - "have_tickets": [ - true - ], - "type": "Interactive (60 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Internet of Things (IoT)" - ], - "abstract_long": [ - "This interactive game teaches the basic of ip and ethernet protocol using just paper and pens, and become very popular with our interns and LUG meetings. \r\n\r\nParticipants are divided in teams, simulating simple network infrastructures (eg. computers connected by an hub and a switch).\r\n\r\nEvery player has a role: a PC or mobile phone, an HUB, a Switch, a Router, and must communicate with the others following the associate specification (eg. an hub should broadcast message to every neighbour, a switch should populate the mac address table, ...)\r\n\r\nThe team which is faster in exchanging messages wins.\r\n\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Hardware" - ], - "emails": "robipolli@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/the-router-game", - "admin_type": "", - "companies": "Par-Tec Spa" - } - }, - "talk": { - "729": { - "abstract_short": "Creating 3D model for 3D printing is pretty hard for non 3D CG designer or non 3D CAD engineer. But recently, so many 3D software (like Maya, Blender, Fusion360 and so on) provides Python API to manipulate 3D data in those software. So in this session, I will introduce Python API of Blender and Autodesk Fusion 360 and share some basic knowledge and tips when you use these API. I will also introduce my past projects with those APIs.", - "sub_title": "Generate 3D model for 3D printing using Python API proveded by 3D softwares", - "timerange": "2016-07-22 14:00:00, 2016-07-22 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@taxpon", - "id": 729, - "speakers": "Takuro Wada", - "title": "3D Modeling and Printing by Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Developing with Python", - "3D", - "Blender" - ], - "abstract_long": [ - "### Abstract\r\n\r\n- Creating 3D model for 3D printing is pretty hard for **non 3D CG designer or non 3D CAD \r\nengineer**.\r\n\r\n- Recently, so many 3D software (like Maya, Blender, Fusion360 and so on) provides Python API to manipulate 3D data in those software. Once you learn these Python API, you can generate 3D model by Python and 3D print those generated model.\r\n\r\n- In this session, I will introduce Python API of some softwares and share some basic knowledges and tips when you use these API. I will also introduce my past projects with those APIs and my products.\r\n\r\n![][1]\r\n\r\n### Goal\r\n- Introduce 3D model generation and 3D printing with Python to audience\r\n\r\n### After this session, you will\r\n- Acquire the basic knowledge of 3D data structure\r\n- Understand basic concepts of Python API provided by 3D softwares\r\n- Acquire knowledge to start your 3D model generation project by Python\r\n- Know past 3D model generation projects by Python\r\n\r\n### Prerequisite\r\n- Basic knowledge of Python\r\n- Interests for 3D modeling and 3D printing by Python\r\n\r\n [1]: http://takuro.ws/img/euro_python.jpg\r\n" - ], - "abstract_extra": "### Blog articles about 3D manipulation by Python\r\n- Articles about 3D modeling for 3D printing by Python (only Japanese)\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-1][1]\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-2][2]\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-3][3]\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-4][4]\r\n - [https://www.rinkak.com/jp/blog/blender-python-modeling-5][5]\r\n - Sample codes\r\n - [https://github.com/kabuku/blender-python][6]\r\n\r\n- 3D model and Minecraft (only Japanese)\r\n - [http://www.kabuku.co.jp/developers/blender2minecraft-by-python][7]\r\n - Source code\r\n - [https://github.com/taxpon/b2mine][8]\r\n\r\n### Created library to manipulate 3D model\r\n- [Pymesh][9]\r\n- [Openpyscad][10]\r\n\r\n### Presentation Slides\r\n- Past talks\r\n - [http://www.slideshare.net/TakuroWada/3d-modeling-by-python-scripts][11]\r\n - [http://www.slideshare.net/TakuroWada/3d-printing-by-python-scripts-and-blender-54557221][12]\r\n\r\n [1]: https://www.rinkak.com/jp/blog/blender-python-modeling-1\r\n [2]: https://www.rinkak.com/jp/blog/blender-python-modeling-2\r\n [3]: https://www.rinkak.com/jp/blog/blender-python-modeling-3\r\n [4]: https://www.rinkak.com/jp/blog/blender-python-modeling-4\r\n [5]: https://www.rinkak.com/jp/blog/blender-python-modeling-5\r\n [6]: https://github.com/kabuku/blender-python\r\n [7]: http://www.kabuku.co.jp/developers/blender2minecraft-by-python\r\n [8]: https://github.com/taxpon/b2mine\r\n [9]: https://github.com/taxpon/pymesh\r\n [10]: https://github.com/taxpon/openpyscad\r\n [11]: http://www.slideshare.net/TakuroWada/3d-modeling-by-python-scripts\r\n [12]: http://www.slideshare.net/TakuroWada/3d-printing-by-python-scripts-and-blender-54557221", - "tag_categories": [ - ">>> Suggested Track", - "Everything Else", - "Everything Else" - ], - "emails": "taxpon@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/3d-modeling-and-printing-by-python", - "admin_type": "", - "companies": "Kabuku Inc." - }, - "509": { - "abstract_short": "The Pymongo driver is one of MongoDB\u2019s most popular driver interfaces for\r\nconnecting to MongoDB. But developers rarely look under the cover to see\r\nwhat\u2019s happening inside the driver.\r\nBy having a deeper insight into how the driver constructs server requests\r\nand responds, developers will be able to write more effective MongoDB\r\napplications in Python.", - "sub_title": "What work does the driver do before sending requests to the MongoDB server", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 60, - "twitters": "@jdrumgoole", - "id": 509, - "speakers": "Joe Drumgoole", - "title": "A deep dive into the Pymongo MongoDB driver", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Educational Track", - "MongoDB", - "Open-Source" - ], - "abstract_long": [ - "*The Pymongo driver is one of MongoDB\u2019s most popular driver interfaces for\r\nconnecting to MongoDB. But developers rarely look under the cover to see\r\nwhat\u2019s happening inside the driver. *\r\n\r\n*By having a deeper insight into how the driver constructs server requests\r\nand responds, developers will be able to write more effective MongoDB\r\napplications in Python.*\r\n\r\n*We will look at :*\r\n\r\n-\r\n\r\n*Initial connection*\r\n-\r\n\r\n*A query*\r\n-\r\n\r\n*A simple write operation*\r\n-\r\n\r\n*A bulk write operation*\r\n-\r\n\r\n*How the driver responds when we have a node failure*\r\n\r\n*We will also give insight into the driver\u2019s approach to server selection\r\nwhen connecting to a replicas set (a multi-node instance of MongoDB).*", - "", - "", - "" - ], - "abstract_extra": "I've been doing public presentations for over twenty years. I'm a regular speaker at MongoDB technical events .\r\n\r\n", - "tag_categories": [ - ">>> Suggested Track", - "Databases", - "Open Source" - ], - "emails": "joe.drumgoole@10gen.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/a-deep-dive-into-the-pymongo-mongodb-driver", - "admin_type": "", - "companies": "MongoDB" - }, - "409": { - "abstract_short": "A gentle introduction to neural networks, and making your own with Python.\r\n\r\nThis session is deliberately designed to be accessible to everyone, including anyone with no expertise in mathematics, computer science or Python.\r\n\r\nFrom this session you will have an intuitive understanding of what neural networks are and how they work. If you are more technically capable, you will see how you could make your own with Python and numpy.", - "sub_title": "Gain an understanding of the ideas behind simple neural networks, and make your own with Python.", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@postenterprise", - "id": 409, - "speakers": "Tariq Rashid", - "title": "A Gentle Introduction to Neural Networks (with Python)", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Python 3", - "Beginners", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Algorithms", - "Machine-Learning" - ], - "abstract_long": [ - "A gentle introduction to neural networks, and making your own with Python.\r\n\r\nThis session is deliberately designed to be accessible to everyone, including anyone with no expertise in mathematics, computer science or Python.\r\n\r\nFrom this session you will have an intuitive understanding of what neural networks are and how they work. If you are more technically capable, you will see how you could make your own with Python and numpy.\r\n\r\nPart 1 - Ideas:\r\n - the search for AI, hard problems for computers easy fro humans\r\n - learning from examples (simple classifier)\r\n - biologically inspired neurons and networks\r\n - training a neural network - the back propagation breakthrough\r\n - matrix ways of working (good for computers)\r\n\r\nPart 2 - Python:\r\n - Python is easy, and everywhere\r\n - Python notebooks\r\n - the MNIST data set\r\n - a very simple neural network class\r\n - focus on concise and efficient matrix calculations with bumpy\r\n - 97.5% accuracy recognising handwritten numbers - with just a few lines of code!\r\n\r\nPart 3 - Q&A\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "The core reason for my proposal is to open access to interesting ideas to as many people as possible - especially those with no technical background, and no university level expertise in maths or computer science.\r\n\r\nI seem to have a talent for this - and enjoy this immensely. \r\n\r\nI have started teaching Python in London (eg Meetups) for complete beginners, and they are well received and over subscribed. \r\n\r\nI have a book published, introducing complete beginners or students of approx age 15, to fractals using complex numbers, and introducing them to Python to make their own. The book is well reviewed and sells approx 3 a week, and was serialised in Linux Voice magazine.\r\nhttp://www.amazon.com/dp/B00JFIEC2A\r\nhttp://makeyourownmandelbrot.blogspot.com\r\n\r\nMy latest book (almost published) applies the same idea of making complex and sometimes scary concepts accessible and easy to as many people as possible. \r\nhttp://makeyourownneuralnetwork.blogspot.co.uk\r\n\r\nQualifications? Why should anyone believe me?\r\nI have a degree in Physics from Cambridge University, and a second Masters degree in Machine Leaning and Data Mining.\r\nI have worked in tech in some serious organisations like civil nuclear, international finance and media, and most recently in the UK government. If you search google, you'll find talks on open source, digital and security reform by myself - eg http://www.embecosm.com/2015/11/17/how-to-start-your-own-open-source-business/", - "tag_categories": [ - "Python", - "Educational", - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "tariq.rashid50@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/a-gentle-introduction-to-neural-networks-with-python", - "admin_type": "", - "companies": "Digital Dynamics" - }, - "561": { - "abstract_short": "At the LEAP Encryption Access Project we aim to make secure communications both easy to use and easy to provide.\r\n\r\nWe bring some tales (and some, hopefully, tools) from the quest for user-friendly crypto software. How to make people love the email experience in the 21st century, without risking their privacy. How to encrypt data locally, sync it to servers that you can lose, and still be sexy.", - "sub_title": "tales and tools for applications that need encrypted, synchronized data, with minimal-trust servers", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 561, - "speakers": "Kali Kaneko", - "title": "Against the silos: usable encrypted email & the quest for privacy-aware services", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Fun and Humor", - "clients", - "Distributed Systems", - "Cryptography", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "Technologies that allow for privacy in the communications, allowing the escape from the pervasive massive surveillance, have been there for some years now, but yet its use by the general public is far from widespread. The challenge, in our view, can be defined by one of making usable crypto. Usable for the end user, usable for the sysadmin and for the fellow application developer. In the quest for massive adoption of encryption technologies, we've been forging several python packages to solve different problems, always standing in the shoulders of giants. \r\nWe bring some tales from the trenches to share, from our humble experience trying to deploy clients and servers to provide Secured Encrypted Internet Tunnels and Encrypted Email. This includes interesting challenges dealing with key management, automatic and secure software updates, and processing of email while using stock cloud providers, while still being resistant to hostile environments.\r\nWe'll show a webmail email user agent based on this architecture, a promising future for decentralization and privacy.\r\nWe'll also talk about how to store locally encrypted data, and will present Soledad (Synchronization of Locally Encrypted Data Across Devices). Soledad is a library with server and client components that allows the development of different applications based on client-side, end-to-end and cloud-syncable encryption of private data. We'll play with some toy apps to showcase its features and potential." - ], - "abstract_extra": "https://github.com/leapcode/\r\nhttps://leap.se/docs/\r\nsome previous presentations at (random order):\r\nHOPE, IFF, hackmeeting, squatconf", - "tag_categories": [ - "Everything Else", - "Business", - "DevOps", - "Security", - "Programming" - ], - "emails": "bennomadic@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/against-the-silos-usable-encrypted-email-the-quest-for-privacy-aware-services", - "admin_type": "", - "companies": "LEAP Encrypted Access Project" - }, - "715": { - "abstract_short": "This is a look behind the scenes at Winton Capital Management- one of Europe\u2019s most successful systematic investment managers. The talk will mainly focus on how Python gives researchers fine-grained control over the data and trading systems, without requiring them to interact directly with the underlying, highly-optimised technology.", - "sub_title": "", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@, @", - "id": 715, - "speakers": "iztok kucan, Joris Peeters", - "title": "Algorithmic Trading with Python", - "have_tickets": [ - true, - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Algorithms" - ], - "abstract_long": [ - "Have you ever wondered what technologies are used in a systematic trading system that utilises computer models and accounts for the majority of trading on the stock market? This is a look behind the scenes at Winton Capital Management- one of Europe\u2019s most successful systematic investment managers. In this talk, we\u2019ll run through an overview of Winton\u2019s trading infrastructure, including data management, signal generation and execution of orders on global exchanges. The talk will mainly focus on how Python gives researchers fine-grained control over the data and trading systems, without requiring them to interact directly with the underlying, highly-optimised technology.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Data Science" - ], - "emails": "i.kucan@wintoncapital.com, j.peeters@wintoncapital.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/algorithmic-trading-with-python", - "admin_type": "", - "companies": "" - }, - "584": { - "abstract_short": "Deep learning: how it works, how to train a deep neural network, the theory behind deep learning, recent developments and applications.", - "sub_title": "", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:15:00", - "sub_community": "pydata", - "duration": 60, - "twitters": "@Brittix1023", - "id": 584, - "speakers": "Geoff French", - "title": "An Introduction to Deep Learning", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Deep Learning", - "Science Track", - "Data Science", - "Machine-Learning" - ], - "abstract_long": [ - "In the last few years, deep neural networks have been used to generate state of the art results in image classification, segmentation and object detection. They have also successfully been used for speech recognition and textual analysis. In this talk, I will give an introduction to deep neural networks. I will cover how they work, how they are trained, and a little bit on how to get going. I will briefly discuss some of the recent exciting and amusing applications of deep learning. The talk will primarily focus on image processing." - ], - "abstract_extra": "I have given this talk previously at PyData London and at the Cambridge Python User Group where it was well received:\r\nSlides are here:\r\nhttps://speakerdeck.com/britefury/introduction-to-deep-learning-cambridge-python-user-group\r\n", - "tag_categories": [ - "Data Science", - ">>> Suggested Track", - "Data Science", - "Data Science" - ], - "emails": "britefury@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/an-introduction-to-deep-learning", - "admin_type": "", - "companies": "" - }, - "670": { - "abstract_short": "Docker is a powerful tool for packaging software and services in containers and running them on a virtual infrastructure. Python is a very powerful language for data analysis. What happens if we combine the two? We get a very versatile and robust system for analyzing data at small and large scale!\r\n\r\nI will show how we can make use of Python and Docker to build repeatable, robust data analysis workflows which can be used in many different contexts (possibly with a live demo).", - "sub_title": "Creating reproducible and robust data analysis workflows with containers", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@japh44", - "id": 670, - "speakers": "Andreas Dewes", - "title": "Analyzing Data with Python & Docker", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Deployment/Continuous Integration and Delivery", - "Docker", - "Data Science" - ], - "abstract_long": [ - "Docker is a powerful tool for packaging software and services in containers and running them on a virtual infrastructure. Python is a very powerful language for data analysis. What happens if we combine the two? We get a very versatile and robust system for analyzing data at small and large scale!\r\n\r\nI will show how we can make use of Python and Docker to build repeatable, robust data analysis workflows that can be used in many different contexts. I will explain the core ideas behind Docker and show how they can be useful in data analysis. I will then discuss an open-source Python library (Rouster) which uses the Python Docker-API to analyze data in containers and show several interesting use cases (possibly even a live-demo).\r\n\r\nOutline:\r\n\r\n1. Why data analysis can be frustrating: Managing software, dependencies, data versions, workflows\r\n2. How Docker can help us to make data analysis easier & more reproducible\r\n3. Introducing Rouster: Building data analysis workflows with Python and Docker\r\n4. Examples of data analysis workflows: Business Intelligence, Scientific Data Analysis, Interactive Exploration of Data\r\n5. Future Directions & Outlook" - ], - "abstract_extra": "This is a technical talk about data analysis & Python intended for the PyData conference. I have started using Docker and Python for data analysis recently and I think the topic could be very interesting to the Python & data analysis community. I also work on an open-source library for data analysis using Python & Docker called *Rouster* (http://rouster.7scientists.com), which makes it very easy to build data analysis workflows with Python and Docker. I want to use the talk to introduce the tool to a wider audience and get feedback and ideas for the further development (currently the tool is still in its alpha stage).\r\n\r\n", - "tag_categories": [ - "DevOps", - "DevOps", - "Data Science" - ], - "emails": "andreas.dewes@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/analyzing-data-with-python-docker", - "admin_type": "", - "companies": "7scientists UG" - }, - "585": { - "abstract_short": "Many of us have been taught to code, but we know that software engineering jobs are so much more than that.\r\nProgrammers can spend 5-6 hours per week on code review, but doing that is almost ignored as a skill.\r\nHow many of us have seen poor reviews, which don't catch bugs, make people feel bad or block important features being merged?\r\nAn introduction to what code review is alongside guidelines, tips, tricks and anecdotes to help make your code reviews be as productive as possible.", - "sub_title": "Improve your code and your team by reviewing code (well)", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@adamdangoor", - "id": 585, - "speakers": "Adam Dangoor", - "title": "Another pair of eyes: Reviewing code well", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Clean Code", - "Tooling", - "Best Practice", - "Development" - ], - "abstract_long": [ - "Many of us have been taught to code, but we know that software engineering is so much more than that. Programmers can spend 5-6 hours per week on code review, but doing that is almost ignored as a skill, and instead it is often treated as a rote chore.\r\n\r\nHow many of us have seen poor reviews - those which upset people, don't catch bugs or block important features being merged? This talk explores the social and technical impacts of various code review practices as well as helpful tooling. The goal is to provide a structure to help improve how teams review code, and to introduce the costs and benefits of code review to anyone unfamiliar with the practice.\r\n\r\nThere are always trade-offs to be made - e.g. think how costly a security flaw in this code could be to your organisation - perhaps intense scrutiny is not necessary for prototypes soon to be thrown away. It is useful to consider the trade-offs in order to optimise for a particular problem domain. Perhaps right now it is more important to look for issues with maintainability, functionality or performance.\r\n\r\nI talk about how some fantastic code reviews from mentors, colleagues and strangers have helped me become a better programmer and team member, as well as occasions where code review has been detrimental by slowing things down and causing arguments.\r\n\r\nThis is aimed at everyone from beginner to advanced programmers." - ], - "abstract_extra": "I gave my first conference talk last year at Write the Docs Prague - I was nervous but it went down well. The video is at https://www.youtube.com/watch?v=PoVwyPipHzc. The talk was on the topic of how to keep instructions in software documentation working as the code changes.", - "tag_categories": [ - "Educational", - "Programming", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "adamdangoor@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/another-pair-of-eyes-reviewing-code-well", - "admin_type": "", - "companies": "" - }, - "562": { - "abstract_short": "In this talk we show how the Go language helped us get a high performance in a concise and simple API. Everything will be exemplified using the backdrop of a real case of Globo.com: API registrations. We will see how we went from 200 to 19,000 records per second to the impacts of this rapid growth and the consequences of Go of use. We also show how our microservices architecture was used in the project.", - "sub_title": "", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:45:00", - "sub_community": "", - "duration": 60, - "twitters": "@ViniciusPach", - "id": 562, - "speakers": "Vinicius Pacheco", - "title": "APIs and Microservices With Go", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Architecture", - "Go-Lang", - "Microservices" - ], - "abstract_long": [ - "This talk is about Go, software architecture and parallelism. How we went from legacy, complex and slow software to new, speed, resilient and maintainable software.\r\nI'll start the talk showing the problemas and the challenges that my team had received. After that, I'll show the tests, tests of performance and the options that we did considering technologies and strategies of development. The difficulties and problems also will be show. Also I talk about:\r\n\r\n- Goroutines\r\n- Resilient patterns\r\n- Go tools\r\n- Architecture\r\n- Web performance\r\n\r\nHow we leave of the Java ecosystem to new free ecosystem with microservices and how Go help us." - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Other Programming Languages", - "Programming" - ], - "emails": "vfpweb@gmail.com", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/apis-and-microservices-with-go", - "admin_type": "", - "companies": "globo.com" - }, - "547": { - "abstract_short": "async/await is here, everybody can use it in Python 3.5. It's great and awesome, yet only a few understand it. As a PEP 492 author, I'd really like to have a chance to better explain the topic, show why async/await is important and how it will affect Python. I'll also tell a story on how I worked on the PEP -- starting from an idea that I discussed with Guido on PyCon US 2015, and landing to CPython source code one and a half moths later!", - "sub_title": "What and why is async/await in Python, and where it's headed", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@1st1", - "id": 547, - "speakers": "Yury Selivanov", - "title": "async/await in Python 3.5 and why it is awesome", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Python 3", - "Educational Track", - "Architecture", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "The talk will start with a brief coverage of the story of asynchronous programming in Python -- Twisted, Tornado, Stackless Python & greenlets, eventlet, Tornado, asyncio & curio. We've come a really long road, and it's important to understand how we ended up with async/await.\r\n\r\nThen I'll go over asyncio and curio, showing async/await by example, explaining that in reality it's a very easy to use language feature. You don't need to know all the details to be able to successfully use the new syntax, and even build new frameworks on top of it.\r\n\r\nI'll then explain the async/await machinery in CPython, starting with generators and 'yield' expression, showing what is 'yield from' and finally, demonstrating how async/await is implemented in CPython. This will ensure that those who want to invent some new crazy ways of using async/await will have a starting point!\r\n\r\nI'll end the talk with a story of how I came up with the idea. How I shared it with Guido van Rossum, Victor Stinner, and Andrew Svetlow. How the first version of the PEP was born, and how we managed to push it to Python 3.5 in under two months period. The goal is to make people understand that it's possible to change your programming language -- in fact, Python, as any other programming language, wants new features and capabilities to be relevant." - ], - "abstract_extra": "I'm the author and implementor of PEP 492 -- async/await syntax in Python 3.5. I'm also working on a new PEP to add asynchronous generators in CPython 3.6. If it's accepted before the EuroPython (there chances are high!) I'll have a unique opportunity to be the first one to present it to the EuroPython crowd!", - "tag_categories": [ - "Python", - ">>> Suggested Track", - "Programming", - "Programming" - ], - "emails": "yury@magic.io", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/asyncawait-in-python-35-an-why-it-is-awesome", - "admin_type": "", - "companies": "MagicStack" - }, - "687": { - "abstract_short": "Introducing asynchronous calls from within an endpoint in a web app can be desirable but hard to achieve.\r\nThis talk will explore different solutions for this (running Twisted event loop, Co-Routines, Asyncio, \u2026) and how well they play with the different parallelization models of common WSGI web servers.", - "sub_title": "", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@laucia_julljen", - "id": 687, - "speakers": "Lauris Jullien", - "title": "Asynchronous network requests in a web application", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Performance", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "In the more and more popular SOA paradigm, it\u2019s common for services to have to compose responses with resources from many different services. Everyone\u2019s first idea will probably be to call each service synchronously with your favorite python HTTP library. This unfortunately doesn\u2019t scale well and tens of successive network calls will make your endpoints painfully slow. \r\n\r\nOne solution is to parallelize these network calls. If you are already using an asynchronous web app (such as Tornado or Twisted), more asynchronous in your asynchronous shouldn\u2019t be much of a challenge. But if you chose not to dive into the madness of chained Deferred calls, and used a standard prefork/threaded WSGI web server (such as Gunicorn or uWSGI) to run your Django/Flask/Pyramid application, you might find yourself wondering how to manage these asynchronous calls.\r\n\r\nThis talk will explore different solutions (running Twisted event loop, Co-Routines, Asyncio, \u2026) and how well they play with the different parallelization models of WSGI web servers." - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Web", - "Programming" - ], - "emails": "lauris@yelp.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/asynchronous-network-requests-in-a-web-application", - "admin_type": "", - "companies": "Yelp" - }, - "467": { - "abstract_short": "At Ableton we love music and we love open-source. Ansible is an amazing tool which allows us to free more time for music by automating boring and repetitive tasks, and to contribute back to the open-source community with ease. Here's an opportunity to share our love for it, our experience with it, and our contributions to it with you. ", - "sub_title": "Automate everything and contribute back to the community with ansible", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@oleiade", - "id": 467, - "speakers": "Theo Crevon", - "title": "Automate, contribute, repeat.", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Infrastructure", - "Open-Source", - "Development", - "DevOps general" - ], - "abstract_long": [ - "Computers are never as convenient as when they work for us. If you agree with this motto, then Ansible, a deployment and automation tool written in Python, might come in handy.\r\n\r\nAt Ableton, Ansible is involved in every aspect of deployment and automation. From local machine setup, to vm creation and deployment in our self-hosted datacenter, to our services in the immensity of the cloud.\r\n\r\nBecause it is dead simple to use, can deal with any number of hosts in parallel and has robust compatibility with Unix as well as Windows systems, you will probably never have to write a shell script again.\r\n\r\nBecause it is written in Python and exposes a clean, extensible and easy to adapt design and architecture; contributing features to the project and fixing the bugs you might encounter during the journey is extremely easy. \r\n\r\nAt Ableton we love music and we love open-source. Ansible is an amazing tool which allows us to free more time for music by automating boring and repetitive tasks, and to contribute back to the open-source community with ease. Here's an opportunity to share our love for it, our experience with it, and our contributions to it with you. \r\n\r\nAutomate, contribute, repeat. " - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Open Source", - "Programming", - "DevOps" - ], - "emails": "tcr@ableton.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/automate-contribute-repeat", - "admin_type": "", - "companies": "Ableton" - }, - "476": { - "abstract_short": "A modern application has a lot of passwords and keys floating around. Encryptions keys, database passwords, and API credentials; often typed in to text files and forgotten. Fortunately a new wave of tools are emerging to help manage, update, and audit these secrets. Come learn how to avoid being the next TechCrunch headline. ", - "sub_title": "", - "timerange": "2016-07-18 16:00:00, 2016-07-18 16:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 476, - "speakers": "Noah Kantrowitz", - "title": "Behind Closed Doors: Managing Passwords in a Dangerous World", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Security", - "Configuration Management (Ansible/Fabric/Chef/...)", - "DevOps general" - ], - "abstract_long": [ - "Secrets come in many forms, passwords, keys, tokens. All crucial for the operation of an application, but each dangerous in its own way. In the past, many of us have pasted those secrets in to a text file and moved on, but in a world of config automation and ephemeral microservices these patterns are leaving our data at greater risk than ever before.\r\n\r\nNew tools, products, and libraries are being released all the time to try to cope with this massive rise in threats, both new and old-but-ignored. This talk will cover the major types of secrets in a normal web application, how to model their security properties, what tools are best for each situation, and how to use them with major web frameworks." - ], - "abstract_extra": "## Outline\r\n\r\n* Intros\r\n* Types of secrets\r\n * Passwords (internal control)\r\n * Key files (TLS, whole files)\r\n * Tokens (external control)\r\n * Other (PCI, etc)\r\n * Hot vs. cold access\r\n* Properties of a secrets management system\r\n * Audit trail\r\n * Least access\r\n * Integrations\r\n * Pre-encryption systems\r\n* The usual solutions, and why they are dangerous\r\n* Attack surfaces and threat modelling\r\n * Code leak\r\n * Backup leak\r\n * Directory traversal/transclude\r\n * RCE\r\n * Laptop theft\r\n * Higher power (gov, etc)\r\n* Identity Management\r\n * Tokens\r\n * Cloud Systems\r\n * HSMs\r\n* Tools\r\n * Text files\r\n * Chef encrypted bags\r\n * Ansible Vault\r\n * Chef Vault\r\n * Hashicorp Vault\r\n * KeyWhiz\r\n * AWS KMS\r\n * Sneaker\r\n * Confidant\r\n * Trousseau\r\n * Sops\r\n * Red October\r\n * Barbican\r\n * Conjur\r\n* Framework Integration\r\n * HVAC\r\n * KeywhizFS\r\n * Consul Template\r\n * botocore\r\n", - "tag_categories": [ - "Security", - "DevOps", - "DevOps" - ], - "emails": "coderanger@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/behind-closed-doors-managing-passwords-in-a-dangerous-world", - "admin_type": "", - "companies": "" - }, - "487": { - "abstract_short": "\r\nl\r\nThis talk show how a to create a simple, evolving, client server architecture combining zeromq, selenium and beautifulsoup, which allows you to scrape data even from variable dynamic sites like Sporcle and KhanAcademy. Once the page analysis has been implemented regular \"downloads\" can easily be deployed without cluttering your desktop, your headless server and/or anonymously.\r\n", - "sub_title": "Choosing the right combination of tools for getting data from the web can make your life easier", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 487, - "speakers": "Anthon van der Neut", - "title": "Beyond scraping, getting data from dynamic, heavily javascript driven, websites", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Tooling", - "Web Crawling", - "Web Track" - ], - "abstract_long": [ - "Scraping static websites can be done with `urllib2` from the standard library, or with some slightly more sophisticated packages like `requests`. \r\nHowever as soon as JavaScript comes into play on the website you want to download information from, for things like logging in via openid or constructing the pages content, you almost always have to fall back to driving a real browser.\r\nFor web sites with variable content this is can be time consuming and cumbersome process.\r\n\r\nThis talk show how a to create a simple, evolving, client server architecture combining zeromq, selenium and beautifulsoup, which allows you to scrape data from sites like Sporcle, StackOverflow and KhanAcademy. Once the page analysis has been implemented regular \"downloads\" can easily be deployed without cluttering your desktop, your headless server and/or anonymously.\r\n\r\nThe described client server setup allows you to restart your changed analysis program without having to redo all the previous steps of logging in and stepping through instructions to get back to the page where you got \"stuck\" earlier on. This often decreases the time between entering a possible fix in your HTML analysis code en testing it, down to less than a second from a few tens of seconds in case you have to restart a browser.\r\n\r\nUsing such a setup you have time to focus on writing robust code instead of code that breaks with every little change the sites designers make." - ], - "abstract_extra": "I have previously spoken at PyCon 2006 in Dallas and at other conferences, non-python related, in the Netherlands, when I still lived there.\r\nI will prepare some new and update some existing packages on PyPI so that attendees can easily reproduce the presented talk on their own.", - "tag_categories": [ - "Programming", - "Web", - ">>> Suggested Track" - ], - "emails": "a.van.der.neut@ruamel.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/beyond-scraping-getting-data-from-dynamic-heavily-javascript-driven-websites", - "admin_type": "", - "companies": "RUAMEL bvba" - }, - "392": { - "abstract_short": "This talk is about using our **Python** skills to explore the **secrets of our brains**. Using the Neurosky Mindwave as a bluetooth connected EEG device, I'll talk about new experiments I have performed inside the Jupyter notebook, for example \"Evoked Response Potentials\" and more about \"Neuro Feedback\" training. \r\n\r\n", - "sub_title": "Hacking the brain", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@BayesianHorse ", - "id": 392, - "speakers": "Andreas Klostermann", - "title": "Brainwaves for Hackers 3.0", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Visualization", - "Beginners", - "Other Hardware", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "Electroencephalography **(EEG)** measures potential waves originating within the brain. Billions of brain cells fire inside your brain, each sending out a minuscule wave. The summed potential waves can be measured, even with quite cheap and **portable devices**.\r\n\r\nBeing the third major version of this talk, I'll talk briefly about the Neurosky Mindwave and the Muse headset. I have also developed more interactive Jupyter experiments, which I'll demonstrate in the talk. For example **Evoked Response Potentials (ERP)** can be demonstrated with relatively simple means. Also I'll talk some more about experiments with **Neuro Feedback**.\r\n\r\n" - ], - "abstract_extra": "This is the third \"version\" and contains new and updated content. It requires no knowledge from the previous two major versions, but also contains mostly new material. So those who haven't seen the other talks yet will still understand it, those who have won't be bored. That's the plan, anyway.", - "tag_categories": [ - "Data Science", - "Educational", - "Hardware", - "Programming" - ], - "emails": "andreasklostermann@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/brainwaves-for-hackers-3", - "admin_type": "", - "companies": "" - }, - "735": { - "abstract_short": "During this talk you will see how to make a robot able to recognize people with a Raspberry Pi as main board and Python as language. The talk will cover the hardware and modules, discuss briefly the alternatives, and finally show a live demo.", - "sub_title": "", - "timerange": "2016-07-18 14:45:00, 2016-07-18 15:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@ilovelinux02", - "id": 735, - "speakers": "Antonio Spadaro", - "title": "Build and control a Python-powered robot.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Raspberry PI", - "Robotics", - "OpenCV" - ], - "abstract_long": [ - "During this talk you will see how to make a robot able to recognize people with a Raspberry Pi as main board and Python as language. The talk will cover the hardware and modules, discuss briefly the alternatives, and finally show a live demo.\r\n\r\nThe robot uses two main modules:\r\n\r\n - **OpenCV** (_Open Source Computer Vision Library_), an open-source library that includes several hundreds of computer vision algorithms. Usage ranges from interactive art, to mines inspection, stitching maps on the web or through advanced robotics.\r\n\r\n - **gpiozero**, a simple interface to everyday GPIO components used with Raspberry Pi.\r\n\r\nThe first is used to recognize the people and the object; the second to control the robot.\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Hardware", - "Hardware", - "Hardware" - ], - "emails": "antoniospadaro45@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/build-and-control-a-python-powered-robot", - "admin_type": "", - "companies": "" - }, - "618": { - "abstract_short": "Join this talk to learn about the OpenStack Python SDK and how to deploy your web app step by step using different components in OpenStack.", - "sub_title": "", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@vkmc", - "id": 618, - "speakers": "Victoria Martinez de la Cruz", - "title": "Build your first OpenStack application with OpenStack PythonSDK", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Open-Source" - ], - "abstract_long": [ - "How many times you heard about OpenStack and all the cool things it is being used for? Most of the use cases are big players that need to handle huge amounts of data and automate complex infrastructures. But what about actually using it, for you as a developer, to deploy a simple app? In my case, at least, that has not be an usual topic of discussion when talking about OpenStack. In this talk I'll introduce the OpenStack Python SDK, a project relatively new in the OpenStack ecosystem, and show you step by step how to deploy your own web app using different components in OpenStack." - ], - "abstract_extra": "", - "tag_categories": [ - "Open Source" - ], - "emails": "victoria@vmartinezdelacruz.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/build-your-first-openstack-application-with-openstack-pythonsdk", - "admin_type": "", - "companies": "Red Hat" - }, - "596": { - "abstract_short": "While microservices are rather commonly implemented using JSON over\r\nHTTP this is merely an implementation choice. This talk will cover\r\nthe reasons why you might want to choose ZeroMQ as communication\r\ntransport between your microservices instead. It will show how ZeroMQ\r\nis used from within Python and the common patterns which can simplify\r\nthe overal architecture while at the same time providing reliable and\r\nlow-latency communications between your services.", - "sub_title": "Low-latency communications for your backend architecture", - "timerange": "2016-07-20 14:00:00, 2016-07-20 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@flubdevork", - "id": 596, - "speakers": "Floris Bruynooghe", - "title": "Build your Microservices with ZeroMQ", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Software Design", - "System Architecture", - "Microservices" - ], - "abstract_long": [ - "Microservices is the popular term for the trend to build backend\r\narchitectures as a number of smaller independent processes. As an\r\nevolution from the Service Oriented Architecture the core aims are to\r\ncreate independent services which are easy to operate and even replace\r\nwhile all of them together compose into providing the business logic\r\nrequired for your application.\r\n\r\nWhile it is rather common for microservices to choose JSON over HTTP\r\nto communicate with each other, this is purely an implementation\r\nchoice. HTTP is a protocol using a strict request-response format,\r\nthis can become a little burdensome when needing to deal with\r\nasynchronous requests and forces some architectural descisions to be\r\nnot as ideal as they could be. ZeroMQ has more flexible communication\r\npatterns allowing for easier mapping of real-life interactions between\r\nservices. Coupled with an easy to use asynchronous user-level API and\r\nvery fast underlying communication on persistent TCP connections\r\nZeroMQ is a rather attractive transport to build your microservices\r\nbased applications in.\r\n\r\nThis talk will show how to use ZeroMQ within Python to build your\r\nmicroservices. It will show the benefits of ZeroMQ's asynchronous\r\nAPI, common usage patterns and how to handle backpressure.\r\nFurthermore different communication patterns will be explored and the\r\nimpact this has on how to simplify the overall architecture using\r\nthese patterns." - ], - "abstract_extra": "Previous talks I have given:\r\n- EuroPython 2011 - Exploring CPython's bytecode\r\n- PyConUK 2011 - Exploring CPython's bytecode\r\n- EuroPython 2012 - Using Sockets in Python\r\n- EuroPython 2013 - Taming greenlets using eventlet\r\n- FOSDEM 2014 - Introduction to py.test Fixtures\r\n- FOSDEM 2014 - Integrating Python and C using CFFI\r\n- EuroPython 2014 - Advanced Uses of py.test Fixtures\r\n- PyConUK 2014 - Advanced Uses of py.test Fixtures\r\n- EuroPython 2015 - The hook-based plugin architecture of py.test\r\n- PyConUK 2015 - Shipping your application using Conda", - "tag_categories": [ - "Programming", - "DevOps", - "Programming" - ], - "emails": "flub@devork.be", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/build-your-microservices-with-zeromq", - "admin_type": "", - "companies": "Cobe.io" - }, - "612": { - "abstract_short": "These are the lessons learned when scaling a SaaS web application which grew much faster than any one us could have ever expected.\r\n\r\n - Log and monitor from day one.\r\n - Things will fail, be sure you know when they do.\r\n - Choose components which allow language interoperability.\r\n - Horizontally scalable everything.\r\n - Plan for database downtime.\r\n - Have a way to share settings between backend and frontend.\r\n - Have a way to enter maintenance mode.\r\n - And more...\r\n\r\n", - "sub_title": "The things you knew you'd have to deal with, and some that you probably didn't.", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@eriknhj", - "id": 612, - "speakers": "Erik N\u00e4slund", - "title": "Building a reasonably popular web application for the first time.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Web Track", - "Case Study", - "RESTful", - "APIs", - "failures/mistakes" - ], - "abstract_long": [ - "My name is Erik N\u00e4slund - I\u2019m the co-founder and Head of Engineering at Hotjar.\r\n\r\nI'd love to share the lessons learned when scaling a SaaS web application which grew much faster than any one us could have ever expected.\r\n\r\nWords like \u201cbig\u201d and \u201cpopular\u201d carry very little meaning, so let me define how big Hotjar is right now using some numbers.\r\n\r\nWe onboard about 500 new users on a daily basis.\r\nWe process around 250 000 API requests every minute.\r\nOur CDN delivers about 10 TB of data per day.\r\nWe have roughly 3 TB of data in our primary data store (PostgreSQL), another 1 TB in our Elasticsearch cluster, and a LOT more on Amazon S3.\r\n\r\nThese are the key things we wish we knew when we started. They would have made our life so much easier!\r\n\r\n - Log and monitor from day one.\r\n - Have a way to profile your API calls.\r\n - Things will fail, be sure you know when they do.\r\n - Have a way to keep secrets.\r\n - Everything needs a limit (even if it's really big).\r\n - Be wary of hitting data type limits.\r\n - Don't get too attached to a framework.\r\n - Choose components which allow language interoperability.\r\n - Horizontally scalable everything.\r\n - Plan for database downtime.\r\n - Features are a great way to test things out before launching them to the public.\r\n - Have a way to share settings between back end and front end.\r\n - Have a way to enter maintenance mode.\r\n - Require different quality of code for different parts of your application." - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "Case Study", - "Web", - "Web", - "Best Practice and Use Cases" - ], - "emails": "erik@hotjar.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/building-a-reasonably-popular-web-application-for-the-first-time", - "admin_type": "", - "companies": "Hotjar Ltd" - }, - "606": { - "abstract_short": "This talk demonstrates a technique for developing RESTful APIs using Flask and Flask-Restplus. These tools automate common API tasks such as: validating input, serializing output, routing requests to methods, and turning Python exceptions into HTTP responses.\r\n\r\nThe final API comes with a Swagger interactive UI, which documents all endpoints and makes testing easy. The described tools tools provide just enough syntactic sugar to make your code readable, scalable and easy to maintain.", - "sub_title": "Using Flask-Restplus to easily develop an API documented by Swagger", - "timerange": "2016-07-22 14:00:00, 2016-07-22 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@postrational", - "id": 606, - "speakers": "Micha\u0142 Karzy\u0144ski", - "title": "Building beautiful RESTful APIs using Flask", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Open-Source", - "Web Track", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "Documentation", - "Development" - ], - "abstract_long": [ - "Modern software is powered by APIs. User facing apps may run in the browser or on mobile platforms, but they almost universally rely on data stored in the cloud. More often then not apps use a RESTful API to exchange data with the server.\r\n\r\nIn my talk I will demonstrate a technique for developing RESTful APIs using the [Flask][1] micro-framework and [Flask-Restplus][2]. These powerful tools automate most common tasks associated with API development: validating input, serializing output, routing requests to methods, and turning Python exceptions into machine-readable HTTP responses.\r\n\r\nA Flask-Restplus API is fully documented by [Swagger][3] which lists all defined endpoints, their query parameters and the format of input and output JSON objects. Swagger generates an [interactive UI][4] for selecting options and easily testing queries. Flask and Flask-Restplus provide just enough syntactic sugar to make your code readable, scalable and easy to maintain.\r\n\r\nMy presentation will give an overview of the features of Flask and Flask-Restplus; I will describe how easy it is to get started and discuss some best practices for building complex APIs using this approach. I will wrap up by briefly mentioning other components of the Flask ecosystem, which give this micro-framework power to match fully-loaded systems such as Django.\r\n\r\n [1]: http://flask.pocoo.org/\r\n [2]: http://flask-restplus.readthedocs.org/en/latest/\r\n [3]: http://swagger.io/\r\n [4]: http://petstore.swagger.io/#/pet\r\n" - ], - "abstract_extra": "Hi there, my name is Michal. I write a [blog][1], which you may have come across Googling for Django how-tos. I'm also an author of a [book on Linux server administration using Webmin][2]. I have spoken at a number of conferences, including a lightning talk at DjangoCon 2013, a talk at a Python users' group in Warsaw ([PyWaw][3]) and a talk at a DevCon meeting in Warsaw.\r\n\r\nI want to give a presentation about creating RESTful APIs using Flask. As a companion to this talk, I am in the process of writing a blog article which will describe the technique with code samples and working boilerplate code. Attendees who are interested in the topic will be able to use the article as a practical way to get started building APIs in this way.\r\n\r\nI don't have a YouTube video with a talk in English, but you can hear me speak if you take a look at this [short demo][4] for a proof-of-concept I was working on a few years ago.\r\n\r\n [1]: http://michal.karzynski.pl/\r\n [2]: https://www.packtpub.com/networking-and-servers/webmin-administrators-cookbook\r\n [3]: http://pywaw.org/27/\r\n [4]: https://youtu.be/5dxLyt6cfAA?t=47s\r\n", - "tag_categories": [ - "Open Source", - ">>> Suggested Track", - "Web", - "Programming", - "Programming" - ], - "emails": "europython@karzyn.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/building-beautiful-restful-apis-using-flask-1", - "admin_type": "", - "companies": "Intel Corporation" - }, - "682": { - "abstract_short": "Ever wondered how to keep track of all of your services and their APIs? I'm going to explore how to build your Python services with OpenAPI/Swagger and how it helps you solve problems like communication between services, request and response validation, and documentation of your API. I'll also discuss some challenges you might face, gathered from over a year of heavy usage at Yelp.", - "sub_title": "Document, validate and connect your Python services", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@s_jaensch", - "id": 682, - "speakers": "Stephan Jaensch", - "title": "Building Service interfaces with OpenAPI / Swagger", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Microservices", - "Best Practice", - "python", - "Pyramid" - ], - "abstract_long": [ - "Implementing a service-oriented architecture (SOA) is a proven way to split up large monolithic codebases and to scale development when your organization grows to hundreds or thousands of engineers. I'm going to explore how to build and document your services with OpenAPI (formerly known as Swagger). I\u2019ll discuss the benefits and why you should standardize on the API and protocols, but not on SDKs or client libraries. Find out how to make sure the caller as well as your service is conforming to the specification by using request and response validation, how to generate a beautiful HTML documentation for your API, and how you can effortlessly make calls to your services. I'll also discuss and tell you how to overcome challenges you might face, gathered from over a year of heavy usage at Yelp for hundreds of services. I'll present the OpenAPI tools and libraries available for the Python ecosystem for client and server development.\r\n\r\nThe OpenAPI initiative is a cross-vendor consortium focused on creating, evolving and promoting a vendor neutral description format. As an open governance structure under the Linux Foundation, its members include Google, IBM, Atlassian and PayPal.", - "", - "", - "" - ], - "abstract_extra": "I'm a tech lead at Yelp, working on the backend for our Business Owner apps amongst other things. I'm a long-time user of Swagger and recently started contributing to the Python tools for it like bravado. I gave a talk at last year's EuroPython and I had a blast doing it. This is the video: https://youtu.be/UUkyzCwgqPw\r\n\r\nIf possible (and if I'm accepted), I'd prefer a slot during the first half of EuroPython.", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - "", - "Application Frameworks" - ], - "emails": "sjaensch@yelp.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/building-service-interfaces-using-OpenAPI", - "admin_type": "", - "companies": "Yelp" - }, - "517": { - "abstract_short": "Hainbat zerbitzaritan dauden eta plataforma bakar batean oinarrituta dagoen plataforma baten mantentzea Buildout Django Fabric eta erabiliz. Kasu praktikoa euskarazko tokiko hedabideak.", - "sub_title": "", - "timerange": "2016-07-20 15:45:00, 2016-07-20 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@jatsu", - "id": 517, - "speakers": "Jatsu Argarate", - "title": "Buildout Django eta Fabric. Kasu praktikoa euskarazko tokiko hedabideetan", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Django" - ], - "abstract_long": [ - "Hainbat bezerorentzako neurrira egindako edukiak kudeatzeko plataforma bat garatu dugu Django Frameworka erabiliz. Guztia kudeatzeko eta erabilitako bertsioak kontrolatzeko zc.buildout erabiltzen dugu, baina plataforma hazten doa eta iada dozena bat instalazio ditugu hainbat zerbitzaritan zehar banatuta. Plataformaren oinarria berbera denez, instalazio guztietan eguneraketak argitaratzeko buildout eta fabric-en oinarritutako sistema erabiltzen dugu.\r\nHitzaldi honetan azalduko duguna.", - "", - "", - "" - ], - "abstract_extra": "Hainbat zerbitzaritan dauden eta plataforma bakar batean oinarrituta dagoen plataforma baten mantentzea Buildout Django Fabric eta erabiliz. Kasu praktikoa euskarazko tokiko hedabideak.", - "tag_categories": [ - "Application Frameworks" - ], - "emails": "jargarate@codesyntax.com", - "language": "Basque", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/buildout-django-eta-fabric-kasu-praktikoa-euskarazko-tokiko-hedabideetan", - "admin_type": "", - "companies": "CodeSyntax" - }, - "667": { - "abstract_short": "In this talk, we will see an intro to CFFI, an alternative to using the standard C API to extend Python. CFFI works on CPython and on PyPy. It\r\nis a possible solution to a problem that hits notably PyPy --- the\r\nCPython C API.\r\n\r\nThe CPython C API was great and contributed to the present-day success\r\nof Python, together with tools built on top of it like Cython and SWIG.\r\nI will argue that it may be time to look beyond it, and present CFFI as\r\nsuch an example.\r\n", - "sub_title": "CFFI, on CPython and PyPy, as a potentially better way to call C code", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 667, - "speakers": "Armin Rigo", - "title": "CFFI: calling C from Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "PyPy", - "C-Languages", - "CPython" - ], - "abstract_long": [ - "I will introduce CFFI, a way to call C libraries from Python.\r\n\r\n http://cffi.readthedocs.org/\r\n\r\nCFFI was designed in 2012 to get away from Python's C extension modules,\r\nwhich require hand-written CPython-specific C code. CFFI is arguably\r\nsimpler to use: you call C from Python directly, instead of going\r\nthrough an intermediate layer. It is not tied to CPython's internals,\r\nand works natively on two different Python implementations: CPython and\r\nPyPy. It could be ported to more implementations.\r\n\r\nIt is also a big success, according to the download statistics. Some\r\nhigh-visibility projects like Cryptography have switched to it.\r\n\r\nPart of the motivation for developing CFFI is that it is a minimal layer\r\nthat allows direct access to C from Python, with no fixed intermediate C\r\nAPI. It shares ideas from Cython, ctypes, and LuaJIT's ffi, but the\r\nnon-dependence on any fixed C API is a central point. \r\n\r\nIt is a possible solution to a problem that hits notably PyPy --- the CPython C API. The CPython C API was great and, we can argue, it contributed a lot to\r\nthe present-day success of Python, together with tools built on top of\r\nit like Cython and SWIG. However, it may be time to look\r\nbeyond it. This talk will thus present CFFI as such an example.\r\nThis independence is what lets CFFI work equally well on CPython and\r\non PyPy (and be very fast on the latter thanks to the JIT compiler).\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Other Programming Languages", - "Python" - ], - "emails": "armin.rigo@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/cffi-calling-c-from-python", - "admin_type": "", - "companies": "" - }, - "400": { - "abstract_short": "Introduction to the clean code principles applied to Python code. Let's honor the readable nature of the Python syntax so anyone can maintain our code: \"readability counts\".\r\n\r\nThis talk introduces general concepts of code quality and how they apply for Python. We analyse technical debt, refactoring, and unit testing in the context of a project striving for a better code base.", - "sub_title": "Achieving quality code in Python projects", - "timerange": "2016-07-20 15:45:00, 2016-07-20 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@rmarianoa", - "id": 400, - "speakers": "Mariano Anaya", - "title": "Clean code in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Education", - "Best Practice", - "Clean Code", - "Agile", - "Development" - ], - "abstract_long": [ - "Introduction to the clean code principles tailored for Python projects. The goal is to achieve better code quality and a more maintainable code base. Python has a nature of being clear, and easy to follow, so let's take advantage of it in our own code, in order to enforce the principle \"readability counts\" by writing pythonic code.\r\n\r\nThis talk introduces general concepts of code quality for Python developers, analyzing technical debt, with examples on how to achieve a more legible, maintainable and clean code base, by refactoring, writing unit tests and having good coding guidelines for the project. If you are giving your first steps with Python, you will gain insight on best practices for writing good software from the start. If you are a experienced developer, the ideas should work as food for thought, helping with recommendations for code reviews, best practices, etc." - ], - "abstract_extra": "", - "tag_categories": [ - "Educational", - "Best Practice and Use Cases", - "Educational", - "Development Methods", - "Programming" - ], - "emails": "marianoanaya@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/clean-code-in-python", - "admin_type": "", - "companies": "Onapsis" - }, - "420": { - "abstract_short": "Take POSIX, add capability-based security, then remove anything that conflicts. The result is CloudABI, available for BSD, Linux, OSX et al. \r\n\r\nA CloudABI process is incapable of any action that has a global impact It can only affect the file descriptors you provide. As a result even unknown binaries can safely be executed - without the need for containers, virtual machines, or other sandboxes. \r\n\r\nThis talk will introduce CloudABI, how to use it with Python, the benefits, and the trade-offs.", - "sub_title": "Why is my webapp doing `rm -rf $HOME`, and how can I prevent it?", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@moreati", - "id": 420, - "speakers": "Alex Willmer", - "title": "CloudABI: Capability based security on Linux/Unix", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Unix", - "Security", - "Web Track", - "System Architecture", - "Microservices" - ], - "abstract_long": [ - "[CloudABI](https://nuxi.nl/) is a new POSIX based computing environment that brings [capability-based security](https://en.wikipedia.org/wiki/Capability-based_security) to BSD, Linux, OSX et al.\r\n\r\nUnlike traditional Unix, if a CloudABI process goes rogue it _cannot_ execute random binaries, or read arbitrary files. This is achieved by removing `open()` & any other API able to acquire global resources. Instead a CloudABI process must be granted _capabilities_ to specific resources (e.g. directories, files, sockets) in the form of file descriptors. If a process only has a descriptor for `/var/www` then it's _incapable_ of affecting any file or folder outside that directory.\r\n\r\nThis talk will\r\n\r\n - Review the security & reusability problems of Linux & Unix processes\r\n - Introduce capability-based security\r\n - Summarize the design of CloudABI - its benefits & trade-offs\r\n - Demonstrate how to write Python software for CloudABI & run it\r\n - Point out the pitfalls & gotchas to be aware of\r\n - Discuss the current & future status of CloudABI\r\n \r\nCloudABI began life on FreeBSD. It also runs DragonFly BSD, NetBSD, PC-BSD, Arch Linux, Debian, Ubuntu, & OS X. The API & ABI are kernel agnostic - a CloudABI binary can run on any supported kernel. The design is evolved from [Capsicum](https://www.cl.cam.ac.uk/research/security/capsicum/), a library that allows processes to drop access to undesired syscalls at runtime. CloudABI applies this at build time to make testing & lock-down easier.", - "", - "", - "" - ], - "abstract_extra": "I can contract this talk to 30 minutes, or expand it to 60 minutes if you prefer.", - "tag_categories": [ - "Operating Systems", - "Security", - ">>> Suggested Track", - "DevOps", - "Programming" - ], - "emails": "alex@moreati.org.uk", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/capability-based-security-on-unix-with-cloudabi", - "admin_type": "", - "companies": "" - }, - "597": { - "abstract_short": "Learn about `conda`, the package installer from the scientific community. It offers very interesting features that can improve your installation experience considerably. The talk gives an overview of the basic usage of `conda`. It covers the topics installation and building of packages.\r\n`conda` can be combined with `pip` to use all PyPi packages. Its cross-platform and multi-languages features combined with power environments can help to improve your productivity. \r\n", - "sub_title": "A better solution to the packing problem!?", - "timerange": "2016-07-19 14:30:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@pyacademy", - "id": 597, - "speakers": "Mike M\u00fcller", - "title": "Conda - Easier Installs and Simpler Builds", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Python general", - "Packaging", - "Cross-Platform-Development" - ], - "abstract_long": [ - "The BSD license `conda` is a package installer for Python and other languages.\r\nWhile it originates form the scientific Python community, it can be really useful for\r\nall Python programmers.\r\n\r\nInstallation of Python packages has become much simpler over the last years.\r\nThe use of `pip` and `virtualenv` simplify the installation of Python packages a lot.\r\nHowever, they are specific to Python. The Python-agnostic `conda` has advantages\r\nfor packages with C or Fortran extension that are very common for scientific libraries. \r\n`conda` is cross-platform. According to different statistics, the most Python users work on Windows. Often is especially complicate to get extensions with many dependencies installer on this platform. `conda` facilities the installation for Windows considerably.\r\n\r\nThis talk introduces the basic usage of `conda` to install packages. This includes the basic commands for searching and installing of packages. Furthermore, the talk demonstrates the creation of environments for different Python versions and combinations of packages.\r\n\r\nThe building of a packages is simple. The talk shows how to build recipes that contain declarations of dependencies .\r\n\r\n`conda` can work together with `pip`. This allows to use all packages from the Python Package Index ( PyPI). The talk explains the concept of channels that allow to get packages from different sources.\r\n", - "", - "", - "" - ], - "abstract_extra": "This hands-on talk introduces a very useful tool to a new audience. While very well know in the scientific Python community, `conda` might not that well know outside this community. This talk can help to change this situation.", - "tag_categories": [ - "Python", - "Python", - "Python" - ], - "emails": "mmueller@python-academy.de", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/conda-easier-installs-and-simpler-builds", - "admin_type": "", - "companies": "Python Academy GmbH & Co. KG" - }, - "610": { - "abstract_short": "The purpose of this talk if pointing out that using Docker in production is perfectly valid, not just for develop and CI environments.\r\n\r\n", - "sub_title": "Security considerations and best practices", - "timerange": "2016-07-18 16:00:00, 2016-07-18 16:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@musghost", - "id": 610, - "speakers": "Andr\u00e9s Cidel", - "title": "Create secure production environment using Docker", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Virtualization", - "Security", - "Best Practice", - "Docker" - ], - "abstract_long": [ - "Docker is a relatively new technology platform that helps teams develop, deploy and scale applications with greater ease and speed. However, there are doubts about using Docker in production environments. One important reason is that containers don't provide the same security layer as hypervisors do.\r\n\r\nThe purpose of this talk is pointing out that using Docker in production is perfectly valid, not just for develop and CI environments.\r\n\r\nWe'll learn:\r\n\r\n - How Docker works.\r\n - Main risks.\r\n - How create and maintain secure images.\r\n - How defend containers.\r\n - How delimit security risks in containers.\r\n - Best practices for running containers.\r\n\r\n" - ], - "abstract_extra": "I'm the organizer of a Meetup about Docker and I've held some talks about it.\r\nThis is the meetup website: http://www.meetup.com/Mexico-City-Docker-friends/\r\nThese are my blogs, English and Spanish versions http://blog.cidel.com.mx/ and http://dockerfriends.mx/\r\n", - "tag_categories": [ - "DevOps", - "Security", - "Best Practice and Use Cases", - "DevOps" - ], - "emails": "andres@cidel.com.mx", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/create-secure-production-environment-using-docker", - "admin_type": "", - "companies": "Vinco Orbis" - }, - "746": { - "abstract_short": "please fill here", - "sub_title": "", - "timerange": "2016-07-22 16:15:00, 2016-07-22 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 746, - "speakers": "Miguel Reguero", - "title": "Cybersecurity in the financial sector with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Security" - ], - "abstract_long": [ - "please fill here" - ], - "abstract_extra": "", - "tag_categories": [ - "Security" - ], - "emails": "miguel.reguero@i4s.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/ciberseguridad-en-el-sector-financiero-con-python", - "admin_type": "", - "companies": "Innovation 4 Security" - }, - "666": { - "abstract_short": "The CSV is the most widely adopted data format. It used to \r\nstore and share *not-so-big* scientific data. However, this format is not particularly \r\nsuited in case data require any sort of internal\r\nhierarchical structure, or if data are too big. To this end, other data formats must be considered. \r\nIn this talk, the different data formats will be presented and compared w.r.t. their\r\nusage for scientific computations along with corresponding Python libraries.", - "sub_title": "Different format solutions for tiny and big data, beyond CSV and HDFS", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@leriomaggio", - "id": 666, - "speakers": "Valerio Maggio", - "title": "Data Formats for Data Science", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Physics", - "Big Data", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Databases" - ], - "abstract_long": [ - "The *plain text* is one of the simplest yet most intuitive format in which data could be stored. \r\nIt is easy to create, human and machine readable, \r\n*storage-friendly* (i.e. highly compressible), and quite fast to process.\r\nTextual data can also be easily *structured*; in fact to date the \r\nCSV (*Comma Separated Values*) is the most common data format among data scientists.\r\n\r\nHowever, this format is not properly suited in case data require any sort of internal\r\nhierarchical structure, or if data are too big to fit in a single disk. \r\n\r\nIn these cases other formats must be considered, according to the shape of data, and the \r\nspecific constraints imposed by the context. \r\nThese formats may leverage *general purpose* solutions, e.g. [No]SQL databases, HDFS (Hadoop File System); \r\nor may be specifically designed for scientific data, e.g. hdf5, ROOT, NetCDF.\r\n\r\nIn this talk, the strength and flaws of each solution will be discussed, focusing on their usage for scientific computations. The goal is to provide some practical guidelines for data scientists, derived from the the comparison of the different Pythonic solutions presented for the case study analysed. These will include\r\n`xarray`, \r\n`pyROOT` *vs* `rootpy`, `h5py` *vs* `PyTables`, `bcolz`, and `blaze`.\r\nFinally, few notes about the new trends for **columnar databases** (e.g. *MonetDB*) will be also presented, for very fast\r\nin-memory analytics." - ], - "abstract_extra": "", - "tag_categories": [ - "Sciences", - "Data Science", - "Data Science", - "Data Science", - "Databases" - ], - "emails": "valerio.maggio@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/data-science-formats-beyond-csv-and-hdfs", - "admin_type": "", - "companies": "" - }, - "693": { - "abstract_short": "Laburbilduz, kontsumo energetikoaren datuak modu sinple eta argi batean bistaratzen dituen web orrialde bat sortu da Django erabiliz.", - "sub_title": "", - "timerange": "2016-07-20 14:00:00, 2016-07-20 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 693, - "speakers": "Iker Martinez de Agirre Mendia", - "title": "Datu bistaratze soluzioen garapena Smartcity proiektuetan", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Web", - "General" - ], - "abstract_long": [ - "Mondragon Unibertsitateko inbestigazio taldea Smartcity-en aplikazio eta monitorizazioen inguruko proiektuetan lanean ari da, non herrialde ezberdinetako gune konkretuetan bizi diren pertsonen kontsumo energetikoa jaso eta aztertzen den. Proiektu hauetako bi CITyFiED eta ARROWHEAD dira. \r\n\r\nKontsumo hori eta horren harira ondorioztatutako aholku energetikoak erabiltzailearengana heltzeko, bistaratze soluzio bat garatu da, web orrialde bat alegia. \r\n\r\nErabiltzailean oinarritutako diseinua (User Centered Design) aplikatuz, gailu ezberdinetara moldatzen den (Responsive Web Design, Mobile-First) web bat sortu da, Django Web Framework tresnaren bitartez. REST API (Django Rest Framework) baten bidez, informazioa gordetzen den datu basea atzitzen da, kontsumoak eta beraien bilakaera bistaratze libreriak (D3.js) erabiliz irudikatuz. Horrez gain, Djangok eskaintzen dituen aukerak baliatuz, web orrialdea hizkuntza ezberdinetan bistaratu daiteke.\r\n\r\nLaburbilduz, kontsumo energetikoaren datuak modu sinple eta argi batean bistaratzen dituen web orrialde bat sortu da Django erabiliz.\"\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "Mondragon Unibertsitateko inbestigazio taldea Smartcity-en aplikazio eta monitorizazioen inguruko proiektuetan lanean ari da, non herrialde ezberdinetako gune konkretuetan bizi diren pertsonen kontsumo energetikoa jaso eta aztertzen den. Proiektu hauetako bi CITyFiED eta ARROWHEAD dira. \r\n\r\nKontsumo hori eta horren harira ondorioztatutako aholku energetikoak erabiltzailearengana heltzeko, bistaratze soluzio bat garatu da, web orrialde bat alegia. \r\n\r\nErabiltzailean oinarritutako diseinua (User Centered Design) aplikatuz, gailu ezberdinetara moldatzen den (Responsive Web Design, Mobile-First) web bat sortu da, Django Web Framework tresnaren bitartez. REST API (Django Rest Framework) baten bidez, informazioa gordetzen den datu basea atzitzen da, kontsumoak eta beraien bilakaera bistaratze libreriak (D3.js) erabiliz irudikatuz. Horrez gain, Djangok eskaintzen dituen aukerak baliatuz, web orrialdea hizkuntza ezberdinetan bistaratu daiteke.\r\n\r\nLaburbilduz, kontsumo energetikoaren datuak modu sinple eta argi batean bistaratzen dituen web orrialde bat sortu da Django erabiliz.\"", - "tag_categories": [ - "", - "" - ], - "emails": "iker.martinezm@alumni.mondragon.edu", - "language": "Basque", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/datu-bistaratze-soluzioen-garapena-smartcity-proiektuetan-1", - "admin_type": "", - "companies": "" - }, - "418": { - "abstract_short": "Python has lots of scientific, data analysis, and machine learning libraries. But there are many problems when starting out on a machine learning project. Which library do you use? How do they compare to each other? How can you use a model that has been trained in your production app? In this talk I will discuss how you can use TensorFlow to create Deep Learning applications. I will discuss how it compares to other Python machine learning libraries, and how to deploy into production.", - "sub_title": "Find out how TensorFlow compares to other Machine Learning libraries", - "timerange": "2016-07-22 14:00:00, 2016-07-22 15:00:00", - "sub_community": "pydata", - "duration": 60, - "twitters": "@IanMLewis", - "id": 418, - "speakers": "Ian Lewis", - "title": "Deep Learning with Python & TensorFlow", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Deep Learning", - "Science Track", - "Machine-Learning" - ], - "abstract_long": [ - "Python has lots of scientific, data analysis, and machine learning libraries. But there are many problems when starting out on a machine learning project. Which library do you use? How do they compare to each other? How can you use a model that has been trained in your production application?\r\n\r\nTensorFlow is a new Open-Source framework created at Google for building Deep Learning applications. Tensorflow allows you to construct easy to understand data flow graphs in Python which form a mathematical and logical pipeline. Creating data flow graphs allow easier visualization of complicated algorithms as well as running the training operations over multiple hardware GPUs in parallel.\r\n\r\nIn this talk I will discuss how you can use TensorFlow to create Deep Learning applications. I will discuss how it compares to other Python machine learning libraries like Theano or Chainer. Finally, I will discuss how trained TensorFlow models could be deployed into a production system using TensorFlow Serve.", - "", - "", - "" - ], - "abstract_extra": "Here is a high level outline of the talk:\r\n\r\nOutline\r\n\r\n - Overview of Machine Learning Problems\r\n - What is TensorFlow and How Does it Work?\r\n - Creating a Deep Learning Model with Tensorflow\r\n - Comparing Tensorflow to Theano & Chainer\r\n - Productionizing Deep Learning Models", - "tag_categories": [ - "Data Science", - ">>> Suggested Track", - "Data Science" - ], - "emails": "ianlewis@google.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/deep-learning-with-python-tensorflow", - "admin_type": "", - "companies": "Google" - }, - "388": { - "abstract_short": "This talk shares some insights into Aldryn, a platform used daily to execute hundreds of Django based website-deployments, and the various components that intervene to deploy a Django project from its git repository to the cloud.\r\n\r\nWe will discuss some of the problems we faced, and the solutions we adopted, to deploy Django projects at scale to the cloud, including topics like PyPI wheel proxies, dynamic traffic-rerouting, live data-center migrations, etc.", - "sub_title": "A journey through various challenges and solutions we adopted to deploy Django at scale on Aldryn", - "timerange": "2016-07-22 14:30:00, 2016-07-22 15:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@garet_jax", - "id": 388, - "speakers": "Jonathan Stoppani", - "title": "Deploying Django at scale: what happens inside the cloud", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Django Track", - "Configuration Management (Ansible/Fabric/Chef/...)", - "Django", - "Distributed Systems", - "Deployment/Continuous Integration and Delivery" - ], - "abstract_long": [ - "Aldryn is used daily to execute hundreds of Django based website-deployments. It consists of a control panel to help backend developers, frontend developers, project managers and content-editors collaborate to successfully build and maintain web apps, coupled to a scalable and highly available Docker-based build and deployment infrastructure currently used to host more than 6000 django-cms based websites.\r\n\r\nWhile the control panel is oriented mainly towards the Django/django-CMS match, the structure of the single projects and the deployment infrastructure allow to continuously deploy, upgrade and scale any type of HTTP service.\r\n\r\nThe goal of this talk is to share some insights into the various components that intervene to deploy a Django project from its git repository to the cloud.\r\n\r\nThis talk will discuss some of the problems we faced, and the solutions we adopted, to deploy Django projects at scale to the cloud. I'll share the lessons we learned and present the tools we built to reach our goal. I\u2019ll be covering topics like:\r\n - Using a PyPI proxy to both build platform-specific wheels, on order to both to withstand PyPI downtimes and cut on deployment times;\r\n - Dynamic traffic re-routing for zero-downtime deployments and horizontal scaling;\r\n - Massive TLS termination on a custom built Twisted/PyPy reverse proxy;\r\n - Live server and datacenter migrations for both apps and their data." - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "DevOps", - "Application Frameworks", - "DevOps", - "DevOps" - ], - "emails": "jonathan.stoppani@divio.ch", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/deploying-django-at-scale-what-happens-inside-the-cloud", - "admin_type": "", - "companies": "Divio" - }, - "593": { - "abstract_short": "When designing an abstraction for a complex system (an ORM-like library in our case) you face a lot of design decisions and challenges. This talk details how we chose to tackle those when designing elasticsearch-dsl.", - "sub_title": "Lessons learned while bulding elasticsearch-dsl", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@honzakral", - "id": 593, - "speakers": "Honza Kr\u00e1l", - "title": "Designing a Pythonic Interface", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Software Design", - "Best Practice", - "failures/mistakes" - ], - "abstract_long": [ - "The json query language for elasticsearch, as well as its other APIs, can be very daunting to new users and can be a bit cumbersome when working with python. That is why we created elasticsearch-dsl - a sort of ORM for elasticsearch.\r\n\r\nWe will go through the design philosophy and obstacles found during the development - trying to make a more pythonic interface for elasticsearch while maintaining access to all of the features of the underlying query language.\r\n\r\nThe focus of the talk is more on the library and interface design than on elasticsearch and its query language itself, that is used only to demonstrate the principles." - ], - "abstract_extra": "I just want to stress that this is not a talk about elasticsearch, but about designing a pythonic API, using elasticsearch-dsl as an example (since it's a practical \"lessons learned\" talk).", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - "Best Practice and Use Cases" - ], - "emails": "honza.kral@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/designing-a-pythonic-interface", - "admin_type": "", - "companies": "Elastic" - }, - "505": { - "abstract_short": "Nowadays Python is the perfect environment for developing a real-time automated trading tool. In this talk we will discuss the development of: a general-purpose multiagent-system module using Pyro and ZeroMQ; a platform, based on it, for developing automated trading strategies using Numpy, Numba, Theano, etc.; and a GUI for visualizing real-time market data using PyQtGraph and Qt.", - "sub_title": "", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 505, - "speakers": "Miguel S\u00e1nchez de Le\u00f3n Peque", - "title": "Developing a real-time automated trading platform with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Distributed Systems", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Machine-Learning" - ], - "abstract_long": [ - "In OpenSistemas we have developed a general-purpose multi-agent system which is written in pure Python: *osBrain*. Agents communicate with each other using ZeroMQ, allowing the user to define different communication patterns based on their needs.\r\n\r\nBased on this multi-agent system, we have also developed a broker-independent platform for real-time automated trading: *osMarkets*. This platform implements specialized agents:\r\n\r\n- **Feeder** is an agent which receives real-time data from the broker.\r\n- **Router** is an agent which receives data from feeders. It manages the historical data and distributes updates to all the subscribed agents in the network.\r\n- **Brain** is the most common agent. It receives data from router or from other brains and processes them, sending the results to other brains or sending orders to be executed. Brains can make use of many useful packages avilable in the Python ecosystem: NumPy, SciPy, Numba, Theano...\r\n- **Trader** is an agent which is designed to interact with the broker, just as the feeder, but to execute market orders.\r\n\r\n![system](http://i.imgur.com/A9vsWee.png)\r\n\r\nWhile it is still in its earliest stages, we are developing a tool for real-time visualization of trading strategies using PyQtGraph. This tool acts as an agent in the multi-agent system.\r\n\r\n![chart](http://i.imgur.com/5XS7oBQ.png)" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "msanchez@opensistemas.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/developing-a-real-time-automated-trading-platform-with-python", - "admin_type": "", - "companies": "OpenSistemas" - }, - "565": { - "abstract_short": "Nowadays, there is a lot of buzz about Go. In this talk we'll learn the basics and most important concepts of the language, we'll further discuss differences and similarities in Go and Python and dive into the cool features of Go. Finally we'll talk about why popularity of Go is raising so fast and try to answer the most important question: Do I need to switch to Go ?", - "sub_title": "An opinion on the topic after working with Go for 6 months", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 565, - "speakers": "Max Tepkeev", - "title": "Do I need to switch to Go(lang) ?", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Educational Track", - "Go-Lang" - ], - "abstract_long": [ - "Nowadays, there is a lot of buzz about Go. It happened so that for the last 6 months I've been mostly programming Go, and frankly speaking I fell in love with this language.\r\n\r\nWe'll first do a quick review of the language. Go doesn't have some language constructs, for example classes and exceptions and at first it may seem hard to write proper Go code, but in practice the language is so easy that I will try to teach you the basics and most important concepts of the language. We'll further discuss differences and similarities in Go and Python and dive into the cool features of Go.\r\n\r\nFinally we'll talk about why popularity of Go is raising so fast and try to answer the most important question: Do I need to switch to Go ?" - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "Other Programming Languages" - ], - "emails": "tepkeev@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/do-i-need-to-switch-to-golang", - "admin_type": "", - "companies": "Aidata" - }, - "563": { - "abstract_short": "This talk is about dynamic class generation in python: the practice of writing code that generates classes and their functionality at runtime. It will use boto3, the AWS SDK for Python, as a basis to dive into the basics, the benefits, and the drawbacks to dynamically generating classes.", - "sub_title": "", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 563, - "speakers": "Kyle Knapp", - "title": "Dynamic Class Generation in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Software Design", - "Python general", - "Use Case", - "APIs", - "Educational Track" - ], - "abstract_long": [ - "This talk is about the concept of dynamic class generation in python. The whole idea is writing code that generates classes and their functionality at runtime. You now may be asking yourself, \u201cThat sounds like a neat trick. Why would I ever generate my classes at runtime?\u201d Here are a few reasons why:\r\n\r\n\u2022\tIt can decrease the physical size of your code.\r\n\r\n\u2022\tIt can improve the workflow in adding new functionality.\r\n\r\n\u2022\tIt can improve reliability of your code.\r\n\r\nOne example where the power of this concept has really been leveraged is in boto3, the AWS SDK for Python. Dynamic class generation has allowed boto3 to become heavily data driven such that most of its classes and methods are generated based off JSON models representing aspects of an AWS service\u2019s API. For example, to add support for a new AWS service API in boto3, just plop in a JSON file into the library with no additional Python code required.\r\n\r\nUsing lessons and techniques drawn from developing boto3, this talk will dive into the following topics related to dynamic class generation:\r\n\r\n\u2022\tThe basics of dynamic class generation such as how to effectively dynamically generate classes.\r\n\r\n\u2022\tHow to overcome some of the challenges of dynamic class generation.\r\n\r\n\u2022\tThe tradeoffs in dynamically generating classes and discussion on when it is appropriate.\r\n\r\nBy the end of this talk, the hope is that you will have a better understanding of dynamic class generation and come away with helpful ideas for your next big project." - ], - "abstract_extra": "Talk from last EuroPython: https://ep2015.europython.eu/conference/talks/it-works-on-my-machine-writing-python-code-for-any-environment", - "tag_categories": [ - "Programming", - "Python", - "Best Practice and Use Cases", - "Web", - ">>> Suggested Track" - ], - "emails": "kyknapp1@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/dynamic-class-generation-in-python", - "admin_type": "", - "companies": "Amazon" - }, - "532": { - "abstract_short": "Developers usually state that finding defects is the primary motivation for doing code reviews. However, research has shown that the main benefits of code reviews are; knowledge transfer, team awareness and finding alternative solutions.\r\n\r\nCode reviews when done well are more than just finding defects; it should be a discussion and conversation with other developers about finding the best solutions. We will talk about re-framing code review to encourage open discussions.", - "sub_title": "Get the most out of code review. Learn best practices and avoid common pitfalls.", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@d0ugal", - "id": 532, - "speakers": "Dougal Matthews", - "title": "Effective Code Review", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Communication", - "Best Practice", - "Clean Code", - "Open-Source" - ], - "abstract_long": [ - "Developers usually state that finding defects is the primary motivation for doing code reviews. However, research has shown that the main benefits of code reviews are; knowledge transfer, team awareness and finding alternative solutions.\r\n\r\nCode reviews when done well are more than just finding defects; it should be a discussion and conversation with other developers about finding the best solutions. We will talk about re-framing code review to encourage open discussions.\r\n\r\nThis talk is for everyone that is already involved in regular code review and those hoping to start. I will talk through the code review process with the aim of making it a better and more useful experience for both the authors and the reviewers.\r\n\r\nThe talk will follow the following rough outline:\r\n\r\n- Introduction\r\n - Why do code reviews\r\n - What are we aiming to get out of it\r\n- Submitting code for review\r\n - How can you help reviewers?\r\n - What should you avoid doing?\r\n - Removing ownership of the code\r\n- Reviewing code\r\n - How should you give feedback?\r\n - What should you look for?\r\n - How can you encourage people to review more?\r\n - How to avoid and remove bike-shedding\r\n- Code review tools and how they impact on the process.\r\n- Wrap up and conclusion" - ], - "abstract_extra": "As a developer on the OpenStack project and the maintainer of multiple open source projects, doing code review is a big part of my day. I've been lucky enough to have worked in a strong code review culture for a number of years and given the subject a lot of thought.\r\n\r\nI have spoken at EuroPython previously a few times, last year I spoke about the MkDocs project which was well received albeit a somewhat niched topic.", - "tag_categories": [ - "Community", - "Best Practice and Use Cases", - "Educational", - "Open Source" - ], - "emails": "dougal@dougalmatthews.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/effective-code-review", - "admin_type": "", - "companies": "Red Hat" - }, - "611": { - "abstract_short": "We will explore the lessons learned on maintaining a Selenium test suite against a webapplication and how to leverage python tools to make this process easy and transparent.", - "sub_title": "Lessons learned from testing a webapplication with Selenium and python tools", - "timerange": "2016-07-18 16:30:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@festerc", - "id": 611, - "speakers": "Andrei Coman", - "title": "Effectively test your webapp with Python and Selenium", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Case Study", - "Test Libraries (pyTest/node/...)", - "Testing", - "failures/mistakes" - ], - "abstract_long": [ - "How often do you run your Selenium test suite? How fast do you get a result from it?\r\nWould you like to answer with: \"Whenever I feel like it\" and \"Well, about the time it takes me to finish a coffee\" ? This talk will try to get you closer to these answers.\r\n\r\nWe will have a look at the lessons learned and the challenges my team faced maintaining a Selenium test suite against a long-lived Django web application.\r\n\r\nWe will go over the pros and cons of:\r\n - test design approaches\r\n - technologies we used (nose, py.test, LiveServerTestCase)\r\n - reporting tools ", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Case Study", - "Testing", - "Testing", - "Best Practice and Use Cases" - ], - "emails": "comandrei@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/effectively-test-your-webapp-with-python-and-selenium", - "admin_type": "", - "companies": "3Pillar Global" - }, - "675": { - "abstract_short": "Does Django scale? How to manage traffic peaks? What happens when the database grows too big? How to find the bottlenecks?\r\n\r\nWe will overview the basics concepts on scalability and performance, and then see some tips and tricks. These statements will be backed up with experiments and numbers, to show the timing improvements.", - "sub_title": "Tips and best practices for avoiding scalability issues and performance bottlenecks in Django", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@DZPM", - "id": 675, - "speakers": "David Arcos", - "title": "Efficient Django", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Django Track", - "System Architecture", - "Performance", - "Django", - "Best Practice" - ], - "abstract_long": [ - "**Does Django scale?** How to manage traffic peaks? What happens when the database grows too big? How to find the bottlenecks?\r\n\r\nWe will overview the basics concepts on scalability and performance, and then see some tips and tricks. These statements will be backed up with experiments and numbers, to show the timing improvements.\r\n\r\nMain topics:\r\n\r\n- System architecture\r\n- Database performance\r\n- Queues and workers\r\n- Profiling with django-debug-toolbar\r\n- Caching queries and templates\r\n- Dealing with a slow admin\r\n- Optimizing the models\r\n- Faster tests\r\n\r\n" - ], - "abstract_extra": "I've given talks at EuroPython 2015, PySS, PyConES, PyBCN.", - "tag_categories": [ - ">>> Suggested Track", - "DevOps", - "Programming", - "Application Frameworks", - "Best Practice and Use Cases" - ], - "emails": "david.arcos@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/efficient-django", - "admin_type": "", - "companies": "Lead Ratings" - }, - "484": { - "abstract_short": "EITB Nahieran zerbitzuaren informazioa era erabilgarrian erakusteko APIaren nondik norakoak erakutsiko ditut hitzaldian.", - "sub_title": "EITB Nahieran datuak erabiltzeko API erabilterraz bat nola egin dudan azalduko dut", - "timerange": "2016-07-20 14:30:00, 2016-07-20 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@erralin", - "id": 484, - "speakers": "Mikel Larreategi", - "title": "EITB Nahieran: askatu bideoak API honen bidez", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "RESTful", - "APIs", - "Pyramid" - ], - "abstract_long": [ - "Iaz Raspberry PI bat erosi nuen eta ez nekien zer egin berarekin... Aurten Kodi softwarea erabiliz media-center bihurtu dut Raspberrya.\r\n\r\nKodirako 'tvalacarta' izeneko plugin bat zegoen berarekin EITB Nahieran ikusteko, baina ez zebilen. Saiatu nintzen EITB Nahieranen kodea funtzionarazten, eta asko kostata informazioa hiru era ezberdinetan ateratzea lortu nuen. Azkenean, funtzionamendua errazteko API bat prestatu dut EITB Nahieranen dagoen informazioa atzitzeko eta edozeinek erabili ahal dezan." - ], - "abstract_extra": "", - "tag_categories": [ - "Web", - "Web", - "Application Frameworks" - ], - "emails": "mlarreategi@codesyntax.com", - "language": "Basque", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/eitb-nahieran-askatu-bideoak-api-honen-bidez", - "admin_type": "", - "companies": "CodeSyntax" - }, - "604": { - "abstract_short": "Aurkezpen honetan Nao robotaren Choreographe programazio ingurumenaren sarrera bat egiten da, pythonek errobotikan duen erabilpena erakutsiz. Aurkezpen guztia aurkezleak orain arte egindako lanean oinarritzen da. Lehenik eta behin, programa baten estruktura erakutsiko da. Ondoren, liburutegi bat nola gehitu erakutsiko da, liburutegiaren instalazioak ekar ditzakeen arazoak aztertuz. Azkenik, Naoaren gorputz jarreran zein diskurtsoaren naturaltasunean egindako aurrerapenak azalduko dira. ", - "sub_title": "Pertsona-robot interakzioan lehenego pausuak Choreographe erabilita.", - "timerange": "2016-07-20 16:15:00, 2016-07-20 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 604, - "speakers": "Leire Ozaeta", - "title": "Endor, ipuinak kontatzen zituen Nao robota.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Beginners", - "Robotics", - "Human-Machine-Interaction" - ], - "abstract_long": [ - "Aurkezpen honetan Nao robotaren Choreographe programazio ingurumenaren sarrera bat egiten da, pythonek errobotikan duen erabilpena erakutsiz. Aurkezpen guztia aurkezleak orain arte egindako lanean oinarritzen da. Lehenik eta behin, programa baten estruktura erakutsiko da. Ondoren, liburutegi bat nola gehitu erakutsiko da, liburutegiaren instalazioak ekar ditzakeen arazoak aztertuz. Azkenik, Naoaren gorputz jarreran zein diskurtsoaren naturaltasunean egindako aurrerapenak azalduko dira. \r\nHonekin lortu nahi diren helburuak honako hauek dira: \r\n - Choreographeko proiektu baten estruktura ezagutzea.\r\n - Nao robot baten oinarrizko programa bat ikustea.\r\n - Chorepgraphek ematen dituen programazio blokeak eraldatzen jakitea, python erabiliz.\r\n - Choreographen eskaintzen diren tresnen bitartez, programan python liburutegi bat gehitzen ikastea.\r\nAurkezpen hau ulertzeko ez dago eskakizunik. Python pixka bat dakien edonork (\u201chello world\u201d bat egiten jakitearekin balio du) ulertzeko mailan emango da eta ez da konplexutasun tekniko handiko azalpenik emango. Printzipioz python ezagutzen ez duen edonor ere aurkezpen ia osoa ulertzeko gai izango da, programazio ingurumen bezala ez baita kodean gehiegi sartzen, pythonekin hasteko aukera ona izanez.\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Educational", - "Hardware", - "Hardware" - ], - "emails": "lozaeta001@gmail.com", - "language": "Basque", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/endor-ipuinak-kontatzen-zituen-nao-robota", - "admin_type": "", - "companies": "" - }, - "531": { - "abstract_short": "Charla que explica qu\u00e9 es Unicode y otros conceptos relacionados para poder usar esta tecnolog\u00eda", - "sub_title": "Cansados de los UnicodeDecodeEncodeErrors? Frenen ese desastre! Vengan y entiendan Unicode :)", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@facundobatista", - "id": 531, - "speakers": "Facundo Batista", - "title": "Entendiendo Unicode", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Python 3", - "Python general", - "Python 2" - ], - "abstract_long": [ - "La charla muestra de forma te\u00f3rica/pr\u00e1ctica qu\u00e9 son Unicode, las planillas de c\u00f3digos, los caracteres, y las codificaciones, entra en detalle en las distintas codificaciones, para saber c\u00f3mo usarlas, ejemplifica las reglas de oro para utilizar Unicode en nuestros programa, y termina mostrando algunas funciones \u00fatiles para el manejo de esa tecnolog\u00eda." - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Python", - "Python" - ], - "emails": "facundobatista@gmail.com", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/entendiendo-unicode", - "admin_type": "", - "companies": "Canonical" - }, - "442": { - "abstract_short": "Python, as well as offering an ecosystem of tools for testing security and application pentesting.Python offers a tool ecosystem for developing our own tools security for testing applications and the servers security,identifying information about servers and potential vulnerabilities.\r\n\r\nThe ultimate objective is show a pentesting tool integrating some of the modules commented and try a demo showing info about our domain target and find vulnerabilities in it,\r\n", - "sub_title": "", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@jmortegac", - "id": 442, - "speakers": "Jose Manuel Ortega", - "title": "Ethical hacking with Python tools", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Security", - "Tooling", - "Science Track", - "Development" - ], - "abstract_long": [ - "Nowdays, Python is the language more used for developing tools within the field of security. Many of the tools can be found today as port scanner, vulnerability analysis, brute force attacks and hacking of passwords are written in python. The goal of the talk would show the tools available within the Python API and third-party modules for developing our own pentesting and security tools and finally show a pentesting tool integrating some of the modules.\r\n\r\nThe main topics of the talk could include:\r\n\r\n**1.Enter Python language as platform for developing security tools**\r\n\r\nIntroduction about the main libraries we can use for introducing in development of security tools such as socket and requests.\r\n\r\n**2.Libraries for obtain servers information such as Shodan, pygeocoder,pythonwhois**\r\n\r\nShodan is a search engine that lets you find specific computers (routers, servers, etc.) and get information about ports and services that are opened.\r\n\r\n**3.Analysis and metadata extraction in Python for images and documents**\r\n\r\nShow tools for scraping web data and obtain metadata information in documents and images\r\n\r\n**4.Port scanning with tools like python-nmap**\r\n\r\nWith python-nmap module we can check ports open for a target ip or domain.\r\n\r\n**5.Check vulnerabilities in FTP and SSH servers**\r\n\r\nWith libraries like ftplib and paramiko we can check if the server is vulnerable to ftp and ssh anonymous connections.\r\n\r\n" - ], - "abstract_extra": "I will discuss some of the tools that can be found in\r\n\r\nhttp://www.pythonsecurity.org/libs\r\n\r\nand i will show a practice pentesting tool where we can found integrated all tools mentioned,this tool is available in my github repository \r\n\r\nhttps://github.com/jmortega/python-pentesting\r\n\r\nI have been speaker in some python conferences like europython and pycones in 2015.\r\n\r\nIn my speakerdeck space you can see my presentations,some relationed with python https://speakerdeck.com/jmortega", - "tag_categories": [ - "Security", - "Programming", - ">>> Suggested Track", - "Programming" - ], - "emails": "jmoc25@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/ethical-hacking-with-python-tools", - "admin_type": "", - "companies": "" - }, - "652": { - "abstract_short": "During the last CPython sprints at PyCon US (Montreal), I started to contribute to the CPython project and I\r\nwanted to understand the beast.\r\nIn this case, there is only one solution, trace the code from the beginning.\r\nFrom the command line to the interpreter, we will take part to an adventure. The idea behind is just to show how CPython works for a new contributor.", - "sub_title": "", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@matrixise", - "id": 652, - "speakers": "Stephane Wirtel", - "title": "Exploring our Python Interpreter", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python 3", - "CPython", - "Compiler and Interpreters" - ], - "abstract_long": [ - "During my last CPython sprint, I started to contribute to the CPython code and I\r\nwanted to understand the beast.\r\n\r\nIn this case, there is only one solution, trace the code from the beginning.\r\nFrom the command line to the interpreter, we will take part to an adventure\r\n\r\n* Overview of the structure of the project and the directories.\r\n* From the Py_Main function to the interpreter.\r\n* The used technics for the Lexer, Parser and the generation of the AST and of\r\ncourse of the Bytecodes.\r\n* We will see some bytecodes with the dis module.\r\n* How does VM works, it's a stack machine.\r\n* The interpreter and its main loop of the Virtual Machine.\r\n\r\nThe idea behind is just to show how CPython works for a new contributor to\r\nCPython.\r\n\r\nFrom the command line, we will learn that Python is a library and that we can\r\nembed it in a C project. In fact we will see the Py_Main function to the ceval.c\r\nfile of the interpreter.\r\n\r\nBut there is no magic in the CPython code, we will travel in the lexer and the\r\nparser of CPython, and why not, by the AST for one Python expression.\r\n\r\nAfter the AST, we will visit the Compiler and the Bytecodes for the\r\ninterpreter.\r\nOf course, we will learn there is the peepholer where some basic instructions\r\nare optimised by the this component.\r\n\r\nAnd of course, the interpreter, this virtual machine is really interesting for\r\nthe newbiew, because it's a big stack where the bytecodes are executed one by\r\none on the stack and the ceval.c file." - ], - "abstract_extra": "1. Intro (2 min)\r\n 1. Who am I?\r\n 2. Why we will visit the interpreter\r\n2. How to start ? (5 min)\r\n 1. The DevGuide\r\n 2. The Core Mentorship\r\n 3. Directories of Python \r\n3. What's the result of python -c \"x = 2 + 2\"? (20 min)\r\n 1. Command line \r\n 2. Lexer, Parser\r\n 3. Compiler \r\n 4. Bytecodes\r\n 5. Peepholer\r\n 4. Interpreter\r\n4. How to contribute (3min)\r\n\r\nAlready presented at PyCon Ireland 2015 and PyCon Canada 2015 at Toronto and PythonFOSDEM 2016 in Brussels.\r\nYou can find the slides at this address:\r\n\r\nhttps://speakerdeck.com/matrixise/exploring-our-python-interpreter", - "tag_categories": [ - "Python", - "Python", - "Python" - ], - "emails": "stephane@wirtel.be", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/exploring-our-python-interpreter", - "admin_type": "", - "companies": "Mgx.IO" - }, - "433": { - "abstract_short": "Do you ever wonder how your Python code looks to the interpreter? What those `.pyc` files are? Why one program outperforms another, even if the code is similar? Then let\u2019s dive into Python bytecode! Bytecode is the \"intermediate language\" that expresses your source code as machine instructions the interpreter can understand. In this talk we\u2019ll see what role it plays in executing Python programs, learn to read it with the `dis` module, and analyze it to better understand a program\u2019s performance.", - "sub_title": "What it is, how to read it, and why you should care", - "timerange": "2016-07-20 14:00:00, 2016-07-20 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@AnjanaVakil", - "id": 433, - "speakers": "Anjana Vakil", - "title": "Exploring Python Bytecode", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "CPython", - "Compiler and Interpreters" - ], - "abstract_long": [ - "Do you ever wonder what your simple, beautiful Python code looks like to the interpreter? Are you starting to get curious about those `.pyc` files that always pop up in your project, and you always ignore? Would you like to start investigating your Python code's performance, and learn why some programs you write run faster than others, even if the code looks more or less the same? Have you simply fallen so completely in love with Python that you're ready to peer deep inside its soul?\r\n\r\nIf you, like me, answered \"yes\" to any of these questions, join me in an illuminating adventure into the world of Python bytecode! Bytecode is the \"intermediate language\" that expresses your Python source code as machine instructions the interpreter (specifically CPython, the \"standard\" interpreter) can understand. Together we'll investigate what that means, and what role bytecode plays in the execution of a Python program. We'll discover how we simple humans can read this machine language using the `dis` module, and inspect the bytecode for some simple programs. We'll learn the meaning of a few instructions that often appear in our bytecode, and we'll find out how to learn the rest. Finally, we'll use bytecode to understand why a piece of Python code runs faster if we put it inside of a function.\r\n\r\nWhen you go home, you'll be able to use bytecode to get a deeper understanding of your Python code and its performance. The adventure simply starts here; where it ends is up to you!\r\n\r\n" - ], - "abstract_extra": "Approximate timeline (30 minute talk):\r\n\r\n - :00 - Hello: Speaker intro. Gauge audience experience with bytecode. (1 min.)\r\n - :01 - What does the interpreter do? What is bytecode? What are .pyc files? (5 min.)\r\n - :06 - The dis module: What is it for? What objects can it be used on? How? (3 min.)\r\n - :09 - Understanding bytecode: Examples. What does each column mean? What are some common opcodes? (10 min.)\r\n - :19 - Case study: Python code runs faster inside of a function; different operations in the bytecode let us understand the performance difference (5 min.)\r\n - :24 - Further resources (1 min.)\r\n - :25 - Q&A (5 min.)\r\n\r\nAs far as I can tell, the last time a talk on this subject was given at EuroPython, it was by Larry Hastings in 2013 [(abstract and video )][1]. My talk will differ from his in that:\r\n\r\n - It will be only a 30-minute introduction\r\n - It will be accessible even to beginners\r\n - It will provide motivation to learn about bytecode even if you\u2019re not (planning to be) a CPython core developer\r\n - It will only cover disassembling CPython bytecode using the `dis` module\r\n\r\nI haven't given a talk at EuroPython or another Python conference before, but I have public speaking experience in the form of several talks at academic conferences, on subjects related to software and research for computational linguistics. A list of my previous talks (with links to slides) is available at [ https://vakila.github.io/talks/][2]. \r\n\r\nIn December 2015 I gave a lightning talk on this subject to an audience of approximately 50 developers at the Recurse Center [(https://www.recurse.com/)][3]; unfortunately the talk was not recorded and did not use slides.\r\n\r\nIf you have any questions, need clarification, or have any other feedback on this proposal, please do get in touch. I\u2019m best reached by email, but I will be on holiday with limited internet access from February 29 to March 7.\r\n\r\n [1]: https://ep2013.europython.eu/conference/talks/all-singing-all-dancing-python-bytecode\r\n [2]: https://vakila.github.io/talks/\r\n [3]: https://www.recurse.com/", - "tag_categories": [ - "Python", - "Python" - ], - "emails": "anjanavakil@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/exploring-python-bytecode", - "admin_type": "", - "companies": "Mozilla" - }, - "494": { - "abstract_short": "Learn how to use the new async/await language feature to write asynchronous code in Python and [Cython][1]. See how to benefit from the excellent low-level features that Cython provides to speed up or parallelise your code, interface natively with external C/C++ code, and achieve better responsiveness and lower latency also in mostly I/O bound applications.\r\n\r\n [1]: http://cython.org/", - "sub_title": "How to simply get more out of your async applications with Cython", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 494, - "speakers": "Stefan Behnel", - "title": "Fast Async Code with Cython and AsyncIO", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Cython", - "ASYNC / Concurreny", - "Web Track", - "C-Languages", - "Compiler and Interpreters" - ], - "abstract_long": [ - "Python has recently seen a fresh development boost around asynchronous applications, triggered by the addition of the asyncio library and the new async/await language features in Python 3.5, but coming from a world of well established tools like [Twisted][2] and [Tornado][3]. The [Cython][1] compiler, which compiles Python code to C, has accompanied and influenced this development. It provides full language support for async/await under all Python versions starting from 2.6, as well as native interoperability with existing Python code and the new Python coroutines in Python 3.5.\r\n\r\nBenchmarks show that, while fully compatible, Cython compiled coroutines perform about 2-3x better than the same code executed in Python, but they additionally allow to interface natively with external C/C++ code, release the GIL, do parallel computation, and much more. All of this extends the applicable zone for asynchronous applications dramatically and can lead to better responsiveness and lower latency also for mostly I/O bound applications.\r\n\r\nThis joined talk by an async I/O expert and one of the Cython core developers explains how to write code with async/await in Python and Cython, and shows how to benefit from the excellent low-level features that Cython provides on top of Python.\r\n\r\n [1]: http://cython.org/\r\n [2]: https://twistedmatrix.com/\r\n [3]: http://www.tornadoweb.org/\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Programming", - ">>> Suggested Track", - "Other Programming Languages", - "Python" - ], - "emails": "pycon@behnel.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/fast-async-code-with-cython-and-asyncio", - "admin_type": "", - "companies": "Skoobe" - }, - "522": { - "abstract_short": "The Python language is hard to optimize. Let's see how guards checked at runtime allows to implement new optimizations without breaking the Python semantic.", - "sub_title": "New exciting optimizations projects are coming into the next 3.6 release of CPython!", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@VictorStinner", - "id": 522, - "speakers": "Victor Stinner", - "title": "FAT Python: a new static optimizer for Python 3.6", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Performance", - "Code Analysis", - "CPython", - "Compiler and Interpreters" - ], - "abstract_long": [ - "(Almost) everything in Python is mutable which makes Python a language very difficult to optimize. Most optimizations rely on assumptions, for example that builtin functions are not replaced. Optimizing Python requires a trigger to disable optimization when an assumption is no more true. FAT Python exactly does that with guards checked at runtime. For example, an optimization relying on the builtin len() function is disabled when the function is replaced.\r\n\r\nGuards allows to implement various optimizations. Examples: loop unrolling (duplicate the loop body), constant folding (propagates constants), copy builtins to constants, remove unused local variables, etc.\r\n\r\nFAT Python implements guards and an optimizer rewriting the Abstract Syntax Tree (AST). The optimizer is implemented in Python so it's easy to enhance it and implement new optimizations.\r\n\r\nFAT Python uses a static optimizer, it is less powerful than a JIT compiler like PyPy with tracing, but it was written to be integrated into CPython.\r\n\r\nI wrote 3 PEP (509, 510, 511) targeting Python 3.6. Some changes to support FAT Python have already been merged into Python 3.6.\r\n\r\nWe will also see other pending patches to optimize CPython core, and the bytecode project which allows to modify bytecode, it also includes a peephole optimizer written in pure Python.\r\n\r\nLinks:\r\n\r\n* http://faster-cpython.readthedocs.org/fat_python.html\r\n* http://fatoptimizer.readthedocs.org/\r\n* http://bytecode.readthedocs.org/", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Programming", - "Programming", - "Python", - "Python" - ], - "emails": "victor.stinner@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/fat-python-a-new-static-optimizer-for-python-36", - "admin_type": "", - "companies": "Red Hat" - }, - "718": { - "abstract_short": "FBTFTP: facebook's opensource framework for creating dynamic TFTP servers in Python3.", - "sub_title": "", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@pallotron", - "id": 718, - "speakers": "Angelo Failla", - "title": "FBTFTP: Facebook's open source python3 framework for dynamic TFTP servers.", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Python 3", - "System Architecture", - "Infrastructure", - "Open-Source", - "Scaling" - ], - "abstract_long": [ - "TFTP was first standardized in '81 (same year I was born!) and one of its primary uses is in the early stage of network booting. TFTP is very simple to implement, and one of the reasons it is still in use is that its small footprint allows engineers to fit the code into very low resource, single board computers, system-on-a-chip implementations and mainboard chipsets, in the case of modern hardware.\r\n\r\nIt is therefore a crucial protocol deployed in almost every data center environment. It is used, together with DHCP, to chain load Network Boot Programs (NBPs), like Grub2 and iPXE. They allow machines to bootstrap themselves and install operating systems off of the network, downloading kernels and initrds via HTTP and starting them up.\r\n\r\nAt Facebook, we have been using the standard in.tftpd daemon for years, however, we started to reach its limitations.\r\nLimitations that were partially due to our scale and the way TFTP was deployed in our infrastructure, but also to the protocol specifications based on requirements from the 80's.\r\n\r\nTo address those limitations we ended up writing our own framework for creating dynamic TFTP servers in Python3, and we decided to open source it.\r\n\r\nI will take you thru the framework and the features it offers. I'll discuss the specific problems that motivated us to create it. We will look at practical examples of how touse it, along with a little code, to build your own server that are tailored to your own infra needs.", - "", - "", - "" - ], - "abstract_extra": "Previous talks I have given can be found http://lanyrd.com/profile/pallotron/sessions/", - "tag_categories": [ - "Python", - "DevOps", - "DevOps", - "Open Source", - "DevOps" - ], - "emails": "pallotron@fb.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/fbtftp-facebooks-python3-framework-for-tftp-servers", - "admin_type": "", - "companies": "Facebook Ireland" - }, - "569": { - "abstract_short": "Sometimes it's hard to decide when a something is really done or cannot be improved further. \r\n**Game theory** can help you to make complicated decisions whenever you encounter flow problems.", - "sub_title": "Solving Flow Problems with Game Theory", - "timerange": "2016-07-20 14:00:00, 2016-07-20 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@hendorf", - "id": 569, - "speakers": "Alexander Hendorf", - "title": "Game Theory to the Rescue When Hard Decisions Are to Be Made", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Software Design", - "Use Case", - "Business Track" - ], - "abstract_long": [ - "Sometimes it's hard to decide when a something is really done or cannot be improved further. \r\n**Game theory** can help you to make complicated decisions whenever you encounter flow problems.\r\n\r\nGame theory is \"the study of mathematical models of conflict and cooperation between intelligent rational decision-makers.\" \r\n\r\nIn our use case we had to match data for accounting: - the data was not always clean but we had some extra tools at hand and a complex system to make good guesses. Nevertheless it was hard to decide when to give up, some records were just not processable.\r\nFinally we used Game theory to make the decision.\r\n\r\nhttps://en.wikipedia.org/wiki/Game_theory\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - ">>> Suggested Track" - ], - "emails": "hendorf@opotoc.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/game-theory-to-the-rescue-when-hard-decisions-are-to-be-made", - "admin_type": "", - "companies": "K\u00f6nigsweg GmbH" - }, - "499": { - "abstract_short": "Airflow (https://github.com/airbnb/airflow) is an open source Python package from Airbnb to control your workflows.\r\n\r\nThis talk will explain the concepts behind Airflow, demonstrating how to define your own workflows in Python code and how to extend the functionality with new task operators and UI blueprints by developing your own plugins. You'll also get to hear about our experiences at Blue Yonder, using this tool in real-world scenarios.", - "sub_title": "", - "timerange": "2016-07-20 15:45:00, 2016-07-20 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@ctrebing", - "id": 499, - "speakers": "Christian Trebing", - "title": "Get in control of your workflows with Airflow", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Architecture", - "Best Practice" - ], - "abstract_long": [ - "Whenever you work with data, sooner or later you stumble across the definition of your workflows. At what point should you process your customer's data? What subsequent steps are necessary? And what went wrong with your data processing last Saturday night?\r\n\r\nAt Blue Yonder we use Airflow (https://github.com/airbnb/airflow), an open source Python package from Airbnb to solve these problems. It can be extended with new functionality by developing plugins in Python, without the need to fork the repo. With Airflow, we define workflows as directed acyclic graphs and get a shiny UI for free. Airflow comes with some task operators which can be used out of the box to complete certain tasks. For more specific cases, tasks can be developed by the end user. Best of all: even the configuration is done completely in Python!\r\n\r\nThis talk will explain the concepts behind Airflow, demonstrating how to define your own workflows in Python code and how to extend the functionality with new task operators and UI blueprints. You'll also get to hear about our experiences using this tool in real-world scenarios." - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases" - ], - "emails": "christian.trebing@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/get-in-control-of-your-workflows-with-airflow", - "admin_type": "", - "companies": "Blue Yonder GmbH" - }, - "383": { - "abstract_short": "To get real time insight into your running applications you need to instrument them and collect metrics: count events, measure times, expose numbers. Sadly this important aspect of development was a patchwork of half-integrated solutions for years. Prometheus changed that and this talk will walk you through instrumenting your apps and servers, building dashboards, and monitoring using metrics.", - "sub_title": "How Prometheus Can Unify Your Metrics", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@hynek", - "id": 383, - "speakers": "Hynek Schlawack", - "title": "Get Instrumented!", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Performance", - "Best Practice", - "Operations", - "DevOps general", - "Use Case" - ], - "abstract_long": [ - "Metrics are highly superior to logging in regards of understanding the past, presence, and future of your applications and systems. They are cheap to gather (just increment a number!) but setting up a metrics system to collect and store them is a major task.\r\n\r\nYou may have heard of statsd, Riemann, Graphite, InfluxDB, or OpenTSB. They all look promising but on a closer look it\u2019s apparent that some of those solutions are straight-out flawed and others are hard to integrate with each other or even to get up and running.\r\n\r\nThen came Prometheus and gave us independence of UDP, no complex math in your application, multi-dimensional data by adding labels to values (no more server names in your metric names!), baked in monitoring capabilities, integration with many common systems, and official clients for all major programming languages. In short: a *unified* way to gather, process, and present metrics.\r\n\r\nThis talk will:\r\n\r\n1. explain why you want to collect metrics,\r\n1. give an overview of the problems with existing solutions,\r\n1. try to convince you that Prometheus may be what you\u2019ve been waiting for,\r\n1. teach how to impress your co-workers with beautiful graphs and intelligent monitoring by putting a fully instrumented Python application into production,\r\n1. and finally give you pointers on how to migrate an existing metrics infrastructure to Prometheus *or* how to integrate Prometheus therein.\r\n", - "", - "", - "" - ], - "abstract_extra": "# Notes\r\n\r\nLast year I spoke about metrics and logging in general. People approached me afterwards expressing interest in metrics but felt lost. And truth to be told, back then the metrics landscape was not very good.\r\n\r\nThe rise of [Prometheus](http://prometheus.io) with decent Python integration changed that considerably. It\u2019s possible to have one coherent metrics platform for both system and app metrics (in various programming languages) and even get monitoring for free.\r\n\r\nTherefore, as a follow-up, I want to do this kind-of case study on how I\u2019ve harmonized our metrics. The talk will **not** build on the older one though.\r\n\r\nThe key idea is to start from nothing and ending up with a well-instrumented system including monitoring. I don\u2019t believe there\u2019s ever been a comparable talk.\r\n\r\n# Technical Aptitude\r\n\r\nI\u2019ve implemented most of [Variomedia](http://www.variomedia.de)\u2019s metrics infrastructure using Graphite and later moved it to Prometheus. Therefore I know both sides of the coin. I\u2019m also working on the [asyncio/Twisted integration](https://github.com/hynek/prometheus_async/) for the Prometheus Python client.\r\n\r\nIn general OSS terms, I\u2019m a PSF fellow, a dormant CPython core dev, an active Twisted core dev, help out in way too many projects, and have a fair share of [own projects](https://github.com/hynek/) too.\r\n\r\n\r\n# Speaking Experience\r\n\r\nThis talk has been [accepted](https://us.pycon.org/2016/schedule/presentation/1601/) to PyCon US. People already [expressed their hopes](https://twitter.com/d0ugal/status/695678965529374720) that I submit it to EP too.\r\n\r\nOther than that, I\u2019ve spoken at the past three PyCon US ([deployments](https://hynek.me/talks/python-deployments/), [TLS](https://hynek.me/talks/tls/), and [Loggging/Metrics](https://hynek.me/talks/beyond-grep/)), the past three EuroPythons (same), PyCon Russia 2014 (TLS, invited speaker), PyCon PL 2014 (TLS, invited speaker), PiterPy 2015 (Logging/Metrics, invited speaker), PyCon JP 2015 (Logging/Metrics, keynote). From what I gather from the feedback and buzz, I think it\u2019s fair to say that my talks have been well-received so far. Especially because I try to make them both informative *and* entertaining at once.\r\n\r\nI put a *lot* of effort into my talks: I start at least three months prior to the conference and work, polish, and practice until EP. Therefore I\u2019m hopeful to deliver another popular talk. Of course, there will be a accompanying page again like in the previous years.\r\n\r\n# Preliminary Outline\r\n\r\n1. Prometheus\r\n\t- short history\r\n\t- philosophy\r\n\t\t- push vs. pull\r\n\t\t- simplest math in-app\r\n\t- why no statsd/Graphite?\r\n\t\t- UDP\r\n\t\t\t- more load = more packets\r\n\t\t\t- lots of load = lost packets\r\n\t\t- one-dimensional data (e.g. `app.server1.process5.request_time` instead of `app.request_time` with tags/labels with metadata)\r\n\t- presentation of result: beautiful dashboard & working monitoring\r\n1. System Metrics\r\n\t- `node_exporter` for native system metrics\r\n\t- examples of other popular exporters like nginx\r\n\t- `collectd_exporter` and `graphite_exporter` as bridges while transitioning\r\n1. Instrumenting Your App [*concrete* examples]\r\n\t- general considerations\r\n\t\t- what to measure\r\n\t\t- how to avoid code duplication\r\n\t\t- protecting your exposed metrics\r\n\t- example: long-running web app (simple pyramid or flask app with DB & caching)\r\n\t- example: batch job (e.g. a backup)\r\n\t- example: asyncio (simple echo server or something similar)\r\n\t- example: Twisted (same)\r\n\t- opaque cloud environments\r\n\t\t- how does heroku fit in?\r\n1. Visualisation\r\n\t- building queries in the integrated graph browser\r\n\t- Grafana\r\n\t\t- building beautiful and useful dashboards\r\n\t\t- correlating system metrics with app metrics\r\n1. Monitoring\r\n\t- defining alerts\r\n\t- integration with 3rd parties (e.g. PagerDuty, nagios)\r\n1. Next Steps\r\n\t- how to fully automate metrics endpoint discovery (e.g. consul)\r\n\t- long term metrics storage", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - "DevOps", - "DevOps", - "Best Practice and Use Cases" - ], - "emails": "schlawack@variomedia.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/get-instrumented", - "admin_type": "", - "companies": "Variomedia AG" - }, - "672": { - "abstract_short": "A side-by-side walkthrough of basic Go syntax and semantics compared to Python.", - "sub_title": "A side-by-side walkthrough of basic Go syntax and semantics compared to Python", - "timerange": "2016-07-19 14:30:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@STajbakhsh", - "id": 672, - "speakers": "Shahriar Tajbakhsh", - "title": "Go for Python Programmers", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python general", - "Data Structures", - "Programming", - "Go-Lang" - ], - "abstract_long": [ - "A side-by-side walkthrough of basic Go syntax and semantics compared to Python." - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Programming", - "Programming", - "Other Programming Languages" - ], - "emails": "sh.tajbakhsh@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/go-for-python-programmers", - "admin_type": "", - "companies": "Osper" - }, - "626": { - "abstract_short": "Grocker is a Docker build chain for Python. It transforms your Python package into a self-contained Docker image which can be easily deployed in a Docker infrastructure. Grocker also adds a Docker entry point to easily start your application.", - "sub_title": "", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 626, - "speakers": "Fabien Bochu", - "title": "Grocker, a Python build chain for Docker", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Docker" - ], - "abstract_long": [ - "At Polyconseil, we build Paris electric car sharing service: Autolib'. This system is based on many services developed using web technologies, Django and our own libraries to handle business logic.\r\n\r\nPackaging is already a difficult problem, deploying large Python projects is even more difficult. When deploying on a live and user-centric system like Autolib', you cannot rely on Pip and external PyPI servers which might become unavailable and are beyond your control. In the beginning we used classic Debian packaging: it was a maintenance hell. It took hours to build our packages and update their metadata to match our Python packages. So we switched to Docker.\r\n\r\nDocker allows us to have a unique item that is deployed in production systems: code updates are now atomic and deterministic! But before deploying the Docker image, you need to build it. That's where Grocker comes in.\r\n\r\nGrocker is a Docker build chain for Python. It will transform your Python package into a self-contained Docker image which can be easily deployed in a Docker Infrastructure. Grocker also adds a Docker entry point to easily start your application.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "DevOps" - ], - "emails": "fabien.bochu@polyconseil.fr", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/grocker-a-python-build-chain-for-docker", - "admin_type": "", - "companies": "Polyconseil" - }, - "463": { - "abstract_short": "El objetivo de la charla ser\u00eda mostrar las herramientas que disponemos dentro de la propia API de Python y librer\u00edas de terceros para desarrollar nuestras propias herramientas que permitan realizar pruebas de seguridad y de pentesting de las aplicaciones.", - "sub_title": "Pentesting con python", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@jmortegac", - "id": 463, - "speakers": "Jose Manuel Ortega", - "title": "Hacking \u00e9tico con herramientas Python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Security", - "Privacy", - "Science Track", - "Development", - "Cryptography" - ], - "abstract_long": [ - "Python se ha convertido en el lenguaje m\u00e1s usado para desarrollar herramientas dentro del \u00e1mbito de la seguridad.\r\nMuchas de las herramientas que podemos encontrar hoy en d\u00eda como esc\u00e1ner de puertos, an\u00e1lisis de vulnerabilidades, ataques por fuerza bruta y hacking de passwords, se han escrito en este lenguaje ,adem\u00e1s de ofrecer un ecosistema de herramientas para realizar pruebas de seguridad y de pentesting de aplicaciones. \r\n\r\nEntre los puntos a tratar podr\u00edamos destacar: \r\n\r\n - **Introducir Python como lenguaje de desarrollo de herramientas de seguridad**\r\n - **Introducir librer\u00edas para obtener informaci\u00f3n de nuestro objetivo como Shodan,pygeocoder,pygeoip**\r\n - **An\u00e1lisis y extracci\u00f3n de metadatos en Python en im\u00e1genes y documentos** \r\n - **An\u00e1lisis de puertos con herramientas como python-nmap**\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "Comentar\u00e9 algunas de las herramientas que podemos encontrar en http://www.pythonsecurity.org/libs y como demo pr\u00e1ctica mostrar\u00e9 una herramienta de pentesting creada desde cero con algunos de los m\u00f3dulos que comentar\u00e9. \r\n\r\nHe impartido algunas charlas sobre seguridad en algunas conferencias.\r\nLas presentaciones de las charlas que he impartido se pueden ver en:\r\nhttps://speakerdeck.com/jmortega", - "tag_categories": [ - "Security", - "Security", - ">>> Suggested Track", - "Programming", - "Security" - ], - "emails": "jmoc25@gmail.com", - "language": "Spanish", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/hacking-etico-con-herramientas-python", - "admin_type": "", - "companies": "" - }, - "456": { - "abstract_short": "If you have ever happened to need to deal with GPS data in Python you may have felt a bit lost. This talk presents libraries starting from basic reading and writing GPS tracks in the GPS Exchange Format to adding missing elevation information. Also visualisation of tracks on OpenStreetmap data with interactive plots in Jupyter notebooks is covered. Additionally common algorithms for GPS like Douglas-Peucker and Kalman filter are explained.", - "sub_title": "Reading, writing, handling and visualizing GPS data", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@FlorianWilhelm", - "id": 456, - "speakers": "Florian Wilhelm", - "title": "Handling GPS Data with Python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Visualization", - "Science", - "Jupyter/iPython Notebook", - "Sensors" - ], - "abstract_long": [ - "If you have ever happened to need to deal with GPS data in Python you may have felt a bit lost. There are many libraries at various states of maturity and scope. Finding a place to start and to actually work with the GPS data might not be as easy and obvious as you might expect from other Python domains. \r\nInspired from my own experiences of dealing with GPS data in Python, I want to give an overview of some useful libraries. From basic reading and writing GPS tracks in the GPS Exchange Format with the help of gpxpy to adding missing elevation information with srtm.py. Additionally, I will cover mapping and visualising tracks on OpenStreetmap with mplleaflet that even supports interactive plots in a Jupyter notebook.\r\nBesides the tooling, I will also demonstrate and explain common algorithms like Douglas-Peucker to simplify a track and the famous Kalman filters for smoothing. For both algorithms I will give an intuition about how they work as well as their basic mathematical concepts. Especially the Kalman filter that is used for all kinds of sensor, not only GPS, has the reputation of being hard to understand. Still, its concept is really easy and quite comprehensible as I will also demonstrate by presenting an implementation in Python with the help of Numpy and Scipy. My presentation will make heavy use of the Jupyter notebook which is a wonderful tool perfectly suited for experimenting and learning.\r\n", - "", - "", - "" - ], - "abstract_extra": "Hi there,\r\n\r\nyou can find more information about me on the [homepage][1]. There you can also find the talks I have held before at EuroPython 2015/2014 etc. I submitted this additional talk if you find my first talk [Kalman and Bayesian Filters][2] maybe too technical or too much focused on mathematics. This talk will be more practical and Python programming oriented.\r\nI am looking forward to EuroPython 2016 in Bilbao!\r\n\r\nBest regards from Cologne,\r\nFlorian\r\n\r\n [1]: http://www.florianwilhelm.info/\r\n [2]: https://ep2016.europython.eu/conference/talks/kalman-and-bayesian-filters-in-python\r\n", - "tag_categories": [ - "Data Science", - "Sciences", - "Python", - "Hardware" - ], - "emails": "florian.wilhelm@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/handling-gps-data-with-python", - "admin_type": "", - "companies": "inovex" - }, - "726": { - "abstract_short": "Scaling a project to a worldwide scale with the same performance and availability in every region using Python isn\u2019t easy, but with the right mindset and tools it\u2019s a very viable target.", - "sub_title": "", - "timerange": "2016-07-21 16:15:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 726, - "speakers": "John Kraal", - "title": "High Availability Scaling with Share Nothing Architecture", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Security", - "Data Structures", - "Architecture", - "Distributed Systems", - "Scaling" - ], - "abstract_long": [ - "Scaling a project to a worldwide scale with the same performance and availability in every region using Python isn\u2019t easy, but with the right mindset and tools it\u2019s a very viable target. We will discuss methods of delivering software, with automated scaling systems, building units out of your project to manage separately and how to reliably and securely distribute data to separate clusters, and how we have achieved this with the use of Celery, Redis, Databases, Protobuf and other modern tools, whilst making sure to highlight our pitfalls and successes" - ], - "abstract_extra": "", - "tag_categories": [ - "Security", - "Programming", - "Programming", - "DevOps", - "DevOps" - ], - "emails": "john@getbynder.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/high-availability-scaling-with-share-nothing-architecture", - "admin_type": "", - "companies": "Bynder" - }, - "546": { - "abstract_short": "The talk will cover new async/await syntax in Python, asyncio library and ecosystem around it, and ways to use them for creating high performance servers. It will explain how to build custom event loops for asyncio, with an example of using the libuv library with Cython to achieve 2-3x performance boost over vanilla asyncio. ", - "sub_title": "Boosting asyncio performance 2x", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@1st1", - "id": 546, - "speakers": "Yury Selivanov", - "title": "High Performance Networking in Python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python 3", - "Performance", - "Architecture", - "Web Track", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "The talk will start with an overview of async/await syntax introduced with PEP 492 in Python 3.5. We'll go through asynchronous context managers and iteration protocols it introduces. I'll briefly explain how the feature is implemented in CPython core.\r\n\r\nThen we'll explore asyncio design. I'll briefly cover event loop, policies, transports, protocols and streams abstractions. I'll explain that event loops are pluggable, which really makes asyncio a universal framework.\r\n\r\nWe'll cover libuv - a high performance networking library that drives NodeJS. I'll highlight where it's similar to asyncio and how it's different.\r\n\r\nIn the final part of the talk I'll explain how to make an asyncio compatible event loop on top of libuv. I'll showcase Cython, which is an amazing tool for tasks like this.\r\n\r\nFinally, I'll share some ideas on how we can further improve the performance of asyncio and networking in Python, and what are the challenges that we will face.\r\n\r\n\r\n**Objectives:**\r\n\r\n1. Deeper understanding of async/await in Python and why it's important. \r\n2. Deeper understanding of asyncio architecture and protocols. \r\n3. How to improve asyncio performance by implementing custom event loops.\r\n4. Show that it's easy to integrate existing complex & low level libraries with Cython. \r\n5. Some perspective on how Python may evolve wrt networking.\r\n\r\n" - ], - "abstract_extra": "I'm an active maintainer of asyncio module (along with Guido van Rossum and Victor Stinner). I think I have a rather unique inner-view at how asyncio works and where it will evolve in the coming years.\r\n\r\nI'm also the author and implementor of PEP 492 -- async/await syntax in Python 3.5. I'm also working on a new PEP to add asynchronous generators in CPython 3.6. I think it might be interesting for people to ask me some interesting questions about async/await and asynchronous Python programming in general.", - "tag_categories": [ - "Python", - "Programming", - "Programming", - ">>> Suggested Track", - "Programming" - ], - "emails": "yury@magic.io", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/high-performance-networking-in-python", - "admin_type": "", - "companies": "MagicStack" - }, - "744": { - "abstract_short": "This talk will give an overview about the Intel\u00ae Distribution for Python which delivers high performance acceleration of Python code on Intel processors for scientific computing, data analytics, and machine learning.\r\n", - "sub_title": "Development of high performance Python code for machine learning, analytics and HPC", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 744, - "speakers": "Ralph de Wargny", - "title": "High Performance Python on Intel Many-Core Architecture", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Machine-Learning" - ], - "abstract_long": [ - "This talk will give an overview about the Intel\u00ae Distribution for Python which delivers high performance acceleration of Python code on Intel processors for scientific computing, data analytics, and machine learning. \r\nIn the first part of the talk, we'll look at the architecture of the latest Intel processors, including the brand new Intel Xeon Phi, also known as Knights Landing, a many-core processor, which was just released end of June 2016. \r\nIn the second part, we will see which tools and libraries are available from Intel Software to enable high performance Python code on multi-core and many-core processors.", - "", - "", - "" - ], - "abstract_extra": "...", - "tag_categories": [ - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "ralph.wargny@intel.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/high-performance-python-on-intel-architecture", - "admin_type": "", - "companies": "Intel Software" - }, - "738": { - "abstract_short": "This talk is a case-study of how Python (Pandas, NumPy, SciKit-learn) can be implemented to identify the influence of the potential drivers of a decline in size of Atlantic herring populations using Gradient Boosting Regression Trees. \r\n\r\n", - "sub_title": "Predicting drivers of change with Gradient Boosting Regression Trees", - "timerange": "2016-07-22 14:30:00, 2016-07-22 15:00:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@", - "id": 738, - "speakers": "Olga Lyashevska", - "title": "How can machine learning help to predict changes in size of Atlantic herring ?", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Science", - "Predictions", - "Case Study", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Machine-Learning" - ], - "abstract_long": [ - "A decline in size and weight of Atlantic herring in the Celtic Sea has been observed since the mid-1980\u2019s. The cause of the decline remains largely unexplained but is likely to be driven by the interactive effect of various endogenous and exogenous factors. The goal of this study is to interrogate a long time-series of biological data obtained from commercial fisheries from 1959 to 2012. We use gradient boosting regression trees to identify important variables underlying changes in growth from various potential drivers, such as: \r\n- Atlantic multidecadal oscillation;\r\n- sea surface temperature;\r\n- salinity;\r\n- wind;\r\n- zooplankton abundance;\r\n- fishing pressure.\r\nThis learning algorithm allows to quantify the influence of the potential drivers of change with the test error lower when compared to other supervised learning techniques. The predictor variables importance spectrum (feature importance) helps to identify the underlying patterns and potential tipping points while resolving the external mechanisms underlying observed changes in size and weight of herring. This analysis is a useful case-study of how Python can be implemented in academia. The outputs of the analysis are of relevance to conservation efforts and sustainable fisheries management which promotes species resistance and resilience." - ], - "abstract_extra": "This research will be presented at International Statistical Ecology Conference in Seattle on June 28 - July 1st 2016 (http://depts.washington.edu/uwconf/wordpress/isec2016/). \r\nWhereas in Seattle I will mostly focus on statistical model and ecological meaning of the findings, at EuroPython I would like to demonstrate the implementation of the analysis with Scikit-learn using IPython notebook. \r\n\r\n", - "tag_categories": [ - "Sciences", - "Data Science", - "Case Study", - "Data Science", - "Data Science" - ], - "emails": "olga.lyashevska@gmit.ie", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/how-can-machine-learning-help-to-predict-changes-in-size-of-atlantic-herring", - "admin_type": "", - "companies": "Galway-Mayo Institute of Technology" - }, - "496": { - "abstract_short": "OpenStack is an infrastructure stack mostly developed in Python. In this talk, Thierry Carrez and Doug Hellmann, both Python Software Foundation fellows and OpenStack Technical Committee members, will look at the symbiotic relationship between OpenStack and Python.", - "sub_title": "", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@tcarrez, @doughellmann", - "id": 496, - "speakers": "Thierry Carrez, Doug Hellmann", - "title": "How OpenStack makes Python better (and vice-versa)", - "have_tickets": [ - true, - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Best Practice", - "failures/mistakes", - "Test Driven Development (TDD)", - "Development", - "OpenStack" - ], - "abstract_long": [ - "OpenStack is an open source stack that can be deployed on raw computing resources to privately or publicly present Infrastructure as a Service. It now consists of more than 4.5 million lines of code, 85% of which is Python. In this talk, Thierry Carrez and Doug Hellmann, both Python Software Foundation fellows and OpenStack Technical Committee members, will look at the symbiotic relationship between OpenStack and Python.\r\n\r\nWe'll go back in history and explain why OpenStack originally picked Python as its main language 6 years ago, and explore what does Python bring to OpenStack. We'll dive into examples of OpenStack pushing Python libraries to their limits and exposing new bugs. We'll look into the massive cloud-based continuous integration system that OpenStack uses and explain how it exposes bugs in Python libraries in the minutes after they are published to PyPI. We'll look into Python libraries that were created by the OpenStack community and libraries that the OpenStack community took over. Finally we'll expose a few best practices that Python developers can follow to get the most of this symbiotic relationship.", - "", - "", - "" - ], - "abstract_extra": "This 45-min talk would be created for EuroPython and could be made to last 30 or 60 min if that would be your preference. If selected, this talk would be co-presented by Thierry Carrez (see bio above) and Doug Hellmann.\r\n\r\nDoug has been employed to work on OpenStack full time for three years. He is a member of the Python Software Foundation, and served as its Communications Director from 2010-2012. After a year as a regular columnist for Python Magazine, he served as Editor-in-Chief from 2008-2009. Between 2007 and 2011, Doug published the popular \"Python Module of the Week\" series on his blog, and that material served as the basis for his book \"The Python Standard Library By Example\". He lives in Athens, Georgia.\r\n\r\nDoug presented at various Python conferences in the past, including PyCon in 2013 [https://us.pycon.org/2013/speaker/profile/297/][1].\r\n\r\nThierry presented OpenStack at EuroPython, back in 2011 [https://ep2013.europython.eu/conference/talks/snakes-on-a-cloud-a-presentation-of-the-openstack-project][2].\r\n\r\n [1]: https://us.pycon.org/2013/speaker/profile/297/\r\n [2]: https://ep2013.europython.eu/conference/talks/snakes-on-a-cloud-a-presentation-of-the-openstack-project\r\n", - "tag_categories": [ - "Best Practice and Use Cases", - "Best Practice and Use Cases", - "Testing", - "Programming", - "DevOps" - ], - "emails": "thierry.carrez@gmail.com, doug@doughellmann.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/how-openstack-makes-python-better-and-vice-versa", - "admin_type": "", - "companies": "OpenStack Foundation, Red Hat" - }, - "435": { - "abstract_short": "The popular board game of Risk has many fans around the world. \r\nUsing a Python-based simulation of the game, we try to answer several questions that went through the minds of many players:\r\n- Which missions are easiest to attain?\r\n- Does your starting position influence your chances?\r\n- Which regions are easiest to defend?", - "sub_title": "analyzing the game of Risk with Python", - "timerange": "2016-07-22 12:00:00, 2016-07-22 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 435, - "speakers": "Rogier van der Geer", - "title": "How to conquer the world", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Visualization", - "Algorithms", - "Predictions", - "Performance", - "Programming" - ], - "abstract_long": [ - "The popular board game of Risk has many fans around the world. \r\nUsing a Python-based simulation of the game, we try to answer several questions that went through the minds of many players;\r\n\r\n- Which missions are easiest to attain?\r\n- Does your starting position influence your chances?\r\n- Which regions are easiest to defend?\r\n\r\nDuring this talk we'll explain what genetic algorithms are and we'll explain an entertaining use-case: how to win at popular board games. During the talk we'll demo how object oriented patterns help with the design and implementation of these algorithms. We'll also demonstrate a library that allows users to push their own risk bots into a game and battle it out on.", - "", - "", - "" - ], - "abstract_extra": "Before joining GoDataDriven, Rogier obtained a PhD in particle physics. Rogier gained hands-on experience with handling enormous quantities of data and processing, or 'charming', them into a manageable format before performing complicated analyses. After his PhD he exchanged physical science for data science at GoDataDriven, where he is now putting his skills to use on more business-driven problems. He likes applying data science to anything; be it his daily commute, improving his photography skills or the contents of his lunch box.", - "tag_categories": [ - "Data Science", - "Data Science", - "Data Science", - "Programming", - "Programming" - ], - "emails": "rogiervandergeer@godatadriven.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/a-genetic-algorithm-to-play-the-game-of-risk", - "admin_type": "", - "companies": "GoDataDriven" - }, - "633": { - "abstract_short": "Optimization in Python (also known as mathematical programming) can be performed by minimization (or maximization) of an objective function within a model that can include discrete variables subject to a set of constrains. At this talk, chemical engineering students of the University of Alicante will introduce the audience to the possibilities of optimization, presenting Pyomo and showing real world examples such as how to improve your diet and save money at fast food restaurants.\r\n\r\n", - "sub_title": "Mathematical optimization with Pyomo or how to solve LP, NLP and MILP problems with Python", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@zuriich92, @DanielDomeneL", - "id": 633, - "speakers": "Zuria Bauer, Daniel Domene L\u00f3pez", - "title": "How to improve your diet and save money with Python", - "have_tickets": [ - true, - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Science", - "Beginners", - "Jupyter/iPython Notebook", - "Engineering", - "Science Track" - ], - "abstract_long": [ - "Process optimization in industry has become essential in order to maximize the resources available and reduce energy consumption. \r\nOptimization problems become interesting when dealing with restrictions (linear or nonlinear) and integer variables (modeling the discrete decisions). Python ecosystem presents different libraries to solve optimization problems, some of them are CVXOpt, CVXPy, PulP, OpenOpt, or Pyomo. \r\nAmong them, Pyomo results interesting because:\r\n\r\n- It can be used for Mathematical modeling in Python similarly to AMPL (and GAMS)\r\n- It communicates with the main solvers used in this field such as GLPK, Gurobi, CPLEX, CBC and PICO\r\n- It's free and open source Python library (BSD license), being developed by Sandia National Laboratories, USA.\r\n- It supports Python 3 and it is easy to install.\r\n\r\nThe talk will be divided in three parts:\r\n\r\n1. _Introduction to Mathematical Programming/Optimization (15 min):_ visual introduction to optimization concepts including restrictions and non linearties (linear Programming, Nonlinear Programming, ILP, MIP, MINLP). \r\n\r\n2. _Introduction to the Pyomo sintax and a quick note for the installation (20 min):_ showing how to improve their diet and save money when ordering food in fast food restaurants.\r\n\t\r\n3. _Optimization problems in engineering (10 min):_ showing more advanced optimization examples that include decision variables.\r\n\r\n ", - "", - "", - "" - ], - "abstract_extra": "The talk will be oriented to _beginners_ and will be given by _Chemical Engineering students_. Slides, Jupyter Notebooks will be available on [GitHub][1]\r\n\r\n [1]: https://github.com/CAChemE/Mathematical-Optimization/\r\n", - "tag_categories": [ - "Sciences", - "Educational", - "Python", - "Everything Else", - ">>> Suggested Track" - ], - "emails": "zuriich92@gmail.com, daniel.domene.lopez2@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/how-to-improve-your-diet-and-save-money-with-python", - "admin_type": "", - "companies": ", CAChemE" - }, - "401": { - "abstract_short": "This talk is for people who have a lot of floating numbers inside\r\nPostgreSQL tables. I will bring as an example my personal experience\r\nwith a scientific project that used PostgreSQL as storage for a rather\r\ncomplex set of composite multidimensional arrays and ran into all\r\nsorts of performances issues, both in reading and writing the data. I\r\nwill explain how I solved all that by dropping the database in favor\r\nof an HDF5 file, while keeping the application running and the users\r\nhappy.\r\n", - "sub_title": "Refactoring a distributed parallel earthquake simulation engine", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:00:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@", - "id": 401, - "speakers": "Michele Simionato", - "title": "How to migrate from PostgreSQL to HDF5 and live happily ever after", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Algorithms", - "Big Data", - "Architecture", - "Science Track", - "Testing" - ], - "abstract_long": [ - "This talk is for people who have a lot of floating numbers inside\r\nPostgreSQL tables and have problems with that. I will narrate my\r\nexperience with a scientific project that used PostgreSQL as storage\r\nfor a rather complex set of composite multidimensional arrays and ran\r\ninto all sorts of performances issues, both in reading and writing the\r\ndata. I will discuss the issues and the approach that was taken first\r\nto mitigate them (unsuccessfully) and then to remove them\r\n(successfully) by a complete rethinking of the underlying architecture\r\nand eventually the removal of the database. I will talk about the\r\nmigration strategies that were employed in the transition period and\r\nhow to live with a mixed environment of metadata in PostgreSQL and\r\ndata in an HDF5 file. I will also talk about concurrency, since the\r\nunderlying application is distributed and massively parallel, and\r\nstill it uses the purely sequential version of HDF5. Questions from\r\nthe audience are expected and welcome.\r\nThe talk is of interest to a large public, since it is mostly about\r\nmeasuring things, monitoring and testing a legacy system,\r\nmaking sure that the changes do not break the previous behavior\r\nand keeping the users happy, while internally rewriting\r\nall of the original code. And doing that in a small enough number of years!\r\n" - ], - "abstract_extra": "I am a well known Pythonista since 2002, I have spoken at the EuroPython conference several times in the past and I am also the author of the decorator module : https://pypi.python.org/pypi/decorator", - "tag_categories": [ - "Data Science", - "Data Science", - "Programming", - ">>> Suggested Track", - "Testing" - ], - "emails": "michele.simionato@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/how-to-migrate-from-postgresql-to-hdf5-and-live-happily-ever-after", - "admin_type": "", - "companies": "GEM" - }, - "737": { - "abstract_short": "This presentation show how to deploy **[Wendelin][1]**, the free software platform for Big Data & Machine Learning, using **[SlapOS][2]** , the free software hyperconverged Operating System (hOS). Written in 100% in Python, SlapOS and Wendelin, can create a complete Big Data Infraestruture with out-of-core capabilities ready to use and operate in just few hours.\r\n\r\n [1]: http://www.wedelin.io\r\n [2]: http://community.slapos.org\r\n", - "sub_title": "Provisioning from sensors to out-of-core-pydata in few minutes", - "timerange": "2016-07-18 14:45:00, 2016-07-18 15:30:00", - "sub_community": "", - "duration": 45, - "twitters": "@ramonnerat", - "id": 737, - "speakers": "Rafael Monnerat", - "title": "Hyperconvergence meets BigData", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Big Data", - "Use Case", - "Open-Source", - "Deployment/Continuous Integration and Delivery", - "Configuration Management (Ansible/Fabric/Chef/...)" - ], - "abstract_long": [ - "This presentation aims to demonstrate how to use [SlapOS][1] (Hyperconverged OS) to deploy an entire Big Data Infrastrucure and show how \"data life cycle\" can be managed with [Wendelin][2] - covering ingestion, analysis, visualization and weaving it into an application.\r\n\r\nWe'll show how Wendelin and SlapOS could handle acquisition, analysis and exploitation of data, making it a potential solution for IOT scenarios where data is available and needs some logic applied before being presented as web application, possibly on a commercial basis.\r\n\r\nThe agenda of the presentation includes an introduction on SlapOS, as a tool used to deploy a wide range of different services and an introduction of Wendelin, as a tool in order to make out-of-core python applications.\r\n\r\nAfter a short introduction, we progress to show the steps to deploy SlapOS infrastructure and later to deploy Wendelin on the just deployed SlapOS, including an use case which shows SlapOS deploying a fluentd instance to ingest data to the Wendelin Database.\r\n\r\nTo conclude, we make a live demo with an Jupiter using out-of-core python to handle wav files stored on Wendelin, and a second short demo on handle computer resources consumption data.\r\n\r\n [1]: http://community.slapos.org\r\n [2]: http://www.wendelin.io/\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Data Science", - "Best Practice and Use Cases", - "Open Source", - "DevOps", - "DevOps" - ], - "emails": "rafael@nexedi.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/hyperconvergence-meets-bigdata", - "admin_type": "", - "companies": "Nexedi" - }, - "408": { - "abstract_short": "In an era of almost-unlimited textual data, accurate sentiment analysis can be the key for determining if our products, services and communities are delighting or aggravating others. We'll take a look at the sentiment analysis landscape in Python: touching on simple libraries and approaches to try as well as more complex systems based on machine learning.", - "sub_title": "A Survey of Python Sentiment Analysis Tools", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:15:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@kjam", - "id": 408, - "speakers": "Katharine Jarmul", - "title": "I Hate You, NLP... ;)", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Natural Language Processing", - "Algorithms", - "failures/mistakes", - "Data Science", - "Machine-Learning" - ], - "abstract_long": [ - "Overview\r\n-------------\r\n\r\nThis talk aims to introduce the audience to the wide array of tools available in Python focused on sentiment analysis. It will cover basic semantic mapping, emoticon mapping as well as some of the more recent developments in applying neural networks, machine learning and deep learning to natural language processing. Participants will also learn some of the pitfalls of the different approaches and see some hands-on code for sentiment analysis.\r\n\r\nOutline\r\n-----------\r\n* NLP: then and now\r\n* Why Emotions Are Hard\r\n* Simple Analysis\r\n * TextBlob (& other available libraries)\r\n * Bag of Words\r\n * Naive Bayes\r\n* Complex Analysis\r\n * Preprocessing with word2vec\r\n * Metamind & RNLN\r\n * Optimus & CNN\r\n * TensorFlow\r\n * Watson\r\n* Live Demo\r\n* Q&A\r\n", - "", - "", - "" - ], - "abstract_extra": "I've spoken at numerous conferences in the US about Python, and have written a book on data analysis with Python for O'Reilly. NLP has always been a side / passion project for me and I've recently been able to spend more time learning about the new tools available using deep learning and neural networks. I'm hoping to share what I've learned with others from a \"survey style\" perspective (rather than as an author of one of the libraries). I hope this perspective can add a bit of fun and humor to the talk as well :D", - "tag_categories": [ - "Data Science", - "Data Science", - "Best Practice and Use Cases", - "Data Science", - "Data Science" - ], - "emails": "kjarmul@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/i-hate-you-nlp", - "admin_type": "", - "companies": "kjamistan" - }, - "458": { - "abstract_short": "El tema que nos ocupa es como implementar un identificador de sonido tipo Shazam usando t\u00e9cnicas DSP. Los puntos a seguir ser\u00e1n, implementaci\u00f3n, retos y pasos adicionales. El proyecto que nos ocupa se encuentra todav\u00eda en proceso de desarrollo (el c\u00f3digo [subido en GitHub][1]) y fue inspirado despu\u00e9s la conferencia, [Over-the-Air Audio Identification][2] en FOSDEM 2016.\r\n\r\n [1]: https://github.com/notexactlyawe/abracadabra\r\n [2]: https://fosdem.org/2016/schedule/event/audio_identification/", - "sub_title": "", - "timerange": "2016-07-19 14:00:00, 2016-07-19 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@notexactlyawe", - "id": 458, - "speakers": "Cameron Macleod", - "title": "Implementaci\u00f3n de un Identificador de Sonido en Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Case Study", - "failures/mistakes", - "Open-Source", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Databases" - ], - "abstract_long": [ - "El tema que nos ocupa es como implementar un identificador de sonido tipo Shazam usando t\u00e9cnicas DSP con ayuda de unas fant\u00e1sticas bibliotecas. Los puntos a seguir ser\u00e1n, implementaci\u00f3n, retos y pasos adicionales. El proyecto que nos ocupa se encuentra todav\u00eda en proceso de desarrollo (el c\u00f3digo [subido en GitHub][1]) y fue inspirado despu\u00e9s la conferencia, [Over-the-Air Audio Identification][2] en FOSDEM 2016.\r\n\r\nLa estructura b\u00e1sica del proyecto consiste en un clasificador y un reconocedor. El clasificador toma huellas del sonido y las procesa en una forma investigable para el reconocedor que usa estas huellas para la identificaci\u00f3n y b\u00fasqueda de archivos almacenados con el fin de encontrar la semejanza mas probable. El reconocedor estar\u00e1 expuesto en un entorno API.\r\n\r\nLa conferencia intentar\u00e1 introducir el \u00e1rea de DSP a la audiencia y los conceptos que est\u00e1n detr\u00e1s aplicaciones como Shazam. Explicar\u00e9 todos las nociones incluidas en una manera sencilla.\r\n\r\n [1]: https://github.com/notexactlyawe/abracadabra\r\n [2]: https://fosdem.org/2016/schedule/event/audio_identification/" - ], - "abstract_extra": "El tema es sobre un proyecto a\u00fan en curso y como resultado puede convertirse antes que lo doy en una charla sobre los fracasos del proyecto y sus lecci\u00f3nes. Preferir\u00eda dar el tema en ingl\u00e9s pero estoy dispuesto darlo en espa\u00f1ol tambi\u00e9n.", - "tag_categories": [ - "Case Study", - "Best Practice and Use Cases", - "Open Source", - "Data Science", - "Databases" - ], - "emails": "cmacleod170@gmail.com", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/implementacion-de-un-identificador-de-sonido-en-python", - "admin_type": "", - "companies": "Cambridge Consultants Ltd" - }, - "457": { - "abstract_short": "The talk will go over implementing a Shazam-style sound recogniser using DSP techniques and some fantastic libraries. It will cover implementation, challenges and further steps. The project is still a work in progress and the code is [available on GitHub][1]. It was inspired by the [Over-the-Air Audio Identification talk][2] at FOSDEM 2016.\r\n\r\n [1]: https://github.com/notexactlyawe/abracadabra\r\n [2]: https://fosdem.org/2016/schedule/event/audio_identification/\r\n", - "sub_title": "", - "timerange": "2016-07-18 16:30:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@notexactlyawe", - "id": 457, - "speakers": "Cameron Macleod", - "title": "Implementing a Sound Identifier in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Case Study", - "failures/mistakes", - "Open-Source", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Databases" - ], - "abstract_long": [ - "The talk will go over the journey of implementing a Shazam-style sound recogniser using DSP techniques and some fantastic libraries. It will cover implementation, challenges and further steps. The project is still a work in progress at the time of proposal and the code is [available on GitHub][1]. It was inspired by the [Over-the-Air Audio Identification talk][2] at FOSDEM 2016.\r\n\r\nThe basic structure of the project consists a classifier that fingerprints audio and stores it in a searchable form and a recogniser that fingerprints a smaller chunk of audio and then searches the stored records to find the most suitable fit for it. The recogniser will be exposed as an API to allow for different front-ends.\r\n\r\nI will aim to introduce both the field of DSP and concepts behind applications like Shazam in a simple easy-to-understand manner. The audience will not need any prior experience in anything except Python.\r\n\r\n [1]: https://github.com/notexactlyawe/abracadabra\r\n [2]: https://fosdem.org/2016/schedule/event/audio_identification/" - ], - "abstract_extra": "As stated in the abstract, the project is still very much a work in progress and a lot has to be done. As such, the focus of the talk may turn more towards lessons learned as opposed to actual implementation closer to the time if the project turns out less successful than hoped.", - "tag_categories": [ - "Case Study", - "Best Practice and Use Cases", - "Open Source", - "Data Science", - "Databases" - ], - "emails": "cmacleod170@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/implementing-a-sound-identifier-in-python", - "admin_type": "", - "companies": "Cambridge Consultants Ltd" - }, - "654": { - "abstract_short": "EFL (Embedded Flexible Language), a deterministic parallel programming tool, may be embedded in any host language. Two versions of the EFL pre-compiler for Python were implemented. One translates EFL blocks into Python's Multiprocessing code, and the other one into DTM/MPI4PY code. EFL implementations of Parallel Programming Design Patterns will be shown, generated parallel code compared, and differences discussed. Visit flexcomp.jct.ac.il for further information. \r\n", - "sub_title": "", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@, @", - "id": 654, - "speakers": "Moshe Goldstein, david dayan", - "title": "Implementing Parallel Programming Design Patterns using EFL for Python", - "have_tickets": [ - true, - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Tooling", - "Multi-Processing", - "Development", - "Programming", - "Compiler and Interpreters" - ], - "abstract_long": [ - "Multi-core CPUs are abundant and utilizing them effectively requires programmers to parallelize CPU-intensive code. To facilitate this, we have developed EFL (Embedded Flexible Language), a deterministic parallel programming tool. \r\nThe parallel parts of a program are written as EFL-blocks, which are embedded into a sequential host language program. The sequential parts of the program are written in the host language, outside the EFL blocks. \r\nEFL may be embedded in any host language by writing an appropriate EFL pre-compiler. At the moment, we implemented two versions of the EFL pre-compiler. Both pre-compilers translate EFL blocks into parallel Python code - one of them generates parallel code based on Python's Multiprocessing module, and the other one generates parallel code based on the DTM/MPI4PY Python module.\r\nWe will present the principles upon which EFL is built. We will show the implementation of Parallel Programming Design Patterns using EFL's parallel programming constructs (such as parallel assignments, parallel for-loops, etc.). Using our two EFL pre-compilers we will show their translation to Python parallel code according to the Multiprocessing module as well as the DTM/MPI4PY module. The differences between code versions produced by the EFL pre-compilers will be discussed. \r\nFor further information about the EFL project and our Flexible Computation Research Laboratory, visit http://flexcomp.jct.ac.il\r\n", - "", - "", - "" - ], - "abstract_extra": "A poster titled \"EFL: An Embedded Language for Safe and Efficient Parallel Execution\" was presented at EuroPython 2014, Berlin, Germany.\r\nA poster titled \"Parallel Programming Constructs and Techniques using and Embedded Flexible Language (EFL) for Python\" was presented at EuroPython 2015, Bilbao, The Basque Country, Spain. \r\nA talk titled \"EFL: An Embedded Language for Safe and Efficient Parallel Execution\" was presented at the Intel Compiler, Architecture and Tools Conference (CATC), Haifa, Israel, 2014.\r\nA paper titled \"Flexible Algorithms: Enabling Well-defined Order-Independet Execution with an Imperative Programming Style\" was presented at the ECBS-EERC 2015, Brno, The Czech Republic, 2015 (available at pp 75-82 of the proceedings of the conference).\r\nA paper title \"EFL: Implementing and Testing an Embedded Language Which Provides Safe and Efficient Parallel Execution \" was presented at the ECBS-EERC 2015, Brno, The Czech Republic, 2015 (available at pp 83-90 of the proceedings of the conference). \r\nFor further material, including unpublished papers and technical reports, visit the website of our research lab. Also, from there you will be able to download the installation kit of our two EFL pre-compilers. \r\n", - "tag_categories": [ - "Programming", - "Programming", - "Programming", - "Programming", - "Python" - ], - "emails": "goldmosh@g.jct.ac.il, dayandav@g.jct.ac.il", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/implementing-parallel-programming-design-patterns-using-efl-for-python", - "admin_type": "", - "companies": ", Jerusalem College of Technology, HebrewUniversity" - }, - "628": { - "abstract_short": "One of the biggest differences, in the Python community, is its effort to improve diversity. I was fortunate enough to take part in nine different PyCon's. I always took note of experiences on how to improve diversity, that could be useful and replicable in my local community and would like to share at EuroPython. There are other reports, that also I would like to share, which are only beautiful stories of how Python reaches the most distant people and places you may never have imagined.", - "sub_title": "Nine Different PyCon's in Two Year's: Lessons on Diversity that I Learned", - "timerange": "2016-07-20 16:15:00, 2016-07-20 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@fmasanori, @pk_pacheco, @KatiaNakamura", - "id": 628, - "speakers": "Fernando Masanori Ashikaga, Paola Katherine Pacheco, K\u00e1tia Nakamura", - "title": "import community", - "have_tickets": [ - true, - true, - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Community" - ], - "abstract_long": [ - "One of the biggest differences, in the Python community, in relation to other communities, is its effort to improve diversity. There is even a Diversity Statement at PSF: \"We have created this diversity statement because we believe that a diverse Python community is stronger and more vibrant. A diverse community where people treat each other with respect has more potential contributors and more sources for ideas.\" In last two years I was fortunate enough to take part in nine PyCon's in ten different countries: Namibia, UK, Japan, Brazil, Italy, Argentina, Uruguay, Germany, Canada and Spain. Some were not national conferences, but were EuroPython or PyConUS. I was coach in three Django Girls at PyCon Namibia, Argentina and Brazil. I always took note of experiences on how to improve diversity, that could be useful and replicable in my local community and would like to share at EuroPython. There are other reports that I also would like to share, which are only beautiful stories of how Python reaches the most distant people and places you may never have imagined.", - "", - "", - "" - ], - "abstract_extra": "-", - "tag_categories": [ - "Community" - ], - "emails": "fmasanori@gmail.com, pkcpweb@gmail.com, katia@kiwi.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/import-community", - "admin_type": "", - "companies": "FATEC S\u00e3o Jos\u00e9 dos Campos, Hadrons, Kiwi.com" - }, - "497": { - "abstract_short": "In this talk I will show how to build your own infrastructure-as-a-service on the example of \"Postgraas\", an open source postgres-as-a-service I wrote in python just for fun. With a simple curl request you can get your very own database, just like RDS on AWS. You will learn how easy it is to create such a remarkably useful service with hardly three hundred lines of flask, docker and some glue-code, a project for a rainy Sunday.", - "sub_title": "or how to write your very own database-as-a-service", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@sebineubauer", - "id": 497, - "speakers": "Sebastian Neubauer", - "title": "Infrastructure as Code: \"pip install\" your environment", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "PostgreSQL", - "Deployment/Continuous Integration and Delivery", - "Infrastructure", - "Docker", - "DevOps general" - ], - "abstract_long": [ - "Continuous Delivery, DevOps, Lean - all those movements have one thing in common: extending the process of software development along the whole value stream, ultimately to the customer. This simple requirement causes surprising serious difficulties on traditional operations workflows. All of a sudden, a single manual ticket to the operations team is a critical blocker in the delivery process. Therefore all parts of the infrastructure, storage, databases, identities, compute resources must be provided as a self service for the developers in order to be able to achieve this goal. What one may call \"the cloud\" (including self hosted ones like open stack) is such a successful model not least because they offer exactly this \"ticket-less\" self-service. But why should we wait for \"the cloud\" to offer what we really need? We are python developers, we are hackers!\r\n\r\nIn this talk I will show how to build your own infrastructure-as-a-service on the example of \"Postgraas\", an open source postgres-as-a-service I wrote in python just for fun. With a simple curl request you can get your very own database, just like RDS on AWS. You will learn how easy it is to create such a remarkably useful service with hardly three hundred lines of flask, docker and some glue-code, a project for a rainy Sunday. After the talk you will know how to amaze your colleagues by eliminating an annoying ticket or manual workflow with a simple flask app and some creativity.", - "", - "", - "" - ], - "abstract_extra": "My talk on last years EP:\r\nhttps://ep2015.europython.eu/conference/talks/a-pythonic-approach-to-continuous-delivery\r\n\r\nAnd maybe it wasn't even that bad, at least according to a review of that talk:\r\nhttps://tesarek.me/europython-2015\r\n\r\n> A Pythonic Approach to Continuous Delivery.\r\n> Sebastian presented CI and CD as one process of delivering value to the customer. He showed the whole process from beginning (the idea of a feature) to the end (the customer using the feature). He presented lots of useful tools that you can use but the basic idea is to start with the most lightweight but fully functional version and build on it.\r\n> We should automate as much as possible and continuously improve our automated processes.\r\n> This was the best presentation of Ci&CD I've ever seen. As to the topic, it was very explanatory and contained lots of useful tips and tricks.\r\n\r\n", - "tag_categories": [ - "Databases", - "DevOps", - "DevOps", - "DevOps", - "DevOps" - ], - "emails": "sebastian.neubauer@blue-yonder.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/infrastructure-as-code-pip-install-your-environment", - "admin_type": "", - "companies": "Blue Yonder GmbH" - }, - "513": { - "abstract_short": "This talk covers the distributed architecture that Skyscanner built to solve the data challenges involved in the generation of images of all hotels in the world. Putting together a distributed system in Python, based on queues, surfing on the AWS Cloud.", - "sub_title": "How Skyscanner hotels built its image processing pipeline.", - "timerange": "2016-07-19 16:15:00, 2016-07-19 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@alevinval", - "id": 513, - "speakers": "Alex Vinyals", - "title": "Ingesting 35 million hotel images with python in the cloud.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "System Architecture", - "Big Data", - "Use Case", - "Distributed Systems" - ], - "abstract_long": [ - "This talk covers the distributed architecture that Skyscanner built to solve the data challenges involved in the generation of images of all hotels in the world. Putting together a distributed system in Python, based on queues, surfing on the AWS Cloud.\r\n\r\nOur goal? To build an incremental image processing pipeline that discards poor quality and duplicated images, scaling the final images to several sizes to optimise for mobile devices.\r\n\r\nAmong the challenges:\r\n\r\n1. Ingest all the input images that partners provide us.\r\n2. Detect and remove bad quality + duplicated images from reaching production.\r\n3. Resize all the generated images to optimise for mobile devices.\r\n4. Ensure the process scales and behaves in an incremental way.\r\n5. Ensure the whole process fits in a time constrained window.\r\n\r\nAmong the tools we used? Pillow, ImageHash, Kombu and Boto.\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "Any feedback welcome if you think something is missing or could be improved. I can also answer any question you guys have.\r\n\r\nThanks.", - "tag_categories": [ - "DevOps", - "Data Science", - "Best Practice and Use Cases", - "DevOps" - ], - "emails": "alexandre.vinyals@skyscanner.net", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/ingesting-35-million-hotel-images-with-python-in-the-cloud", - "admin_type": "", - "companies": "Skyscanner" - }, - "739": { - "abstract_short": " \u201cNotebooks come alive when interactive widgets are used\u201d, but programming complex applications that rely entirely on widgets may end up being a painful and frustrating process. Shaolin is a new python project that aims to provide a framework for building interactive complex dashboards.", - "sub_title": "Introducing a new framework for interactive dashboards programming.", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@miau_db", - "id": 739, - "speakers": "Guillem Duran", - "title": "Interactive data Kung Fu with Shaolin", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Visualization", - "Jupyter/iPython Notebook", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Analytics" - ], - "abstract_long": [ - "You can read in The Project Jupyter web page that \u201cNotebooks come alive when interactive widgets are used\u201d, but programming complex applications that rely entirely on widgets may end up being a painful and frustrating process. Shaolin is a new python project that aims to provide a framework for building interactive complex dashboards.\r\n\r\nShaolin provides all the basic tools for building complex interactive data analysis applications using the pydata ecosystem. Arbitrary code can be embedded into a Dashboard -a class that works as a \u201cblack box\u201d that allows to easily define a GUI based on the ipywidgets package- to process any data in any form and then let you interactively define how to plot it using automatically generated widgets. Hierarchical combinations of Dashboards can be arranged then to build more complex applications.\r\n\r\nThe talk is divided in two sections. First one introduce the framework and its main features:\r\n\r\n - Custom syntax for defining widgets in a simplified way.\r\n - Dashboards: Syntax rules and capabilities.\r\n - Combining Dashboards to build complex applications.\r\n - Interactive plot creation.\r\n - Integration with pydata.\r\n\r\nSecond section will show how this framework can be used to analyse real data using Dashboards without writing any code. I will show how to transform market data time series into graphs using pandas and networkx, then plot it interactively using bokeh and Vpython.\r\n\r\n" - ], - "abstract_extra": "I think that here you will be able to find all the information related to my framework. https://github.com/HCsoft-RD/shaolin A detailed description of its main features can be found in the examples folder. The notebooks you will find there are self-explanatory.\r\n\r\n This is currently in alpha version. Everything there is online works, but I'm still testing like half of the Dashboards I have programmed, before uploading them. Expect thie beta version to be finished by the date of the talk.\r\n\r\n\r\nThere are no recordings of the talks I have already given, but you can find some info about the R&D work we are doing at HCSoft in this blog http://entropicai.blogspot.com.es/", - "tag_categories": [ - "Data Science", - "Python", - "Data Science", - "Data Science" - ], - "emails": "guillem.db@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/interactive-data-kung-fu-with-shaolin", - "admin_type": "", - "companies": "HCSoft programaci\u00f3n S.L." - }, - "450": { - "abstract_short": "aiohttp is asynchronous HTTP client and server library built on top of asyncio.\r\n\r\nThe intro describes basic programming patterns for both client\r\nand server API as well as more advanced techniques. \r\n\r\nThe main target of the talk is displaying an alternative to\r\npeople who want to avoid classic WSGI\r\nframeworks (Django/Flask/Pyramid etc) limitations but found\r\nTwisted and Tornado too cumbersome.", - "sub_title": "asyncio-based web programming fundamentals in 30 minutes", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@andrew_svetlov", - "id": 450, - "speakers": "Andrew Svetlov", - "title": "Introduction to aiohttp", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python 3", - "Best Practice", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "HTTP" - ], - "abstract_long": [ - "aiohttp is asynchronous HTTP client and server library built on top of asyncio.\r\n\r\nThe library allows to write user friendly code which looks like well-known\r\nlinear one (requests library for client and Django/Flask/Pyramid for\r\nserver) but utilizes the power of non-blocking sockets and\r\nsupports websockets natively.\r\n\r\nThe intro describes basic programming patterns for both client\r\nand server API as well as more advanced techniques. \r\nTips and tricks for writing asyncio-based code are included as well.\r\n\r\nThe main target of the talk is displaying an alternative to\r\npeople who want to avoid classic WSGI\r\nframeworks (Django/Flask/Pyramid etc) limitations but found\r\nTwisted and Tornado too cumbersome.\r\n\r\nDive into aiohttp usage with the library author." - ], - "abstract_extra": "I made similar talks in Caribbean PyCon and PyCon Hong Kong plus several times on several Russian-speaking conferences.", - "tag_categories": [ - "Python", - "Best Practice and Use Cases", - "Web", - "Web" - ], - "emails": "andrew.svetlov@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/introduction-to-aiohttp", - "admin_type": "", - "companies": "DataRobot" - }, - "427": { - "abstract_short": "Beginning programmers or Python beginners may find it overwhelming to implement a machine learning algorithm. Increasingly machine learning is becoming more applicable to many areas. This talk introduces key concepts and ideas and uses Python to build a basic classifier - a common type of machine learning problem. Providing some jargon to help those that may be self-educated or currently learning ", - "sub_title": "A novice's inquiry into classification.", - "timerange": "2016-07-18 16:00:00, 2016-07-18 16:30:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@loooorenanicole", - "id": 427, - "speakers": "Lorena Mesa", - "title": "Is that spam in my ham?", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Education", - "Beginners", - "Case Study", - "Machine-Learning" - ], - "abstract_long": [ - "Supervised learning, machine learning, classifiers, big data! What in the world are all of these things? As a beginning programmer the questions described as \"machine learning\" questions can be mystifying at best.\r\n\r\nIn this talk I will define the scope of a machine learning problem, identifying an email as ham or spam, from the perspective of a beginner (non master of all things \"machine learning\") and show how Python can help us simply learn how to classify a piece of email.\r\n\r\nTo begin we must ask, what is spam? How do I know it \"when I see it\"? From previous experience of course! We will provide human labeled examples of spam to our model for it to understand the likelihood of spam or ham. This approach, using examples and data we already know to determine the most likely label for a new example, uses the Naive Bayes classifier.\r\n\r\nOur model will look at the words in the body of an email, finding the frequency of words in both spam and ham emails and the frequency of spam and ham. Once we know the prior likelihood of spam and what makes something spam, we can try applying a label to a new example.\r\n\r\nThrough this exercise we will see at a basic level what types of questions machine learning asks, learn to model \"learning\" with Python, and understand how learning can be measured." - ], - "abstract_extra": "This topic arose from a talk about a Naive Bayes white paper I did in Chicago (Papers We Love Chicago - May 2015 http://www.meetup.com/Papers-We-Love-Chicago/events/222024292/) that discussed the efficacy of Naive Bayes as well as what types of problems Naive Bayes performs well on. The learning curve was steep when reading this white paper, it was heavy on math and jargon for those that are not from the machine learning world. In fact I am a policy analyst who turned programmer just over two years ago (at the time of PyCon 2016). Most of my learning is self-taught or self-guided thus I find it important to be curious and use that curiosity to provide content in accessible formats to all.\r\n\r\nThis talk is not meant to be an exhaustive understanding of Naive Bayes but a focused talk on what machine learning questions look like and how Python can answer it.\r\n\r\nPast speaking experience:\r\n\r\nI performed this talk at PyOhio 2015 (http://www.pyvideo.org/video/3690/is-that-spam-in-my-ham-a-novices-inquiry-into-c) and received a good amount of feedback as well as additional questions to help me better direct the talk. \r\n\r\nI've taught quite a bit with the Girl Develop It Chicago chapter and as an original (and current) co-organizer and co-founder of PyLadies Chicago I've taught several of our workshops. For a listing of the workshops I've taught and the talks I've given can be found at - http://lorenamesa.com/pages/speaking.html. \r\n\r\nI spoke at PyTennessee in Feb 2016 on a similar beginner data collection and modeling exercise with some basic machine learning analysis. The talk had amazing feedback and I am now building out smaller workshops around it. I find that many beginner programmers have an overwhelming fear of trying to take on such topics and think that this would be a great talk for beginners to start learning.\r\n", - "tag_categories": [ - "Educational", - "Educational", - "Case Study", - "Data Science" - ], - "emails": "me@lorenamesa.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/is-that-spam-in-my-ham", - "admin_type": "", - "companies": "Sprout Social, Inc." - }, - "539": { - "abstract_short": "This talk shows the Python Descriptors, detailing their behaviour with a detailed practical example, so we can understand the power and flexibility they give. As a bonus track, class decorators are explained.", - "sub_title": "Get to know in the intimacy one of the most powerful and elegant corners of Python: Descriptors!", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@facundobatista", - "id": 539, - "speakers": "Facundo Batista", - "title": "It's not magic: descriptors exposed", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Python general" - ], - "abstract_long": [ - "This talk presents, using a detailed practical example, the Python Descriptos.\r\n\r\nThe behaviour of descriptors mechanisms is detailed, showing their power and flexibility.\r\n\r\nFinally, as a bonus track and to complete the used practical example, class descriptors are explained.\r\n\r\n" - ], - "abstract_extra": "I gave this talk in last PyCon Argentina, the result was awesome.\r\n\r\nAlso note that I created (and gave) this talk together with Joaquin Sorianello, but I can give it myself without any problem.", - "tag_categories": [ - "Python" - ], - "emails": "facundobatista@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/its-not-magic-descriptors-exposed", - "admin_type": "", - "companies": "Canonical" - }, - "545": { - "abstract_short": "There should be something for everyone in this whistle\u2013stop tour of iteration in Python setting off from `for`\u2013loops, and riding cross\u2013country to multiplexing coroutines!\r\n\r\nSee and hear the amazing sights and sounds of list comprehensions, and generators. Take in the amazing vistas from `itertools`, and be amazed at the magnificent `yield`!", - "sub_title": "A whistle\u2013stop tour of iteration in Python", - "timerange": "2016-07-22 16:15:00, 2016-07-22 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@sneeu", - "id": 545, - "speakers": "John Sutherland", - "title": "Iteration, iteration, iteration", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Beginners", - "Python general", - "Programming", - "Functional Programming" - ], - "abstract_long": [ - "There should be something for everyone in this whistle\u2013stop tour of iteration in Python setting off from `for`\u2013loops, and riding cross\u2013country to multiplexing coroutines!\r\n\r\nSee and hear the amazing sights and sounds of list comprehensions, and generators. Take in the amazing vistas from `itertools`, and be amazed at the magnificent `yield`!\r\n\r\nWe\u2019ll take detours to higher\u2013order functions, closures, and decorators. And cover the FP inspired builtins `map`, `filter`, and `reduce`, as well as the epitome of Pythonic programming, `enumerate`." - ], - "abstract_extra": "This talk was given at the \u201cPython Edinburgh Mini Conference\u201d in 2011 (http://sneeu.com/talks/pemc-2011/iteration/), but my plan is to completely rewrite the talk from scratch. Examples will be in Python 3.", - "tag_categories": [ - "Educational", - "Python", - "Programming", - "Programming" - ], - "emails": "john@sneeu.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/iteration-iteration-iteration", - "admin_type": "", - "companies": "FanDuel" - }, - "423": { - "abstract_short": "Sure you can do a chunk of scientific exploration and stuff in Jupyter in your choice of language supplemented with visuals and that's already awesome !\r\n\r\nBut let's head off the beaten track a little to look at other uses, especially command-line.\r\n\r\nWe'll look at some alternate uses of Jupyter ...\r\n", - "sub_title": "Sure you can do science, data analysis - but also CLI, tutorials, cheat sheats, blog, presentations", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@mjbright", - "id": 423, - "speakers": "Mike BRIGHT", - "title": "Jupyter for everything else", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Visualization", - "Use Case", - "Jupyter/iPython Notebook", - "Docker", - "Command-Line" - ], - "abstract_long": [ - "Sure you can do a chunk of scientific exploration and stuff in Jupyter in your choice of language supplemented with visuals and that's already awesome !\r\n\r\nBut let's head off the beaten track a little to look at other uses, especially command-line.\r\n\r\nWe'll look at some alternate uses of Jupyter ...\r\n\r\n - Write command-line tutorials, cheat sheets in an easy to maintain format.\r\n - Perform visualization tasks for command-line tools\r\n - Write blog posts\r\n - Create interactive presentations (thanks Damian !)\r\n - Publish interactive books, articles and blog posts\r\n - HTML/js/css experimentation\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "**45 min version**\r\n\r\nI regularly use Jupyter to document my own creations\r\n\r\n - Command-line cheat sheets\r\n - Presentations via RISE\r\n - \"Command-line\" demos of any utility\r\n - I do Docker demos this way\r\n - I do Docker Build labs this way\r\n - PyMongo\r\n - HTML/JS/CSS experiments\r\n\r\nIt ain't rocket science, but it works for me .. .and maybe for you too.\r\n\r\nHere's my repo of past workshops.\r\n https://github.com/mjbright/jupyter_notebooks/\r\n\r\nObviously all talk (and lab) materials will be available on github as well as on your site.\r\n\r\n", - "tag_categories": [ - "Data Science", - "Best Practice and Use Cases", - "Python", - "DevOps", - "Programming" - ], - "emails": "europython@mjbright.net", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/jupyter-for-everything-else", - "admin_type": "", - "companies": "HPE" - }, - "662": { - "abstract_short": "We are using Python to help the National Grid in the UK to balance electricity production and usage. We do this by installing Python powered devices at customers sites that allow us to monitor and set control criteria to automatically turn on and off power consuming and producing devices when there is a mismatch between electricity supply and demand. \r\nIn this talk we will be talking about how and why we have used Python, as well as where in our system we would like to use Python.", - "sub_title": "Balancing the National Grid with Python and IoT", - "timerange": "2016-07-19 16:15:00, 2016-07-19 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 662, - "speakers": "Scott Reeve", - "title": "Keeping the Lights on with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Hardware/IoT Track", - "Case Study", - "Internet of Things (IoT)" - ], - "abstract_long": [ - "We are using Python to help the National Grid in the UK to balance electricity production and usage. We do this by installing Python powered devices at customers sites that allow us to monitor and set control criteria to automatically turn on and off power consuming and producing devices when there is a mismatch between electricity supply and demand. These devices talk to our Python powered cloud based system using the 3g network, giving us near real-time monitoring of our customers assets.\r\nOur entire infrastructure is written in Python, from our billing systems, data analytics systems and customer portal all the way through to our on site industrial system interfaces. In this talk we will be talking about how and why we have used Python, where we have had problems, as well as where in our system we would like to use Python and why we cannot. We will also be talking about what we are going to do next, moving our system from near real time monitoring to near real-time control, using Python for both system modelling and control. We will discuss how we are using Python to creating a system that monitors the balance between electricity supply and demand many times per second and is able to provide a corrective control based on the sum of the output of a dynamic set of our customer sites and the challenges that presents." - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "Case Study", - "Hardware" - ], - "emails": "scott.reeve@limejump.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/keeping-the-lights-on-with-python", - "admin_type": "", - "companies": "Limejump Ltd" - }, - "488": { - "abstract_short": "El m\u00f3dulo itertools es una de las piedras angulares de la programaci\u00f3n avanzada en Python. Esta charla proporciona consejos pr\u00e1cticos del \u00e1lgebra de iteradores que pueden aplicarse de forma inmediata. Descubrir el m\u00f3dulo itertools supone arrancar el velo de nuestros ojos, y una vez usadas funciones como `repeat()`, `takewhile()`, `dropwhile()` o `product()` no hay marcha atr\u00e1s \u2014 es imposible volver al mundo de los meros mortales donde las soluciones son m\u00e1s complejas y necesitan m\u00e1s memoria.", - "sub_title": "Aumentando la letalidad y elegancia de nuestro c\u00f3digo gracias al m\u00f3dulo itertools.", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@pyctor", - "id": 488, - "speakers": "V\u00edctor Terr\u00f3n", - "title": "Kung Fu al amanecer con itertools", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Clean Code", - "Best Practice", - "Functional Programming" - ], - "abstract_long": [ - "El m\u00f3dulo itertools es una de las piedras angulares de la programaci\u00f3n avanzada en Python. Parte de la biblioteca est\u00e1ndar, nos ofrece un \u00e1lgebra de iteradores que permite encadenar abstracciones de forma elegante, haciendo posibles soluciones sencillas a la par que m\u00e1s eficientes en su consumo de memoria.\r\n\r\nEl objetivo de esta charla es el de, ante todo, proporcionar consejos y lecciones claras que puedan aplicarse de forma inmediata. Ilustr\u00e1ndolo con numerosos ejemplos, los asistentes abandonar\u00e1n la charla habiendo asimilado como m\u00ednimo varios conceptos que mejorar\u00e1n indiscutible e irremediablemente su c\u00f3digo. El \u00e9nfasis se har\u00e1 en mostrar casos espec\u00edficos en los que una soluci\u00f3n tradicional puede ser mejorada una y otra vez con funciones del m\u00f3dulo itertools. \r\n\r\nSupongamos, por ejemplo, que queremos alternar indefinidamente entre dos valores: -1 y 1. El reci\u00e9n iniciado utilizar\u00eda una variable cuyo valor ir\u00eda modificando a cada paso y el usuario medio quiz\u00e1s optar\u00eda por un generador infinito. Ambas soluciones dignas y honorables, pero que palidecen ante la maestr\u00eda del artista marcial que que tan s\u00f3lo necesita `itertools.cycle()`. Porque el m\u00f3dulo itertools es as\u00ed: una vez ca\u00eddo el velo de nuestros ojos y descubiertas funciones como `repeat()`, `takewhile()`, `dropwhile()` o `product()`, no hay marcha atr\u00e1s. En esta charla vamos a aprender a reconocer cu\u00e1ndo pueden ser usadas, proporcion\u00e1ndonos en una \u00fanica l\u00ednea lo que para los meros mortales supone mucho m\u00e1s trabajo." - ], - "abstract_extra": "Tengo una enemistad personal con los ponentes aburridos, as\u00ed que me tomo muy en serio que mis charlas sean amenas y todo lo divertidas posibles \u2014 y por el momento, cruzo los dedos, parece que lo he logrado. Mis charlas en las PyConES se encuentran todos los a\u00f1os entre las que m\u00e1s reproducciones tienen en YouTube, si es que eso significa algo:\r\n\r\n- 2013: [https://www.youtube.com/watch?v=QZiX75rbkuI][1]\r\n- 2014: [https://www.youtube.com/watch?v=MgRdg3s8n3E][2]\r\n- 2015: [https://www.youtube.com/watch?v=8TDZsaATmqQ][3] [charla de clausura]\r\n\r\nEn ingl\u00e9s tan s\u00f3lo he dado una charla hasta la fecha, en 2015:\r\n[https://www.youtube.com/watch?v=oSOco7qQujU][4]\r\n\r\n [1]: https://www.youtube.com/watch?v=QZiX75rbkuI\r\n [2]: https://www.youtube.com/watch?v=MgRdg3s8n3E\r\n [3]: https://www.youtube.com/watch?v=8TDZsaATmqQ\r\n [4]: https://www.youtube.com/watch?v=oSOco7qQujU\r\n", - "tag_categories": [ - "Educational", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "quintanar@gmail.com", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/kung-fu-al-amanecer-con-itertools", - "admin_type": "", - "companies": "Google" - }, - "635": { - "abstract_short": "The itertools module is one of the cornerstones of advanced programming in Python. This talk offers practical advice about iterator algebra that can be put into practice immediately. Discovering the itertools module means taking the veil from our eyes, and once we use functions such as repeat(), takewhile(), dropwhile() or product(), there is no return \u2014 it is impossible to come back to the world of the mere mortals, where solutions are more complex and need more memory.", - "sub_title": "Increasing the lethality and elegance of our code with the itertools module.", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@pyctor", - "id": 635, - "speakers": "V\u00edctor Terr\u00f3n", - "title": "Kung Fu at Dawn with Itertools", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Clean Code", - "Best Practice", - "Functional Programming" - ], - "abstract_long": [ - "The itertools module is one of the cornerstones of advanced programming in Python. Part of the standard library, it provides an iterator algebra that allows us to elegantly chain abstractions, enabling solutions that are both simpler and more memory efficient.\r\n\r\nThe goal of this talk is to offer practical advice and clear lessons that can be immediately put into practice. Illustrating it with numerous examples, attendees will leave having assimilated at least several concepts that will improve their code undeniably and irremediably. Emphasis will be on showing specific cases where a traditional solution can be overhauled over and over with functions from the itertools module.\r\n\r\nLet\u2019s say, for example, that we want to alternate indefinitely between two values: -1 and 1. The novice would use a variable, updating its value at each step, and the average user would maybe opt for an endless generator. Both are worthy and honorable solutions, but they pale before the mastery of the martial artist who only needs itertools.cycle(). Because that is the nature of the itertools module: once the veil falls from our eyes and we come across functions such as repeat(), takewhile(), dropwhile() or product(), there is no return. In this talk we will learn to identify when they can be used, accomplishing with a single line of code what for the mere mortals takes much more effort." - ], - "abstract_extra": "I have a personal feud with boring speakers, so I do my best trying to make my talks as entertaining and funny as possible \u2014 and so far, I am crossing my fingers, it seems that I have succeeded. My talks at PyCon Spain are every year among the most viewed on YouTube, if that means anything:\r\n\r\n- 2013: [https://www.youtube.com/watch?v=QZiX75rbkuI][1] [Spanish]\r\n- 2014: [https://www.youtube.com/watch?v=MgRdg3s8n3E][2] [Spanish]\r\n- 2015: [https://www.youtube.com/watch?v=8TDZsaATmqQ][3] [closing keynote, Spanish]\r\n\r\nI have only given one talk in English so far, in 2015:\r\n[https://www.youtube.com/watch?v=oSOco7qQujU][4]\r\n\r\n [1]: https://www.youtube.com/watch?v=QZiX75rbkuI\r\n [2]: https://www.youtube.com/watch?v=MgRdg3s8n3E\r\n [3]: https://www.youtube.com/watch?v=8TDZsaATmqQ\r\n [4]: https://www.youtube.com/watch?v=oSOco7qQujU\r\n", - "tag_categories": [ - "Educational", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "quintanar@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/kung-fu-at-dawn-with-itertools", - "admin_type": "", - "companies": "Google" - }, - "588": { - "abstract_short": "Programming is one of the most important 21st-century skills and tons of different online and offline resources can help you to master it.\r\n\r\nOn the other hand, playing games is really effective way for us to learn and it's also the most fun.\r\n\r\nBut is it possible to learn real programming language like Python by playing a game? \r\n\r\nIn this talk I'll show you some projects that allow you to achieve that. I also want to inspire you to help such projects and to suggest ideas how to do that.", - "sub_title": "", - "timerange": "2016-07-18 16:30:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 588, - "speakers": "Liana Bakradze", - "title": "Learn Python The Fun Way", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Educational Track" - ], - "abstract_long": [ - "Programming is one of the most important 21st-century skills. It doesn't only provide promising career opportunities but teaches how to reason logically, systematically and creatively. \r\n\r\nCode readability, rich standard library, straightforward syntax and other features make Python a great language for teaching beginners how to program. Python community is very supportive and friendly to newcomers and does awesome work to make Python available to everyone. Tons of different online and offline resources can help you to master Python programming. Problem solving is the classical way of learning how to code. But it can be boring for some people, especially for kids.\r\n\r\nOn the other hand, playing games is really effective way for us to learn and it's also the most fun. You can find different games designed to teach basics of programming, but most of them use special visual environments and don't teach real text based languages. \r\n\r\nBut is it possible to learn programming language like Python by playing a game? \r\n\r\nIn this talk I'll show you a few projects for different age and levels that allow you to achieve that. I'll pay attention on methods that are used to teach programming.\r\n\r\nI also want to inspire you to help such projects and to suggest ideas how to do that." - ], - "abstract_extra": "", - "tag_categories": [ - "Educational", - ">>> Suggested Track" - ], - "emails": "liana.bakradze@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/learn-python-the-fun-way", - "admin_type": "", - "companies": "JetBrains" - }, - "716": { - "abstract_short": "What we learned along the way - processes, organization, technology and people - from 0 to 11 million students, 40 thousand courses and 20 thousand teachers.", - "sub_title": "", - "timerange": "2016-07-20 16:15:00, 2016-07-20 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@rbanffy", - "id": 716, - "speakers": "Ricardo B\u00e1nffy", - "title": "Lessons Learned after 190 Million Lessons Served", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Management", - "Django", - "Scaling" - ], - "abstract_long": [ - "What we learned along the way - processes, organization, technology and people - from 0 to 11 million students, 40 thousand courses and 20 thousand teachers.", - "", - "", - "" - ], - "abstract_extra": "-", - "tag_categories": [ - "Development Methods", - "Application Frameworks", - "DevOps" - ], - "emails": "rbanffy@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/lessons-learned-after-190-million-lessons-served", - "admin_type": "", - "companies": "Udemy" - }, - "523": { - "abstract_short": "Web APIs that are easier to understand, develop, test and use, is a popular subject. \"An API is only as good as its documentation\". We decided to play with this proverb and leverage the power of documentation. We propose to use the code documentation and the type system to provide lots of free features: explorable APIs, better error messages, automatic testing. \r\n\r\nPython is perfect to explore code and documentation dynamically. We'll demonstrate what we came up to and the lessons we've learned.", - "sub_title": "The day you'll prefer writing documentation over code: automatic UI/API and tests from documentation", - "timerange": "2016-07-21 16:15:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 523, - "speakers": "Rudy Sicard", - "title": "Leveraging documentation power for better web APIs", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Django", - "Web Servers and MicroFWs (Flask/Tornado/Nginx/...)", - "APIs" - ], - "abstract_long": [ - "'Rich' web APIs that are easier to understand, develop, test and use, is a popular subject. There are a lot of new specification languages (e.g. swagger, apiblueprint ...) and libraries (django-rest-framework, drf ...) that provide features in this direction. Following the old proverb \"An API is only as good as its documentation\", we decided to play with these ideas and focus on leveraging the power of documentation. We propose to use the code documentation and the type system to provide: \r\n - browsable APIs, that are easy to interact with and visualize, reducing the need to provide custom UIs \r\n - verification of inputs/outputs along with precise error message if needed \r\n - automatic [de]-serialization of inputs/ouputs outside of the domain code\r\n - smart exception handling, e.g. exceptions that are not documented are automatically converted into internal errors\r\n - automatic testing, e.g. input, output and result including exceptions are tested ensuring the code works and the documentation is up-to-date. \r\n\r\n\r\nThis use case is one of the rare situation where introspection is desirable and unavoidable. And Python is a good language to explore/exploit code and documentation dynamically. The perfect excuse to spend some time on meta coding a first implementation while being at work. We'll demonstrate what we came up to, the advantages and limitations compared to other approaches. And we'll share the lessons we learned from this experiment.\r\n\r\n" - ], - "abstract_extra": "In my previous compagny I worked (design & implementation) on a functional language dedicated to web programming. I wrote one of the blog entry of the company.\r\nhttp://blog.opalang.org/2012/09/programming-tools-ux-when-statically.html\r\n\r\nI have written two articles in machine learning journals:\r\n* Rudy Sicard, T. Arti\u00e8res, E. Petit, Learning iteratively a classifier using the Bayesian Model Averaging Principle, Pattern Recognition, http://www.sciencedirect.com/science/article/pii/S0031320308004895\r\n* Rudy Sicard, Thierry Arti\u00e8res, Modelling sequences using pairwise relational features, to appear in Pattern Recognition, http://www.sciencedirect.com/science/article/pii/S0031320308004895\r\n\r\nand give several speech in machine learning conferences:\r\n* R. Sicard, Th. Arti\u00e8res, E. Petit : \u201cModeling On-line Handwriting Using Pairwise Relational Features\u201d, International Workshop on Frontiers in Handwriting Recognition, La Baule, France, pp. 267-274 (2006)\r\n* R. Sicard, Th. Arti\u00e8res, E. Petit : \u201cMod\u00e8lisation de l\u2019\u00e9crit en ligne \u00e0 l\u2019aide de reseaux bay\u00e9siens et de caract\u00e9ristiques relationnelles\u201d, Colloque International Francophone sur l'Ecrit et le Document (CIFED'06), Fribourg, Suisse (2006)\r\n* R. Sicard, Th. Arti\u00e8res : \u201cPatch Learning for Incremental Classifier Design\u201d, European Conference on Artificial Intelligence (ECAI 2006), Riva del Garda, Italie, pp. 807-808 (2006)\r\n* R. Sicard, Th. Arti\u00e8res : \u201cAn application of bayesian model averaging to histograms\u201d, Grenoble, France (2007)", - "tag_categories": [ - "Application Frameworks", - "Web", - "Web" - ], - "emails": "polux.moon@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/leveraging-documentation-power-for-better-web-apis", - "admin_type": "", - "companies": "Criteo" - }, - "590": { - "abstract_short": "Many times these logs are thrown away or just sit uselessly somewhere on disk. I would like to show you how you can make sense of all that data, how to collect and clean them, store them in a scalable fashion and, finally, explore and search across various systems.", - "sub_title": "Centralised logging for fun and profit.", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@honzakral", - "id": 590, - "speakers": "Honza Kr\u00e1l", - "title": "Log all the things!", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Tooling", - "Infrastructure", - "Operations", - "DevOps general" - ], - "abstract_long": [ - "Centralized logging (and the ELK stack) is proving itself to be a very useful tool in managing a production infrastructure. When combined with other data sources (application logging, business data, ...) it can provide even more insight.\r\n\r\nThis talk is an introduction into the area with some overview of the motivation, tools and techniques that can prove useful. We will show how the open source ELK (Elasticsearch Logstash and Kibana) stack can be used to implement this.\r\n\r\nIt is geared towards people familiar with the DevOps concept that are looking to improve their lives by introducing smarter tools.", - "", - "", - "" - ], - "abstract_extra": "I have spoken at EuroPython before, including last year. This talk is an updated version of my talk from PyCon Australia since I assume there will be minimum overlap in audiences. Video of the talk: https://www.youtube.com/watch?v=i3rH5cU-Uz4", - "tag_categories": [ - "Programming", - "DevOps", - "DevOps", - "DevOps" - ], - "emails": "honza.kral@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/log-all-the-things", - "admin_type": "", - "companies": "Elastic" - }, - "415": { - "abstract_short": "Machine Learning is the next big thing. If you are a dummy in terms of Machine Learning, but want to get started with it... there are options.\r\n\r\nStill, thanks to the Web, Python and OpenSource libraries, we can overcome this situation and do some interesting stuff with Machine Learning.", - "sub_title": "If you're a Machine Learning dummy but are interested in the topic, this is for you.", - "timerange": "2016-07-18 16:30:00, 2016-07-18 17:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 415, - "speakers": "Javier Arias Losada", - "title": "Machine Learning for dummies with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Cython", - "Predictions", - "Deep Learning", - "Open-Source", - "Machine-Learning" - ], - "abstract_long": [ - "Have you heard that Machine Learning is the next big thing?\r\n\r\nAre you a dummy in terms of Machine Learning, and think that is a topic for mathematicians with black-magic skills?\r\n\r\nIf your response to both questions is 'Yes', we are in the same position.\r\n\r\nStill, thanks to the Web, Python and OpenSource libraries, we can overcome this situation and do some interesting stuff with Machine Learning." - ], - "abstract_extra": "I regularly speak at different venues:\r\n- Telefonica Developers conference\r\n- Python and Javascript meetups in Barcelona\r\n- Oscon amsterdam 2015: http://conferences.oreilly.com/oscon/open-source-eu-2015/public/schedule/detail/44008\r\n- NoSQL matters 2013 : https://2013.nosql-matters.org/bcn/index.html%3Fp=2344.html#abstract_266016455\r\n- MediterraneaJS 2015 - http://mediterraneajs.eu/people/javier_arias.html\r\n\r\nSome of my presentations: http://www.slideshare.net/javierarilos\r\n", - "tag_categories": [ - "Python", - "Data Science", - "Data Science", - "Open Source", - "Data Science" - ], - "emails": "javier.arilos@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/machine-learning-for-dummies-with-python", - "admin_type": "", - "companies": "Telefonica I+D" - }, - "642": { - "abstract_short": "In Machine Learning, the power of combining many models have proven to successfully provide better results than single models. \r\n\r\nThe primary goal of the talk is to answer the following questions:\r\n1) Why and How ensembles produce better output?\r\n2) When data scales, what's the impact? What are the trade-offs to consider? \r\n3) Can ensemble models eliminate expert domain knowledge?", - "sub_title": "United we stand, divided we fall", - "timerange": "2016-07-22 14:00:00, 2016-07-22 14:30:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@bargava", - "id": 642, - "speakers": "Bargava Subramanian", - "title": "Machine Learning: Power of Ensembles", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1 [PyData Track]", - "tags": [ - "Predictions", - "Machine-Learning", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Data Science", - "Analytics" - ], - "abstract_long": [ - "It is relatively easy to build a first-cut machine learning model. But what does it take to build a reasonably good model, or even a state-of-art model ?\r\n\r\nEnsemble models. They are our best friends. They help us exploit the power of computing. Ensemble methods aren't new. They form the basis for some extremely powerful machine learning algorithms like random forests and gradient boosting machines. The key point about ensemble is that consensus from diverse models are more reliable than a single source. This talk will cover how we can combine model outputs from various base models(logistic regression, support vector machines, decision trees, neural networks, etc) to create a stronger/better model output.\r\n\r\nThis talk will cover various strategies to create ensemble models.\r\n\r\nUsing third-party Python libraries along with scikit-learn, this talk will demonstrate the following ensemble methodologies:\r\n1) Bagging\r\n2) Boosting\r\n3) Stacking\r\n\r\nReal-life examples from the enterprise world will be show-cased where ensemble models produced better results consistently when compared against single best-performing models.\r\n\r\nThere will also be emphasis on the following: Feature engineering, model selection, importance of bias-variance and generalization.\r\n\r\nCreating better models is the critical component of building a good data science product. \r\n\r\nA preliminary version of the slides is available [here](https://speakerdeck.com/bargava/power-of-ensembles)", - "", - "", - "" - ], - "abstract_extra": "**Previous Presentations**\r\n\r\nOne version of the talk was previously presented at \r\n* [PyCon Ireland -2015 - Machine Learning - Power of Ensembles](http://lanyrd.com/2015/pyconie/sdrpqd/)\r\n\r\nThe speaker has presented at a number of conferences. Some of them are:\r\n\r\n* [PyCon Ireland 2015 - Workshop on Deep Learning](http://lanyrd.com/2015/pyconie/sdrpqd/)\r\n* [Pycon Poland 2015 - Workshop on Deep Learning](http://pl.pycon.org/2015/agenda_en.html)\r\n* [Fifth Elephant 2015, Bangalore India. India's largest data analytics conference -workshop on Deep Learning](https://fifthelephant.talkfunnel.com/2015/10-introduction-to-deep-learning)\r\n [talk](https://fifthelephant.talkfunnel.com/2015/11-visualising-multi-dimensional-data)\r\n* [IEEE International Conference on Cloud Computing for Emerging Markets - Tutorial on Deep Learning](http://conferences.computer.org/ccem/program.html)\r\n* [Bangalore Python Users Meetup Sep 2015 - Data Analysis workshop](http://www.meetup.com/BangPypers/events/210041222/)\r\n* [Scipy India 2015 - Workshop on Data Analysis](http://scipy.in/2015)\r\n( [PyCon India 2015 - Workshop on Statistics](https://in.pycon.org/2015/)", - "tag_categories": [ - "Data Science", - "Data Science", - "Data Science", - "Data Science", - "Data Science" - ], - "emails": "bargava@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/machine-learning-power-of-ensembles", - "admin_type": "", - "companies": "Cisco" - }, - "384": { - "abstract_short": "You will see several different walking robots controlled with Python in different ways, and learn how they were built and programmed.", - "sub_title": "Making Python run on robots", - "timerange": "2016-07-19 14:00:00, 2016-07-19 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 384, - "speakers": "Radomir Dopieralski", - "title": "Making robots walk with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Algorithms", - "Gadgets", - "Engineering", - "Hardware/IoT Track", - "Cross-Platform-Development" - ], - "abstract_long": [ - "Making a robot walk is not easy, especially when all it has for brains is a small microcontroller which you have to program in C. During this talk you will see different ways in which such a robot can be controlled in Python, either by using remote control, with the Python program running on a stationary computer, by putting a small computer, such as a Raspberry Pi on it, or by programming it with Micropython, a version of the Python language designed for microcontrollers. I will also explain the basic problems with walking robots and how Python can be used to overcome them. Finally, I will show some of the robots I have built.", - "", - "", - "" - ], - "abstract_extra": "I have shown those robots on several conferences already:\r\n\r\nA poster session at PyCon.US: https://us.pycon.org/2015/schedule/presentation/448/\r\nA talk at PyCon.PL: https://www.youtube.com/watch?v=-PisXGVe-lE\r\nA talk at DevConf.cz: http://sched.co/2BkO\r\n\r\nSince then I have made considerable progress, and things became even easier for hobbyists. There are more Micropython boards available, the Micropython language itself became better, there is a new, smaller, Raspberry Pi board, and there are lots of other innovations popping up constantly. We live in the future, and I will talk about some of the exciting new things too.\r\n\r\n", - "tag_categories": [ - "Data Science", - "Hardware", - "Everything Else", - ">>> Suggested Track", - "Python" - ], - "emails": "ep2016@sheep.art.pl", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/making-robots-walk-with-python", - "admin_type": "", - "companies": "" - }, - "734": { - "abstract_short": "Kubernetes is the Google Borg inspired control plane for Docker containers. It has a great API but needs a load of HTTP client code and JSON processing to use it from Python. This talk introduces Kube, a Python wrapper around the Kubernetes API that enables you to manage your Kubernetes cluster in a pythonic way while avoiding any Kubernetes API peculiarities. Programmers and operations folk who are interested in interacting with the Kubernetes API using Python.", - "sub_title": "Manage Kubernetes with Python using the open source, pythononic API wrapper we developed called Kube", - "timerange": "2016-07-18 14:15:00, 2016-07-18 14:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@cobecto", - "id": 734, - "speakers": "David Charles", - "title": "Managing Kubernetes from Python using Kube", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Operations", - "Infrastructure", - "Open-Source", - "python", - "System Administration" - ], - "abstract_long": [ - "## Abstract\r\nDocker has had a transformative influence on the way we deploy software and Kubernetes, the Google Borg inspired control plane for Docker-container- hosting-clusters, is gaining similar momentum. Being able to easily interact with this technology from Python will become an increasingly important capability in many organisations. I'll discuss what the motivations behind writing Kube. We'll dive into Kube using the Python interactive interpreter, getting connected to the API, and simple viewing and label update operations. Finally I'll discuss more advanced resource management activities like Kube's 'watch' API capability.\r\n\r\n## Objectives\r\nAttendees will learn about the key concepts in getting resource information out of their Kubernetes cluster using Kube.\r\n\r\n## Outline\r\n1. Setting the scene (3 minutes)\r\n1. Other Python kubernetes wrappers (2 minutes)\r\n1. Kubernetes concepts quick recap (5 minutes)\r\n1. Dive into Kube in the Python interactive interpreter (10 minutes)\r\n * Outline prerequisites\r\n * The entry point - a Cluster instance\r\n * Views and Items - two important Kube concepts\r\n * Item meta data: labels and versions\r\n1. More Kube features (5 minutes)\r\n * Creating and deleting resources\r\n * Using Kube's Watch API support\r\n * The cluster proxy attribute for when you need to get at the actual API.\r\n1. Q&A (5 minutes)" - ], - "abstract_extra": "## Additional\r\nThe Kubernetes interactions will be performed against a single node k-machine instance installed on a laptop. The talk essentially presents the quick-start portion of the Kube documentation.\r\n\r\n## Speaking experience\r\nThis would be the first time I have given a talk at a major conference but I regularly deliver talks at tech meet-ups. As CTO at Cobe.io, one of the EP2016 conference sponsors, a significant part of my job is delivering talks to prospective customers, clients and investors. A portion of the talk will be delivered performing simple operations in the python interactive shell and on the command line, but there's no complicated live coding.\r\n\r\nSome blog articles I've written:\r\nhttps://cobe.io/blog/authors/dave-charles/\r\n\r\nTech Tran Network video about monitoring: \r\nhttp://www.thettn.tv/headlines/a-brief-history-of-monitoring-david-charles.aspx", - "tag_categories": [ - "DevOps", - "DevOps", - "Open Source", - "", - "DevOps" - ], - "emails": "dave@cobe.io", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/managing-kubernetes-from-python-using-kube", - "admin_type": "", - "companies": "Cobe.io" - }, - "406": { - "abstract_short": "Mocking is a valuable technique for writing tests but mocking effectively is often a stumbling block for many developers and can raise questions about its overall value as a technique.\r\n\r\nThere will be a brief introduction to mocking, then a look at features and techniques of Python\u2019s unittest.mock library and cover some useful tips and common scenarios, so this will be useful to those who have some experience mocking but would like to do so more effectively.", - "sub_title": "Better mocking with Python", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@helenst", - "id": 406, - "speakers": "Helen Sherwood-Taylor", - "title": "Managing Mocks", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Test Driven Development (TDD)", - "Testing" - ], - "abstract_long": [ - "Mocking is a valuable technique for writing tests but mocking effectively is often a stumbling block for many developers and can raise questions about its overall value as a technique.\r\n\r\nThe audience will have some familiarity with unit testing and may have tried mocking before, but some introduction will be provided for those who haven\u2019t. We will look at some features and techniques of Python\u2019s unittest.mock library and cover some useful tips and common scenarios, so this will be useful to those who have some experience mocking but would like to do so more effectively.\r\n\r\nSummary of proposed content:\r\n\r\n1. A short introduction to what mocking is and why it is useful.\r\n2. Tour of Python\u2019s mock library and how to make the most of it\r\n * Creating and manipulating Mock objects\r\n * Setting up return values and side effects to control test environment\r\n * Inspecting mocks - different ways to examine a mock object and find out what happened during the test\r\n * How and where to patch\r\n3. Common mocking situations - scenarios where mocking is particularly useful and/or tricky to get right. For example - date/time, filesystem, read only properties\r\n4. Some discussion of when mocking is and isn't helpful.\r\n\r\nFocus will be mainly on Python's unittest.mock module but we will also have a brief look at some other useful libraries." - ], - "abstract_extra": "I gave this talk previously at PyCon UK last year (https://www.youtube.com/watch?v=haXUaGTp8Bc) which was my first speaking experience.\r\n\r\nI received some encouraging feedback and some interesting suggestions for improvement. I'd like to combine this with my own learnings over the last few months so I can bring a better talk to a wide audience.", - "tag_categories": [ - "Testing", - "Testing" - ], - "emails": "helen@rrdlabs.co.uk", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/managing-mocks", - "admin_type": "", - "companies": "" - }, - "527": { - "abstract_short": "When standard Python syntax doesn't cut it, apply metaclasses to make it do what you want. Here I present our metaclass-based implementation of a declarative GUI layout syntax to inspire ideas for what to do when your goals don't fit the Python syntax.", - "sub_title": "Use the power of metaclasses to bend Python to your needs", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@sm6xmm", - "id": 527, - "speakers": "Anders Hammarquist", - "title": "Metaclasses for fun and profit: Making a declarative GUI implementation", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Meta Classes", - "Use Case" - ], - "abstract_long": [ - "When overhauling the user interface of Autolabel's labeling printers, \r\nwe wanted a clean way to describe the layout of the settings widgets.\r\nThe structure we came up with was a declarative class layout that\r\nleverages Python's metaclass concept to build the underlying GTK\r\nwidget structure.\r\n\r\nI will present the implementation to hopefully inspire you to apply\r\nmetaclass techniques to problems that standard Python syntax can't\r\nquite solve. If that fails, you will at least have a way to\r\ndeclaratively construct GTK GUIs.\r\n\r\nA short, non-exaustive, summary of concepts I will mention includes\r\nmetaclasses (obviously), class hierarchies, method resolution\r\norder, super(), and anecdotes of dealing with GTK.\r\n\r\nYou may find some similarities with my talk on Python as a domain\r\nspecific language at Europython 2006\r\nhttp://indico.cern.ch/event/44/session/41/contribution/35" - ], - "abstract_extra": "Previous talks:\r\n\r\nPython as a domain specific language, Europython 2006\r\nhttp://indico.cern.ch/event/44/session/41/contribution/35\r\n\r\nMulti-document concistency with MondoDB, Europython 2012\r\nhttps://ep2013.europython.eu/conference/talks/multi-document-consistency-with-mongodb", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases" - ], - "emails": "sm6xmm@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/metaclasses-for-fun-and-profit-making-a-declarative-gui-implementation", - "admin_type": "", - "companies": "Open End AB" - }, - "453": { - "abstract_short": "The BBC micro:bit is a \"moon-shot\" project to provide an open programmable device for kids. The PSF were a partner in the project: the device runs MicroPython ~ a full reimplementation of Python 3. \r\n\r\nThis practical demonstration will show what the device does, how to program it, and how to contribute and/or set the appropriate wheels in motion to adopt and adapt the project for their own purposes.\r\n\r\nA practical demo-led presentation... what could possibly go wrong? ;-)", - "sub_title": "A practical demonstration that can't possibly go wrong. What's the worst that could happen?", - "timerange": "2016-07-18 14:15:00, 2016-07-18 14:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@ntoll", - "id": 453, - "speakers": "Nicholas Tollervey", - "title": "MicroPython on the BBC micro:bit", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Gadgets", - "Educational Track", - "MicroPython", - "Internet of Things (IoT)" - ], - "abstract_long": [ - "The BBC micro:bit is a small programmable device for children. A million of them have been handed out to the UK's 11 and 12 years olds. The Python Software Foundation was a partner in this moon-shot scheme and, thanks to the efforts of Damien George, MicroPython (a full reimplementation of Python 3) runs on the device. All the assets needed to recreate this project have been release under open-source licenses.\r\n\r\nThis practical demonstration shows what can be done with the device and how to program it. I'll provide advice on how best to introduce the device to children and teachers in your own locale.\r\n\r\nThe only prerequisite you need is a passion for Python, education and playing with a cool IoT gizmo. My goal is simply to give attendees enough information to have fun and make cool things with a micro:bit." - ], - "abstract_extra": "I regularly speak at conferences and other tech-related events (including PyconUK, PyConUS, Europython, O'Reilly's EdFoo, OpenTech, Techhub and various \"open source\" related meet-ups). In the past year I have been a keynote speaker at PyCon India (https://www.youtube.com/watch?v=Q3kXXtlviiM) and PyCon Slovakia.\r\n\r\nI created PyCon UK's education track in 2012 and have been the organiser ever since although I stepped down last year so I couldn't become a single point of failure. I also created and have organised the London Python Code Dojo since 2009.\r\n\r\nI blog at http://ntoll.org/ and a large number of my Python related demos created during the development of the BBC micro:bit can be found here: https://www.youtube.com/channel/UC9FMO_qG2eE9I1rMaCEZu7A\r\n\r\nI've written three books for O'Reilly (most recently \"Python in Education\" - http://www.oreilly.com/programming/free/python-in-education.csp) and have also written articles for Computer Shopper, O'Reilly Radar and The Guardian.\r\n\r\nI am a fellow of the Python Software Foundation.", - "tag_categories": [ - "Educational", - "Hardware", - ">>> Suggested Track", - "Python", - "Hardware" - ], - "emails": "ntollervey@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/micropython-on-the-bbc-microbit", - "admin_type": "", - "companies": "" - }, - "730": { - "abstract_short": "Are we looking in the wrong direction for artificial intelligence and machine learning?\r\n\r\nI'll discuss an older but perhaps more satisfying approach, that has been neglected in recent years.\r\n\r\nIt begins with questions in logic and language, and can be explored using easy techniques. I'll use simple Python programs to explore three key notions in this AI research: **loops**, **self-reference** and **tangled hierarchies**, themselves directly reflected in important programming concepts.", - "sub_title": "Approaching artificial intelligence from another direction", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@EvilDMP", - "id": 730, - "speakers": "Daniele Procida", - "title": "Minds, machines and Python", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "The Answer to Life the Universe and Everything Else", - "Machine-Learning" - ], - "abstract_long": [ - "In recent years, we've seen interesting and spectacular successes in artificial intelligence and machine learning, made possible by leaps in computing power and techniques able to harvest vast quantities of data.\r\n\r\nThe results are uncanny. We see them everywhere, from the personal assistants built into smartphones to the neural networks that do an astounding job of recognising images. However, they're also susceptible to the criticism that they represent not intelligence but a mere simulation of it, and that producing a convincing simulacrum has become more important than a genuine search for intelligence or learning.\r\n\r\nAt the same time, another, perhaps deeper, approach has become neglected in recent decades, along with the questions it asks about the nature of mind, intelligence and learning. This approach begins with fundamental questions in logic and language, and can be explored using some of the simplest programming techniques.\r\n\r\nIn this talk, I'll use simple Python programs to explore three key notions in this strand of artificial intelligence research: *loops*, *self-reference* and *tangled hierarchies*. The way these concepts directly reflect important concepts in programming suggests that for the programmer, this approach could be more interesting and satisfying, and simply more **fun,** than using huge ontologies and big data to create mere simulacra of intelligence.\r\n\r\nThe examples I use will be concrete and easy to understand, even for novice programmers." - ], - "abstract_extra": "I'm very excited by this talk - after many years I feel I am succeeding in bringing together a number of questions in the subject together in a way that works extremely well for programmers, and can use insights from programming itself to illuminate questions about the nature of intelligence.\r\n\r\nI'll be drawing upon multiple sources and work in a range of fields. They include the work of Douglas Hofstadter, language theorists, programmers, even poets and artists.\r\n\r\nMy own academic background is in philosophy, and I've presented some of this material to different audiences, including to mathematicians. This talk however will be aimed firmly at the general Python audience of EuroPython.\r\n\r\nAbout me\r\n===========\r\n\r\nI am a member of the Django core team and the board of the Django Software Foundation.\r\n\r\nI was the chair of the organising committee of DjangoCon Europe in Cardiff in 2014, and have been involved in several other international community conferences, including PyCon Namibia.\r\n\r\nI've previously spoken at events including DjangoCon US, DjangoCon Europe, PyCon Ireland, PyCon UK, PyCon Slovakia and PyCon Italia.", - "tag_categories": [ - "Everything Else", - "Data Science" - ], - "emails": "daniele.procida@divio.ch", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/minds-machines-and-python", - "admin_type": "", - "companies": "Divio" - }, - "503": { - "abstract_short": "Dutch startup MiniBrew intends to disrupt the beer market by introducing an easy-to-use beer brewing machine controlled by a mobile app and communicating with a Python backend. Users want real-time insights in their brewing process, which presented some challenges in terms of architectural design. In this talk Elements Interactive's Chesco discusses best practices and pitfalls of the IoT architecture of MiniBrew by diving into message queues, protocol buffers and full-session logging.", - "sub_title": "A use case of Python as the driver of an IoT architecture for MiniBrew", - "timerange": "2016-07-19 15:45:00, 2016-07-19 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@chescales", - "id": 503, - "speakers": "Francisco Igual", - "title": "MiniBrew: Brewing beer with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Hardware/IoT Track", - "Architecture", - "Internet of Things (IoT)", - "APIs", - "RESTful" - ], - "abstract_long": [ - "The number one alcoholic drink in the world is undoubtedly beer. With the rise of craft beers, also homebrewing has become very popular in recent years, although it is still a complex and expensive hobby. Dutch startup MiniBrew intends to change that with their revolutionary beer brewing machine, which is controlled by a mobile app and communicates with a Python API backend. \r\n \r\nIn this talk Chesco will share his ideas and experiences in utilizing Python in the backend architecture for the MiniBrew project he and his team are working on at MiniBrew's development partner Elements Interactive. \r\n \r\nAs many IoT projects, the ingredients for MiniBrew are a device with a limited chipset and internet connection, a backend to store the data acting as the mastermind and a mobile app to allow end users to control the brewing process. \r\n \r\nThe fact that we want users to know in real-time how their beer brewing process is doing presented some challenges which required us to come up with a competitive architecture that would both give real-time status updates and not saturate the server with continuous calls. \r\n \r\nChesco discusses best practices and pitfalls in designing and developing IoT architecture by diving into the RabbitMQ message broker, the MQTT protocol and protocol buffers. He will focus on the REST API and CMS site written in Python, elaborating on high frequency data in the apps, scalability, full-session logging and overcoming common architectural challenges.", - "", - "", - "" - ], - "abstract_extra": "For more information on Elements Interactive, please visit: https://www.elements.nl/\r\nFor more information on MiniBrew, please visit: http://www.minibrew.io/", - "tag_categories": [ - ">>> Suggested Track", - "Programming", - "Hardware", - "Web", - "Web" - ], - "emails": "chesco@elements.nl", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/minibrew-brewing-beer-with-python", - "admin_type": "", - "companies": "Elements Interactive" - }, - "414": { - "abstract_short": "The OpenGL api is one of the oldest (and most used) graphics library in both the gaming and simulations world. In latest years the api has been extremely re-designed to support modern hardware features available in GPUs. \r\nCan we build realtime graphics application with Python using OpenGL ? Well, obviously Yes !", - "sub_title": "Learn how to use OpenGL to build your game or simulations using latest versions of the API", - "timerange": "2016-07-20 14:00:00, 2016-07-20 15:00:00", - "sub_community": "", - "duration": 60, - "twitters": "@unbit", - "id": 414, - "speakers": "Roberto De Ioris", - "title": "Modern OpenGL with Python", - "have_tickets": [ - true - ], - "type": "Talk (60 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Game-Development" - ], - "abstract_long": [ - "The OpenGL api is one of the oldest (and most used) graphics library in both the gaming and simulations world. In latest years the api has been extremely re-designed to support modern hardware features available in GPUs. \r\nCan we build realtime graphics application with Python using OpenGL ? Well, obviously Yes !\r\n\r\nThe talk will introduce how 2D and 3D graphics works, which math is required for mastering them and why strong hardware cooperation and heavy optimizations have been required since the very beginning of gaming development history.\r\n\r\nOnce the theory is \"almost\" clear, we can start talking about OpenGL, which problems tries to solve and how it evolved in more than 20 years.\r\n\r\nThe last (and the biggest) part of the talk will show how to interface Python with OpenGL, how to draw simple 2D sprites and how to load and show 3D models using simple lighting models. \r\n\r\nWarning: OpenGL shaders (the custom code you upload in the GPU) are written in GLSL, a pseudo-c dialect, so expect a bit of lower-level programming\r\n", - "", - "", - "" - ], - "abstract_extra": "The talk will be very focused on coding and a bit of CG theory. Very few slides will be produced (mainly to explain some graphics pattern or pipeline). The vast majority of time will be in the IDE/editor.", - "tag_categories": [ - "Everything Else" - ], - "emails": "roberto@20tab.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/modern-opengl-with-python", - "admin_type": "", - "companies": "20tab" - }, - "625": { - "abstract_short": "Monkey-patching is a dynamic modification of a class or a module at runtime.\r\n\r\nThe Python gives developers a great opportunity to use monkey-patching almost everywhere. But should developers do it? Is it a magic trick or a powerful tool? In this talk we will try to give the answers to these questions and try to figure out pros and cons of using monkey-patching.", - "sub_title": "Pros and cons of using monkey-patching in projects", - "timerange": "2016-07-22 15:45:00, 2016-07-22 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@itsmyprototype", - "id": 625, - "speakers": "Elizaveta Shashkova", - "title": "Monkey-patching: a magic trick or a powerful tool?", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Debugging", - "Python general", - "Best Practice", - "Development", - "Programming" - ], - "abstract_long": [ - "Monkey-patching is a dynamic modification of a class or a module at runtime.\r\n\r\nThe Python gives developers a great opportunity to use monkey-patching almost everywhere. But should developers do it? Is it a magic trick or a powerful tool? In this talk we will try to give the answers to these questions and try to figure out pros and cons of using monkey-patching.\r\n\r\nFirst of all we will learn what is monkey-patching in Python and consider some basic examples of using it.\r\n\r\nOf course, monkey-patching may cause some problems in the code. We will consider bad ways to use it and try to learn different types of problems monkey-patching may lead to.\r\n\r\nDespite of some bugs that may appear in a patched program, monkey-patching is used in a real life rather often. There are some reasons and motives to do it. We will consider the examples of using monkey-patching in real projects like `gevent`, in some other libraries and in testing. Also we will learn some monkey-patch tricks that helps to solve real-life problems in the Python debugger which is a part of the PyCharm and the PyDev.\r\n\r\nAfter that we will compare using of monkey-patching in Python to using it in an another dynamic language Ruby. Are there any differences between them? Is our reasoning correct for Ruby? \r\n\r\nFinally we will conclude all our thoughts and examples and try to give the answer to the question from title." - ], - "abstract_extra": "", - "tag_categories": [ - "Testing", - "Python", - "Best Practice and Use Cases", - "Programming", - "Programming" - ], - "emails": "elizabeth.shashkova@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/monkey-patching-a-magic-trick-or-a-powerful-tool", - "admin_type": "", - "companies": "JetBrains" - }, - "386": { - "abstract_short": "The talk covers the complexity of managing an asset transformation pipeline through tools like Grunt and NodeJS, especially during deploy, test suites or when a new development environment has to be configured from scratch, and showcase how this complexity can be dodged by using tools like WebAssets and DukPy.\r\n\r\nNo more need to keep around two languages, two package management systems and manage your dependencies between them by youself. Just pip install your app and have it working.", - "sub_title": "How your CoffeScript, TypeScript, LESS or SASS can be compiled without using nodejs at all", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@__amol__", - "id": 386, - "speakers": "Alessandro Molina", - "title": "Moving away from NodeJS to a pure python solution for assets", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Deployment/Continuous Integration and Delivery", - "Operations", - "Infrastructure", - "NodeJS", - "Testing" - ], - "abstract_long": [ - "When working with WebApplications it is common to rely on an asset management pipeline to compile scripts, minify css or preprocess images.\r\n\r\nMost of the tools available today rely on JavaScript to perform those steps and always forced Python developers to rely on NodeJS to have grunt perform the pipeline tasks, coffee-script to compile their CoffeeScript or lessc to build their css. This causes longer setup times for projects newcomers, complex development environment, working with two package managers and dependencies that you use once a week but still need to be there.\r\n\r\nThe talk will showcase the DukPy project and focus on how it is possible to build a pure python asset pipeline relying on DukPy to run javascript tools and WebAssets framework to perform the most common tasks that usually Nodejs and tools like Grunt handle for us, greatly reducing the development environment complexity and making its setup as simple as \u2018pip install\u2019.\r\n\r\nThe talk aims at explaining the complexity of managing an asset transformation pipeline through tools like Grunt, especially during deploy, test suites or when a new development environment has to be created, and showcase how this complexity can be dodged by using tools like WebAssets and DukPy.\r\n\r\nNo more need to keep around two languages, two package management systems and manage your dependencies between them by youself. Just pip install your app and have it working.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "DevOps", - "DevOps", - "DevOps", - "Web", - "Testing" - ], - "emails": "alessandro.molina@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/moving-away-from-nodejs-to-a-pure-python-solution-for-assets", - "admin_type": "", - "companies": "AXANT" - }, - "676": { - "abstract_short": "Music transcription allows to convert an audio recording to musical notation through mathematical analysis. In the talk we will focus on transcribing a monophonic audio input and see how we can modify it on the fly. To achieve that, we need to determine pitch and duration of each note, and then use these parameters to create a sequence of MIDI events.", - "sub_title": "", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@aniawsz", - "id": 676, - "speakers": "Anna Wszeborowska", - "title": "Music transcription with Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Algorithms", - "Use Case", - "Science Track", - "Scientific Libraries (Numpy/Pandas/SciKit/...)" - ], - "abstract_long": [ - "Music transcription allows to convert an audio recording to musical notation through mathematical analysis. It is a very complex problem, especially for polyphonic music - currently existing solutions yield results with approx. 70% or less accuracy.\r\n\r\nIn the talk we will focus on transcribing a monophonic audio input and see how we can modify it on the fly.\r\nTo achieve that, we need to determine pitch and duration of each note, and then use these parameters to create a sequence of MIDI events. MIDI stands for _Musical Instrument Digital Interface_ and it encodes commands used to generate sounds by musical hardware or software.\r\n\r\nLet's see how to play around with sounds using Python and a handful of its powerful libraries. And let's do it in real-time!" - ], - "abstract_extra": "I have led a couple of workshops at conferences, such as:\r\nPolyConf 2014 - A polyglot approach to building applications\r\nPyconPL 2014 - Web scraping\r\nPolyConf 2015 - Tandems. Workshops for mothers and children\r\nPyconPL 2015 - Introduction to TDD\r\n\r\nand presented PyLadies Poland organization at Lightning Talks on varied conferences as well as during discussion panels or interviews.\r\n\r\nI have also led a series of workshops under the shield of PyLadies Poland (which I am a founder of), Geek Girls Carrots as well as mentored for DjangoGirls.\r\n\r\nI happen to talk a lot, especially about the stuff I am deeply involved with :)", - "tag_categories": [ - "Data Science", - "Best Practice and Use Cases", - ">>> Suggested Track", - "Data Science" - ], - "emails": "anna.wszeborowska@ableton.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/music-transcription-with-python", - "admin_type": "", - "companies": "Ableton" - }, - "502": { - "abstract_short": "Visual data exploration, e.g. of social networks, can be ugly manual work. The talk will be an introduction for the combined usage of NetworkX and Bokeh in a Jupyter Notebook to show how easy interactive network visualization can be.", - "sub_title": "Network Manipulation Meets Interactive Visualization", - "timerange": "2016-07-22 16:15:00, 2016-07-22 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 502, - "speakers": "Bj\u00f6rn Meier", - "title": "NetworkX Visualization Powered by Bokeh", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Visualization", - "Web General" - ], - "abstract_long": [ - "During some work with social network analysis my favoured tool to study the networks was NetworkX. It provides a wide set of features and algorithms for network analysis, all in Python. But the functionality to visualize networks is not very strong and not to mention the missing interactive manipulation. However during the exploration of data: exporting, feeding an extra tool for visualization and then manipulating data manually was a tedious workflow.\r\n\r\nAs I also had the optional target of presenting networks in a browser, I improved this workflow by creating a Flask web application providing interfaces to my networks. On the browser side I created a javascript client based on D3.js. In retrospective the required programming effort in Python and also in Javascript was too much for such a task. And exactly this target, interactive visualization in a browser (and as bonus in a Jupyter Notebook), can be achieved quiet easy now with Bokeh.\r\n\r\nThe talk will be a step by step introduction, starting with the basic visualization of a network using Bokeh, NetworkX and a Jupyter Notebook. Next, how to create interactions with your network which will be used to change a network structure, e.g. a leaving person. As we want to see directly the impact of these changes in a network I will finally show how to update networks and visualize directly how the importance of the remaining people changes. And all this can be achieved with Python and maybe a bit of Javascript.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Data Science", - "Web" - ], - "emails": "bjoern@opentrash.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/networkx-visualization-powered-by-bokeh", - "admin_type": "", - "companies": "Blue Yonder GmbH" - }, - "685": { - "abstract_short": "This is an introductory talk to modern brain image analysis tools.\r\nI will show how to use nipy tools to process one resting-state fMRI subject, perform intra-subject registration, ICA analysis to extract and visualize resting-state networks.\r\nIf the time allows me I will introduce an anatomical brain atlas and how to perform non-linear registration to do atlas-based segmentation.\r\n", - "sub_title": "", - "timerange": "2016-07-22 10:30:00, 2016-07-22 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@alex_savio", - "id": 685, - "speakers": "Alexandre Savio", - "title": "Nipy on functional brain MRI", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Science" - ], - "abstract_long": [ - "This is an introductory talk to modern brain image analysis tools.\r\nI will show how to use nipy tools to process one resting-state fMRI subject, perform intra-subject registration, ICA analysis to extract and visualize resting-state networks.\r\nIf the time allows me I will introduce how to perform non-linear registration to to atlas-based segmentation.\r\n\r\nThe outline of the talk:\r\n1. Present the COBRE dataset and show its characteristics.\r\n2. Use nibabel to open a NifTI file and see the matrix/volume parameters.\r\n3. Use nilearn.plotting to show the anatomical image.\r\n4. Use nipy to co-register the anatomical image to the fMRI image.\r\n5. Use nilearn to perform CanICA and plot ICA spatial segmentations.\r\n\r\nIf time allows:\r\n7. Present a brain anatomical atlas and its template.\r\n8. Present the tools needed for non-linear registration.\r\n9. Show the result of an atlas-based segmentation result.\r\n10. Use nilearn to calculate the resting-state functional connectivity matrix of the subject.\r\n11. Plot it with Bokeh.\r\n", - "", - "", - "" - ], - "abstract_extra": "-", - "tag_categories": [ - "Sciences" - ], - "emails": "alexsavio@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/nipy-on-functional-brain-mri", - "admin_type": "", - "companies": "TUM, ACPySS" - }, - "601": { - "abstract_short": "Bokeh is a unique library in its genre that lets users create beautiful and complex visualizations from Python. \r\n\r\nThe talks shows a comprehensive overview of the most powerful and popular Bokeh features, like: the optimized websocket based server for performant python callbacks from actions on the browser, Javascript callbacks written in Python (YES!!), bokeh command that lets target different outputs from the same input, JS transforms from Python, high-level charts, Geo support, ...", - "sub_title": "From how to look into billions of points to writing JS callbacks.. we'll look at Bokeh power!", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@b_smoke", - "id": 601, - "speakers": "Fabio Pliger", - "title": "OMG, Bokeh is better than ever!", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Visualization", - "Big Data", - "Use Case", - "Open-Source", - "HTML5" - ], - "abstract_long": [ - "Bokeh is a unique library in its genre that lets users create beautiful and complex visualizations from Python (and other languages) to the browser without actually writing Javascript or HTML. \r\n\r\nIn the last year the Bokeh team have added a large number of unique features that are extremely powerful. Fully optimized websocket based server that enables performant python callbacks from actions on the browser, Javascript callbacks written in Python (YES!!), bokeh command that lets target different outputs from the same input, JS transforms from Python, high-level charts, Geo support, ...\r\n\r\nAnyone interested in powerful and easy visualizations should take a look at it. :)", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Data Science", - "Data Science", - "Best Practice and Use Cases", - "Open Source", - "Web" - ], - "emails": "fabio.pliger@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/omg-bokeh-is-better-then-ever", - "admin_type": "", - "companies": "Continuum Analytics" - }, - "422": { - "abstract_short": "ZeroDB is an end-to-end encrypted database that lets users operate on encrypted data without exposing encryption keys to the database server. The familiar client-server architecture is unchanged, but query logic and encryption keys are pushed client-side. Since the server has no insight into the nature of the data, the risk of data being exposed via a server-side data breach is eliminated.", - "sub_title": "Search, sort, query, and share ciphertext without exposing encryption keys to the database serve", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@https://twitter.com/newmichwill", - "id": 422, - "speakers": "Michael Egorov", - "title": "Operating on Encrypted Data with ZeroDB", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Security", - "Infrastructure", - "Open-Source", - "Cryptography", - "Databases" - ], - "abstract_long": [ - "ZeroDB is an open-source end-to-end encrypted database that enables clients to operate on (search, sort, query, and share) encrypted data without exposing encryption keys or cleartext data to the database server. The familiar client-server architecture is unchanged, but query logic and encryption keys are pushed client-side. Since the server has no insight into the nature of the data, the risk of data being exposed via a server-side data breach is eliminated. Even if the server is successfully infiltrated, adversaries would not have access to the cleartext data and cannot derive anything useful out of disk or RAM snapshots. \r\n\r\nZeroDB provides end-to-end encryption while maintaining much of the functionality expected of a modern database, such as full-text search, sort, and range queries. Additionally, ZeroDB uses proxy re-encryption and/or delta key technology to enable secure, granular sharing of encrypted data without exposing keys to the server and without sharing the same encryption key between users of the database.\r\n\r\nZeroDB can be used by enterprises to securely outsource on-premise database and storage infrastructure to cloud environments. Enterprises can encrypt client-side and keep keys on-premise, so that they're only pushing encrypted data to the cloud.\r\n\r\nAdditionally, developers can easily write end-to-end encrypted applications with strong security and privacy guarantees." - ], - "abstract_extra": "Interview on The Changelog: https://changelog.com/190/\r\n\r\nBlog: https://medium.com/@ZeroDB_/\r\n\r\nWhite paper: http://arxiv.org/abs/1602.07168\r\n\r\nGitHub org: https://github.com/zero-db\r\n", - "tag_categories": [ - "Security", - "DevOps", - "Open Source", - "Security", - "Databases" - ], - "emails": "michwill@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/operating-on-encrypted-data-with-zerodb", - "admin_type": "", - "companies": "ZeroDB" - }, - "551": { - "abstract_short": "There's a ton of digital ink spent on the subject of productivity. Choosing the right tools, the right editor, plugins, the right OS, keyboard shortcuts, mouse gestures, etc.\r\n\r\nWell, this is not what this talk is about! It's about everything else around your computer that can boost your productivity. It's about communication, getting things done, working less while doing more, sleeping good, and ultimately, staying healthy. ", - "sub_title": "Staying productive beyond your keyboard", - "timerange": "2016-07-22 15:45:00, 2016-07-22 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@nzupan", - "id": 551, - "speakers": "Nejc Zupan", - "title": "Optimize Thyself", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Tooling", - "Python general", - "Development", - "Programming" - ], - "abstract_long": [ - "There's a ton of digital ink spent on the subject of productivity. Choosing the right tools, the right editor, the right plugins, the right OS, mapping keyboard shortcuts, using mouse gestures, the list goes on and on.\r\n\r\nThis is not what this talk is about! It's about everything else around your computer that can boost or kill your productivity. It's about efficient communication, getting things done, working less while doing more, sleeping good, keeping your blood sugar at optimal levels, and ultimately, staying healthy. \r\n\r\nHow should I know? I'm juggling my time between my lifetime addiction to windsurfing , being a father and running a successful Python shop. My working time is very limited and I need to make the most of it. In this talk I'll go through what works for me and point to research on the subject.\r\n" - ], - "abstract_extra": "I've been giving talks (and an occasional keynote) regularly on various (mostly Plone related) events since around 2010:\r\n* https://vimeo.com/110423315\r\n* https://www.youtube.com/watch?v=HsGLLGeXFOU\r\n* https://www.youtube.com/watch?v=egwnZUmR6CE\r\n* https://plone.org/events/regional/past-events/pssa/2012\r\n* http://www.slideshare.net/zupo", - "tag_categories": [ - "Programming", - "Python", - "Programming", - "Programming" - ], - "emails": "nejc.zupan@niteoweb.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/optimize-thyself", - "admin_type": "", - "companies": "NiteoWeb Ltd." - }, - "603": { - "abstract_short": "Ever wondered how Python works under the hood? One way to learn about Python-the-C-program is by exploring the C API for writing Python bindings to native C libraries. In this talk, we will walk through a simple example of making a C library callable from Python code and vice versa. Along the way, we will encounter some essential features of Python: reference counting, memory management, and the inner-workings of objects and modules.", - "sub_title": "A Beginner's Guide to C Extensions for Python", - "timerange": "2016-07-22 14:30:00, 2016-07-22 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 603, - "speakers": "Sophia Davis", - "title": "Peeking into Python\u2019s C API", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Data Structures", - "CPython" - ], - "abstract_long": [ - "We all love Python. It\u2019s so elegant and easy to use as a programming language that we forget about the giant, complicated C program executing our strings of white-space sensitive code. For many Python programmers, this side of Python is just a big black box. It works well, so thankfully we don\u2019t *need* to go messing around inside... but what if you *want* to look into the inner workings of this powerful tool? One way to dive into the C-program-side of Python is by exploring the C API for writing Python bindings to native C libraries. In this talk I will explore the basics of this API as I recount my journey to make a simple C library callable from Python code, and allow C code to invoke objects defined in pure Python. Along the way, we will encounter some essential features of Python: reference counting, memory management, and the inner-workings of objects and modules. ", - "", - "", - "" - ], - "abstract_extra": "This talk was originally presented at the Amsterdam Python Meetup in February 2016.", - "tag_categories": [ - "Programming", - "Python" - ], - "emails": "scdgrapefruit@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/peeking-into-pythons-c-api", - "admin_type": "", - "companies": "Optiver Services B.V." - }, - "743": { - "abstract_short": "In the intersection of mechanics, mathematics and \"cool stuff that travels through space\" lies Astrodynamics, a beautiful branch of physics that studies the motion of spacecraft. In this talk we will describe poliastro, a pure Python library we can use to compute orbital maneuvers, plot trajectories and much more. The role of JIT compiling (using numba) to drop the previously used FORTRAN algorithms will also be discussed, as well as the importance of open source in scientific discoveries.", - "sub_title": "Python for Astrodynamics or how to compute complicated orbits using open source", - "timerange": "2016-07-20 14:30:00, 2016-07-20 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@astrojuanlu", - "id": 743, - "speakers": "Juan Luis Cano", - "title": "Per Python ad Astra", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Science", - "Algorithms", - "Open-Source", - "Physics" - ], - "abstract_long": [ - "In the intersection of mechanics, mathematics and \"cool stuff that travels through space\" lies Astrodynamics, a beautiful branch of physics that studies the motion of spacecraft. Rocket launches have never been so popular thanks to companies like Space X, more and more investors pay attention to aerospace startups and amazing missions explore our planet and our Solar System every day. In this talk we will describe poliastro, a pure Python library we can use to compute orbital maneuvers, plot trajectories and much more. The role of JIT compiling (using numba) to drop the previously used FORTRAN algorithms will also be discussed, as well as the importance of open source in scientific discoveries." - ], - "abstract_extra": "Versions of this talk already delivered in SciPy Latin America 2015 and 6th International Conference on Astrodynamics Tools and Techniques:\r\n\r\n- https://speakerdeck.com/pybonacci/per-python-ad-astra\r\n- https://indico.esa.int/indico/event/111/session/32/contribution/5\r\n", - "tag_categories": [ - "Sciences", - "Data Science", - "Open Source", - "Sciences" - ], - "emails": "juanlu001@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/per-python-ad-astra", - "admin_type": "", - "companies": "Indizen" - }, - "657": { - "abstract_short": "Python is a great language. Easy to learn, friendly to use, widely used.\r\n\r\nIt is not, however, renowned for being fast. In a lot of situations that does not matter. Sometimes it really does. This talk will introduce you to some tools and techniques for making sure your Python code becomes fast enough \u2013 without turning into a maintenance nightmare. Warning: may contain small bits of other languages.", - "sub_title": "how to write good, fast, pythonic code", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 657, - "speakers": "Burkhard Kloss", - "title": "Performant Python", - "have_tickets": [ - false - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Beginners", - "Clean Code", - "Science Track", - "Best Practice", - "Educational Track" - ], - "abstract_long": [ - "Python is a great language. Easy to learn, friendly to use, widely used.\r\n\r\nIt is not, however, renowned for being fast. In a lot of situations that does not matter. Sometimes it really does. This talk will introduce you to some tools and techniques for making sure your Python code becomes fast enough \u2013 without turning into a maintenance nightmare. Fast code does not have to be unreadable - and when you're writing Python, it really pays of to think \"pythonically\".\r\n\r\nThat does mean using the included batteries, and utilising the ecosystem of tools around the language, too.\r\n\r\n Warning: may contain small bits of other languages." - ], - "abstract_extra": "Speaking experience: \r\nI have given talks at Nordevcon (http://www.nordevcon.com/) and the ACCU Conference (http://accu.org/index.php/conferences) over the last few years.\r\n\r\nThis talk is an extended and revised version of the presentation I gave at Nordevcon in February this year, with additional material.", - "tag_categories": [ - "Educational", - "Educational", - ">>> Suggested Track", - "Best Practice and Use Cases", - ">>> Suggested Track" - ], - "emails": "burkhard.kloss@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/performant-python", - "admin_type": "", - "companies": "" - }, - "474": { - "abstract_short": "When a program is not fast enough, we call on the profiler to save us. But what happens when the program is hard to profile, like for instance the Python Debugger? In this talk we're going dive deep into Vmprof, a Python profiler, and see how it helps us find out why a debugger can be slow. Once we find the culprit, we'll use Cython to optimise things. \r\n", - "sub_title": "Using Vmprof to profile a Python debugger and then optimise it with Cython", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@https://twitter.com/DmitryTrofimov", - "id": 474, - "speakers": "Dmitry Trofimov", - "title": "Profiling the unprofilable", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Cython", - "Best Practice", - "Performance", - "Case Study", - "Open-Source" - ], - "abstract_long": [ - "Profile is the main way to find slow parts of your application, and it's often the first approach to performance optimisation. While there are quite a few profilers, many of them have limitations. In this talk we're going to learn about the new statistical profiler for Python called Vmprof that is actively being developed by the PyPy team. We'll see how it is implemented and how to use it effectively. We will apply it to an open source project, the Pydev.Debugger, a popular debugger used in IDE's such as Pydev and PyCharm, and with the help of Cython which we'll also dig into, we'll work on optimising the issues we find.\r\n\r\nWhether it's a Python debugger, a Web Application or any other kind of Python development you're doing, you'll learn how to effectively profile and resolve many performance issues.\r\n\r\n\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "**Outline**\r\n\r\n - INTRODUCTION (1 MINUTE)\r\n - About myself\r\n - How am I related to the topic and why is it important\r\n - THE PROBLEM WITH PERFORMANCE (3 MINUTES)\r\n - Introducing Pydev.Debugger, a Python debugger\r\n - Why is it slow? Seems that we need to use a profiler\r\n - FIRST PROFILING ATTEMPT (7 MINUTES)\r\n - Python profilers overview: CProfile, yappi, line_profiler (4 minutes)\r\n - Using CProfile to profile the debugger (2 minute)\r\n - Why doesn't it work? (1 minute)\r\n - SECOND PROFILING ATTEMPT (10 MINUTES)\r\n - Statistical profilers (1 minute)\r\n - Introducing Vmprof profiler (3 minutes)\r\n - Profiling the debugger with Vmprof (6 minutes)\r\n - OPTIMIZATION (15 MINUTES) \r\n - What is Cython (5 minutes)\r\n - Using Cython to optimize the slowest parts of the debugger (6 minutes)\r\n - Profiling Cython-optimized code (2 minutes)\r\n - Making Cython optional to support wider range of Python versions (2 minutes)\r\n - CONCLUSION (2 MINUTES)\r\n - Q & A (5 MINUTES)\r\n\r\n*Note*: the talk length can be reduced to 30 minutes. That will mean having no questions, and very limited introduction about into technologies used (Cython and Vmprof profiler). \r\n\r\n*My knowledge about the topic*\r\nThe project used as an example: Pydev.Debugger.\r\nI am one of the maintainers of the project in collaboration with Fabio Zadrozny. The Cython optimization shown in talk is a real optimization performed recently to make the debugger faster and was our collaborative effort.\r\nThe profiler introduced in the talk: Vmprof.\r\nI am not a direct committer to the project, but I have collaborated with the PyPy team for the last half of a year on making it available on Windows and Mac OSX. I am quite aware of the tool usage limitations as well as it's implementation details.\r\n\r\n*Audience*\r\nThe talk is supposed to be also intelligible for novice developers as they can get out of it some general concepts about profiling and optimization. While developers with intermediate experience will know about implementation details and learn some best practices.\r\n\r\n*Slides*\r\nWhile the main example in the talk will be a real Python debugger, I will avoid showing the real code on my slides. Instead there will be simplified snippets that are able to express the main idea of the optimization needed to perform and the resulting outcome. I tried this approach in my past talk 'Python Debugger Uncovered' and it proved to be a good approach.\r\nThe real project will be visible only during profiling phase in the form of visual call tree and probably other diagrams.\r\n\r\n*Past speaking experience*\r\nI gave a 30 minutes talk called \"Python Debugger Uncovered\" about implementation details of Python debugger at Europython 2014 in Berlin and at PyCon APAC 2015 in Taipei. There are video recordings of this talk: https://www.youtube.com/watch?v=DHf-6gW3-qs https://www.youtube.com/watch?v=HfzdM7rsKbU\r\nI gave a 30-minute talk 'Can Rust make your Python shine?' about Rust programming language and Python profiling at Europython 2015 in Bilbao: https://www.youtube.com/watch?v=weAxEoEfl0M&feature=youtu.be\r\nI presented a 45-minute live-demo about features of PyCharm IDE at Python Unconference 2015 in Hamburg\r\nI presented a 30-minute talk about PyCharm at PyCon Ukraine 2011\r\nI gave several lightning talks about PyCharm and other open-source projects at difference conference including PyCon and DjangoCon Europe.\r\n\r\n", - "tag_categories": [ - "Python", - "Best Practice and Use Cases", - "Programming", - "Case Study", - "Open Source" - ], - "emails": "trofimov.dmitry@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/profiling-the-unprofilable", - "admin_type": "", - "companies": "JetBrains" - }, - "613": { - "abstract_short": "Failures are the bane of scaling a modern web service and can cause serious pain for end users! Lucky for us, there are techniques that can help protect your product handle failures in subsystems gracefully. This talk will dive into one of these in depth, the Circuit Breaker pattern, and explore the options it gives us for keeping all our users safe. We will be focusing on several real-world problems and options for how to implement your circuit breaker setup in nice, readable python code.", - "sub_title": "Handling errors in production with shocking ease", - "timerange": "2016-07-19 14:00:00, 2016-07-19 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@scott_triglia", - "id": 613, - "speakers": "Scott Triglia", - "title": "Protect your users with Circuit Breakers", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Web General", - "Distributed Systems", - "Web Track" - ], - "abstract_long": [ - "The inevitability of failures is the bane of scaling any modern web service and can cause serious pain for end users! Lucky for us, there are techniques that can help protect your product handle failures in subsystems gracefully. This talk will dive into one of these in depth, the Circuit Breaker pattern, and explore the options it gives us for keeping our users safe.\r\n\r\nWe will be focusing on several real-world problems and how they can be addressed by circuit breakers. You should expect to leave the talk with details on simple circuit breakers as well as understanding how they can be adapted for more complex situations. We\u2019ll also discuss some options for how to implement your circuit breaker in readable python.\r\n\r\n\r\n**Contrived FAQ time!**\r\n\r\n**I don\u2019t know what Circuit Breakers are, should I come?**\r\nDefinitely! We\u2019re going to start from scratch and work our way up. Only requirement is basic familiarity with backend services receiving and making HTTP requests.\r\n\r\n**I totally know what Circuit Breakers are, should I come?**\r\nDefinitely! After the intro, the main meat of the talk will be working through a series of more advanced situations and talking about how we can alter the basic circuit breaker setup to address them. \r\n\r\n**I want real-world advice, not made up hypotheticals!**\r\nWell that\u2019s not really a question, but you\u2019ll be happy to know that the examples we\u2019ll discuss come straight from my experience at Yelp. They should be very realistic and broadly applicable.\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "I spoke at Europython, PyDX, PyconCA, and PyconAU in 2015. Videos are Europython (https://www.youtube.com/watch?v=z3_HorshzJ4), PyconAU (http://www.pyvideo.org/video/3964/arrested-development), and PyconCA (https://www.youtube.com/watch?v=RMt43wyg-zg).\r\n\r\nMy team at Yelp is focused on customer-to-business transactions, so we have a ton of experience with applying these types of patterns to safely minimize costly failures in production. I\u2019m excited to get a chance to share this specific technique with the EuroPython audience :)\r\n\r\nNot requirements, but ideal preferences for the talk time.\r\n* early in the conference schedule\r\n* not in the last session of any day", - "tag_categories": [ - "Web", - "DevOps", - ">>> Suggested Track" - ], - "emails": "scott.triglia@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/protect-your-users-with-circuit-breakers", - "admin_type": "", - "companies": "Yelp" - }, - "395": { - "abstract_short": "As developers we all love well-documented, well-tested packages. If we do the same for our code it is easier for others to re-use our hard work, and maybe even contribute. We will take a quick look on how to do this using popular tools and only a small investment of time. With Github and some simple tools, setting up a well-groomed package doesn't have to be difficult.", - "sub_title": "", - "timerange": "2016-07-21 14:00:00, 2016-07-21 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 395, - "speakers": "Marko Samastur", - "title": "Publish your code so others can use it in 5 easy steps", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Beginners", - "Best Practice", - "PyPi", - "Open-Source", - "Community" - ], - "abstract_long": [ - "Every Python open-source developer wants their software to be used. As developers, we trust software that is tested and well-documented.\r\n\r\nIn this talk we'll go through 5 steps for how to do this for your own packages.\r\n\r\nWe will take a quick look on how to do this using popular tools and small investment of time:\r\n\r\n- Write a setup.py script for a pure Python package\r\n- Set up py.test, tox and coverage to test our package with multiple versions of Python\r\n- Configure Github to use Travis CI & coveralls.io to automatically test our package every time we commit\r\n- Register and publish our package to PyPI\r\n- Setup our documentation on ReadTheDocs\r\n\r\n" - ], - "abstract_extra": "**Objectives**\r\n\r\nMy goal is to inspire a newcomer to PyPI and the Github ecosystem with enough knowledge to get them off the ground in creating pure Python package. Using py.test, tox, and coverage combined with Travis CI and coveralls for solid testing with published results. Also show how easy it is to publish a package to PyPI, check requirements are up-to-date using requires.io, publish documentation on RTFD. \r\n\r\n\r\n**Talk outline**\r\n\r\nIntroduction (1min / 1min)\r\n\r\n- why you\u2019d want this\r\n- tools to use\r\n- there\u2019s a github repo with details (notes not necessary)\r\n\r\nBasics of setup.py (5min / 6min)\r\n\r\n- anatomy of a pure Python setup.py\r\n- setting requirements\r\n- specifying packages to include\r\n- maybe: quick overview of Trove identifiers\r\n- maybe: dealing with versions (have one place to set it)\r\n\r\nTesting locally (5 min / 11min)\r\n\r\n- py.test setup\r\n- checking test coverage\r\n- testing with various Python versions with tox\r\n\r\nCI with Travis (5min / 16min)\r\n\r\n- registering account on travis-ci.org and adding project\r\n- basic .travis.yml configuration\r\n\r\nAdding coverage check with coveralls.io (3min / 19min)\r\n\r\n- registering account and adding project\r\n- changes to .travis.yml (install coveralls package; publish with coveralls command)\r\n\r\nPublishing on PyPI (3min / 22min)\r\n\r\n- registering package\r\n- pushing changes\r\n\r\nPublishing on ReadTheDocs (5min / 27min)\r\n\r\n- registering Github project\r\n- Sphinx and sphinx-quickstart; RTD configuration tweaks\r\n- just some pointers to some docs on how to write reStructuredText\r\n\r\nConclusion (2min / 29min)\r\n\r\n- what wasn\u2019t covered (documentation, mixed packages\u2026)\r\n- where to get more information (cookie cutter package)\r\n\r\n**Previous experience**\r\nI've attended few EuroPythons, a number of DjangoCons and many local Python Meetups. I have presented to large audiences (500+) before, including on technical subjects (Web 2.0 Expo Europe 2008).\r\n\r\nBecause talk itself covers a lot of information that cannot be adequately presented in 30 minutes (or 45) it will be supported with a template repository on Github including cookiecutter script to produce a documented working setup for covered (and not covered) services.\r\n\r\nI have also already published a few packages on PyPI.\r\n\r\n", - "tag_categories": [ - "Educational", - "Best Practice and Use Cases", - "Python", - "Open Source", - "Community" - ], - "emails": "markos@gaivo.net", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/publish-your-code-so-others-can-use-it-in-5-easy-steps", - "admin_type": "", - "companies": "" - }, - "661": { - "abstract_short": "Pygame Zero is a new game engine for education, built on top of Pygame. It makes writing your first games extremely simple, while saving beginners from certain potential pitfalls. Daniel will introduce Pygame Zero, walk through creating a simple game, and discuss the background for Python in education and the design philosophy behind Pygame Zero.", - "sub_title": "A zero-boilerplate game framework", - "timerange": "2016-07-18 16:00:00, 2016-07-18 16:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@lordmauve", - "id": 661, - "speakers": "Daniel Pope", - "title": "Pygame Zero", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Educational Track", - "Game-Development" - ], - "abstract_long": [ - "Pygame Zero is a new game engine for education, built on top of Pygame. It makes writing your first games extremely simple, while saving beginners from certain potential pitfalls. This talk will introduce Pygame Zero, walk through creating a simple game, and discuss the background for Python in education and the design philosophy behind Pygame Zero.\r\n\r\nPygame is a powerful set of libraries for graphics, sound, input and more. But it is just a library: each program needs to import and set up the libraries, implement a game loop and load resources among numerous other concerns. While seasoned Pythonistas have no trouble with this, teachers told us that they found it difficult to teach with Pygame. There is simply too much boilerplate involved, and getting students to reproduce the boilerplate perfectly before useful lessons can begin takes too much time out of a 40-minute lesson.\r\n\r\nPygame Zero is simple enough that a lesson can be broken down into bitesize steps where meaningful progress can be made with just a couple of lines of code at a time." - ], - "abstract_extra": "This talk will be a revised version of a talk I've already given at the Raspberry Pi Birthday weekend and which has also been accepted for Pycon US.\r\n\r\nI gave a brief lightning talk at Europython 2015 and this will be an extended version that introduces several of the features of Pygame Zero\r\n\r\nI have spoken at various Python conferences including Europython, Pycon UK and lightning talks at Pycon US and the London Python Dojo. I am a two-time winner of the Pyweek games programming contest.", - "tag_categories": [ - "Educational", - ">>> Suggested Track", - "Everything Else" - ], - "emails": "lord.mauve@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pygame-zero", - "admin_type": "", - "companies": "Mauve Internet" - }, - "741": { - "abstract_short": "\r\n\r\n - New features of pytest's upcoming major version 3.0\r\n - Breaking changes and other important information\r\n - Recap of the first developer sprint in June, 2016\r\n - Thank you notes to all who have contributed to the fundraiser\r\n\r\n", - "sub_title": "Demonstration, New Features, Important Bugfixes & Sprint Recap", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@hackebrot", - "id": 741, - "speakers": "Raphael Pierzina", - "title": "Pytest 3.0", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Open-Source", - "Documentation", - "Testing", - "Community" - ], - "abstract_long": [ - "Pytest is a mature testing framework for Python that is developed by a thriving and ever-growing community of volunteers. Following the principle of \"no API is the best API\" it uses plain assert statements and regular Python comparisons. Writing tests with pytest requires little to no boilerplate code and powerful features allow easy parametrization and intelligent test selection.\r\n\r\nIn this talk we will have an in-depth look at new features of pytest 3.0 and live demo possible use cases. We will also learn about important bugfixes and other enhancements of the upcoming major release. Backwards-incompatible changes will be addressed and changes made to the documentation will be highlighted.\r\n\r\nIf you are already familiar with pytest, you will be happy to hear about significant improvements of the fixture and hook system but also what's in store for a better integration with tox, an important tool that allows testing across different Python versions.\r\n\r\nIn June, 2016 more than 25 Pythonistas from around the globe gather in Freiburg, Germany to work on the release and set the path for future developments of the core framework. This is a big step forward for the project made posssible by a fundraiser that reached 108% of it's initial goal.\r\n\r\nI will share our experiences from the developer sprint while they are still fresh and explain why these events are incredibly important for a community and give advice on how to organize your own." - ], - "abstract_extra": "For more information on the sprint see: https://www.indiegogo.com/projects/python-testing-sprint-mid-2016\r\n\r\nIf there are no more 45 min slots available, I can skip over live demos of new features to reduce the talks duration to 30 min.", - "tag_categories": [ - "Open Source", - "Programming", - "Testing", - "Community" - ], - "emails": "raphael.pierzina@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pytest-30", - "admin_type": "", - "companies": "FanDuel" - }, - "607": { - "abstract_short": "Todo programador tiene inter\u00e9s para que su software sea fiable y estable. Haremos una sencilla introducci\u00f3n a pytest con el caso de uso de un site internacional para el que generamos cientos de tests y redujimos dr\u00e1sticamente los errores en producci\u00f3n. Con este simple ejemplo demostraremos que no siempre necesitamos hacer TDD para disfrutar de las ventajas de un framework de testing.", - "sub_title": "O como un framework de testing puede substituir las p\u00edldoras para dormir", - "timerange": "2016-07-19 14:30:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@paurullan", - "id": 607, - "speakers": "Pau Ru\u0140lan Ferragut", - "title": "Pytest desde las trincheras", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Best Practice", - "Tooling", - "Case Study", - "Test Libraries (pyTest/node/...)", - "Testing" - ], - "abstract_long": [ - "Las metodolog\u00edas de desarrollo que incorporan la escritura de pruebas desde el momento cero tienden a generar c\u00f3digo m\u00e1s estable y fiable pero la realidad es que muchas veces no gozamos del privilegio ni del presupuesto para escribir tests para todas las caracter\u00edsticas de nuestro producto. Pero si tenemos a nuestra disposici\u00f3n herramientas de testing que nos permitan eliminar los errores evitables como romper enlaces en la p\u00e1gina de inicio nos quitaremos el miedo a hacer pases a producci\u00f3n y generaremos m\u00e1s valor al negocio.\r\n\r\nLa charla no tiene pretensi\u00f3n de ser ni una introducci\u00f3n al test driven development ni de las complejidades de qu\u00e9 es un buen o mal test. El objetivo es animar a todo aquel que todav\u00eda pruebe sus proyectos manualmente a intentar alg\u00fan grado de automatizaci\u00f3n. Para ello la estructura ser\u00e1 una presentaci\u00f3n de pytest, exponer algunos plugins altamente recomendados y centrarse en el caso de uso de una p\u00e1gina con presencia en ocho pa\u00edses donde automatizamos un mont\u00f3n de comprovaciones simples que nos permitieron reducir los errores evitables.\r\n" - ], - "abstract_extra": "Este charla tambi\u00e9n la he propuesto en ingl\u00e9s con el t\u00edtulo \u00abPytest from the trenches\u00bb", - "tag_categories": [ - "Best Practice and Use Cases", - "Programming", - "Case Study", - "Testing", - "Testing" - ], - "emails": "paurullan@gmail.com", - "language": "Spanish", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pytest-desde-las-trincheras", - "admin_type": "", - "companies": "APSL" - }, - "580": { - "abstract_short": "How does the experienced python programmer fair when faced with python's \"new\" way of doing async programming for the first time? \r\n\r\nThis talk details the different ways python provides for attacking the problem of asynchronous programming and focuses on the best practices for the future (as of python 3.4 and 3.5)", - "sub_title": "Do you need to be a wizard to use it?", - "timerange": "2016-07-18 14:15:00, 2016-07-18 14:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 580, - "speakers": "Nicolas Lara", - "title": "Python and Async programming", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Python 3", - "Best Practice", - "Go-Lang", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "How does the experienced python programmer fair when faced with python's \"new\" way of doing async programing in for the first time? Do we all know how and when to use Futures, yield from, asyncio, coroutines, the async and await keywords, eventloops, and others?\r\n\r\nA lot has changed in recent versions of Python when it comes to async programming, concurrency, and parallelism. We still have very different ways of approaching the problem in each version, but they are finally (as of python 3.4/3.5) converging to a standard. \r\n\r\nThis talk explores, from the perspective of an experienced python programmer with little to no experience in async programming, what the \"one obvious way\" to do async programming in Python is supposed to be. It does so but analysing examples of different categories of async problems we may want to solve and what the correct way to solve them with the latest versions of Python would be (along with the trade offs of different approaches).\r\n\r\nThe examples include generic CPU-bound problems, IO-bound problems, and \"both-bound\" problems; along with common tasks as building a simple server, scraping, deferring a web response, and traversing graphs.\r\n\r\nWhen useful, I compare the solutions with the approach we would take in languages that have been design for- and are known to be good at async programming like Javascript and Go. " - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Best Practice and Use Cases", - "Other Programming Languages", - "Programming" - ], - "emails": "nicolaslara@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/python-and-async-programming", - "admin_type": "", - "companies": "Lincoln Loop" - }, - "647": { - "abstract_short": "This talk explains how Ableton\u2019s developers use Python to build and test C, C++ and Objective-C code. Our \"build-system\" is a collection of Python scripts that simplify our workflows, and help us write better software. The top-level scripts share a common design which makes them easy to use, maintain and extend. This talk describes the essence of that design, so you can apply it to your own project.", - "sub_title": "", - "timerange": "2016-07-18 14:45:00, 2016-07-18 15:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 647, - "speakers": "Alain Martin", - "title": "Python as the keystone of building and testing C++ applications", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Software Design", - "Tooling", - "Case Study", - "C-Languages", - "Command-Line" - ], - "abstract_long": [ - "At Ableton, we make [Live][1], [Push][2] and [Link][3], unique software and hardware for music creation and performance. Live is a C++ desktop application built from a 15-year old code base. Push is an instrument embedding a multicolor display which renders a [Qt Quick][4] scene powered by [Qt][5]. Link is a technology that keeps music devices in time and is available to app developers as [LinkKit][6], an iOS SDK. \"But what does all that have to do with Python?\", you might ask. \r\n\r\nThis talk answers that question by explaining how our developers use Python to build and test C, C++ and Objective-C source code. Based on [GYP][7], what we call \"build-system\" is a collection of Python scripts that simplify our workflows, and help us write better software. The three top-level scripts, \"configure.py\", \"build.py\" and \"run.py\", share a common design which makes them easy to use by developers, as well as easy to maintain and extend. This talk describes the essence of that design, so you can apply it to your own project.\r\n\r\n[1]: https://www.ableton.com/live/\r\n[2]: https://www.ableton.com/push/\r\n[3]: https://www.ableton.com/link/\r\n[4]: https://www.qt.io/qt-quick/\r\n[5]: http://www.qt.io/\r\n[6]: https://ableton.github.io/linkkit/\r\n[7]: https://gyp.gsrc.io/", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Programming", - "Programming", - "Case Study", - "Other Programming Languages", - "Programming" - ], - "emails": "alain.martin@ableton.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/python-as-the-keystone-of-building-and-testing-c-applications", - "admin_type": "", - "companies": "Ableton" - }, - "536": { - "abstract_short": "Have you ever wondered how Django models work? I'll present a story of data structure transformation. I will talk about ideas from Django models that I used and how I rediscovered descriptor API. I will talk about printing, serializing, comparing data structures and some other examples, where descriptors excel at making declarative code easier to write.", - "sub_title": "How to use Python descriptor API and let testers skip the boring work", - "timerange": "2016-07-18 14:15:00, 2016-07-18 14:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 536, - "speakers": "Adrian Dziubek", - "title": "Python Descriptors for Better Data Structures", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Django", - "Case Study", - "Testing" - ], - "abstract_long": [ - "I worked as a developer of a testing framework for a C++ server. The framework tested binary protocol implemented by the server.\r\n\r\nMost of the work involved testers preparing test cases. The data format was primitive structures -- hard to read and easy to break. Field order and all the data had to be entered manually.\r\n\r\nAt the time, I have already seen the better world -- the models from Django. Have you ever wondered how those work? Step by step, I used the ideas from there to make the structures more friendly and on my way I rediscovered descriptors.\r\n\r\nI'll show in incremental steps, how:\r\n\r\n - used keyword arguments to lower signal to noise ratio,\r\n - order of definition for sorting the fields,\r\n - realized that `__call__` is used instead of assignment,\r\n - used `__setattribute__` as first step to extend primitive fields,\r\n - discovered that I'm actually reimplementing descriptors,\r\n\r\nand how it lead me to:\r\n \r\n - implement printing in a way that is friendly to regression testing,\r\n - use diff library for less code and better results,\r\n - implement more readable validation.\r\n\r\nI want to show how descriptors work in Python and how they enable declarative style of programming. By the end of the talk I want you to understand what is at the core of the magic behind field types used by object relational mappers like Django.\r\n\r\n" - ], - "abstract_extra": "That would be my first talk for a bigger audience. I have some experience from presenting at the university courses and playing guitar at school, so I'm hopeful about my stage fright. I'll be training with presenting this subject at my company's lightning talks and a local Python group.", - "tag_categories": [ - "Application Frameworks", - "Case Study", - "Testing" - ], - "emails": "adrian.dziubek+europython@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/python-descriptors-for-better-data-structures", - "admin_type": "", - "companies": "STX Next" - }, - "455": { - "abstract_short": "I would like to talk about modern Astronomy where I would give a brief history of Astronomy. I will answer some question: \r\nWhat do we use computers for today in astronomy? \r\nWhere is Python\u2019s place in today\u2019s science? \r\nIs Python is the best language for scientific computation? \r\nI would like to give a short introduction into AstroPy module. Finally I would like presents some result of my research where Python was used to create data.\r\n", - "sub_title": "", - "timerange": "2016-07-21 10:30:00, 2016-07-21 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 455, - "speakers": "S\u0142awomir Piasecki", - "title": "Python in Astronomy", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Visualization", - "Science", - "Python general", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Physics" - ], - "abstract_long": [ - "For ages people have been watching the sky, and tried to learn something about all those mysterious lights. In ancient times, scientist used mostly their naked eyes to watch what happened in the night sky. Astronomy is one of the oldest fields in science. \r\nEverything changed when Galileo invented his lunette. Thanks to thi, we were able to proof Copernicus\u2019 new model of the solar system with the sun in the center. \r\n\r\nThe next big step in Astronomy was using computers. Where there are computers and Astronomy, there is a place for programming. For many years astronomers were mostly using Fortran and C/C++. Both are suited to numeric computation and scientific computing. Since they are structured programming language, that makes them very valuable for science.\r\n\r\nOver the past decade, Python has started to be used by more and more people in astronomy. But is there a place in Astronomy for Python, as it is not as fast as Fortran or C/C++? In Python there is a module called AstroPy which helps astronomers in their work. \r\n\r\nMatPlotLib is one of the most popular library use in astronomy. This tool helps created very sophisticated plots and graphs.\r\n\r\nFinally I would like talk about some research I did using Python. For research, we decided to use AUTO. It is a hybrid of Fortran and Python, to compute bifurcation points in mathematical models. In Python we introduce mathematical model, ODE and initial parameters. Fortran does all the computation.\r\n", - "", - "", - "" - ], - "abstract_extra": "I have been giving talk during my education career in Spain and USA. \r\nLast year (2015) I gave my first presentations about python in Polish PyCon. Since I got positive feedback I would like to try now in bigger event.", - "tag_categories": [ - "Data Science", - "Sciences", - "Python", - "Data Science", - "Sciences" - ], - "emails": "slawomir.piasecki@stxnext.pl", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/python-in-astronomy", - "admin_type": "", - "companies": "STX Next" - }, - "619": { - "abstract_short": "On February 11th 2016 Ligo-Virgo collaboration gave the announce of the discovery of Gravitational Waves, just 100 years after the Einstein\u2019s paper on their prediction.\r\nA brief introdutcion to data analysis methods used in Gravitational Waves (GW) communities \r\nPython notebook describing how to analyze the GW event detected on 14 September 2015. \r\n\r\n", - "sub_title": "", - "timerange": "2016-07-19 12:00:00, 2016-07-19 12:45:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@ElenaCuoco", - "id": 619, - "speakers": "Elena Cuoco", - "title": "Python in Gravitational Waves Research Communities", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Jupyter/iPython Notebook", - "Data Science" - ], - "abstract_long": [ - "On February 11th 2016 Ligo-Virgo collaboration gave the announce of the discovery of Gravitational Waves, just 100 years after the Einstein\u2019s paper on their prediction.\r\nAfter an introduction on Gravitational Waves, on Virgo Interferometric detector, I will go through the data analysis methods used in Gravitational Waves (GW) communities either for the detector characterization and data condition or for the signal detection pipelines, showing the use of python we make.\r\nAs practical example I will introduce a python notebook describing the GW event detected on 14 September 2015 and I will show a few of signal processing techniques.\r\n\r\n", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Python", - "Data Science" - ], - "emails": "elena.cuoco@ego-gw.it", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/pyhton-in-gravitational-waves-research-communities", - "admin_type": "", - "companies": "European Gravitational Observatory" - }, - "570": { - "abstract_short": "Approach to topics, evolution, correlations through the lyrics of some of the greatests rock bands of all times. We will talk about the different phases of this personal project, in which I approach to a passion through a scientific method. \r\n\r\nThis is a project that combine different techniques: \r\n- web crawling\r\n- NoSQL \r\n- Natural Language Processing \r\n- Data visualization", - "sub_title": "Analysing the lyrics of the greatest rock bands of all time", - "timerange": "2016-07-22 15:45:00, 2016-07-22 16:15:00", - "sub_community": "pydata", - "duration": 30, - "twitters": "@claudiaguirao", - "id": 570, - "speakers": "Claudia Guirao Fern\u00e1ndez", - "title": "Python, Data & Rock'n'Roll", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "Visualization", - "Natural Language Processing", - "MongoDB", - "Data Science", - "Beginners" - ], - "abstract_long": [ - "Have you ever wonder how David Bowie has evolved into the theme of his songs throughout their studio albums? Want to find out in what looks like Nirvana and Pink Floyd?\r\n\r\nApproach to topics, evolution, correlations through the lyrics of some of the greatests rock bands of all times. We will talk about the different phases of this personal project, in which I approach to a passion through a scientific method. \r\n\r\nThis is a project that combine different techniques: \r\n- Web crawling\r\n- NoSQL \r\n- Natural Language Processing \r\n- Data visualization\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Data Science", - "Data Science", - "Databases", - "Data Science", - "Educational" - ], - "emails": "guirao.claudia@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/python-data-rocknroll", - "admin_type": "", - "companies": "Kernel Analytics" - }, - "736": { - "abstract_short": "Query Embeddings is an unsupervised deep learning based system, built using Python and open source libraries (Annoy, keyvi etc.) which recognizes similarity between queries and their vector representations, for a web scale search engine integrated within Cliqz browser [https://cliqz.com/en]. It improves recall for previously unseen queries and is one of the many key components of our search stack. The framework be utilized by other low latency systems involving vector representations.\r\n", - "sub_title": "Web Scale Search powered by Deep Learning and Python", - "timerange": "2016-07-18 11:15:00, 2016-07-18 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@codekee", - "id": 736, - "speakers": "Ankit Bahuguna", - "title": "Query Embeddings: Web Scale Search powered by Deep Learning and Python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Natural Language Processing", - "Deep Learning", - "Open-Source", - "Data", - "Machine-Learning" - ], - "abstract_long": [ - "A web search engine allows a user to type few words of query and it presents list of potential relevant results within fraction of a second. Traditionally, keywords in the user query were fuzzy-matched in realtime with the keywords within different pages of the index and they didn't really focus on understanding meaning of query. Recently, Deep Learning + NLP techniques try to _represent sentences or documents as fixed dimensional vectors in high dimensional space_. These special vectors inherit semantics of the document.\r\n\r\nQuery embeddings is an unsupervised deep learning based system, built using Python, Word2Vec, Annoy and Keyvi (https://github.com/cliqz-oss/keyvi) which recognizes similarity between queries and their vectors for a web scale search engine within Cliqz browser. (https://cliqz.com/en)\r\n\r\n![][1]\r\n\r\nThe goal is to describe how query embeddings contribute to our existing python search stack at scale and latency issues prevailing in real time search system. Also is a preview of separate vector index for queries, utilized by retrieval system at runtime via ANNs to get closest queries to user query, which is one of the many key components of our search stack.\r\n\r\n![][2]\r\n\r\nPrerequisites: Basic experience in NLP, ML, Deep Learning, Web search and Vector Algebra. Libraries: Annoy. \r\n \r\n[1]: https://sites.google.com/site/netankit/1.png\r\n[2]: https://sites.google.com/site/netankit/3.png" - ], - "abstract_extra": "**Talks:**\r\n - \"Deep Dive into Tensorflow\" as an Invited speaker at TensorFlow and Open AI Meetup, Stylight GmbH, Munich, March 2016. [https://www.youtube.com/watch?v=T0H6zF3K1mc]\r\n - \"Sentiment Analysis: Machine learning using Python Scikit-Learn\", delivered at FOSS-ASIA. March 2015 at NUS, Singapore. [https://speakerdeck.com/netankit/sentiment-analysis-machine-learning-with-python-scikit-learn]\r\n- \"Breaking the Wall of Building Effective Communities\" at Falling Walls Lab, Berlin, November 2014 [[https://www.youtube.com/watch?v=y6y-10BQg9o][1]]\r\n\r\n**Master Thesis / IDP :** \r\n- \"Deep Learning Methods for Sentiment Analysis\", conducted jointly at TU Munich and LMU Munich, Germany. October 2015\r\n\r\n**Publications [ACL Anthology]:**\r\n - Facilitating multi-lingual sense annotation: Human mediated lemmatizer, Estonia (GWC) 2014\r\n - HinMA: Distributed Morphology based Hindi Morphological Analyzer, India (ICON) 2014\r\n\r\n**Others:** \r\nOfficial contributor, Mozilla Project: www.mozilla.org/credits/\r\nMozilla Reps (REMO) Profile: https://reps.mozilla.org/u/netankit/\r\n\r\n [1]: https://www.youtube.com/watch?v=y6y-10BQg9o\r\n", - "tag_categories": [ - "Data Science", - "Data Science", - "Open Source", - "", - "Data Science" - ], - "emails": "ANKITBAHUGUNA@outlook.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/query-embeddings", - "admin_type": "", - "companies": "Cliqz GmbH" - }, - "614": { - "abstract_short": "GPIO Zero is a new friendly API for physical computing with Raspberry Pi. Like PyGame Zero, it's a minimal boilerplate module that lets you dive straight in and build things with physical components. The Pythonic API was designed for use in education, and was tried and tested with teachers. This talk is the story of how the library came about, how it was developed and I provide a close look at some of its cleverest features.", - "sub_title": "Developing a new friendly Python API for physical computing with Raspberry Pi", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@https://twitter.com/ben_nuttall", - "id": 614, - "speakers": "Ben Nuttall", - "title": "Raspberry Pi GPIO Zero", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Raspberry PI", - "Open-Source", - "Internet of Things (IoT)", - "Community" - ], - "abstract_long": [ - "I work at the Raspberry Pi Foundation and regularly give workshops on physical computing with Python to kids and teachers and we always found the existing GPIO library difficult to teach with due to its broad scope and verbose nature. Although technically possible to do all sorts of projects, it had a difficult learning curve and even the most basic of examples required explanation of code and electronics concepts.\r\n\r\nGPIO Zero is a new friendly API for physical computing with Raspberry Pi. Like PyGame Zero, it's a minimal boilerplate module that lets you dive straight in and build things with physical components. Simple interfaces are provided for everyday components with obvious features provided with guessable method names. The Pythonic API was designed for use in education, and was tried and tested with teachers. This talk is the story of how the library came about, how it was developed and I provide a close look at some of its cleverest features. The initial batch of work on the library was done by two people in different cities, with all features and changes discussed in length in a series of about 100 GitHub issues over 2 months, and additional features and expansions have been implemented since launch.\r\n\r\nGPIO Zero is now the Foundation's recommended method of interfacing with physical components, and comes pre-installed in the Raspbian Jessie image.\r\n\r\nDocumentation is provided at http://gpiozero.readthedocs.org/" - ], - "abstract_extra": "I wrote a blog post on this topic: http://bennuttall.com/gpio-zero-developing-a-new-friendly-python-api-for-physical-computing/\r\n\r\nI have given a number of talks on this subject to a range of audiences. At EuroPython, this will be the developer focused version of the talk, based on: https://speakerdeck.com/bennuttall/gpio-zero-developing-a-friendly-python-api-for-physical-computing-campug\r\n\r\nI spoke at EuroPython 2014 and 2015, PyConUK 2014 and 2015, PyCon Ireland 2014, and gave keynotes at PySS 2014 and EuroSciPy 2014.\r\n\r\nMy talks are documented at http://bennuttall.com/talks/\r\n\r\nNote: although this talk is related to Education, it's more focused at developers.", - "tag_categories": [ - "Educational", - "Hardware", - "Open Source", - "Hardware", - "Community" - ], - "emails": "ben@raspberrypi.org", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/raspberry-pi-gpio-zero", - "admin_type": "", - "companies": "Raspberry Pi Foundation" - }, - "640": { - "abstract_short": "As Armin Ronacher pointed out in a recent blog post, there is more to Python's regular expression module than meets the eye. His post made me wonder what other \u201chidden gems\u201d are stashed away in Python\u2019s `re`. In the talk I share what I\u2019ve learned about the inner workings of this extremely popular and heavily used module.", - "sub_title": "A look at the inner workings of the `re` module.", - "timerange": "2016-07-19 14:30:00, 2016-07-19 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 640, - "speakers": "Ilia Kurenkov", - "title": "re-Discovering Python's Regular Expressions", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Python general", - "CPython" - ], - "abstract_long": [ - "Anyone who has used Python to search text for substring patterns has at least heard of the regular expression module. Many of us use it extensively for parsers and lexers, extracting information .\r\nAnd yet we know surprisingly little about its inner workings, as Armin Ronacher demonstrated in his recent blog post, \u201cPython's Hidden Regular Expression Gems\u201d. Inspired by this, I want to dive deeper into Python\u2019s `re` module and share what I find with folks at EuroPython. My goal is that at the end of the day most of us walk away from this talk with a better understanding of this extremely useful module.\r\n\r\nHere are a few examples of the kinds of things I would like to cover:\r\n\r\n - A clear presentation of `re`\u2019s overall structure.\r\n - What actually happens behind the scenes when you \u201ccompile\u201d a regular expression with `re.compile`?\r\n - What are the speed implications of using a callable as the replacement argument to `re.sub`?\r\n - re.MatchObject interface: `group` vs. `groups` vs `groupdict`\r\n\r\nTo keep the talk entertaining as well as educational I plan to pepper it with whatever interesting and/or funny trivia I find about the module\u2019s history and structure.\r\n\r\nPrerequisites:\r\nIf you've ever used the `re` module, you should be fine :)\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Python", - "Python" - ], - "emails": "ilia.kurenkov@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/rediscovering-pythons-regular-expressions", - "admin_type": "", - "companies": "eGym" - }, - "677": { - "abstract_short": "Virtualenv is a great tool for the development environment but it's definitely not suitable for every use case. Also, Docker is great for running the application in production, but not everyone that use it in production tried to use it in the development environment. Why not use the same tool from the beginning of the project and until it hits the production in a uniform stack of tooling? This talk will show use cases of using Docker in the process of development as well.", - "sub_title": "Building real, immutable, and portable virtual environments using Docker", - "timerange": "2016-07-21 16:15:00, 2016-07-21 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@mishunika", - "id": 677, - "speakers": "Mihai Iachimovschi", - "title": "Real virtual environments without virtualenv", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Web General", - "Python general", - "Open-Source", - "Docker", - "Deployment/Continuous Integration and Delivery" - ], - "abstract_long": [ - "The process of developing using Python is very straightforward and easy. Still, each and every developer has his own style of developing and building his entire dev environment. Most of us use virtualenvs which are reliable and comfortable to use. But there are some issues. For instance, the repeatability and immutability of the built environment are not guaranteed. \r\n\r\nVirtualenv does a lot of work that targets the direction of somehow isolated and independent environments. They are *almost* *fully* repeatable. In any team, we can hear the notorious expression \"It works for me!\".\r\n\r\nFor some time now, I am using Docker instead of virtualenv for building custom and really-virtual environments that are entirely isolated. The containers are immutable and consistent, so this workflow guarantees repeatability. Using such technique, not only enables the user to have unique and immutable environments, it also allows de developer to create full app architecture that can then be tested and deployed as is. So the production version will be in identical conditions as the one from the development environment. These features are not provided by virtualenv at all.\r\n\r\nThe goal of this exercise is to try to use totally different tooling for building the application from its first line of code until the production. " - ], - "abstract_extra": "", - "tag_categories": [ - "Web", - "Python", - "Open Source", - "DevOps", - "DevOps" - ], - "emails": "mihai.iachimovschi@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/real-virtual-environments-without-virtualenv", - "admin_type": "", - "companies": "" - }, - "621": { - "abstract_short": "It is important to understand from the beginning how model API should look like.\r\nDo not repeat your friends\u2019 mistakes and make developers upset!\r\nThere are some simple rules that can make your API cooler - clean, safe and efficient.\r\n\r\nBased on both bad and good examples of REST APIs (I had to deal with) we will learn about best practices.", - "sub_title": "", - "timerange": "2016-07-22 14:30:00, 2016-07-22 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 621, - "speakers": "Malwina Nowakowska", - "title": "RESTful API - Best Practices.", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Best Practice", - "RESTful", - "APIs" - ], - "abstract_long": [ - "Nowadays building and integrating with Representational State Transfer web services is a very common thing. It seems that creating RESTful API is trivial - nothing could be more wrong.\r\nIn my previous projects I had to integrate with lots of APIs. Unfortunately only some of them were easy to work with. Most of the APIs did not follow the main rules of model API.\r\n\r\nIt is really important to understand how model REST API should look like.\r\nTo make developers happy we will learn best practices of creating REST API from the beginning.\r\n\r\nWe will start with quick introduction what REST is, why principle of REST is so amazing, talk about identifires and explain some key terms.\r\nWe will discuss about architectall constraints and properties.\r\n\r\nMistakes and best practices are based on my experience of developing and maintaining the projects. After this talk you will be able to create model RESTful API developers will be happy to work with.\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Best Practice and Use Cases", - "Web", - "Web" - ], - "emails": "malwina.nowakowskaa@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/restful-api-best-practises", - "admin_type": "", - "companies": "STX Next" - }, - "543": { - "abstract_short": "Microservices offer an efficient way to only scale those parts of your application which are performance bottlenecks.\r\n\r\nWe will demo and explain open source tech which allows the easy scaling out across distributed devices. The audience will be able to donate processor cycles from their devices to our demo application (and win a hardware prize).\r\n\r\nThe demo uses [Crossbar.io][1], an open souce application router (written in Python), and all demo code is open source.\r\n\r\n [1]: http://crossbar.io", - "sub_title": "Easy distributed systems from mobiles to servers", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 543, - "speakers": "Tobias Oberstein", - "title": "Scaling Microservices with Crossbar.io", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Scaling", - "Architecture", - "Distributed Systems", - "Internet of Things (IoT)", - "Microservices" - ], - "abstract_long": [ - "Microservices offer an efficient way to only scale parts of your applications which are hotspots. Instead of running multiple instances of a monolithic application, with all the complexity and operational run-time overhead that entails, you can scale only the functionality which is a bottleneck. Today that increasingly means scaling out, not up.\r\n\r\nWe will go over open source technologies which allow the easy scaling out across distributed devices.\r\n\r\nA live demo will allow the audience to participate with its devices (including mobile phones) in an application. (There will be prizes for the donors.)\r\n\r\nThe demo uses [Crossbar.io,][1] an open source router for the open [Web Application Messaging Protocol (WAMP) ][2] written in Python. WAMP supports routed Remote Procedure Calls, and Crossbar.io uses these to implement various load-balancing strategies across endpoints which register a particular procedure.\r\n\r\nWAMP has a first-class library for Python ([Autobahn|Python][3]), but is cross-language, with support for a total of 11 languages. This allows you to implement polyglot and heterogenos microservices applications, from Python to Node.js to C# right into the browser. Microservices can run anywhere, since the outgoing connections to the router which WAMP uses avoid NAT problems.\r\n\r\nAll software used is open source, and all demo code is provided on GitHub under the MIT license.\r\n\r\n [1]: http://crossbar.io\r\n [2]: http://wamp-proto.org\r\n [3]: http://autobahn.ws/python", - "", - "", - "" - ], - "abstract_extra": "The talk will give a very brief overview of the advantages of microservices as a modern architectural approach, and then focus on the specific problem of scaling individual microservices. There will be a quick look at some established communication mechanisms and their disadvantages in this context, and an overview of the router Remote Procedure Calls that WAMP provides, their advantages and how Crossbar.io uses these to achieve simple scaling.\r\n\r\nThe demo will allow participants to connect with their own devices (laptops, tablets, mobile phones, remote servers) and donate processor cylces. The simplest way to do so is to call up a Web page in a browser which will connect to the application and provide a JavaScript implementation of the microservice to scale. (This also provides realtime feedback about audience participation.) We will also provide a Python client, and potentially clients in other languages for participants to run on their laptops.\r\n\r\nParticipation will be possible via conference wi-fi, a local dedicated wi-fi network or a mobile network - so problems with the conference wi-fi network (always a possibility) will not impact the demo.", - "tag_categories": [ - "DevOps", - "Programming", - "DevOps", - "Hardware", - "Programming" - ], - "emails": "tobias.oberstein@tavendo.de", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/scaling-microservices-with-crossbario", - "admin_type": "", - "companies": "Tavendo GmbH" - }, - "405": { - "abstract_short": "The server is developed in Python 3.4, using MySQL5.6 \r\nThe mobile device application is developed using Kivy.\r\nThe application in the IoT device is developed in C. \r\nThe IoT device is a hardware device using ATSAMD21 from Atmel, and wifi is made using ESP8266. The security used is sha256, standard in Python. And the IoT device using the crypto device ATECC508A, that generate also sha256.\r\n\r\n\r\n", - "sub_title": "Server for Communication of IoT devices and Mobile Devices using Wifi Network", - "timerange": "2016-07-22 14:00:00, 2016-07-22 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 405, - "speakers": "Joaquin Berenguer", - "title": "Server for IoT devices and Mobile devices using Wifi Network,", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Algorithms", - "Beginners", - "Agile", - "APIs", - "Analytics" - ], - "abstract_long": [ - "The server is developed in Python 3.4, the information is stored in a MySQL 5.6 database. \r\nAll IoT devices, Mobile Devices and Windows or Linux Desktop are registered in the database.\r\nAll type of messages that are understood by every type of device, is also registered.\r\nA map between which device could access which device is also stored in the database.\r\nWith this info, any mobile registered could send a message to a device. The message arrives to the server that resend the message to the IoT device, receive the answer and resend to the Mobile device. \r\nThe Mobile device and the IoT device, could be anywhere, as the server is public, have the registration of every device connected.\r\nThe mobile device application is developed using Kivy.\r\nThe application in the IoT device is developed in C. \r\nThe IoT device is a hardware device using ATSAMD21 from Atmel, and wifi is made using ESP8266. The security used is sha256, standard in Python. And the IoT device using the crypto device ATECC508A, that generate also sha256.\r\nThe server start a thread for every device connected, the communication between thread is made using queues. \r\nDuring the presentation, the server is going to be presented, and IoT device is shown, no demo is going to be made.\r\nA library to manage the database, is used for easy access to the database, and have database independence, also will be shown.\r\nPrerequites: Python 3.4, sha256, threading, queue, mysql.connector, relational database.\r\n", - "", - "", - "" - ], - "abstract_extra": "Owner of the company Berentec, from 2014\r\nExperience during many year in Database Environment, working at Sybase during 19 years.\r\n", - "tag_categories": [ - "Data Science", - "Educational", - "Development Methods", - "Web", - "Data Science" - ], - "emails": "chimo.berenguer@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/server-for-iot-devices-and-mobile-devices-using-wifi-network", - "admin_type": "", - "companies": "Berentec" - }, - "454": { - "abstract_short": "The Processing project demonstrated that computer art can attract a wider audience to programming. Python has a robust catalog of libraries, including two interfaces to OpenGL. However, none of these libraries replicate Processing\u2019s simplicity when drawing to the screen. I will present my solution to this problem: a re-implementation of VPython\u2019s visual module purely in python called PygletHelper.", - "sub_title": "", - "timerange": "2016-07-21 15:45:00, 2016-07-21 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@femion", - "id": 454, - "speakers": "Catherine Holloway", - "title": "Simplifying Computer Art in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Visualization", - "Teaching", - "Game-Development" - ], - "abstract_long": [ - "Processing is a programming language originally developed by the MIT media lab with the goal of allowing artists, educators, and many others develop striking computer generated or assisted projects without requiring deep knowledge of software engineering or computer graphics. Like Processing, Python has become a favourite language of users from diverse backgrounds, such as web development, education, and science. Unlike Processing, python lacks a simple and easy to use library for drawing shapes. Python\u2019s existing libraries for scientific computing and data analysis could be made even more awesome when combined with a simple drawing library.\r\n\r\nVPython contains a module called visual that established a simple API and convention for drawing shapes, however it was written in C++, prior to the development of pyglet, and thus is not entirely cross-platform. In this talk, I will demonstrate my solution to this problem: a re-implementation of visual purely in Python called PygletHelper. Pyglet, an existing python library, provides a python interface to OpenGL. PygletHelper is built on pyglet but obscures all of the OpenGL calls, such that the user can draw simple geometric shapes to the screen and animate them without needing to know about computer graphics terminology, memory usage, or C data types.\r\n\r\nI will also show some need visualizations of science and music in my talk, as well as the graphical glitches encountered implementing the library. " - ], - "abstract_extra": "PygletHelper is open source, and available at: https://github.com/CatherineH/pyglet_helper\r\nI have given many talks in the past about robotics or quantum computing, but this would be my second talk on python if accepted. In 2015 I gave a talk on the Robotics Operating System and Python at PyCon Canada:\r\n\r\nhttps://www.youtube.com/watch?v=oX294t9UYSw", - "tag_categories": [ - "Data Science", - "Everything Else", - "Everything Else" - ], - "emails": "milankie@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/simplifying-computer-art-in-python", - "admin_type": "", - "companies": "Qubitekk" - }, - "577": { - "abstract_short": "This talk is based on a recent consulting project the speaker ran to support the valuation of a Python startup company in the due diligence phase.\r\n\r\nBy following some of the advice from this talk, you should be possible to improve the valuation of your Python startup or consulting business in preparation for investment rounds or an acquisition.", - "sub_title": "Designing valuable software for fun and profit", - "timerange": "2016-07-19 16:15:00, 2016-07-19 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@malemburg", - "id": 577, - "speakers": "Marc-Andre Lemburg", - "title": "So you think your Python startup is worth $10 million...", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Databases", - "Use Case", - "Best Practice", - "Business Track", - "Software Design" - ], - "abstract_long": [ - "This talk is based on the speaker's experience running a Python focused software company for more than 15 years and a recent consulting project to support the valuation of a Python startup company in the due diligence phase.\r\n\r\nFor the valuation we had to come up with metrics, a catalog of criteria analyzing risks, potential and benefits of the startup's solution, as well as an estimate for how much effort it would take to reimplement the solution from scratch.\r\n\r\nIn the talk, I am going to show the metrics we used, how they can be applied to Python code, the importance of addressing risk factors, well designed code and data(base) structures.\r\n\r\nBy following some of the advice from this talk, you should be able to improve the valuation of your startup or consulting business in preparation for investment rounds or an acquisition.\r\n", - "", - "", - "" - ], - "abstract_extra": "Marc-Andre Lemburg is a regular speaker at Python conferences and has been giving Python talks ever since the first European Python Meeting in 2001.\r\n\r\nThe following page includes some of the talk he has given over the years:\r\n\r\nhttp://www.egenix.com/library/presentations/\r\n\r\nMarc-Andre also runs a local user group in D\u00fcsseldorf, together with Charlie Clark, where he regularly gives shorter or longer talks on various topics in German:\r\n\r\nhttp://www.egenix.com/library/pyddf/videos.html\r\n", - "tag_categories": [ - "Databases", - "Best Practice and Use Cases", - "Best Practice and Use Cases", - ">>> Suggested Track", - "Programming" - ], - "emails": "mal@europython.eu", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/so-you-think-your-startup-is-worth-10-million", - "admin_type": "", - "companies": "eGenix.com Software GmbH" - }, - "501": { - "abstract_short": "Having to deal with a monolith, an application which became far to big over the time, can be quite bothersome. On the other hand if you split it up and have to deal with lots of smaller components, you might end up in dependency hell. But not only the splitting of the monolith and the management of the dependencies afterwards can be a problem, but also the packaging of you python components itself. \r\n ", - "sub_title": "", - "timerange": "2016-07-22 12:00:00, 2016-07-22 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@tmuxbee", - "id": 501, - "speakers": "Patrick M\u00fchlbauer", - "title": "Split Up! Fighting the Monolith", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "System Architecture", - "Best Practice", - "Testing", - "Packaging" - ], - "abstract_long": [ - "Do you know this situation, where you and your team are facing this big monolith? An application which has grown far too\r\nbig over the years. Every time when you make a change, you have to fear the code might break at a totally different place, because lots of things\r\nare closely intertwined. But what to do if you are at such a point? Maybe you start thinking about microservices but then questions like\r\n\"Are they really the right thing for us?\" and \"How do we get there?\" arise.\r\n\r\nIn my talk I will show you how we are dealing with our monolith. A collection of multiple python packages without clear boundaries, forming the\r\nactual application - all living in a single monorepo.\r\n\r\nI will talk about how we split up the whole thing, making it more flexible for us and also easier to use individual components by other teams.\r\nAll this, of course, comes with a price: You have to think more about the dependencies between you components. You have to think about how\r\nyou can efficiently test everything, making sure your final application is still working correctly.\r\nDon't loosing yourself in dependency hell and packaging all components correctly becomes quite a challenge.\r\n\r\nThis talk will:\r\n\r\n - show you bad patterns to avoid, so that you don't end up in the above situation in the first place\r\n - give you ideas what to consider when tackling your monolith\r\n - explain how to package your python components and how to mange your dependencies\r\n\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "Best Practice and Use Cases", - "Testing", - "Python" - ], - "emails": "tmuxbiene@googlemail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/split-up-fighting-the-monolith", - "admin_type": "", - "companies": "Blue Yonder " - }, - "748": { - "abstract_short": "a", - "sub_title": "", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 748, - "speakers": "Solomon Bisker", - "title": "Sponsored talk: Hired", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "python" - ], - "abstract_long": [ - "a" - ], - "abstract_extra": "", - "tag_categories": [ - "" - ], - "emails": "solomon@hired.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/sponsored-talk-hired", - "admin_type": "", - "companies": "" - }, - "524": { - "abstract_short": "In times of NoSQL databases and Map Reduce Algorithms it's surprising how far\r\nyou can scale the relational data model. At [Blue Yonder](http://blue-yonder.com)\r\nwe use SQLAlchemy in all stages of our data science workflows and handle tenth\r\nof billions of records to feed our predictive algorithms. This talk will dive\r\ninto SQLAlchemy beyond the Object Relational Mapping (ORM) parts and conentrate\r\non the SQLAlchemy Core API, the Expression Language and Database Migrations\r\nwith Alembic.", - "sub_title": "", - "timerange": "2016-07-20 11:15:00, 2016-07-20 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@peterhoffmann", - "id": 524, - "speakers": "Peter Hoffmann", - "title": "SQLAlchemy as the backbone of a Data Science company", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Big Data", - "SQL Alchemy", - "Data Science", - "Databases" - ], - "abstract_long": [ - "In times of NoSQL databases and Map Reduce Algorithms it's surprising how far\r\nyou can scale the relational data model. At [Blue Yonder](http://blue-yonder.com)\r\nwe use SQLAlchemy in all stages of our data science workflows and handle tenth\r\nof billions of records to feed our predictive algorithms. This talk will dive\r\ninto SQLAlchemy beyond the Object Relational Mapping (ORM) parts and conentrate\r\non the SQLAlchemy Core API and the Expression Language:\r\n\r\n- **Database Abstraction**: Statements are generated properly for different\r\n database vendor and type without you having to think about it.\r\n\r\n- **Security**: Database input is escaped and sanitized prior to beeing commited \r\n to the database. This prevents against common SQL injection attacks.\r\n\r\n- **Composability and Reuse**: Common building blocks of queries are expressed\r\n as SQLAlchemy selectables and can be reuesd in other queries.\r\n\r\n- **Testability**: SQLAlchemy allows you to perform functional tests against a database\r\n or mock out queries and connections.\r\n\r\n- **Reflection**: Reflection is a technique that allows you to generate a\r\n SQLAlchemy repesentation from an existing database. You can reflect tables,\r\n views, indexes, and foreign keys.\r\n\r\nAs a result of the usage of SQLAlchemy in Blue Yonder, we have implemented and\r\nopen sourced a SQLAlchemy dialect for the in memory, column-oriented database\r\nsystem [EXASolution](https://github.com/blue-yonder/sqlalchemy_exasol)" - ], - "abstract_extra": "", - "tag_categories": [ - "Data Science", - "Databases", - "Data Science", - "Databases" - ], - "emails": "peter.hoffmann@blue-yonder.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/sqlalchemy-as-the-backbone-of-a-data-science-company", - "admin_type": "", - "companies": "Blue Yonder" - }, - "477": { - "abstract_short": "System tests are an invaluable tool for verifying correctness of large scale online services. This talk will discuss best practices and tooling (pytest and docker-py) for writing maintainable system tests.\r\n\r\nDemonware has used System tests to verify online services for some of the biggest AAA video game launches as well as internal operational tools.\r\n\r\nMany folks who write software are familiar with unit testing, but far fewer with system testing.", - "sub_title": "", - "timerange": "2016-07-20 14:30:00, 2016-07-20 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@bobcatwilson, @mtomwing", - "id": 477, - "speakers": "Christie Wilson, Michael Tom-Wing", - "title": "System Testing with pytest and docker-py", - "have_tickets": [ - true, - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Best Practice", - "Distributed Systems", - "Test Libraries (pyTest/node/...)", - "Docker", - "Testing" - ], - "abstract_long": [ - "System testing a microservice architecture is challenging. As we move away from monolithic architectures, system testing becomes more important but also more complicated.\r\n\r\nIn the video game industry, if a game doesn\u2019t work properly immediately after launch, it will heavily impact game success. We have found system testing to be an important tool for pre launch testing of game services and operational tools, to guarantee quality of these services at launch.\r\n\r\nWe want to share with you best practices for system testing: when to write system tests, what to test and what not to, and common pitfalls to avoid. Using python\u2019s pytest tool and docker-py for setting up services and their dependencies has made it easier than ever to write complex but maintainable system tests and we\u2019ll share with you how we\u2019ve made use of them.\r\n\r\nDevelopers (senior and junior) and ops folks can walk away from this talk with practical tips they can use to apply system testing to their software.", - "", - "", - "" - ], - "abstract_extra": "Please note that I would be presenting with my colleague Michael Tom-Wing\r\n\r\nI founded and run PyLadies Vancouver, where I regularly speak at meetups.\r\n\r\nMichael Tom-Wing and I have together presented tutorials on unit testing at pydx (http://pydx.org/) and at several PyLadies Vancouver meetups (www.meetup.com/PyLadies-Vancouver/). We will be delivering this tutorial at PyCon this year as well. The content of the tutorial is available on github: https://github.com/keeppythonweird/catinabox#catinabox---intro-to-testing-and-test-automation-in-python", - "tag_categories": [ - "Best Practice and Use Cases", - "DevOps", - "Testing", - "DevOps", - "Testing" - ], - "emails": "bobcatfish@gmail.com, mtomwing@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/system-testing-with-pytest-and-docker-py", - "admin_type": "", - "companies": "Demonware" - }, - "648": { - "abstract_short": "A framework-agnostic approach to creating Python microservices with a tests-first approach.\r\nI'll show how to utilize Docker and Swagger to create service and contract tests that run your service as an independent process, as if it was running in production, giving you and your team a higher degree of confidence when introducing changes.\r\n\r\nA little bit of a broader microservice, TDD and work management context will also be given.", - "sub_title": "Docker, Swagger and Pytest to the rescue", - "timerange": "2016-07-22 12:00:00, 2016-07-22 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 648, - "speakers": "Micha\u0142 Bultrowicz", - "title": "TDD of Python microservices", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Test Driven Development (TDD)", - "Docker", - "RESTful", - "Web Track" - ], - "abstract_long": [ - "These will be my ideas on how to help a microservice-based (HTTP) project by integrating testing into the development process (TDD).\r\nI'll approach the testing pyramid presented in Martin Fowler's \"Microservice Testing\" as well as the test variants in \"Building Microservices\" (O'Reilly) and I'll show a way of how they can be translated to real-life Python.\r\n\r\nThe main focus will be on \"service tests\" (aka. out-of-process component tests) and contract tests. They both can be run relatively fast on a development machine and can give fast feedback to the developer, preventing many kinds of problems.\r\n\r\nService tests run the whole application process without any internal modifications, but have to present the service with a fake \"outside world\". I'll show how to fake external HTTP services with Mountebank (similar to WireMock). Instead of faking other systems (like databases) we can quickly spin up the real deal as a Docker container from within the tests.\r\n\r\nContract tests check if the contract (interface) of your service with the outside world is kept, so no external services should be broken by the changes you are introducing. It can also work the other way around, proving that your collaborators are keeping their part of the deal. In both cases, Swagger (a RESTful API description scheme) and a few clever tricks can be used for significant advantage." - ], - "abstract_extra": "I've worked as developer and then a technical team leader on one of the teams working on Intel's Trusted Analytics Platform - a solution based on microservices and PaaS.\r\n\r\nI've presented once before, during EuroPython 2015 . My talk title was \"Python microservices on PaaS done right\". This is a continuation of this talk, focusing more on testing and the experiences I had for the past year.", - "tag_categories": [ - "Testing", - "DevOps", - "Web", - ">>> Suggested Track" - ], - "emails": "michalbultrowicz@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/tdd-of-python-microservices", - "admin_type": "", - "companies": "N/A" - }, - "519": { - "abstract_short": "We will present the test-driven reuse (TDR) development strategy, a natural extension of test-driven development (TDD), and how to execute it with [pytest-nodev][1] a test-driven search engine for Python code.\r\n\r\n [1]: http://pytest-nodev.readthedocs.io/en/stable/quickstart.html\r\n\r\nPytest-nodev and the other nodev tools that helps implement TDR for Python are rather new, in spite of that we will present several successful applications of the technique to more and more complex examples.", - "sub_title": "Its like test-driven development... without the development bit.", - "timerange": "2016-07-22 11:15:00, 2016-07-22 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@alexamici", - "id": 519, - "speakers": "Alessandro Amici", - "title": "Test-driven code search and reuse coming to Python with pytest-nodev", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Test Driven Development (TDD)", - "Educational Track", - "Test Libraries (pyTest/node/...)", - "Testing", - "Best Practice" - ], - "abstract_long": [ - "We will present the test-driven reuse (TDR) development strategy, a natural extension of test-driven development (TDD), and how to execute it with [pytest-nodev](http://pytest-nodev.readthedocs.io/en/stable/quickstart.html) an Open Source test-driven search engine for Python code.\r\n\r\nWhen developing new functionalities developers spend significant efforts searching for code to reuse, mainly via keyword-based searches, e.g. on StackOverflow and Google. Keyword-based search is effective in finding code that is explicitly designed and documented to be reused, e.g. libraries and frameworks, but typically fails to identify reusable functions and classes in the large corpus of auxiliary code of software projects.\r\n\r\nTDR aims to address the limits of keyword-based search with test-driven code search that focuses instead on code behaviour and semantics. Developing a new feature in TDR starts with the developer writing the tests that will validate candidate implementations of the desired functionality. Before writing any functional code the tests are run against all functions and classes of available projects. Any code passing the tests is presented to the developer as a candidate implementation for the target feature.\r\n\r\n[Pytest-nodev](https://github.com/nodev-io/pytest-nodev) and other nodev tools that help implement TDR for Python are newer than the JAVA counterparts, in spite of that we will present several applications of the technique to more and more complex examples." - ], - "abstract_extra": "Two open source projects will be demonstrated:\r\n\r\n- https://github.com/nodev-io/pytest-nodev\r\n- https://github.com/nodev-io/nodev.specs\r\n\r\nWe would love to announce the beta of an on-line test-driven code search service at EuroPython. No promises, though.", - "tag_categories": [ - "Testing", - ">>> Suggested Track", - "Testing", - "Testing", - "Best Practice and Use Cases" - ], - "emails": "a.amici@bopen.eu", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/test-driven-source-code-search-for-python-with-pytest-nodev", - "admin_type": "", - "companies": "B-Open Solutions srl" - }, - "486": { - "abstract_short": "In this session you will learn your way around Python 3\u2019s unittest.mock package through examples. You\u2019ll learn about the Mock class, sentinels and patching. You will see the benefits that mocks can bring and learn to avoid the pitfalls. Along the way I\u2019ll fill you in on some of the bewildering terminology surrounding mocks such as \u201cSUT\u201d, \u201cStub\u201d, \u201cDouble\u201d, \u201cDummy\u201d , \u201cmockist\u201d and more and I\u2019ll give a brief plug for my own mockextras package that can enhance your mock experience.", - "sub_title": "", - "timerange": "2016-07-22 15:45:00, 2016-07-22 16:15:00", - "sub_community": "", - "duration": 30, - "twitters": "@andrewburrows", - "id": 486, - "speakers": "Andrew Burrows", - "title": "Testing the untestable: a beginner\u2019s guide to mock objects", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Beginners", - "Testing" - ], - "abstract_long": [ - "Mock objects can be a powerful tool to write easy, reliable tests for the most difficult to test code. In this session you will learn your way around Python 3\u2019s unittest.mock package starting at the simplest examples and working through progressively more problematic code. You\u2019ll learn about the Mock class, sentinels and patching and how and when to use each of them. You will see the benefits that mocks can bring and learn to avoid the pitfalls. Along the way I\u2019ll fill you in on some of the bewildering terminology surrounding mocks such as \u201cSUT\u201d, \u201cStub\u201d, \u201cDouble\u201d, \u201cDummy\u201d , \u201cmockist\u201d and more and I\u2019ll give a brief plug for my own mockextras package that can enhance your mock experience." - ], - "abstract_extra": "I have given many presentations within my organisation to audiences of up to 100+ people but have no publicly referenceable examples. \r\n\r\nI am testing mentor for all Man AHL developers, especially new hires. I have given variants of this presentation numerous times within my workplace.\r\n\r\nI am the developer and maintainer of the mockextras library, which I will give a small plug for in the talk.\r\n\r\nhttp://mockextras.readthedocs.org/\r\nhttps://github.com/manahl/mockextras\r\nhttps://pypi.python.org/pypi/mockextras", - "tag_categories": [ - "Educational", - "Testing" - ], - "emails": "aburrows@ahl.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/testing-the-untestable-a-beginners-guide-to-mock-objects", - "admin_type": "", - "companies": "Man AHL" - }, - "745": { - "abstract_short": "CPython's GIL means your Python code can only run on one CPU core at a time. Can we remove it? Yes, we can... in fact we already have! But is it worth the cost?", - "sub_title": "Removing CPython's GIL", - "timerange": "2016-07-20 14:30:00, 2016-07-20 15:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@larryhastings", - "id": 745, - "speakers": "Larry Hastings", - "title": "The Gilectomy", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Performance", - "Multi-Threading", - "CPython" - ], - "abstract_long": [ - "CPython's \"Global Interpreter Lock\", or \"GIL\", was added in 1992. It was an excellent design decision. But 24 years is a long time--today it prevents Python from capitalizing on multiple CPUs. Many people want us to remove the GIL.\r\n\r\nIt turns out, removing the GIL isn't actually that hard. In fact, I already removed it, in my experimental \"gilectomy\" branch. But the GIL is one reason CPython is so fast! The \"gilectomy\" makes CPython shockingly slow.\r\n\r\nThis talk will discuss the history of the GIL, how the GIL helps make CPython fast, how the \"gilectomy\" removed the GIL, and some ways we might be able to make the \"gilectomy\" version fast enough to be useful." - ], - "abstract_extra": "I gave a version of this talk at PyCon 2016. The room was full five minutes before starting and many, many people were turned away at the door.", - "tag_categories": [ - "Programming", - "Programming", - "Python" - ], - "emails": "larry@hastings.org", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/the-gilectomy", - "admin_type": "", - "companies": "Python CoreDev" - }, - "683": { - "abstract_short": "I would like to indicate main keys to success, factors and features that help a developer to find himself on an independent career path.\r\nHow to create employee-friendly work environment for Python developers?\r\nWhich business model gives a chance to attract and keep more than 100 Python enthusiast?\r\nI will also gladly share some lessons learned working with dozens of clients, dozens of Python frameworks, and lots, lots of great developers.", - "sub_title": "", - "timerange": "2016-07-18 12:00:00, 2016-07-18 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@mdziergwa", - "id": 683, - "speakers": "Maciej Dziergwa", - "title": "The Journey from Python Developer to Python Company Owner", - "have_tickets": [ - false - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Business Track", - "Community" - ], - "abstract_long": [ - "Ten years ago I became a big Python fan, but at the time there were no jobs for Python developers in Poland. So, I decided to start my own Python company. Today, ten years later, this company employs more than 100 Python Developers in four cities.\r\n\r\nThere are a lot of Python enthusiasts in the world, many of them more skilled than I was at that time, but clearly not anyone can become a \u201ePython Business Developer\u201d. In this talk I would like to indicate main keys to success, factors and features that help a developer to find himself on an independent career path.\r\n\r\nMy goal is to answear these questions:\r\n\r\nHow to create employee-friendly work environment for Python developers?\r\n\r\nWhich business model gives a chance to attract and keep more than 100 Python enthusiast?\r\n\r\nI will also gladly share some lessons learned while working with dozens of clients, dozens of Python frameworks, and lots, lots of great developers. " - ], - "abstract_extra": "", - "tag_categories": [ - ">>> Suggested Track", - "Community" - ], - "emails": "mdziergwa@stxnext.pl", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/the-journey-from-python-developer-to-python-company-owner", - "admin_type": "", - "companies": "STX Next" - }, - "398": { - "abstract_short": "In this talk discusses some joyful exercises in simulation. I'll demonstrate it's usefulness but moreover I'll discuss the sheer joy. I'll discuss how to generate song lyrics, I'll discuss how to get better at casino games, how to avoid math, how to play monopoly or even how to invest in lego minifigures. No maths required; just a random number generator. ", - "sub_title": "Make a living selling lego mini-figures on ebay.", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@fishnets88", - "id": 398, - "speakers": "vincent warmerdam", - "title": "The Joy of Simulation: for Fun and Profit", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Education", - "Beginners", - "Algorithms", - "Data Science", - "Science" - ], - "abstract_long": [ - "In this talk discusses some joyful exercises in simulation. I'll demonstrate it's usefulness but moreover I'll discuss the sheer joy you can experience. \r\n\r\nI'll go over the following points (the short list):\r\n\r\n- I'll show how you can avoid math by simulating; I'll calculate the probability that two people in the live room have the same birthday. \r\n- I'll show how simulation can help you get better at many games. I'll start with simple card games and with the game of roulette. Most prominently I'll discuss how to determine the value of buying an asset in the game of monopoly (See blogpost: http://koaning.io/monopoly-simulations.html). \r\n- I'll demonstrate how you can simulate Red Hot Chilli Pepper lyrics. Or any other band. Or legalese. \r\n- I'll demonstrate the results of a scraping exercise which helped me to determine the value of investing in Lego Minifigures (See blogpost: http://koaning.io/lego-minifigs-stochastics-profit.html). \r\n\r\nDepending on the level of the audience I might also discuss how biased simulation can help you solve optimisation problems or even introduce bayesian statistics via sampling. I'll gladly leave this decision to the EuroPython committee. ", - "", - "", - "" - ], - "abstract_extra": "I am the founding committee member of PyData Amsterdam and I've spoken before at PyData events as well as EuroPython. You can find me on twitter or at my blog over at koaning.io. ", - "tag_categories": [ - "Educational", - "Educational", - "Data Science", - "Data Science", - "Sciences" - ], - "emails": "vincentwarmerdam@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/the-joy-of-simulation-for-fun-and-profit", - "admin_type": "", - "companies": "GoDataDriven" - }, - "599": { - "abstract_short": "This talk will teach you how Twisted or Tornado supplement asyncio, how asyncio can/is integrated with these frameworks, and makes a case for the continued development of new and existing selector-loop based frameworks. It will also paint a picture of the future direction of Twisted, why the original plan of asyncio as a standard API has not come to complete fruition, and what can be done about it. ", - "sub_title": "Why Twisted and Tornado Are Relevant In The Asyncio Age", - "timerange": "2016-07-18 14:45:00, 2016-07-18 15:30:00", - "sub_community": "", - "duration": 45, - "twitters": "@hawkieowl", - "id": 599, - "speakers": "Amber Brown", - "title": "The Report Of Twisted\u2019s Death", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Performance", - "ASYNC / Concurreny" - ], - "abstract_long": [ - "- Introduction (3 min)\r\n - I\u2019m Amber Brown, Twisted Release Manager\r\n - 3 years contributing to the Twisted Project\r\n- What is asynchronous I/O? (5 min)\r\n- How can it be implemented? (5 min)\r\n- The options (5 min)\r\n - Twisted, Tornado, asyncio\r\n- Asynchronous I/O on Python 3, in 2012 (2 min)\r\n - Tornado was only just ported\r\n - twisted, gevent, eventlet, etc were not ported\r\n- asyncio (7 min)\r\n - Designed as both a \u201ccommon API\u201d for async I/O frameworks, much like WSGI was for web servers\r\n - Built using ideas from Twisted\r\n- asyncio exists, so Twisted and Tornado can go away, right? (5 min)\r\n - asyncio is an \u201casync I/O thing\u201d, and twisted/tornado are \u201casync I/O things\u201d, so Twisted and Tornado aren\u2019t required now, right?\r\n- Twisted\u2019s Renaissance (5 min)\r\n - 450,000 LoC, fifteen years of legacy, supports many many major protocols\r\n - Twisted hits 50% on the port to Python 3\r\n - Pressure from asyncio providing renewed competition\r\n - The very existence of asyncio means we no longer need to have the \u201cwhy is asynchronous I/O a good idea\u201d\r\n- But It\u2019s Not Over Yet (5 min)\r\n - Twisted does not implement nor use the asyncio standard APIs, Twisted needs help and developer support to do this\r\n - Support on Windows is still subpar, as the asyncio IOCP proactor does not support UDP\r\n- The Future (8 min)\r\n - A Twisted You Can Use\r\n - WSGI 2\r\n - asyncio standardisation\r\n- Questions (5 min)\r\n", - "", - "", - "" - ], - "abstract_extra": "This is a talk which has been accepted for PyCon US 2016. The full abstract, as submitted to PyCon US, is available at https://dl.dropboxusercontent.com/u/14290114/Twisted%20and%20Tornado%20in%20The%20Age%20of%20Asyncio.pdf .\r\n\r\nI've previously given talks at DjangoCon AU (keynote 2015), PyCon AU (2014, 2015), PyCon CZ (keynote 2015), and Django Under The Hood (2015).", - "tag_categories": [ - "Programming", - "Programming" - ], - "emails": "hawkowl@atleastfornow.net", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/the-report-of-twisteds-death", - "admin_type": "", - "companies": "" - }, - "651": { - "abstract_short": "Mindfulness has proven to be a foundational skill that started as a pure buddhist practice. Nowadays mindfulness serves as the core technique of several western programs ranging from curing stress-induced medical problems to curricula for teaching successful business leadership, such as the Search Inside Yourself program developed at Google. \r\n\r\nThe aim of this seminar is to provide a practical experience of mindfulness with a short introduction to how it can be applied by digital workers.", - "sub_title": "", - "timerange": "2016-07-22 16:15:00, 2016-07-22 16:45:00", - "sub_community": "", - "duration": 30, - "twitters": "@https://twitter.com/ralhei", - "id": 651, - "speakers": "Ralph Heinkel", - "title": "The value of mindfulness and how it has arrived at Google", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [], - "abstract_long": [ - "Mindfulness has proven to be a foundational skill that started as a pure buddhist practice. Nowadays mindfulness serves as the core technique of several western programs ranging from curing stress-induced medical problems to curricula for teaching successful business leadership, such as the Search Inside Yourself (SIY) program developed at Google in 2002. \r\n\r\nMind is the root of all things. Neuroscience shows that attention is a fundamental function of the mind. Being able to direct attention to the present moment - and keep it there while performing daily tasks - is a great tool to navigate through life and its challenges with more engagement, more happiness, and more resilience. Focusing attention in a relaxed way enables us to disconnect from the overall noise found in a high-speed environment and get things done without feeling too overwhelmed by them. But being effective is not only about checking off more tasks - it is about how we are in resonance with our environment, how we interact with others, and how we face the increasing complexity in our professional life. \r\n\r\nThe aim of this seminar is to provide a practical experience of mindfulness with a short introduction to how it can be applied in a technology driven world as experience by digital workers." - ], - "abstract_extra": "", - "tag_categories": [], - "emails": "rh@ralph-heinkel.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/the-value-of-mindfulness-and-how-it-has-arrived-at-google", - "admin_type": "", - "companies": "Freelance Python Developer" - }, - "576": { - "abstract_short": "In recent years one of the ways people get introduced into Python is through its scientific stack. Although this is not bad, it may lead to learn solely one aspect of the language, while overlooking other idioms and functionality included in Python as well as some basic software development good practices. I will share some useful tricks, tools and techniques and software design and development principles that I find beneficial when working on a data processing / science project.", - "sub_title": "", - "timerange": "2016-07-20 12:00:00, 2016-07-20 12:45:00", - "sub_community": "", - "duration": 45, - "twitters": "@mfcabrera", - "id": 576, - "speakers": "Miguel Cabrera", - "title": "Things I wish I knew before starting using Python for Data Processing", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room", - "tags": [ - "Software Design", - "Python general", - "Best Practice", - "Data Science" - ], - "abstract_long": [ - "In recent years of the ways people get introduced into Python is through its scientific stack. Most people that learned Python this way are not trained software developers and many times it is the first contact with a programming language.\r\nAlthough this is not bad, it may lead to learn solely one aspect of the language while overlooking other idioms, standard and common libraries included in Python as well as some basic software development good practices. This may become a problem when a data science project is moved from an experimentation phase to an integration with technical environment. \r\n\r\nIn this talk I share some useful tricks, tools and techniques and as well as some software design and development principles that I find beneficial when working on a data processing / science project.\r\n\r\nThe talk is divided into two parts, one is Python centered, where I will talk about some powerful Python construct that are useful in data processing tasks. This include some parts collections module, generators and iterators among others. The other I will describe some general software development concepts including SOLID, DRY, and KISS that are important to understand the rationale behind software design decisions. \r\n" - ], - "abstract_extra": "I am been thinking in the idea for this talk for some time already . I gave a lighting talk on this subject during the [PyData Meetup in Berlin in 2015][1].\r\n\r\nAs speaker experience I have spoken in some meetups and talks including Munich Data Geeks, PyData Meetup, PyData Berlin 2015. I also gave a lighting talk at Europython 2015. \r\n\r\nSome of my slides can be found here: https://speakerdeck.com/mfcabrera\r\n\r\n [1]: https://speakerdeck.com/mfcabrera/pydata-berlin-meetup-nov-2015-some-of-the-things-i-wish-i-knew-before-starting-using-python-for-data-science\r\n", - "tag_categories": [ - "Programming", - "Python", - "Best Practice and Use Cases", - "Data Science" - ], - "emails": "mfcabrera@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/things-i-wish-i-knew-before-starting-using-python-for-data-processing", - "admin_type": "", - "companies": "TrustYou" - }, - "617": { - "abstract_short": "What systems and tools are useful for encrypting and securing email today? After discussing attack vectors we'll explore two user-side techniques for establishing end-to-end encryption, GPG and S/MIME. We then look at two projects which aim to provide ready-made email-server provisioning, Mail-in-a-box and LEAP and conclude with spotlights on ongoing EU-research projects aiming to improve email. ", - "sub_title": "", - "timerange": "2016-07-19 10:30:00, 2016-07-19 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@, @", - "id": 617, - "speakers": "holger krekel, Kali Kaneko", - "title": "Towards More Secure Emailing", - "have_tickets": [ - true, - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Security", - "Infrastructure", - "Best Practice" - ], - "abstract_long": [ - "Email has been declared dead several times but refuses to die. It remains the backbone of the web and remains the largest federated open social network to date. However, most people and organisations rely on a few big email operators which fund their operations through advertisements and user tracking. But is it neccessary to hand off email messaging operations to large operators? Is dealing with unsolicited email (SPAM) still too maintenance intensive to deploy it by yourself? Is handling secret keys to unlock encrypted mails still a nightmare? Are there somewhat secure email hosting solutions?\r\n\r\nIn recent years there have been renewed efforts to renovate the state of world wide email infrastructure with initiatives such as the \"Dark Mail Alliance\", \"FreedomBox\", \"Mailpile\", \"Mail-in-a-box\" and the \"LEAP encryption access project\". Some of them are using Python to provide security to users both from criminal, corporate and state level attacks and could use help from experienced python programmers.\r\n\r\nThe talk concludes with highlighting current ongoing research (Panoramix and NEXTLEAP) funded by the European Union over the next couple years. They try to ease and automate key management and provide \"encryption by default\" among other goals. After this talk you'll end up having a better understanding of how you can use existing technologies for yourself or your organisation and how you can possibly help to improve them and make life for users and activists safer world-wide.", - "", - "", - "" - ], - "abstract_extra": "I intend to give this talk with Kali Kaneko from Guatemala but didn't see a way to add him as co-speaker. ", - "tag_categories": [ - "Security", - "DevOps", - "Best Practice and Use Cases" - ], - "emails": "holger@merlinux.eu, bennomadic@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/towards-more-secure-emailing", - "admin_type": "", - "companies": "LEAP Encrypted Access Project, merlinux GmbH" - }, - "644": { - "abstract_short": "El ecosistema cient\u00edfico de python es extraordinario y saca m\u00fasculo con las \u00faltimas aportaciones de la comunidad cient\u00edfica. Revisaremos nuevas aproximaciones a la representaci\u00f3n de texto. \u00a1Tus cadenas de texto merecen algo m\u00e1s que una m\u00edsera bolsa de palabras! Veremos c\u00f3mo se aplica la representaci\u00f3n distribuida (word embeddings) en un caso pr\u00e1ctico de aprendizaje autom\u00e1tico, y daremos consejos para hacer experimentos replicables y obtener datos significativos.", - "sub_title": "\u201cNuevas\u201d aproximaciones a la representaci\u00f3n de texto para el procesamiento del lenguaje natural", - "timerange": "2016-07-19 11:15:00, 2016-07-19 12:00:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@maidotgimenez", - "id": 644, - "speakers": "Mai Gim\u00e9nez", - "title": "Un vector por tu palabra", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Educational Track", - "Science Track", - "PyLadies", - "Data Science", - "Deep Learning" - ], - "abstract_long": [ - "\u201cDime con quien andas y te dir\u00e9 c\u00f3mo eres\u201d Este dicho es una de las ideas m\u00e1s revolucionarias en PLN. Podemos saber muchas cosas de una palabra por su contexto. No es lo mismo un adorable gato que un gato mec\u00e1nico, pero por el contexto diferenciamos esta palabra polis\u00e9mica.\r\nHasta ahora la mayor parte de los modelos representan una frase como una bolsa de palabras. Por ejemplo, si queremos representar este conjunto de frases: [\u201cI love Python\u201d, \u201cI love NLP\u201d, \u201cPyladies are cool\u201d] tenemos un vocabulario de siete palabras: [\u201cI\u201d, \u201clove\u201d, \u201cPython\u201d, \u201cNLP\u201d, \u201cPyladies\u201d, \u201care\u201d, \u201ccool\u201d] esta representaci\u00f3n crea un vector de tama\u00f1o del vocabulario para cada frase, y pone a 1 si la palabra aparece y a 0 en el caso contrario : [[1,1,1,0,0,0,0], [1,1,0,1,0,0,],[0,0,0,0,1,1,1]] \u00a1Pero,se pierde el contexto y los vectores pueden ser gigantes y con much\u00edsimos 0s!\r\nRecientemente, hemos encontrado una forma mucho mejor de representar las palabras: La representaci\u00f3n distribuida -word2vec, por ejemplo- \r\nEn esta charla exploramos esta representaci\u00f3n y c\u00f3mo aplicarla en problemas de clasificaci\u00f3n utilizando textos de redes sociales. \r\nNavegaremos por el rico ecosistema cient\u00edfico en python, veremos c\u00f3mo crear gr\u00e1ficas significativas y hablaremos de la importancia de escribir experimentos bien dise\u00f1ados, replicables y con c\u00f3digo elegante y por supuesto de la importancia de difundir el conocimiento. Debemos inspirar a la siguiente generaci\u00f3n de cient\u00edficos y cient\u00edficas \u00a1Seamos extraordinarios!" - ], - "abstract_extra": "He dado charlas en la PyConES 2013 (https://youtu.be/8MRG6SixmeM), PyConES 2014 (https://youtu.be/k5-50FFCifw) y estuve en la sesi\u00f3n de posters de la PyCon 2014(https://us.pycon.org/2014/schedule/presentation/94/). He formado parte del equipo organizador de la PyConEs 2015.\r\nDoy charlas en Python Valencia, Betabeers y en pr\u00e1cticamente en cualquier evento que me dejen predicar sobre lo mol\u00f3n que es python, lo importante que es la diversidad en la comunidad y en definitiva compartir conocimiento. \r\n", - "tag_categories": [ - ">>> Suggested Track", - ">>> Suggested Track", - "Community", - "Data Science", - "Data Science" - ], - "emails": "mai@immutable.es", - "language": "Spanish", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/un-vector-por-tu-palabra", - "admin_type": "", - "companies": "" - }, - "703": { - "abstract_short": "I will describe a scientific application of python in the field of Astrophysics and Cosmology. How the publicly available package Monte Python is used to compare data from space satellite missions with theoretical models that attempt to describe the evolution and content of the Universe. The result is surprising, as it points towards a Universe which is mainly dark.", - "sub_title": "", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@vpettorino", - "id": 703, - "speakers": "Valeria Pettorino", - "title": "Unveiling the Universe with python", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Visualization", - "Science", - "Python general", - "Scientific Libraries (Numpy/Pandas/SciKit/...)", - "Physics" - ], - "abstract_long": [ - "Python is widely used in Cosmology, which is the study of the Universe and all forms of energy in it. A large amount of data has been recently obtained through space satellite missions, such as Planck, financed by ESA/NASA. Planck has observed the radiation emitted about 13 billion years ago (the Cosmic Microwave Background, CMB), which gives us information on the content and space-time geometry of the Universe. Many competitive theoretical models have been proposed that aim at describing the evolution of the species contained in the Universe: therefore, cosmologists need a method to identify which theoretical model better fits the data. In order to compare data with theoretical predictions, cosmologists use Bayesian statistics and Monte Carlo simulations. Among the tools developed for the analysis, the package \u2018Monte Python\u2019 is publicly available and uses python to perform Monte Carlo simulations: this allows to determine the theoretical model that maximizes the likelihood to obtain the observed data. Such model is now the standard cosmological model and reveals a Universe that is very different from what scientists had ever expected. A Universe in which the atoms we are made of, constitute only 5% of the total energy budget. The rest is the so-called \u2018Dark Universe\u2019.\r\n\r\nI will illustrate the story of how cosmologists used python to analyse the data of the CMB and unveil the Dark Universe.", - "", - "", - "" - ], - "abstract_extra": "none", - "tag_categories": [ - "Data Science", - "Sciences", - "Python", - "Data Science", - "Sciences" - ], - "emails": "valeria.pettorino@me.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/unveiling-the-universe-with-python", - "admin_type": "", - "companies": "University of Heidelberg" - }, - "434": { - "abstract_short": "Python\u2019s double-underscore ('`__`') methods and attributes go by many names, including \u201cspecial\u201d, \u201cdunder\u201d, and \u201cmagic\u201d. You already use some, like `__init__`, but there are many more! \r\n\r\nIn this talk, we\u2019ll see how dunders can be useful, silly, dangerous, and fun! We\u2019ll trick Python\u2019s arithmetic and comparison operators. We\u2019ll make objects behave like dictionaries and containers. We\u2019ll reduce an object\u2019s memory usage, and speed up membership tests. We\u2019ll even try some naughty function hacks!\r\n", - "sub_title": "The world of special dunder magic", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@AnjanaVakil", - "id": 434, - "speakers": "Anjana Vakil", - "title": "Using and abusing Python\u2019s double-underscore methods and attributes", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Python 3", - "Python general", - "Programming" - ], - "abstract_long": [ - "The curious Python methods and attributes surrounded by double underscores ('`__`') go by many names, including \u201cspecial\u201d, \u201cdunder\u201d, and \u201cmagic\u201d. You probably use some of them, like `__init__`, every day. But that\u2019s just the tip of the iceberg! \r\n\r\nIn this talk, we\u2019ll explore the weird and wonderful world of the double-underscore, and find out how dunders can be useful, silly, dangerous, and just fun! We\u2019ll play pranks on Python\u2019s builtin operators for arithmetic and comparison. We\u2019ll make arbitrary objects behave like dictionaries and containers. We\u2019ll reduce an object\u2019s memory usage, and speed up tests for membership. We\u2019ll even try some naughty function hacks that we should never use in real life!\r\n\r\nYou'll get the most out of this talk if you're already comfortable writing object-oriented Python code. If you already use special dunder magic in your own code, that's excellent! You\u2019ll have a chance to share your tips & tricks with the rest of the audience at the end of the talk.\r\n" - ], - "abstract_extra": "Approximate timeline (30 minute talk):\r\n\r\n - :00 - Hello, who I am, gauge audience experience with dunders (1 min.)\r\n - :01 - Intro, familiar dunders (e.g. `__init__`, `__str__`) (2 min.)\r\n - :03 - Arithmetic and comparisons: (e.g. `__mod__`, `__eq__`) (4 min.)\r\n - :07 - Emulating dictionaries (`__getitem__`, etc.) and collections (`__len__`, `__contains__`) (5 min.)\r\n - :12 - Optimizations: `__contains__`, `__slots__` (4 min.)\r\n - :16 - Function hacks: implementing `__call__` on non-functions, replacing a function\u2019s `__defaults__` and `__code__` (4 min.)\r\n - :20 - Links to further reading; Audience members share their dunder tricks (5 min.)\r\n - :25 - Q&A (5 min.)\r\n\r\nI\u2019m submitting this as a standard 30-minute talk, but I think it\u2019s possible the topic could also work for an interactive session, with the audience participating in coding through the examples and coming up with ideas for fun and interesting hacks using these methods/variables. If you think it would work better in that format, please let me know.\r\n\r\nEven in the 30-minute talk format, I\u2019d really like to have an interactive tip-sharing session at the end of the talk, as mentioned in the long abstract and timeline. I imagine that this will probably merge with the Q&A and become a 10-minute discussion at the end of the talk. I hope this fits in nicely with the enhanced focus on interactivity for this year\u2019s conference, but if it\u2019s not desirable for whatever reason, I can easily replace the tip-sharing session with additional content (e.g. context managers with `__enter__` and `__exit__`) or examples. \r\n\r\nI haven't given a talk at EuroPython or another Python conference before, but I have public speaking experience in the form of several talks at academic conferences, on software and research for computational linguistics. A list of my previous talks is available at [https://vakila.github.io/talks/ ][1](links to slides are provided).\r\n\r\nIf you have any questions, need clarification, or have any other feedback on this proposal, please do get in touch! I\u2019m best reached by email, but I will be on holiday with limited internet access from February 29 to March 7.\r\n\r\n [1]: https://vakila.github.io/talks/ \r\n", - "tag_categories": [ - "Python", - "Python", - "Programming" - ], - "emails": "anjanavakil@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/using-and-abusing-pythons-double-underscore-methods-and-attributes", - "admin_type": "", - "companies": "Mozilla" - }, - "504": { - "abstract_short": "Let's compare the usage of three major **service discovery** technologies to build a dynamic and distributed python application !\r\n\r\nThis talk will be about **consul**, **etcd** and **zookeeper** and their python bindings and will feature code along with a live demo.", - "sub_title": "Concrete python usage of three Service Discovery technologies", - "timerange": "2016-07-20 10:30:00, 2016-07-20 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@ultrabug", - "id": 504, - "speakers": "Alexys Jacob", - "title": "Using Service Discovery to build dynamic python applications", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "System Architecture", - "Infrastructure", - "Distributed Systems", - "Scaling", - "DevOps general" - ], - "abstract_long": [ - "This talk will **showcase and compare** three Service Discovery technologies and their usage to **build a dynamic and distributed python application** :\r\n\r\n- consul\r\n- etcd\r\n- zookeeper\r\n\r\nAfter a short introduction to service discovery, we will **iterate and compare** how we can address the concrete and somewhat complex design of our python application using each technology.\r\n\r\nWe'll then be able to discuss their strengths, weaknesses and python bindings and finally showcase the application in a demo.\r\n\r\nAll the source code will of course be made available for the audience to benefit and start from for their own use !" - ], - "abstract_extra": "Yes, I'm crazy enough to sell a live demo. I have faith in you and... it worked well last year !", - "tag_categories": [ - "DevOps", - "DevOps", - "DevOps", - "DevOps", - "DevOps" - ], - "emails": "ultrabug@ultrabug.net", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/service-discovery-for-dynamic-python-applications", - "admin_type": "", - "companies": "Numberly" - }, - "404": { - "abstract_short": "Compare full text search engines for Python.\r\n", - "sub_title": "", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:45:00", - "sub_community": "pydata", - "duration": 45, - "twitters": "@a_soldatenko", - "id": 404, - "speakers": "Andrii Soldatenko", - "title": "What is the best full text search engine for Python?", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "PyCharm Room [PyData Track]", - "tags": [ - "PostgreSQL", - "Python 3", - "Elastic Search", - "Documentation" - ], - "abstract_long": [ - "Nowadays we can see lot\u2019s of benchmarks and performance tests of different web frameworks and Python tools. Regarding to search engines, it\u2019s difficult to find useful information especially benchmarks or comparing between different search engines. It\u2019s difficult to manage what search engine you should select for instance, ElasticSearch, Postgres Full Text Search or may be Sphinx or Whoosh. You face a difficult choice, that\u2019s why I am pleased to share with you my acquired experience and benchmarks and focus on how to compare full text search engines for Python.\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Databases", - "Python", - "Databases", - "Programming" - ], - "emails": "andrii.soldatenko@gmail.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/what-is-the-best-full-text-search-engine-for-python", - "admin_type": "", - "companies": "Toptal" - }, - "557": { - "abstract_short": "Haskell community has made lots of small important improvements to packaging in 2015. What can Python community learn from it and how are we different?", - "sub_title": "A subtle introduction into Haskell packaging and differences to Python ecosystem", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 557, - "speakers": "Domen Ko\u017ear", - "title": "What Python can learn from Haskell packaging", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "DevOps general", - "System Administration" - ], - "abstract_long": [ - "Haskell community has been living in \"Cabal hell\" for decades, but Stack tool and Nix language have been a great game changer for Haskell in 2015.\r\n\r\nPython packaging has evolved since they very beginning of distutils in 1999. We'll take a look what Haskell community has been doing in their playground and what they've done better or worse.\r\n\r\nThe talk is inspired by Peter Simons talk given at Nix conference: [Peter Simons: Inside of the Nixpkgs Haskell Infrastructure][1]\r\n\r\n [1]: https://www.youtube.com/watch?v=TDnZsBxqeBM&list=PL_IxoDz1Nq2Y7mIxMZ28mVtjRbbnlVdmy&index=4\r\n\r\nOutline:\r\n\r\n- Cabal (packaging) interesting features overview \r\n - Cabal file specification overview\r\n - Interesting Cabal features not seen in Python packaging\r\n - Lack of features (introduction into next section)\r\n- Cabal hell \r\n - Quick overview of Haskell community frustration over Cabal tooling\r\n- Stack tool overview \r\n - What problem Stack solves\r\n - How Stack works\r\n - Comparing Stack to pip requirements\r\n- Using Nix language to automate packaging \r\n - how packaging is automated for Haskell\r\n - how it could be done for Python" - ], - "abstract_extra": "", - "tag_categories": [ - "DevOps", - "DevOps" - ], - "emails": "domen@dev.si", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/what-python-can-learn-from-haskell-packaging", - "admin_type": "", - "companies": "" - }, - "426": { - "abstract_short": "This talk covers the basics of what Object Orientation (OO) is really about. It focusses on the problem OO is aimed at solving and shows where the OO mechanisms of Python fit into this picture. This material can serve as an introduction to OO for beginners, but also as a homing signal for experienced programmers who are doubting whether they are reaping the benefits OO promises.", - "sub_title": "", - "timerange": "2016-07-21 11:15:00, 2016-07-21 12:00:00", - "sub_community": "", - "duration": 45, - "twitters": "@reahl", - "id": 426, - "speakers": "Iwan Vosloo", - "title": "What's the point of Object Orientation?", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Software Design", - "Programming", - "Abstractions", - "Best Practice" - ], - "abstract_long": [ - "Object Orientation (OO) is often introduced in terms of how it is implemented by a specific language. However, understanding the theory underlying OO is not quite the same as understanding how OO concepts are supported by a particular language. It is insightful to understand the simple OO fundamentals and how these map to the particular implementation provided by Python.\r\n\r\nIn this talk I will first explain the very basics of OO from a language-neutral point of view with the aim of showing what OO can offer you and to give a glimpse of the simple mathematical theory underlying OO. I hope to give you enough information to help you distinguish between better and worse designs and to detect whether you\u2019re using OO as it was intended. I will also very briefly show how these fundamentals map to Python.\r\n\r\nThis talk is for anyone: whether you\u2019re new at Object Orientation, or a practitioner wondering whether OO is worth the effort you\u2019ve spent trying to use it." - ], - "abstract_extra": "Hi, I have given versions of this talk before at PyCon Namibia (not recorded) and [PyConZA (http://youtu.be/M1XL65qj2dU)][1]. People found it useful there, so I thought it may be worthwhile for people at EuroPython too.\r\n\r\nI am the main author of [Reahl (http://www.reahl.org)][2] and gave presentation on it last year at [EuroPython (https://ep2015.europython.eu/conference/talks/reahl-the-python-only-web-framework)][3]\r\n\r\n [1]: http://youtu.be/M1XL65qj2dU\r\n [2]: http://www.reahl.org\r\n [3]: https://ep2015.europython.eu/conference/talks/reahl-the-python-only-web-framework", - "tag_categories": [ - "Programming", - "Programming", - "Everything Else", - "Best Practice and Use Cases" - ], - "emails": "iwan@reahl.org", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/whats-the-point-of-object-orientation", - "admin_type": "", - "companies": "Reahl Software Services (Pty) Ltd" - }, - "521": { - "abstract_short": "We all know Python strength does not rely on its performance and speed when running programs. This plus the flexibility of it, can lead to build real slow and bad quality software.\r\n\r\nIn this talk you will discover a set of useful tools for diagnosing where the bottleneck is in your programs along with trips for quickly realizing which is the most needed resource.", - "sub_title": "", - "timerange": "2016-07-18 10:30:00, 2016-07-18 11:15:00", - "sub_community": "", - "duration": 45, - "twitters": "@", - "id": 521, - "speakers": "Manuel Miranda", - "title": "Where is the bottleneck?", - "have_tickets": [ - true - ], - "type": "Talk (45 mins)", - "status": "accepted", - "track_title": "A2", - "tags": [ - "Performance", - "Best Practice", - "Code Analysis" - ], - "abstract_long": [ - "Have you ever felt like your software is eating your resources and you have no clue why? Have you reviewed all the lines, debugged and printed everything but you still don't know what's wrong?\r\n\r\nIn this talk I will conduct a fast intro of a basic set of tools you can use to diagnose your software's performance and then we will go through a simple piece of code with different problems and solve them one by one, using those previously presented tools ending up with a decent and acceptable piece of code.\r\n\r\nThis set of tools will include basic ones given by the OS itself like `htop`, `lsof`, `ps` and more advanced ones that let you plot the memory usage for given functions like `memory_profiler`, check CPU usage and the call graph between functions like `cprofile` and `kcachegrind` and others.\r\n\r\nAlso, you will discover some bad practices and \"don't dos\" with python language that can slow you down.\r\n\r\nBy the end of the talk, you should have an idea of which are the most typical causes that can make your program slow and you will have a list of tools to search for and identify the source of the problems.\r\n" - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Best Practice and Use Cases", - "Programming" - ], - "emails": "manu.mirandad@gmail.com", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/where-is-the-bottleneck", - "admin_type": "", - "companies": "Skyscanner" - }, - "485": { - "abstract_short": "The LLVM Project provides an intermediate representation (LLVM-IR) that can be compiled on many platforms. LLVM-IR is used by analytical frameworks to achieve language and platform independence. What if we could add Python to the long list of languages that can be translated to LLVM-IR? This talk will go through the steps of wrestling Python into LLVM-IR with a simple, static one-pass compiler.", - "sub_title": "", - "timerange": "2016-07-22 12:00:00, 2016-07-22 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 485, - "speakers": "Anna Herlihy", - "title": "Wrestling Python into LLVM Intermediate Representation", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "Cross-Platform-Development", - "Compiler and Interpreters", - "Open-Source", - "Data Science", - "Analytics" - ], - "abstract_long": [ - "What is LLVM-IR?\r\n\r\nThe LLVM Compiler Infrastructure Project provides a transportable intermediate representation (LLVM-IR) that can be compiled and linked into multiple types of assembly code. What is great about LLVM-IR is that you can take any language and distill it into a form that can be run on many different machines. Once the code gets into IR it doesn\u2019t matter what platform it was originally written on, and it doesn\u2019t matter that Python can be slow. It doesn\u2019t matter if you have weird CPUs - if they\u2019re supported by LLVM it will run.\r\n\r\nWhat is Tupleware?\r\n\r\nTupleWare is an analytical framework built at Brown University that allows users to compile functions into distributed programs that are automatically deployed. TupleWare is unique because it uses LLVM-IR to be language and platform independent.\r\n\r\nWhat is PyLLVM?\r\n\r\nThis is the heart of the talk. PyLLVM is a simple, easy to extend, one-pass static compiler that takes in the subset of Python most likely to be used by Tupleware. PyLLVM is based on an existing project called py2llvm that was abandoned around 2011. \r\n\r\nThis talk will go through some basic compiler design and talk about how some LLVM-IR features make our lives easier, and some much harder. It will cover types, scoping, memory management, and other implementation details. To conclude, it will compare PyLLVM to Numba, a Python-to-LLVM compiler from Continuum Analytics and touch on what the future has in store for PyLLVM.", - "", - "", - "" - ], - "abstract_extra": "Hello!\r\n\r\nI am extremely excited to submit a proposal for EuroPython 2016! I\u2019ve been getting to know the Python community over the past year and a half and have been completely charmed. I\u2019m in my second year out of school and pretty new to speaking but I\u2019ve found the Python community to be supportive and welcoming.\r\n\r\nExperience with this talk\r\n====================\r\nThis talk was accepted at [PyCon 2016](https://us.pycon.org/2016/schedule/presentation/1420) in Portland, Oregon. When I submitted the talk proposal I was living in New York City, however now I live in Stockholm and am looking forward to meeting the European Python community! I don\u2019t think there will be too much audience overlap between the two conferences.\r\n\r\nI gave a version of this talk at PyGotham in August 2015. It was well received on Twitter (and another speaker, Eric Schles, mentioned in his talk that he thought everyone should watch the video!). I\u2019ve taken the feedback I got from this presentation and incorporated it into my new talk.\r\n\r\nThere were some technical difficulties with the A/V so I had to restart a few slides in, but the talk is almost fully recorded: \r\n\r\n[**Link to PyGotham video**](https://www.youtube.com/watch?v=_HdfEqSqI2M).\r\n\r\n[**Link to PyGotham slides**](https://github.com/aherlihy/PythonLLVM/blob/master/PyGotham%20Slides.pdf)\r\n\r\n[**Link to the paper that this talk is based on**](https://github.com/aherlihy/PythonLLVM/blob/master/Thesis.pdf)\r\n\r\nAnd if you\u2019re curious, the source code for the project itself is in the same repo!\r\n\r\nI also gave a much more technical version of this talk to the Brown University Computer Science department in 2014.\r\n\r\nOther Speaking Experience\r\n======================\r\nMost recently, I was invited to be a part of a panel organized by PyLadies and WriteSpeakCode called \u201cTales of Open Source: Five Contributors, Five Stories\u201d along with Ben Darnell, David Turner, Julian Berman, and Maia McCormick in October 2015 in NYC.\r\n[**Link to event page**](http://www.meetup.com/NYC-PyLadies/events/225696976)\r\n\r\nI spoke at OpenDataSciCon in Boston May 2015. I spoke about Monary, a fast, specialized MongoDB driver written in C and Python that copies data directly from MongoDB documents into NumPy arrays. \r\n[**Link to OpenDataSciCon talk**](http://bos2015.opendatascicon.com/schedule/monary-really-fast-analysis-with-mongodb-and-numpy). I tried to access this site just now (3/3) and it seems not to be working, but I'll leave the link there in case it is just temporarily down.\r\n\r\nI gave my first industry conference talk *ever* at PyData in NYC in November of 2014. I gave a talk similar to the OpenDataSciCon talk about Monary.\r\n[**Link to PyData video**](https://www.youtube.com/watch?v=E70AO8r5sMs)\r\n\r\nOpen Source Experience\r\n====================\r\nI am a contributor to PyMongo, Monary, MongoDB, and the MongoDB Ruby, C++, and C drivers. I currently maintain Mongo-Connector.", - "tag_categories": [ - "Python", - "Python", - "Open Source", - "Data Science", - "Data Science" - ], - "emails": "herlihyap@gmail.com", - "language": "English", - "level": "Advanced", - "url": "https://ep2016.europython.eu//conference/talks/wrestling-python-into-llvm-intermediate-representation", - "admin_type": "", - "companies": "MongoDB, Inc" - }, - "483": { - "abstract_short": "Presentation on how you can write faster Python in your daily work. I will briefly explain ways of profiling the code, discuss different code structures and show how they can be improved. You will see what is the fastest way to remove duplicates from a list, what is faster than a _for_ loop or how \u201casking for permission\u201d is slower than \u201cbegging for forgiveness\u201d.\r\n\r\n", - "sub_title": "", - "timerange": "2016-07-19 14:00:00, 2016-07-19 14:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@SebaWitowski", - "id": 483, - "speakers": "Sebastian Witowski", - "title": "Writing faster Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "A1", - "tags": [ - "Beginners", - "Performance", - "Best Practice" - ], - "abstract_long": [ - "Did you know that Python preallocates integers from -5 to 257 ? Reusing them 1000 times, instead of allocating memory for a bigger integer, can save you a couple of milliseconds of code\u2019s execution time. If you want to learn more about this kind of optimizations then, \u2026 well, probably this presentation is not for you :) Instead of going into such small details, I will talk about more _\"sane\"_ ideas for writing faster code.\r\nAfter a very brief overview of how to optimize Python code (rule 1: don\u2019t do this, rule 2: don\u2019t do this yet, rule 3: ok, but what if I really want to do this ?), I will show simple and fast ways of measuring the execution time and finally, discuss examples of how some code structures could be improved.\r\nYou will see:\r\n\r\n - What is the fastest way of removing duplicates from a list\r\n - How much faster your code is when you reuse the built-in functions instead of trying to reinvent the wheel\r\n - What is faster than the good ol\u2019 _for_ loop\r\n - If the lookup is faster in a list or a set (and when it makes sense to use each)\r\n - How the \u201cIt's better to beg for forgiveness than to ask for permission\u201d rule works in practice\r\n\r\nI will NOT go into details of _\"serious\"_ optimization, like using different Python implementation or rewriting critical code in C, etc.\r\n\r\n" - ], - "abstract_extra": "This is an extended and improved version of a presentation that I gave some time ago, as a part of Lightning Talks at CERN (slides and a link to the video are available here: [https://github.com/switowski/PythonPerformancePresentation][1]).\r\nThis time, less Dragon Ball pictures though :)\r\n\r\n [1]: https://github.com/switowski/PythonPerformancePresentation\r\n", - "tag_categories": [ - "Educational", - "Programming", - "Best Practice and Use Cases" - ], - "emails": "sebastian.witowski@cern.ch", - "language": "English", - "level": "Beginner", - "url": "https://ep2016.europython.eu//conference/talks/writing-faster-python", - "admin_type": "", - "companies": "CERN" - }, - "649": { - "abstract_short": "In this talk, I'll show you how to write redis using asyncio. You'll see how you can create a real world application using asyncio by creating a python port of redis.", - "sub_title": "", - "timerange": "2016-07-21 14:30:00, 2016-07-21 15:00:00", - "sub_community": "", - "duration": 30, - "twitters": "@jsaryer", - "id": 649, - "speakers": "James Saryerwinnie", - "title": "Writing Redis in Python with asyncio", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 2", - "tags": [ - "NoSQL", - "ASYNC / Concurreny", - "Databases" - ], - "abstract_long": [ - "Python has been adding more and more async features to the language. Starting with asyncio in python 3.4 and including the new async/await keywords in python 3.5, it's difficult to understand how all these pieces fit together. More importantly, it's hard to envision how to use these new language features in a real world application. In this talk we're going to move beyond the basic examples of TCP echo servers and example servers that can add number together. Instead I'll show you a realistic asyncio application. This application is a port of redis, a popular data structure server, written in python using asyncio. In addition to basic topics such as handling simple redis commands (GET, SET, APPEND, etc), we'll look at notifications using pub/sub, how to implement the MONITOR command, and persistence. Come learn how to apply the asyncio library to real world applications. " - ], - "abstract_extra": "This is an idea I started about a year ago. I wrote an initial blog post on the basic of writing redis in asyncio here: [Writing Redis in Python][1]\r\n\r\nHowever, this was all before the async/await keywords were added to the language and I found myself updating the code to reflect the latest changes to the python language and asyncio library.\r\n\r\nAt this point I think asyncio is at a nice and stable point where I can show the remaining work I've done for writing redis using asyncio.\r\n\r\nHere's a few places I've spoken in the past:\r\n\r\n* re:Invent 2015: https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=1423&tclass=popup\r\n* OSCON: http://conferences.oreilly.com/oscon/open-source-2015/public/schedule/detail/42218\r\n* Pycon Canada: http://2013.pycon.ca/en/schedule/presentation/34/\r\n\r\n\r\n [1]: http://jamesls.com/writing-redis-in-python-with-asyncio-part-1.html", - "tag_categories": [ - "Databases", - "Programming", - "Databases" - ], - "emails": "js@jamesls.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/writing-redis-in-python-with-asyncio", - "admin_type": "", - "companies": "AWS" - }, - "656": { - "abstract_short": "There are many unit testing frameworks for C out there, but most of them require you to write your tests in C (or C++). While there might be good reasons to keep your implementation in C, those hardly apply to the tests. So wouldn't it be nice to use all the power of Python and its unit testing capabilities also for your C code? This talk will show you how.", - "sub_title": "", - "timerange": "2016-07-21 12:00:00, 2016-07-21 12:30:00", - "sub_community": "", - "duration": 30, - "twitters": "@", - "id": 656, - "speakers": "Alexander Steffen", - "title": "Writing unit tests for C code in Python", - "have_tickets": [ - true - ], - "type": "Talk (30 mins)", - "status": "accepted", - "track_title": "Barria 1", - "tags": [ - "Programming", - "C-Languages", - "Testing" - ], - "abstract_long": [ - "There are many unit testing frameworks for C out there, but most of them require you to write your tests in C (or C++). While there might be good reasons to keep your implementation in C (for example execution speed or resource consumption), those hardly apply to the tests. So wouldn't it be nice to use all the power of Python and its unit testing capabilities also for your C code?\r\n\r\nThis talk will show you how to combine CFFI and pycparser to easily create Python unit tests for C code, without a single line of C anywhere in the test cases. It will also cover creating mock functions in Python, that can be used by the C code under test to hide external dependencies. Finally, we will look at some of the challenges you might face when trying to mix Python and C and what to do about them." - ], - "abstract_extra": "", - "tag_categories": [ - "Programming", - "Other Programming Languages", - "Testing" - ], - "emails": "Alexander.Steffen@infineon.com", - "language": "English", - "level": "Intermediate", - "url": "https://ep2016.europython.eu//conference/talks/writing-unit-tests-for-c-code-in-python", - "admin_type": "", - "companies": "Infineon Technologies AG" - } - } -} diff --git a/ep2018/static/data/clean-talks.json b/ep2018/static/data/clean-talks.json deleted file mode 100644 index 2f2e323..0000000 --- a/ep2018/static/data/clean-talks.json +++ /dev/null @@ -1 +0,0 @@ -{"Poster sessions": {"287": {"id": 287, "abstracts": ["We learn best when we are relaxed, curious and enjoying ourselves. Without knowing a lot of Python, making a fun-to-play game is an achievable goal. Without knowing anything about programming, playing a game can be an accessible way to understand how programs work. The poster will invite people to consider the role of play in adult learning. (Much of it will also be relevent to teachers of younger people.) It will frame success and failure in the context of taking part, winning and losing.\r\n\r\nThe poster will give examples of games that are within the reach of a beginner programmer to design and build. It will explore what makes a well-designed game and how to develop good design elements simply. The goal is for people to identify resources for learning and developing Python skills based around building games. This will include: practice opportunities, Python libraries for game-building, and useful programming concepts.\r\n\r\nIf there are the facilities (small table and access to power) I will demonstrate **one** game during the poster session. The goal will be to illustrate the concepts, of good design and developing learning, introduced in my poster. It will have input and output interaction using a **Raspberry Pi** and basic electronics.\r\n\r\n"], "have_tickets": [false], "title": "Perceptions of Play: learning Python through games", "speakers": "Corinne Welsh", "track_title": "", "timerange": "", "duration": 90, "tags": ["Beginners", "pygame", "pyglet", "education", "games", "projects", "raspberrypi", "teaching", "learning", "fun", "Best Practice"]}, "141": {"id": 141, "abstracts": ["Inside [Aldebaran][1] company the goal of our team is to explore all the domains required for natural and efficient human-robot interaction. We mainly use python stack (scipy, numpy, scikit-learn) in our daily work as it provides a fast and efficient workflow to create and tune our robot behaviors.\r\n\r\nIn this presentation we will describe and demonstrate how we achieve real time sound event recognition on humanoids robots using python and scikit-learn. This work is funded by european project EARS in which our study case is a groom hotel robot that help customers : Two robots are waiting in a hotel lobby. They welcome people and give them relevant information. The robots detect and recognize sounds type such as: Door bell, phone ring, fire alarm, etc. New sounds could be easily learned by the robots.\r\n\r\nThe talk will be done by two human speakers followed by a live demonstration with NAO robots on the stage. Code and data will be published so everyone can experiments with sound recorded on the robots.", "Inside [Aldebaran][1] company the goal of our team is to explore all the domains required for natural and efficient human-robot interaction. We mainly use python stack (scipy, numpy, scikit-learn) in our daily work as it provides a fast and efficient workflow to create and tune our robot behaviors.\r\n\r\nIn this presentation we will describe and demonstrate how we achieve real time sound event recognition on humanoids robots using python and scikit-learn. This work is funded by european project EARS in which our study case is a groom hotel robot that help customers : Two robots are waiting in a hotel lobby. They welcome people and give them relevant information. The robots detect and recognize sounds type such as: Door bell, phone ring, fire alarm, etc. New sounds could be easily learned by the robots.\r\n\r\nThe talk will be done by two human speakers followed by a live demonstration with NAO robots on the stage. Code and data will be published so everyone can experiments with sound recorded on the robots.\r\n\r\nThe second speaker is [Alexandre Mazel][2].\r\n\r\n![][3]\r\n\r\n [1]: https://www.aldebaran.com/en\r\n [2]: https://ep2015.europython.eu/conference/p/alexandre-mazel\r\n [3]: http://studio.aldebaran-robotics.com/amazel/ears__sound_event_recognition/ears__sound_event_recognition.jpg\r\n", ""], "have_tickets": [false], "title": "Sound event recognition using python : application to humanoid robots with limited cpu", "speakers": "Laurent George", "track_title": "", "timerange": "", "duration": 90, "tags": ["robotics", "sound", "machine-learning", "scipy", "numpy", "sklearn"]}, "190": {"id": 190, "abstracts": ["We propose a web BI dashboard system developed for companies operating in the big market composed by several point of sales (POS) and providing services as stocking, distribution logistics, commercial support and promotional actions. \r\n\r\nWe have endowed the infrastructure with a set of statistical machine learning tools typical of high throughput bioinformatics, e.g., clustering procedures for time-series. Machine learning functionalities are actionable from on-line graphs, such as biclustering panels in which subset of retails and sales categories can be interactively selected. Currently 250 million entries are managed from the sales stream within the system. Network analysis (detection of community structure and co-occurrence patterns) combined with geospatial and socio-economic data are being developed as strategic tools.\r\n\r\nThe system is implemented as a web-based Django framework deployed on a AWS machine, using Celery and Redis to distribute tasks. This scalable framework can be accessed through a web interface from the strategic marketing and R&D departments and other directive figures; a similar and leaner interface is available for the individual POS owners. The web interface integrates Javascript libraries to obtain interactive displays connecting machine learning and data exploration (D3js, Highcharts, Sigma.js, Heatmap.js, leaflet, InCHlib). In particular we fork the django-highchart repository to improve functionalities available for the Django framework. Actionable dendrogram structures and sunburst plots allow the handling of big taxonomies typical of the category managment reference structures. Internally, the statistical machine learning methods are deployed as stored procedures for a PostgreSQL/PostGIS database, powered by the PL/R and PL/Python extensions. "], "have_tickets": [true], "title": "Actionable data analytics in retail marketing analysis", "speakers": "Ernesto Arbitrio", "track_title": "", "timerange": "", "duration": 90, "tags": ["python", "R", "data-science", "machine-learning", "visualization", "postgresql", "predictions", "django"]}, "125": {"id": 125, "abstracts": ["GR is an universal framework for cross-platform visualization applications. It offers developers a compact, portable and consistent graphics library for their programs. Its procedural graphics backend allows the presentation of continuous data streams. For object oriented environments such as graphical user interfaces a high level API has been implemented.\r\n\r\nIn this poster session, I will present PyGR, a companion module for GR that provides convenience functions for the interactive handling of real-time data, e.g. by zooming or panning. Using the QtGR module it is possible to easily integrate GR into GUI toolkits like Qt. It provides powerful widgets for 2D plotting and methods for embedding graphics into user interfaces based on PySide or PyQt.\r\n\r\nHowever, PyGR is not limited to a specific toolkit. The system\u2019s capabilities will be illustrated using concrete examples, e.g. NICOS, a network-based experiment and instrument control system used for neutron scattering experiments at FRM II in Munich.", "", ""], "have_tickets": [true], "title": "Embedding Visualization Applications with PyGR", "speakers": "Christian Felder", "track_title": "", "timerange": "", "duration": 90, "tags": ["visualization", "python"]}, "83": {"id": 83, "abstracts": ["Mongo-Board is a project focused on offering/building a graphical user interface to MongoDB replica set management and core-processes operations. The functionality is provided in two forms: a **standalone** core library that provides automation over MongoDB administrative operations and the **Mongo-Board UI**. A showcase in the form of an educational tool of its underlying library's possible usage where users can interact with a MongoDB cluster to perform various actions and view a log of all commands executed.\r\n\r\nCore features includes:\r\n\r\n-**MongoDB Instance Management** - connect to multiple remote servers, start/stop database instances, import/export database data\r\n\r\n -**Replica Set Management** - deploy, configure and maintain replica sets\r\n\r\nFirst, we developed a solution completely in PHP and currently we are in the middle of porting the back-end library into Python. I want to present our experience with MongoDB and discuss the architecture, challenges, solutions and open questions. \r\n\r\nThe poster will pose an interest to people passionate about client-server architecture, MongoDB management, administration and monitoring of processes, automation, as well as educational tools.\r\n\r\n [Article detailing some aspects of our initial project][1]\r\n\r\n[Video showcase][2]\r\n\r\n [1]: https://eastvisionsystems.com/mongoboard-replica-set-manager/\r\n [2]: https://eastvisionsystems.com/projects/#player4\r\n"], "have_tickets": [true], "title": "MongoBoard - A MongoDB replica set manager", "speakers": "Alex Porcescu", "track_title": "", "timerange": "", "duration": 90, "tags": ["automation", "mongodb", "learning", "linux", "system-administration"]}, "350": {"id": 350, "abstracts": ["DTOcean is a European collaborative project funded by the European Commission under the 7th Framework Programme for Research and Development. DTOcean that stands for Optimal Design Tools for Ocean Energy Arrays aims at at accelerating the industrial development of ocean energy power generation knowledge, and providing design tools for deploying the first generation of wave and tidal energy converter arrays. It gathers 18 partners from 11 countries (Ireland, Spain, United Kingdom, Germany, Portugal, France, Norway, Denmark, Sweden, Belgium and United States of America) under the coordination of the University of Edinburgh.\r\n\r\nDTOcean is developing an open source numerical tool using Python and many of the libraries developed for use with Python. This talk will discuss both the academic challenges of meeting the goals of the project and the technical challenges of organising and structuring a project consisting of many geographically dispersed partners with distinct tasks, but requiring close integration to solve the global optimisation problem.", "", ""], "have_tickets": [false], "title": "DTOcean: Optimal Design Tools for Ocean Energy Arrays", "speakers": "Mathew Topper", "track_title": "", "timerange": "", "duration": 90, "tags": ["science", "python", "data"]}, "68": {"id": 68, "abstracts": ["Parallel Programming Constructs and Techniques\r\nUsing an Embedded Flexible Language (EFL) for Python\r\n\r\nM. Goldstein , D. Dayan, D. Berlowitz, O. Berlowitz, Max Rabin, M. Nagar, D. Soudry, R. B. Yehezkael\r\n\r\nMulti-core CPUs are abundant and utilizing them effectively requires programmers to parallelize CPU-intensive code. To facilitate this, we have developed EFL, a deterministic parallel programming tool. \r\nThe parallel parts of a program are written as EFL-blocks, which are embedded into a sequential host language program. The sequential parts of the program are written in the host language, outside the EFL blocks. \r\nAn EFL pre-compiler translates EFL blocks into parallel Python code. EFL may be embedded in any host language by writing an appropriate pre-compiler. The EFL pre-compiler is being developed for other host programming languages (C++, Java, C#, Fortran, etc) as well as for other parallel platforms (DTM/MPI4PY, etc. ).\r\nHere we present the parallel programming constructs of EFL, such as parallel assignments, parallel for-loops, etc., and some examples of using EFL to implement Parallel Programming Design Patterns. \r\n", "", ""], "have_tickets": [true], "title": "Parallel Programming Constructs and Techniques Using an Embedded Flexible Language (EFL) for Python", "speakers": "Moshe Goldstein", "track_title": "", "timerange": "", "duration": 90, "tags": ["python", "Tooling", "Programming", "concurrency"]}, "337": {"id": 337, "abstracts": ["Rust is a new programming language from Mozilla, it has been announced as the successor of C and C++. \r\n\r\nIn this talk, I will show how to use Rust to extend Python via CFFI or ctypes because you want to optimize your code. But do you know we can integrate Python in Rust.\r\n\r\n* Brief introduction to Rust\r\n* Why Rust is a good candidate for the replacement of C\r\n* How to extend Python with Rust\r\n* How to interact with Python from Rust.", "", ""], "have_tickets": [true], "title": "Python, Rust, who extend who ?", "speakers": "Stephane Wirtel", "track_title": "", "timerange": "", "duration": 90, "tags": ["extending", "rust", "cpython"]}, "280": {"id": 280, "abstracts": ["Via several examples, this poster will present you how to handle quickly AsyncIO and how to build applications with [toolbox libraries][1] around AsyncIO.\r\n\r\nYou can create HTTP servers with AsyncIO, but also you can mixin several others server protocols like WebSockets, SSH, IRC, FastAGI or SIP.\r\n\r\nThis poster will show you that it can be easier to do than you think, AsyncIO ecosystem is beginner friendly.\r\n\r\n [1]: https://github.com/python/asyncio/wiki/ThirdParty"], "have_tickets": [false], "title": "AsyncIO ecosystem", "speakers": "Ludovic Gasc", "track_title": "", "timerange": "", "duration": 90, "tags": ["redis", "HTTP", "servers", "multi-processing", "aiohttp", "aiopg", "websockets", "python3", "asyncio"]}, "145": {"id": 145, "abstracts": ["Over the last fourteen years, Plone has had a remarkable journey: from just a wild idea by a few people to create a CMS which would combine the best technology with a vision of beauty and power to the reality of today: Plone is actively used by companies, governments, universities, nonprofits and other organizations of all sizes around the world.\r\n\r\nYet the vision behind it has stayed consistent. The Plone community chooses technology not for the sake of technology, but because it best solves the problems at hand. We value reliability, security and long-term stability, yet the community is agile enough to adapt where needed.\r\n\r\nThe poster will showcase Plone 5, a major new release which is a solid foundation for the challenges of today, while providing a good upgrade path for earlier versions. It can be used right away for installations of all sizes, but it is also flexible enough to serve as basis for specialized use cases. \r\nBut we do not stop there; the Plone community is already looking further into the future. In spring 2015, we have developed our roadmap forward into a future where themes like mobile-first play a much more important role. Plone will open up it's core strengths like rock-solid workflows, security, standards-compliance and multilingual support to modern ways of presenting these. And with Mosaic and other advances we put power - and fun! -, firmly into the hands of the users that want to create beautiful sites and applications.", "", ""], "have_tickets": [true], "title": "The current state & the future of Plone", "speakers": "Paul Roeland", "track_title": "", "timerange": "", "duration": 90, "tags": ["web", "Plone"]}, "82": {"id": 82, "abstracts": ["Creating a large-scale event processing system can be a daunting task. Especially if you want it \u201cstupid simple\u201d and wrapped around each client\u2019s needs. We built a straightforward solution for this using Python 3 and other open-source tools.\r\n\r\nMain issues to solve for a system that needs to be both performant and scalable:\r\n\r\n - handling a throughput of 1 million events per minute in a 4 cores AWS instance;\r\n\r\n - following the principle of least astonishment;\r\n\r\n - data aggregation and how Python's standard libraries and data structures can help;\r\n\r\n - failsafe and profiling mechanisms that can be applied to any Linux service in production;\r\n\r\n - addressing unexpected behaviors of Python\u2019s Standard Library; like reading from a file while it is written;\r\n\r\n - tackling a sudden spectacular cloud instance failure;\r\n\r\nThe alternative to this system would be to adopt existing technology stacks that might be too general, add more complexity, bloat, costs and which need extensive work to solve your specific problem. Moreover, our approach resulted in over 85% drop on hardware utilisation.\r\n\r\n[Context: Production Software \u2013 II (where good coding reduces the client\u2019s bill)][1]\r\n\r\n [1]: https://eastvisionsystems.com/production-software-part-ii-good-coding-reduces-clients-bill/\r\n", "", ""], "have_tickets": [true], "title": "Use Python to process 12mil events per minute and still keep it simple (Poster Session)", "speakers": "Teodor Dima", "track_title": "", "timerange": "", "duration": 90, "tags": ["bigdata", "performance", "architecture", "Development"]}, "219": {"id": 219, "abstracts": ["Python is a popular and widely used programming language but its use is limited in certain cases. Concurrency is one of those cases when people look for an alternative. It's actually what happened at the start-up I work at before I joined. The co-founders looked for a solution in a functional programming language and chose to use Clojure. Functional programming is now implemented in most programming languages and functional languages are getting more and more popular. For a junior developer learning a functional language as her/his second programming language completely make sense and I was up for the challenge! Clojure is not so different from Python in its readability and might be one of the easiest functional languages to learn for a Pythonista. I would like to share my tips and tools I used for learning and contributing to a code base in Clojure.\r\n\r\nThere are several online resources to understand the paradigm of functional programming. The same can be said regarding Clojure but a good way to learn aside from diving into a codebase is to take part in a community. The Clojurians are much fewer than the Pythonistas but they are equally friendly. They are looking forward to grow their community and their meetups and dojos are well suited to beginners. At some point you have to throw yourself into this sea of parentheses so you'd better be well equipped! In that aim Emacs is by far the best suited text editor. After customising it with the right tools you shall fear no orphan parens!\r\nThis experience will help you progress and focus on writing more concise code with short and clear functions. You will be more comfortable and curious about implementing the functional features of the Python language. Getting always closer to the Zen of Python: \" Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. .... \" "], "have_tickets": [true], "title": "From Python to Clojure", "speakers": "Eleonore Mayola", "track_title": "", "timerange": "", "duration": 90, "tags": ["python", "Lisp", "Clojure", "Functional Programming"]}, "263": {"id": 263, "abstracts": ["In this poster session I'm going to introduce Scrapinghub's new open source framework [Frontera][1]. Frontera allows to build real-time distributed web crawlers and website focused ones. \r\n\r\nOffering:\r\n\r\n - customizable URL metadata storage (RDBMS or Key-Value based),\r\n - crawling strategies management,\r\n - transport layer abstraction.\r\n - fetcher abstraction.\r\n\r\nAlong with framework description I'll demonstrate how to build a distributed crawler using [Scrapy][2], Kafka and HBase, and hopefully present some statistics of Spanish internet collected with newly built crawler. Happy EuroPythoning!\r\n\r\n [1]: https://github.com/scrapinghub/frontera\r\n [2]: http://scrapy.org/\r\n", "", ""], "have_tickets": [true], "title": "Frontera: open source large-scale web crawling framework", "speakers": "Alexander Sibiryakov", "track_title": "", "timerange": "", "duration": 90, "tags": ["scrapy", "kafka", "hbase", "webcrawling", "distributed-systems"]}}, "EuroPython sessions": {"367": {"id": 367, "abstracts": ["We need help with organizing and running EuroPython 2016.\r\n\r\nIn this session, we will explain how the EuroPython workgroup model works and where you could help.\r\n", "", ""], "have_tickets": [true, true], "title": "EuroPython 2016: Help us build the next edition!", "speakers": "Fabio Pliger, Marc-Andre Lemburg", "track_title": "Barria1 Room", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["conference", "EuroPython", "eps"]}, "368": {"id": 368, "abstracts": ["The EuroPython General Assembly.\r\n\r\nThis is where we give our reports and the EPS members can vote in a new EPS board.", "", ""], "have_tickets": [true, true], "title": "EPS General Assembly", "speakers": "Fabio Pliger, Marc-Andre Lemburg", "track_title": "Barria1 Room", "timerange": "2015-07-22 15:15:00, 2015-07-22 16:15:00", "duration": 60, "tags": ["GA", "EuroPython", "eps", "assembly"]}}, "Talks": {"298": {"id": 298, "abstracts": ["The hook-based plugin system used by py.test and being made available\r\nas a stand alone package allows easy extensibility based on defined\r\nextension points which can be implemented using hook functions in the\r\nplugins. Plugins can themselves call these hooks as well as define\r\nfuture extension points allowing for a very flexible design.\r\n\r\npy.test itself uses this plugin system from the ground up with the\r\nentire application being implemented by built-in plugins. This\r\narchitecture has proven powerful and flexible over the years, on both\r\ncommand line tools as well as long running daemons. This talks will\r\ndescribe how the plugin system works and how it deals with passing\r\narguments and return values 1:N hook calls. It will also describe how\r\nto design an application consisting entirely of plugins. While not\r\nspecifically talking about py.test it will also give a solid\r\nunderstanding on how plugins work in py.test."], "have_tickets": [true], "title": "The hook-based plugin architecture of py.test", "speakers": "Floris Bruynooghe", "track_title": "A2 Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:15:00", "duration": 30, "tags": ["software-design", "architecture", "plugin"]}, "218": {"id": 218, "abstracts": ["The potential upside of microservices is significant and exciting. So much so that Yelp's Transaction Platform committed from the start to an architecture of small, cooperative microservices. This talk explores the inevitable complications that arise for Python developers in as the services grow larger and stretch both their own architecture and the developers responsible for them. Come hear tales of terror (tight coupling! low test coverage!), stories which will warm your heart (agility! strong interfaces!), and everything in between as we follow the adventures of our plucky team.\r\n\r\nThe talk will be focused on the functional, cultural, and reliability challenges which occur as a microservices-based project evolves and expands over time. Particular attention will be paid to where these diverge from the utopian way microservices are often described, and to the particular difficulties faced by Python developers trying to implement such systems. My goal is to share with attendees some mistakes we've made, some successful methods for growing gracefully, and Python-specific tools/libraries which can help with these problems.\r\n\r\nTo enjoy this talk, you should be aware of the basic vocabulary and concepts of HTTP-based services. Any additional awareness of distributed systems (and their failure modes) will be helpful."], "have_tickets": [true], "title": "Arrested Development - surviving the awkward adolescence of a microservices-based application", "speakers": "Scott Triglia", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["services", "distributed-systems", "HTTP"]}, "340": {"id": 340, "abstracts": ["An introduction to the devops culture by sharing our experience in a successfully French start-up.\r\n\r\nThe salt route talk presents some best practices and common mistakes that arise in everyday teamwork between developers and sysadmins using SaltStack for configuration management, server provisioning, orchestration and Django web applications deployment.\r\n\r\nAs an introductory talk there is no prerequisites required.\r\n\r\nThis talk will be presented by the dynamic duo Natal Ng\u00e9tal and Pablo Seminario, 2 co-workers at PeopleDoc Inc.", "", ""], "have_tickets": [true], "title": "The Salt Route", "speakers": "Pablo SEMINARIO", "track_title": "A2 Room", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["architecture", "ConfigurationManagement", "DevOps", "saltstack", "automation", "django", "deployment", "Best Practice"]}, "43": {"id": 43, "abstracts": ["gitfs is an open-source[1] filesystem which was designed to bring the full powers of Git to everyone, no matter how little they know about versioning. A user can mount any repository and all the his changes will be automatically converted into commits. gitfs will also expose the history of the branch you\u2019re currently working on by simulating snapshots of every commit.\r\n\r\ngitfs is useful in places where you want to keep track of all your files, but at the same time you don\u2019t have the possibility of organizing everything into commits yourself. A FUSE filesystem for git repositories, with local cache.\r\n\r\nIn this talk we will take a look at some of the crucial aspects involved in building a reliable FUSE filesystem, the steps that we took in building gitfs, especially in handling the git objects (http://git-scm.com/book/en/v2/Git-Internals-Git-Objects), what testing methods we have used for it and also we will share the most important lessons learned while building it.\r\n\r\nThe prerequisites for this talk are:\r\nA good understanding of how Git works\r\nBasic understaning of Operating Systems concepts\r\n\r\n[1] You can get the source here - https://github.com/PressLabs/gitfs; you cand find more details here - http://www.presslabs.com/gitfs/."], "have_tickets": [true], "title": "gitfs - building a filesystem in Python", "speakers": "Vlad Temian", "track_title": "Google Room", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["low-level", "FOSS", "cpython", "DevOps", "concurrency", "open-source", "linux", "fun", "pytest"]}, "208": {"id": 208, "abstracts": ["NumPy is the fundamental Python package for scientific computing. However, being efficient with NumPy might require slightly changing how you write Python code. \r\n\r\nI\u2019m going to show you the basic idioms essential for fast numerical computations in Python with NumPy. We'll see why Python loops are slow and why vectorizing these operations with NumPy can often be good. \r\n\r\nTopics covered in this talk will be array creation, broadcasting, universal functions, aggregations, slicing and indexing.\r\nEven if you're not using NumPy you'll benefit from this talk."], "have_tickets": [false], "title": "NumPy: vectorize your brain", "speakers": "Ekaterina Tuzova", "track_title": "Google Room", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:15:00", "duration": 45, "tags": ["numpy", "machine-learning"]}, "46": {"id": 46, "abstracts": ["CityBikes [1] started on 2010 as a FOSS alternative endpoint (and Android client) to gather information for Barcelona's Bicing bike sharing service. Later evolved as an open API [2] providing bike sharing data of any (mostly) service worldwide.\r\n\r\nFast forward today and after some C&D letters, there's support for more than 200 cities, more than 170M historical entries have been gathered for analysis (in approx. a year) and the CityBikes API is the main source for open bike share data worldwide. This talk will tour about how we got there with the help of python and the community [3].\r\n\r\nPS: We have a realtime map, it is awesome [4].\r\n\r\n [1]: http://citybik.es\r\n [2]: http://api.citybik.es\r\n [3]: http://github.com/eskerda/pybikes\r\n [4]: http://upcoming.citybik.es\r\n\r\n"], "have_tickets": [true], "title": "CityBikes: bike sharing networks around the world", "speakers": "Llu\u00eds Esquerda", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["redis", "nosql", "api", "data-science", "visualization", "bigdata", "mongodb", "flask", "open-source", "linux", "fun", "FOSS", "internationalization"]}, "224": {"id": 224, "abstracts": ["Lately, there's a lot of talk about microservices but not enough concrete examples and case studies. I want to change that by showing:\r\n\r\n - how thinking in PaaS terms can lead to robust and scalable designs;\r\n\r\n - what infrastructure and automation you need to set up to go along smoothly;\r\n\r\n - how to get real time metrics of your apps; \r\n\r\n - what makes Python good for microservices;\r\n\r\n - what is Python's performance relative to some alternatives.\r\n\r\n**Prerequisites for the talk:**\r\n\r\n - some experience with web development in Python;\r\n\r\n - basic knowledge of RESTful web services.\r\n\r\n"], "have_tickets": [true], "title": "Python microservices on PaaS done right", "speakers": "Micha\u0142 Bultrowicz", "track_title": "A2 Room", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["automation", "performance", "cloud", "metrics", "PaaS"]}, "93": {"id": 93, "abstracts": ["Finding a good structure for number-crunching code can be a problem, this especially applies to routines preceding the core algorithms: transformations such as data processing and cleanup, as well as feature construction.\r\n\r\nWith such code, the programmer faces the problem, that their code easily turns into a sequence of highly interdependent operations, which are hard to separate. It can be challenging to test, maintain and reuse such \"Data Science Spaghetti code\".\r\n\r\nScikit-Learn offers a simple yet powerful interface for data science algorithms: the estimator and composite classes (called meta-estimators). By example, I show how clever usage of meta-estimators can encapsulate elaborate machine learning models into a maintainable tree of objects that is both handy to use and simple to test.\r\n\r\nLooking at examples, I will show how this approach simplifies model development, testing and validation and how this brings together best practices from software engineering as well as data science.\r\n\r\n_Knowledge of Scikit-Learn is handy but not necessary to follow this talk._"], "have_tickets": [true], "title": "Using Scikit-Learn's interface for turning Spaghetti Data Science into Maintainable Software", "speakers": "Holger Peters", "track_title": "Barria1 Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:15:00", "duration": 30, "tags": ["python", "data-science", "machine-learning", "cleancode", "sklearn", "Best Practice", "Testing"]}, "159": {"id": 159, "abstracts": ["Scrapy is a fast high-level screen scraping and web crawling framework, used to crawl websites and extract structured data from their pages. It can be used for a wide range of purposes, from data mining to monitoring and automated testing.\r\n\r\nIn this talk some advanced techniques will be shown based on how Scrapy is used at Scrapinghub.\r\n\r\nGoals:\r\n\r\n - Understand why its necessary to _Scrapy-ify_ early on.\r\n - Anatomy of a Scrapy Spider.\r\n - Using the interactive shell.\r\n - What are items and how to use item loaders.\r\n - Examples of pipelines and middlewares.\r\n - Techniques to avoid getting banned.\r\n - How to deploy Scrapy projects.\r\n\r\n\r\n"], "have_tickets": [true], "title": "Dive into Scrapy", "speakers": "Juan Riaza", "track_title": "Google Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["scrapy", "python", "open-source", "scraping"]}, "206": {"id": 206, "abstracts": ["From september 2015 Aarhus School of Engineering will offer the education Bachelor of Electronic Engineering, as a combined online and on campus education. In the talk I will describe the technical and pedagogical setup, we are working at to meet the challenges of having both on-site and remote students.\r\n\r\nI will also touch on how IPython Notebook, will be part of the technical setup, and how it can be incorporated into the teaching."], "have_tickets": [true], "title": "Online Education: challenges and opportunities for Staff and Students", "speakers": "Anders Lehmann", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:00:00", "duration": 30, "tags": ["education", "ipython"]}, "293": {"id": 293, "abstracts": ["Do you know how a spreadsheet works? Can you imagine building one, from scratch, in Python? This talk will be a whirlwind overview of how to do just that. Based on the source code of Dirigible, a short-lived experiment in building a cloud-based Pythonic spreadsheet (now [open-sourced](https://github.com/pythonanywhere/dirigible-spreadsheet), for the curious).\r\n\r\nWe'll start from scratch, with a simple data representation for a two-by-two grid, and then gradually build up the functionality of our spreadsheet:\r\n- Cell objects, and the formula/value distinction\r\n- Evaluating cells, from simple arithmetic up to an Excel-like dialect\r\n- Building up the dependency graph, and the ensuing fun times with recursion (arg!)\r\n- Integrating custom functions and user-defined code.\r\n\r\nShowing and explaining code examples, and alternating with live demos (don't worry, I've done this before!)\r\n\r\nAnd it's all in Python! You'll be surprised at how easy it turns out to be, when you go step-by-step, each building on the last... And I promise you'll be at least a couple of moderately mind-blowing moments :)", "", ""], "have_tickets": [true], "title": "How to build a spreadsheet with Python", "speakers": "Harry Percival", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["Beginners", "data", "demo", "spreadsheet", "data-science"]}, "245": {"id": 245, "abstracts": ["You need to download data from lots and lots of URLs stored in a text file and then save them on your machine. Sure, you could write a loop and get each URL in sequence, but imagine that there are so many URLs that the sun may burn out before that loop is finished; or, you're just too impatient.\r\n\r\nFor the sake of making this instructive, pretend you can only use one box. So, what do you do? Here are some typical solutions: Use a single process that creates lots of threads. Use many processes. Use a single process and a library like asyncio, gevent or eventlet to yield between coroutines when the OS blocks on IO.\r\n\r\nThe talk will walk through the mechanics of each approach, and then show benchmarks of the three different approaches.\r\n", "", ""], "have_tickets": [true], "title": "Parallelism Shootout: threads vs asyncio vs multiple processes", "speakers": "Shahriar Tajbakhsh", "track_title": "A2 Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:00:00", "duration": 30, "tags": ["Parallelism"]}, "97": {"id": 97, "abstracts": ["\u00bfY si pudieras centrarte en la funcionalidad de tus\r\nservicios en lugar de programar la integraci\u00f3n entre ellos?\r\n\r\nlymph es un framework con personalidad propia para escribir\r\nservicios en Python que te permite hacer justo eso. Incluye\r\ndescubrimiento de servicios extensible, comunicaci\u00f3n v\u00eda\r\npetici\u00f3n-respuesta, comunicaci\u00f3n v\u00eda publicaci\u00f3n-subscripci\u00f3n\r\nextensible y gesti\u00f3n de procesos.\r\n\r\nA medida que crecen nuestros equipos de desarrollo, nos alejamos\r\ncada vez m\u00e1s de una arquitectura monol\u00edtica. Queremos empezar a\r\nescribir servicios sin tener que preocuparnos de los requisitos de\r\ninfraestructura. Queremos desarrollar de forma r\u00e1pida, centr\u00e1ndonos\r\nen nuestro trabajo.\r\n\r\nEn esta charla os ense\u00f1aremos lo f\u00e1cil que es desarrollar y\r\nejecutar servicios con lymph.\r\n\r\nEchad un ojo a http://lymph.io. Esperamos vuestros pull requests."], "have_tickets": [true], "title": "Deja de pegarte con tus servicios; import lymph", "speakers": "Alejandro Castillo", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["services", "zeromq", "events", "gevent", "web", "rpc", "open-source", "zookeeper", "rabbitmq", "framework"]}, "210": {"id": 210, "abstracts": ["\u201cCode shortening\u201d is the \u201csport\u201d where participants strive to achieve the shortest possible source code that solves a programming problem by exploiting all the tricks and quirks of the language.\r\n\r\nThe [SIZECON on SPOJ][1] is one of the oldest and most popular code shortening problems on the web with a bizarre twist, only character above ASCII value 32 are counted for the penalty. During the talk we will take a journey into some frightening depths of the Python language in order to write shorter and shorter solutions to SIZECON until, exploiting a number of truly mind-blowing tricks, we will reach the current record solution of 28 characters (above ASCII 32!).\r\n\r\nI promise I\u2019ll show you the most obfuscated, contrived and sick python code you have ever seen and (hopefully!) will ever see. I invite participants to give [SIZECON][1] a try and check their score against the [Python2][2] and [Python3][3] SPOJ rankings.\r\n\r\n [1]: http://www.spoj.com/problems/SIZECON/\r\n [2]: http://www.spoj.com/ranks/SIZECON/lang=PYTH%202.7\r\n [3]: http://www.spoj.com/ranks/SIZECON/lang=PYTH%203.2.3\r\n", "", ""], "have_tickets": [true], "title": "Solving the web most popular code shortening competition in Python.", "speakers": "Alessandro Amici", "track_title": "Barria2 Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["competitions"]}, "288": {"id": 288, "abstracts": ["The talk would aim to introduce cryptography and security from the developer point of view, showing ways to encrypt information with Python scripts and more sensitive information in web applications using django.\r\n\r\nI will introduce to security in python ,showing some libraries that allow encryption and decryption like PyCrypto or M2Crypto,comparing theses libraries with the cryptography module.At the same time,I will show the main ciphers and hashing algorithms used in these libraries like AES,DES,RSA and some examples illustrating each case.I wil show other techniques like steganography for hiding information in files(images,documents,programs) with some libraries like Stepic or ezPyCrypto. \r\n\r\nFinally,I will comment OWASP Python Security Project where we can find some useful practices\r\nand secure coding guidelines for detecting potential security vulnerabilities in our applications like SQL injection or Cross-site scripting.\r\n"], "have_tickets": [true], "title": "Python Security & Cryptography", "speakers": "Jose Ortega", "track_title": "Barria1 Room", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["python", "algorithm", "best-practices", "django", "security", "cryptography"]}, "131": {"id": 131, "abstracts": ["At Blue Yonder, we've built a platform that can accept and process bulk amounts of data for multiple business domains (e.g. handling retail store location and sales data) using SQLAlchemy as a database abstraction layer.\r\nWe wanted to use as much of SQLAlchemy as possible, but we quickly found that the ORM (Object Relational Mapper) is not suitable for handling large amounts of data at once. At the same time, we did not want each team of developers working on individual business domains to have to handcraft their own SQL statements. To solve this problem, we built an application configuration that closely resembles an SQLAlchemy model, but also contains application-specific logic settings.\r\n\r\nIn this talk I will demonstrate:\r\n\r\n - an application architecture for multiple business domains\r\n\r\n - the structure of the domain configuration utilized in the generation of the SQLAlchemy model, SQLAlchemy core statements, and other application functionality\r\n\r\n - how the domain configuration is used throughout the application (consuming and parsing incoming data, storing it in a database and ensuring data quality)"], "have_tickets": [true], "title": "Building a multi-purpose platform for bulk data using sqlalchemy", "speakers": "Christian Trebing", "track_title": "Barria1 Room", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["bigdata", "SQLAlchemy"]}, "109": {"id": 109, "abstracts": ["This talk is about how python is used in cloud computing as well as used while configuring cloud infrastructure. It also gives brief about tools and technologies/libraries can be used for number of tasks while cloud development/execution. Developers and all python lovers are the perfect audience for this talk. They will get the brief about reliable stack of python based tools used in cloud development and also will be sharing the experience with python.\r\n\r\nSummary:\r\nPython in cloud. \r\nKind of services can be build with python.\r\nPython based tools used in deployment and configuration management for the cloud.\r\nFor every python lovers - How to create a python friendly cloud infrastructure with great reliable combination of many stable tools.\r\nStability.\r\nExperience sharing. "], "have_tickets": [true], "title": "Python for Cloud Services and Infrastructure Management", "speakers": "Bhaumik Shukla", "track_title": "Barria2 Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 15:45:00", "duration": 30, "tags": ["nosql", "python", "infrastructure", "REST", "mongodb", "DevOps", "configuration", "django", "deployment", "cloud", "fabric", "rabbitmq"]}, "281": {"id": 281, "abstracts": ["It is always tough to test a complex API comprehensively. The additional level of complexity brings us to the question \"How can we validate that our API is working as intended?\"\r\n\r\nIn this talk I will explain how to use test driven development for APIs to solve this problem and even further how TDD can drive an API Design towards a more usable design.\r\nI will outline my practical approach with an implementation example based on django. And finally I will give you a brief summary of my lessons learned using this approach in customer projects.\r\n\r\n"], "have_tickets": [true], "title": "TDD for APIs", "speakers": "Michael Kuehne", "track_title": "Barria1 Room", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["pytest", "django", "agile", "api", "tdd"]}, "60": {"id": 60, "abstracts": ["TDD is great, we all know that. But why is it so, and under which circumstances is it ineffective or even harmful?\r\n\r\nIn this talk I want to delve into the deeper meaning of testing to derive how to do it best.\r\nAll of this from the point of view of somebody who has profited but also struggled with testing and TDD.\r\n\r\nFor every experience level from beginner to advanced there is something to learn or ponder.\r\n"], "have_tickets": [true], "title": "TDD - the why, the how and the when not", "speakers": "Fabian Kreutz", "track_title": "Google Room", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["tdd", "Development", "Testing", "py.test"]}, "8": {"id": 8, "abstracts": ["Beginner's guide to Python code quality. I'll talk about the tools for code analysis, differences between them, extending them with new features and ways to running them automatically. In the end, I'll talk about reasons behind all of these tools and try to convince you to using them in your projects (but if you are against it - I'll gladly listen to your arguments).", "", ""], "have_tickets": [true], "title": "Code Quality in Python - tools and reasons", "speakers": "Rados\u0142aw Jan Ganczarek", "track_title": "Barria2 Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:15:00", "duration": 30, "tags": ["automation", "python", "metrics"]}, "274": {"id": 274, "abstracts": ["Bring the continuous integration to a new level, through a platform/project independent framework able to give you unittest-like reports. Argus is a scenario-based application written in Python, driven by custom recipes under configurable environments, that can be used for testing a wide variety of small and big projects, with the ability of querying live data from the in-test application.\r\n\r\nUntil now, it's successfully used with [cloudbase-init][1] (a robust cloud initialization service for instances) under OpenStack and not only, due to its extensiveness and the ability to mimic different infrastructures. More details can be found on the package page: https://github.com/PCManticore/argus-ci.\r\n\r\nThe goals of this talk are to show its generic scalability, how simple is to create such kind of recipes, the relationship between scenarios, introspection and tests and, but not last, the unlimited freedom of creating very custom aspects of these entities which lead to relevant and in-depth ready for analysis logs. There are no major prerequisites to understand it, just to be familiar with Python and optionally have a focus on cloud infrastructures.\r\n\r\n[1]: https://github.com/stackforge/cloudbase-init"], "have_tickets": [true], "title": "Argus - the omniscient CI", "speakers": "Cosmin Poieana", "track_title": "A2 Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:00:00", "duration": 30, "tags": ["cloudbase-init", "continuous-integration", "argus", "devstack", "OpenStack", "open-source", "linux", "windows", "cloud", "Testing"]}, "117": {"id": 117, "abstracts": ["Defining a natural hierarchy of classes in Python can be challenging. Features like multiple inheritance, metaclasses, and classmethods can make such hierarchies significantly more powerful. However, these language features are complex and easy to use incorrectly. This talk will cover the best way to put the capabilities of classes to work so you can write Python programs more effectively.\r\n\r\nSpecifically, I'll cover these pieces of advice that I think you should follow:\r\n\r\n1. Initialize Parent Classes with `super`\r\n1. Use Multiple Inheritance Only for Mix-in Utility Classes\r\n1. Validate Subclasses with Metaclasses\r\n1. Register Class Existence with Metaclasses\r\n1. Use `@classmethod` Polymorphism to Construct Objects Generically\r\n\r\nWith each suggestion I'll use code examples to demonstrate why this is the best choice. When there are differences between Python 2 and Python 3, I'll highlight what's different. The goal is that intermediate programmers will learn some Python best practices, experienced programmers will gain confidence in their full use of Python's features."], "have_tickets": [true], "title": "How to Be More Effective with Classes", "speakers": "Brett Slatkin", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:15:00", "duration": 45, "tags": ["Practice", "Best"]}, "32": {"id": 32, "abstracts": ["One of the key aspect to keep in mind when developing a scalable application is its faculty to grow easily. But while we're used to take advantage of scalable backend technologies such as mongodb or couchbase, **scaling automatically our own application** core is usually another story.\r\n\r\nIn this talk I will **explain and showcase** a distributed web application design based on **consul** and **uWSGI** and its consul plugin. This design will cover the key components of a distributed and scalable application:\r\n\r\n - **Automatic service registration and discovery** will allow your application to grow itself automatically.\r\n\r\n - **Health checking and service unregistration** will allow your application to be fault tolerant, highly available and to shrink itself automatically.\r\n\r\n - A **distributed Key/Value storage** will allow you to (re)configure your distributed application nodes at once.\r\n\r\n - **Multi-Datacenter awareness** will allow your application to scale around the world easily.\r\n\r\n", "", ""], "have_tickets": [true], "title": "Designing a scalable and distributed application", "speakers": "Alexys Jacob", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 15:15:00, 2015-07-22 16:15:00", "duration": 60, "tags": ["technologies", "gevent", "management", "performance", "flask", "DevOps", "web", "automation", "configuration"]}, "269": {"id": 269, "abstracts": ["Bokeh is a Python interactive visualization library for large datasets that natively uses the latest web technologies. Its goal is to provide elegant, concise construction of novel graphics in the style of Protovis/D3, while delivering high-performance interactivity over large data to thin clients.\r\n\r\nThe talk will go through it\u2019s design providing details of the different API layers (bottom to top) concluding with a comprehensive showcase of examples to expose many of the features that make Bokeh so powerful and easy.", "", ""], "have_tickets": [true], "title": "Big data beautiful visualization on the browser with Bokeh", "speakers": "Fabio Pliger", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 16:15:00", "duration": 60, "tags": ["data-science", "visualization", "bigdata", "flask", "web", "django", "data", "html5"]}, "126": {"id": 126, "abstracts": ["Data Science is a hot topic, and most data scientist use either Python or R to do their jobs as main scripting language. \r\nBeing import.io data scientist for the last 2 years, all of them using Python, I've come across many different problems and needs on how to wrangle data, clean data, report on it and make predictions.\r\nIn this talk I will cover all main analytics and data science needs of a start-up using Python, numpy, pandas, and sklearn. For every use case I will show snippets of code using IPython notebooks and run some of them as live demos. "], "have_tickets": [true], "title": "Everyone can do Data Science in Python", "speakers": "Ignacio Elola", "track_title": "Google Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:15:00", "duration": 45, "tags": ["data-science", "machine-learning", "analytics", "pandas", "scipy", "sklearn"]}, "160": {"id": 160, "abstracts": ["Writing a Python script from scratch is fairly easy and you get on with very little boilerplate code in general. However starting a new Python project can be tiring if you decide to stick to best practices and plan on submitting it to PyPI. It requires great diligence and occasionally gets pretty cumbersome if you start new tools on a regular basis.\r\n\r\nWhy not just use a template for it? Cookiecutter is a CLI tool written in pure Python that enables you to do so. Not only is it working for Python code, but also markdown formats and even other programming languages. We will talk about the ideas behind Cookiecutter and go over how you can create your very own template, so you and others can benefit from your experience.\r\n\r\n\r\nGitHub: [https://github.com/hackebrot][1]\r\n\r\nTwitter: [https://twitter.com/hackebrot][2]\r\n\r\nBlog: [http://www.hackebrot.de/][3]", "", ""], "have_tickets": [true], "title": "Come to the Dark Side! We have a whole bunch of Cookiecutters!", "speakers": "Raphael Pierzina", "track_title": "Google Room", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["Cookiecutter", "Best Practice", "CLI", "community", "open-source", "Click", "pytest", "Kivy", "Jinja2", "cross-platform"]}, "66": {"id": 66, "abstracts": ["Seg\u00fan wikipedia:\r\n\"La metaprogramaci\u00f3n consiste en escribir programas que escriben o manipulan otros programas (o a s\u00ed mismos) como datos, o que hacen en tiempo de compilaci\u00f3n parte del trabajo que, de otra forma, se har\u00eda en tiempo de ejecuci\u00f3n. Esto permite al programador ahorrar tiempo en la producci\u00f3n de c\u00f3digo.\"\r\nEn esta charla veremos diferentes mecanismos que Python proporciona como:\r\n - Decoradores\r\n - Metaclasses\r\n - Descriptors\r\nA trav\u00e9s de varios ejemplos veremos como reutilizar c\u00f3digo en varias funciones y clases, como modificar como nuestras clases se generan, como se genera una clase (que funciones se llaman cuando una clase se crea) o como se genera una instancia.\r\nVeremos tambi\u00e9n que f\u00e1cilmente se nos puede ir de las manos y como utilizar con cuidado las herramientas que Python nos proporciona.", "", ""], "have_tickets": [true], "title": "Metaprogramaci\u00f3n en Python", "speakers": "Ra\u00fal Cumplido", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["metaclass", "metaprogramming", "python"]}, "42": {"id": 42, "abstracts": ["Using the automated documentation feature of Sphinx, you can make with ease the extensive documentation of Python program.\r\nYou just write python function documents (docstrings), Sphinx organizes them into the document, can be converted to a variety of formats.\r\nIn this session, I'll explain a documentation procedure that uses with sphinx autodoc and autosummary extensions.\r\n\r\nIn this session, I'll explain a documentation procedure that uses with sphinx autodoc, autosummary, coverage and doctest extensions.", "Abstract:\r\n\r\nUsing the automated documentation feature of Sphinx, you can make with ease the extensive documentation of Python program.\r\nYou just write python function documents (docstrings), Sphinx organizes them into the document, can be converted to a variety of formats.\r\nIn this session, I'll explain a documentation procedure that uses with sphinx autodoc and autosummary extensions.\r\n\r\nDescription:\r\n\r\nSphinx provides autodoc feature that generate document from docstring in your python sources.\r\nThe docstring that contains description and example of the use of function written near the program, makes doc easy to update.\r\nIn addition, the output of the Sphinx will make you understand what to write in docstring. As a result, this will improve your motivation of doc writing.\r\n\r\nTo use the autodoc, you must specify python modules to automodule directive one by one. This is a tedious task, hoswever autosummary extension automate this task.\r\nIn most cases, once developers have developed the API, you only need to run the make html of Sphinx, you get a nicely formatted document.\r\n\r\nSphinx also has coverage and doctest extentions.\r\nThese support writing the documentation to work with autodoc.\r\nThis allow you to check the APIs that have not been documented or you can verify each doctest part is correct or not.\r\n\r\nIf you use such autodoc-related extensions, you can create a Sphinx API documentation in the following procedure.\r\n\r\n1. make coverage; you can get the APIs that have not been documented.\r\n2. Write docstrings that includes the doctest format how to use the API.\r\n3. make doctest; you can verify each doctest part is correct or not.\r\n4. make html; you can generate the HTML or your favorite format.\r\n\r\nIn this session, I'll explain a documentation procedure that uses with sphinx autodoc, autosummary, coverage and doctest extensions.\r\n\r\n\r\nTarget:\r\n\r\n- Python programmer who is struggling with documentation.\r\n- Python library author who want to generate API docs automatically.\r\n- Python library author who want to create a clear documentation which contains python snippets.\r\n\r\nOutline:\r\n\r\n* Self introduction (2 min)\r\n\r\n* Sphinx introduction (2 min)\r\n\r\n * What is Sphinx?\r\n * Sphinx examples\r\n\r\n* Have you written API docs for your code? (2 min)\r\n\r\n * I don't know what/where should I write.\r\n * Docstrings is needed? Are there some specific format?\r\n\r\n* Getting start Sphinx (2 min)\r\n\r\n * How to install Sphinx\r\n * How to start a Sphinx project\r\n\r\n* Generate API docs from your python code (5 min)\r\n\r\n * setup autodoc extension\r\n * write docstrings for yuor python module\r\n * \"automodule & make html\" will generate API docs from python code\r\n * autodoc pros & cons: docs for many modules\r\n\r\n* Listing APIs automatically (5 mins)\r\n\r\n * setup autosummary extension\r\n * how to use autosummary directive\r\n * no more autodoc directive\r\n\r\n* Discovering undocumented APIs (5 min)\r\n\r\n * setup coverage extension\r\n * make coverage\r\n\r\n* Detect deviations of the impl and doc (5 min)\r\n\r\n * setup doctest extension\r\n * make doctest\r\n\r\n* Overall picture, tips, Q&A (10 min)\r\n\r\n * Overall picture of the process\r\n * Options for autodoc\r\n * translate them into other langs\r\n", ""], "have_tickets": [true], "title": "Sphinx autodoc: automated API documentation", "speakers": "Takayuki SHIMIZUKAWA", "track_title": "Google Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["automation", "autodoc", "documentation", "Sphinx"]}, "64": {"id": 64, "abstracts": ["A perspective of the impact of the PyconUK education track from the point of view of teachers and educators. \r\n\r\nHaving attended the education track at Pycon UK 2014 as a teacher, my talk will share both my experiences and those of other teachers attending. The education track bought educators and developers together in a way that allowed the teachers to get support and advice whilst developers get to support teachers in developing exciting & real applications for teaching computing. \r\n\r\nThe talk will focus on two aspects of the education track. The workshops delivered for teachers by python developers and how this helps build teachers confidence. But also the breakout sessions where educators and developers with common interests can work together to develop something. This might be a program / library or a teaching resource, some developers gave a hands on and bespoke training session to a group of teachers.\r\n\r\nIf we are to get more young people programming or at least having a positive experience of programming then we need to minimize obstacles to that experience. By having educators and developers working together we can identify those obstacles and eliminate them!", "", ""], "have_tickets": [false], "title": "Pycon - A teacher's perspective", "speakers": "James Robinson", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["education", "pyconuk", "raspberrypi", "teaching", "learning", "computing", "python3"]}, "339": {"id": 339, "abstracts": ["Microservices are popping up everywhere. This talk will explain what this fashionable new architecture is, including the pros and cons of adopting it, and then discuss an open-source framework that can help you do so -- [https://nameko.readthedocs.org][1].\r\n\r\nNameko assists you in writing services with well-defined boundaries that are easy to test. By leveraging some neat design patterns and providing test helpers, it also encourages good service structure and clean code.\r\n\r\n [1]: https://nameko.readthedocs.org"], "have_tickets": [true], "title": "Nameko for Microservices", "speakers": "Matt Bennett", "track_title": "Google Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:15:00", "duration": 45, "tags": ["architecture", "open-source", "Microservices"]}, "255": {"id": 255, "abstracts": ["Ever feel like your open source project could be better tested? Lack of tests holding you back from contributors but you don\u2019t know where to start? You\u2019re not alone.\r\n\r\n[\u201cAdopt pytest month\u201d][1] was held in April 2015. [Pytest][2] volunteers were paired with open source software projects, to find a path to better testing with pytest. Projects varied from libraries/command line utilities, to a browser, to a complex Django app. In some cases converting existing tests was necessary, in others writing the first tests in existence for non-trivial amounts of code. Two projects were open sourced specifically to take part in \u201cadopt pytest month\u201d. What began as an experiment in increasing software audience proved to be an interesting exercise in strengthening community and most valuable of all, provided a newcomer\u2019s perspective to veteran contributors.\r\n\r\nThis talk will discuss what worked well with \u201cadopt pytest month\u201d, what didn\u2019t, what we learned about pytest and what you could take away for your open source project, be it an improved testing environment or an improved contributor community. A basic knowledge of testing and pytest will be useful.\r\n\r\n [1]: http://pytest.org/latest/adopt.html\r\n [2]: http://pytest.org/latest/\r\n"], "have_tickets": [true], "title": "The realities of open source testing: lessons learned from \u201cAdopt pytest month\u201d", "speakers": "Brianna Laugher", "track_title": "Barria1 Room", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["tdd", "open source", "community", "open-source", "Testing", "pytest", "py.test"]}, "115": {"id": 115, "abstracts": ["At Yelp, we ship code multiple times a day and have maintained this pace as our team has grown to 300+ and our codebase to several million lines of Python code. This talk explores the pain points we experienced along the ways, how our service-oriented architecture alleviates them, and the infrastructure we built to develop, test, and deploy in this highly-distributed environment. As a case study, we\u2019ll be looking at the backend powering the new Yelp Business Owner Android and iOS apps.\r\n\r\nAt the start, most of the development at Yelp occurred in a single, monolithic web application, creatively named \u201cyelp-main\u201d (naming is hard!). As the company grew, our developers were spending increasing amounts of time trying to ship code. After recognizing this pain point, we started experimenting with a service oriented architecture to scale the development process, and so far it\u2019s been a resounding success. Over the course of the last three years, we\u2019ve gone from writing our first service to having over seventy production services. Along the way, we\u2019ve dabbled with Docker containers, Pyramid, SQLAlchemy, uWSGI, gevent, and virtualenv in an effort to build the next-generation service platform for our engineers."], "have_tickets": [true], "title": "Building mobile APIs with services at Yelp", "speakers": "Stephan Jaensch", "track_title": "Barria2 Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["services", "distributed-systems", "REST", "docker", "swagger", "pytest", "Pyramid"]}, "67": {"id": 67, "abstracts": ["Do you deploy your Python services to Amazon EC2, or to Openstack, or even to HP cloud, joyent or Azure? Do you want to - without being tied into any one of them? What about local full stack deployments with lxc or kvm containers?\r\n\r\nEven if you're convinced you don't need \"the cloud\" because you manage your own servers, amazing technologies like Private clouds and MaaS, for dynamic server management on bare metal, may change your mind.\r\n\r\nFed up with the cloud hype? Let us rehabilitate the buzzword! (A bit anyway.)\r\n\r\nA fully automated cloud deployment system is essential for rapid scaling, but it's also invaluable for full stack testing on continuous integration systems. Even better, your service deployment and infrastructure can be managed with Python code? (Devops distilled)\r\n\r\nTreat your servers as cattle not as pets, for service oriented repeatable deployments on your choice of back-end. Learn how service orchestration is a powerful new approach to deployment management, and do it with Python! If any of this sounds interesting then Juju maybe for you!\r\n\r\nIn this talk we'll see a demo deployment for a Django application and related infrastructure. We'll be looking at the key benefits of cloud deployments and how service orchestration is different from the \"machine provisioning\" approach of most existing cloud deployment solutions."], "have_tickets": [true], "title": "To the Clouds: Why you should deploy to the cloud even if you don't want to", "speakers": "Michael Foord", "track_title": "Barria1 Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["OpenStack", "DevOps", "linux", "go", "cloud", "ec2"]}, "233": {"id": 233, "abstracts": ["How to write a test so you would remember what it does in a year from now? How to write selective tests with different inputs? What is test? How to subclass tests cases and yet maintain control on which tests would run? How to extend or to filter inputs used in parent classes? Are you a tiny bit intrigued now? :)\r\n\r\nThis is not another talk about how to test, but how to organize your tests so they were maintainable. I will be using nose framework as an example, however main ideas should be applicable to any other framework you choose. Explaining how some parts of code works I would have to briefly touch some advanced python topics, although I will provide need-to-know basics there, so people with any level of python knowledge could enjoy the ride.\r\n"], "have_tickets": [true], "title": "Sustainable way of testing your code", "speakers": "Eugene Amirov", "track_title": "Google Room", "timerange": "2015-07-20 15:45:00, 2015-07-20 16:15:00", "duration": 30, "tags": ["nose", "unit-testing", "maintainability", "readability"]}, "196": {"id": 196, "abstracts": ["In static unit testing, the output of a function is compared to a precomputed result. Even though such unit tests may apparently cover all the code in a function, they might cover only a small subset of behaviours of the function. This potentially allows bugs such as heartbleed to stay undetected. Dynamic unit tests using fuzzing, which allows you to specify a data generation template, can make your test suite more robust.\r\n\r\nIn this talk, we demonstrate fuzzing using the hypothesis library.\r\nHypothesis is a Python library to automatically generate test data based on a template.\r\nData is generated using a strategy. A strategy specifies how data is generated, and how falsifying examples can be simplified. Hypothesis provides strategies for Python's built-in data types, and is easily customizable.Since test data is generated automatically, we can not compare against pre-computed results. Instead, tests are usually done on invariants of functions. We give an overview of such invariants.\r\n\r\nFinally, we demonstrate how we use fuzzing to test machine learning algorithms at Blue Yonder."], "have_tickets": [true], "title": "What's the fuzz all about? Randomized data generation for robust unit testing", "speakers": "Moritz Gronbach", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:15:00", "duration": 45, "tags": ["fuzzing", "hypothesis", "unit-testing"]}, "106": {"id": 106, "abstracts": ["Do you like visiting Python conferences like the EuroPython? Does it\r\nmake you to want something similar where you live too? This talk looks\r\ninto the effort, practical things and some good tips on how to\r\nbootstrap your own Python community where you live!\r\n\r\nIf you already run a local Python community, join this talk to share\r\nyour views and give your comments to those interested in building\r\ntheir first Python community.\r\n\r\nAfter the talk you have a good idea of what it takes to run your local\r\nPython community (spoiler: not much!) and how can you take it even further!"], "have_tickets": [true], "title": "How-To: Build a local Python community", "speakers": "Jyrki Pulliainen", "track_title": "Google Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 15:45:00", "duration": 30, "tags": ["conferences", "organizer", "meetup", "community"]}, "336": {"id": 336, "abstracts": ["One point usually underestimated or omitted when dealing with \r\nmachine learning algorithms is how to write *good quality* code.\r\nThe obvious way to face this issue is to apply automated testing, which aims at implementing (likely) less-buggy and higher quality code.\r\n\r\nHowever, testing machine learning code introduces additional concerns that has to be considered. On the one hand, some constraints are imposed by the domain, and the risks intrinsically related to machine learning methods, such as handling unstable data, or avoid under/overfitting. On the other hand, testing scientific code requires additional testing tools (e.g., `numpy.testing`), specifically suited to handle numerical data.\r\n\r\nIn this talk, some of the most famous machine learning techniques will be discudded and analysed from the `testing` point of view, emphasizing that testing would also allow for a better understanding of how the whole learning model works under the hood.\r\n\r\nThe talk is intended for an *intermediate* audience.\r\nThe content of the talk is intended to be mostly practical, and code\r\noriented. Thus a good proficiency with the Python language is **required**.\r\nConversely, **no prior knowledge** about testing nor Machine Learning \r\nalgorithms is necessary to attend this talk.", "", ""], "have_tickets": [true], "title": "Machine Learning Under Test", "speakers": "Valerio Maggio", "track_title": "A2 Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["data-science", "machine-learning", "nose", "py.test", "sklearn", "scipy", "numpy", "Testing"]}, "55": {"id": 55, "abstracts": ["When you see users starting to use your feature, you feel very proud and fulfilled. So why feel this only once every few weeks, why not feel it every day? In this talk I will show how we changed our workflow to automate deployment of code changes to production every time a feature is ready - sometimes even few times per day. I will present how to successfully combine open-source tools like Git, Jenkins, Buildout, Fabric, uWSGI, and South, in order to simplify the process and make it more reliable. I will discuss challenges that we faced implementing this workflow in a real project based on Django and how we resolved them. During this talk you will gain the knowledge required to implement Continuous Deployment in your own project."], "have_tickets": [false], "title": "Continuous Deployment for webapps based on Django", "speakers": "Wojciech Lichota", "track_title": "A2 Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["case study", "Tooling", "django", "Best Practice", "deployment"]}, "372": {"id": 372, "abstracts": ["Scalability is a big problem for everyone who wants to grow. In order to handle the demand, appropriate infrastructure both in terms of software and hardware should be met. What if hardware was as dynamic as a service where CPU and RAM could have been acquired when only it's needed. Is there such an environment? How can you work with it? What you should be careful of? How your applications should evolve?\r\n", "", ""], "have_tickets": [true], "title": "Preparing Apps for Dynamic Scaling", "speakers": "roy simkes", "track_title": "Barria1 Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:00:00", "duration": 30, "tags": ["Scalability"]}, "45": {"id": 45, "abstracts": ["[Cython][1] is not only an excellent and widely used tool to speed up computational Python code, it's also a very comfortable way to talk to native code and libraries. The Cython compiler translates Python code to C or C++ code, and supports static type annotations to allow direct use of C/C++ data types and functions. The tight integration of all three languages makes it possible to freely mix Python features like generators and comprehensions with C/C++ features like native data types, pointer arithmetic or manually tuned memory management in the same code.\r\n\r\nThis talk by a core developer introduces the Cython compiler by interactive code examples and presents recent enhancements in the language that continue to make Cython the best choice for the development of fast and portable Python extensions.\r\n\r\n [1]: http://cython.org/\r\n"], "have_tickets": [true], "title": "Get native with Cython", "speakers": "Stefan Behnel", "track_title": "Barria1 Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["Cython", "python", "c++", "ipython"]}, "231": {"id": 231, "abstracts": ["The terminal emulators we run so many of our programming tools in are more powerful than we remember to give them credit for, and the key to that power is understanding the interface. This talk will cover terminal colors and styles, writing to arbitrary portions of the screen, handling signals from the terminal, determining the terminal's dimensions and scrollback buffer behavior.\r\n\r\nTerminal programming can get hairy; along the way we'll deal with encoding issues, consider cross platform concerns, acknowledge 4 decades' worth of standards for terminal communication, and consider that humans at interactive terminals may not be the only users of our interfaces. By gaining an understanding of these issues, we'll be able choose from the abstractions over them offered by Python libraries Urwid, Blessings, and Python Prompt Toolkit.\r\n\r\nThis talk requires minimal Python knowledge, but does assume familiarity with command line tools in a unix environment.\r\n\r\nAn abbreviated version of this talk was presented at PyCon 2015 in Montr\u00e9al: https://www.youtube.com/watch?v=WAitSilLDUA With the additional time I'd hope to present more code examples, a more in-depth tour of existing libraries and more practical advice about writing programs that use the terminal, and an additional example of a difficult terminal details: dealing with reflowing of text in modern terminal emulators like GNOME Terminal and iTerm."], "have_tickets": [true], "title": "Terminal Whispering", "speakers": "Thomas Ballinger", "track_title": "Barria1 Room", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["terminal", "Urwid", "Blessings", "command-line", "REPL", "unix", "curses"]}, "352": {"id": 352, "abstracts": ["You've heard about Python's GIL. But what is it really? What does it do, both good and bad?\r\n\r\nCome learn all about the Python GIL. You'll learn about its history, all the problems it solves, all the problems it causes (that we know about!), and what it would take to remove the GIL.\r\n\r\nAttendees should be familiar with the terrors inherent in multithreaded programming, and be comfortable with a little C code in the slides.", "", ""], "have_tickets": [true], "title": "Python's Infamous GIL", "speakers": "Larry Hastings", "track_title": "Google Room", "timerange": "2015-07-23 15:45:00, 2015-07-23 16:15:00", "duration": 30, "tags": ["GIL", "cpython"]}, "63": {"id": 63, "abstracts": ["Python is the language of choice for the orchestration part of MySQL 5.6. \r\n\r\nAfter a brief introduction of MySQL replication architecture, the talk [Slides here][1] presents the python utilities released by MySQL: a set of drivers in pure-python, mysql-utilites for replication, management and failover, and fabric, a tool for scaling, sharding and provisioning new servers.\r\n\r\nYou will see how to create resilient configurations in minutes and use mysql-fabric to create high available infrastructures.\r\n\r\nAs a plus, we'll show how we implemented a fabric provider for provisioning new databases via docker\r\n\r\nPrerequisites: basic database knowledge, transactions, replication. MySQL specific concepts (eg: binary logs) are briefly introduced in the talk.\r\n\r\n [1]: http://www.slideshare.net/ioggstream/scaling-mysql-with-python", "Python is the language of choice for the orchestration part of MySQL 5.6. \r\n\r\nAfter a brief introduction of MySQL replication architecture, the talk [Slides here][1] presents the python utilities released by MySQL:\r\n\r\n - a set of drivers in pure-python \r\n - mysql-utilites for replication, management and failover\r\n - fabric, a tool for scaling, sharding and provisioning new servers\r\n\r\nYou will see how to:\r\n\r\n - create resilient configurations in minutes\r\n - use mysql-fabric to create high available infrastructures\r\n\r\nAs a plus, we'll show how we:\r\n\r\n - implemented a fabric provider for provisioning new databases via docker\r\n\r\n\r\n# Prerequisites\r\n\r\nBasic database knowledge, transactions, replication. \r\n\r\nMySQL specific concepts (eg: binary logs) are briefly introduced in the talk.\r\n\r\n\r\n [1]: http://www.slideshare.net/ioggstream/scaling-mysql-with-python", ""], "have_tickets": [true], "title": "Scaling MySQL with Python", "speakers": "Roberto Polli", "track_title": "Barria1 Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["Database", "mysql", "case study", "docker", "linux"]}, "108": {"id": 108, "abstracts": ["My talk is meant to provide an overview of our current set of tools for storing data and how we arrived to these. Then, in the light of the current bottlenecks, and how hardware and software are evolving, provide a brief overview of the emerging technologies that will be important for handling Big Data within Python. Although I expect my talk to be a bit prospective, I won't certainly be trying to predict the future, but rather showing a glimpse on what I expect we would be doing in the next couple of years for properly leveraging modern architectures (bar unexpected revolutions ;).\r\n\r\nAs an example of library adapting to recent trends in hardware, I will be showing bcolz (https://github.com/Blosc/bcolz), which implements a couple of data containers (and specially a chunked, columnar 'ctable') meant for storing large datasets efficiently.\r\n"], "have_tickets": [true], "title": "New Trends In Storing Large Data Silos With Python", "speakers": "Francesc Alted", "track_title": "Barria1 Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["Database", "bigdata", "python", "open-source", "data-science"]}, "272": {"id": 272, "abstracts": ["The popularity of Single Page Applications build with modern JavaScript frameworks is increasing, and more and more teams work on projects with separate frontend and backend components communicating over the network. At the same time, complex projects are evolving their architecture towards containerized microservices. However, most traditional batteries-included web frameworks are not designed for this paradigm.\r\n\r\nThis talk covers some best practices for building REST APIs for private use (in contrast to public ones), focusing on issues like authentication, error handling, validation, and serialization. It will also try to convince you that this might be a good moment to reconsider microframeworks like Flask instead of your favourite opinionated web framework."], "have_tickets": [true], "title": "Killer REST APIs for rich JS applications", "speakers": "Adam Byrtek", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["web", "flask", "HTTP", "api", "REST"]}, "65": {"id": 65, "abstracts": ["The Raspberry Pi weather station project introduces young people to using python programming to solve real and technical problems. The weather station consists of a range of sensors including:\r\nAnemometer\r\nRain gauge\r\nWind Vane\r\nTemperature Probe\r\nBarometer\r\nAir Quality Sensor\r\nHygrometer\r\n\r\n1000 kits are being given away to schools to take part in the project by following our schemes of work which will involve.\r\nProgramming basic interrupt based sensors\r\nAdvanced Sensors using ADC chips\r\nCreate a pygame based UI\r\nLogging data to MySQL and Oracle Apex\r\nPresenting data to a web app\r\nDeploying the weather station\r\nIntegrating Apex database\r\n\r\nWe would love feedback on the project from Python Developers and support in updating some libraries from python 2 to 3.", "", ""], "have_tickets": [false], "title": "Raspberry Pi Weather Station", "speakers": "James Robinson", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 15:15:00, 2015-07-23 15:45:00", "duration": 30, "tags": ["education", "python3", "weather", "python2"]}, "265": {"id": 265, "abstracts": ["Kotti is a high-level, Pythonic web application framework based on Pyramid, SQLAlchemy and Bootstrap 3. It includes an extensible Content Management System called the Kotti CMS. Kotti is particularly well suited for building custom applications with object level security. It comes with complete user and group management and supports the concepts of global and local roles providing management views for each of those. \r\n\r\nThe talk will give an overview on Kotti, its philosophy, history and future. Target audience are people who want to learn what it is and can be used for. Because Kotti is just a rather small layer on top of its foundations, the talk might also give some interesting insights on how to build a solid (web) framework that suits your personal preferences.\r\n\r\nReferences:\r\n\r\n - http://kotti.pylonsproject.org/\r\n - http://kotti.readthedocs.org/en/latest/\r\n\r\n"], "have_tickets": [true], "title": "Standing on the Shoulders of Giants: The Kotti Web Application Framework", "speakers": "Andreas Kaiser", "track_title": "Barria1 Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 15:45:00", "duration": 30, "tags": ["wsgi", "web", "open-source", "SQLAlchemy", "Kotti", "Pyramid"]}, "271": {"id": 271, "abstracts": ["Generar documentaci\u00f3n de forma din\u00e1mica es relevante para los ingenieros de software porque ellos interact\u00faan con la data en el mismo donde est\u00e1 localizada. Es tambi\u00e9n relevante para los clientes porque la documentaci\u00f3n se puede presentar en un formato organizado y claro. En esta presentaci\u00f3n, hablaremos de c\u00f3mo usar un proceso unificado para generar din\u00e1micamente la documentaci\u00f3n de diversas fuentes de data incluyendo los wikis y los sistemas de rastreo de incidencias. \r\n\r\nIdealmente, nosotros como ingenieros deber\u00edamos interactuar solamente con una Fuente de informaci\u00f3n que nos dara como resultado una documentaci\u00f3n vigente y correspondiente al estado actual de un sistema. En el Presente, el cliente recibe documentos incompletos y sin actualizaci\u00f3n dando una incorrecta impresi\u00f3n del estado vigente de un Sistema. Usando un proceso unificado para generar documentaci\u00f3n de solo una Fuente de data permite presentar al cliente lo que se merece: artefactos actualizados y completos dando el real y mas reciente estado de un Sistema. El resto de esta presentaci\u00f3n se enfocara en c\u00f3mo lograr este Sistema.", "Generar documentaci\u00f3n de forma din\u00e1mica es relevante para los ingenieros de software porque ellos interact\u00faan con la data en el mismo donde est\u00e1 localizada. Es tambi\u00e9n relevante para los clientes porque la documentaci\u00f3n se puede presentar en un formato organizado y claro. En esta presentaci\u00f3n, hablaremos de c\u00f3mo usar un proceso unificado para generar din\u00e1micamente la documentaci\u00f3n de diversas fuentes de data incluyendo los wikis y los sistemas de rastreo de incidencias. \r\n\r\nLa documentaci\u00f3n especifica (documentos requeridos, documentos de dise\u00f1o, etc.) es un punto cr\u00edtico para el desarrollo de un Sistema. Desafortunadamente, desde el momento de su creaci\u00f3n los documentos quedan desactualizados a causa del r\u00e1pido desarrollo y mejoras de c\u00f3digo que ocurren actualmente en la industria. Con frecuencia, estas mejoras no son anotados en la documentaci\u00f3n. El resultado de esto son documentos que no sirven o que son creados con mucha prisa resultando en documentos mediocres. Adicionalmente hay diversas fuentes de data sin actualizar que causan tener distintas versiones de estado actual de un Sistema.\r\n\r\nIdealmente, nosotros como ingenieros deber\u00edamos interactuar solamente con una Fuente de informaci\u00f3n que nos dara como resultado una documentaci\u00f3n vigente y correspondiente al estado actual de un sistema. En el Presente, el cliente recibe documentos incompletos y sin actualizaci\u00f3n dando una incorrecta impresi\u00f3n del estado vigente de un Sistema. Usando un proceso unificado para generar documentaci\u00f3n de solo una Fuente de data permite presentar al cliente lo que se merece: artefactos actualizados y completos dando el real y mas reciente estado de un Sistema. El resto de esta presentaci\u00f3n se enfocara en c\u00f3mo lograr este Sistema.", ""], "have_tickets": [true], "title": "Incorporando administrado repositorios de informaci\u00f3n para generar documentaci\u00f3n on-demand", "speakers": "Todd Waits", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:00:00", "duration": 30, "tags": ["process", "teams", "knowledge", "management", "documentation", "DevOps", "automation", "workflow"]}, "200": {"id": 200, "abstracts": ["This presentation introduces Flowy, a library for building and running distributed, asynchronous workflows built on top of different backends (such as Amazon\u2019s SWF). Flowy deals away with the spaghetti code that often crops up from orchestrating complex workflows. It is ideal for applications that do multi-phased batch processing, media encoding, long-running tasks, and/or background processing.\r\n\r\nWe'll start by discussing Flowy's unique execution model and see how different execution topologies can be implemented on top of it. During the talk we'll run and visualize workflows using a local backend. We'll then take a look at what it takes to scale beyond a single machine by using an external service like SWF."], "have_tickets": [true], "title": "Distributed Workflows with Flowy", "speakers": "Sever Banesiu", "track_title": "Barria2 Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["SWF", "workflow", "AWS", "distributed-computing"]}, "316": {"id": 316, "abstracts": ["At some previous EuroPythons, I have taken advantage of people, while eating their food at the conference dinner, to extract money. But don't worry, it's all been in a good cause: in aid of the [Python Software Foundation][1], which defends the intellectual property of the Python language, and supports Python conferences. We are well represented in the list of the [top PSF donors][2]:\r\n\r\n- 53. EuroPython 2013 Sponsored Massage\r\n- 278. EuroPython 2012 Sponsored Massage\r\n- 499. EuroPython 2011 Sponsored Massage\r\n- 572. EuroPython 2010 Sponsored Massage\r\n- 1331. EuroPython Conference Dinner (sponsored massage)\r\n\r\nIn the early days, I could reasonably visit most tables, offering a shoulder massage in return for a donation. But now, there are too many diners, and not enough hands to do this on my own! **_I need lots of help_**:\r\n\r\n - Doing neck and shoulder massage\r\n - Collecting money in a wine bucket\r\n - Counting and bagging the money\r\n - Exchanging multiple currencies and getting it into the PSF account\r\n - Feeling good that you're doing something for the Python community\r\n\r\n**What do you need to join in?** For everything apart from the massage, common sense, honesty and a sense of humour! Given these, I will be running a short massage workshop. Learn how to relax your own neck and shoulders, with fewer headaches, and less stress from hours spent crouching over a laptop. Then find out the essentials of massaging someone else's neck, shoulders and back for three to four minutes. Become a more valuable member of your work team back home. Help others to relax!\r\n\r\n### Requirements:\r\n\r\n1. Please attend the workshop only if you are actually coming to the conference dinner.\r\n1. You don't need to have particularly strong thumbs and fingers (elbows make a good substitute). But you do need to be not afraid of touching people. Massage is not tickling!\r\n1. Lack of embarrassment about asking for money. More people will pay not to have a massage, than to be massaged -- and that's OK!\r\n1. Join in!\r\n\r\nIf you'd rather not give a massage to diners/donors, no problem: there are lots of other ways to help. But at least you need to join fully in the workshop, so that you experience something of what we'll be asking money for. **A workshop means no onlookers -- all participants!**\r\n\r\n [1]: https://www.python.org/psf/\r\n [2]: http://legacy.python.org/psf/donations/\r\n", "", ""], "have_tickets": [true], "title": "Sponsored massage training, in aid of the Python Software Foundation", "speakers": "Rob Collins", "track_title": "Exhibition Hall / Helpdesk ", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:30:00", "duration": 45, "tags": ["PSF", "massage", "relax", "REST"]}, "170": {"id": 170, "abstracts": ["Devpi is an open source PyPi-compatible package server. Its versatile features make it the Swiss Army knife of Python package and release management, enabling anyone to shape a custom release workflow.\r\n\r\nIn this talk, I will detail how we use our company-wide Devpi installation in order to share a large set of packages across teams, deploy binary packages to our application servers, and mix and mash open source packages with our own. With Devpi being a critical part of our release and deployment infrastructure, I will also cover our high-availability setup and how we perform major version updates with minimal downtime.\r\n\r\nWhile this talk is not meant to be an exhaustive introduction of all available Devpi features, it can offer insights on how Devpi can be used at a larger scale.", "", ""], "have_tickets": [true], "title": "Release Management with Devpi", "speakers": "Stephan Erb", "track_title": "Barria1 Room", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:00:00", "duration": 30, "tags": ["case study", "deployment", "packaging", "Devpi"]}, "48": {"id": 48, "abstracts": ["Trying to find a good place to eat has become much easier and democratic with online reviews, but on the other hand, that creates new problems. Can you trust that 5 star review of fast food chain as much as the 1 star of a fancy restaurant because \"Toast arrived far too early, and too thin\"?\r\n\r\nWe all like enjoy things differently. Starting of on the assumption that the \"best pizza\" is not the same for everyone. Can we group users into people that has similar tastes? Can we identify reviews and restaurants to make sense of it? Can that lead us to a better way to find restaurants that you like?\r\n\r\nUsing some data handling techniques I walk you through my process and results that I've got from that idea. There are no requisites for this talk except basic python and math knowledge (matrices exist)\r\n\r\n "], "have_tickets": [true], "title": "Yak shaving a good place to eat using non negative matrix factorization", "speakers": "Adriano Petrich", "track_title": "Barria1 Room", "timerange": "2015-07-23 15:45:00, 2015-07-23 16:15:00", "duration": 30, "tags": ["visualization", "fun", "data-science"]}, "204": {"id": 204, "abstracts": ["There is a lot buzz about the Internet of things and how it's going to be the next big thing in computing. Python can power \"things\" and is used extensively in network applications, however there isn't much information out there about where Python can be used to build end-to-end IoT products.\r\n\r\nGoals :\r\nTo put into perspective the usefulness of Python in building IoT products.\r\nSpread awareness on possibilities of using Python on embedded hardware."], "have_tickets": [true], "title": "Python & Internet of Things", "speakers": "Ravi Vagadia", "track_title": "A2 Room", "timerange": "2015-07-20 15:45:00, 2015-07-20 16:15:00", "duration": 30, "tags": ["wearables", "BlE", "IoT", "distributed-computing"]}, "349": {"id": 349, "abstracts": ["Python is a fantastic language for writing web scrapers. There is a large ecosystem of useful projects and a great developer community. However, it can be confusing once you go beyond the simpler scrapers typically covered in tutorials.\r\n\r\nIn this talk, we will explore some common real-world scraping tasks. You will learn best practises and get a deeper understanding of what tools and techniques can be used.\r\n\r\nTopics covered will include:\r\n- Crawling - single pages, websites, focussed crawlers, etc.\r\n- Data extraction - techniques for \u201cscraping\u201d data from from web pages (e.g. regular expressions, xpath, machine learning).\r\n- Deployment - how to run and maintain different kinds of web scrapers\r\n- Real world examples\r\n", "", ""], "have_tickets": [true], "title": "Advanced Web Scraping", "speakers": "Shane Evans", "track_title": "Google Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["scrapy", "scraping"]}, "289": {"id": 289, "abstracts": ["This case study show how to start from a simple distance search on elasticsearch and haystack and implement a production ready search like airbnb. \r\nThe talk will explain decay functions works with the different curves (linear, exponential, gauss) and how to send them with query scores to elasticsearch. With that you will be able to mix the distance, the price, the user activity, the number of picture and whatever you want. \r\n\r\n\r\nAdditionally I will show how to write a custom ElasticsearchSearchQuery and ElasticsearchSearchBackend because this is not yet supported by haybtacksearch.\r\n\r\nAll the code will be available on github soon\r\n\r\n"], "have_tickets": [true], "title": "From basic distance search to a complex multi criteria search", "speakers": "Antonin Lacombe", "track_title": "A2 Room", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:00:00", "duration": 30, "tags": ["web", "haystacksearch", "django", "elasticsearch"]}, "122": {"id": 122, "abstracts": ["Software development is all about writing code that delivers additional value to a customer. Following the agile and lean approach this value created by code changes should be continuously delivered as fast, as early and as often as possible without any compromise on the quality. \r\nRemarkably, there is a huge gap between the development of the application code and the reliable and scalable operation of the application. As an example, most of the tutorials about web development with Flask or Django end by starting a local \u201cdummy\u201d server, missing out all the steps needed for production ready operation of the web service. Furthermore, as there is no \u201crocket science\u201d in-between, many proposals to bridge that gap from both sides, operations and developers start with sentences like: \u201cyou just have to...\u201d, a clear indication that it will cause problems later on and also a symptom of a cultural gap between developers and operations staff.\r\nIn this talk I will go through the complete delivery pipeline from application development to the industrial grade operation, clearly biased towards the \u201cDevOps\u201d mindset. Instead of presenting a sophisticated enterprise solution, I will outline the necessary building blocks for continuous delivery and fill them up with simple but working poor man's solutions, so that it is equally useful for professional and non-professional developers and operations engineers. After the talk you will know how to build such a continuous delivery pipeline with open-source tools like \u201cAnsible\u201d, \u201cDevpi\u201d and \u201cJenkins\u201d and I will share some of my day-to-day experiences with automation in general. Although many of the concepts are language agnostic I will focus on the ins and outs in a python universe and outline the pythonic way of \u201cget this thing running\u201d.\r\n"], "have_tickets": [true], "title": "A Pythonic Approach to Continuous Delivery", "speakers": "Sebastian Neubauer", "track_title": "A2 Room", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["Operations", "ApplicationLifecycle", "ConfigurationManagement", "Devpi", "ContinuousDelivery", "Jenkins", "DevOps", "ansible"]}, "324": {"id": 324, "abstracts": ["Do you know what happens every time you use the **@** symbol in Python?\r\n\r\nIn this talk we will see the magic behind the _syntactic sugar_ of the decorators. To understand how they internally work we will see in detail Python's **scopes**, **namespaces** and **closures**, and finally we will manually apply our own handcrafted decorator.\r\n\r\nThis talk is an improved version (in English) of the talk I delivered at PyConES 2013 (the feedback was pretty positive): [https://www.youtube.com/watch?v=d9-yTnJgcg4 ][1]\r\n\r\nLevel:\r\nIntermediate. Attendees must have previous knowledge of Python and should be somehow familiar with the **'@'** notation to decorate a function.\r\n\r\n [1]: https://www.youtube.com/watch?v=d9-yTnJgcg4\r\n"], "have_tickets": [true], "title": "Decorators demystified", "speakers": "Pablo Enfedaque", "track_title": "A2 Room", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["namespaces", "scopes", "decorators", "closures"]}, "230": {"id": 230, "abstracts": ["OpenCV Python bindings provide several ready to use tools for camera calibration, image recognition and camera position estimation. This talk will show how to recognize a picture, from a library of known paintings, and compute the camera position with respect to the recognized picture using OpenCV and numpy. This is applied to a tourist guide application for Google Glass through the recognition of the paintings exposed in the museum.\r\n"], "have_tickets": [true], "title": "Image recognition and camera positioning with OpenCV. A tourist guide application.", "speakers": "Francesco Nazzaro", "track_title": "Barria1 Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:00:00", "duration": 30, "tags": ["python", "Google Glass", "ipython notebook", "image recognition", "numpy", "OpenCV"]}, "23": {"id": 23, "abstracts": ["In this talk I will describe how to use Apache Spark (PySpark) with some data from the World of Warcraft API from an iPython notebook. Spark is interesting because it speeds up iterative processes on your hadoop cluster as well as your local machine. \r\n\r\nI will give basic benchmarks (comparing it to numpy/pandas/scikit), explain the architecture/performance behind the technology and will give a live demo on how I used Spark to analyse an interesting dataset. I'll explain why you might want to use Spark and I'll also go in and explain when you don't want to use it. \r\n\r\nThe dataset I will be using is a 22Gb json blob containing auction house data from all world of warcraft servers over a period of time. The goal of the analysis will be to determine when and if basic economics still applies in a massively online game. \r\n\r\nI will assume that the everyone knows what the ipython notebook is and I will assume a basic knowledge of numpy/pandas but nothing fancy. The dataset has been chosen such that people who are less interested in Spark can still enjoy the analysis part of the talk. If you know very little about data science but if you love video games then you should like this talk.", "", ""], "have_tickets": [true], "title": "PySpark and Warcraft Data", "speakers": "vincent warmerdam", "track_title": "A2 Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["data-science", "machine-learning", "bigdata", "analytics", "pandas", "numpy"]}, "59": {"id": 59, "abstracts": ["The author shows how to use the [SleekXMPP][1] library in order to write a small chatbot that connects to Google Hangouts and reminds you or someone else to take medication for instance. The secure and recommended OAuth2 protocol is used to authorize the bot application in the [Google Developers Console][2] in order to access the Google+ Hangouts API. The author will elaborate then on how to use an event-driven library to write a bot that sends scheduled messages, waits for a proper reply and repeats the question if need be. Thereby, a primer on event-driven architectures will be given.\r\n\r\n [1]: http://sleekxmpp.readthedocs.org/\r\n [2]: https://console.developers.google.com/\r\n"], "have_tickets": [true], "title": "\"It's about time to take your medication!\" or how to write a friendly reminder bot ;-)", "speakers": "Florian Wilhelm", "track_title": "Barria2 Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["automation", "xmpp", "oauth2", "bot", "network", "hangouts"]}, "318": {"id": 318, "abstracts": ["Odoo is used by 2 millions of users, although relatively unknown in the python community, it has a vibrant community and is one of the most active python open source project.\r\n\r\nI will present you the Odoo framework and how it can help to be more productive when building web based business apps. I will highlight its advantages compared to more popular framework such as django.", "", ""], "have_tickets": [true], "title": "Odoo the underdog python killer app. A python framework for web based business apps.", "speakers": "Antony Lesuisse", "track_title": "Google Room", "timerange": "2015-07-22 12:30:00, 2015-07-22 13:15:00", "duration": 45, "tags": ["werkzeug", "HTTP.", "python", "javascript", "postgresql", "wsgi", "web", "django"]}, "213": {"id": 213, "abstracts": ["Have you ever developed a nice, well-working python program on one environment, only to have it blow up with exceptions and tracebacks when you run it on a different environment? Have no fear! This talk will show you how to write and maintain python code that is compatible across environments that may differ by python versions and/or operating systems.\r\n\r\nTechniques and tips will be drawn from lessons and experiences gained from making the AWS CLI, a python-based command line tool to manage AWS resources, compatible across a wide range of environments. In a case-study-like format, real-life compatibility issues encountered while developing the AWS CLI will be presented along with how we resolved each of them. These real-life examples will encompass, but will not be limited to, the following topics:\r\n\r\n\u2022 How to use functions and classes that may differ across python versions and/or operating systems\r\n\r\n\u2022 How to handle version-specific bugs\r\n\r\n\u2022 How to handle strings, bytes, and Unicode across python versions\r\n\r\n\u2022 How to handle differing locale settings\r\n\r\n\u2022 How to handle file operations across operating systems\r\n\r\n\u2022 How and when to vendor dependencies\r\n\r\n\u2022 How to write tests that are compatible across python versions and operating systems\r\n\r\n\u2022 How to create a testing environment that monitors compatibility of code across various environments\r\n\r\nUltimately, the goal of these examples is introduce to you some effective, real-world programming practices to overcome your current or next compatibility issue.\r\n"], "have_tickets": [true], "title": "It Works on My Machine: Writing Python Code for Any Environment", "speakers": "Kyle Knapp", "track_title": "Barria2 Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:00:00", "duration": 30, "tags": ["CLI", "packaging", "python2", "python3", "Best Practice", "Development", "Testing"]}, "294": {"id": 294, "abstracts": ["Docker has introduced a new model of deployment solving the infamous \"Deployment Matrix from Hell\" by using containers.\r\nBut this also brought the spotlight back on the Operating System side, and following the trails of CoreOS and Atomic Host, a new generation of Cloud Servers are born by using containers instead of traditional RPM/DPKG/tarball/whaterver packages model to deploy services. CoreOS/Atomic Host/Snappy Ubuntu and now VMWare Photon also provides transactional image-based OS focusing on security and built-in cluster management.\r\n\r\nDuring this talk, we'll present these next-gen OS, and their components and how they fit in. ", "", ""], "have_tickets": [true], "title": "The Lightweight Cloud Servers War Begins", "speakers": "Haikel Guemar", "track_title": "Barria1 Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["Photon", "Snappy", "atomic", "cloud", "Virtualization", "community", "docker", "infrastructure", "Best Practice", "CoreOS", "rocket"]}, "302": {"id": 302, "abstracts": ["The MongoDB aggregation framework provides a means to calculate aggregated values without having to use map-reduce. While map-reduce is powerful, it is often more difficult than necessary for many simple aggregation tasks, such as totaling or averaging field values.\r\n\r\nSee how to use the build-in data-aggregation-pipelines for averages, summation, grouping, reshaping. See how to work with documents, sub-documents, grouping by year, month, day, etc. \r\n\r\nThis talk will give many (live) examples how to make the most of your data with pymongo with a few lines of code.", "", ""], "have_tickets": [true], "title": "Data Analysis and Map-Reduce with mongoDB and pymongo", "speakers": "Alexander Hendorf", "track_title": "Google Room", "timerange": "2015-07-22 11:00:00, 2015-07-22 11:45:00", "duration": 45, "tags": ["pymongo", "bigdata", "python", "mongodb", "analytics"]}, "214": {"id": 214, "abstracts": ["A few months ago, Guido unfolded PEP 484, which was highlighted at PyCon 2015 as a keynote presentation. This proposal would introduce type hints for Python 3.5. While the debate is still roaring and without taking a side, I believe that there is much to learn from static type-checking systems.\r\n\r\nThe purpose of this talk is to introduce ways that could be used to fully take over the amazing power that comes with static types, inside a dynamic type language such as Python. The talk will go over what exactly a static type system is, and what kind of problem it tries to solve. We will also review Guido's proposal of type hinting, and what it could mean to you. Finally, I will present a few libraries that are available, such as Hypothesis or various QuickCheck-inspired library that tries to build more robust tests, how they achieve it and their limitations. Throughout the talk, a lot of examples will used to fully illustrate the ideas being explained. \r\n\r\nAt the end of this talk, you should have a better understanding of the wonderful world of type systems, and what it really means to you. It should help you decide wether using type hints will be helpful to you and also if an external library trying to fuzz your tests has its place inside your project "], "have_tickets": [true], "title": "Static type-checking is dead, long live static type-checking in Python!", "speakers": "Jean-Philippe Caissy", "track_title": "Google Room", "timerange": "2015-07-24 15:45:00, 2015-07-24 16:15:00", "duration": 30, "tags": ["python3", "type-hinting", "library", "static-analysis", "Testing"]}, "6": {"id": 6, "abstracts": ["Microservices are a fresh architecture trend. In this talk I will explain what a microservice is. I will answer WHY and HOW to build microservices using tooling from Python ecosystem. We will take a look at components that power microservices: web frameworks, task queues, databases, reporting & monitoring tools and also integration technologies.\r\n\r\nI will start from design & planning, go through implementation and deployment process and briefly cover internal communcation and MDM (master data management).\r\n\r\nFinally, I will present a brief overview of patterns and anti-patterns of microservice architectures, as well as cover few use cases and success stories.\r\n\r\nPrerequisites: be familiarized with at least one python web framework and have a general understanding of web stack."], "have_tickets": [true], "title": "Why should You consider microservices ?", "speakers": "Jacek Nosal", "track_title": "Barria2 Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 15:45:00", "duration": 30, "tags": ["HTTP.", "DevOps", "automation", "docker", "ansible", "Tooling"]}, "239": {"id": 239, "abstracts": ["Un proyecto hecho en Django durante dos a\u00f1os da para muchas an\u00e9cdotas y mucho aprendizaje. Esta charla es un repaso por las decisiones sobre lo humano y lo t\u00e9cnico que fuimos tomando durante el desarrollo del proyecto.\r\n\r\nSe\u00f1alar\u00e9 las buenas decisiones que tomamos en el equipo, y tambi\u00e9n las que no nos salieron bien y nos hicieron aprender por las malas. \r\n\r\nTanto las buenas como las malas decisiones nos ense\u00f1aron much\u00edsimo y aqu\u00ed las compilo junto con unos cuantos tips que pueden divertir y, ojal\u00e1, inspirar a la audiencia, especialmente a aquellas personas que se enfrentan por primera vez a un proyecto grande.\r\n", "", ""], "have_tickets": [true], "title": "Lecciones aprendidas en un proyecto grande de Django", "speakers": "Yamila Moreno", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["postgresql", "python", "django", "open-source", "Beginners"]}, "90": {"id": 90, "abstracts": ["At the beginning of this year I started working at Lyst and I was tasked with helping to replace their old and outdated web API with a modern RESTful replacement. \r\n\t\r\nAlong the way we encountered some interesting design decisions and now I\u2019m going to share what we learned about building a real RESTful API with Django and Django REST framework.\t\r\n\r\nI've been talking about how to build great RESTful APIs for the past year at various Python and Django conferences in Europe. Now I'd like to take some real world experiences from creating Lyst's new web API and share what I've learned along the way.\r\n"], "have_tickets": [true], "title": "What it's really like building RESTful APIs with Django", "speakers": "Paul Hallett", "track_title": "Google Room", "timerange": "2015-07-23 15:15:00, 2015-07-23 15:45:00", "duration": 30, "tags": ["HTTP.", "django", "api", "REST"]}, "184": {"id": 184, "abstracts": ["One of the problems programmers are most often faced with is the parsing and validation of command-line arguments. If you're new to Python or programming in general, you might start by parsing sys.argv. Or perhaps you might've already come across standard library solutions such as getopt, optparse or argparse in the official documentation. \r\nWhile these modules are probably preferable to parsing sys.argv yourself, you might wonder if there are more satisfactory solutions outside of the standard library. Well, yes there are!\r\n\r\nThis talk will give you an overview of some popular alternatives to the standard library solutions (e.g. click, docopt and cliff), explain their basic concepts and differences and show how you can test your CLIs."], "have_tickets": [true], "title": "Building nice command line interfaces - a look beyond the stdlib", "speakers": "Patrick M\u00fchlbauer", "track_title": "Google Room", "timerange": "2015-07-22 15:45:00, 2015-07-22 16:15:00", "duration": 30, "tags": ["docopt", "cliff", "Click", "CLI"]}, "71": {"id": 71, "abstracts": ["with modern_peripherals: \r\n Python and Flask\r\n\r\nAuto-scrolling sites, glance-following ads, and gesture friendly web pages are coming!\r\n\r\nOver the last few years three products emerged that enable interaction with computer in a new way: Myo Armband, Leap Motion Controller and EyeTribe. The Myo Armband is a device that uses the electrical activity in your muscles to wirelessly control your computer, phone, and tablet, which is especially useful when your hands are \"tied\" or dirty. This device will be used to navigate through the presentation. The Leap Motion Controller tracks both hands in front of the screen. From a web developer\u2019s perspective, both devices allows us to use gestures, previously restricted to touch devices, on desktops. EyeTribe is an affordable eye-tracking device. \r\n\r\nThe talk will briefly cover setting up SDKs and python wrappers, and then focus on possible uses in daily life, business and, of course, web app development. Code examples will be included. In addition, the trade-offs between processing this new type of input data in the client versus processing input on the server will be discussed.\r\n"], "have_tickets": [true], "title": "with modern_peripherals: Python and Flask", "speakers": "Piotr Dyba", "track_title": "A2 Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["Beginners", "python", "technologies", "flask", "web", "python3", "socket", "communication"]}, "222": {"id": 222, "abstracts": ["Have you ever worried that your tests aren't as good because they're running against a fake or mock instead of the real thing?\r\nVerified fakes solve this problem.\r\nVerified fakes allow for simplified testing using fakes while still providing the assurance that code tested using a fake implementation will behave the same way when used with a real implementation.\r\n\r\nThe talk will begin with a case-study, demonstrating what it means to write a \"verified fake\" implementation of a public API.\r\nI will show how to write tests that verify a fake implementation of a well defined API\r\nand I will show how those same tests can be re-used to verify and test real implementations of the same API.", "Have you ever worried that your tests aren't as good because they're running against a fake or mock instead of the real thing?\r\nVerified fakes solve this problem.\r\nVerified fakes allow for simplified testing using fakes while still providing the assurance that code tested using a fake implementation will behave the same way when used with a real implementation.\r\n\r\nThe talk will begin with a case-study, demonstrating what it means to write a \"verified fake\" implementation of a public API.\r\nI will show how to write tests that verify a fake implementation of a well defined API\r\nand I will show how those same tests can be re-used to verify and test real implementations of the same API.\r\n\r\nThe talk will end with a proposal that more libraries should include verified fakes.\r\nI will show, with real-world examples, how verified fakes can be used by integrators\r\nand discuss how they are superior to ad-hoc, unverified, mocking.\r\n\r\nDuring the talk I will refer to various real world, Open Source examples. Including:\r\n\r\n* Flocker's Pluggable \"Block Device Backend\" [1]\r\n\r\n This API allows Flocker to manipulate file systems on OpenStack Cinder Blocks and AWS EBS devices.\r\n It also makes it easy for third parties to implement their own Flocker block device backends.\r\n\r\n* Eliot's Memory Logger - and its use in testing and verifying logged messages.\r\n* LibCloud's DummyNodeDriver - and its limitations.\r\n* Boto - as an example of a library that could benefit from a verified, introspectable fake.\r\n* Docker-py - as an example of a library for which we have written a verified fake.\r\n\r\nThere will be at least 5 minutes for discussion at the end of the talk.\r\n\r\n[1] Flocker is an Open Source Docker orchestration system written in Python by ClusterHQ\r\n", ""], "have_tickets": [false], "title": "Faking It - The Art of Testing Using Verified Fakes", "speakers": "Richard Wall", "track_title": "A2 Room", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:00:00", "duration": 30, "tags": ["tdd", "AWS", "OpenStack", "docker", "api", "cloud", "Best Practice", "Testing", "linux"]}, "81": {"id": 81, "abstracts": ["Creating a large-scale event processing system can be a daunting task. Especially if you want it \u201cstupid simple\u201d and wrapped around each client\u2019s needs. We built a straightforward solution for this using Python 3 and other open-source tools.\r\n\r\nMain issues to solve for a system that needs to be both performant and scalable:\r\n\r\n - handling a throughput of 1 million events per minute in a 4 cores AWS instance;\r\n\r\n - following the principle of least astonishment;\r\n\r\n - data aggregation and how Python's standard libraries and data structures can help;\r\n\r\n - failsafe and profiling mechanisms that can be applied to any Linux service in production;\r\n\r\n - addressing unexpected behaviors of Python\u2019s Standard Library; like reading from a file while it is written;\r\n\r\n - tackling a sudden spectacular cloud instance failure;\r\n\r\nThe alternative to this system would be to adopt existing technology stacks that might be too general, add more complexity, bloat, costs and which need extensive work to solve your specific problem. Moreover, our approach resulted in over 85% drop on hardware utilisation.\r\n\r\n[Context: Production Software \u2013 II (where good coding reduces the client\u2019s bill)][1]\r\n\r\n [1]: https://eastvisionsystems.com/production-software-part-ii-good-coding-reduces-clients-bill/\r\n", "", ""], "have_tickets": [true], "title": "Use Python to process 12mil events per minute and still keep it simple (Talk)", "speakers": "Teodor Dima", "track_title": "Barria1 Room", "timerange": "2015-07-21 15:45:00, 2015-07-21 16:15:00", "duration": 30, "tags": ["bigdata", "performance", "architecture", "Development"]}, "267": {"id": 267, "abstracts": ["As an engineer working on any web stack, you may have heard about Blocking and Non-Blocking IO. You may as well have used any framework or library that supports Non-Blocking IO. After all, they are very useful as you don't want to block execution of other tasks while one task is waiting to complete a network call to another service (like HTTP call to an API or may be a TCP call to your database). Non-Blocking IO while doing tasks and not wait for IO. This also helps us handle a lot many connections than we possibly could with Blocking IO. Python supports Non-Blocking IO, but we always use some existing 3rd party library that hides all the gory details and makes it all look like black magic to the uninitiated. But there is nothing like black magic.\r\n\r\nThis presentation will be an introductory talk focused at explaining how Non-Blocking IO works, which is the basis of libraries like Gevent, Tornado and Twisted. We will learn about how Non-Blocking IO can be implemented using the most basic modules that form the base for the above mentioned libraries. Hopefully after this talk, Non-Blocking IO will not be an unsolved mystery for you anymore."], "have_tickets": [false], "title": "Understanding Non-blocking IO", "speakers": "Vaidik Kapoor", "track_title": "Google Room", "timerange": "2015-07-21 15:45:00, 2015-07-21 16:15:00", "duration": 30, "tags": ["web", "asyncronous", "networking"]}, "4": {"id": 4, "abstracts": ["Knowing that your application is up and running is great. However in order to make informed decisions about the future, you also need to know in what state your application currently is and how its state is developing over time.\r\n\r\nThis talk combines two topics that are usually discussed separately. However I do believe that they have a lot of overlap and ultimately a similar goal: giving you vital insights about your system in production.\r\n\r\nWe'll have a look at their commonalities, differences, popular tools, and how to apply everything in your own systems while avoiding some common pitfalls.", "", ""], "have_tickets": [true], "title": "Beyond grep: Practical Logging and Metrics", "speakers": "Hynek Schlawack", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["logging", "metrics", "errors", "DevOps"]}, "261": {"id": 261, "abstracts": ["Elasticsearch has many use cases, some of them fairly obvious and widely used, like plain searching through documents or analytics. In this talk I would like to go through some of the more advanced scenarios we have seen in the wild. Some examples of what we will cover:\r\n\r\nTrend detection - how you can use the aggregation framework to go beyond simple \"counting\" and make use of the full-text properties of Elasticsearch.\r\n\r\nPercolator - percolator is reversed search and many people use it as such to drive alerts or \"stored search\" functionality for their website, let's look at how we can use it to detect languages, geo locations or drive live search.\r\n\r\nIf we end up with some time to spare we can explore some other ideas about how we can utilize the features of a search engine to drive non-trivial data analysis including Geo-enabled search with relevancy.\r\n", "", ""], "have_tickets": [true], "title": "Beyond the basics with Elasticsearch", "speakers": "Honza Kr\u00e1l", "track_title": "Google Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:15:00", "duration": 45, "tags": ["search", "bigdata", "open-source", "elasticsearch", "analytics"]}, "189": {"id": 189, "abstracts": ["Continuous Integration is a software development practice where members of a team integrate their work frequently, leading to multiple integrations per day. Each integration is verified by an automated process (including tests) to detect integration errors as quickly as possible.\r\n\r\nThis talk will introduce the basic principles for building an effective Continuous Integration system for Python-based projects. It will present the lessons learned from building a Jenkins-based CI system for an Open Source project with a distributed team of more than 340 core developers that ranks among the top 2% of all open source projects worldwide (Plone). "], "have_tickets": [true], "title": "The Butler and the Snake - Continuous Integration for Python", "speakers": "Timo Stollenwerk", "track_title": "Barria2 Room", "timerange": "2015-07-20 15:45:00, 2015-07-20 16:15:00", "duration": 30, "tags": ["python", "ContinuousIntegration", "tdd", "ContinuousDelivery", "Testing"]}, "314": {"id": 314, "abstracts": ["With the Raspberry Pi, it's easy to do physical computing directly from Python code - rather than usual embedded hardware engineering in C or Assembler. \r\n\r\nIn this talk I'll show examples of physical computing projects that use Python on Raspberry Pi and demonstrate the sort of code used in such projects.\r\n\r\nPhysical computing with Python is very popular in education - as it's so engaging, and more interesting than printing to the screen.\r\n\r\nThis will be an informative session with learning possibilities to give those new to physical computing a change to get started.", "", ""], "have_tickets": [true], "title": "Physical computing with Python and Raspberry Pi", "speakers": "Ben Nuttall", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["education", "raspberrypi"]}, "216": {"id": 216, "abstracts": ["As Python programmers we're used to program without taking care about allocating\r\nmemory for our objects and later on freeing them, Python garbage collector\r\ntakes care of this task automatically for us.\r\n\r\nGarbage collection is one of the most challenging topics in computer science,\r\nthere are a lot of research around the topic and different ways to tackle\r\nthe problem.\r\n\r\nKnowing how our language does this process give us a better understanding\r\nof underlying interpreter and allow us to know why problems like cycles\r\ncan happen in CPython interpreters.\r\n\r\nSo, this talk aims to be and introduction to the topic and a walkaround\r\nthrough different approaches followed in CPython and PyPy:\r\n\r\n* Generational Reference counting with cycles detector on CPython.\r\n* Incremental version of the MiniMark GC on PyPy.\r\n"], "have_tickets": [true], "title": "Knowing your garbage collector", "speakers": "Francisco Fern\u00e1ndez Casta\u00f1o", "track_title": "Barria2 Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["collection", "counting", "reference", "garbage", "cpython", "PyPy"]}, "14": {"id": 14, "abstracts": ["The Python compiler Nuitka has evolved from an absurdly compatible Python to C++ translator into a **statically optimizing Python compiler**. The mere peephole optimization is now accompanied by full function/module level optimization, with more to come, and only increased compatibility.\r\n\r\nWitness local and module **variable value propagation**, **function in-lining** with suitable code, and graceful degradation with code that uses the full Python power. (This is considered kind of the break through for Nuitka, to be finished for EP.) No compromises need to be made, full language support, all modules work, including extension modules, e.g. PyQt just works.\r\n\r\nAlso new is a plugin framework that allows the user to provide workarounds for the standalone mode (create self contained distributions), do his own type hinting to Nuitka based on e.g. coding conventions, provide his own optimization based on specific knowledge.\r\n\r\nUltimately, Nuitka is intended to grow the Python base into fields, where performance is an issue, it will need your help. Scientific Python could largely benefit from future Nuitka. Join us now.\r\n", "", ""], "have_tickets": [true], "title": "The Python Compiler", "speakers": "Kay Hayen", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["FOSS", "python", "performance", "scipy", "numpy"]}, "139": {"id": 139, "abstracts": [" **Stop doing the same thing but expecting different results**\r\n\r\nAs developers we put considerable effort into optimisation. We are always tinkering, trying to make things better, and striving to remove antipatterns from our code and our development processes. \r\n\r\nYet for some reason we have not been as good at applying this spirit of optimisation to the problem of increasing diversity, even though most people these days agree that, like good tests, agile methodologies, and virtual environments, diversity is a \"good thing\".\r\n\r\nMy position is that just as there is no single easy way to write good code there is no single easy way to increasing diversity. There are, however, several things that companies and organisations do which actually work against diversity. This talk will explore these antipatterns for diversity, including uncritical belief in meritocracy, lack of understanding of the realities of marginalisation, null processes, misunderstanding of \"culture fit\", and an unwillingness to change, as well as some ways that teams, companies, and organisations might work to combat them.\r\n\r\n"], "have_tickets": [true], "title": "Antipatterns for Diversity", "speakers": "Naomi Ceder", "track_title": "A2 Room", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["diversity", "inclusion", "Best Practice", "community"]}, "128": {"id": 128, "abstracts": ["The asyncio module introduced in Python 3.4 is a game-changer for I/O management and event-driven network programming in Python. Aiming to be a lower-level implementation of an asynchronous event loop, it intends that higher level frameworks like Tornado, Twisted or Gevent will build on top of it, taking advantage of the shared interface for writing concurrent event-driven code across different Python frameworks.\r\n\r\nThis talk connects theory with practice, presenting how Tornado can run in the asyncio event loop and take advantage of the subgenerator delegation syntax (yield from) to provide a high degree of concurrency while keeping the simplicity of sequential code. It explains the concept of coroutines, futures and ioloop, exposing Python 3 code for sample web tasks. The talk completes with a basic demo of running this code on Tornado, comparing its syntax and performance with popular asynchronous frameworks from other languages."], "have_tickets": [true], "title": "Better asynchronous code with Tornado and Python 3", "speakers": "Anton Caceres", "track_title": "Barria1 Room", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["web", "python3", "tornado", "asyncio"]}, "98": {"id": 98, "abstracts": ["One day our software will go in production, and so shortly we will pay dearly for our youthful mistakes. Without regression tests, we will be in deep trouble. If we have regression tests, but we did not have performed TDD, we should probably increase the effort in bug fixing and\r\nmaintenance, since we do not have enough code coverage and our tests come out complex.\r\n\r\nBy retracing the author youthful mistakes, we will see a complete development workflow, from the user story to the low-level tests, in order to highlight the differences between functional, integration and unit tests, the best practices, and the lessons learned by the author during the development of the [Sardinia Radio Telescope][1] control software.\r\n\r\n [1]: https://www.youtube.com/watch?v=zCL_tSMqsRg\r\n", "", ""], "have_tickets": [true], "title": "Lessons learned about testing and TDD", "speakers": "Marco Buttu", "track_title": "A2 Room", "timerange": "2015-07-21 11:45:00, 2015-07-21 12:30:00", "duration": 45, "tags": ["unit-te", "tdd", "Testing"]}, "238": {"id": 238, "abstracts": ["A Django project, developed for 2 years is a valuable source of anecdotes and wisdom. This talk is a review on the decissions, about human and tech, that my team took during the project. I'll point out the good decissions as well as the bad ones, those which made us learn \"the hard way\".\r\n\r\nBoth good and bad decissions taught us a lot, and here I compile them, together with a handful of tips which can amuse and, hopefully, inspire the audience, specially those who are facing for the first time a big project."], "have_tickets": [true], "title": "Learnt lessons in a big Django Project", "speakers": "Yamila Moreno", "track_title": "Barria1 Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 15:45:00", "duration": 30, "tags": ["postgresql", "python", "django", "open-source", "Beginners"]}, "169": {"id": 169, "abstracts": ["In this talk, people will get introduced to python threading and multiprocessing packages. This talk will cover multiprocessing/threaded development best practices, problems occurs in development, things to know before multiprocessing/multi-threading. After this talk attendees will be able to develop multiprocessing/threaded applications. \r\n\r\nThis talk will cover threads, global interpreter lock, thread pool, processes, process pool, synchronization locks - Lock & RLock , semaphores, events, condition, timer, pipes, queue, shared memory. This talk will also cover best practices and problems in multiprocessing and threaded application development. \r\n"], "have_tickets": [true], "title": "Python Multithreading and Multiprocessing: Concurrency and Parallelism", "speakers": "Hitul Mistry", "track_title": "Barria2 Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["concurrency", "multi-processing", "Parallelism", "multi-threading", "linux", "Best Practice"]}, "127": {"id": 127, "abstracts": ["Traditional Python profiling tools have limitations. Standard tools like **cProfile** and most all third party tools (like **Python Tools** plugin for Microsoft Visual Studio) suffer from common flaws. First, the profiling overhead is high (up to 50%). Second, the information provided is \u201cfunction-level\u201d i.e. the tool shows how much time was spent within a function, but not actionable \u201cline-level\u201d information to show which exact lines are _the bottleneck_ in a function. Adding \u201cline-level\u201d information to most tools causes the application to run even slower. Third, some tools require modification of the application source code to enable profiling thus disrupting development.\r\n\r\nThis talk presents an experimental Python profiler. It typically has less than 15% overhead, shows line-level information and does not require modification of application source code. Experiments using it resulted in performance gains of 2x and more. Of course results vary by application, but in a typical application there may be quick optimizations easily identified by this type of profiler.\r\n\r\nThe talk will briefly describe the basics of what, why and how to profile. The profiler\u2018s use and results will be shown in the presentation with examples based on real-life applications. Previous experience of working with profilers and trying to optimize an application is a plus, but not required, to gain a better appreciation of the work presented.", "", ""], "have_tickets": [true], "title": "Tuning Python applications can dramatically increase performance", "speakers": "Vasilij Litvinov", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["python", "visualization", "performance", "profiling", "metrics", "cpython", "Tooling", "Development"]}, "134": {"id": 134, "abstracts": ["Removing UneXploded Ordnance (UXO) from minefields at the end of a conflict is a very time-consuming and expensive operation. Advanced satellite image processing can detect changes and activities on the ground and represent them on a map that can be used by operators to classify more dangerous zones and safer areas, potentially reducing the time spent on field surveys.\r\n\r\nWe exploit space-borne radar Earth images together with thematic data for mapping activities on the ground using numpy, scipy and gdal. The Activity Map generation process to be shown will be implemented using IPython Notebook.", "", ""], "have_tickets": [true], "title": "Activity Map from space: supporting mine clearance with Python", "speakers": "Giuseppe Cammarota", "track_title": "A2 Room", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["visualization", "scipy", "ipython", "geodata", "numpy"]}, "11": {"id": 11, "abstracts": ["Python is an expressive general purpose programming language. Its syntax provides many ways to represent structure and minimise code repetition and boilerplate.\r\n\r\nBut Python not always expressible enough. Perhaps when you've built a complicated enough system with hard-to-express inter-relationships, the code required to construct or operate on it can become complicated, repetitive and unreadable. Or perhaps you have users unfamiliar with Python who need to understand or edit a system. In cases like these, stepping beyond the syntax and semantics of basic Python can be an advantage.\r\n\r\nDaniel will describe various ways you can implement your own Domain Specific Languages, languages perhaps completely unlike Python that can succinctly describe more complicated Python systems.\r\n\r\nThis talk will cover:\r\n\r\n* What and why of DSLs\r\n* Metaprogramming tricks\r\n* Writing simple parsers\r\n* The libraries PLY and PyParsing\r\n* Building tooling around your new DSLs"], "have_tickets": [true], "title": "The unabridged guide to Domain Specific Languages in Python", "speakers": "Daniel Pope", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 16:15:00", "duration": 60, "tags": ["python", "technologies", "Tooling"]}, "34": {"id": 34, "abstracts": ["Does your open source project need better documentation? Do you wish that new users could get started with your software more easily? Do you feel that your code contribution workflow isn't documented well enough, or that contributors are discouraged from documenting their code? How can you give your project docs the love they deserve?\r\n\r\nThis high-level talk aims to introduce the main principles of technical communication in the context of FOSS projects. It is intended for anyone who interacts with docs, whether your project is fresh off the dev environment or has been around since the dawn of Git. Topics include tone, style, process management, structure, and contribution workflow.", "", ""], "have_tickets": [true], "title": "FOSS DOCS 101 (keep it simple, present!)", "speakers": "Mikey Ariel", "track_title": "Google Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["FOSS", "documentation", "community", "open-source", "Sphinx", "communication", "Best Practice", "sphinxdocumentation"]}, "300": {"id": 300, "abstracts": ["NumPy and Pandas have revolutionized data processing and munging in the Python ecosystem. As data and systems grow more complex, moving and querying becomes more difficult. Python already has excellent tools for in-memory datasets, but we inevitably want to scale this processing and take advantage of additional hardware. This is where Blaze comes in handy by providing a uniform interface to a variety of technologies and abstractions for migrating and analyzing data. Supported backends include databases like Postgres or MongoDB, disk storage systems like PyTables, BColz, and HDF5, or distributed systems like Hadoop and Spark. \r\n\r\nThis talk will introduce the Blaze ecosystem, which includes: Blaze (data querying), Odo (data migration), Dask (task scheduler), DyND (dynamic, multidimensional arrays) and Datashape (data description).\r\n\r\nAttendees will get the most out of this talk if they are familiar with NumPy and Pandas, have intermediate Python programming skills, and/or experience with large datasets.", "NumPy and Pandas have revolutionized data processing and munging in the Python ecosystem. As data and systems grow more complex, moving and querying becomes more difficult. Python already has excellent tools for in-memory datasets, but we inevitably want to scale this processing and take advantage of additional hardware. This is where Blaze comes in handy by providing a uniform interface to a variety of technologies and abstractions for migrating and analyzing data. Supported backends include databases like Postgres or MongoDB, disk storage systems like PyTables, BColz, and HDF5, or distributed systems like Hadoop and Spark. \r\n\r\nThis talk will introduce the Blaze ecosystem, which includes:\r\n\r\n- Blaze (data querying): [http://blaze.pydata.org/en/latest/][1]\r\n\r\n- Odo (data migration): [http://odo.readthedocs.org/en/latest/][2]\r\n\r\n- Dask (task scheduler): [http://dask.pydata.org/en/latest/][3]\r\n\r\n- DyND (dynamic, multidimensional arrays): [https://github.com/libdynd/dynd-python][4]\r\n\r\n- Datashape (data description): [http://datashape.pydata.org/][5]\r\n\r\nAttendees will get the most out of this talk if they are familiar with NumPy and Pandas, have intermediate Python programming skills, and/or experience with large datasets.\r\n\r\n [1]: http://blaze.pydata.org/en/latest/\r\n [2]: http://odo.readthedocs.org/en/latest/\r\n [3]: http://dask.pydata.org/en/latest/\r\n [4]: https://github.com/libdynd/dynd-python\r\n [5]: http://datashape.pydata.org/\r\n", ""], "have_tickets": [true], "title": "Scale your data, not your process: Welcome to the Blaze ecosystem", "speakers": "Christine Doig", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:15:00", "duration": 45, "tags": ["Abstractions", "distributed-systems", "analytics", "bigdata", "dynd", "blaze", "odo", "spark", "dask", "open-source", "pydata", "datashape", "databases", "data", "numpy"]}, "278": {"id": 278, "abstracts": ["Do you know what your application did last night? Python logging can help you.\r\n\r\nThis talk you will show you how to implement a systematic logging approach without boilerplate code and how to set up the Python logging module for different needs in production systems. We will see how to work with log files and other logging endpoints. We will address the data protection concerns that come up when logging from application with personal information. We will also look at the performance implications of logging. We will then cover best practices - how to structure logging, what to include in a log message, and how to configure logging for different use cases.\r\n\r\nWe will use the Python standard logging module to implement logging. This talk is useful to beginners with some experience. An understanding of decorators is useful, but not required. Some experience in web programming is a plus."], "have_tickets": [true], "title": "A Deep Look at Logging", "speakers": "Stefan Baerisch", "track_title": "A2 Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 15:45:00", "duration": 30, "tags": ["web", "BestPractices", "logging"]}, "198": {"id": 198, "abstracts": ["The asyncio project was officially launched with the release of Python 3.4 in March 2014. The project was public before that under the name \"tulip\". asyncio is just a core network library, it requires third party library to be usable for common protocols. One year later, asyncio has a strong community writing libraries on top of it.\r\n\r\nThe most advanced library is aiohttp which includes a complete HTTP client but also a HTTP server. There are also libraries to access asynchronously the file system, resolve names with DNS, have variables local to tasks, read-write locks, etc. There are clients for AMQP, Asterisk, ElasticSearch, IRC, XMPP (Jabber), etc. (and even an IRC server!). There are asynchronous drivers for all common databases, and even for some ORMs. As expected, there are tons of new web frameworks based on asyncio. It's also possible to plug asyncio into Gtk, Qt, gevent, eventlet, gunicorn, tornado, etc.\r\n\r\nI will also discuss use cases of asyncio in production and benchmarks. Spoiler: asyncio is not slow.\r\n\r\nThe asyncio library also evolved to become more usable: it has a better documentation, is easier to debug and has a few new functions. There is also a port to Python 2: trollius.", "", ""], "have_tickets": [true], "title": "asyncio community, one year later", "speakers": "Victor Stinner", "track_title": "A2 Room", "timerange": "2015-07-22 15:45:00, 2015-07-22 16:15:00", "duration": 30, "tags": ["python3", "asyncio", "aiohttp", "networking"]}, "305": {"id": 305, "abstracts": ["The past few years, we have made large strides to welcome more diverse people into our community. You see better gender ratios in attendance numbers at Python conferences, the billed speakers, the amount of women-centric programs. We can see the benefits of outreach. But we're not done yet.\r\n\r\nWhile a lot of the Python community embraces the importance of being diverse, we haven't taken that mindset to our workplace. From recruiting, we still hear, \"sure, we wanted to recruit women, but we couldn't find them\" and \"we only focus on quality here, not gender!\" Within company cultures, we hear \"gender equality isn't a problem here!\" or \"women don't ask for a higher salary\" and to \"just lean in!\"\r\n\r\nThis talk will recount the diversity efforts of the past few years and quantify the effects on the Python community. But this talk will also address the not-so-low-hanging fruit; the deeper-rooted problems that still plague the community from inside where we work. And it will talk the audience through actionable items to improve one's work place that welcomes more diversity."], "have_tickets": [true], "title": "Diversity: We are not done yet", "speakers": "Lynn Root", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["social", "diversity", "equality", "community"]}, "77": {"id": 77, "abstracts": ["A d\u00eda de hoy usamos un enorme conjunto de bibliotecas y frameworks, adem\u00e1s los usamos con cierta libertad dentro de nuestro c\u00f3digo, y pasado el tiempo nos damos cuenta de que esa biblioteca, no cubre mis necesidades, o tiene alg\u00fan fallo, o no escala bien en proyectos m\u00e1s grandes... en resumen, hemos ca\u00eddo en una trampa. No se puede evitar caer en estas trampas, porque depende de nuestras necesidades y las bibliotecas que utilizamos, por lo tanto, solo podemos estar lo mejor preparados posibles para salir de ellas tan pronto como nos demos cuenta.\r\n\r\nComo soluci\u00f3n a esto, plantear\u00e9 varias v\u00edas (nada innovadoras, pero menos usadas de lo que deber\u00edan). Unit testing (TDD idealmente), arquitectura hexagonal, y algunas reglas b\u00e1sicas de clean code.", "", ""], "have_tickets": [true], "title": "Todo es una trampa", "speakers": "Jes\u00fas Espino", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["python", "architecture", "tdd", "cleancode", "unit-testing"]}, "236": {"id": 236, "abstracts": ["Using an SQL database offers a bunch of advantages; first of all its maturity and that it is understood by almost every software developer. But it has at least one main disadvantage. As the data is structured, if you want to modify the structure, for example on a long-running project, you need a migration and therefore almost for sure, a downtime.\r\n\r\nWhen you have to make a migration, to modify the structure of data for a small amount of records, it is so fast that it never gets problematic. But if you think to modify the structure of tables containing millions or billions of records, the time required to simply apply the structural change is problematic.\r\n\r\nHere are some changes we are working on at orderbird to go towards zero downtime migrations using some of the latest improvements of PostgreSQL 9.4, mainly logical replication and mixing in a little magic of some python scripting with psycopg."], "have_tickets": [false], "title": "Bringing PostgreSQL towards zero downtime migration with Python", "speakers": "Matthieu Rigal", "track_title": "A2 Room", "timerange": "2015-07-24 15:45:00, 2015-07-24 16:15:00", "duration": 30, "tags": ["Database", "postgresql", "psycopg"]}, "84": {"id": 84, "abstracts": ["The Baserock project is about creating system images from source code in a clean, reproducible way. All of the tooling is written in Python.\r\n\r\nIn this talk I'll explain a bit about the core idea of Baserock: declarative system definitions (expressed in YAML) that can be built and deployed in various ways.\r\n\r\nThen I'll go into more detail about the tools available, and some of the cool things that they can do: distributed building, atomic system updates, creating custom container images, and more.\r\n\r\nFind out more about the Baserock project at http://www.baserock.org/", "", ""], "have_tickets": [true], "title": "Introduction to Baserock", "speakers": "Sam Thursfield", "track_title": "Barria2 Room", "timerange": "2015-07-21 14:30:00, 2015-07-21 15:15:00", "duration": 45, "tags": ["python", "DevOps", "system-administration", "unix", "open-source", "docker", "linux"]}, "225": {"id": 225, "abstracts": ["While Python supports procedural, object-oriented, and functional programming, its functional features are not fully developed. Mochi is a Python-like functional language that compiles to Python 3 and PyPy 3 bytecode. It can use Python libraries and can be used from Python.\r\n\r\nMochi adds functional features such as tail recursion optimization, no re-assignments in function definitions, persistent data structures, pattern matching, algebraic data types, a pipeline operator, better anonymous functions, Erlang-style actors, Lisp-style macros as well as many useful builtin functions.\r\n\r\nThis talk presents what Mochi is, how it works, and what you can do with it. Functional programming can help to solve certain kind of problems elegantly. Done right, functional programs can be easily tested and provide more confidence that you program is really doing what you want. Mochi could be another tool in your toolbox. Functional programming can expand your horizon and can be a lot of fun. Mochi offers easy access to this new world because you can leverage your existing Python knowledge and libraries whenever needed. "], "have_tickets": [true], "title": "Functional Python with Mochi", "speakers": "Mike M\u00fcller", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:15:00", "duration": 30, "tags": ["Programming", "functional"]}, "96": {"id": 96, "abstracts": ["Given the dynamic nature of Python, some bugs tend to creep in our codebases. Innocents NameErrors or hard-to-find bugs with variables used in a closure, but defined in a loop, they all stand no chance in front of Pylint (http://pylint.org/).\r\nIn this talk, I'll present one of the oldest static analysis tools for Python, with emphasis on what it can do to understand your Python code. Pylint is both a style checker, enforcing PEP 8 rules, as well as a code checker in the vein of pyflakes and the likes, but its true power isn't always obvious to the eye of beholder. It can detect simple bugs such as unused variables and imports, but it can also detect more complicated cases such as invalid arguments passed to functions, it understands the method resolution order of your classes and what special methods aren't implemented correctly. Starting from abstract syntax trees, we'll go through its inference engine and we'll see how Pylint understands the logical flow of your program and what sort of type hinting techniques are used to improve its inference, including PEP 484 type hints. As a bonus, I'll show how it can be used to help you port your long-forgotten library to Python 3, using its new --py3k mode."], "have_tickets": [true], "title": "12 years of Pylint (or How I learned to stop worrying about bugs)", "speakers": "Claudiu Popa", "track_title": "Google Room", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["ast", "static-analysis", "lint", "typehinting"]}, "52": {"id": 52, "abstracts": ["Python has a great versatile ecosystem but the competition is getting better, this talk is about how Python can keep up with these new languages and where PyPy fits into this.\r\n\r\nRecently we've seen the rise of new technologies like Go, Node.js and Julia, those have the ability to build an ecosystem on a clean slate and thus be better than Python in some aspects. What would it take to be as good as those technologies on those aspects without loosing all the things we love about Python ? This talk will describe my perfect future where Python keeps getting better, gets to keep it's great set of libraries and where PyPy fits in that future.", "", ""], "have_tickets": [true], "title": "PyPy and the future of the Python ecosystem", "speakers": "Romain Guillebert", "track_title": "A2 Room", "timerange": "2015-07-24 15:15:00, 2015-07-24 15:45:00", "duration": 30, "tags": ["PyPy"]}, "345": {"id": 345, "abstracts": ["Case study of an In-Flight Entertainment system, built using Python.\r\n\r\nThis talk will show the basic requirements for the system and the architecture decisions we took.\r\n\r\nBesides, running software at 10.000 feet implies new unexpected challenges, different from the ones we encounter day-to-day. We'll focus on how we solved them."], "have_tickets": [true], "title": "Python in the Sky: In-Flight Entertainment with Python", "speakers": "David Arcos", "track_title": "A2 Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["redis", "python", "distributed-systems", "postgresql", "aviation", "django", "api", "fabric", "celery"]}, "161": {"id": 161, "abstracts": ["pip is certainly one of the most used package in the Python ecosystem, but what actualy happens when you pip install foo ?\r\n\r\n - - how does it perform an installation and resolve dependencies ?\r\n - - how does pip find installation candidates and select the 'best' ?\r\n - - Some sneak peek on the (possible) plans for the future of pip (wheel caching, setup_requires control, etc)\r\n\r\n"], "have_tickets": [true], "title": "PIP Internals", "speakers": "Xavier Fernandez", "track_title": "Barria1 Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:00:00", "duration": 30, "tags": ["packaging", "internals"]}, "221": {"id": 221, "abstracts": ["This talk will be a general introduction to Numba. Numba is an open source just\u00ad-in-\u00adtime Python compiler that allows you to speed up numerical algorithms for which fast linear algebra (i.e. Numpy array operations) is not enough. It has backends for the CPU and for NVidia GPUs. After the talk, the audience should be able to understand for which use cases Numba is adequate, what level of performance to expect, and have a general notion of its inner working.\r\n\r\nA bit of familiarity with scientific computing and/or Numpy is recommended for optimal understanding, but the talk should otherwise be accessible to the average Python programmer. It should also be of interest to people who are curious about attempts at high-\u00adperformance Python.", "", ""], "have_tickets": [true], "title": "Numba, a JIT compiler for fast numerical code", "speakers": "Antoine Pitrou", "track_title": "Google Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["python", "data-science", "analytics", "performance", "JIT", "numpy"]}, "5": {"id": 5, "abstracts": ["Traditional methods of coping with concurrent programming problems are well-known and described in literature. Many programming languages, including Python, contain in their standard libraries tools and primitives such as semaphores and can spawn threads or subprocesses.\r\n\r\nHowever, in the face of increasing interest in service oriented architecture and building distributed systems, that span across many independent server nodes, emerges a need to adapt traditional solutions, so they can be applied in the new environment.\r\n\r\nIn this talk I will share my experiences gathered during building a modern contact center - highly concurrent system, which requires certain resources to be accessed exclusively by several self-contained components.\r\n"], "have_tickets": [true], "title": "Distributed locks with Python and Redis", "speakers": "Sebastian Buczy\u0144ski", "track_title": "Google Room", "timerange": "2015-07-22 15:15:00, 2015-07-22 15:45:00", "duration": 30, "tags": ["redis", "twisted", "concurrency"]}, "86": {"id": 86, "abstracts": ["Braintree is a Ruby shop. By default, we use Ruby and Rails for projects. We also use Ruby-based projects for much of our tooling, including puppet, capistrano, and rake. However, we strongly believe in using the right tool for the job. What that means has evolved over ti\r\nme, and I'll discuss what solutions we chose in the past as well as our current choices.\r\n\r\nSo what's it like doing Python at a Ruby shop? You get lots of jokes about language features Ruby has but Python lacks and lots of disbelief that Python will survive the 2/3 split. People also tend to apply the best practices and conventions of Ruby to Python code as if t\r\nhey were the same. Python's major inroad at Braintree has been, surprisingly enough, as a platform for high-concurrency situations. This is a direct result of the power of Tornado as a platform for asynchronous I/O. It also helps that many Python is very approachable and \r\nmany developers have at least some experience with it.\r\n\r\nBraintree has three pieces of our infrastructure using Python and Tornado -- an incoming request proxy; an outgoing request proxy; and a webook delivery service. They've served us well for 3+ years but all suffer from a number of problems. The outdated concurrency feature\r\ns of CPython / Python 2 as well as our lack of experience with and commitment to Tornado have always been an issue. As the meat of the talk, I'll speak in depth about the other issues we've encountered with each of the three applications and our short- and long- term solu\r\ntions to the problems.\r\n\r\nThe state as of the end of 2014 appeared dire for Python at Braintree. All the old Python code in our stack is on the way out, and Python has been specifically recommended agaist for new projects. Our Python client library is used by some of our largest merchants, and is \r\nready for the future by supporting Python 2.6+ and Python 3.3+ in a single codebase. We also have a vibrant Python community at Venmo, our sister company. Both Braintree and Venmo support Python by attending, hosting, sponsoring, and speaking at meetups, conferences, and \r\nother events in Chicago, New York, and elsewhere. At Braintree, our Data Science team uses Python almost exclusively and they're becoming a bigger part of our business every day. We also use Collings and custom tooling written in Python to manage our infrastructure.\r\n"], "have_tickets": [true], "title": "Python Not Recommended", "speakers": "Adam Forsyth", "track_title": "Barria1 Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 15:45:00", "duration": 30, "tags": ["data-science", "pandas", "tornado", "collins", "case study", "pika", "sklearn"]}, "212": {"id": 212, "abstracts": ["PEP 484 introduces type hints for Python 3. Type hints can increase readability of our code for both humans and tools and lead to better and safer outcomes. And we'll prove it in this talk!\r\n\r\nWe're going to take a closer look at type hints, see practical examples of where they can be used and the value they provide. We'll see that simple class types and built-in collection types are often enough for our public API's. We'll also discuss how you can benefit from type hinting stubs for third-party libraries and briefly cover more advanced scenarios like generic types."], "have_tickets": [false], "title": "How you can benefit from type hints", "speakers": "Andrey Vlasovskikh", "track_title": "A2 Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["type-hinting", "python", "static-analysis"]}, "150": {"id": 150, "abstracts": ["Orain dela urte batzuk asi genuen bidea azalduko dut, Python San Sebastian elkartea nola sotu genuen eta hortik pixkanaka pixkanaka nola sortzen joan den EuroPython sortzeko grina. \r\n\r\nGendeari nahi izan eskero eta lan egin eskero EuroPython bezelako kongresu bat antolatzea posible dela erakustea du helburu hitzaldi honek."], "have_tickets": [true], "title": "Karakate magaletik EuroPythoneko tontorrera", "speakers": "oier etxaniz", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 15:45:00, 2015-07-22 16:15:00", "duration": 30, "tags": ["python", "MAL", "Euskara", "EuroPython", "Inspirational", "PySS"]}, "162": {"id": 162, "abstracts": ["Coding dojos are a very good way to share coding knowledge among members in a community, and, at the same time, introduce people into the language and community.\r\nSometimes, though, the typical approach to set coding dojos may prevent expert coders to join the session. This is the story of the pyBCN's dojos, so far.\r\n", "", ""], "have_tickets": [true, true], "title": "What dojos are and how we run these at pyBCN", "speakers": "N\u00faria Pujol, Ignasi Fosch", "track_title": "Barria1 Room", "timerange": "2015-07-20 15:45:00, 2015-07-20 16:15:00", "duration": 30, "tags": ["Beginners", "python", "tdd", "Functional Programming", "unit-testing", "learning", "fun"]}, "180": {"id": 180, "abstracts": ["Python is a language of choice for developers with wide range of experience, for some it is a first programming language, others switch to Python after years of experience. Python provides friendly syntax and smooth learning curve. This sometimes leads to developers lacking comprehension of some more advanced constructs. \r\n\r\nIt happens that experienced developers jump into using Python and sometimes miss less known Python language constructs. On the other hands people who purposefully learned Python sometimes lack practical ideas for how to apply those constructs.\r\n\r\nThis talk will be specifically focused on the practical usages of advanced Python constructs like iterators, generators, decorators and context managers. Goal of the talk is to share ideas about how those constructs can be used for practical purposes in real projects. Prior knowledge is not required, there will be a brief introduction to every construct being presented."], "have_tickets": [true], "title": "Practical usage of advanced Python constructs", "speakers": "Andrey Syschikov", "track_title": "Barria1 Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["python", "core"]}, "309": {"id": 309, "abstracts": ["Python and PostgreSQL, two tools we like to use for our projects but do you know everything about them?\r\n\r\nThe talk will give an overview of psycopg2, Peewee, SQLAlchemy, Alembic and multicorn, PL/Python, these libraries can be used with PostgreSQL.\r\n\r\n- psycopg2, the well known connector, this basic component is really useful, well documented and battle-tested and used by the most famous toolkits of the Python ecosystem.\r\n- Peewee, a minimalist ORM for Python, clear and brief, this ORM can be used if you want create a software with a minimalist ORM.\r\n- SQLAlchemy, a Python SQL toolkit and Object Relational Mapper, you can use this library to create your models and interact with them.\r\n- Alembic, a lightweight database migration tool for usage with SQLAlchemy, allows to create some migration scripts for your project.\r\n- multicorn is a Python wrapper over the Foreign Data Wrapper of PostgreSQL\r\n- PL/Python, a procedural language for PostgreSQL, allows to write functions in the Python language.\r\n\r\nYou can find this talk on https://speakerdeck.com/matrixise/python-and-postgresql-a-wonderful-wedding-english"], "have_tickets": [true], "title": "Python and PostgreSQL, a wonderful wedding", "speakers": "Stephane Wirtel", "track_title": "A2 Room", "timerange": "2015-07-21 15:45:00, 2015-07-21 16:15:00", "duration": 30, "tags": ["python", "SQLAlchemy", "postgresql", "multicorn", "peewee", "dbapi"]}, "95": {"id": 95, "abstracts": ["What if you could focus on functionality rather than the glue code between services?\r\n \r\nLymph is an opinionated framework for writing services in Python. It features pluggable service discovery, request-reply messaging and pluggable pub-sub messaging. \r\n \r\nAs our development teams are growing, we're moving away from our monolithic architecture. We want to write services and not worry about the infrastructure's needs. We want development to be fast, quick and simply work.\r\n \r\nIn this talk we will show you how easy it is to write and run services with lymph.\r\nGo check http://lymph.io - we are accepting pull requests."], "have_tickets": [true], "title": "Stop trying to glue your services together; import lymph", "speakers": "Max Brauer", "track_title": "Google Room", "timerange": "2015-07-21 14:30:00, 2015-07-21 15:15:00", "duration": 45, "tags": ["werkzeug", "services", "zeromq", "events", "gevent", "web", "rpc", "open-source", "zookeeper", "rabbitmq", "framework"]}, "78": {"id": 78, "abstracts": ["MkDocs is a Python library for creating documentation with\r\nMarkdown. The primary goal of the project is to lower the barrier\r\nfor documentation writers and to help enable high quality prose\r\nbased documentation.\r\n\r\nThe primary maintainer of MkDocs will cover the following topics:\r\n\r\n- An introduction to MkDocs and the project goals.\r\n - How and why did the project start?\r\n - Who uses MkDocs today?\r\n\r\n- Discuss what we need to do to create great documentation and\r\n how MkDocs can help.\r\n\r\n- A tour of the key features currently in MkDocs\r\n - Adding MkDocs to your project.\r\n - Using themes in the documentation and making customisations\r\n - Publishing your documentation with ReadTheDocs and GitHub\r\n pages.\r\n\r\n- A look at the up and coming features in MkDocs and how you can\r\n help make these happen.\r\n\r\n- A comparison with Sphinx and why you should consider MkDocs."], "have_tickets": [true], "title": "MkDocs: Documenting projects with Markdown", "speakers": "Dougal Matthews", "track_title": "Barria1 Room", "timerange": "2015-07-23 15:15:00, 2015-07-23 15:45:00", "duration": 30, "tags": ["markdown", "open-source", "documentation", "mkdocs"]}, "53": {"id": 53, "abstracts": ["Locality sensitive hashing (LSH) is a technique for reducing complex data down to a simple hash code. If two hash codes are similar than the original data is similar. Typically, they are used for speeding up search and other similarity comparisons. \r\n\r\nIn this presentation I will discuss two ways of implementing LSH in python; the first method is completely stateless but only works on certain forms of data; the second is stateful but does not make any assumptions about the distribution of the underlying data. I will conclude the presentation by describing how we apply LSH to search at Lyst.\r\n", "", ""], "have_tickets": [true], "title": "Speeding up search with locality sensitive hashing", "speakers": "Maciej Kula", "track_title": "Barria2 Room", "timerange": "2015-07-24 15:45:00, 2015-07-24 16:15:00", "duration": 30, "tags": ["data-science", "machine-learning", "bigdata", "search", "numpy", "sklearn"]}, "362": {"id": 362, "abstracts": ["PEP 484, \"Type Hints\", was accepted in time for inclusion in Python 3.5 beta 1. This introduces an optional standard for specifying types in function signatures. This concept was previously discussed as \"optional static typing\" and I similar to the way TypeScript adds optional type declarations to JavaScript.\r\n\r\nIn this talk I will discuss the motivation for this work and show the key elements of the DSL for describing types (which, by the way is backward compatible with Python 3.2, 3.3 and 3.4). Note: *Python will remain a dynamically\r\ntyped language, and I have no desire to ever make type hints\r\nmandatory, even by convention!*", "", ""], "have_tickets": [true], "title": "Type Hints for Python 3.5", "speakers": "Guido van Rossum", "track_title": "Google Room", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["python"]}, "155": {"id": 155, "abstracts": ["RinohType is a document processor inspired by [LaTeX][1] and written in Python. It renders [reStructuredText][2] and [Sphinx][3] documents to PDF based on a document template and a style sheet. RinohType already implements many of the features that make LaTeX so great. Not stopping there, RinohType also tries to fix LaTeX's weaknesses; it should not only be easy to use, but easy to _customize_ and _extend_ as well. To minimize frustration when things go wrong, care is taken to provide descriptive warning and error messages. The powerful layout engine makes it easy to define custom page layouts. And the CSS-inspired stylesheets simplify the styling of document elements. At a lower level, Python makes the writing of extensions much more accessible when compared to TeX's rather arcane macro language.\r\n\r\nIn the talk, I would like to introduce RinohType to the Python community. No special prerequisite knowledge is required. \r\nReference: https://pypi.python.org/pypi/RinohType", "RinohType is a document processor inspired by [LaTeX][1] and written in Python. It renders [reStructuredText][2] and [Sphinx][3] documents to PDF based on a document template and a style sheet. RinohType already implements many of the features that make LaTeX so great. Not stopping there, RinohType also tries to fix LaTeX's weaknesses; it should not only be easy to use, but easy to _customize_ and _extend_ as well. To minimize frustration when things go wrong, care is taken to provide descriptive warning and error messages. The powerful layout engine makes it easy to define custom page layouts. And the CSS-inspired stylesheets simplify the styling of document elements. At a lower level, Python makes the writing of extensions much more accessible when compared to TeX's rather arcane macro language.\r\n\r\nIn the talk, I would like to introduce RinohType to the Python community. No special prerequisite knowledge is required. I will start off by discussing my motivation for starting RinohType development, its design goals and the currently available features. This will be followed by an example of how you can use RinohType to render a reStructuredText document to a neat PDF document, highlighting some of the features along the way. Next, we'll explore some of RinohType's internals such as the page layout engine and the style sheet system. We will explore how these can be used in a Python application to create a document from scratch.\r\n\r\nA first RinohType release was recently created. While this preview release is of alpha quality, it should be able to render most reStructuredText documents. It also includes a preliminary Sphinx builder. Please find more details in the package's description at [PyPI][4].\r\n\r\n [1]: http://en.wikipedia.org/wiki/LaTeX\r\n [2]: http://docutils.sourceforge.net/rst.html\r\n [3]: http://sphinx-doc.org\r\n [4]: https://pypi.python.org/pypi/RinohType", ""], "have_tickets": [true], "title": "RinohType, a document processor inspired by LaTeX", "speakers": "Brecht Machiels", "track_title": "Google Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["LaTeX", "reStructuredText", "PDF", "typesetting"]}, "227": {"id": 227, "abstracts": ["What if I told you that we\u2019ve built an open source \u201cWhatsApp\u201d-like RESTful API on the top of Pyramid? We've developed MAX: a real-time messaging service and activity stream that has become the key feature for a social intranet at the BarcelonaTech University\r\n\r\nWe will show how we designed and built MAX with performance in mind using state of the art Python technologies like Gevent, WSGI, and multi-threaded queue processing. We will also show you how we've managed to design a simple architecture guaranteeing both high scalability and performance, achieving connecting ratios over 30.000 students, teachers, and university staff.\r\n\r\nThe API is secured using oAuth 2.0 resource owner password credentials flow powered by our own oAuth server implementation (Osiris) also Pyramid-based. We are using MongoDB as general storage backend and RabbitMQ over websockets to support realtime and messaging."], "have_tickets": [true], "title": "MAX: Realtime messaging and activity stream engine", "speakers": "Carles Bruguera", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 11:45:00, 2015-07-22 12:30:00", "duration": 45, "tags": ["python", "restfull", "gevent", "REST", "open source", "mongodb", "wsgi", "web", "websockets", "api", "rabbitmq"]}, "135": {"id": 135, "abstracts": ["This talk is a sequel to \"Brainwaves for Hackers\" and illustrates some experiments you can do with a Neurosky Mindwave headset, a bluetooth enabled EEG device.\r\n \r\nI'll also talk some more about how to integrate the device with the IPython\r\nNotebook for real time viewing and how to use the Mindwave with the Raspberry Pi."], "have_tickets": [true], "title": "Brainwaves for Hackers 2.0", "speakers": "Andreas Klostermann", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["visualization", "biology", "Health-Science", "machine-learning"]}, "124": {"id": 124, "abstracts": ["When applications get deployed in enterprise environment or in large organizations, they need to support user accounts and groups that are managed externally, in existing directory services like FreeIPA or Active Directory, or federated via protocols like SAML. While it is possible to add support for these individual setups and protocols directly to application code or to Web frameworks or libraries, often it is better to delegate the authentication and identity operations to a frontend server and just assume that the application has to be able to consume results of the external authentication and identity lookups.\r\n\r\nIn this talk, we will look at Django Web framework and how with few small changes to the framework and to the application we can extend the functionality of existing RemoteUserMiddleware and RemoteUserBackend to consume users coming from enterprise identity management systems. We will focus on using proven OS-level components such as SSSD for Web applications, but will also show setup using federation.", "", ""], "have_tickets": [false], "title": "External authentication for Django projects", "speakers": "Jan Pazdziora", "track_title": "Barria2 Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["django", "FreeIPA", "HTTP", "web", "Apache", "authentication", "sssd"]}, "229": {"id": 229, "abstracts": ["The quality of written code is an important factor in a final success of a software project.\r\nPerhaps there is no universal definition of high quality code, however usually it's characterized as clear and readable, well-designed, well tested and documented, easier to debug, maintain and extend, etc.\r\n\r\nPython was designed to be a highly readable language that would make it easier to develop high quality code. Nevertheless, programming language is only a tool in a software development process and in the end the quality of code depends mostly on its author's concept and decisions he make. \r\n\r\nIn this talk I would like to present some of ideas, techniques and tools for improving the quality of written code, tried out with a good result in everyday work on developing software in Python."], "have_tickets": [true], "title": "Writing quality code", "speakers": "Rados\u0142aw Jankiewicz", "track_title": "Google Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["python", "BestPractices", "Programming", "Coding"]}, "353": {"id": 353, "abstracts": ["Testing with purely random data on it's own doesn't get you very far. But\r\ntwo approaches that have been around for a while have new libraries that\r\nhelp you generate random input, that homes in on failing testcases.\r\n\r\nFirst **[Hypothesis][1]**, a Python implementation and update of the Haskell library\r\nQuickCheck. Known as property based testing, you specify a property of your\r\ncode that must hold, and Hypothesis does its best to find a counterexample.\r\nIt then shrinks this to find the minimal input that contradicts your\r\nproperty.\r\n\r\nSecond, **[American fuzzy lop][2]** (AFL), is a young fuzzing library that's already\r\nachieved an impressive trophy case of bug discoveries. Using\r\ninstrumentation and genetic algorithms, it generates test input that\r\ncarefully searches out as many code paths as it can find, seeking greater\r\nfunctional coverage and ultimately locating crashes and hangs that no other\r\nmethod has found. I'll be showing how with **[Python-AFL][3]** we can apply this\r\ntool to our Python code.\r\n\r\n [1]: https://hypothesis.readthedocs.org/en/latest/\r\n [2]: http://lcamtuf.coredump.cx/afl/\r\n [3]: http://jwilk.net/software/python-afl\r\n"], "have_tickets": [true], "title": "Testing with two failure seeking missiles: fuzzing and property based testing", "speakers": "Tom Viner", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 11:45:00, 2015-07-23 12:30:00", "duration": 45, "tags": ["fuzzing", "Testing"]}, "304": {"id": 304, "abstracts": ["The talk will show the architecture and inners of a cloud hosting service we are developing in the University of Cambridge based on python technologies, mainly django, ansible, and celery.\r\n\r\nThe users manage their hosts using a web panel, developed in django, with common options: ability to create a vhost, associate domain names to vhosts, install packages, recover from backups, make snapshots, etc. Interaction between the panel and the hosts are made using ansible playbooks launched asynchronously by celery tasks. The VM architecture has been designed to be VM platform agnostic and to provide disk replication and high availability.\r\n\r\nThe University of Cambridge central IT services (http://www.ucs.cam.ac.uk/) also provides other services to the rest of the university like domain name registration, authentication, authorisation, TLS certificates, etc. We link all these other services with the hosting service by using APIs while keeping a microservices architecture approach. Thus, enabling the use/link of other services within the same hosting service web application. "], "have_tickets": [false], "title": "Architecture of a cloud hosting service using python technologies: django, ansible and celery", "speakers": "Dr A. Martin-Campillo", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["hosting", "django", "cloud", "ansible", "celery"]}, "201": {"id": 201, "abstracts": ["2000 urtean CodeSyntax sortu zenetik Python erabili dugu gure lan ia guztiak egiteko. Lan horiek egitean izandako (r)eboluzioa azalduko dugu hitzaldi honetan: python script arruntetatik, Zope aplikazioen zerbitzarian nabigatzaile baten programatzetik, fitxategi sisteman programatzera pasatu gara, Turbogears ere ikutu dugu eta orain Plone, Django eta Pyramid darabilgu.\r\n\r\nSince the beginning of our company in year 2000 we have been using Python to do our work. We will explain the (r)evolution we faced working with python during this 15 years: small python scripts, browser-based-development using Zope Application Server, we touched Turbogears and now Plone, Django and Pyramid applications."], "have_tickets": [true], "title": "Python gure etxean: (r)eboluzioa atzo, gaur eta bihar", "speakers": "Mikel Larreategi", "track_title": "Barria2 Room (Local track)", "timerange": "2015-07-22 15:15:00, 2015-07-22 15:45:00", "duration": 30, "tags": ["web", "Plone", "django", "open-source"]}, "185": {"id": 185, "abstracts": ["Users and developers especially, hate waiting. Computing has adapted and we almost never wait for the computer for more then 10 seconds. One big exception is runnig a test suite which takes MINUTES on many projects. That is incredibly distracting, frustrating and dragging the whole concept of automated tests down. \r\n\r\nI present a technique and a tool (py.test plugin called \"testmon\") which automatically selects only tests affected by recent changes. Does it sound too good to be true? Python developers rightfully have a suspecting attitude towards any tool which tries to be too clever about their source code. Code completion and symbol searching doesn't need to be 100% reliable but messing with the test suite execution? I show that we can cut test suite execution time significantly but maintain it's reliability."], "have_tickets": [true], "title": "Mashing up py.test, coverage.py and ast.py to take TDD to a new level", "speakers": "Tibor Arpas", "track_title": "Barria2 Room", "timerange": "2015-07-21 15:45:00, 2015-07-21 16:15:00", "duration": 30, "tags": ["py.test", "Testing"]}, "228": {"id": 228, "abstracts": ["Passwords are a pain for us all - programmers, users and admins alike. How can we reduce that pain, or eliminate it entirely?\r\n\r\nThis talk will\r\n\r\n - Review research into techniques that improve the usability of password systems, and mitigate shortcomings\r\n - Introduce the new standards Universal Authentication Framework (UAF) & Universal Second Factor (U2F)\r\n - Describe how they streamline authentication, even eliminate passwords entirely\r\n - Show how to integrate UAF/U2F in Django and other Python frameworks\r\n - Summarize the state of support for UAF & U2F in browsers, devices, and the wider world\r\n - Introduce Sonipass - a project to replace passwords, even on existing websites\r\n"], "have_tickets": [true], "title": "Taking the pain out of passwords and authentication", "speakers": "Alex Willmer", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 15:15:00, 2015-07-23 16:15:00", "duration": 60, "tags": ["experience", "u2f", "web", "authentication", "2fa", "passwords", "security", "fido", "2-factor", "uaf"]}, "308": {"id": 308, "abstracts": ["Whatever you need to do with Python, you can probably import a library for it. But what exactly happens when you use that import statement? How does a source file that you've installed or written become a Python module\r\nobject, providing functions or classes for you to play with?\r\n\r\nWhile the import mechanism is relatively well-documented in the reference and dozens of PEPs, sometimes even Python veterans are caught by surprise. And some details are little-known: did you know you can import from zip archives? Write CPython modules in C, or even a dialect of Lisp? Or import from URLs (which might not be a good idea)?\r\n\r\nThis talk explains exactly what can happen when you use the import statement \u2013 from the mundane machinery of searching PYTHONPATH through subtle details of packages and import loops, to deep internals of custom importers and C extension loading.", "", ""], "have_tickets": [true], "title": "Import Deep Dive", "speakers": "Petr Viktorin", "track_title": "Barria1 Room", "timerange": "2015-07-24 15:45:00, 2015-07-24 16:15:00", "duration": 30, "tags": ["import", "core"]}, "211": {"id": 211, "abstracts": ["CeleraOne tries to bring its vision to Big Data by developing a unique platform for real-time Big Data processing. The platform is capable of personalizing multi-channel user flows, right-in time targeting and analytics while seamlessly scaling to billions of page impression. It is currently tailored to the needs of content providers, but of course not limited to.\r\n\r\n - The platform\u2019s architecture is based on four main layers:\r\n - Proxy/Distribution -- OpenResty/LUA for dynamic request forwarding\r\n - RESTful API -- several Python applications written using Pyramid web framework running under uWSGI server, which serve as an integration point for third party systems;\r\n - Analytics -- Python API for Big Data querying and distributed workers performing heavy data collection.\r\n - In-memory Engine -- CeleraOne\u2019s NoSql database which provides both data storage and fast business logic.\r\n\r\nIn the talk I would like to give insights on how we use Python in the architecture, which tools and technologies were chosen, and share experiences deploying and running the system in production.\r\n\r\n"], "have_tickets": [true], "title": "Building a RESTful real-time analytics system with Pyramid", "speakers": "Andrii Chaichenko", "track_title": "PythonAnywhere Room", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["bigdata", "Pyramid", "highload", "real-time", "analytics"]}, "188": {"id": 188, "abstracts": ["In this talk, Software Engineer Joao Santos will describe how the engineering team at Zalando has been migrating to local Git hooks to ensure that engineers can work autonomously and flexibly. Zalando---Europe\u2019s leading online fashion platform for men, women and children-- began shifting from SVN to Git in late 2013. Santos and his colleagues used Python to create a Git update hook that enabled the team to reject changes to a branch while still allowing changes to other branches. He\u2019ll explain why his team chose Python for this job instead of a bash script, point out mistakes made during the process (and solutions his team used to fix them), and the benefits generated by this migration. He\u2019ll also talk about turnstile: a set of open-source, configurable, optional local Git hooks, created by the Zalando team, that enables engineers to abide by internal rules for committing code while following their own coding style and workflow preferences."], "have_tickets": [false], "title": "Using Git Hooks to Help Your Engineering Teams Work Autonomously", "speakers": "Jo\u00e3o Santos", "track_title": "Barria2 Room", "timerange": "2015-07-21 12:30:00, 2015-07-21 13:00:00", "duration": 30, "tags": ["yaml", "git-hooks", "FOSS", "agile", "Git", "CLI", "open-source", "Development"]}, "100": {"id": 100, "abstracts": ["Take a big, non-multithreaded program, and run in on multiple cores!\r\n\r\nPyPy, the Python implementation written in Python, experimentally\r\nsupports Software Transactional Memory (STM). It runs without the\r\nGlobal Interpreter Lock (GIL).\r\n\r\nThe strength of STM is not only to remove the GIL, but to also enable\r\na novel use of multithreading, inheritently safe, and more useful in\r\nthe general case than other approaches like OpenMP. The main news\r\nfrom last year's presentation is that there is now a way to get\r\nreports about the \"STM conflicts\", which is essential to go past toy\r\nexamples. With it, you can incrementally remove conflicts from large\r\ncode bases until you see a benefit from PyPy-STM. The goal of the\r\ntalk is to give several concrete examples of doing that."], "have_tickets": [true], "title": "The GIL is dead: PyPy-STM", "speakers": "Armin Rigo", "track_title": "Google Room", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["PyPy", "GIL", "concurrency"]}, "7": {"id": 7, "abstracts": ["SaltStack is a thriving configuration management system written in Python that leverages YAML and Jinja2 which, by now, probably needs no introduction.\r\n\r\nThis talk will cover a brief summary of why we need configuration management tools, followed by a full dive into SaltStack, its features, pros and cons, how to use it and how to extend it. By the end of this talk you will have gone from knowing little or nothing about SaltStack, to being able to deploy your own setup.\r\n\r\nThis talk will be targeted to either seasoned Python developers who are taking their first steps in the system administration world, or established system administrators who secretly love Python and prefer to stay away of configuration management systems based on other languages.\r\nIts advisable that attendees have some familiarity with Python as well as with system administration concepts. Also, this presentation will be focused on GNU/Linux systems, so it is expected that attendees are comfortable with some of its concepts.", "", ""], "have_tickets": [true], "title": "Salting things up in the sysadmin's world", "speakers": "Juan Manuel Santos", "track_title": "Barria1 Room", "timerange": "2015-07-21 14:30:00, 2015-07-21 15:15:00", "duration": 45, "tags": ["saltstack", "management", "python", "configuration", "linux"]}, "21": {"id": 21, "abstracts": ["TDD is not about tests!\r\nWell, actually, it\u2019s not **just** about writing tests, or writing them before the code. This talk will show you how to use tests to really drive development by transforming business requirements into tests, and allowing your code to come as their natural consequence.\r\n\r\nToo often this key aspect is neglected and the result is that tests and code are somehow \u201cdisconnected\u201d. The code is not as short and efficient as it could be, and the tests are not as effective. Refactoring is not always easy, and over time all sorts of issues start to come out of the surface.\r\n\r\nHowever, we will show that when TDD is done properly, tests and code merge beautifully into an organic whole that fulfills the business requirements, and provides all sorts of advantages: your code is minimal, easy to amend and extend, readable, clean. Your tests will be effective, short and focused, and allow for light-hearted refactoring and excellent coverage.\r\n\r\nWe will provide enough information and examples to spark the curiosity of the novice, and satisfy the need of a deeper insight for the intermediate, and help you immediately benefit from this transformative technique that is still often underestimated and misunderstood."], "have_tickets": [true], "title": "TDD is not about tests!", "speakers": "Fabrizio Romano", "track_title": "A2 Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["python", "tdd", "agile", "Best Practice", "Development", "Testing", "Coding"]}, "348": {"id": 348, "abstracts": ["Python focuses a lot on writing readable code and also tries to make solutions obvious, but this doesn't necessarily mean that you cannot write unreadable code or design your code in ways which makes it hard to extend or maintain.\r\n\r\nThis talk will show some useful idioms to use when writing Python code, how to structure your modules and also goes into details on which techniques to use and which to think about twice, based on 20 years of experience writing Python."], "have_tickets": [true], "title": "Python idioms to help you write good code", "speakers": "Marc-Andre Lemburg", "track_title": "Google Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 15:45:00", "duration": 30, "tags": ["python", "design", "idioms", "experience", "Best Practice", "Coding"]}, "286": {"id": 286, "abstracts": ["Meta classes are an advanced feature in python, in this talk i will try to explain what they are, how they work and i will show some code as well. \r\nThis talk is for anyone who would like to see what happens under the hood when you create a class in Python and how to intercept the class creation process and modify it.\r\n", "", ""], "have_tickets": [false], "title": "Python Advanced Basics (Meta Classes)", "speakers": "Nimrod Wandera", "track_title": "Barria1 Room", "timerange": "2015-07-24 14:30:00, 2015-07-24 15:15:00", "duration": 45, "tags": ["python"]}, "75": {"id": 75, "abstracts": ["I will explain how CPython objects are built, from simple objects\r\nlike int or None to complex ones like dict. To make it funnier, I\r\nwill play to change instance data directly using ctypes and do\r\n\"really bad things\" like truncating tuples."], "have_tickets": [true], "title": "Playing with CPython Objects Internals", "speakers": "Jes\u00fas Espino", "track_title": "PythonAnywhere Room", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["low-level", "python", "cpython"]}, "133": {"id": 133, "abstracts": ["The talk discusses the challenges of implementing a Citizen Science Paradigm in a Python-centric platform, and the solutions devised for the System for observation and monitoring of Marine Alien Species, currently used by the italian Institute for Environmental Protection and Research (ISPRA). \"Alien\" Species means species introduced into a natural environment where they are not normally found.\r\nTopics includes strategies for crowd-friendly forms, work-flow definition for collected data, choice of the best technologies for its components: app for android devices, web application for citizens and experts, webGIS for data browsing and web services for data exporting."], "have_tickets": [true], "title": "Citizen Science: Tracking Aliens with Python!", "speakers": "Alessio Siniscalchi", "track_title": "Barria2 Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 15:45:00", "duration": 30, "tags": ["Plone", "postgresql", "webGIS", "citizen-science"]}, "111": {"id": 111, "abstracts": ["Before its first major version, Elasticsearch was only used as a \"secondary\" database, and search engine.\r\nThe releases added a snapshort/restore feature, making it a great full featured database\r\n\r\nThis talk will focus on how we integrate Elasticsearch into our stack, and the multiple usage we make of it: from storing business events to IOT devices metrics."], "have_tickets": [true], "title": "Python and elasticsearch 101", "speakers": "Beno\u00eet Calvez", "track_title": "A2 Room", "timerange": "2015-07-20 16:45:00, 2015-07-20 17:15:00", "duration": 30, "tags": ["databases", "development-process", "elasticsearch"]}, "129": {"id": 129, "abstracts": ["[Apache Spark][1] is a computational engine for large-scale data processing. It\r\nis responsible for scheduling, distribution and monitoring applications which\r\nconsist of many computational task across many worker machines on a computing\r\ncluster.\r\n\r\nThis Talk will give an overview of PySpark with a focus on Resilient\r\nDistributed Datasets and the DataFrame API. While Spark Core itself is written\r\nin Scala and runs on the JVM, PySpark exposes the Spark programming model to\r\nPython. It defines an API for Resilient Distributed Datasets (RDDs). RDDs are a\r\ndistributed memory abstraction that lets programmers perform in-memory\r\ncomputations on large clusters in a fault-tolerant manner. RDDs are immutable,\r\npartitioned collections of objects. Transformations construct a new RDD from a\r\nprevious one. Actions compute a result based on an RDD. Multiple computation steps\r\nare expressed as directed acyclic graph (DAG). The DAG execution model is \r\na generalization of the Hadoop MapReduce computation model.\r\n\r\nThe Spark DataFrame API was introduced in Spark 1.3. DataFrames envolve Spark's\r\nRDD model and are inspired by Pandas and R data frames. The API provides\r\nsimplified operators for filtering, aggregating, and projecting over large\r\ndatasets. The DataFrame API supports diffferent data sources like JSON\r\ndatasources, Parquet files, Hive tables and JDBC database connections.\r\n\r\nResources:\r\n\r\n- [An Architecture for Fast and General Data Processing on Large Clusters][2] Matei Zaharia\r\n- [Spark][6] Cluster Computing with Working Sets - Matei Zaharia et al.\r\n- [Resilient Distributed Datasets][5] A Fault-Tolerant Abstraction for In-Memory Cluster Computing -Matei Zaharia et al.\r\n- [Learning Spark][3] Lightning Fast Big Data Analysis - Oreilly\r\n- [Advanced Analytics with Spark][4] Patterns for Learning from Data at Scale - Oreilly\r\n\r\n [1]: https://spark.apache.org\r\n[2]: http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-12.pdf\r\n[3]: http://shop.oreilly.com/product/0636920028512.do\r\n[4]: http://shop.oreilly.com/product/0636920035091.do\r\n[5]: https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf\r\n[6]: http://www.cs.berkeley.edu/~matei/papers/2010/hotcloud_spark.pdf\r\n\r\n"], "have_tickets": [false], "title": "PySpark - Data processing in Python on top of Apache Spark.", "speakers": "Peter Hoffmann", "track_title": "Google Room", "timerange": "2015-07-22 16:45:00, 2015-07-22 17:15:00", "duration": 30, "tags": ["bigdata", "distributed-systems", "data-science", "analytics"]}, "18": {"id": 18, "abstracts": ["An overview of the currently available Python game development libraries and frameworks and how is Python currently being used in the videogame industry.\r\n\r\nPresentation of Kobra, a modern open source Python game development framework with ECS (Entity Component System) architecture and C++ bindings."], "have_tickets": [true], "title": "Python Gamedev MLG", "speakers": "Alejandro Garcia", "track_title": "A2 Room", "timerange": "2015-07-22 14:30:00, 2015-07-22 15:15:00", "duration": 45, "tags": ["gamedev", "python", "OpenGL", "c++"]}, "80": {"id": 80, "abstracts": ["Mixins are a great way to keep an application decoupled. This talk is about building mixins and dissecting what's behing the mixin \"magic\" and that, in fact, there is no magic involved at all. The main focus will be on Django framework while digging into mixins. When using Django class-based views, mixins feel very natural.\r\n\r\n**Goal**: by the end of this talk, every developer should be confident about creating his or her own custom mixins.\r\n\r\n**Prerequisites:**\r\n - basic understanding of OOP principles and their application in Python\r\n - Django web framework\r\n\r\nGenerally mixins in Python are pretty straight-forward, easy to create and use. Nevertheless a lot of developers stay away from them. I think attendees of this talk will be interested to learn that mixins are not that complex and their benefit is tremendous."], "have_tickets": [true], "title": "Demystifying Mixins with Django", "speakers": "Ana Balica", "track_title": "Barria2 Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:00:00", "duration": 30, "tags": ["mixins", "OOP", "django"]}, "232": {"id": 232, "abstracts": ["So often, we've been encouraged to be smart in our development. \"Work smarter not harder!\" say the encouraging posters. But the desire to be smart, and be seen to be smart, is hurting. The design suffers, the code suffers, and it's hard to recruit developers smart enough to cope with the problems caused.\r\n\r\nIn this talk, I'm proposing an alternative to being smart: **_DumbDev_**. Let's use our brains for enjoyable, interesting things, rather than wrestling with code written for smart developers.\r\n\r\n**So what do I mean by _dumb_?**\r\n\r\nWell, I don't mean 'ignorant'. A clever person can be ignorant of some important information, and learn it. With ignorance, there is hope. I'm also not talking about its opposite, 'stupidity'. This occurs when someone is given the information or advice, and chooses to ignore it. Dumb isn't stupid. Nor is it silent, as in someone who can't speak.\r\n\r\nInstead, the picture I have is of one of the early computers: very small RAM, disk space measured in KB, and a woefully inadequate CPU. In other words, slow, with very little working memory and limited persistent storage. Hey, this describes my brain -- and I realise that's an asset! I will write better software if I take this into account.\r\n\r\nHere's the first **_DumbDev_** rule, putting a sensible limit on complexity:\r\n\r\n> **1. All diagrams must fit on a Noughts and Crosses (Tic-tac-toe) board**.\r\n\r\n> _One central class/concept and up to eight things linked. Larger structures need to be subdivided._\r\n\r\n [1]: http://www.phyast.pitt.edu/~micheles/python/plone-hierarchy.png\r\n [2]: http://www.artima.com/weblogs/viewpost.jsp?thread=246341\r\n", "So often, we've been encouraged to be smart in our development. \"Work smarter not harder!\" say the encouraging posters. But the desire to be smart, and be seen to be smart, is hurting. The design suffers, the code suffers, and it's hard to recruit developers smart enough to cope with the problems caused.\r\n\r\nIn this talk, I'm proposing an alternative to being smart: **_DumbDev_**. Let's use our brains for enjoyable, interesting things, rather than wrestling with code written for smart developers.\r\n\r\n**So what do I mean by _dumb_?**\r\n\r\nWell, I don't mean 'ignorant'. A clever person can be ignorant of some important information, and learn it. With ignorance, there is hope. I'm also not talking about its opposite, 'stupidity'. This occurs when someone is given the information or advice, and chooses to ignore it. Dumb isn't stupid. Nor is it silent, as in someone who can't speak.\r\n\r\nInstead, the picture I have is of one of the early computers: very small RAM, disk space measured in KB, and a woefully inadequate CPU. In other words, slow, with very little working memory and limited persistent storage. Hey, this describes my brain -- and I realise that's an asset! I will write better software if I take this into account.\r\n\r\nSo, I'm a **_DumbDev_**, which means I can't hold in my mind the infamous [Plone Site class hierarchy][1] (see [Michele Simionato's article][2]). Rather than beat myself up about this, I can say, \"Hold on, maybe deep inheritance is a bad idea...\" There is some debate about the number of things we can think about simultaneously: it may be 7, 9, 5, 4 or even only 3. We can learn some tricks to appear to cope with more, but most of us can't easily do 38. \r\n\r\nHere's the first **_DumbDev_** rule, putting a sensible limit on complexity:\r\n\r\n> **1. All diagrams must fit on a Noughts and Crosses (Tic-tac-toe) board**.\r\n\r\n> _One central class/concept and up to eight things linked. Larger structures need to be subdivided._\r\n\r\nThere are seven further rules for me to explain in this talk. I will demonstrate the benefits of the **_DumbDev_** approach, with good and bad examples. At the end of the presentation, I hope you will realise that you're a better developer than you thought at the start. The next time it takes you two hours to debug a simple exception, you'll know that it's not you. It's because the system wasn't written using **_DumbDev_** rules.\r\n\r\nLet's free our brains for more interesting things, like having ideas and solving problems. \r\n\r\nLet's do **_DumbDev_**.\r\n\r\n [1]: http://www.phyast.pitt.edu/~micheles/python/plone-hierarchy.png\r\n [2]: http://www.artima.com/weblogs/viewpost.jsp?thread=246341\r\n", ""], "have_tickets": [true], "title": "DumbDev -- eight rules for dumb development", "speakers": "Rob Collins", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["massage", "best-practices", "dumbdev", "unit-testing", "rules", "community", "software-design"]}, "39": {"id": 39, "abstracts": ["Reahl is a full-featured web framework with a twist: with Reahl you write a web application purely in Python. HTML, JavaScript, CSS and all those cumbersome web technologies (and a few other lower level concerns) are hidden away from you. As far as web frameworks go this is truly a paradigm shift: away from the cobwebs of all the different web technologies, template languages and low-level details -- towards being able to focus on the goals at hand instead, using a single language.\r\n\r\nIn this talk I will give you a brief idea of what Reahl is all about: why it is worthwhile doing, how it works, where we are and what still needs to be done. I hope to convince you that this is an important direction for web frameworks, and of how unique Reahl is. Developing such an abstract framework is an ambitious goal. I'd like to convey the message that what we have achieved so far, and the strategy lessons learnt along the way demonstrate this goal to be realistic and practical.\r\n\r\n"], "have_tickets": [true], "title": "Reahl: The Python-only web framework", "speakers": "Iwan Vosloo", "track_title": "Barria1 Room", "timerange": "2015-07-23 14:30:00, 2015-07-23 15:15:00", "duration": 45, "tags": ["web", "open-source"]}, "41": {"id": 41, "abstracts": ["[Ansible ][1]is the _new cool kid in town_ in the configuration management world. It is easy to learn, fast to setup and works great! In the first part of the talk, I will do a super-fast introduction to Ansible for the newcomers.\r\n\r\nIf you are a Pythonista, you can hack and leverage Ansible in many ways. In the second part of the talk, I will describe some options to extend and embed Ansible with Python:\r\n\r\n - Embedding Ansible with the Python API\r\n - Extending Ansible: creating modules, plugins and callbacks\r\n\r\nPrevious experience with Ansible is advised in order to get the most of this talk, but beginners to the tool will also get an overview of the capabilities of this kind of integration.\r\n\r\n [1]: http://www.ansible.com/home\r\n"], "have_tickets": [true], "title": "Extending and embedding Ansible with Python", "speakers": "Alejandro Guirao Rodr\u00edguez", "track_title": "A2 Room", "timerange": "2015-07-23 11:00:00, 2015-07-23 11:45:00", "duration": 45, "tags": ["management", "Tooling", "configuration", "DevOps", "ansible"]}, "70": {"id": 70, "abstracts": ["The talk is about the implementation of multibody simulation in the scientific python world on the way to a stage usefull for engineering and educational purposes.\r\nMultibody simulation (MBS) requires two major steps: first the formulation of the specific mechanical problem. Second step is the integration of the resulting equations.\r\nFor the first step we use the package sympy which is on a very advanced level to perform symbolic calculation and which supports already Lagrange's and Kane's formalism. The extensions we made are such that a complex mechanical setup can be formulated easily with several lines of python code. The functionality is analogous to well known MBS-tools, with that you can assemble bodies, joints, forces and constraints. Also external forces even in a cosimulation model can be added on top. The second step, the integration is done via ode-integrators implemented in scipy.\r\nFinally for visual validation the results are visualized with the vpython package and for further analytics with matplotlib.\r\n\r\nConclusion: not only highly constrained pendulums with many rods and springs but also driving simulation of passenger cars an be performed with our new extension using python packages off the shelf."], "have_tickets": [true], "title": "Multibody Simulation using sympy, scipy and vpython", "speakers": "Oliver Braun", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["Mechanics", "sympy", "Engineering", "vpython", "Physics", "visualization", "education", "scipy"]}, "19": {"id": 19, "abstracts": ["Times changed, with introducing asyncio to Python standard library many and many developers think about switching from previous solutions to aio stack. Talk will introduce aiohttp, aioredis & aiopg - cornerstones for building modern Python backends and show common problems & solutions while switching to aio stack.\r\n\r\nBut not only Python changed. In second part, I'll talk about what new happened in frontend development, how new ES6 features modified JavaScript, and what React.js & Flux means for Python developers. \r\n\r\nTalk will cover real-world web application, which used aio stack on backend and React.js & Flux approach on frontend and provide useful observations for other developers interested in these topics."], "have_tickets": [true], "title": "Asyncio Stack & React.js or Development on the Edge", "speakers": "Igor Davydenko", "track_title": "Google Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["es6", "aiohttp", "aiopg", "react.js", "flux", "api", "aioredis", "python3", "asyncio"]}, "99": {"id": 99, "abstracts": ["In this talk I'm going to introduce Scrapinghub's new open source framework [Frontera][1]. Frontera allows to build real-time distributed web crawlers and website focused ones. \r\n\r\nOffering:\r\n\r\n - customizable URL metadata storage (RDBMS or Key-Value based),\r\n - crawling strategies management,\r\n - transport layer abstraction.\r\n - fetcher abstraction.\r\n\r\nAlong with framework description I'll demonstrate how to build a distributed crawler using [Scrapy][2], Kafka and HBase, and hopefully present some statistics of Spanish internet collected with newly built crawler. Happy EuroPythoning!\r\n\r\n [1]: https://github.com/scrapinghub/frontera\r\n [2]: http://scrapy.org/\r\n"], "have_tickets": [true], "title": "Frontera: open source large-scale web crawling framework", "speakers": "Alexander Sibiryakov", "track_title": "A2 Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 15:45:00", "duration": 30, "tags": ["scrapy", "kafka", "hbase", "webcrawling", "distributed-systems"]}, "279": {"id": 279, "abstracts": ["This talks is about automation and the use of Python scripts to speed up repetitive tasks.\r\n\r\nIt's for developers, sysops, devops, but also any kind of user that want improve his daily routine.\r\n\r\nI will talk about the use of Python with different tools for different platforms: Keyboard Maestro/Alfred/Hazel on OsX and Synapse/Kupfer/AutoKey on Linux.\r\n\r\nThere will be presented some sample script to give an idea of the potentiality of Python mixed with great tools, and these are some of the topics that I will cover:\r\n\r\n - text manipulation;\r\n - document template management;\r\n - clipboard management;\r\n - stuff internet activities (url shortening, web scraping, etc.);\r\n - list management.\r\n - etc.\r\n\r\n"], "have_tickets": [true], "title": "Python for IT specialists' tasks automation", "speakers": "Gianluca Nieri", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 11:45:00, 2015-07-20 12:30:00", "duration": 45, "tags": ["automation", "development-tools", "DevOps", "system-administration"]}, "101": {"id": 101, "abstracts": ["DEPOT ( http://depot.readthedocs.org/en/latest/ ) is a file storage framework born from the experience on a project that saved a lot of files on disk, until the day it went online and the customer system engineering team decided to switch to Heroku, which doesn't support storing files on disk.\r\n\r\nThe talk will cover the facets of a feature \"saving files\" which has always been considered straightforward but that can become complex in the era of cloud deployment and when infrastructure migration happens. \r\n\r\nAfter exposing the major drawbacks and issues that big projects might face on short and long terms with file storage the talk will introduce DEPOT and how it tried to solve most of the issues while providing a super-easy-to-use interface for developers. We will see how to use DEPOT to provide attachments on SQLAlchemy or MongoDB and how to handle problems like migration to a different storage backend and long term evolution.\r\n\r\nLike SQLAlchemy makes possible to switch your storage on the fly without touching code, DEPOT aims at making so possible for files and even use multiple different storages together."], "have_tickets": [true], "title": "Why storing files for the web is not as straightforward as you might think.", "speakers": "Alessandro Molina", "track_title": "Barria2 Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["web", "HTTP.", "mongodb", "cloud", "SQLAlchemy"]}, "147": {"id": 147, "abstracts": ["Haskell is very different from Python, and provide different tools to library and framework designers. As a result, its ecosystem is filled with libraries and frameworks that solve the same problems we try to solve in our favorite programming languages, but with a very different approach.\r\n\r\nThis talk is an exploration of the Haskell ecosystem, from the point of view of a Python developer. \r\nWe will review various popular Haskell libraries and frameworks, focusing on the library design. The goal is to provide the audience a sneak peak of some different ways to tackle problems, and hopefully to inspire library authors to explore some design space that we don't usually explore in Python.\r\n\r\nThis talk should be interesting to any intermediate Python programmer who is curious about other ways to solve problems. No Haskell knowledge is required from the audience."], "have_tickets": [true], "title": "Through the lens of Haskell: exploring new ideas for library design", "speakers": "Georges Dubus", "track_title": "A2 Room", "timerange": "2015-07-23 15:45:00, 2015-07-23 16:15:00", "duration": 30, "tags": ["design", "library", "Haskell"]}, "165": {"id": 165, "abstracts": ["As a web developer, I find myself being asked to make increasing numbers of data visualizations, interactive infographics, and more. d3.js is great, as are many other javascript toolkits that are out there. But if I can write more Python and less JavaScript... well, that makes me happy! \r\n\r\nBokeh is a new Python library for interactive visualization. Its origins are in the data science community, but it has a lot to offer web developers. In this mini-tutorial, I'll run through how to build a data visualization in Bokeh and how to hook it into your web application. This will be a real-world example, that was previously built in d3.js. \r\n\r\nAlong the way, I'll provide tips and tricks that I've discovered in my experience including how Bokeh works wonderfully with the iPython notebook which I use to prototype my visualizations, and many data science people use as their native way to explore data.\r\n\r\nFor those of you who already know a little Bokeh, I'll be covering the new \"actions framework\" that lets you write JS callbacks in your python code so you can do lots of interactions all on the client side.\r\n"], "have_tickets": [true], "title": "Getting started with Bokeh / Let's build an interactive data visualization for the web..in Python!", "speakers": "Sarah Bird", "track_title": "Barria2 Room", "timerange": "2015-07-20 11:00:00, 2015-07-20 11:45:00", "duration": 45, "tags": ["open-data", "data-science", "javascript", "visualization", "bigdata", "bokeh", "pandas", "web", "django", "open-source", "canvas", "data", "graphics"]}, "247": {"id": 247, "abstracts": ["Wrappers are an essential tool for interacting with web APIs. They reduce the amount of work needed to make requests and sometimes, only sometimes prevent the developer from dealing with extensive documentations. It\u2019s common to encounter libs that require not only the study of their own documentation, but also the APIs one, duplicating the needed work. This is caused because wrappers do not follow a design pattern, each developer creates it\u2019s own design, coding style and use their preferred tools. \r\n\r\n[Tapioca][1] is what can be called: \"a wrapper generator\u201d. Creating API wrappers with Tapioca is extremely easy and fast. For example, it took 1 hour to write the full wrapper for the [Parse.com][2] REST API. But this is not the more important thing, Tapioca libs have a similar interface so once understood how they work, developers can work with any other without the need to learn a new interface. \r\n\r\nTapioca is also thought to comply with REST features and takes HATEOAS (Hypermedia as the engine of application state) seriously, so \u201cfollowing\u201d links and pagination are natively supported. Explorability is also a key concept and developers are encouraged to play with Tapioca packages and find their way through APIs before writing their final code. Although there are some production ready [Tapioca wrappers][3], it is a work in progress, there are still many features to be explored.\r\n\r\n [1]: https://github.com/vintasoftware/tapioca-wrapper\r\n [2]: http://parse.com\r\n [3]: https://github.com/vintasoftware/tapioca-wrapper#tapioca-comes-in-many-flavours"], "have_tickets": [true], "title": "What is wrong with API wrappers and how can we do better", "speakers": "Filipe Ximenes", "track_title": "A2 Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:00:00", "duration": 30, "tags": ["HTTP", "ipython", "web", "api", "requests", "wrapper"]}, "195": {"id": 195, "abstracts": ["In this talk I will present some tools for working with Geographic Information Systems in Python.\r\n\r\nGeographic information Systems are widely used for managing geographic (map) data. As an example I will present how to use Open Street Map data (http://openstreetmap.org/), in routing, traffic planning and estimation of pollution emission.\r\n\r\nFor the purpose of the project EcoSense (http://ecosense.au.dk), GPS data from users smartphones are mapped to OSM roads. The map matching algorithm is written in Python and uses data from the database PostgreSQL, with the PostGIS extension. \r\n\r\nOne of the goals of the EcoSense project is to devise methods to improve the estimation of air quality in urban environments.\r\n"], "have_tickets": [true], "title": "How to GIS with Python", "speakers": "Anders Lehmann", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 16:45:00, 2015-07-23 17:15:00", "duration": 30, "tags": ["GIS", "bigdata", "Mapmatching", "PostGIS", "postgresql"]}, "296": {"id": 296, "abstracts": ["To accompany an upcoming O'Reilly book 'Data-visualisation with Python and Javascript: crafting a dataviz toolchain for the web' (see [here][1]) this talk aims to sketch out the toolchain by transforming some dry Wikipedia data (Nobel prize-winners) into a far more engaging and insightful web-visualisation. This transformative cycle uses Python big-hitters such as Scrapy, Pandas and Flask, the latter delivering data to Javascript's D3.\r\n\r\nWhile Python is fast becoming the goto language for data-processing/science, the visual fruits of that labour hit the wall of the web, where there is only one first-class language, Javascript. To develop a data-viz toolchain for the modern world, where web-presentation is increasingly mandated, making Python and Javascript play nicely is fundamental. This talk aims to show that the perceived wall between the two languages is actually a thin, permeable membrane and that, with a bare minimum of web-dev, one can get on with programming seamlessly in both.\r\n\r\n [1]: http://kyrandale.com/blog/data-visualization-python-javascript/\r\n"], "have_tickets": [true], "title": "Data-visualisation with Python and Javascript: crafting a data-viz toolchain for the web", "speakers": "Kyran Dale", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 14:30:00, 2015-07-21 15:15:00", "duration": 45, "tags": ["d3", "visualization", "matplotlib", "flask", "pandas", "web", "javascript", "scrapy"]}, "199": {"id": 199, "abstracts": ["Today, we almost exclusively think of code in software projects as a collection of text files. The tools that we use (version control systems, IDEs, code analyzers) also use text as the primary storage format for code. In fact, the belief that \"code is text\" is so deeply ingrained in our heads that we never question its validity or even become aware of the fact that there are other ways to look at code.\r\n\r\nIn my talk I will explain why treating code as text is a very bad idea which actively holds back our understanding and creates a range of problems in large software projects. I will then show how we can overcome (some of) these problems by treating and storing code as data, and more specifically as a graph. I will show specific examples of how we can use this approach to improve our understanding of large code bases, increase code quality and automate certain aspects of software development.\r\n\r\nFinally, I will outline my personal vision of the future of programming, which is a future where we no longer primarily interact with code bases using simple text editors. I will also give some ideas on how we might get to that future.\r\n\r\nMore information about me:\r\n\r\n- Github: https://github.com/adewes\r\n- Twitter: https://twitter.com/japh44\r\n- Website: http://www.andreas-dewes.de/en", "Today, we almost exclusively think of code in software projects as a collection of text files. The tools that we use (version control systems, IDEs, code analyzers) also use text as the primary storage format for code. In fact, the belief that \"code is text\" is so deeply ingrained in our heads that we never question its validity or even become aware of the fact that there are other ways to look at code.\r\n\r\nIn my talk I will explain why treating code as text is a very bad idea which actively holds back our understanding and creates a range of problems in large software projects. I will then show how we can overcome (some of) these problems by treating and storing code as data, and more specifically as a graph. I will show specific examples of how we can use this approach to improve our understanding of large code bases, increase code quality and automate certain aspects of software development.\r\n\r\nFinally, I will outline my personal vision of the future of programming, which is a future where we no longer primarily interact with code bases using simple text editors. I will also give some ideas on how we might get to that future.\r\n\r\nGoals:\r\n\r\n- Convince people that treating code primarily as text is a really bad idea.\r\n- Show which insights we can gain when treating code as data and storing it in a format that allows us to analyze and process it algorithmically.\r\n- Give people a vision on how the future of programming might look like and how we might get there.\r\n\r\nPrerequisites:\r\n\r\n- A basic understanding of programming concepts (files, compilers / interpreters, version control [not really necessary though]).\r\n- An interest in best practices and writing good code.\r\n\r\nOutline:\r\n\r\n- Introduction (who am I, why I'm here) - 3 mins\r\n- Short history of code storage formats - wires, punch cards, text, graphs and back to text (5 mins)\r\n- Why storing code as text is a bad idea - motivation and examples (5 mins)\r\n- Alternative ways to think about code - graphs and trees (5 mins)\r\n- Building a graph storage engine for Python code - principles and use cases (5 mins)\r\n- Demo time - visualizing the graph, tracking the evolution of code, finding duplicates and problems, automatically refactoring the graph (5 mins)\r\n- The future of programming - increase automation, decrease errors (5 mins) \r\n- Building the future - what we need and how to build it (5 mins)\r\n- Ending remarks (2 mins)\r\n\r\n(40 minutes total [probably less] + 5 minutes of Q&A)\r\n\r\nMy motivation:\r\n\r\nI talked about data-driven code analysis at the PyCon Montreal 2015, and many people said that they really enjoyed my talk and would like to learn more about data-driven code analysis and treating code as a graph. I'm happy to oblige and give a talk about this at the EuroPython!\r\n\r\nOther events I spoke at (selection):\r\n\r\n- 31C3 (Chaos Communication Congress) Hamburg: I gave a talk on quantum computing in front of 1.800 people, which received very positive feedback (https://www.youtube.com/watch?v=aXtE0Zeszho)\r\n- PyCon Montreal - I spoke about data-driven code analysis in front of 1.000 people. The talk received great interest and very positive feedback (https://us.pycon.org/2015/schedule/presentation/341/)\r\n\r\nMore information about me:\r\n\r\n- Github: https://github.com/adewes\r\n- Twitter: https://twitter.com/japh44\r\n- Website: http://www.andreas-dewes.de/en", ""], "have_tickets": [true], "title": "Code is not text! How graph technologies can help us to understand our code better.", "speakers": "Andreas Dewes", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 11:00:00, 2015-07-21 11:45:00", "duration": 45, "tags": ["python", "visualization", "bigdata", "Programming", "code", "graphdatabases", "futureofcoding", "Best Practice"]}, "343": {"id": 343, "abstracts": ["This is a talk for mediocre Python programmers by a mediocre programmer. PyPy\r\nis an alternative implementation of Python. It is notorious for being fast, but\r\nalso for using clever algorithms pertaining to advanced concepts such as type\r\ninference, garbage collection, just-in-time compilation, etc. So, can we,\r\nmediocre programmers, realistically use PyPy?\r\n\r\nYes, absolutely. In fact, PyPy developers did all that hard work so that we\r\nwouldn't have to. As we'll see, it runs most Python code exactly like CPython\r\ndoes, save that it magically makes it faster.\r\n\r\nPorting existing applications is always more involved than running a simple\r\nscript, so we'll also examine likely difficulties such as code relying on\r\nCPython implementation details, and dependencies on C extensions, and explore\r\nsimple principles to let PyPy run your code even faster.\r\n\r\nFinally, we'll have a glimpse of the future by looking at what's brewing in \r\nthe PyPy lair, such as software transactional memory, new speed optimisations,\r\nbetter support for Python 3 and NumPy, ...\r\n\r\n\r\n"], "have_tickets": [true], "title": "PyPy for mediocre programmers", "speakers": "Ronan Lamy", "track_title": "Barria1 Room", "timerange": "2015-07-24 11:00:00, 2015-07-24 11:45:00", "duration": 45, "tags": ["PyPy"]}, "156": {"id": 156, "abstracts": ["This talk introduces the asyncio module. I'll cover what it's for, how it works and describe how I used it to write a real-world networked application (a distributed hash table). We'll explore the event loop, coroutines, futures and networking with examples from my code. This won't be an exhaustive exposition. Rather, attendees will grasp enough of asyncio to continue with their own studies.\r\n\r\nBy the end of this introductory talk I hope attendees will want to learn more about asyncio and perhaps give it a try in their own projects."], "have_tickets": [false], "title": "Lessons learned with asyncio (\"Look ma, I wrote a distributed hash table!\")", "speakers": "Nicholas Tollervey", "track_title": "A2 Room", "timerange": "2015-07-22 15:15:00, 2015-07-22 15:45:00", "duration": 30, "tags": ["asyncio", "introduction"]}, "317": {"id": 317, "abstracts": ["Talk about mistakes we made and best practises we have elaborated while implementation Behave Driven Development into one of the projects. Great idea to coverage whole application with functional tests fall down in development chaos and reborn on new better foundations.\r\n\r\nProject referred is web-based big data management which main features are transcoding and file sharing. Thanks to Django and many Python frameworks we have web interface for it and we are able to run automation tests with Selenium.", "", ""], "have_tickets": [true], "title": "BDD: You\u2019re doing it wrong!", "speakers": "Rafa\u0142 Nowicki", "track_title": "Barria1 Room", "timerange": "2015-07-23 12:30:00, 2015-07-23 13:00:00", "duration": 30, "tags": ["test", "selenium", "django", "bdd"]}, "244": {"id": 244, "abstracts": ["You've been making packages for a while now. Everything works almost fine, however, lots of new features and tools have been developed recently. Some are really obscure. And there's a chance they can save you time and help you avoid _packaging-induced-pain_. I'm willing to bet couple of beers you haven't seen these features and/or tools before.\r\n\r\nThis talk is going to show you:\r\n\r\n- Patterns and tricks you can use in your `setup.py`.\r\n- Obscure pip/setuptools/virtualenv/python features you can use to improve your packaging experience (be it as a user of packages or a package author).\r\n- Fledgeling alternative tools.", "", ""], "have_tickets": [true], "title": "Less known packaging features and tricks", "speakers": "Ionel Cristian M\u0103rie\u0219", "track_title": "PythonAnywhere Room", "timerange": "2015-07-20 12:30:00, 2015-07-20 13:15:00", "duration": 45, "tags": ["virtualenv", "setuptools", "python", "packaging", "pip"]}, "29": {"id": 29, "abstracts": ["Data Structures is traditionally a \u201cbogeyman\u201d discipline in Computer Science courses and has a high degree of failure. In FATEC S\u00e3o Jos\u00e9 dos Campos we are adopting a hybrid approach, with C and Python languages. The failure rate decreased from 85% (2008) to 12% (2014). The talk will be extensively illustrated with code in C and Python, addressing the various concepts taught in this course: recursion, linked lists, queues, stacks, sorting algorithms.", "", ""], "have_tickets": [true], "title": "Data Structures with Python", "speakers": "Fernando Masanori Ashikaga", "track_title": "Barria2 Room (Education Summit)", "timerange": "2015-07-23 15:45:00, 2015-07-23 16:15:00", "duration": 30, "tags": ["education"]}, "333": {"id": 333, "abstracts": ["During this talk we will discuss how to manage your full stack development life cycle using python technologies plus Docker. \r\n\r\nWe will cover from, the project creation (using Pyramid web framework), to maintaining a consistent deployment infrastructure using buildout and docker containers. ", "Durante esta presentaci\u00f3n discutiremos como administrar el ciclo de vida de tu desarrollo usando tecnolog\u00edas Python m\u00e1s Docker.\r\n\r\nVamos a cubrir desde la creaci\u00f3n de tu proyecto (usando el framework Pyramid), hasta la mantenci\u00f3n de infraestructuras consistentes de instalaci\u00f3n usando buildout y contenedores docker. ", ""], "have_tickets": [true], "title": "Easy FullStack Deployments", "speakers": "Alvaro Aguirre", "track_title": "A2 Room", "timerange": "2015-07-23 15:15:00, 2015-07-23 15:45:00", "duration": 30, "tags": ["Buildout", "DevOps", "docker", "ansible", "fabric", "Pyramid"]}, "16": {"id": 16, "abstracts": ["Big Data - these two words are heard so often nowadays. But what exactly is Big Data ? Can we, Pythonistas, enter the wonder world of Big Data ? The answer is definitely \"Yes\".\r\n\r\nThis talk is an introduction to the big data processing using Apache Hadoop and Python. We'll talk about Apache Hadoop, it's concepts, infrastructure and how one can use Python with it. We'll compare the speed of Python jobs under different Python implementations, including CPython, PyPy and Jython and also discuss what Python libraries are available out there to work with Apache Hadoop.\r\n\r\nThis talk is intended for beginners who want to know about Hadoop and Python or those who are already working with Hadoop but are wondering how to use it with Python or how to speed up their Python jobs."], "have_tickets": [true], "title": "Big Data with Python & Hadoop", "speakers": "Max Tepkeev", "track_title": "Google Room", "timerange": "2015-07-24 11:45:00, 2015-07-24 12:30:00", "duration": 45, "tags": ["bigdata", "jython", "hadoop", "cpython", "etl", "PyPy"]}, "94": {"id": 94, "abstracts": ["Python is a powerful language that provides many tools for creating highly dynamic programs. It offers tools all across the complexity spectrum that library authors can use to make their libraries seem convenient to use for users.\r\n\r\nWhile it's true that there are a wealth of techniques with huge positive benefits, there are a number of common antipatterns which can deceptively cause a net-loss in flexibility, readability, and predictability for users.\r\n\r\nWe'll explore a few specific commonalities in this area of library and object API design, and talk about the ramifications they have on each of these programmer concerns."], "have_tickets": [true], "title": "Just Because You Can, Doesn't Mean You Should", "speakers": "Julian Berman", "track_title": "PythonAnywhere Room", "timerange": "2015-07-24 12:30:00, 2015-07-24 13:15:00", "duration": 45, "tags": ["case study", "Best Practice"]}, "306": {"id": 306, "abstracts": ["At Spotify, my team struggled to be awesome. We had a very loose understanding of what product/service our squad was responsible for, and even less so of the expectations our internal and external customers had for those services. Other than \u201cdoes our Facebook login work?\u201d, we had no understanding of how our services we\u2019re responsible for were doing. How many users actually sign up or log in with Facebook? How many users have connected their Spotify account with their Uber account? Do folks even use Spotify with Uber? \r\n\r\nWith a 2-month challenge period, my squad and I focused inward to establish those unanswered questions and to establish feedback loops and always-on dashboards. This talk will tell the story of how we chose which metrics are important for us to focus on, what technologies we have used and are using, and how we\u2019ve iterated over our feedback loops to fine-tune what metrics we care about. "], "have_tickets": [true], "title": "Metrics-driven development", "speakers": "Lynn Root", "track_title": "Google Room", "timerange": "2015-07-20 15:15:00, 2015-07-20 15:45:00", "duration": 30, "tags": ["servers", "metrics", "technologies", "real-time", "logging"]}, "164": {"id": 164, "abstracts": ["Rust is a new programming language from Mozilla. It is fast, safe and beautiful. It is also a very good option when needing performance. In this talk we're going to look at Rust and see what it offers and how we can leverage it as Python developers. And we'll do it with a case study: a statistical profiler for Python."], "have_tickets": [true], "title": "Can Rust make Python shine?", "speakers": "Dmitry Trofimov", "track_title": "Barria1 Room", "timerange": "2015-07-20 14:30:00, 2015-07-20 15:15:00", "duration": 45, "tags": ["performance", "profiling", "rust"]}, "140": {"id": 140, "abstracts": ["In this talk we would like to have a short introduction on how Python\r\nprograms are compiled and executed, with a special attention towards\r\njust in time compilation done by PyPy. PyPy is the most advanced Python\r\ninterpreter around and while it should generally just speed up your programs\r\nthere is a wide range of performance that you can get out of PyPy, ranging from\r\nslightly faster than CPython to C speeds, depending on how you write your\r\nprograms.\r\n\r\nWe will split the talk in two parts. In the first part we will explain\r\nhow things work and what can and what cannot be optimized as well as describe\r\nthe basic heuristics of JIT compiler and optimizer. In the next part we will\r\ndo a survey of existing tools for looking at performance of Python programs\r\nwith specific focus on PyPy.\r\n\r\nAs a result of this talk, an audience member should be better equipped with\r\ntools how to write new software and improve existing software with performance\r\nin mind.\r\n\r\nThe talk will be given by Antonio Cuni and Maciej Fijalkowski,\r\nboth long time PyPy core developers and expert in the area of\r\nPython performance.", "", ""], "have_tickets": [true], "title": "Python and PyPy performance (not) for dummies", "speakers": "Antonio Cuni", "track_title": "PythonAnywhere Room", "timerange": "2015-07-21 15:15:00, 2015-07-21 16:15:00", "duration": 60, "tags": ["profiling", "performance", "PyPy", "JIT"]}}, "Trainings": {"262": {"id": 262, "abstracts": ["The value that search functionality can add to a website is often underestimated, and many people fear that it is too complex or complicated. At the same time, it\u2019s not clear to many developers what a good search implementation should do.\r\n\r\nIn short, many developers - and the users of their websites - are missing out on important benefits.\r\n\r\nThis workshop will help them over the first hurdles to a solid search implementation using Django and Elasticsearch. It will cover basic steps like syncing the models to a search engine and setting up search views, as well as more advanced functionality such as faceted navigation.\r\n\r\nHonza will explain how search works and guide people through the process of customising their search and setting up analytics based on the data in their apps.", "", ""], "have_tickets": [true], "title": "Don't be afraid to search", "speakers": "Honza Kr\u00e1l", "track_title": "", "timerange": "2015-07-23 14:30:00, 2015-07-23 17:30:00", "duration": 180, "tags": ["search", "django", "elasticsearch", "databases"]}, "323": {"id": 323, "abstracts": ["If you want to get data from the web, and there are no APIs available, then you need to use web scraping! Scrapy is the most effective and popular choice for web scraping and is used in many areas such as data science, journalism, business intelligence, web development, etc.\r\n\r\nThis workshop will provide an overview of Scrapy, starting from the fundamentals and working through each new topic with hands-on examples.\r\n\r\nParticipants will come away with a good understanding of Scrapy, the principles behind its design, and how to apply the best practices encouraged by Scrapy to any scraping task.\r\n\r\nGoals:\r\n\r\n - Set up a python environment.\r\n - Learn basic concepts of the Scrapy framework.\r\n\r\n", "", ""], "have_tickets": [true], "title": "Scrapy Workshop", "speakers": "Juan Riaza", "track_title": "", "timerange": "2015-07-24 14:30:00, 2015-07-24 17:30:00", "duration": 180, "tags": ["scrapy", "python", "open-source", "scraping"]}, "207": {"id": 207, "abstracts": ["Optimization can often help to make Python programs faster or use less memory.\r\nDeveloping a strategy, establishing solid measuring and visualization techniques\r\nas well as knowing about algorithmic basics and datastructures are the foundation\r\nfor a successful optimization. The tutorial will cover these topics.\r\nExamples will give you a hands-on experience on how to approach efficiently.\r\n\r\n*Audience*: Programmers with good basic Python knowledge. No previous\r\nknowledge in the field of optimization is required.\r\n\r\n*Objectives*: This tutorial will help you to get the most out of your optimization work.\r\nYou will learn useful techniques for details combined with an overall strategy\r\nfor the big picture.\r\n\r\n*Detailed Abstract*: Python is a great language. But it can be slow compared to other languages for certain types of tasks. If applied appropriately, optimization may reduce program runtime or memory consumption considerably. But this often comes at a price. Optimization can be time consuming and the optimized program may be more complicated. This, in turn, means more maintenance effort. How do you find out if it is worthwhile to optimize your program? Where should you start?\r\nThis tutorial will help you to answer these questions. You will learn how to find an optimization strategy based on quantitative and objective criteria.\r\nYou will experience that one's gut feeling what to optimize is often wrong.\r\n\r\nThe solution to this problem is: \u201eMeasure, Measure, and Measure!\u201c. You will\r\nlearn how to measure program run times as well as profile CPU and memory.\r\nThere are great tools available. You will learn how to use some of them.\r\nMeasuring is not easy because, by definition, as soon as you start to measure,\r\nyou influence your system. Keeping this impact as small as possible is\r\nimportant. Therefore, we will cover different measuring techniques.\r\n\r\nFurthermore, we will look at algorithmic improvements. You will see that the\r\nright data structure for the job can make a big difference. Finally, you will\r\nlearn about different caching techniques.\r\n\r\n*More Info*: You will need Python 2.7 or 3.4 installed on your laptop. Python 2.6 or 3.3 should also work. Very detailed installation instructions will be given to all participants well before the course.", "Optimization can often help to make Python programs faster or use less memory.\r\nDeveloping a strategy, establishing solid measuring and visualization techniques\r\nas well as knowing about algorithmic basics and datastructures are the foundation\r\nfor a successful optimization. The tutorial will cover these topics.\r\nExamples will give you a hands-on experience on how to approach efficiently.\r\n\r\n### Audience\r\n\r\nProgrammers with good basic Python knowledge. No previous\r\nknowledge in the field of optimization is required.\r\n\r\n### Objectives\r\n\r\nThis tutorial will help you to get the most out of your optimization work.\r\nYou will learn useful techniques for details combined with an overall strategy\r\nfor the big picture.\r\n\r\n### Detailed Abstract\r\n\r\nPython is a great language. But it can be slow compared to other languages\r\nfor certain types of tasks. If applied appropriately, optimization may reduce\r\nprogram runtime or memory consumption considerably. But this often comes at a\r\nprice. Optimization can be time consuming and the optimized program may be more\r\ncomplicated. This, in turn, means more maintenance effort. How do you find\r\nout if it is worthwhile to optimize your program? Where should you start?\r\nThis tutorial will help you to answer these questions. You will learn how\r\nto find an optimization strategy based on quantitative and objective criteria.\r\nYou will experience that one's gut feeling what to optimize is often wrong.\r\n\r\nThe solution to this problem is: \u201eMeasure, Measure, and Measure!\u201c. You will\r\nlearn how to measure program run times as well as profile CPU and memory.\r\nThere are great tools available. You will learn how to use some of them.\r\nMeasuring is not easy because, by definition, as soon as you start to measure,\r\nyou influence your system. Keeping this impact as small as possible is\r\nimportant. Therefore, we will cover different measuring techniques.\r\n\r\nFurthermore, we will look at algorithmic improvements. You will see that the\r\nright data structure for the job can make a big difference. Finally, you will\r\nlearn about different caching techniques.\r\n\r\n\r\n### Outline\r\n\r\n* How Fast is Fast Enough? (5 min)\r\n* Optimization Guidelines and Strategy (10 min)\r\n* Measuring run time\r\n * ``time``, ``timeit``, decorators for timing (5 min)\r\n * Wall Clock vs. CPU Time (2 min)\r\n* Profiling CPU Usage\r\n * cProfile (10 min)\r\n * A Picture is Worth a Thousand Words\r\n * RunSnakeRun (5 min)\r\n * SnakeViz (5 min)\r\n * Cachegrind (5 min)\r\n * Going Line-by-Line (5 min)\r\n * Exercise (10 min)\r\n* Profiling Memory Usage\r\n * Heapy (5 min)\r\n * Pympler (5 min)\r\n * Memory Usage Line-by-Line with memory_profiler (5 min)\r\n * Exercise (10 min)\r\n* Algorithms and Anti-patterns\r\n * String Concatenation (3 min)\r\n * List and Generator Comprehensions (5 min)\r\n * Think Global buy Local (5 min)\r\n * Exercise (5 min)\r\n* The Right Data Structure\r\n * Use built-in Data Types (2 min)\r\n * ``list`` vs. ``set`` (3 min)\r\n * ``list`` vs. ``deque`` (5 min)\r\n * ``dict`` vs. ``defaultdict`` (5 min)\r\n * Big-O notation and Data Structures (5 min)\r\n * O(1) vs. O(n) vs. O(n) (5 min)\r\n * Exercise (15 min)\r\n* Caching\r\n * Reuse before You Recalculate (5 min)\r\n * Deterministic caching (5 min)\r\n * Non-deterministic caching (5 min)\r\n * Least Recently Used Cache (5 min)\r\n * Memcached (5 min)\r\n * Exercise (10 min)\r\n\r\n### More Info\r\n\r\nYou will need Python 2.7 or 3.4 installed on your laptop. Python 2.6 or 3.3\r\nshould also work. Very detailed installation instructions will be given to all participants well before the course.\r\n", ""], "have_tickets": [true], "title": "Faster Python Programs - Measure, don't Guess", "speakers": "Mike M\u00fcller", "track_title": "", "timerange": "2015-07-24 14:30:00, 2015-07-24 17:30:00", "duration": 180, "tags": ["optimization", "profiling"]}, "28": {"id": 28, "abstracts": ["Tutorial interactivo, en *espa\u00f1ol*, y muy divertido para la gente, con los conceptos b\u00e1sicos de programaci\u00f3n en alguna otra lenguaje, y que no saben nada de Python. Vamos a hackear fotos de amigos de Facebook y tambi\u00e9n hackear m\u00f3dulos b\u00e1sicos y clases para obtener la \"respuesta a la \u00faltima pregunta de la vida, el universo, y todo\". Este tutorial asume que usted tiene algunos pocos conceptos b\u00e1sicos (entrada de dados, salida de dados, operadores booleanos, control de flujo, funciones, repeticiones). Vamos a cubrir, en Python 3.x: 1. El modo interactivo de Python 2. Variaciones en el juego de adivinar un n\u00famero aleat\u00f3rio 3. Hackear m\u00f3dulos b\u00e1sicos y clases para obtener la \"respuesta a la \u00faltima pregunta de la vida, el universo, y todo\". 4. Hacking de las fotos de los amigos de Facebook sin OAuth 5. Chuck Norris Nerd chistes y partidos de la Copa Mundial en seis l\u00edneas de c\u00f3digo. 6. Prueba selectiva del Hackaton Facebook en una l\u00ednea de c\u00f3digo. Nota importante: No soy un gur\u00fa de Python, s\u00f3lo un maestro apasionado!"], "have_tickets": [true], "title": "Python para Iniciantes (ESPA\u00d1OL)", "speakers": "Fernando Masanori Ashikaga", "track_title": "", "timerange": "2015-07-21 11:00:00, 2015-07-21 13:30:00", "duration": 150, "tags": ["iniciante", "programaci\u00f3n", "divertido"]}, "110": {"id": 110, "abstracts": ["Many programming paradigms are reaching us nowadays bringing the promise of being faster by leveraging more cores and more machines (and more system administration headaches, but this is rarely stated). Reality is that many times these paradigms do not take in account the increasing mismatch between memory speed and CPUs (see http://www.blosc.org/docs/StarvingCPUs-CISE-2010.pdf), and this is becoming utterly critical so as to get maximum performance out of your data handling applications.\r\n\r\nDuring my tutorial, I will introduce different data containers for handling different kind of data and will propose experimenting with them while explaining why some adapts better to the task at hand. I will start with a quick introduction for Python data containers (lists, dicts, arrays...), continuing with well-known in-memory NumPy and Pandas containers as well as on-disk HDF5/PyTables and ending with bcolz (https://github.com/Blosc/bcolz), a novel way to store and quickly retrieve data which uses chunking and compression techniques so as to leverage the memory hierarchy of modern computer architectures.\r\n\r\nPeople attending will need a working Python setup with IPython notebook, NumPy, pandas, PyTables and bcolz installed. Anaconda or Enthought Canopy distributions are recommended, but any other means of installing (e.g. pip) will do.", "", ""], "have_tickets": [true], "title": "Efficient Memory/Disk Data Containers With Python", "speakers": "Francesc Alted", "track_title": "", "timerange": "2015-07-22 11:00:00, 2015-07-22 13:30:00", "duration": 150, "tags": ["python", "data-science", "bigdata", "ipython", "open-source", "databases", "data"]}, "299": {"id": 299, "abstracts": ["This tutorial will offer a hands-on introduction to machine learning and the process of applying these concepts in a Kaggle competition. We will introduce attendees to machine learning concepts, examples and flows, while building up their skills to solve an actual problem. At the end of the tutorial attendees will be familiar with a real data science flow: feature preparation, modeling, optimization and validation. \r\n\r\nPackages used in the tutorial will include: IPython notebook, scikit-learn, pandas and nltk. We'll use IPython notebook for interactive exploration and visualization, in order to gain a basic understanding of what's in the data. From there, we'll extract features and train a model using scikit-learn. This will bring us to our first submission. We'll then learn how to structure the problem for offline evaluation and use scikit-learn's clean model API to train many models simultaneously and perform feature selection and hyperparameter optimization.\r\n\r\nAt the end of session, attendees will have time to work on their own to improve their models and make multiple submissions to get to the top of the leaderboard, just like in a real competition. Hopefully attendees will not only leave the tutorial having learned the core data science concepts and flow, but also having had a great time doing it.\r\n"], "have_tickets": [true], "title": "Beginner's Guide to Machine Learning Competitions", "speakers": "Christine Doig", "track_title": "", "timerange": "2015-07-20 14:30:00, 2015-07-20 17:30:00", "duration": 180, "tags": ["python", "competitions", "data-science", "machine-learning", "nltk", "predictions", "ipython-notebook", "ipython", "pandas", "natural-language-processing", "open-source", "sklearn"]}, "320": {"id": 320, "abstracts": ["[asyncio][1] is relative new library for asynchronous network programming.\r\n\r\n\r\n\r\nOn training session newcomers will learn how to:\r\n\r\n* develop asyncio-based WEB applications with help of aiohttp library and siblings\r\n* write tests for asynchronous code\r\n* make tiny but revealing asyncio library which shows all design concepts required for making good product for asyncio code\r\n\r\nA lot of tips and tricks will be explained. Development for asyncio is really easy (much easier than [Tornado][2] and [Twisted][3] coding) but requires to change you mind a bit.\r\n\r\n [1]: http://docs.python.org/3/library/asyncio.html\r\n [2]: http://www.tornadoweb.org/\r\n [3]: http://twistedmatrix.com"], "have_tickets": [true], "title": "Mastering asyncio applications", "speakers": "Andrew Svetlov", "track_title": "", "timerange": "2015-07-21 14:30:00, 2015-07-21 17:30:00", "duration": 180, "tags": ["HTTP", "aiohttp", "aiopg", "aioredis", "asyncio", "network"]}, "9": {"id": 9, "abstracts": ["Do you like playing lego? Do you want to know how Scrum works? Why not to combine having fun & learning? \r\n\r\nDuring my workshops you will get familiar with Scrum ceremonies by building a Lego city. In your team you will have a Scrum Master who should help you with a demanding Product Owner who will be me. \r\n\r\nCan you manage my requirements? Can you finish the sprint? Can you build the city I'm dreaming about? Try yourself and get Scrum experience!", "", ""], "have_tickets": [true], "title": "Lego for Scrum", "speakers": "Anna Kierczy\u0144ska", "track_title": "", "timerange": "2015-07-22 14:30:00, 2015-07-22 17:30:00", "duration": 180, "tags": ["lego", "management", "agile", "fun", "scrum"]}, "291": {"id": 291, "abstracts": ["**Description:** Over the course of the 2.5 hours of this workshop you will learn how to leverage both Python and MongoDB to build highly scalable, asynchronous applications based on microservices architecture. We will be building from scratch several different \"exotic\" services, using a variety of datasets, that together we can mashup into a consolidated application using our own laptops. \r\n\r\nWe will start by introducing several technologies that we will be using (e.g. Python, Flask, MongoDB, AngularJS) and take a ten-thousand foot overview of micro services architecture.\r\nIn the second half of the workshop, we will break into teams that will each take charge in implementing a microservice that will comprise our final application. \r\n\r\nThis a fully hands-on workshop.\r\n\r\n**Learning objectives:** \r\n\r\n - Benefits of microservice architectures\r\n\r\n - MongoDB schema design \r\n\r\n - MongoDB query optimization and profiling \r\n\r\n - Basic understanding of AngularJS \r\n\r\n - Flask as REST API platform\r\n\r\n**Target Audience:**\r\nThis workshop is recommended to software developers eager to understand more about MongoDB and how to build async calls. Coding skills and basic understanding of Python is required. Prior experience with AngularJS and Flask is welcomed.\r\n\r\n**Technical Requirement:**\r\nThe attendee should bring their own laptop with MongoDB and Python (>2.7) installed. One should have administration grants over their system because we will need to expose ports and other communications to the network. The datasets and project instructions will be provided on site.\r\n\r\n"], "have_tickets": [true], "title": "Building Async Microservices", "speakers": "Norberto Leite", "track_title": "", "timerange": "2015-07-22 11:00:00, 2015-07-22 13:30:00", "duration": 150, "tags": ["AngularJS", "mongodb", "flask", "api", "Microservices"]}, "292": {"id": 292, "abstracts": ["The aim is to cover the basics of setting up a simple Django site, but using full, rigorous TDD at every step along the way.\r\n\r\nThe tutorial is based on the first few chapters of my book, which is available (for free!) online for you to follow up with after the session, so that you can embed what you've learned. [www.obeythetestinggoat.com](http://www.obeythetestinggoat.com)\r\n\r\nWe'll learn:\r\n\r\n - how to set up functional tests with Selenium\r\n - how to set up Django\r\n - how to run Django unit tests\r\n - how TDD actually works in practice: the unit test / code cycle where we re-run the tests after each tiny, incremental change to the code\r\n - all the basics of Django like views, models and templates.\r\n\r\nWe'll talk about what to test, what not to test, what the point of all this testing is anyway, you'll get a real hands-on feeling for how it works, and I promise to make it all at least moderately entertaining!\r\n\r\nAnd it's all in Python 3 :)\r\n\r\n**Please come prepared!** you'll need:\r\n\r\n- Python 3.4\r\n- Firefox\r\n- Django 1.8\r\n- Selenium\r\n\r\nYou'll find full instructions [here](http://chimera.labs.oreilly.com/books/1234000000754/pr02.html) -- do email me if you have any problems, I'm happy to help. obeythetestinggoat@gmail.com", "", ""], "have_tickets": [true], "title": "TDD for web development, from scratch", "speakers": "Harry Percival", "track_title": "", "timerange": "2015-07-24 11:00:00, 2015-07-24 13:30:00", "duration": 150, "tags": ["tdd", "unit-testing", "selenium", "django", "python3", "Testing"]}, "326": {"id": 326, "abstracts": ["Do you know what happens every time you use the **@** symbol in Python? Do you know how to implement a decorator to be customisable at _decoration time_ or to internally store a state? \r\n\r\nAfter attending this training you will be able to answer _yes_ to all the previous questions!\r\n\r\nThe content of the session can be split in 3 main blocks:\r\n\r\n - 1/ Some Python basic concepts\r\n - Scopes\r\n - Namespaces\r\n - Closures\r\n - 2/ Implement and understand a basic decorator\r\n - 3/ Advanced decorators\r\n - Generators of decorators\r\n - Classes as decorators\r\n - Decoration of classes\r\n\r\nRequirements:\r\n\r\n - **Intermediate Python level**. Attendees must have previous knowledge of Python and should be somehow familiar with the notation @ to decorate a function or class.\r\n - Bring **your own laptop** with Python installed and ready to solve some coding exercises.\r\n\r\nPS: I also submitted a talk proposal which partially covers the first part of the training: [https://ep2015.europython.eu/conference/talks/decorators-demystified][1]\r\n\r\n [1]: https://ep2015.europython.eu/conference/talks/decorators-demystified\r\n", "", ""], "have_tickets": [true], "title": "Python decorators in detail", "speakers": "Pablo Enfedaque", "track_title": "", "timerange": "2015-07-24 11:00:00, 2015-07-24 13:30:00", "duration": 150, "tags": ["namespaces", "training", "python", "scopes", "decorators", "closures"]}, "373": {"id": 373, "abstracts": ["New to Python? Come along to the beginners' day! It\u2019s designed to give you a crash-course in Python, and the ecosystem around it, to give you the context you need to get the most out of EuroPython. Suitable for total beginners, as well as people who already know a little programming. Bring your laptop, as a large part of the day will be devoted to learning Python on your own PC.\r\n\r\n*This session will be presented in English (although a few of the coaches do speak basic Spanish, French and Italian). Note there are also some Spanish-language Beginner sessions scheduled for day 2 of the conference.*\r\n\r\n**Morning:**\r\n\r\n - 11AM-11:30AM Intro to Python and programming.\r\n - 11:30AM-1PM Self-directed learning with coaches. Tutorials provided for beginner and experienced programmers.\r\n - 1PM-1:30PM Q&A and recap\r\n\r\n**Afternoon:**\r\n\r\n - 3:15PM: Intro to the Python ecosystem: some topics and bits of jargon that are bound to come up this week: open source, free software, github, packages, pip, pypi, scientific computing, scipy, numpy, pandas, ipython notebook, web frameworks, django, flask, asyncio, the BDFL, the Zen of Python, etc etc. What are the tools, areas of interest, in-jokes, people of note.\r\n - 4:30PM: More self-directed learning with coaches.\r\n - 5PM: \"How to get the best out of the conference\" session -- suggested talks, tips on asking questions, FAQs like what are open spaces / sprints / birds-of-a-feather sessions, etc.\r\n\r\nWe need to get an idea of numbers for this session, so if you are interested in attending, please drop a quick email to obeythetestinggoat@gmail.com\r\n\r\n"], "have_tickets": [true], "title": "Beginners' Day", "speakers": "Harry Percival", "track_title": "Room B Terrace", "timerange": "2015-07-20 11:00:00, 2015-07-20 13:30:00", "duration": 180, "tags": ["python", "introduction"]}, "243": {"id": 243, "abstracts": ["Learn how to use docker-compose and docker to create a development environment that you can use to mimic your production environment. \r\n\r\nLearn how to:\r\n\r\n* create a Dockerfile\r\n * What is a Docker File\r\n * How to utilize Docker's caching to optimize docker build\r\n * How to abstract common components to other docker images\r\n* use Docker-Hub\r\n * create auto builds\r\n * use web-hooks\r\n* use docker-compose\r\n * When to use a prebuilt image vs building from scratch\r\n* deploy your container to a VM\r\n\r\nClass will be mostly informational. BUT you are encouraged to play along. \r\n\r\nHardware requirements: \r\n\r\n* Computer that can run VirtualBox. \r\n\r\nSoftware requirements:\r\n\r\n* Docker CLI 1.6+\r\n* Docker Machine (latest)\r\n* Docker Compose 1.2+\r\n\r\nIf you plan on playing along, please make sure that you have all these installed already. "], "have_tickets": [true], "title": "Intro to Web Development with Docker", "speakers": "Nick Lang", "track_title": "", "timerange": "2015-07-20 11:00:00, 2015-07-20 13:30:00", "duration": 150, "tags": ["web", "development-process", "docker", "Development"]}, "376": {"id": 376, "abstracts": ["Workshop time: 2:00pm - 7:00pm\r\n\r\nThis is a half-day version of the SRE Classroom event that has been run successfully at Google offices and conferences around the world. We expect this event to appeal to senior and experienced engineers.\r\n\r\nThe workshop problem will be a real-world large-scale engineering problem that requires some distributed-systems knowhow to tackle. Attendees will work in groups with Googlers on the problem, trying to come up with:\r\n\r\n - A high-level design that scales horizontally\r\n - Initial SLIs, SLOs\r\n - Estimates for hardware required to run each component\r\n - If time permits, monitoring design and disaster testing scenarios\r\n\r\nAttendees will be provided with a workbook that guides them through tackling a problem like this, with some worked examples, so junior attendees should be able to make progress and learn too. \r\n\r\nSign-up here (seats are limited.)", "", ""], "have_tickets": [true], "title": "SRE Classroom", "speakers": "Sidnei da Silva", "track_title": "Room B Terrace", "timerange": "2015-07-21 14:00:00, 2015-07-21 17:00:00", "duration": 180, "tags": ["cloud", "google", "class"]}, "105": {"id": 105, "abstracts": ["Become a data wrangler with Python! This course will introduce you to the core concepts of data analysis with Python. We'll cover libraries that allow you to easily clean and set up your initial dataset, importing data from all different file types and standards. We'll introduce some basic libraries to help with statistics and analysis and then cover how to document and explore your findings. \r\n\r\nIt's assumed you have a working understanding of Python and it's data types and structures, and that you've used and understand Python for basic scripting. It's also assumed you haven't done much in terms of data analysis, and you'd like to learn more. If this is you, welcome! ", "", ""], "have_tickets": [true], "title": "Introduction to Data Analysis", "speakers": "Katharine Jarmul", "track_title": "", "timerange": "2015-07-23 11:00:00, 2015-07-23 13:30:00", "duration": 150, "tags": ["Beginners", "scraping", "data-science", "analytics", "Database", "e-gov", "pandas", "api", "oauth2", "data", "Coding"]}, "130": {"id": 130, "abstracts": ["Transducers \u2013 a portmanteau of \u2018transform reducers\u2019 \u2013 are a new functional programming concept, which were first introduced into the Clojure programming language. Although transducers are actually pretty straightforward in retrospect, wrapping your brain around them can be challenging. \r\n\r\nTransducers allow us to fuse multiple data processing operations together so they can be applied in a single pass over a data series \u2013 similar to how Python generator functions allow us to process iterable series. However, unlike generator functions they are completely decoupled from the data series abstraction and can be used on eager sequences, lazy iterables, coroutine-based push events and events such as those modelled by Reactive Extensions for Python (RxPy). \r\n\r\nIn this workshop, we introduce transducers by implementing them from scratch in Python 3. We\u2019ll start with the familiar staples of functional programming, map(), filter() and reduce(), and derive transducers from first principles. We\u2019ll work towards a set of general tools which works with eager collections, lazy \u2018pull\u2019 sequences, and coroutine \u2018push\u2019 event streams and RxPy. Along the way we\u2019ll cover stateful transducers and transducer composition, demonstrating that transducers are both more general, and more fundamental, than the functional programming tools baked into Python and many other languages.\r\n\r\nThere are no prerequisites for this workshop as we stick to core Python 3 language features although an enthusiasm for a functional programming style will be sure to help attendees get the most out of this session.", "", ""], "have_tickets": [true], "title": "Functional Programming with Transducers in Python", "speakers": "Austin Bingham", "track_title": "Room A4", "timerange": "2015-07-23 14:30:00, 2015-07-23 17:30:00", "duration": 180, "tags": ["python", "functional", "fun", "Functional Programming"]}, "331": {"id": 331, "abstracts": ["It is very hard to be a scientist without knowing how to write code, \r\nand nowadays **Python** is probably the programming language of \r\nchoice in many research fields.\r\nThis is mainly because the Python ecosystem includes a lot of tools and libraries \r\nfor many research tasks: `pandas` for *data analysis* , \r\n`networkx` for *social network analysis*, `nltk` for *natural language processing*,\r\n`scikit-learn` for *machine learning*, and so on.\r\n\r\nMost of these libraries relies (or are built on top of) `numpy`.\r\nTherefore, `numpy` is a crucial component of the common Python\r\nstack used for numerical analysis and data science.\r\n\r\nOn the one hand, NumPy code tends to be much cleaner (and faster) than \r\n\"straight\" Python code that tries to accomplish the same task. \r\nMoreover, the underlying algorithms have \r\nbeen designed with high performance in mind.\r\n\r\nThis training will be organised in two parts: the first part is \r\nintended to provide most of the essential concepts \r\nneeded to become confident with NumPy data structures and functions.\r\n\r\nIn the second part, some examples of data analysis libraries and code\r\nwill be presented, where NumPy takes a central role.\r\n\r\nHere is a list of software used to develop and test the code examples presented\r\nduring the training:\r\n\r\n* Python 3.x (2.x would work as well)\r\n* iPython 2.3+ (with **notebook support**): `pip install ipython[notebook]`\r\n* numpy 1.9+\r\n* scipy 0.14+\r\n* scikit-learn 0.15+\r\n* pandas 0.8+\r\n\r\nThe training is meant to be mostly introductory, thus it is perfectly suited\r\nfor **beginners**. However, a good proficiency in Python programming is (at least)\r\nrequired."], "have_tickets": [true], "title": "Numpy arrays: the weapons of a data scientist", "speakers": "Valerio Maggio", "track_title": "", "timerange": "2015-07-21 11:00:00, 2015-07-21 13:30:00", "duration": 150, "tags": ["scipy", "numpy", "data-science", "analytics"]}, "175": {"id": 175, "abstracts": ["The py.test tool presents a rapid and simple way to write tests for your Python code. This training gives a quick introduction with exercises into some distinguishing features. We'll do exercises where we get existing non-pytest test suites to run with pytest and discuss migration strategies. We'll finish with discussing topics and questions of participants related to their own test suites and usages.\r\n\r\nThis is the planned outline:\r\n\r\n- (30 minutes) pytest feature walkthrough: automatic test discovery, assert\r\n statement, modular parametrizable fixtures, 150 plugins\r\n\r\n- (60 minutes) pytest fixture mechanism: dependency injection, declaring\r\n and using function/module/session scoped fixtures, using fixtures\r\n from fixture functions, parametrizing fixtures. Exercises.\r\n\r\n- (30 minutes): running nose/unittest/trial/Django suites with pytest.\r\n Discussing advantages and limitations. Exercise with a select\r\n existing real-life open source project.\r\n\r\n- (30 minutes): Strategies for a) migrating to pytest b) using\r\n \"autouse\" fixtures in conjunction with XUnit-based\r\n setup/tearodwn methods. Exercise.\r\n\r\n- (30 minutes): open space for questions and interactively solving\r\n pytest/unittest integration problems on real-life problems\r\n as time permits.\r\n", "", ""], "have_tickets": [true], "title": "pytest - simple, rapid and fun testing with Python", "speakers": "Florian Bruhin", "track_title": "", "timerange": "2015-07-20 14:30:00, 2015-07-20 17:30:00", "duration": 180, "tags": ["automation", "test", "pytest"]}, "120": {"id": 120, "abstracts": ["[OpenStack][1] es un conjunto de herramientas de software que permiten la construcci\u00f3n y mantenimiento de plataformas de _cloud computing_ para nubes p\u00fablicas y privadas. Permite a sus usuarios desplegar m\u00e1quinas virtuales y otras instancias que manejan diferentes tareas para la administraci\u00f3n de un entorno de _cloud computing_ _on the fly_. Considerando la complejidad de la arquitectura del c\u00f3digo que hace de esto una realidad, establecer el entorno de desarrollo y comenzar a contribuir puede ser una tarea agobiante.\r\n\r\nPero empezar a ser un contribuyente no deber\u00eda ser un proceso dif\u00edcil si comienzas con el pie derecho. Hay algunos detalles que, si los pudieras conocer de antemano, har\u00edan que dar tus primeros pasos no sea una tarea tan complicada.\r\n\r\nEn esta presentaci\u00f3n daremos una explicaci\u00f3n breve de cu\u00e1les son las herramientas usadas por la comunidad de OpenStack y c\u00f3mo debes configurarlas para empezar a contribuir. Adem\u00e1s cubriremos c\u00f3mo el proceso de desarrollo funciona, incluyendo c\u00f3mo encontrar y arreglar un _bug_, c\u00f3mo hacer una nueva propuesta de desarrollo, c\u00f3mo probar tus cambios antes de enviar un parche y c\u00f3mo funciona el proceso de revisi\u00f3n.\r\n\r\nHaremos todo esto usando un _script_ que automatiza el despliege del entorno de desarrollo llamado [DevStack][2]. Mientras que el _script_ es ejecutado y descarga/configura todas las dependencias, explicaremos cada uno de los pasos para empezar a contribuir. Finalmente, con el entorno de desarrollo listo, repasaremos las listas de bugs y empezaremos a analizar el c\u00f3digo.\r\n\r\nPara el final del taller, tendr\u00e1s todos las herramientas y conocimientos necesarios para poder comenzar a contribuir a un proyecto de OpenStack.\r\n\r\nRequerimientos m\u00ednimos: Procesador de 1 gigahertz (GHz) o m\u00e1s 32-bit (x86) o 64-bit (x64), 4GB RAM, 10GB HD\r\nRequerimientos recomendados: Procesador de 1 gigahertz (GHz) o m\u00e1s 32-bit (x86) o 64-bit (x64), 8GB RAM, 20GB HD\r\n\r\nTambi\u00e9n aconsejamos que los participantes tengan una herramienta de virtualizaci\u00f3n preinstalada y, si es posible, que inicien una instancia con Ubuntu 14.04 LTS.\r\n\r\n [1]: https://www.openstack.org/\r\n [2]: http://docs.openstack.org/developer/devstack/", "", ""], "have_tickets": [true], "title": "Manos a la obra con OpenStack: La gu\u00eda paso a paso para comenzar a contribuir a OpenStack", "speakers": "Victoria Martinez de la Cruz", "track_title": "", "timerange": "2015-07-21 14:30:00, 2015-07-21 17:30:00", "duration": 180, "tags": ["python", "cloud", "open-source", "linux", "OpenStack"]}, "202": {"id": 202, "abstracts": ["A workshop introducing participants to physical computing with Python and Raspberry Pi.\r\n\r\nLearn how to build applications with Python that interact with the physical world - using the Pi's GPIO (general purpose input & output) pins and its camera module and their respective Python libraries.\r\n\r\nWe'll start simple - flashing LEDs, using push buttons, basic use of the camera module, then introduce sensors such as infra-red motion detectors, temperature sensors and light sensors, then we'll build interactive applications (embedded apps, desktop apps and web apps) using the sensors and camera module for a variety of different purposes.\r\n\r\nEmbedded or physical computing is not just for C programmers or hardcore Linux engineers - I'll show you how to get up and running with your first physical world application and show how easy it is to control GPIOs and the camera module from the language you know and love (and can read). This will prepare you for making your own hardware project idea a reality - build a security system, a robot or a home automation system.\r\n\r\nThis workshop is well suited to beginners with a basic understanding of Python code, but is also suitable for those more experienced with Python but with little or no experience with physical computing.", "", ""], "have_tickets": [true], "title": "Explore physical computing with Python and Raspberry Pi", "speakers": "Ben Nuttall", "track_title": "", "timerange": "2015-07-23 14:30:00, 2015-07-23 17:30:00", "duration": 180, "tags": ["education", "raspberrypi"]}, "171": {"id": 171, "abstracts": ["This tutorial explores some real-world solutions to make your Python code run on different processes, possibly on different computers. \r\n\r\nTools like Pyro, Celery, Python-RQ will be discussed. Ways to run your Python code on a supercomputer/cluster using a batch job scheduler and packages for local parallelism such as multiprocessing and concurrent.futures will be touched upon as well. \r\n\r\nThe emphasis is on practical examples and lessons learned. The assumption is that the attendee is familiar with Python and basic OOP concepts.", "", ""], "have_tickets": [true], "title": "Distributed Programming With Python", "speakers": "Francesco Pierfederici", "track_title": "", "timerange": "2015-07-23 11:00:00, 2015-07-23 13:30:00", "duration": 150, "tags": ["redis", "amqp", "distributed-systems", "performance", "concurrency", "computing", "cloud", "rabbitmq", "celery"]}, "153": {"id": 153, "abstracts": ["Highly-constrained, large-dimensional, and non-linear optimizations are found at the root of most of today\u2019s forefront problems in statistics, quantitative finance, risk, operations research, materials design, and other predictive sciences. Tools for optimization, however, have not changed much in the past 40 years -- until very recently. The abundance of parallel computing resources has stimulated a shift away from using reduced models to solve statistical and predictive problems, and toward more direct methods for solving high-dimensional nonlinear optimization problems.\r\n\r\nThis tutorial will introduce modern tools for solving optimization problems -- beginning with traditional methods, and extending to solving high-dimensional non-convex optimization problems with highly nonlinear constraints. We will start by introducing the cost function, and it\u2019s use in local and global optimization. We will then address how to monitor and diagnose your optimization convergence and results, tune your optimizer, and utilize compound termination conditions. This tutorial will discuss building and applying box constraints, penalty functions, and symbolic constraints. We will then demonstrate methods to efficiently reduce search space through the use of robust optimization constraints. Real-world inverse problems can be expensive, thus we will show how to enable your optimization to seamlessly leverage parallel computing. Large-scale optimizations also can greatly benefit from efficient solver restarts and the saving of state. This tutorial will cover using asynchronous computing for results caching and archiving, dynamic real-time optimization, and dimensional reduction. Next we will discuss new optimization methods that leverage parallel computing to perform blazingly-fast global optimizations and n-dimensional global searches. Finally, we will close with applications of global optimization in statistics and quantitative finance.\r\n\r\nThe audience need not be an expert in optimization, but should have interest in solving hard real-world optimization problems. We will introduce the [_mystic_][1] optimization framework -- then begin with a walk through some introductory optimizations, learning how to build confidence in understanding your results. By the end of the tutorial, participants will have working knowledge of how to use modern constrained optimization tools, how to enable their solvers to leverage high-performance parallel computing, and how to utilize legacy data and surrogate models in statistical and predictive risk modeling.\r\n\r\n*PREREQUISITES*: This tutorial will assume attendees have basic knowledge of _python_ and _numpy_, and is intended for scientific developers who are interested in utilizing optimization to solve real-world problems in statistics, quantitative finance, and predictive sciences. The tutorial will require _python_, _numpy_, and _mystic_ to be installed, and optionally installs of _matplotlib_, _scipy_, _pathos_, and _klepto_. All packages can be installed under _Anaconda_ or _Canopy_, or with _setuptools_ or _pip_.\r\n\r\n [1]: https://github.com/uqfoundation\r\n", "Highly-constrained, large-dimensional, and non-linear optimizations are found at the root of most of today\u2019s forefront problems in statistics, quantitative finance, risk, operations research, materials design, and other predictive sciences. Tools for optimization, however, have not changed much in the past 40 years -- until very recently. The abundance of parallel computing resources has stimulated a shift away from using reduced models to solve statistical and predictive problems, and toward more direct methods for solving high-dimensional nonlinear optimization problems.\r\n\r\nThis tutorial will introduce modern tools for solving optimization problems -- beginning with traditional methods, and extending to solving high-dimensional non-convex optimization problems with highly nonlinear constraints. We will start by introducing the cost function, and it\u2019s use in local and global optimization. We will then address how to monitor and diagnose your optimization convergence and results, tune your optimizer, and utilize compound termination conditions. This tutorial will discuss building and applying box constraints, penalty functions, and symbolic constraints. We will then demonstrate methods to efficiently reduce search space through the use of robust optimization constraints. Real-world inverse problems can be expensive, thus we will show how to enable your optimization to seamlessly leverage parallel computing. Large-scale optimizations also can greatly benefit from efficient solver restarts and the saving of state. This tutorial will cover using asynchronous computing for results caching and archiving, dynamic real-time optimization, and dimensional reduction. Next we will discuss new optimization methods that leverage parallel computing to perform blazingly-fast global optimizations and n-dimensional global searches. Finally, we will close with applications of global optimization in statistics and quantitative finance.\r\n\r\nThe audience need not be an expert in optimization, but should have interest in solving hard real-world optimization problems. We will introduce the [_mystic_][1] optimization framework -- then begin with a walk through some introductory optimizations, learning how to build confidence in understanding your results. By the end of the tutorial, participants will have working knowledge of how to use modern constrained optimization tools, how to enable their solvers to leverage high-performance parallel computing, and how to utilize legacy data and surrogate models in statistical and predictive risk modeling.\r\n\r\nintroduction to optimization (30 min)\r\n-------------------------------------\r\n - the cost function\r\n - local and global optimization\r\n - monitoring and diagnosing convergence and optimization results\r\n - solver tuning and compound termination conditions\r\n - Exercise(s)\r\n\r\npenalty functions and constraints (30 min)\r\n------------------------------------------\r\n - box constraints\r\n - applying penalty functions\r\n - reducing search space with constraints\r\n - applying symbolic constraints\r\n - Exercise(s)\r\n\r\nleverage asynchronous and parallel computing (30 min)\r\n-----------------------------------------------------\r\n - parallel function evaluations and solver iterations \r\n - solver restarts and saving state\r\n - dynamic real-time optimization\r\n - automated dimensional reduction\r\n - Exercise(s)\r\n\r\nensemble optimization and global searches (30 min)\r\n--------------------------------------------------\r\n - blazingly-fast global optimization\r\n - using global search to find all minima, maxima, and turning points\r\n - building a surrogate model through optimal surface interpolation\r\n - Exercise(s)\r\n\r\noptimization in parameter sensitivity, statistics, and risk modeling (30 min)\r\n-----------------------------------------------------------------------------\r\n - the cost metric\r\n - statistical and probabilistic constraints\r\n - information constraints from surrogate models and legacy data\r\n - application to quantitative finance and statistics\r\n - Exercise(s)\r\n\r\nPREREQUISITES:\r\nThis tutorial will assume attendees have basic knowledge of _python_ and _numpy_, and is intended for scientific developers who are interested in utilizing optimization to solve real-world problems in statistics, quantitative finance, and predictive sciences. The tutorial will require _python_, _numpy_, and _mystic_ to be installed, and optionally installs of _matplotlib_, _scipy_, _pathos_, and _klepto_. All packages can be installed under _Anaconda_ or _Canopy_, or with _setuptools_ or _pip_.\r\n\r\n [1]: https://github.com/uqfoundation", ""], "have_tickets": [true], "title": "Modern optimization methods in Python", "speakers": "Michael McKerns", "track_title": "", "timerange": "2015-07-20 11:00:00, 2015-07-20 13:30:00", "duration": 150, "tags": ["optimization", "predictions", "framework", "data-science", "analytics"]}, "374": {"id": 374, "abstracts": ["Django Girls is a free, one-day workshop for women who are new to programming. During the workshop, our participants will learn how to build their first Web application using Python, Django, HTML, and CSS. Participants were selected in advance for the workshop, and our coaches are all EuroPython attendees who volunteered to mentor the participants through the process.\r\n\r\nThis year's workshop is organized by [Mikey Ariel][1] and [Petr Viktorin][2], with support from the [Django Girls][3] global organization. Since the first Django Girls workshop was held at EuroPython 2014, this workshop also marks our first birthday! After the workshop, we will operate a booth in collaboration with PyLadiesES throughout the conference, so come say hello!\r\n\r\nOfficial website: [http://djangogirls.org/europython2015/][4]\r\n\r\nTwitter: [@DjangoGirlsEP15][5]\r\n\r\n [1]: https://twitter.com/thatdocslady\r\n [2]: https://twitter.com/EnCuKou\r\n [3]: http://djangogirls.org/\r\n [4]: http://djangogirls.org/europython2015/\r\n [5]: https://twitter.com/DjangoGirlsEP15\r\n"], "have_tickets": [true], "title": "Django Girls Workshop", "speakers": "Mikey Ariel", "track_title": "Room C1", "timerange": "2015-07-20 11:00:00, 2015-07-20 13:30:00", "duration": 180, "tags": ["workshop", "django-girls"]}, "166": {"id": 166, "abstracts": ["This training is about how to keep all your software stack under control using mainly Python technologies.\r\n\r\nWe will run some full stack deployment examples using things like Pyramid, Buildout, Ansible and Docker. \r\n\r\nWe will try to apply the Zen of Python into our DevOps infrastructure in order to make happy all stakeholders in your company/organization.\r\n\r\nThe session is divided in two sections, the first one we will cover full stack development strategies, and we will discuss subjects like design patterns, code organization and web servers, among others. We will compare how other \u201cde facto\u201d or \u201centerprise\u201d technologies in the industry are doing. \r\n\r\nIn the second part we will see how to prepare your application and power your deployments using Docker containers (www.docker.com) and Buildout (www.buildout.org).\r\n\r\nEach part of the training session is accompanied by runnable source code and documentation.", "Este curso es acerca de como mantener tu stack de software bajo control usando principalmente tecnolog\u00edas Python.\r\n\r\nVamos a ejecutar algunos ejemplos completos de c\u00f3digo que abarquen todas las capas de desarrollo e instalaci\u00f3n usando cosas como Pyramid, Buildout, Ansible y Docker.\r\n\r\nVamos a tratar de aplicar de aplicar el Zen de Python en nuestra infraestructura DevOps con el fin the hacer felices a todos los involucrados en tu empresa/organizaci\u00f3n.\r\n\r\nLa sesi\u00f3n se divide en dos secciones, la primera abarcar\u00e1 estrategias de desarrollo 'full stack' y discuteremos temas como patrones de dise\u00f1o, organizaci\u00f3n de c\u00f3digo, y servidores web, entre otros. Vamos a comparar como otras tecnolog\u00edas \"de facto\" o \"empresariales\" lo est\u00e1n haciendo en la industria.\r\n\r\nEn la segunda parte vamos a ver como preparar tu aplicaci\u00f3n y tus instalaciones usando contenedores docker (www.docker.com) y buildout (www.buildout.org)\r\n\r\nCada parte del entrenamiento es acompa\u00f1ada por c\u00f3digo ejecutable y documentaci\u00f3n.", ""], "have_tickets": [true], "title": "Full Stack + DevOps using Pyramid, Buildout and Docker", "speakers": "Alvaro Aguirre", "track_title": "", "timerange": "2015-07-22 14:30:00, 2015-07-22 17:30:00", "duration": 180, "tags": ["redis", "ansible", "Buildout", "Virtualization", "Enterprise", "DevOps", "docker", "SQLAlchemy", "fabric", "elasticsearch", "Pyramid"]}}, "Keynotes": {"365": {"id": 365, "abstracts": ["In this keynote, Ola and Ola will take you on a fantastic journey to the magical world of little Liz, who is totally enchanted by technology. The story of Liz will show that with a little bit of magic, curiosity, courage and hard work, you can defeat all the obstacles standing in your way. You'll discover with her that making big and scary things is easier when you're not doing them alone. Because sometimes, one magical spell, the helpful hand of a friend or this shiny sparkle is all it takes to make a dent in one's universe.", "", ""], "have_tickets": [true, true], "title": "Keynote: It's Dangerous To Go Alone, Take This: The Power of a Community", "speakers": "Ola Sitarska, Ola Sendecka", "track_title": "Google Room", "timerange": "2015-07-20 09:30:00, 2015-07-20 10:30:00", "duration": 60, "tags": ["diversity", "python", "community"]}, "366": {"id": 366, "abstracts": ["You've solved the issue of process-level reproducibility by packaging up\r\nyour apps and execution environments into a number of Docker containers.\r\nBut once you have a lot of containers running, you'll probably need to\r\ncoordinate them across a cluster of machines while keeping them healthy and\r\nmaking sure they can find each other. Trying to do this imperatively can\r\nquickly turn into an unmanageable mess! Wouldn't it be helpful if you could\r\ndeclare to your cluster what you want it to do, and then have the cluster\r\nassign the resources to get it done and to recover from failures and scale\r\non demand?\r\n>\r\nKubernetes (http://kubernetes.io) is an open source, cross platform cluster\r\nmanagement and container orchestration platform that simplifies the complex\r\ntasks of deploying and managing your applications in Docker containers. You\r\ndeclare a desired state, and Kubernetes does all the work needed to create\r\nand maintain it. In this talk, we\u2019ll look at the basics of Kubernetes and\r\nat how to map common applications to these concepts. This will include a\r\nhands-on demonstration and visualization of the steps involved in getting\r\nan application up and running on Kubernetes.", "", ""], "have_tickets": [true], "title": "Keynote: So, I have all these Docker containers, now what?", "speakers": "Mandy Waite", "track_title": "", "timerange": "", "duration": 60, "tags": ["python", "cloud", "docker"]}, "361": {"id": 361, "abstracts": ["This is *your* keynote! I will have some prepared remarks on the state of the Python community and Python's future directions, but first and foremost this will be an interactive Q&A session.", "", ""], "have_tickets": [true], "title": "Keynote: Python now and in the future", "speakers": "Guido van Rossum", "track_title": "Google Room", "timerange": "2015-07-21 09:30:00, 2015-07-21 10:30:00", "duration": 60, "tags": ["python"]}, "364": {"id": 364, "abstracts": ["The problem of introducing children to programming and computer science has\r\nseen growing attention in the past few years. Initiatives like Raspberry\r\nPi, Code Club, code.org, (and many more) have been created to help solve\r\nthis problem. With the introduction of a national computing curriculum in\r\nthe UK, teachers have been searching for a text based programming language\r\nto help teach computational thinking as a follow on from visual languages\r\nlike Scratch.\r\n\r\nThe educational community has been served well by Python, benefiting from\r\nits straight-forward syntax, large selection of libraries, and supportive\r\ncommunity. Education-focused summits are now a major part of most major\r\nPython Conferences. Assistance in terms of documentation and training is\r\ninvaluable, but perhaps there are technical means of improving the\r\nexperience of those using Python in education. Clearly the needs of\r\nteachers and their students are different to those of the seasoned\r\nprogrammer. Children are unlikely to come to their teachers with\r\nfrustrations about the Global Interpreter Lock! But issues such as\r\nusability of IDEs or comprehensibility of error messages are of utmost\r\nimportance.\r\n\r\nIn this keynote, Carrie Anne will discuss existing barriers to Python\r\nbecoming the premier language of choice for teaching computer science, and\r\nhow learning Python could be helped immensely through tooling and further\r\nsupport from the Python developer community.\r\n", "", ""], "have_tickets": [true], "title": "Keynote: Designed for Education: A Python Solution", "speakers": "Carrie Anne Philbin", "track_title": "Google Room", "timerange": "2015-07-23 09:30:00, 2015-07-23 10:30:00", "duration": 60, "tags": ["python"]}, "363": {"id": 363, "abstracts": ["In this talk, I'll discuss the recent rise of immutable state concepts in languages and network protocols. And how the advent of hash-based data structures and replication strategies are shaking the client/server web service paradigm which rests on managing mutable state through http. By contrast, building on git, bittorrent and other content addressed data structures provides for a more secure, efficient decentralized communication topology. There are projects, thoughts and talk to create new web standards to bring such technologies to mass deployment and fuel a new wave of decentralization. What can Python bring to the table? ", "", ""], "have_tickets": [true], "title": "Keynote: Towards a more effective, decentralized web", "speakers": "Holger Krekel", "track_title": "", "timerange": "", "duration": 60, "tags": ["python"]}}, "Other sessions": {"371": {"id": 371, "abstracts": ["Recruiting sponsors presentation.", "", ""], "have_tickets": [false], "title": "Recruiting sponsors presentation", "speakers": "To be announced", "track_title": "Google Room", "timerange": "2015-07-21 16:45:00, 2015-07-21 17:30:00", "duration": 45, "tags": ["recruiting"]}}, "Help desks": {"334": {"id": 334, "abstracts": ["Scrapy is an open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way.\r\n\r\nThis helpdesk is run by members of Scrapinghub, where Scrapy was built and designed.", "", ""], "have_tickets": [true], "title": "Scrapy Helpdesk", "speakers": "Juan Riaza", "track_title": "", "timerange": "2015-07-21 10:00:00, 2015-07-21 13:00:00", "duration": 180, "tags": ["scrapy", "python", "scraping"]}, "248": {"id": 248, "abstracts": ["For this helpdesk session, I will be here to help people on ansible, be it for beginner usage or more advanced use cases ( or even bug reporting/fixing ).\r\n\r\nPrerequisite are simply to have a computer ( if needed by the question ) and familliarity with command line on a unix system ( but the more, the better )."], "have_tickets": [true], "title": "Ansible helpdesk", "speakers": "Michael Scherer", "track_title": "", "timerange": "2015-07-23 10:00:00, 2015-07-23 13:00:00", "duration": 180, "tags": ["yaml", "Operations", "CLI", "system-administration", "open-source", "linux", "ansible"]}, "369": {"id": 369, "abstracts": ["Plone help desk", "", ""], "have_tickets": [true], "title": "Plone help desk", "speakers": "Paul Roeland", "track_title": "", "timerange": "2015-07-21 10:00:00, 2015-07-21 13:00:00", "duration": 180, "tags": ["web", "Plone", "CMS"]}, "47": {"id": 47, "abstracts": ["Bring us your broken README files, your cryptic API references, and your disheveled Wiki projects! Or, just come and chat with us about life, the universe, and everything docs. \r\n\r\nOur doc(tor)s are happy to assist with all things docs: from proofreading and restructuring content, optimizing contribution workflows, to automating API docs and L10N, implementing scalable and testable markup languages, and more! \r\n\r\nThe clinic will be staffed by:\r\n\r\n* [Mikey Ariel][1] , senior technical writer at Red Hat, community lead at Write the Docs EU, documentation evangelist, agile coach, has coffee - will travel.\r\n\r\n* [Maciej Szlosarczyk][2], senior technical writer at Symantec, Linux user in rehab, experiments with Django, Swagger, and Ember.js, can talk craft beer for hours.\r\n\r\n* [Paul Roeland][3] , open source and non-profit activist, fluent in Plone and conversational in Sphinx and Robot-screenshots, mixes a mean Martini.\r\n\r\n [1]: https://twitter.com/thatdocslady\r\n [2]: https://twitter.com/icejam_\r\n [3]: https://twitter.com/polyester"], "have_tickets": [true], "title": "The doc(tor)s are in! (Documentation Helpdesk)", "speakers": "Mikey Ariel", "track_title": "", "timerange": "2015-07-22 10:00:00, 2015-07-22 13:00:00", "duration": 180, "tags": ["Plone", "api", "autodoc", "education", "Best Practice", "agile", "documentation", "community", "communication", "django", "fun", "Sphinx", "translation", "internationalization", "i18n", "sphinxdocumentation"]}}} \ No newline at end of file diff --git a/ep2018/static/index.js b/ep2018/static/index.js deleted file mode 100644 index 746739c..0000000 --- a/ep2018/static/index.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - * jQuery scrollintoview() plugin and :scrollable selector filter - * - * Version 1.8 (14 Jul 2011) - * Requires jQuery 1.4 or newer - * - * Copyright (c) 2011 Robert Koritnik - * Licensed under the terms of the MIT license - * http://www.opensource.org/licenses/mit-license.php - */ -(function(f){var c={vertical:{x:false,y:true},horizontal:{x:true,y:false},both:{x:true,y:true},x:{x:true,y:false},y:{x:false,y:true}};var b={duration:"fast",direction:"both"};var e=/^(?:html)$/i;var g=function(k,j){j=j||(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(k,null):k.currentStyle);var i=document.defaultView&&document.defaultView.getComputedStyle?true:false;var h={top:(parseFloat(i?j.borderTopWidth:f.css(k,"borderTopWidth"))||0),left:(parseFloat(i?j.borderLeftWidth:f.css(k,"borderLeftWidth"))||0),bottom:(parseFloat(i?j.borderBottomWidth:f.css(k,"borderBottomWidth"))||0),right:(parseFloat(i?j.borderRightWidth:f.css(k,"borderRightWidth"))||0)};return{top:h.top,left:h.left,bottom:h.bottom,right:h.right,vertical:h.top+h.bottom,horizontal:h.left+h.right}};var d=function(h){var j=f(window);var i=e.test(h[0].nodeName);return{border:i?{top:0,left:0,bottom:0,right:0}:g(h[0]),scroll:{top:(i?j:h).scrollTop(),left:(i?j:h).scrollLeft()},scrollbar:{right:i?0:h.innerWidth()-h[0].clientWidth,bottom:i?0:h.innerHeight()-h[0].clientHeight},rect:(function(){var k=h[0].getBoundingClientRect();return{top:i?0:k.top,left:i?0:k.left,bottom:i?h[0].clientHeight:k.bottom,right:i?h[0].clientWidth:k.right}})()}};f.fn.extend({scrollintoview:function(j){j=f.extend({},b,j);j.direction=c[typeof(j.direction)==="string"&&j.direction.toLowerCase()]||c.both;var n="";if(j.direction.x===true){n="horizontal"}if(j.direction.y===true){n=n?"both":"vertical"}var l=this.eq(0);var i=l.closest(":scrollable("+n+")");if(i.length>0){i=i.eq(0);var m={e:d(l),s:d(i)};var h={top:m.e.rect.top-(m.s.rect.top+m.s.border.top),bottom:m.s.rect.bottom-m.s.border.bottom-m.s.scrollbar.bottom-m.e.rect.bottom,left:m.e.rect.left-(m.s.rect.left+m.s.border.left),right:m.s.rect.right-m.s.border.right-m.s.scrollbar.right-m.e.rect.right};var k={};if(j.direction.y===true){if(h.top<0){k.scrollTop=m.s.scroll.top+h.top}else{if(h.top>0&&h.bottom<0){k.scrollTop=m.s.scroll.top+Math.min(h.top,-h.bottom)}}}if(j.direction.x===true){if(h.left<0){k.scrollLeft=m.s.scroll.left+h.left}else{if(h.left>0&&h.right<0){k.scrollLeft=m.s.scroll.left+Math.min(h.left,-h.right)}}}if(!f.isEmptyObject(k)){if(e.test(i[0].nodeName)){i=f("html,body")}i.animate(k,j.duration).eq(0).queue(function(o){f.isFunction(j.complete)&&j.complete.call(i[0]);o()})}else{f.isFunction(j.complete)&&j.complete.call(i[0])}}return this}});var a={auto:true,scroll:true,visible:false,hidden:false};f.extend(f.expr[":"],{scrollable:function(k,i,n,h){var m=c[typeof(n[3])==="string"&&n[3].toLowerCase()]||c.both;var l=(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(k,null):k.currentStyle);var o={x:a[l.overflowX.toLowerCase()]||false,y:a[l.overflowY.toLowerCase()]||false,isRoot:e.test(k.nodeName)};if(!o.x&&!o.y&&!o.isRoot){return false}var j={height:{scroll:k.scrollHeight,client:k.clientHeight},width:{scroll:k.scrollWidth,client:k.clientWidth},scrollableX:function(){return(o.x||o.isRoot)&&this.width.scroll>this.width.client},scrollableY:function(){return(o.y||o.isRoot)&&this.height.scroll>this.height.client}};return m.y&&j.scrollableY()||m.x&&j.scrollableX()}})})(jQuery); - -$(function() { - var current = 0; - - var $sponsors = $('footer ul.sponsors li'); - - window.setInterval(function() { - if (current < $sponsors.length) { - current += 1; - } else { - current = 0; - } - - $sponsors.eq(current).scrollintoview({ - duration: 500, - direction: "vertical", - }); - }, 4000); -}); diff --git a/ep2018/static/jquery-2.1.4.min.js b/ep2018/static/jquery-2.1.4.min.js deleted file mode 100644 index 49990d6..0000000 --- a/ep2018/static/jquery-2.1.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("