Skip to content

Instantly share code, notes, and snippets.

@paulochf
Last active August 26, 2016 13:22
Show Gist options
  • Save paulochf/49c56a2f8fd7896163f1745ae96b6069 to your computer and use it in GitHub Desktop.
Save paulochf/49c56a2f8fd7896163f1745ae96b6069 to your computer and use it in GitHub Desktop.
Python presentation
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"![](https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/python.jpg)\n",
"\n",
"# Workshop"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## About\n",
"\n",
"![](https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/pros_cons.jpg)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Pros\n",
"\n",
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/not_bad.jpg\">\n",
"\n",
"- dynamic typed $\\implies$ less verbose\n",
" - can do type checking if you want [(new in 3.5.2)](https://docs.python.org/3/library/typing.html)\n",
"\n",
"- easy to read\n",
"<br>$\\implies$ easier to learn\n",
"<br>$\\implies$ perfect for scripting\n",
"\n",
"- multiparadigm\n",
" - procedural\n",
" - object oriented\n",
" - functional\n",
"\n",
"- [language bindings/implementations](https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages)\n",
" - Java :: [Jython](http://www.jython.org/)\n",
" - C :: [CPython](https://docs.python.org/3.5/extending/extending.html), [PyPy](http://pypy.org)\n",
" - C# :: [IronPython](http://ironpython.net/)\n",
" - R :: [rpy2](http://rpy2.bitbucket.org/)\n",
" - Scala :: inside [Apache Spark](http://spark.apache.org/docs/latest/api/python/index.html)\n",
" - Javascript :: [browser scripts!](https://github.com/brython-dev/brython) (*I got surprised heh*)\n",
" \n",
"- [many batteries included](https://docs.python.org/3/library/index.html)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Cons\n",
"\n",
"- Global interpreter lock (GIL)\n",
"<br>from [GIL @ Wikipedia](https://en.wikipedia.org/wiki/Global_interpreter_lock)\n",
"> a mechanism used in computer language interpreters to synchronize the execution of threads\n",
"> so that only one native thread can execute at a time.\n",
"<br>*$\\implies$ natively single-threaded*\n",
"\n",
" - **BUT** you can do explicitly using multiprocess/multithreaded libs\n",
" - use another implementation (Jython, PyPy)\n",
" - wait for [The Gilectomy](https://www.youtube.com/watch?v=P3AyI_u66Bw)\n",
"\n",
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/jackie.jpg\">"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Adoption - 1/3\n",
"\n",
"- from [this Google query](https://www.google.com.br/#q=programming+language+popularity)\n",
"<br>#2 @ http://pypl.github.io/PYPL.html\n",
"<br>#3 @ http://githut.info/\n",
"<br>#4 @ http://www.tiobe.com/tiobe-index/\n",
"<br>$\\implies \\infty$ [libraries](https://github.com/vinta/awesome-python)!\n",
"\n",
"<br>\n",
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/adoption.jpg\">\n",
"\n",
"- API/SDK\n",
" - Google\n",
" - Amazon\n",
" - Facebook\n",
" - [Apple bought Turi/Dato](https://techcrunch.com/2016/08/05/apple-acquires-turi-a-machine-learning-company/), so wait for it"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Adoption - 2/3\n",
"\n",
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/wow.jpeg\">\n",
"\n",
"- tech usage\n",
" - Youtube\n",
" - [Netflix](http://techblog.netflix.com/2013/03/python-at-netflix.html)\n",
" - Dropbox\n",
" - Google\n",
" - SurveyMonkey\n",
" - Quora\n",
" - Bitly\n",
" - Reddit\n",
" - [Bank of America](https://www.quora.com/When-why-and-to-what-extent-did-Bank-of-America-rebuild-its-entire-tech-stack-with-Python)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Adoption - 3/3\n",
"\n",
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/much_wow.jpg\">\n",
"\n",
"- [Python websites](https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/) in [Django](https://www.djangoproject.com/)\n",
" \n",
" - Spotify\n",
" - Instagram\n",
" - Pinterest\n",
" - Disqus\n",
" - Washington Post\n",
" - The Guardian\n",
" - NASA\n",
" - Bitbucket\n",
" - Rdio\n",
" - edX\n",
" - National Geographic\n",
" \n",
"refs:\n",
"[[1]](https://www.quora.com/What-are-some-well-known-sites-running-on-Django)\n",
"[[2]](https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Libraries\n",
"\n",
"<img src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/xkcd.png\">\n",
"\n",
"https://xkcd.com/353/"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### web development\n",
"\n",
"**ORM**\n",
" <br>Django, Flask, Pyramid, Bottle, Tornado\n",
"\n",
"**Templating**\n",
" <br>Jinja, Genshi\n",
"\n",
"**Process Queues**\n",
" <br>celery"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### devops & sec\n",
"\n",
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/wat.jpg\">\n",
"\n",
"**Pentesting**\n",
" <br>SQLMap, w3af \n",
"\n",
"**DevOps**\n",
" <br>Ansible, Salt, Docker, Fabric, boto\n",
"\n",
"**Command Line Interface**\n",
" <br>aws-cli, mycli, pgcli\n",
" \n",
"**Downloader**\n",
" <br>s3cmd, s4cmd, youtube-dl, coursera-dl, edx-dl"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### math & data\n",
"\n",
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/gigawats.jpg\">\n",
"\n",
"**Excel Macroing!**\n",
" <br>[xlwings](https://www.xlwings.org)\n",
" <br>*[comparison](https://newtonexcelbach.wordpress.com/2013/09/24/python-for-vba-users-1/)*,\n",
" *a [not so complete how-to](http://pbpython.com/xlwings-pandas-excel.html)* and\n",
" *[this example with custom graphs](https://plot.ly/python/xlwings/)*\n",
"\n",
"**Crawling**\n",
" <br>scrapy\n",
" \n",
"**Math**\n",
" <br>numpy, scipy\n",
"\n",
"**Data Converter**\n",
" <br>dataconverters, odo\n",
" \n",
"**Data Processing**\n",
" <br>pandas\n",
" \n",
"**Data Pipeline**\n",
" <br>Luigi :: Spotify\n",
" <br>Airflow :: AirBnB\n",
" <br>Pinball :: Pinterest\n",
"\n",
"**Data Viz**\n",
" <br>matplotlib, ggplot, bokeh, plot"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/waterfall.jpg\">\n",
"\n",
"**Image**\n",
"\n",
"**Audio**\n",
"\n",
"**Video**\n",
"\n",
"<img style=\"float: right;\" src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/watson.png\">\n",
"\n",
"**Geolocation**\n",
"\n",
"**Testing**\n",
"\n",
"<br><br><br><br><br><br><br><br>\n",
"[reference](https://github.com/vinta/awesome-python)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## *Some* code\n",
"\n",
"[Part 1](recitation1.ipynb)\n",
"\n",
"[Part 2](recitation2.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"<img src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/whoa.jpg\">"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"<img src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/try.jpg\">\n",
"\n",
"https://www.hackerrank.com/domains"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## References"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Readings\n",
"\n",
"http://radar.oreilly.com/2015/04/five-reasons-why-python-is-a-popular-teaching-language.html\n",
"<br>5 reasons why Python is a popular teaching language\n",
"\n",
"https://www.codefellows.org/blog/5-reasons-why-python-is-powerful-enough-for-google\n",
"<br>5 Reasons why Python is Powerful Enough for Google\n",
"\n",
"https://www.codeschool.com/blog/2016/01/27/why-python/\n",
"<br>Why Python\n",
"\n",
"http://www.kidstechnews.com/teach-kids-python/\n",
"<br>Why Teach Your Kids Python?\n",
"\n",
"https://www.paypal-engineering.com/2014/12/10/10-myths-of-enterprise-python/\n",
"<br>10 Myths of Enterprise Python"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Tutorials\n",
"\n",
"https://github.com/yoavram/CS1001.py\n",
"<br>Extended Introduction to Computer Science with Python from Tel-Aviv University\n",
"<br>*Used this one because it's __Python 3__ and dummy friendly*\n",
"\n",
"http://currents.soest.hawaii.edu/ocn760_4\n",
"<br>Oceanographic Data Analysis With Open Source Tools from University of Hawaii\n",
"<br>*Another class notes, little more advanced and faster too*\n",
"\n",
"https://github.com/rajathkumarmp/Python-Lectures\n",
"<br>RNS Institute of Technology\n",
"\n",
"http://ricardoduarte.github.io/python-for-developers/\n",
"<br>Python ebook written by Ricardo Duarte\n",
"\n",
"https://automatetheboringstuff.com\n",
"<br>Practical programming for total beginners\n",
"<br>*Excel thing in chapter 12*"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Listing\n",
"\n",
"https://github.com/bayandin/awesome-awesomeness\n",
"<br>Awesome Awesomeness\n",
"<br>list about many lists\n",
"\n",
"https://github.com/vinta/awesome-python\n",
"<br>https://github.com/uhub/awesome-python\n",
"<br>https://python.libhunt.com/\n",
"<br>lists of many libraries for many purposes\n",
"\n",
"https://github.com/Junnplus/awesome-python-books\n",
"<br>list of many Python books"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Python MOOCs/Tutorials :: for beginners, dummies...\n",
"\n",
"https://www.codecademy.com/pt-BR/learn/python\n",
"<br>Code Academy Course\n",
"\n",
"http://codecombat.com/\n",
"<br>Online battle game where you code your characters movements\n",
"<br>*used on my fiancée (she's a lawyer) and was working so far*\n",
"\n",
"https://www.coursera.org/specializations/python\n",
"<br>Duke University Coursera specialization\n",
"<br>_Yes, they're **free**, just look for each course title in Google, then enroll_\n",
"\n",
"https://www.mooc-list.com/tags/python?static=true\n",
"<br>list of MOOCs given in Python\n",
"<br>*I didn't check entirely, but seemed OK*"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Questions?\n",
"\n",
"<img src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/bear.jpg\">"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Thanks!\n",
"\n",
"<img src=\"https://gist.githubusercontent.com/paulochf/49c56a2f8fd7896163f1745ae96b6069/raw/4b28762205173096d72bffb3f8e433a7acfc20e6/thanks.jpg\">"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment