<div dir="ltr"><div><div dir="ltr"><div>Portland Python,</div><div><br></div><div>Here's the link to the document for the Q&A session that I did at the Portland Python Meetup last Wednesday (6/25/14), as well as for the meetups on 5/28/14, 4/10/12, 1/10/12, 11/8/11</div>
<div>  <a href="http://bit.ly/pdxqa">http://bit.ly/pdxqa</a></div><div><br></div><div>Here's the content of that document:</div><div><br></div><div>Ask The Audience</div><div>AKA “Reverse Q&A”</div><div>Portland Python Meetup, Wed, Jun 25, 2014</div>
<div>Rob Bednark, <a href="mailto:rbednark@gmail.com">rbednark@gmail.com</a>  @rbednark</div><div><br></div><div><br></div><div>Shortlink to this Google Doc: <a href="http://bit.ly/pdxqa">http://bit.ly/pdxqa</a></div><div>
Add to the document real-time</div><div>Got a problem?  Want advice?  Want to poll the audience?  Got something to share?</div><div>previous Q&A sessions below</div><div>Python-related, but tangential questions are ok</div>
<div>time signal</div><div><br></div><div><br></div><div>Wed Jun 25, 2014 - 50 attendees</div><div>Q: What video processing libraries are available for Python? (all kinds; discover what’s available)</div><div>A: </div><div>
OpenCV (computer vision)</div><div>MoviePy (made supercut automatically by parsing subtitle files) -- videogrep; cool animated gifs of “Frozen”</div><div><br></div><div>Q: Packaging? Distribution?  dependendencies to external libraries</div>
<div>A: </div><div>cookiecutter (how to build package; write templates)</div><div>distutils (super easy to create rpm’s) (someone has some notes on how-to: Here is the link to the lighning talk from Jan 2014: <a href="http://bit.ly/lightning-talk-on-pip-packages">http://bit.ly/lightning-talk-on-pip-packages</a>)</div>
<div>setuptools</div><div>Twitter - “pants” - build single binary that contains Python, libraries; run anywhere; creates a “pex” package; </div><div><a href="http://pythonwheels.com">pythonwheels.com</a> -- can do extensions; binary; install with pip</div>
<div><br></div><div>Q: Favorite libraries, packages, frameworks?</div><div>A: </div><div>autopep8</div><div>spyne (soap web services)</div><div>twisted (web framework)</div><div>rq (Redis job queue)</div><div>suds (client for SOAP web services)</div>
<div>doctests  (autotesting docstrings)</div><div><br></div><div>Q: celery vs rq vs ??</div><div>A: </div><div>good writeup read recently;</div><div>rabbitmq with pika (celery is under the hood by default)</div><div>celery is very abstract; hard to troubleshoot</div>
<div>0mq / zeromq</div><div><br></div><div>Q: Who do you use / like for hosting?</div><div>A: </div><div>Digital Ocean (cheap; $5/mo 20gb ssd</div><div>Linode (reliable; cut prices to match Digital Ocean; </div><div>Opus Interactive (local - Portland; colocating metal)</div>
<div>docker containers - AWS; Google Compute; easy to put app on multiple hosts; build and test container locally and then ship it to any server; like a supercharged chroot; limit memory; setup networking; Digital Ocean supports; boot2docker to run on a Mac; vagrant now supports docker; OpenStack supports; BeanStalk on AWS;</div>
<div>Heroku (expensive, but carefree; 720 free dyno hours per month; PaaS)</div><div>OpenShift - PaaS; RedHat offering; low bandwidth free option for low-traffic websites; Django 1.4</div><div>WebFaction - small company; portion of web server; do whatever you want; great support (reply within 30 mins); 260 euros / 2 yrs; 15 euros / month; </div>
<div>CloudAtCost - pay once and get virtual server; $35; $1 / month</div><div><br></div><div><br></div><div><br></div><div>Wed, May 28, 2014 - 36 attendees</div><div><br></div><div>Q: resources/tools for migrating Django versions</div>
<div>A: read the change logs;</div><div>advice: do one version at a time (unit tests help)</div><div>pyodbc has not kept up; don’t upgrade Django above 1.5 if you are using it;</div><div>1.5 => 1.6 was easy;</div><div>
depends on size of codebase -- did jump from 1.4 to 1.6  without any problems;</div><div>Sublime is great for refactoring</div><div><br></div><div>Q: tips/tricks/tools for troubleshooting excessive locking in Postgres when running massively multi-threaded Django apps</div>
<div>A: </div><div>could use lockless algorithms?</div><div>___ the locks in the same order;</div><div>Way for Django to explicitly print out locking?</div><div>logging module in Python?</div><div>locks show up in Postgres locks table; Django ORM is creating the locks;</div>
<div>Postgres 9.3.x</div><div><br></div><div>Q: What are some topics you would like to see presented at a Portland Python meetup?</div><div>A: </div><div>automation, web-scraping, data mining;</div><div>AI (machine-learning)</div>
<div>Cython</div><div>tips/hints desktop CNC (generating CNC files using gcode) (anything to do with artistic portion; dev env to take art and represent it in 3d ; sculpting using 3d printer; surface etching;   </div><div>
consider using blender?</div><div>take color image and translate to greyscale, then 3d</div><div>Maya; </div><div>do a file-to-file format conversion?</div><div>something more robust; translate vector graphics</div><div>Blender has some add-on modules (but limitations for cutting into metal)</div>
<div>game development with Python</div><div>general game playing with Python (AI) (e.g., playing Go and beating a human)</div><div>pythonista -- iOS Python app</div><div>Kivy -- cross-platform mobile dev platform using Python (build native iOS and Android apps)</div>
<div>Django 1.7 is coming out soon and that could provide another talk topic</div><div>maybe something like Django REST Framework backends with frontends on smartphones using Javascript frameworks like Cordova or angular.js.  </div>
<div>I was going to suggest that the Daniel Greenfield / Audrey Roy "Two Scoops of Django" book (2nd ed.) has some notes on moving to 1.6 but now that I'm home I see that it doesn't.  Could be a related topic (for a Presentation Night talk, that is) to take major chunks of that book (maybe a bunch of chapters), summarize the "best practices" recommendations per chapter, and then do the equivalent of your reverse Q&A to update it to current best practices.</div>
<div><br></div><div><br></div><div>Q: Anyone know ipython Notebook?  Wanna know more?</div><div>A: yes; (doing talk at OSCON, will consider doing one for Portland Python)</div><div><br></div><div>Q:What are your favorite Python libraries, packages, and frameworks?</div>
<div>A: </div><div>BeautifulSoup</div><div>Pandas</div><div>Django</div><div>configobj (alternative to configparser)</div><div>fuzzywuzzy (matches words fuzzily)</div><div>NLTK - natural lang toolkit</div><div>argparse</div>
<div>optparse</div><div>docopt</div><div>pyparse</div><div>swig - David Beazley’s Simplified Wrapper and Interface Generator</div><div>Flask</div><div>mmstats - nice for metrics (memory-mapped stats)</div><div>pdb</div><div>
<br></div><div>Q: Has anyone done any OpenGL Python?  libraries?</div><div>A: </div><div>Jason: PyOpenGL, but PyQt is better</div><div>PyGame</div><div>Pyglet</div><div><br></div><div>Q: discussion around unit testing in Ruby world; any impact on testing in Python; How to do it well and right?</div>
<div>A: </div><div>TDD good way to do most things</div><div>doctests</div><div>mocking</div><div>coverage</div><div>frameworks with mocking; </div><div>nosetest</div><div>pymox (Google project for mocking)</div><div>flexmock</div>
<div>write app to capture gameplay with millisecond accuracy and run it back through the system over and over; write API commands into log files</div><div>docker to test fabric scripts (integration test) (containers launch in milliseconds) (MySQL db preloaded in container)</div>
<div><br></div><div>Q: How many of you are currently employed and using Python most every day in your job?</div><div>A: about 11 of 36</div><div><br></div><div>Prepared questions that were never asked:</div><div>Q: What do you like about Python3?</div>
<div>Q: What kind of library / package / framework do you wish existed in Python?</div><div>Q: I’ve heard Python packaging is a pain.  Advice?  Easier ways to do it?</div><div>Q: What do you like about Python?</div><div>Q: What do you not like about Python?</div>
<div><br></div><div><br></div><div>Portland Python Meetup -- Ask the Audience / Reverse Q&A</div><div>Tue, April 10, 2012</div><div>About 51 people present</div><div><br></div><div>Q: What do you use for editing/debugging/....?</div>
<div>A:</div><div>  Vi/vim 27</div><div>  Emacs 12</div><div>  Sublime 7</div><div>  Eclipse / PyDev 5</div><div>  Visual Studio 2.5</div><div>  Pycharm 2</div><div>  Gedit 2</div><div>  Textmate 2</div><div>  MG 1</div><div>
  Ed 1</div><div><br></div><div>Q: What is your job status?</div><div>A:</div><div>  Permanent jobs 22</div><div>  Freelancing?  6</div><div>  Unemployed 6</div><div>  Students 4</div><div><br></div><div>Q: How many people are using Python 3 in production?</div>
<div>A: 1</div><div><br></div><div>Q: For the quiz question with the unicode string, how would you include a '\u' in a string that included Unicode Escapes?</div><div>A: u'\\uqwe\u0020asd'</div><div><br></div>
<div><br></div><div>Q: How many learned to program by going to school?</div><div>A: 7</div><div>   On your own?  35</div><div><br></div><div><br></div><div>Portland Python Meetup -- Ask The Audience / Reverse Q&A</div>
<div>Tue, Mar 13, 2012</div><div><br></div><div>Q: For newbie programmers, what is a good, small web development project that can be done in Python and Django?</div><div>A:</div><div>   Blog.</div><div>   CRUD (Create Read Update Delete) (address book, todo list).</div>
<div>   Message syndicator (post to Facebook and Twitter).</div><div>   Extend the polling tutorial to work as a meeting organization tool (submit ideas, ...).</div><div>   Learn how forms work.</div><div><br></div><div>Q: Python and NoSQL</div>
<div>A:</div><div>   - movement against SQL;</div><div>   - lots of Python interfaces for NoSQL db's;</div><div>   - Zope object db (zodb);</div><div>   - PostgreSQL meeting this week is about NoSQL;</div><div>   - tomorrow is CouchConf in Portland.</div>
<div><br></div><div>Q: Could someone talk more about Pyracite?</div><div>A: (Graham talked about it, but I didn't capture any notes)</div><div><br></div><div>Q: What did you find interesting at PyCon US 2012?</div><div>
A:</div><div>   Link Grammar (natural lang parser); used by Relix (python bindings); break English sentences down</div><div>   Enamel - Enthought - kit for GUI construction</div><div>   Brandon Rhodes - talk on how memory works - virtual memory issues; faulting; reference counting;</div>
<div>   Python3 transition?  Guido - going fine, will take long time, transition is happening;</div><div>   Django 1.4 coming; 1.5 will start rolling in Python3</div><div>   Guido - Google+ post - 2.7 is done (no more development)</div>
<div>   Carl Meyer - testing in Django talk; very good</div><div><br></div><div><br></div><div><br></div><div><br></div><div>Portland Python Meetup -- Ask the Audience / Reverse Q&A</div><div>Tue, Jan 10, 2012</div><div>
<br></div><div>Q: What are you using for automated web testing?</div><div>  Watir</div><div>  GhostJS</div><div>  Selenium (wrote own client using SeleniumRC) - 7</div><div>  Alfajor / Django_Alfajor - 4</div><div>  <a href="http://Sahi.co.in">Sahi.co.in</a></div>
<div>  Cram - http client in Curl; Unixy (non-web browser) - 1</div><div>  Twill - 2</div><div>  Ruby / Cucumber / Rspec / Capybara - 2</div><div>  Lettuce - 2</div><div><br></div><div>Q: Does anybody do quant (quantitative) work with Python? (scipy, ...) (stats, math optimization, ...)</div>
<div>  gmpy (arbitrary precision)</div><div>  pandas - financial, time series</div><div>  meetup group - solving academic problems (Numerical Computing group -- merged into another)</div><div>  Portland R group</div><div>
<br></div><div>Q: What is the clear winner among the Python web frameworks?</div><div>  Django</div><div>  Pyramid - new and upcoming</div><div>  Flask - ate up smaller frameworks</div><div>  CherryPy</div><div>  WSGI - roll your own</div>
<div>  Werkzeug*</div><div>  Twisted - it's own world; server protocol framework; lots persistent connections; asynch network framework</div><div><br></div><div>Q: Anyone using PyPy in production?</div><div>A: No</div>
<div><br></div><div>Q: What do you like about Python?</div><div>    - reads like psuedocode</div><div>    - __metaclass__</div><div>    - free beer at meetup</div><div>    - forced organization (whitespace; no brackets)</div>
<div>    - module distribution (eggs, ...); environments (virtualenv, pip, ...)</div><div>    - great community</div><div>    - one right way to do things</div><div>    - python community - maintainers stick around;</div>
<div><br></div><div>Q: What do you not like about Python?</div><div>    - too slow</div><div>    - GIL (Global Interpreter Lock) - not truly multi-threaded</div><div>    - live debugging tools awkward; not powerful</div><div>
    - lambdas (it's only one expression; not a real anonymous function compared to other true functional languages)</div><div>    - fragmentation of the web platforms (webpy, django, pylons, zope)</div><div>    - BDFL (led Python into the woods) (lamdbas, GIL, Python3, ...)</div>
<div>    - Python3</div><div>    - lot of lib maintainers have not chosen to go to Python3 yet</div><div>    - no case, "x if something else y"</div><div>    - variable scoping is weird</div><div>    - subclassing, overriding, super, keyword args -- lot of syntax; awkward syntax</div>
<div>    - don't like spaces preference over tabs</div><div>    - loop - repeat - extra expressions before you hit the repeat section; initial value; increment; loop/until/repeat (Databasic on Pick OS)</div><div><br></div>
<div><br></div><div>Portland Python Meetup -- Ask the Audience / Reverse Q&A</div><div>Tue, Nov 8, 2011</div><div><br></div><div>Q: What are you using for building REST API's?</div><div>  Restish - 2</div><div>  Piston - 2</div>
<div>  Tastypy - 1</div><div>  DjangoRESTframework - 1</div><div>  Werkzeug - 4</div><div>  roll your own (httplib) - 9</div><div>  Twisted - 2</div><div>  Diesel -</div><div><br></div><div>Q: What version of Python are you using in production?</div>
<div>  2.4 - 1</div><div>  2.5 - 1</div><div>  2.6 - 9</div><div>  2.7.2 - 9</div><div>  3.1 - 2</div><div><br></div><div>Q: How long before you will be using Python 3 in production?</div><div><br></div><div>Q: How many are waiting for Django to move to v3?</div>
<div>4</div><div><br></div><div>Q: Who has been paid to program in...</div><div>        Ruby? 7</div><div>        Perl? 7</div><div>        C? 14</div><div>        C++ 11</div><div>        Java? 12</div><div>        Javascript? 19</div>
<div>        PHP - 14</div><div>        XBase - 1</div><div>        Cobol - 1</div><div>        bash - 13</div><div>        C# - 7</div><div>        J - 1</div><div>        Go - 2</div><div>        Haskell - 2</div><div>        Objective C - 3</div>
<div>        ActionScript -</div><div><br></div><div><br></div><div><br></div><p>
  Rob Bednark </p><a href="http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=10013+SE+Eastmont+Dr,+Damascus,+OR+97089&sll=45.450369,-122.391049&sspn=0.009483,0.022724&ie=UTF8&hq=&hnear=10013+SE+Eastmont+Dr,+Damascus,+Clackamas,+Oregon+97089&ll=45.447984,-122.391043&spn=0.009484,0.022724&z=16" target="_blank"></a></div>
</div>
</div>